Files
HotLunches/ajax.DataTable.Fetch.php.bak
2026-10-19 15:22:52 -07:00

2077 lines
94 KiB
Plaintext

<?php
$ValidAccess = 2010;
$sessionName = 'hotlunch';
session_name($sessionName);
session_start();
require_once("include/globals.php");
if (isset($action) && $action != 'trx-receipt' && (SessionActive() != 1 || ! UserLoggedIn())) {
logExit("Session is not active\n");
exit;
}
// CSRF token validation
include "include/ajax.csrfToken.php";
// Set default timezone
date_default_timezone_set("Canada/Pacific");
$now = date("Y-m-d H:i:s",time());
$moduleName = "ajax.DataTable.Fetch.php";
// if ($_SESSION['UserInfo']['type'] == 'SuperUser') startLog($moduleName);
// startLog($moduleName);
// Get parameters
if (array_key_exists('table_name', $_GET)) $table_name = db_escape_string($_GET['table_name']);
if (array_key_exists('sequence_flag', $_GET)) $sequence_flag = db_escape_string($_GET['sequence_flag']);
if (array_key_exists('sequence', $_GET)) $sequence_flag = db_escape_string($_GET['sequence']);
if (array_key_exists('action', $_GET)) $action = db_escape_string($_GET['action']);
if (array_key_exists('table_id', $_GET)) $table_id = db_escape_string($_GET['table_id']);
if (array_key_exists('action_name', $_GET)) $action_name = db_escape_string($_GET['action_name']);
writeLog("$action\n");
// Validate parameters
if (strstr($table_name,' ') !== FALSE) logExit("Invalid table name\n");
// sequence data if required
writeLog("sequence_flag: $sequence_flag");
if ($sequence_flag == 'Y') {
$stable = $table_name;
switch ($table_name) {
case 'form-fields':
case '_form_fields':
$stable = "_form_fields";
$query = "select * from _form_fields " .
"order by sequence";
break;
case '_form_actions':
$query = "select * from _form_actions " .
"order by sequence";
break;
default:
$query = "select * from $table_name " .
"where school_num = $school_num " .
"order by sequence";
break;
}
// Resequence the records
writeLog("$query\n");
$results = db_query($query);
if (db_num_rows($results)) {
$count = 1;
while ($row = db_fetch_array($results)) {
$rnum = $row['record_num'];
$query = "update $stable set sequence = $count where record_num = $rnum";
db_query($query);
$count++;
}
}
}
// Return data parameters
$return_data = array();
$return_data['content'] = "";
$localContent = "";
$data = array();
// Default commands
$commands = array();
$commands[] = "<a href='?record_num=%d' class='edit-data' rnum='%d' title='Edit Current Entry'>$edit_icon_small</a>";
$commands[] = "<a href='?record_num=%d' class='delete-data' rnum='%d' dflag='%s' title='Delete Current Entry'>$delete_icon_small</a>";
//
// Get data based on $action value
//
switch ($action) {
case 'generic-table-list':
// startLog("generic-table-list");
if (array_key_exists('table_name', $_GET)) $TableName = $_GET['table_name'];
if (array_key_exists('actual_table_name', $_GET)) $ActualTableName = $_GET['actual_table_name'];
if (array_key_exists('action-name', $_GET)) $action_name = db_escape_string($_GET['action-name']);
if (!isset($TableName)) logExit("$TableName is not set");
if (isset($TableName)) writeLog("TableName: $TableName");
if (isset($action_name)) {
writeLog("action_name: $action_name");
$query = "SELECT * FROM _form_actions WHERE action_name = '$action_name'";
writeLog($query);
$results = db_query($query);
$ActionRecord = db_fetch_assoc($results);
}
//
// Setup lookup arrays for foreign key fields
//
// Get classes lookup array
$query = "select * from classes where school_num = $school_num order by sequence";
$results = db_query($query);
$ClassesLookup = array(0 => '');
while ($row = db_fetch_array($results)) {
$rnum = $row['record_num'];
$class = getClassInfo($rnum, 'label');
$ClassesLookup[$rnum] = $class;
}
// Get staff categories lookup array
$query = "select * from staff_categories where school_num = $school_num order by sequence";
$scategories = db_query($query);
$StaffCategoriesLookup = array();
while ($row = db_fetch_array($scategories)) {
$title = $row['category_title'];
$rnum = $row['record_num'];
$StaffCategoriesLookup[$rnum] = $title;
}
// Get staff user accounts lookup array
$query = "select * from users where school_num = $school_num and type = 'Staff' order by last_name, first_name";
$susers = db_query($query);
$StaffUsersLookup = array();
while ($row = db_fetch_array($susers)) {
$title = $row['userid'];
$rnum = $row['record_num'];
$StaffUsersLookup[$rnum] = $title;
}
// Get class programs
$query = "select * from class_programs where school_num = $school_num order by sequence";
$programs = db_query($query);
$ClassProgramsLookup = array();
while ($row = db_fetch_array($programs)) {
$title = $row['program_name'];
$rnum = $row['record_num'];
$ClassProgramsLookup[$rnum] = $title;
}
$LookupArrays = array('staff_category' => $StaffCategoriesLookup,
'class_num' => $ClassesLookup,
'class_program' => $ClassProgramsLookup,
'user_num' => $StaffUsersLookup,
);
unset($query);
$commands = array();
$commands[] = "<a href='#' rnum='%d' class='edit-current-record' title='Edit Current Entry'>$edit_icon_small</a>";
$commands[] = "<a href='#' rnum='%d' class='delete-current-record' dflag='%s' title='Delete Current Entry'>$delete_icon_small</a>";
$orderBy = "1";
writeLog("Generic: $TableName");
switch ($TableName) {
case 'form-actions':
$columnFields = array('action_name',
'action_table_name',
'action_table_load_name',
'action_sortable_flag',
'action_searchable_flag',
'action_default_commands_flag');
$columnHeaders = array('Action Name',
'DB Table',
'DataTable Name',
'Sortable',
'Seach Field',
'Default Commands');
$columnAlign = array('left',
'left',
'left',
'center',
'center',
'center');
$cwhere = "";
$orderBy = "action_name";
$commands[] = "<a href='#' class='edit-form-fields' rnum='%d' title='Edit Form Fields'>$file_icon_small</a>";
$commands[] = "<a href='#' class='edit-form-permissions' rnum='%d' title='Edit Form Permissions'>$users_icon_small</a>";
$commands[] = "<a href='#' class='execute-action' rnum='%d' title='View Action in Action'>$web_icon_small</a>";
$query = "SELECT * FROM _form_actions ORDER BY action_name";
break;
case 'form-fields':
if (array_key_exists('current_form_action', $_GET)) $action_name = db_escape_string($_GET['current_form_action']);
if (!isset($action_name)) {
logExit("action_name is not set");
}
// Validate the sction_name
$query = "SELECT * FROM _form_actions WHERE action_name = '$action_name'";
writeLog($query);
$action_record = db_getVal($query);
if (!is_array($action_record)) {
logExit("action_name is invalid: $action_name");
}
$query = "SELECT count(*) FROM _form_fields WHERE action_name = '$action_name'";
$num = db_getVal($query);
writeLog("Num Fields Found: $num");
if ($num == 0) {
writeLog("action_table_name: ".$action_record['action_table_name']);
$table = new Table($action_record['action_table_name']);
$form_fields = new Table('_form_fields');
for ($i = 0; $i < count($table->column_names); $i++) {
$fname = $table->column_names[$i];
$ftype = $table->column_types[$i];
$fvalues = $table->column_values[$i];
$fdefault = $table->column_defaults[$i];
$flength = 0;
if ($fname == 'school_num') continue;
if ($fname == 'record_num') continue;
switch ($ftype) {
case 'text':
$ftype = 'textbox';
$flength = 60;
break;
case 'varchar':
case 'int':
case 'smallint':
case 'decimal':
$ftype = 'text';
$flength = 20;
break;
case 'enum':
$ftype = 'select';
if ($fvalues == "'Y','N'") $fvalues = 'YN';
break;
}
if ($fname == 'sequence') $ftype = 'hidden';
$entry = array();
$entry['action_name'] = $action_name;
$entry['action_fields_column_name'] = $fname;
$entry['action_fields_screen_field_type'] = $ftype;
$entry['action_fields_field_prompt'] = "TEXT-".strtoupper(str_replace('_','-',$fname));
$entry['action_fields_text_length'] = $flength;
$entry['action_fields_insert_active_flag'] = 'Y';
$entry['action_fields_update_active_flag'] = 'Y';
$entry['action_fields_required_field_flag'] = 'N';
$entry['action_fields_default_field_value'] = $fdefault;
$entry['action_fields_select_options'] = $fvalues;
$entry['action_fields_report_alignment'] = 'left';
$entry['sequence'] = $i;
$query = $form_fields->BuildInsert($entry);
db_query($query);
}
}
$columnFields = array('action_fields_column_name','action_fields_screen_field_type','action_fields_report_sequence',
'action_fields_insert_active_flag','action_fields_update_active_flag','action_fields_required_field_flag');
$columnHeaders = array('Column Name','Type','Report','Insert Active','Update Active','Required');
$columnAlign = array('left','left','center','center','center','center');
$cwhere = "";
$orderBy = "sequence, action_name";
// $commands[] = "<a href='#' class='edit-form-fields-details' rnum='%d' title='Edit Fields Details'>$file_icon_small</a>";
$query = "SELECT * FROM _form_fields WHERE action_name = '$action_name' ORDER BY sequence, action_name, action_fields_column_name";
break;
case 'form-permissions':
if (array_key_exists('current_form_action', $_GET)) $action_name = db_escape_string($_GET['current_form_action']);
$query = "SELECT * FROM _form_permission WHERE action_name = '$action_name' ORDER BY record_num";
writeLog($query);
$results = db_query($query);
if (db_num_rows($results) == 0) {
$table = new Table('_form_permission');
$options = GetFileListArray("user_types.txt", "", "");
$entry = array();
$entry['action_name'] = $action_name;
foreach ($options AS $value => $option) {
$utype = $option;
$entry['action_permission_user_type'] = $utype;
$entry['action_permission_allowed'] = 'N';
switch ($utype) {
case 'System Administrator':
case 'Application Administrator':
$entry['action_permission_allowed'] = 'Y';
break;
}
$query = $table->BuildInsert($entry);
writeLog($query);
db_query($query);
}
$query = "SELECT * FROM _form_permission WHERE action_name = '$action_name' ORDER BY record_num";
writeLog($query);
$results = db_query($query);
}
$columnFields = array('action_name','action_permission_user_type','action_permission_allowed');
$columnHeaders = array('Action Name','User Type','Access Allowed');
$columnAlign = array('left','left','center');
$data = array();
while ($row = db_fetch_assoc($results)) {
$entry = array();
$entry[] = $row['action_name'];
$entry[] = $row['action_permission_user_type'];
$entry[] = $row['action_permission_allowed'];
$entry['record_num'] = $row['record_num'];
$data[] = $entry;
}
$action = '';
$totals = array();
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals);
echo(json_encode($return_data));
exit;
break;
case 'staff-people':
$columnFields = array('first_name','last_name','user_num','staff_category','class_num');
$columnHeaders = array(getLanguageText('TEXT-FIRST-NAME'),
getLanguageText('TEXT-LAST-NAME'),
getLanguageText('TEXT-USER-ID'),
getLanguageText('TEXT-CATEGORY'),
$GlobalText['Class'],
);
$columnAlign = array('left','left','left','left','center');
if ($school_record['special_item_prices'] != 'N') {
$columnFields[] = 'menu_price_category';
$columnHeaders[] = getLanguageText('TEXT-MENU-PRICE-CATEGORY');
$columnAlign[] = 'center';
}
if ($school_record['implement_multiple_item_prices'] != 'N') {
$columnFields[] = 'access_to_multiple_item_prices';
$columnHeaders[] = getLanguageText('TEXT-ACCESS-TO-FLEX-PRICES');
$columnAlign[] = 'center';
}
$cwhere = " AND people_type = 'Staff' ";
$orderBy = "last_name,first_name";
if (array_key_exists('sort-field', $_GET)) $orderBy = db_escape_string($_GET['sort-field']);
if (array_key_exists('sort-order', $_GET)) $orderBy .= ' '.db_escape_string($_GET['sort-order']);
unset($query);
break;
case 'classes':
$columnFields = array();
$columnHeaders = array();
$columnAlign = array();
if ($school_record['p_display_division'] != 'N' || $school_record['i_display_division'] != 'N') {
$columnFields[] = 'division';
$columnHeaders[] = $school_record['division_class_num_text'];
$columnAlign[] = 'center';
}
if ($school_record['p_display_grade'] != 'N' || $school_record['i_display_grade'] != 'N') {
$columnFields[] = 'grade';
$columnHeaders[] = getLanguageText('TEXT-GRADE');
$columnAlign[] = 'center';
}
if ($school_record['p_display_program'] != 'N' || $school_record['i_display_program'] != 'N') {
$columnFields[] = 'class_program';
$columnHeaders[] = getLanguageText('TEXT-PROGRAM');
$columnAlign[] = 'center';
}
$columnFields[] = 'description';
$columnHeaders[] = getLanguageText('TEXT-DESCRIPTION');
$columnAlign[] = 'left';
$columnFields[] = 'label_description';
$columnHeaders[] = getLanguageText('TEXT-LABEL-DESCRIPTION');
$columnAlign[] = 'left';
$columnFields[] = 'default_price_category';
$columnHeaders[] = getLanguageText('TEXT-DEFAULT-PRICE-CATEGORY');
$columnAlign[] = 'center';
for ($i = 0; $i < count($columnFields); $i++) {
$fname = $columnFields[$i];
writeLog($fname);
}
$orderBy = "sequence";
$cwhere = "";
if (array_key_exists('custom-where', $_GET)) $cwhere .= $_GET['custom-where'];
writeLog("cwhere: $cwhere");
if (array_key_exists('cwhere', $_GET)) $cwhere .= $_GET['cwhere'];
writeLog("cwhere: $cwhere");
unset($query);
break;
default:
if (array_key_exists('action-name', $_GET)) $action_name = db_escape_string($_GET['action-name']);
$query = "SELECT * FROM _form_fields " .
"WHERE action_name = '$action_name' " .
"AND action_fields_report_sequence > 0 " .
"ORDER BY action_fields_report_sequence, sequence";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$return_data['content'] = "No Report Fields Defined for : $action_name";
echo(json_encode($return_data));
exit;
}
$columnFields = array();
$columnTypes = array();
$columnHeaders = array();
$columnAlign = array();
unset($orderBy);
while ($row = db_fetch_assoc($results)) {
$fname = $row['action_fields_column_name'];
$skip = false;
switch ($fname) {
case 'menu_price_category':
if ($school_record['special_item_prices'] == 'N') $skip = true;
break;
}
if ($skip) continue;
writeLog("school_record['special_item_prices']: ".$school_record['special_item_prices']);
writeLog("Default: $fname");
$columnFields[] = $fname;
$columnTypes[] = $row['action_fields_screen_field_type'];
$columnAlign[] = $row['action_fields_report_alignment'];
$header = $row['action_fields_field_prompt'];
if (strpos($header, 'TEXT-') === 0) $header = getLanguageText($header);
if (strpos($header, 'GlobalText.') === 0) {
$pindex = str_replace('GlobalText.','',$header);
$header = $GlobalText[$pindex];
}
$columnHeaders[] = $header;
if (!isset($orderBy)) $orderBy = $row['action_fields_column_name'];
}
writeLog("ActionRecord['action_sort_fields']: ".$ActionRecord['action_sort_fields']);
if (strlen($ActionRecord['action_sort_fields'])) $orderBy = $ActionRecord['action_sort_fields'];
if (array_key_exists('sort-field', $_GET)) $orderBy = db_escape_string($_GET['sort-field']);
if (array_key_exists('sort-order', $_GET)) $orderBy .= ' '.db_escape_string($_GET['sort-order']);
if ($sequence_flag == 'Y') $orderBy = "sequence";
$cwhere = "";
if (array_key_exists('custom-where', $_GET)) $cwhere .= $_GET['custom-where'];
writeLog("cwhere: $cwhere");
if (array_key_exists('cwhere', $_GET)) $cwhere .= $_GET['cwhere'];
writeLog("cwhere: $cwhere");
$cwhere = str_ireplace('where','',$cwhere);
$cwhere = str_ireplace(';','',$cwhere);
writeLog("cwhere: $cwhere");
unset($query);
break;
}
if (!isset($ActualTableName)) $ActualTableName = $TableName;
if (!isset($cwhere)) $cwhere = "";
if (!isset($query)) {
$table = new Table($ActualTableName);
writeLog("orderBy: $orderBy");
if ($table->school_num_flag == 'Y') $query = "SELECT * FROM $ActualTableName WHERE school_num = $school_num $cwhere ORDER BY $orderBy";
else $query = "SELECT * FROM $ActualTableName WHERE 1 = 1 $cwhere ORDER BY $orderBy";
}
writeLog("$TableName query: $query");
$results = db_query($query);
$return_data['num_records'] = db_num_rows($results);
if ($return_data['num_records'] > 0) {
$data = array();
while ($row = db_fetch_assoc($results)) {
$entry = array();
for ($i = 0; $i < count($columnFields); $i++) {
$fname = $columnFields[$i];
$ftype = $columnTypes[$i];
if (! array_key_exists($fname, $row)) {
writeLog("fname error: $ActualTableName - $fname");
continue;
}
$fdata = $row[$fname];
if (isset($LookupArrays) && array_key_exists($fname, $LookupArrays)) {
if (array_key_exists($fdata, $LookupArrays[$fname])) $fdata = $LookupArrays[$fname][$fdata];
else $fdata = "";
}
if (strlen($fdata) && $ftype == 'money') {
$fdata = '$'.number_format(floatval($fdata), 2);
}
if ($i == 0 && array_key_exists('record_num',$row)) {
$rnum = $row['record_num'];
$fdata = "<span class='edit-current-record' rnum='$rnum'>$fdata</span>";
}
$entry[] = $fdata;
}
if (array_key_exists('record_num',$row)) $entry['record_num'] = $row['record_num'];
$data[] = $entry;
}
$action = '';
if (!isset($totals)) $totals = array();
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals);
}
else {
writeLog("No Records");
$return_data['content'] = "<p><b> --- ".getLanguageText('ERRORMSG-NO-RECORDS')." --- </b></p>";
echo(json_encode($return_data));
exit;
}
// writeLog($return_data['content']);
writeLog("end of generic-table-list");
break;
case 'polls':
// Setup format
$columnHeaders = array(getLanguageText('TEXT-TITLE'),
getLanguageText('TEXT-QUESTIONS'),
getLanguageText('TEXT-ANSWERS'),
);
$columnAlign = array('left','center','center');
// Get records to display
$query = "SELECT * FROM polls WHERE school_num = $school_num ORDER BY sequence";
writeLog("query: $query\n");
$results = db_query($query);
if (db_num_rows($results)) {
$data = array();
while ($row = db_fetch_assoc($results)) {
extract($row);
if (strlen(trim($description))) $description = "<br><span class='small'>".trim($description)."</span>";
$numQuestions = db_getVal("SELECT count(*) FROM poll_questions WHERE school_num = $school_num AND poll_num = $record_num");
$numAnswers = db_getVal("SELECT count(distinct user_num) FROM poll_answers WHERE school_num = $school_num AND poll_num = $record_num");
// Format for admin display
$data[] = array("<span class='edit-poll' rnum='$record_num' onClick=''><b>$poll_title</b></span>$description",
"<span class='poll-questions' rnum='$record_num' onClick=''>$numQuestions</span>",
"<span class='poll-questions' rnum='$record_num' onClick=''>$numAnswers</span>",
"record_num" => $record_num,"delete_flag" => 'Y');
}
$commands = array();
$commands[] = "<a href='?action=$action&amp;naction=edit&amp;record_num=%d' class='edit-poll' rnum='%d' title='Edit Current Entry'>$edit_icon_small</a>";
$commands[] = "<a href='?action=$action&amp;naction=delete-confirmed&amp;record_num=%d' class='delete-poll' rnum='%d' dflag='%s' title='Delete Current Entry'>$delete_icon_small</a>";
$commands[] = "<a href='?action=$action&amp;naction=view-details&amp;record_num=%d' class='poll-answers' rnum='%d' title='View Questions'>$view_icon_small</a>";
if (isset($table_id) && strlen($table_id)) $customTableID = $table_id;
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals);
}
else {
$return_data['content'] = "<p><b> --- ".getLanguageText('ERRORMSG-NO-RECORDS')." --- </b></p>";
}
break;
case 'student-categories':
// Setup format
$columnHeaders = array(getLanguageText('TEXT-CATEGORY'),
getLanguageText('TEXT-NUMBER'),
);
$columnAlign = array('left','center','center');
// Get records to display
$query = "SELECT * FROM student_categories WHERE school_num = $school_num ORDER BY sequence";
writeLog("query: $query\n");
$results = db_query($query);
if (db_num_rows($results)) {
$data = array();
while ($row = db_fetch_assoc($results)) {
extract($row);
$delete_flag = 'Y';
$numEntries = db_getVal("SELECT count(*) FROM people_categories WHERE school_num = $school_num AND category_num = $record_num");
if ($numEntries) $delete_flag = 'N';
$data[] = array($category,
$numEntries,
"record_num" => $record_num,"delete_flag" => $delete_flag);
}
// Commands
$commands = array();
$commands[] = "<a href='?record_num=%d' class='edit-data' rnum='%d' title='Edit Current Entry'>$edit_icon_small</a>";
$commands[] = "<a href='?record_num=%d' class='delete-data' rnum='%d' dflag='%s' title='Delete Current Entry'>$delete_icon_small</a>";
$commands[] = "<a href='?record_num=%d' class='view-details' rnum='%d' title='View Details'>$view_icon_small</a>";
if (isset($table_id) && strlen($table_id)) $customTableID = $table_id;
$TableWidth = 450;
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals);
}
else {
$return_data['content'] = "<p><b> --- ".getLanguageText('ERRORMSG-NO-RECORDS')." --- </b></p>";
}
break;
case 'delivery-classes':
// Setup format
$columnHeaders = array(getLanguageText('TEXT-CLASS'),
getLanguageText('TEXT-DELIVERY-GROUP'),
);
$columnAlign = array('left','center','center');
// Get records to display
$query = "SELECT * FROM classes WHERE school_num = $school_num ORDER BY sequence";
writeLog("query: $query\n");
$results = db_query($query);
if (db_num_rows($results)) {
$data = array();
// Get delivery groups
$query = "SELECT * FROM delivery_groups WHERE school_num = $school_num ORDER BY sequence";
writeLog("query: $query\n");
$groups = db_query($query);
if (db_num_rows($groups)) {
$groupEntries = array();
while ($row = db_fetch_assoc($groups)) {
$groupEntries[] = $row;
}
}
else {
$return_data['content'] = "<p><b> --- ".getLanguageText('TEXT-NO-DELIVERY-GROUPS-FOUND')." --- </b></p>";
return;
}
while ($row = db_fetch_assoc($results)) {
extract($row);
$classInfo = getClassInfo($record_num, 'internal');
$groupField = "<select name='delivery_group_$record_num' class='delivery-group' rnum='$record_num'>";
$groupField .= "<option></option>";
for ($i = 0; $i < count($groupEntries); $i++) {
$gRow = $groupEntries[$i];
$selected = "";
if ($delivery_group == $gRow['group_id']) $selected = " selected='selected'";
$groupField .= "<option value=\"".$gRow['group_id']."\"$selected>".$gRow['group_title']."</option>";
}
$groupField .= "</select>";
$data[] = array($classInfo, $groupField);
}
// Commands
$commands = array();
if (isset($table_id) && strlen($table_id)) $customTableID = $table_id;
$TableWidth = 600;
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals);
}
else {
$return_data['content'] = "<p><b> --- ".getLanguageText('ERRORMSG-NO-RECORDS')." --- </b></p>";
}
break;
case 'category-people':
// Get category number
$cnum = intval($_GET['cnum']);
// Setup format
$columnHeaders = array(getLanguageText('TEXT-NAME'),
);
$columnAlign = array('left','center','center');
// Get records to display
$query = "SELECT p.* FROM people_categories AS pc, people AS p " .
"WHERE pc.school_num = $school_num " .
"AND p.school_num = $school_num " .
"AND p.record_num = pc.people_num " .
"AND pc.category_num = $cnum " .
"ORDER BY last_name,first_name";
writeLog("query: $query\n");
$results = db_query($query);
if (db_num_rows($results)) {
$data = array();
while ($row = db_fetch_assoc($results)) {
extract($row);
$name = $first_name.' '.$last_name;
$delete_flag = 'Y';
$data[] = array($name,
"record_num" => $record_num);
}
// Commands
$commands = array();
$commands[] = "<a href='?record_num=%d' class='delete-people-category' rnum='%d' cnum='$cnum' title='Delete Current Entry'>$delete_icon_small</a>";
if (isset($table_id) && strlen($table_id)) $customTableID = $table_id;
$TableWidth = 450;
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals);
}
else {
$return_data['content'] = "<p><b> --- ".getLanguageText('ERRORMSG-NO-RECORDS')." --- </b></p>";
}
break;
case 'meal-locations':
// Setup format
$columnHeaders = array(getLanguageText('TEXT-ALTERNATE-LOCATION'),
getLanguageText('TEXT-NUMBER'),
);
$columnAlign = array('left','center','center');
// Get records to display
$query = "SELECT * FROM meal_locations " .
"WHERE school_num = $school_num " .
"ORDER BY sequence";
writeLog("query: $query\n");
$results = db_query($query);
if (db_num_rows($results)) {
$data = array();
while ($row = db_fetch_assoc($results)) {
extract($row);
$delete_flag = 'Y';
$numPeople = db_getVal("SELECT count(*) FROM people WHERE meal_location = $record_num");
$data[] = array($location,
$numPeople,
"record_num" => $record_num);
}
if (isset($table_id) && strlen($table_id)) $customTableID = $table_id;
$TableWidth = 450;
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals);
}
else {
$return_data['content'] = "<p><b> --- ".getLanguageText('ERRORMSG-NO-RECORDS')." --- </b></p>";
}
break;
case 'upcoming-demos':
case 'recent-demos':
// Get school demo info
$today = date("Y-m-d 00:00:00",time());
$cutoff = date("Y-m-d 00:00:00",time() - 24 * 60 * 60 * 60);
if ($action == 'upcoming-demos') $query = "SELECT * FROM schools WHERE demo_scheduled_date > '$today' ORDER BY demo_scheduled_date";
if ($action == 'recent-demos') $query = "SELECT * FROM schools WHERE demo_scheduled_date > '$cutoff' AND demo_scheduled_date <= '$today' ORDER BY demo_scheduled_date";
$return_data['content'] = "<p>[<a href='#' class='upcoming-demo-list'>Upcoming</a>] [<a href='#' class='recent-demo-list'>Recent</a>]</p>";
$results = db_query($query);
writeLog("num rows: " . db_num_rows($results) . "\n");
if (db_num_rows($results) == 0) {
$return_data['content'] .= "<p><b> --- No Demos Scheduled --- </b></p>";
writeLog($return_data['content'] . "\n");
}
else {
$return_data['content'] .= "<p><b>-- Hot Lunch Demos --</b></p>";
$return_data['content'] .= "<center><table cellpadding='1' cellspacing='3' border='0'>";
while ($row = db_fetch_assoc($results)) {
extract($row);
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt show-school-info' snum='$record_num' align='left' width='300'>$school_name</td>";
$return_data['content'] .= "<td class='prompt show-school-info' snum='$record_num' width='150'>$demo_scheduled_date</td>";
$return_data['content'] .= "</tr>";
}
$return_data['content'] .= "</table>";
$return_data['content'] .= "</center>";
}
break;
case 'schedule-info':
// startLog("schedule-info");
$schedule_num = intval($_GET['schedule_num']);
writeLog("schedule_num: $schedule_num");
if ($schedule_num == 0) {
$return_data['content'] = "";
break;
}
$supplier_school_num = intval($school_record['supplier_school_num']);
if ($supplier_school_num == 0) $supplier_school_num = $school_num;
$query = "SELECT * FROM hotlunch_schedules WHERE school_num IN ($school_num, $supplier_school_num) AND record_num = $schedule_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$return_data['content'] = getLanguageText('ERRORMSG-INVALID-SCHEDULE');
writeLog("Invalid Schedule");
break;
}
$schedule = db_fetch_assoc($results);
extract($schedule);
writeLog("schedule_name: $schedule_name");
$return_data['new_schedule'] = $schedule_name;
$return_data['ordering_start'] = substr($start_order_datetime,0,16);
$return_data['ordering_end'] = substr($end_order_datetime,0,16);
$return_data['schedule_start'] = $schedule_start_date;
$query = "SELECT count(*) FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num";
writeLog($query);
$numMenus = db_getVal($query);
writeLog("numMenus: $numMenus");
$numItems = db_getVal("SELECT count(*) FROM hotlunch_menu_items " .
"WHERE school_num = $school_num " .
"AND menu_num IN (" .
"SELECT record_num FROM hotlunch_menu_dates " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num)");
$startDate = date("l F d, Y",strtotime($schedule_start_date));
$content = "<b>$schedule_name</b> ($schedule_type)<br>" .
getLanguageText('TEXT-MENUS') . ": $numMenus<br>" .
getLanguageText('TEXT-MENU-ITEMS') . ": $numItems<br>" .
getLanguageText('TEXT-SCHEDULE-START-DATE') . ": <b>$startDate</b>";
writeLog($content);
$return_data['content'] = $content;
break;
case 'school-info':
$school_num = intval($_GET['school_num']);
// Get school info
$query = "SELECT * FROM schools WHERE record_num = $school_num";
$results = db_query($query);
$row = db_fetch_assoc($results);
extract($row);
date_default_timezone_set($timezone);
$timeNow = date("Y-m-d H:i",time());
date_default_timezone_set("Canada/Pacific");
$sprices = "";
if (strlen($special_item_prices)) $sprices = " ($special_item_prices)";
$query = "SELECT last_login,userid FROM login_log WHERE school_num = $school_num ORDER BY last_login DESC LIMIT 0,1";
list($last_login,$userid) = db_getVal($query);
// Adjust URL if required
switch ($url) {
case 'larondepac.ca':
case 'aeslunchbox.com':
case 'clesharks.ca':
case 'ggpac.org':
case 'stonecresthotlunch.ca':
case 'sullivanpac.com':
$url = "www.$url";
break;
}
$return_data['content'] = "<b>$school_name</b> ($school_num) " .
"- [<a href='#' id='edit-school' rnum='$school_num'>edit</a>] " .
"- [<a href='#' snum='$school_num' class='refresh-info'>refresh</a>] " .
"- <a href='https://$url' target='_blank'>$url</a> " .
"- [<a href='https://$url/?db_mode=Current&display_content=No' target='_blank'>Clean</a>] $sprices<br>" .
"$city, $province - $phone<br>" .
"$principal - <a href='mailto:$principal_email'>$principal_email</a><br>";
$return_data['content'] .= " - Status: <span id='status-$school_num' class='status' snum='$school_num' status='$status'>$status</span><br>" .
" - Support: <span id='support-$school_num' class='support' snum='$school_num' support='$support_level'>$support_level</span><br>" .
" - Configuration: <span id='config-$school_num' class='configuration' snum='$school_num' config='$system_configuration'>$system_configuration</span><br>" .
" - Small School Discount: <span id='small-school-$school_num' class='small-school-discount' snum='$school_num' discount='$small_school_discount'>$small_school_discount</span><br>" .
" - Start Date: $start_date<br>" .
" - Expiry Date: <span id='info-ed-$school_num' class='expiry-date' snum='$school_num' edate='$expiry_date'>$expiry_date</span><br>" .
" - Last Login: $last_login ($userid)<br>" .
" - Timezone: $timezone<br>" .
" - Time Now: <b>$timeNow</b><br>" .
" - Access Code: $system_access_code<br>" .
" - Reseller Code: <span class='reseller-code'>$reseller</span><br>" .
" - Reminder Day: $email_reminder_day ($email_reminder_weeks)<br>";
if ($paypal_enabled == 'Y') {
$return_data['content'] .= " - PayPal Code: $paypal_code<br>\n";
$return_data['content'] .= " - PayPal Verified: <span class='paypal-verified' snum='$school_num'>$paypal_verified</span><br>\n";
}
if ($bambora_enabled == 'Y') {
$return_data['content'] .= " - Bambora MID: $bambora_merchant_id<br>\n";
}
// Demo and followup info
$return_data['content'] .= "<br>";
$return_data['content'] .= "<div style='width: 100%; overflow: hidden;'>\n";
$return_data['content'] .= "<div style='width: 400px; float: left; margin: 0 0 0 20px;'>\n";
$return_data['content'] .= "<table width='350' cellpadding='0' cellspacing='2' border='0'>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><span class='welcome-email-sent' snum='$school_num'><b>Welcome Email Sent:</b></span></td>";
$return_data['content'] .= "<td class='school-data' align='center' width='150'><span id='welcome-email-sent-$school_num' class='welcome-email-sent' snum='$school_num'>$welcome_email_sent</span></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><span class='followup-email-sent' snum='$school_num'><b>Followup Email Sent:</b></span></td>";
$return_data['content'] .= "<td class='school-data' align='center'><span id='followup-email-sent-$school_num' class='followup-email-sent' snum='$school_num'>$followup_email_sent</span></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><span class='demo-scheduled' snum='$school_num'><b>Demo Scheduled For:</b></span></td>";
$return_data['content'] .= "<td class='school-data' align='center'><span id='demo-scheduled-$school_num' class='demo-scheduled' snum='$school_num'>$demo_scheduled_date</span></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><span class='last-demo-date' snum='$school_num'><b>Last Demo Date:</b></span></td>";
$return_data['content'] .= "<td class='school-data' align='center'><span id='last-demo-date-$school_num' class='last-demo-date' snum='$school_num'>$last_demo_date</span></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><span class='followup1-date' snum='$school_num'><b>Followup Date 1:</b></span></td>";
$return_data['content'] .= "<td class='school-data' align='center'><span id='followup1-date-$school_num' class='followup1-date' snum='$school_num'>$followup1_date</span></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><b>Followup Note 1:</b></td>";
$return_data['content'] .= "<td class='school-data' align='center'><input type='text' name='followup_note1' id='followup_note1' size='30' class='followup-note' snum='$school_num' " .
"note='1' value='$followup_note1'></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><span class='followup2-date' snum='$school_num'><b>Followup Date 2:</b></span></td>";
$return_data['content'] .= "<td class='school-data' align='center'><span id='followup2-date-$school_num' class='followup2-date' snum='$school_num'>$followup2_date</span></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><b>Followup Note 2:</b></td>";
$return_data['content'] .= "<td class='school-data' align='center'><input type='text' name='followup_note2' id='followup_note2' size='30' class='followup-note' snum='$school_num' " .
"note='2' value='$followup_note2'></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><span class='last-contact' snum='$school_num'><b>Last Contact Date:</b></span></td>";
$return_data['content'] .= "<td class='school-data' align='center'><span id='last-contact-date-$school_num' class='last-contact' snum='$school_num'>$last_contact_date</span></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><span class='testimonial' snum='$school_num'><b>Testimonial:</b></span></td>";
$return_data['content'] .= "<td class='school-data' align='center'><span id='testimonial-$school_num' class='testimonial' snum='$school_num'>$testimonial</span></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td class='prompt'><span class='renewal-contact' snum='$school_num'><b>Renewal Contact:</b></span></td>";
$return_data['content'] .= "<td class='school-data' align='center'><span id='renewal-contact-$school_num' class='renewal-contact' snum='$school_num'>$renewal_contact</span></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "</table>";
$return_data['content'] .= "</div>\n";
$return_data['content'] .= "<div style='margin-left: 420px;'>\n";
// $return_data['content'] .= "<b>Notes:</b> - [<a href='#' id='edit-notes' snum='$school_num'>edit</a>]<br>\n";
$return_data['content'] .= "<b>Notes:</b><br>\n";
$return_data['content'] .= "<textarea rows='8' cols='45' id='school-notes'>$notes</textarea>";
$return_data['content'] .= "<input type='hidden' id='school-num' value='$school_num'>\n";
$return_data['content'] .= "</div>\n";
$return_data['content'] .= "</div>\n";
$return_data['contacts'] = "";
$return_data['invoices'] = "";
// Get list of admin accounts
$results = db_query("SELECT * FROM users WHERE school_num = $school_num AND type = 'System Administrator' ORDER BY userid");
if (db_num_rows($results)) {
$return_data['contacts'] .= "<b>Administrator Accounts:</b><br>";
while ($row = db_fetch_assoc($results)) {
extract($row);
$return_data['contacts'] .= " - $userid / $password<br>";
}
}
// Get contact list
$results = db_query("SELECT * FROM school_contact_list WHERE school_num = $school_num ORDER BY sequence");
while ($row = db_fetch_assoc($results)) {
extract($row);
$return_data['contacts'] .= "<br><b>$contact_name</b>";
if (strlen($contact_email)) $return_data['contacts'] .= " - <a href='mailto:$contact_email'>$contact_email</a>";
$return_data['contacts'] .= "<br>";
if (strlen($contact_phone)) $return_data['contacts'] .= " - Phone: $contact_phone<br>";
if (strlen($contact_cell)) $return_data['contacts'] .= " - Cell: $contact_cell<br>";
}
if (strpos($url,'hotlunches.net') !== false || strpos($url,'payschoolfees.net') !== false ||
strpos($url,'parentcouncil.net') !== false || strpos($url,'fundraiserorders.com') !== false ||
strpos($url,'registrationnow.net') !== false || strpos($url,'schoolcouncil.net') !== false ||
strpos($url,'schoollunchorders.net') !== false) {
$BaseURL = str_replace("$default_url_code.",'',$url);
$schoolID = $default_url_code;
$alias_email = trim($support_email);
if (strlen($alias_email) == 0) $alias_email = trim($reply_email);
$return_data['contacts'] .= "<br><br>";
$return_data['contacts'] .= "<b>Email Alias:</b> $schoolID@$BaseURL => $alias_email";
$return_data['contacts'] .= "<br><br>";
}
// Get any linked sites
$results = db_query("SELECT * FROM schools WHERE status = 'Linked' AND linked_site = $school_num ORDER BY link_sequence");
if (db_num_rows($results)) {
$return_data['content'] .= "<br>";
while ($row = db_fetch_assoc($results)) {
extract($row);
$editLink = "[<a href='?action=schools-list&naction=edit&record_num=$record_num'>edit</a>]";
$return_data['content'] .= "- ($record_num) <a href='http://$url' target='_blank'>$url</a> " .
"- <a href='http://$url/?display_content=No' target='_blank'>Clean</a> " .
"$editLink ($special_item_prices)<br>";
}
}
// Get any invoices info
$return_data['invoices'] .= "<br>";
$return_data['invoices'] = "<b>$school_name</b> ($school_num) " .
"- [<a href='?action=schools-list&naction=edit&record_num=$school_num'>edit</a>] " .
"- [<a href='#' snum='$school_num' class='refresh-info'>refresh</a>] " .
"- <a href='http://$url' target='_blank'>$url</a> $sprices<br><br>";
$results = db_query("SELECT * FROM invoice_header WHERE school_num = $school_num ORDER BY invoice_date DESC");
if (db_num_rows($results)) {
$return_data['invoices'] .= "<table class='invoices-table'>";
$return_data['invoices'] .= "<tr>";
$return_data['invoices'] .= "<td align='center' width='80'>YEAR</td>";
$return_data['invoices'] .= "<td align='center' width='80'>NUM</td>";
$return_data['invoices'] .= "<td align='center' width='80'>DATE</td>";
$return_data['invoices'] .= "<td align='center' width='70'>STATUS</td>";
$return_data['invoices'] .= "<td align='center' width='70'>TOTAL</td>";
$return_data['invoices'] .= "<td align='center' width='70'>PAID</td>";
$return_data['invoices'] .= "<td align='center' width='70'>BALANCE</td>";
$return_data['invoices'] .= "<td align='center' width='180'> </td>";
$return_data['invoices'] .= "</tr>";
while ($row = db_fetch_assoc($results)) {
extract($row);
$invnum = sprintf("%08d",$record_num + 500);
$edit = "?action=invoices&selected_school=$school_num&naction=edit&record_num=$record_num";
$print = "?action=inv-print&invoice_num=$record_num";
$pay = "";
if ($status == 'Open') {
$pay = "[<a href='?action=invoices&naction=inv-paid&return=schools-list&invoice_num=$record_num' snum='$school_num' inum='$record_num' amt='$total' class='paid-link'>paid</a>]";
$pay = "[<a href='#' snum='$school_num' inum='$record_num' amt='$total' class='paid-link'>paid</a>]";
$pay .= "[<a href='#' snum='$school_num' inum='$record_num' amt='$total' class='ezs-link'>ezs</a>]";
}
else {
$yesterday = date("Y-m-d",time() - 60 * 60 * 24);
if ($payment_date >= $yesterday) $pay .= "[<a href='#' snum='$school_num' inum='$record_num' amt='$total' class='ezs-link'>ezs</a>]";
}
$send = "[<a href='?action=invoices&naction=inv-outstanding&invoice_num=$record_num' class='send-link'>send</a>]";
$balance = number_format($total - $amount_paid,2);
$return_data['invoices'] .= "<tr>";
$return_data['invoices'] .= "<td align='center'>$school_year</td>";
$return_data['invoices'] .= "<td align='center'>#$invnum</td>";
$return_data['invoices'] .= "<td align='center'>$invoice_date</td>";
$return_data['invoices'] .= "<td align='center'>$status</td>";
$return_data['invoices'] .= "<td align='center'>$currencySymbol$total</td>";
$return_data['invoices'] .= "<td align='center'>$currencySymbol$amount_paid</td>";
$return_data['invoices'] .= "<td align='center'>$currencySymbol$balance</td>";
$return_data['invoices'] .= "<td align='center'>[<a href='$edit'>edit</a>] [<a href='$print'>print</a>] $pay $send</td>";
$return_data['invoices'] .= "</tr>";
}
$return_data['invoices'] .= "</table>";
}
$return_data['invoices'] .= " [<a href='?action=invoices&selected_school=$school_num&naction=add'>Add Invoice</a>]";
$return_data['content'] .= "<br>";
$return_data['content'] .= "[<a href='?action=schools-list&naction=create-link&record_num=$school_num'>Add Site</a>]";
$return_data['content'] .= "&nbsp;&nbsp;&nbsp;&nbsp;";
$return_data['content'] .= "[<a href='?action=schools-list&naction=send-notification&record_num=$school_num'>Send Notification</a>]";
break;
case 'user-info':
$user_num = intval($_GET['user_num']);
// Get user info
$results = db_query("SELECT * FROM users WHERE record_num = $user_num");
if (!is_resource($results)) exit;
$row = db_fetch_assoc($results);
extract($row);
$user_type = $type;
$user_num = $record_num;
$user_status = $status;
// Get school info
$results = db_query("SELECT * FROM schools WHERE record_num = $school_num");
$row = db_fetch_assoc($results);
extract($row);
$return_data['content'] = "<b><span class='show-school-info' snum='$school_num'>$school_name</span></b> ($school_num) " .
"- <a href='http://$url' target='_blank'>$url</a> $sprices<br>" .
"$city, $province - $phone<br>";
$return_data['content'] .= "<br><br>" .
"<b><span class='user-id-span' rnum='$user_num' snum='$school_num'>$userid</span> - $first_name $last_name</b> ($user_type)<br>" .
"<a href='mailto:$email'>$email</a> - $phone<br>" .
"Last Login: $last_login<br>";
$return_data['content'] .= "<b><span onclick='#' class='user-status' rnum='$user_num' snum='$school_num'>$user_status</span></b><br><br>";
$return_data['content'] .= "<button id='reset-user-password' snum='$school_num' unum='$user_num' userid='$userid' last='$last_login'> Update Password </button><br><br>";
// Get student info
$results = db_query("SELECT * FROM people WHERE school_num = $school_num AND user_num = $user_num");
while ($row = db_fetch_assoc($results)) {
$return_data['content'] .= " - ".$row['first_name'].' '.$row['last_name']."<br>";
}
break;
case 'user-account':
// Get user number
$user_num = intval($_GET['user_num']);
// Get records
$columnHeaders = array("User ID","TRX Date","TRX Type","Charges","Credits","Method");
$columnAlign = array('left','center','left','right','right','left');
$query = "SELECT u.userid,substring(transaction_datetime,1,10) as trx_date,transaction_type,note,transaction_amount,schedule_num,order_num," .
"payment_method,payment_reference,order_payments,ua.user_num,people_num,people_type,additional_note,ua.record_num,deleted," .
"deleted_datetime,deleted_by_user_num,delete_reason,u.first_name,u.last_name " .
"FROM user_account as ua LEFT JOIN people as p ON ua.people_num = p.record_num, users AS u " .
"WHERE u.school_num = $base_school_num " .
"AND ua.school_num = $school_num " .
"AND ua.user_num = u.record_num " .
"AND ua.user_num = $user_num " .
"ORDER BY transaction_datetime,record_num";
$transactions = db_query($query);
$data = array();
while ($row = db_fetch_assoc($transactions)) {
extract($row);
if ($transaction_amount < 0) {
$charge = "";
$credit = "-$currencySymbol".number_format(abs($transaction_amount),2);
}
else {
$credit = "";
$charge = "$currencySymbol".number_format(abs($transaction_amount),2);
}
if ($transaction_type == 'Order' && intval($schedule_num) > 0) {
$sname = db_getVal("SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $schedule_num");
$transaction_type .= " (#$order_num - $sname)";
}
if ($payment_method == 'Check') $payment_method .= " #$payment_reference";
$data[] = array($userid,$trx_date,$transaction_type,$charge,$credit,$payment_method);
}
$customTableID = "account-table";
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,array(),'N',$columnAlign,$totals);
break;
case 'trx-history':
// Get trx number
$rnum = intval($_GET['rnum']);
writeLog("rnum: $rnum\n");
$info = "<center><table width='90%' class='content-table'>";
$info .= "<tr class='data-header'>";
$info .= "<td align='left'><b>".getLanguageText('TEXT-TRANSACTION-TYPE')."</b></td>";
$info .= "<td align='right'><b>".getLanguageText('TEXT-AMOUNT')."</b></td>";
$info .= "<td align='left'><b>".getLanguageText('TEXT-SCHEDULE')."</b></td>";
$info .= "</tr>";
// Get record
$query = "SELECT * FROM user_account WHERE school_num = $school_num AND record_num = $rnum";
writeLog("query: $query\n");
$results = db_query($query);
$row = db_fetch_assoc($results);
writeLog("trx_history: ".$row['trx_history']."\n");
$entries = explode("\n",$row['trx_history']);
for ($i = 0; $i < count($entries); $i++) {
$row = explode('|',$entries[$i]);
if (strlen($row[0])) {
$bgclass = "data-even";
if ($i % 2) $bgclass = "data-odd";
$info .= "<tr class='$bgclass'>";
$info .= "<td align='left' valign='top'>".$row[0]."</td>";
$info .= "<td align='right' valign='top'>".$row[1]."</td>";
$info .= "<td align='left' valign='top'>".$row[2]."<br>".$row[3]."</td>";
$info .= "</tr>";
}
}
$info .= "</table></center><br>";
$return_data['content'] = $info;
break;
case 'trx-receipt':
// Get trx number
$trxNum = intval($_GET['trxnum']);
// Get trx record
$query = "SELECT * FROM user_account WHERE school_num = $school_num AND record_num = $trxNum";
writeLog("query: $query\n");
$results = db_query($query);
$trx = db_fetch_assoc($results);
$userNum = $trx['user_num'];
adjustUserAccountDetails($userNum);
// Get receipt number
$user_num = $userNum;
$rcptNum = db_getVal("SELECT receipt_number FROM user_account_detail WHERE school_num = $school_num AND user_num = $user_num AND transaction_num = $trxNum LIMIT 0,1");
writeLog("rcptNum: $rcptNum\n");
// Get user info
$query = "SELECT * FROM users WHERE school_num = $school_num AND record_num = $user_num";
writeLog("query: $query\n");
$results = db_query($query);
$user = db_fetch_assoc($results);
$name = $user['first_name'].' '.$user['last_name'];
// Get transaction information
$trx_details = "";
$trxTotal = 0;
// Transaction based processing
if ($school_record['select_transactions_on_post'] == 'Y') {
// Get transactions in this receipt
$query = "SELECT detail.*,ua.transaction_type,ua.transaction_amount AS trx_amount,ua2.transaction_datetime,ua.note,ua.schedule_num,ua.order_num " .
"FROM user_account_detail AS detail, user_account AS ua, user_account AS ua2 " .
"WHERE detail.school_num = $school_num " .
"AND detail.school_num = ua.school_num " .
"AND detail.school_num = ua2.school_num " .
"AND ua.user_num = $user_num " .
"AND ua2.user_num = $user_num " .
"AND detail.user_num = $user_num " .
"AND detail.receipt_number = '$rcptNum' " .
"AND detail.posted_to_transaction = ua.record_num " .
"AND detail.transaction_num = ua2.record_num " .
"AND (ua.deleted != 'Y' OR ua.deleted IS NULL) " .
"AND (ua2.deleted != 'Y' OR ua2.deleted IS NULL) " .
"ORDER BY ua2.transaction_datetime,ua.record_num";
writeLog("query: $query\n");
$transactions = db_query($query);
writeLog("# transactions: ".db_num_rows($transactions)."\n");
while ($row = db_fetch_assoc($transactions)) {
if ($row['transaction_num'] == $trxNum) {
$trnum = $row['transaction_num'];
$ptnum = $row['posted_to_transaction'];
$amt = $row['posted_amount'] * -1;
$type = $row['transaction_type'];
$note = $row['note'];
$onum = $row['order_num'];
$snum = $row['schedule_num'];
$prnum = $row['record_num'];
$rcpt = $row['receipt_number'];
$trxdate = $row['transaction_datetime'];
$trx_total = db_getVal("SELECT transaction_amount FROM user_account WHERE school_num = $school_num AND record_num = $trnum");
if ($type == 'Order') {
$type .= " (#$onum)";
$query = "SELECT transaction_datetime FROM user_account_detail WHERE school_num = $school_num AND user_num = $user_num AND receipt_number = '$rcptNum' AND posted_to_transaction = $ptnum";
writeLog("query: $query\n");
// $amt = db_getVal($query) * -1;
// $amt = $trx_total;
// $row['transaction_datetime'] = db_getVal($query);
$amt = $row['trx_amount'];
}
// Get schedule name
$sname = '';
if ($snum == 1) $sname = getLanguageText('TEXT-MISCELLANEOUS-CHARGES');
if (intval($snum) > 1) {
$query = "SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $snum";
writeLog("query: $query\n");
$sname = db_getVal($query);
$note .= " ($sname)";
}
if ($trx_total > 0) $note .= " $currencySymbol".number_format($trx_total,2);
}
else {
$trnum = $row['transaction_num'];
$ptnum = $row['posted_to_transaction'];
$amt = $row['posted_amount'];
$rcpt = $row['receipt_number'];
$results = db_query("SELECT * FROM user_account WHERE school_num = $school_num AND user_num = $user_num AND record_num = $trnum");
$row = db_fetch_assoc($results);
$type = $row['transaction_type'];
$note = $row['note'];
}
$sign = '';
if ($amt < 0) $sign = '- ';
$trxTotal += $amt;
$date = date($school_record['date_format'],strtotime($row['transaction_datetime']));
$trx_details .= "<tr>";
$trx_details .= "<td valign='top' align='left'>$type</td>";
$trx_details .= "<td valign='top' align='left'>$date</td>";
$trx_details .= "<td valign='top' align='left'>$note</td>";
$trx_details .= "<td valign='top' align='right'>$sign$currencySymbol".number_format(abs($amt),2)."</td>";
$trx_details .= "</tr>";
}
// Add current trx to details
$trx_details .= "<tr>";
$trx_details .= "<td valign='top' align='left'>".$trx['transaction_type']."</td>";
$trx_details .= "<td valign='top' align='left'>$date</td>";
$trx_details .= "<td valign='top' align='left'>".$trx['note']."</td>";
$trx_details .= "<td valign='top' align='right'>- $currencySymbol".number_format(abs($trx['transaction_amount']),2)."</td>";
$trx_details .= "</tr>";
$trxTotal += $trx['transaction_amount'];
}
// Get order information
if ($school_record['select_transactions_on_post'] != 'Y' && strlen($trx['order_payments']) && strlen($trx['transaction_payments']) == 0) {
$orders = explode('|',$trx['order_payments']);
$trx_details = "";
$trxTotal = 0;
for ($i = 0; $i < count($orders); $i++) {
$oinfo = $orders[$i];
$oinfo = str_replace('{','',$oinfo);
$oinfo = str_replace('}','',$oinfo);
list($onum,$amt) = explode(':',$oinfo);
if ($onum > 0) {
// Get order information
$query = "SELECT * FROM hotlunch_order_header WHERE school_num = $school_num AND record_num = $onum";
writeLog("query: $query\n");
$results = db_query($query);
$order = db_fetch_assoc($results);
$snum = $order['schedule_num'];
$pnum = $order['ordered_by_num'];
// Get schedule name
$sname = "";
if (intval($snum) > 1) {
$query = "SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $snum";
writeLog("query: $query\n");
$sname = db_getVal($query);
}
// Get person name
$query = "SELECT * FROM people WHERE school_num = $school_num AND record_num = $pnum";
writeLog("query: $query\n");
$results = db_query($query);
$person = db_fetch_assoc($results);
$pname = $person['first_name'].' '.$person['last_name'];
$trx_details .= "<tr>";
$trx_details .= "<td valign='top' align='left'>$pname</td>";
$trx_details .= "<td valign='top' align='left'>$sname</td>";
$trx_details .= "<td valign='top' align='right'>$currencySymbol".number_format($amt,2)."</td>";
$trx_details .= "</tr>";
$trxTotal += $amt;
$query = "SELECT * FROM user_account WHERE school_num = $school_num AND order_num = $onum AND transaction_type != 'Order' AND deleted != 'Y' ORDER BY record_num";
writeLog("query: $query\n");
$results = db_query($query);
if (db_num_rows($results)) {
while ($row = db_fetch_assoc($results)) {
$tname = $row['transaction_type'];
$note = $row['note'];
$amt = $row['transaction_amount'];
$trx_details .= "<tr>";
$trx_details .= "<td valign='top' align='left'>$tname</td>";
$trx_details .= "<td valign='top' align='left'>$note</td>";
$trx_details .= "<td valign='top' align='right'>$currencySymbol".number_format($amt,2)."</td>";
$trx_details .= "</tr>";
$trxTotal += $amt;
}
}
}
}
}
$transaction_type = $trx['transaction_type'];
if (strlen($trx['payment_method'])) {
if ($trx['payment_method'] == 'Check') $transaction_type .= " - ".getLanguageText('TEXT-'.strtoupper($trx['payment_method']));
else $transaction_type .= " - ".$trx['payment_method'];
if ($trx['payment_method'] == 'Check') $transaction_type .= "&nbsp;&nbsp;(#".$trx['payment_reference'].")";
}
$transaction_time = dateString('datetime',strtotime($trx['transaction_datetime']));
// Start content
$return_data['content'] = "<table width='100%'><tr><td align='left'>";
// School header
$return_data['content'] .= "<table width='100%'><tr><td align='left'>";
$return_data['content'] .= "<span class='school-name'>".$school_record['pac_name']."</span><br>";
$return_data['content'] .= $school_record['address'].", ".$school_record['city'].", ".$school_record['province']."&nbsp;&nbsp;&nbsp;".$school_record['postal']."<br>";
// Receipt header
$return_data['content'] .= "<br>";
$return_data['content'] .= "<br>";
$return_data['content'] .= "<span class='receipt-title'>".getLanguageText('TEXT-RECEIPT')."</span><br>";
$return_data['content'] .= "<div class='line'></div>";
$return_data['content'] .= "<br>";
$return_data['content'] .= "</td></tr></table>";
// Receipt content
$return_data['content'] .= "<br>";
$return_data['content'] .= "<table width='100%'><tr><td width='75%' align='left'>";
$return_data['content'] .= "<span class='receipt-large'>".getLanguageText('TEXT-FOR').": $name</span><br>";
$return_data['content'] .= "</td>";
$return_data['content'] .= "<td width='25%' align='left' style='border: 1px solid #000000; padding: 3px;'>";
$return_data['content'] .= "<span class='receipt-large'>&nbsp;&nbsp;# $rcptNum</span><br>";
$return_data['content'] .= "</td></tr></table>";
// Payment content
$return_data['content'] .= "<br>";
$return_data['content'] .= "<table width='100%'><tr><td width='25%' align='left' style='border: 1px solid #000000; padding: 3px;'>";
$return_data['content'] .= "<span class='receipt-large'>&nbsp;".getLanguageText('TEXT-PAID').": &nbsp;&nbsp;&nbsp;$currencySymbol".number_format(abs($trx['transaction_amount']),2)."</span><br>";
$return_data['content'] .= "</td>";
$return_data['content'] .= "<td width='75%' align='center'>";
$return_data['content'] .= "<span class='receipt-large'>&nbsp;&nbsp;$transaction_type</span><br>";
$return_data['content'] .= $transaction_time."<br>";
$return_data['content'] .= "</td></tr></table>";
// Detail content
if (strlen($trx_details)) {
$return_data['content'] .= "<br>";
$return_data['content'] .= "<table width='100%'>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td width='15%' valign='top' align='left' style='border-bottom: 1px solid #000000'><b>".getLanguageText('TEXT-NAME')."</b></td>";
$return_data['content'] .= "<td width='20%' valign='top' align='left' style='border-bottom: 1px solid #000000'><b>".getLanguageText('TEXT-DATE')."</b></td>";
$return_data['content'] .= "<td width='45%' valign='top' align='left' style='border-bottom: 1px solid #000000'><b>".getLanguageText('TEXT-ITEM')."</b></td>";
$return_data['content'] .= "<td width='20%' valign='top' align='right' style='border-bottom: 1px solid #000000'><b>".getLanguageText('TEXT-AMOUNT')."</b></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= $trx_details;
if ($trxTotal > -0.01 && $trxTotal < 0.01) $trxTotal = 0.00;
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td colspan='3' align='left'>&nbsp;</td>";
$return_data['content'] .= "<td align='right' style='border-top: 1px solid #000000'><b>$currencySymbol".number_format($trxTotal,2)."</b></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td colspan='3'><br><br><br><br><br></td>";
$return_data['content'] .= "</tr>";
$balance = db_getVal("SELECT sum(transaction_amount) FROM user_account " .
"WHERE school_num = $school_num " .
"AND user_num = $user_num " .
"AND (deleted != 'Y' OR deleted IS NULL)");
$balance = intval($balance * 100) / 100;
if ($balance > -0.01 && $balance < 0.01) $balance = 0.00;
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td colspan='2' valign='top' align='right'><b>".getLanguageText('TEXT-CURRENT-ACCT-BALANCE').": </b></td>";
$return_data['content'] .= "<td valign='top' align='right'><b>$currencySymbol".number_format($balance,2)."</b></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "<tr>";
$return_data['content'] .= "<td colspan='3'><br><br><br><br><br></td>";
$return_data['content'] .= "</tr>";
$return_data['content'] .= "</table>";
}
$printed_time = dateString('datetime',time());
$return_data['content'] .= "<br>";
$return_data['content'] .= "<p><b>".getLanguageText('TEXT-PRINTED').": $printed_time</b></p>";
// End content table
$return_data['content'] .= "</td></tr></table>";
break;
case 'login-log':
// Get login log parameters
$sdate = db_escape_string($_GET['sdate']);
$edate = db_escape_string($_GET['edate']);
$userid = db_escape_string($_GET['userid']);
$ip = db_escape_string($_GET['ip']);
$where = "AND last_login BETWEEN '$sdate 00:00:00' AND '$edate 23:59:59' ";
if ($userid != 'All') $where .= "AND userid = '$userid' ";
if ($ip != 'All') $where .= "AND user_ip = '$ip' ";
if ($_SESSION['UserInfo']['type'] != 'SuperUser') $where .= "AND userid != 'superuser' ";
$columnHeaders = array(getLanguageText('TEXT-USERID'),
getLanguageText('TEXT-LOGIN'),
getLanguageText('TEXT-LAST-ACTIVITY'),
getLanguageText('TEXT-DURATION'),
getLanguageText('TEXT-IP-ADDRESS'));
$query = "SELECT * FROM login_log " .
"WHERE school_num = $school_num " .
$where .
"ORDER BY last_login desc";
writeLog("query: $query\n");
$results = db_query($query);
$data = array();
while ($row = db_fetch_assoc($results)) {
extract($row);
$dstr = "";
$last_action = "";
$last_action = date("Y-m-d H:i:s",$last_activity);
$duration = $last_activity - $login_time;
$dhr = intval($duration / 3600);
$dmin = ($duration % 3600) / 60;
$dsec = $duration % 60;
$dstr = sprintf("%dh %02dm %02ds",$dhr,$dmin,$dsec);
$data[] = array("<a href='?action=users&naction=show-info&user_num=$user_num' title='$user_agent' class='title-text'>$userid</a>",
$last_login,
$last_action,
$dstr,
$user_ip);
}
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,array(),'N');
break;
case 'payment-posting-errors':
// startLog("payment-posting-errors");
// Get parameters
$sdate = $_GET['sdate'];
$edate = $_GET['edate'];
$columnHeaders = array(getLanguageText('TEXT-DATE'),
getLanguageText('TEXT-USER-ID'),
getLanguageText('TEXT-NAME'),
getLanguageText('TEXT-ORDER-NUMBER'),
getLanguageText('TEXT-PAYMENT-METHOD'),
getLanguageText('TEXT-ORDER-TOTAL'),
getLanguageText('TEXT-AMOUNT-PAID'));
$query = "SELECT school_num, record_num, ordered_by_num, added_date, payment_method, order_total, amount_paid " .
"FROM hotlunch_order_header " .
"WHERE school_num = $school_num " .
"AND amount_paid > (order_total * 2) " .
"AND added_date BETWEEN '$sdate' AND '$edate' " .
"ORDER BY added_date";
writeLog($query);
$orders = db_query($query);
$num = db_num_rows($orders);
writeLog("num: $num");
$data = array();
while ($row = db_fetch_assoc($orders)) {
extract($row);
$query = "SELECT * FROM people WHERE school_num = $school_num AND record_num = $ordered_by_num";
$results = db_query($query);
$student = db_fetch_assoc($results);
$user_num = $student['user_num'];
$name = $student['first_name'].' '.$student['last_name'];
writeLog("$user_num - $name");
$userid = getLanguageText('TEXT-UNKNOWN') . " $ordered_by_num";
if (intval($user_num) > 0) {
$query = "SELECT * FROM users WHERE school_num = $school_num AND record_num = $user_num";
$results = db_query($query);
$user = db_fetch_assoc($results);
$userid = $user['userid'];
}
$order_total = '$' . number_format($order_total,2);
$amount_paid = '$' . number_format($amount_paid,2);
$entry = array();
$entry[] = $added_date;
$entry[] = $userid;
$entry[] = $name;
$entry[] = $record_num;
$entry[] = $payment_method;
$entry[] = $order_total;
$entry[] = $amount_paid;
$data[] = $entry;
}
$return_data['content'] = getDataCustom($data,$columnHeaders,'',array(),'N');
break;
case 'order-log-detail':
// Get order log detail
$order_num = intval($_GET['order_num']);
$record_num = intval($_GET['record_num']);
$return_data['content'] = "";
$query = "SELECT * FROM hotlunch_order_change_log WHERE school_num = $school_num AND order_num = $order_num AND record_num = $record_num";
$results = db_query($query);
if (db_num_rows($results) == 1) {
$row = db_fetch_assoc($results);
extract($row);
$userid = "Unknown";
if ($updated_by > 1) $userid = db_getVal("SELECT userid FROM users WHERE school_num = $base_school_num AND record_num = $updated_by");
if (!$userid) $userid = "Unknown";
$student_name = "";
if ($ordered_by_num > 0) $student_name = db_getVal("SELECT concat(first_name,' ',last_name) FROM people WHERE school_num = $school_num AND record_num = $ordered_by_num");
$return_data['content'] .= "<table width='400'>";
$return_data['content'] .= "<tr><td align='left' width='100'>".getLanguageText("TEXT-ACTIVITY").":</td><td align='left'><b>$order_action</b></td></tr>\n";
$return_data['content'] .= "<tr><td align='left'>".getLanguageText("TEXT-DATE").":</td><td align='left'><b>$updated_time</b></td></tr>\n";
$return_data['content'] .= "<tr><td align='left'>".getLanguageText("TEXT-USER-ID").":</td><td align='left'><b>$userid</b></td></tr>\n";
$return_data['content'] .= "<tr><td colspan='2'>&nbsp;</td></tr>";
$return_data['content'] .= "<tr><td align='left'>".getLanguageText("TEXT-ORDER-NUMBER").":</td><td align='left'><b>$order_num</b></td></tr>\n";
$return_data['content'] .= "<tr><td align='left'>".getLanguageText("TEXT-ORDERED-BY").":</td><td align='left'><b>$student_name</b></td></tr>\n";
if ($user_num > 1) {
$userid = db_getVal("SELECT userid FROM users WHERE school_num = $base_school_num AND record_num = $user_num");
if ($userid) $return_data['content'] .= "<tr><td align='left'>".getLanguageText("TEXT-USER-ACCOUNT").":</td><td align='left'><b>$userid</b></td></tr>\n";
}
$order_total = $currencySymbol . number_format($order_total,2);
$return_data['content'] .= "<tr><td align='left'>".getLanguageText("TEXT-ORDER-TOTAL").":</td><td align='left'><b>$order_total</b></td></tr>\n";
$return_data['content'] .= "</table>";
}
else {
$return_data['content'] = "<span class='error'>".getLanguageText("ERRORMSG-NOT-FOUND")."</span><br><br>";
}
break;
case 'email-queue':
// Get email queue parameters
$sdate = $_GET['sdate'];
$edate = $_GET['edate'];
$columnHeaders = array(getLanguageText('TEXT-POSTED'),
getLanguageText('TEXT-STATUS'),
getLanguageText('TEXT-EMAIL'),
getLanguageText('TEXT-EMAIL-SUBJECT'));
$query = "SELECT posted_time,posted_date_time,status,email_to,email_subject,record_num " .
"FROM email_queue " .
"WHERE school_num = $school_num " .
"AND posted_date_time BETWEEN '$sdate 00:00:00' AND '$edate 23:59:59' " .
"ORDER BY posted_date_time";
writeLog("query: $query\n");
$results = db_query($query);
$data = array();
while ($row = db_fetch_assoc($results)) {
extract($row);
$posted_date_time = date($school_record['date_format'].' '.$school_record['time_format'],$posted_time);
$data[] = array("<span class='msg' rnum='$record_num'>$posted_date_time</span>",
"<span class='msg' rnum='$record_num'>$status</span>",
"<span class='msg' rnum='$record_num'>$email_to</span>",
"<span class='msg' rnum='$record_num'>$email_subject</span>");
}
$return_data['content'] = getDataCustom($data,$columnHeaders,$action,array(),'N');
break;
case 'email-msg':
// Get email queue number
$rnum = intval($_GET['rnum']);
$query = "SELECT * FROM email_queue WHERE school_num = $school_num AND record_num = $rnum";
writeLog("query: $query\n");
$results = db_query($query);
$msg = db_fetch_assoc($results);
extract($msg);
$sent_time = dateFormat($processing_end_time);
$msg = strip_tags($email_message);
if ($msg == $email_message) $email_message = nl2br($email_message);
$info = "<center><table width='95%' class='content-table'>";
$info .= "<tr><td align='left' valign='top'><b>".getLanguageText('TEXT-EMAIL') .":</b></td><td>$email_to</td></tr>";
$info .= "<tr><td align='left' valign='top'><b>".getLanguageText('TEXT-EMAIL-SUBJECT') .":</b></td><td>$email_subject</td></tr>";
$info .= "<tr><td align='left' valign='top'><b>".getLanguageText('TEXT-PROCESSED-TIME') .":</b></td><td>$sent_time</td></tr>";
$info .= "<tr><td align='left' valign='top'><b>".getLanguageText('TEXT-STATUS') .":</b></td><td>$status</td></tr>";
$info .= "<tr><td colspan='2' valign='top'><hr></td></tr>";
$info .= "<tr><td colspan='2' align='left' valign='top'><b>".getLanguageText('TEXT-MESSAGE') .":</b><br>".nl2br($email_message)."</td></tr>";
$info .= "</table></center><br>";
$return_data['content'] = $info;
break;
case 'cafeteria-students':
// Get parameters
$menuNum = intval($_GET['menuNum']);
$classNum = intval($_GET['classNum']);
$where = "";
if ($classNum > 0) $where = "AND class_num = $classNum ";
$query = "SELECT * FROM people WHERE school_num = $base_school_num $where ORDER BY last_name,first_name";
$people = db_query($query);
if (db_num_rows($people)) {
$return_data['content'] .= "<div class='cafeteria-students-div'>\n";
while ($row = db_fetch_assoc($people)) {
extract($row);
$people_num = $record_num;
$userBalance = round(db_getVal("SELECT sum(transaction_amount) FROM user_account WHERE school_num = $school_num AND user_num = $user_num AND (deleted != 'Y' OR deleted IS NULL)"),2);
$balance_class = "";
if ($userBalance > $school_record['cafeteria_balance_limit']) $balance_class = " cafeteria-balance-low";
$prefix = $school_record['currency_symbol'];
if ($userBalance < 0) $prefix = "- " . $school_record['currency_symbol'];
$userBalance = "<span class='$class'>" . $prefix . number_format(abs($userBalance),2) . "</span>";
$itemsOrdered = db_getVal("SELECT count(*) FROM hotlunch_order_items WHERE school_num = $school_num AND ordered_by_num = $people_num AND menu_num = $menuNum");
$oclass = "";
if ($itemsOrdered > 0) $oclass = "cafeteria-student-with-order";
$return_data['content'] .= "<div class='cafeteria-student-entry $oclass' rnum='$record_num' name='$first_name $last_name'>\n";
$return_data['content'] .= "<a href='#' class='cafeteria-student-name'>$first_name $last_name</a> ($people_type)";
$return_data['content'] .= "<div class='cafeteria-balance$balance_class'>$userBalance</div>";
$return_data['content'] .= "</div>\n";
}
$return_data['content'] .= "</div>\n";
$return_data['content'] .= "<br>\n";
$return_data['content'] .= "<br>\n";
}
break;
case 'cafeteria-student-menu':
// Get parameters
$scheduleNum = intval($_GET['scheduleNum']);
$menuNum = intval($_GET['menuNum']);
$classNum = intval($_GET['classNum']);
$studentNum = intval($_GET['studentNum']);
$query = "SELECT * FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $scheduleNum";
$results = db_query($query);
$schedule = db_fetch_assoc($results);
$query = "SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $menuNum";
$results = db_query($query);
$menu_date = db_fetch_assoc($results);
$qtyFieldFormat = $menu_date['order_format'];
$query = "SELECT * FROM people WHERE school_num = $base_school_num AND record_num = $studentNum";
$results = db_query($query);
$people = db_fetch_assoc($results);
extract($people);
$order_num = intval(db_getVal("SELECT record_num FROM hotlunch_orders WHERE school_num = $school_num AND student_num = $studentNum AND schedule_num = $scheduleNum"));
if ($orderNum > 0) $orderNum = " ($order_num)";
else $orderNum = "";
if ($classNum > 0) $class = getClassInfo($classNum);
$return_data['content'] .= "<span class='cafeteria-student-name-text'>$first_name $last_name $orderNum</span><br>";
if ($classNum > 0) $return_data['content'] .= "<span class='cafeteria-student-class-text'>$class</span><br>";
$query = "SELECT * FROM hotlunch_menu_items WHERE school_num = $school_num AND menu_num = $menuNum";
writeLog("query: $query\n");
$menu_items = db_query($query);
$symbol = $school_record['currency_symbol'];
$iconWidth = 25;
$iconHeight = 25;
$orderTotal = 0;
$tabIndex = 1;
if (db_num_rows($menu_items)) {
$return_data['content'] .= "<table class='cafeteria-menu-entry'>";
while ($row = db_fetch_assoc($menu_items)) {
extract($row);
$menu_item_num = $record_num;
if ($item_type == 'Heading') {
$return_data['content'] .= "<tr class='cafeteria-heading'>";
$return_data['content'] .= "<td colspan='4'>";
$return_data['content'] .= "<span class='menu-item-title'>$item_title</span>";
$return_data['content'] .= "</td>";
$return_data['content'] .= "</tr>\n";
}
if ($item_type == 'Item') {
$query = "SELECT * FROM hotlunch_order_items WHERE school_num = $school_num AND ordered_by_num = $studentNum AND menu_num = $menuNum AND menu_item_num = $menu_item_num";
$results = db_query($query);
if (db_num_rows($results)) {
$ordered_item = db_fetch_assoc($results);
$qty = $ordered_item['qty'];
}
else $qty = 0;
$item_price = $online_price;
$item_total = $qty * $item_price;
$jprice = $item_price;
if (strlen($item_description)) $item_title .= "<br><span class='cafeteria-item-description'>$item_description</span>";
// Handle options
if ($item_price == 0.00) {
$jprice = 0;
$item_price = "";
$item_total = "";
}
$line_total = $qty * $jprice;
$orderTotal += $line_total;
$lineTotal = "";
if ($line_total != 0) {
if ($line_total > 0) $lineTotal = $symbol . number_format($line_total,2);
else $lineTotal = "- " . $symbol . number_format(abs($line_total),2);
}
$return_data['content'] .= "<tr class='cafeteria-item' item_num='$menu_item_num'>";
$return_data['content'] .= "<td class='cafeteria-menu-item-title'>$item_title</td>";
$return_data['content'] .= "<td class='cafeteria-menu-item-qty'>";
if ($qtyFieldFormat == 'Quantity' && $menu_item_format == 'D' || $menu_item_format == 'Q') {
$return_data['content'] .= "<table cellpadding='0' cellspacing='0' class='qty-table'><tr>" .
"<td valign='top'><a href='#' class='minus' item_num='$menu_item_num' price='$jprice'>" .
"<img src='images/minus.png' align='left' hspace='10' vspace='0' height='$iconHeight' width='$iconWidth'></a></td>" .
"<td valign='top'><input type='text' class='cafeteria-qty' size='2' id='qty_$menu_item_num' value='$qty' item_num='$menu_item_num' price='$jprice' tabindex='$tabIndex'></td>" .
"<td valign='top'><a href='#' class='plus' item_num='$menu_item_num' price='$jprice'>" .
"<img src='images/plus.png' align='right' hspace='10' vspace='0' height='$iconHeight' width='$iconWidth'></a></td>" .
"</tr></table>";
}
else {
$checked = "";
if ($qty == 1) $checked = "checked='checked'";
$return_data['content'] .= "<input type='checkbox' class='cafeteria-checkbox' id='qty_$menu_item_num' value='1' $checked item_num='$menu_item_num' price='$jprice'>";
}
$return_data['content'] .= "<input type='hidden' class='line-total' id='total-$menu_item_num' value='$line_total'>";
$return_data['content'] .= "<input type='hidden' id='prev_qty_$menu_item_num' value='$qty'>";
$return_data['content'] .= "</td>";
$return_data['content'] .= "<td class='cafeteria-menu-item-price' id='price_$menu_item_num'>$symbol" . number_format($item_price,2) . "</td>";
$return_data['content'] .= "<td class='cafeteria-menu-item-price'><span id='total_$menu_item_num'>$lineTotal</span></td>";
$return_data['content'] .= "</tr>";
$tabIndex++;
}
}
$return_data['content'] .= "<tr><td colspan='3' align='right'>" . getLanguageText('TEXT-TOTAL') .
"</td><td class='cafeteria-item cafeteria-menu-item-price'><span id='cafeteria-total'>$symbol" . number_format($orderTotal,2) . "</span></td></tr>\n";
$return_data['content'] .= "</table>\n";
$return_data['content'] .= "<input type='hidden' name='cafeteria_schedule_num' id='cafeteria_schedule_num' value='$scheduleNum'>";
$return_data['content'] .= "<input type='hidden' name='cafeteria_menu_num' id='cafeteria_menu_num' value='$menuNum'>";
$return_data['content'] .= "<input type='hidden' name='cafeteria_student_num' id='cafeteria_student_num' value='$studentNum'>";
$return_data['content'] .= "<input type='hidden' name='cafeteria_order_num' id='cafeteria_order_num' value='$order_num'>";
$return_data['content'] .= "<span id='order_num_span'>$order_num</span>";
}
break;
case 'update-students':
$logging = false;
$user_num = intval($_GET['usernum']);
$mode = $_GET['mode'];
$return_data['count'] = 0;
$query = "SELECT* FROM people WHERE school_num = $school_num AND user_num = $user_num AND people_type = 'Student'";
writeLog("query: $query\n");
$students = db_query($query);
if (db_num_rows($students)) {
$return_data['count'] = db_num_rows($students);
// Get classes
$Classes = array();
$results = db_query("SELECT * FROM classes WHERE school_num = $school_num AND entry_type = 'Class' ORDER BY sequence");
while ($row = db_fetch_assoc($results)) {
$cnum = $row['record_num'];
$classInfo = getClassInfo($cnum,'dropdown');
$row['info'] = $classInfo;
$Classes[] = $row;
}
$content = "<center><table width='95%' class='content-table'>";
$content .= "<tr>";
$content .= "<td class='heading'>" . getLanguageText('TEXT-NAME') . "</td>";
$content .= "<td class='heading'>" . $GlobalText['Class'] . "</td>";
$content .= "</tr>";
$class = 'data-odd';
while ($row = db_fetch_assoc($students)) {
extract($row);
writeLog("class_num: $class_num\n");
if ($class == 'data-odd') $class = 'data-even';
else $class = 'data-odd';
$content .= "<tr>";
$content .= "<td class='$class'>$first_name $last_name</td>";
$content .= "<td class='$class'>";
$content .= "<select name='student_class' class='student-class' snum='$record_num'>";
if ($class_num == 0) $content .= "<option value=0></option>";
for ($i = 0; $i < count($Classes); $i++) {
$class = $Classes[$i];
$cnum = $class['record_num'];
$info = $class['info'];
$selected = "";
if ($class_num == $cnum) $selected = " selected='selected'";
$content .= "<option value=$cnum $selected>$info</option>";
}
$content .= "</select>";
$content .= "</td>";
$content .= "</tr>";
}
$content .= "</table></center>";
$return_data['content'] = $content;
}
break;
case 'load-image-gallery':
$content = "";
$image_path = "files/$subpath/image";
$imagedir = opendir($image_path);
$file_names = array();
while ($file = readdir($imagedir)) {
if ($file == ".") continue;
if ($file == "..") continue;
if (strstr($file,"-tn.jpg") !== false) $file_names[] = $file;
if (strstr($file,"-tn.png") !== false) $file_names[] = $file;
if (strstr($file,"-tn.gif") !== false) $file_names[] = $file;
}
sort($file_names);
$count = count($file_names);
$rows = intval(($count + 3) / 4);
$columns = 4;
$img = 0;
if (count($file_names)) {
$content = "<center><table width='850' class='content-table'>";
for ($r = 0; $r < $rows; $r++) {
$content .= "<tr>";
for ($c = 0; $c < $columns; $c++) {
$content .= "<td align='center' width='200'>";
if ($img < count($file_names)) {
$thumbnail = $file_names[$img];
$image = str_replace("-tn.",".",$thumbnail);
$content .= "<img src='$image_path/$thumbnail' class='gallery-image' filename='$image_path/$image' style='border: solid 1px #000000'>";
$img++;
}
else $content .= "&nbsp;";
$content .= "</td>";
}
$content .= "</tr>";
}
$content .= "</table></center>";
}
$return_data['content'] = $content;
break;
}
$return_data['content'] .= $localContent;
// writeLog("".$return_data['content']."\n");
writeLog("complete\n");
echo(json_encode($return_data));
?>