Files
HotLunches/students.display.php
T
2026-10-19 15:22:52 -07:00

601 lines
24 KiB
PHP

<?php
require_once("include/globals.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
header("Location: /");
exit();
}
// Different display for parents
if (in_array($_SESSION['UserInfo']['type'],array('Parent','Staff')) || $_SESSION['mode'] == 'parent') {
writeLog("students.display.parent.php");
include "students.display.parent.php";
return;
}
// Check there is a current schedule
$school_num = $school_record['record_num'];
$today = date("Y-m-d",time());
$now = date("Y-m-d H:i:s",time());
$query = "select * from hotlunch_schedules " .
"where school_num = $school_num " .
"and start_order_datetime <= '$now' " .
"and schedule_end_date >= '$today' " .
"and status = 'Active' " .
"order by $scheduleSortOrder " .
"limit 0,1";
$schedules = db_query($query);
$schedule_num = 0;
if (db_num_rows($schedules) > 0) {
$row = db_fetch_array($schedules);
$schedule_num = $row['record_num'];
$schedule_name = $row['schedule_name'];
}
// Initialize row counter
$count = 0;
$otipSpans = "";
$otipSpanIDs = array();
echo("<!-- FILE: ".__FILE__." -->\n\n");
//
// Get set of students
//
$CurrentUserType = $_SESSION['UserInfo']['type'];
switch ($CurrentUserType) {
case 'SuperUser':
case 'System Administrator':
case 'Application Administrator':
case 'Administration Team':
case 'Schedule Team':
if (!isset($PageTitle)) {
if ($school_record['student_button_text']) $PageTitle = $school_record['student_button_text'] . " List";
else $PageTitle = getLanguageText('TEXT-STUDENT') . " List";
}
$swhere = "";
// Select by class if required
if ($action == 'class-students') {
if (array_key_exists('current_class_num',$_GET)) $current_class_num = intval($_GET['current_class_num']);
if (array_key_exists('current_class_num',$_POST)) $current_class_num = intval($_POST['current_class_num']);
if (strlen($current_class_num) && $current_class_num > 0) {
if ($school_record['implement_meal_locations'] == 'Y') $swhere .= "and (class_num = $current_class_num OR meal_location = $current_class_num) ";
else $swhere .= "and class_num = $current_class_num ";
$PageTitle = getLanguageText('TEXT-STUDENT-CLASS-LIST') . "<br> " . getClassInfo($current_class_num);
}
}
// Select by status if required
if ($action == 'students-unverified' || $naction == 'list-unverified') {
$swhere .= "and st.status = 'Unverified' ";
if (isset($PageTitle)) $PageTitle .= "<br>\n";
$PageTitle .= getLanguageText('TEXT-STUDENT-UNVERIFIED-LIST');
$override_naction = 'list-unverified';
}
// Select by status if required
if ($action == 'students-inactive' || $naction == 'list-inactive') {
$swhere .= "and st.status = 'Inactive' ";
if (isset($PageTitle)) $PageTitle .= "<br>\n";
$PageTitle .= getLanguageText('TEXT-INACTIVE');
$override_naction = 'list-inactive';
}
// Get students linked to an account
if ($action == 'account-students') {
if (array_key_exists('uid',$_GET)) $uid = intval($_GET['uid']);
if (array_key_exists('uid',$_POST)) $uid = intval($_POST['uid']);
$userid = "";
if (isset($uid) && $uid > 0) {
$swhere .= "and st.user_num = $uid ";
$query = "select userid from users where school_num = $school_num and record_num = $uid";
$userid = db_getVal($query);
$PageTitle = getLanguageText('TEXT-STUDENT-ACCOUNT-LIST') . " $userid";
}
}
// Get students with no class assigned
if ($naction == 'students-without-class-number') {
$swhere = "and (class_num IN (0,1,2) or class_num is null or user_num = 0 or user_num is null) ";
if (isset($PageTitle)) $PageTitle .= "<br>\n";
$PageTitle .= getLanguageText('TEXT-STUDENT-NO-CLASS-NUM-LIST');
$override_naction = 'students-without-class-number';
db_query("UPDATE people SET class_num = 1 WHERE school_num = $base_school_num AND class_num IS NULL");
}
// Get students with no student number
if ($naction == 'students-without-student-number') {
$swhere = "AND (student_number IS NULL OR student_number = '') ";
if (isset($PageTitle)) $PageTitle .= "<br>\n";
$PageTitle .= getLanguageText('TEXT-STUDENT-NO-STUDENT-NUMBER');
$override_naction = 'students-without-student-number';
}
$show_type = "";
if (array_key_exists('show_type',$_GET)) $show_type = $_GET['show_type'];
if (array_key_exists('show_type',$_POST)) $show_type = $_POST['show_type'];
if (strlen($show_type)) $swhere .= "AND people_type = '$show_type' ";
$cwhere = "and st.active != 'N' ";
if (array_key_exists('show_non_current',$_GET)) $cwhere = "and st.active = 'N' ";
// Build the query
// $lookup_where = str_replace("st.","",$lookup_where);
if (!isset($lookup_where)) $lookup_where = '';
$lookup_where = urldecode($lookup_where);
$query = "select st.* from people AS st, users AS u " .
"where st.school_num = $base_school_num " .
"and people_type IN ('Student','Customer','Staff') " .
"and u.school_num = $base_school_num " .
"and st.user_num = u.record_num " .
$cwhere .
$swhere .
$lookup_where .
"order by last_name, first_name";
break;
case 'Staff':
$unum = intval($_SESSION['UserInfo']['record_num']);
// Get people table record num for this staff person
$tnum = db_getVal("select record_num from people where school_num = $base_school_num and user_num = $unum");
// Get staff person's class_num
$class_num = db_getVal("select record_num from classes where teacher1 = $tnum or teacher2 = $tnum or teacher3 = $tnum or teacher4 = $tnum or teacher5 = $tnum");
// Build the query to get the students
$query = "select * from people " .
"where school_num = $base_school_num " .
"and people_type IN ('Student') " .
"and class_num = $class_num " .
"order by last_name, first_name";
$PageTitle = getLanguageText('TEXT-STUDENT-LIST');
break;
}
// Display the data
$message_width = $default_data_width;
include "form.messages.php";
$columnHeaders = array();
$columnHeaders[] = getLanguageText('TEXT-NAME');
$columnHeaders[] = getLanguageText('TEXT-ACCOUNT');
$columnHeaders[] = getLanguageText('TEXT-ORDERS');
$columnHeaders[] = getLanguageText('TEXT-STATUS');
$columnAlign = array('left','center','center','center','center','center');
if ($school_record['participant_grouping'] != 'None') {
if ($school_record['i_display_division'] == 'Y') {
$columnHeaders = array();
$columnHeaders[] = getLanguageText('TEXT-NAME');
if ($school_record['collect_student_number'] == 'Y') $columnHeaders[] = getLanguageText('TEXT-STUDENT-NUMBER');
$columnHeaders[] = $GlobalText['Class'];
$columnHeaders[] = getLanguageText('TEXT-DIVISION');
$columnHeaders[] = getLanguageText('TEXT-STATUS');
$columnHeaders[] = getLanguageText('TEXT-DISPLAY');
$columnHeaders[] = getLanguageText('TEXT-ACCOUNT');
$columnHeaders[] = getLanguageText('TEXT-ORDERS');
$columnAlign = array('left','center','center','center','center','center','center','center','center');
}
else {
$columnHeaders = array();
$columnHeaders[] = getLanguageText('TEXT-NAME');
if ($school_record['collect_student_number'] == 'Y') $columnHeaders[] = getLanguageText('TEXT-STUDENT-NUMBER');
$columnHeaders[] = $GlobalText['Class'];
$columnHeaders[] = getLanguageText('TEXT-STATUS');
$columnHeaders[] = getLanguageText('TEXT-DISPLAY');
$columnHeaders[] = getLanguageText('TEXT-ACCOUNT');
$columnHeaders[] = getLanguageText('TEXT-ORDERS');
$columnAlign = array('left','center','center','center','center','center','center','center','center');
}
}
// echo($query);
$students = db_query($query);
$data = array();
while ($row = db_fetch_array($students)) {
extract($row);
$student_num = $record_num;
$eclass = '';
// Create the class info tool tip
$span_id = "class_" . $class_num;
if ($class_num > 1 && !in_array($span_id,$otipSpanIDs)) {
$class_info = getClassInfo($class_num,'internal');
}
$gfield = 'grade';
if ($class_num > 1) {
// Get division info if required
if ($school_record['participant_grouping'] != 'None' && $school_record['i_display_division'] == 'Y' && $class_num > 1) {
$div = db_getVal("SELECT division FROM classes WHERE school_num = $base_school_num AND record_num = $class_num");
}
if ($class_num == 1) $grade = getLanguageText('TEXT-STAFF');
if ($class_num == 2) $grade = getLanguageText('TEXT-PARENT');
if ($class_num > 2) {
$query = "SELECT * FROM classes WHERE school_num = $base_school_num AND record_num = $class_num";
$results = db_query($query);
$row = db_fetch_array($results);
$grade = $row['grade'];
$gfield = 'grade';
if (!strlen($grade)) {
$grade = $row['label_description'];
$gfield = 'label_description';
if (strlen($grade) == 0 && strlen($row['description'])) {
$grade = $row['description'];
$gfield = 'description';
}
if (strlen($grade) == 0 && strlen($row['division'])) {
$grade = $row['division'];
$gfield = 'division';
}
if (!strlen($grade)) {
if ($people_type != 'Staff') {
$grade = "&nbsp;&nbsp;&nbsp;error&nbsp;&nbsp;&nbsp;";
$eclass = " error";
$class_info = '';
}
}
}
}
}
else {
if ($class_num == 1) {
if ($people_type == 'Student') {
$grade = "&nbsp;&nbsp;&nbsp;error&nbsp;&nbsp;&nbsp;";
$eclass = " error";
}
else {
$grade = getLanguageText('TEXT-CUSTOMER');
$eclass = " error";
}
}
if (intval($class_num) == 0) {
$grade = "<span class='error'>&nbsp;&nbsp;&nbsp;error&nbsp;&nbsp;&nbsp;</span>";
if ($people_type == 'Staff') {
$grade = getLanguageText('TEXT-STAFF');;
}
}
}
if (!isset($class_info)) $class_info = '';
$grade = "<span id='span-$student_num' class='grade-entry$eclass' cnum='$class_num' gfield='$gfield' title='$class_info' rnum='$student_num'>$grade</span>";
// Create the user account tooltip
$user_num = $user_num;
$user = "";
// If there is a valid user_num create the tip
if (isset($user_num) && $user_num > 0) {
$span_id = "user_$user_num";
$user = db_getVal("SELECT userid FROM users WHERE school_num = $base_school_num AND record_num = $user_num");
if (!in_array($span_id,$otipSpanIDs)) {
$uresults = db_query("SELECT * FROM users WHERE school_num = $base_school_num and record_num = $user_num");
if (db_num_rows($uresults)) {
$urow = db_fetch_array($uresults);
$user_balance = db_getVal("select sum(transaction_amount) as balance from user_account where school_num = $school_num and user_num = $user_num AND (deleted != 'Y' OR deleted IS NULL)");
$num_students = db_getVal("SELECT count(*) FROM people WHERE school_num = $base_school_num AND user_num = $user_num");
$user_balance = floatval($user_balance);
$otipSpans .= "<span id='$span_id' class='hidden'>" . $otipTABLE .
sprintf($otipROW2,"User ID: ",$urow['userid']) .
sprintf($otipROW2,"User Type: ",$urow['type']) .
sprintf($otipROW2,"Name: ",$urow['first_name'] . ' ' . $urow['last_name']) .
sprintf($otipROW2,"Email: ",$urow['email']) .
sprintf($otipROW2,"Phone: ",$urow['home_phone']) .
sprintf($otipROW2,"Status: ",$urow['status']) .
sprintf($otipROW2,"Students: ",$num_students) .
sprintf($otipROW2,"Reminder: ",$urow['email_reminders']) .
sprintf($otipROW2,"Date Added: ",$urow['date_added']) .
sprintf($otipROW2,'<nobr>' . getLanguageText('TEXT-CURRENT-BALANCE') . ': </nobr>',$currencySymbol . number_format($user_balance,2)) .
"</table></span>\n";
$otipSpanIDs[] = $span_id;
}
else {
unset($span_id);
$user = "<span class='error'>&nbsp;&nbsp;&nbsp;&nbsp;error&nbsp;&nbsp;&nbsp;&nbsp;</span>";
}
}
if (isset($span_id)) $user = "<a href=\"?action=users&naction=lookup&userid=" . urlencode($user) . "\" onmouseover=\"TagToTip('$span_id')\" onmouseout=\"UnTip()\">$user</a>";
}
$snums = $school_record['linked_sites'];
$orders = db_getVal("SELECT count(*) FROM hotlunch_order_header WHERE school_num IN ($snums) AND ordered_by_num = $record_num");
$status = "<span class='status' snum='$record_num'>$status</span>";
$mcat = strtolower(str_replace(' ','',$menu_price_category));
if ($menu_price_category != 'Regular') $menu_price_category = "<span class='warning'>$menu_price_category</span>";
$menu_price_category = "<span class='price-category' snum='$record_num' mcat='$mcat'>$menu_price_category</span>";
$status .= "<br>$menu_price_category";
if ($school_record['participant_grouping'] != 'None') {
$ntitle = "$people_type";
$name = "<span title='$ntitle'>$last_name, $first_name</span>";
if ($school_record['i_display_division'] == 'Y') {
$entry = array();
$entry[] = $name;
if ($school_record['collect_student_number'] == 'Y') $entry[] = $student_number;
$entry[] = $grade;
$entry[] = $div;
$entry[] = $status;
$entry[] = $display;
$entry[] = $user;
$entry[] = $orders;
$entry['record_num'] = $record_num;
$data[] = $entry;
}
else {
$entry = array();
$entry[] = $name;
if ($school_record['collect_student_number'] == 'Y') $entry[] = $student_number;
$entry[] = $grade;
$entry[] = $status;
$entry[] = $display;
$entry[] = $user;
$entry[] = $orders;
$entry['record_num'] = $record_num;
$data[] = $entry;
}
}
else $data[] = array("$last_name,$first_name",$user,$orders,$menu_price_category,"record_num" => $record_num);
}
?>
<script>
$(document).ready(function() {
<?php include "include/ajax.Setup.php" ?>
$("#grade-dialog").dialog({
autoOpen: false,
minWidth: 200,
minHeight: 200,
modal: true,
position: { my: 'center', at: 'center' }
});
$(document).on("click", ".status", function() {
var Status = $(this).html();
var snum = $(this).attr('snum');
var spanID = $(this);
var data = "table_name=people"+
"&sequence_flag=N"+
"&record_num="+snum+
"&status=";
switch (Status) {
case 'Unverified':
data = data+"Verified";
var newText = "Verified";
break;
case 'Verified':
data = data+"Unverified";
var newText = "Unverified";
break;
}
$.getJSON("ajax.DataRecord.Update.php", data,
function(results) {
$(spanID).html(newText);
}
);
});
$(document).on('click','.grade-entry', function() {
var cnum = $(this).attr('cnum');
var rnum = $(this).attr('rnum');
var gfield = $(this).attr('gfield');
$("#rnum").val(rnum);
$("#sgrade").val(cnum);
$("#gfield").val(gfield);
$("#grade-dialog").dialog("open");
});
$("#save-grade").click(function(e) {
e.preventDefault();
var rnum = $("#rnum").val();
var cnum = $("#sgrade").val();
var gfield = $("#gfield").val();
if (cnum > 0) {
$("#grade-dialog").dialog("close");
$.getJSON("ajax.updateGrade.php",
{
record_num: rnum,
class_num: cnum,
gfield: gfield
},
function(results) {
var class_text = results.class;
var class_info = results.class_info;
$("#span-"+rnum).html("<span title='"+class_info+"'>"+class_text+"</span>");
$("#span-"+rnum).attr('cnum',cnum);
}
);
}
});
<?php if ($school_record['special_item_prices'] == 'Y') { ?>
$(document).on("click", ".price-category", function() {
var mcat = $(this).attr('mcat');
var snum = $(this).attr('snum');
var spanID = $(this);
var Regular = "<?php displayLanguageText('TEXT-REGULAR') ?>";
var Special1 = "<span class='warning'><?php displayLanguageText('Special1_Title') ?></span>";
var Special2 = "<span class='warning'><?php displayLanguageText('Special2_Title') ?></span>";
var Special3 = "<span class='warning'><?php displayLanguageText('Special3_Title') ?></span>";
var newText;
var data = "table_name=people"+
"&sequence_flag=N"+
"&school_num=<?php echo($base_school_num) ?>"+
"&record_num="+snum+
"&menu_price_category=";
switch (mcat) {
case 'regular':
var cat = "Special 1";
var ncat = "special1";
data = data+cat;
newText = Special1;
break;
case 'special1':
var cat = "Special 2";
var ncat = "special2";
data = data+cat;
newText = Special2;
break;
case 'special2':
var cat = "Special 3";
var ncat = "special3";
data = data+cat;
newText = Special3;
break;
case 'special3':
var cat = "Regular";
var ncat = "regular";
data = data+cat;
newText = Regular;
break;
}
$.getJSON("ajax.DataRecord.Update.php", data,
function(results) {
$(spanID).html(newText);
$(spanID).attr('mcat',ncat);
}
);
});
<?php } ?>
});
</script>
<?php
echo("<center>\n");
echo("<p><b>$PageTitle</b></p>\n");
echo("</center>\n");
$verified_icon = "<img src='images/icons/accept24.png' alt='Set Student to Verified' border='0'>";
$contacts_icon = "<img src='images/icons/userid24.png' alt='View Contact Information' border='0'>";
$order_icon = "<img src='images/icons/textfile24.png' alt='View Order for $schedule_name' border='0'>";
$class_icon = "<img src='images/icons/groupofusers24.png' alt='View Student Class' border='0'>";
$money_icon = "<img src='images/icons/money24.png' alt='Post to User Account' border='0'>";
if (isset($override_naction)) $action .= "&override_naction=$override_naction";
if (isset($current_class_num)) $action .= "&current_class_num=$current_class_num";
if ($action == 'account-students') $action .= "&uid=$uid";
if (!isset($current_teacher_id)) $current_teacher_id = '';
$commands = array("<a href='?action=$action&naction=verified&current_teacher_id=$current_teacher_id&current_class_num=$current_class_num&record_num=%d' title='Set Student to Verified'>$verified_icon</a>");
if ($school_record['display_class_lists'] != 'N') {
$commands[] = "<a href='?action=account-contacts&naction=list&sid=%d' title='View Contact Information'>$contacts_icon</a>";
}
if ($school_record['participant_grouping'] != 'None') {
$commands[] = "<a href='?action=class-students&naction=list&current_student=%d' title='View Student Class'>$class_icon</a>";
}
$commands[] = "<a href='?action=user-account&naction=add&student_num=%d' title='Post to User Account'>$money_icon</a>";
listData($data,$columnHeaders,$action,$commands,'N',$columnAlign);
echo("\n\n<!-- $query -->\n\n");
$extra = "";
if ($action == 'account-students') $extra = "&uid=$uid";
?>
<br>
<table cellpadding='5' cellspacing='1' border='0'>
<tr>
<td align='center'><a href='?action=<?php echo("$action$extra") ?>&naction=add' class='btn btn--primary>'><?php echo($GlobalText['AddStudents']); ?></a></td>
<?php if ($school_record['participants_are'] == 'Students') { ?>
<?php if (strpos($action,'class-students')) { ?>
<td align='center'><a href='?action=<?php echo($action) ?>&naction=verify-all&current_class_num=<?php echo($current_class_num) ?>' class='btn btn--primary>'><?php displayLanguageText('TEXT-STUDENT-SET-VERIFIED'); ?></a></td>
<?php } ?>
<?php if ($naction == 'list-unverified') { ?>
<td align='center'><a href='?action=students&naction=update-verified' class='btn btn--primary>'><?php displayLanguageText('TEXT-STUDENT-SET-VERIFIED'); ?></a></td>
<?php } ?>
<?php } ?>
<?php if ($naction == 'list') { ?>
<td align='center'><a href='?action=students&naction=update-unverified' class='btn btn--primary>'><?php displayLanguageText('TEXT-STUDENT-SET-UNVERIFIED'); ?></a></td>
<?php } ?>
<?php if ($school_record['participant_grouping'] != 'None') { ?>
<td align='center'><a href='?action=classes&naction=list' class='btn btn--primary>'><?php displayLanguageText('TEXT-VIEW-CLASSES'); ?></a></td>
<?php } ?>
</tr>
</table>
<?php
$msg = getLanguageText('TEXT-CONFIRM-STATUS-CHANGE');
?>
<table cellpadding='5' cellspacing='1' border='0'>
<tr>
<td align='center'><a href='?action=<?php echo($action) ?>&naction=set-price-cat&price_category=Regular&current_class_num=<?php echo($current_class_num) ?>' onclick='return confirm("<?php echo($msg) ?>");' class='btn btn--primary>'><?php displayLanguageText('TEXT-REGULAR-PRICES'); ?></a></td>
<?php if ($school_record['special_item_prices'] == 'Y' && strpos($action,'class-students')) { ?>
<td align='center'><a href='?action=<?php echo($action) ?>&naction=set-price-cat&price_category=Special%201&current_class_num=<?php echo($current_class_num) ?>' onclick='return confirm("<?php echo($msg) ?>");' class='btn btn--primary>'><?php displayLanguageText('TEXT-SPECIAL-1-PRICES'); ?></a></td>
<td align='center'><a href='?action=<?php echo($action) ?>&naction=set-price-cat&price_category=Special%202&current_class_num=<?php echo($current_class_num) ?>' onclick='return confirm("<?php echo($msg) ?>");' class='btn btn--primary>'><?php displayLanguageText('TEXT-SPECIAL-2-PRICES'); ?></a></td>
<td align='center'><a href='?action=<?php echo($action) ?>&naction=set-price-cat&price_category=Special%203&current_class_num=<?php echo($current_class_num) ?>' onclick='return confirm("<?php echo($msg) ?>");' class='btn btn--primary>'><?php displayLanguageText('TEXT-SPECIAL-3-PRICES'); ?></a></td>
<?php } ?>
</tr>
</table>
<div id='grade-dialog' title="<?php displayLanguageText('TEXT-GRADES'); ?>">
<p class='ltext'><label for='sgrade'><b><?php displayLanguageText('TEXT-GRADE'); ?>:</b></label><br>
<select id='sgrade'>
<option value=0><?php displayLanguageText('TEXT-CLASS-SELECT'); ?></option>
<option value=1><?php displayLanguageText('TEXT-STAFF'); ?></option>
<option value=2><?php displayLanguageText('TEXT-PARENT'); ?></option>
<?php
$query = "SELECT * FROM classes WHERE school_num = $school_num AND entry_type = 'Class' ORDER BY sequence,grade";
$classes = db_query($query);
while ($row = db_fetch_assoc($classes)) {
extract($row);
$class = "";
if (strlen($division)) $class = $division;
if (strlen($grade)) {
if (strlen($class)) $class .= " - ";
$class .= $grade;
}
echo("<option value=$record_num>$class</option>\n");
}
?>
</select></p>
<center><button id='save-grade' class='btn btn--outline btn--xsmall'><?php displayLanguageText('TEXT-SAVE'); ?></button></center>
<input type='hidden' id='rnum'>
<input type='hidden' id='gfield'>
</div>