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

255 lines
9.4 KiB
PHP

<?php
$ValidAccess = 2010;
require_once("include/globals.php");
$moduleName = "ajax.DataRecord.Fetch.php";
// if ($_SESSION['UserInfo']['type'] == 'SuperUser') startLog($moduleName);
if (SessionActive() != 1 || ! UserLoggedIn()) {
logExit("Session is not active",$moduleName);
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());
$return_data = array();
// Get parameters
if (array_key_exists('table_name', $_GET)) $table_name = db_escape_string($_GET['table_name']);
if (array_key_exists('record_num', $_GET)) $record_num = intval($_GET['record_num']);
// Error logging
writeLog("school_num: $school_num");
writeLog("table_name: $table_name");
if (isset($record_num)) writeLog("record_num: $record_num");
// Validate parameters
if (strlen($table_name) == 0) logExit("Invalid Access");
// Ensure numeric parameters are numeric
if (!isset($record_num) || !is_numeric($record_num)) logExit("Invalid Access");
if ($record_num == 0) logExit("record_num is zero");
$resultsRow = array();
// Get data record
switch ($table_name) {
case '_form_actions':
case '_form_fields':
case '_form_permission':
case 'schools':
case 'resellers':
$query = "SELECT * FROM $table_name WHERE record_num = $record_num";
break;
case 'people':
case 'users':
$query = "SELECT * FROM $table_name WHERE school_num = $base_school_num AND record_num = $record_num";
break;
default:
$query = "SELECT * FROM $table_name WHERE school_num = $school_num AND record_num = $record_num";
break;
}
writeLog("query: $query");
$results = db_query($query);
if (db_num_rows($results)) {
$resultsRow = db_fetch_assoc($results);
$resultsRow['ajax_return_code'] = 1;
$resultsRow['delete_flag'] = 'Y';
//
// Get additional data if necessary or perform post-processing
//
switch ($table_name) {
case 'staff':
if ($resultsRow['entry_type'] == 'Staff') {
$user_num = $resultsRow['user_num'];
$query = "SELECT type FROM users WHERE school_num = $base_school_num AND record_num = $user_num";
writeLog("query: $query");
$resultsRow['user_type'] = db_getVal($query);
}
break;
case 'users':
if ($resultsRow['type'] == 'Parent') {
$user_num = $resultsRow['record_num'];
$query = "SELECT count(*) FROM people WHERE school_num = $base_school_num AND user_num = $user_num AND people_type = 'Student'";
$resultsRow['num_students'] = db_getVal($query);
if ($resultsRow['num_students'] > 0) $resultsRow['delete_flag'] = 'N';
}
// Get people allergies
$query = "SELECT * FROM user_sites WHERE school_num = $base_school_num AND user_num = $record_num";
$results = db_query($query);
$user_sites = array();
while ($r = db_fetch_assoc($results)) {
$user_sites[] = $r['site_num'];
}
$resultsRow['selected_user_sites'] = $user_sites;
break;
case 'people':
if (!array_key_exists('class_info', $resultsRow)) $resultsRow['class_info'] = '';
if (!array_key_exists('status_info', $resultsRow)) $resultsRow['status_info'] = '';
if (!array_key_exists('people_num', $resultsRow)) $resultsRow['people_num'] = $record_num;
writeLog($resultsRow['people_type']);
writeLog("class_name: ".$resultsRow['class_num']);
writeLog("meal_location: ".$resultsRow['meal_location']);
if ($resultsRow['people_type'] == 'Student') {
if (array_key_exists('class_num', $resultsRow) && intval($resultsRow['class_num']) > 0) {
$resultsRow['class-info'] = getClassInfo(intval($resultsRow['class_num']));
}
else {
$resultsRow['class_num'] = 3;
}
$resultsRow['status-info'] = $resultsRow['status'];
// Get people allergies
$query = "SELECT * FROM allergies WHERE school_num = $school_num AND people_num = $record_num";
$results = db_query($query);
$allergies = array();
while ($r = db_fetch_assoc($results)) {
$allergies[] = $r['allergen_num'];
}
$resultsRow['student_allergies'] = $allergies;
// Get people categories
$query = "SELECT * FROM people_categories WHERE school_num = $school_num AND people_num = $record_num";
$results = db_query($query);
$student_categories = array();
while ($r = db_fetch_assoc($results)) {
$student_categories[] = $r['category_num'];
}
$resultsRow['student_categories'] = $student_categories;
$orders = '';
$results = db_query("SELECT * FROM hotlunch_order_header WHERE school_num = $school_num AND ordered_by_num = $record_num ORDER BY added_time");
if (db_num_rows($results)) {
$orders .= "<table width='98%' cellpadding='2' cellspacing='1' class='content-table' align='center'>";
$orders .= "<tr class='heading'>";
$orders .= "<td align='left' width='230'><b>".getLanguageText('TEXT-SCHEDULE')."</b></td>";
$orders .= "<td align='right'><b>".getLanguageText('TEXT-TOTAL')."</b></td>";
$orders .= "<td align='center'><b>".getLanguageText('TEXT-STATUS')."</b></td>";
$orders .= "</tr>";
while ($r = db_fetch_assoc($results)) {
$schedule_num = $r['schedule_num'];
$schedule_name = db_getVal("SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $schedule_num");
$order_total = '$'.number_format($r['order_total'],2);
$order_status = $r['status'];
$orders .= "<tr>";
$orders .= "<td align='left'>$schedule_name</td>";
$orders .= "<td align='right'>$order_total</td>";
$orders .= "<td align='center'>$order_status</td>";
$orders .= "</tr>";
}
$orders .= "</table>";
}
$resultsRow['student_orders'] = $orders;
}
// writeLog(print_r($resultsRow, true));
break;
case 'formatted_content':
$resultsRow['content_id_display'] = getLanguageText('ID-'.$resultsRow['content_id']);
$resultsRow['content'] = str_replace('admin/','',html_entity_decode($resultsRow['content']));
break;
case 'suppliers':
$query = "SELECT * FROM users WHERE school_num = $base_school_num AND supplier_num = $record_num";
writeLog($query);
$results = db_query($query);
writeLog(db_num_rows($results));
if (db_num_rows($results)) {
$user = db_fetch_assoc($results);
$resultsRow['supplier_userid'] = $user['userid'];
writeLog($resultsRow['supplier_userid']);
}
break;
case 'hotlunch_menu_dates':
$resultsRow['select_classes'] = 'AllClasses';
$selected_classes = array();
$query = "SELECT * FROM hotlunch_menu_dates_classes WHERE school_num = $school_num AND menu_num = $record_num";
$results = db_query($query);
while ($r = db_fetch_assoc($results)) {
$selected_classes[] = $r['class_num'];
}
$resultsRow['selected_classes'] = $selected_classes;
if (count($selected_classes)) $resultsRow['select_classes'] = 'SelectedClasses';
writeLog(print_r($resultsRow, true));
break;
case 'hotlunch_menu_items':
// startLog('hotlunch_menu_items fetch');
$query = "SELECT * FROM hotlunch_menu_products " .
"WHERE school_num IN ($supplier_school_num,$school_num) " .
"AND menu_item_num = $record_num " .
"ORDER BY product_sequence";
writeLog($query);
$item_products = db_query($query);
$count = 0;
while ($r = db_fetch_assoc($item_products)) {
$resultsRow["qty$count"] = $r['supplier_product_qty'];
$resultsRow["product$count"] = $r['supplier_product_num'];
$count++;
}
$resultsRow['num_alt_prices'] = $resultsRow['number_of_alternate_prices'];
writeLog(print_r($resultsRow,true));
break;
case 'schools':
$error = false;
$url = $resultsRow['url'];
$resultsRow['url'] = $url;
if ($url == 'hotlunches.hotlunches.net' || $url == 'www.hotlunches.net') {
$resultsRow['ajax_return_code'] = -1;
$resultsRow['ajax_return_message'] = "Unable to process school - Invalid URL: $url";
$error = true;
}
// Check for a duplicate URL
if (!$error) {
$rnum = $resultsRow['record_num'];
$url = db_escape_string($url);
$results = db_query("SELECT * FROM schools WHERE url = '$url' AND record_num != $rnum AND status IN ('Active','Special')");
if (db_num_rows($results) > 0) {
$resultsRow['ajax_return_code'] = -1;
$resultsRow['ajax_return_message'] = "Unable to process school - Duplicate URL: $url";
$error = true;
}
}
break;
}
}
else {
$resultsRow['ajax_return_code'] = 0;
}
echo(json_encode($resultsRow));
writeLog("completed");
?>