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

184 lines
5.8 KiB
PHP

<?php
$ValidAccess = 2010;
require_once("include/globals.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
logExit("Session is not active");
exit();
}
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();
$moduleName = "ajax.UpdateDBField.php";
// if ($_SESSION['UserInfo']['type'] == 'SuperUser') startLog($moduleName);
// Get parameters
if (array_key_exists('table_name', $_GET)) $table_name = db_escape_string($_GET['table_name']);
if (array_key_exists('field_name', $_GET)) $field_name = db_escape_string($_GET['field_name']);
if (array_key_exists('field_value', $_GET)) $field_value = db_escape_string($_GET['field_value']);
if (array_key_exists('field_type', $_GET)) $field_type = db_escape_string($_GET['field_type']);
if (array_key_exists('record_num', $_GET)) $record_num = intval($_GET['record_num']);
// Ensure parameters are valid
if (!is_numeric($school_num)) logExit("School num is not numeric");
if ($school_num == 0) logExit("school_num is zero");
if (!isset($table_name)) logExit("ajax.UpdateDBField.php - table_name is not set");
if (!isset($field_name)) logExit("ajax.UpdateDBField.php - field_name is not set");
$field_name = str_replace('-','_',$field_name);
writeLog("table_name: $table_name");
writeLog("field_name: $field_name");
if (isset($field_value)) writeLog("field_value: $field_value");
writeLog("record_num: $record_num");
if (!isset($field_type)) $field_type = 'string';
$return_data['new_value'] = $field_value;
$return_data['new_value_text'] = $field_value;
//
// Special preprocessing and validation
//
$query = "SELECT * FROM $table_name WHERE school_num = $school_num AND record_num = $record_num";
$results = db_query($query);
if (db_num_rows($results) == 0) logExit("ajax.UpdateDBField.php - $table_name validation failure");
switch ($field_type) {
case 'numeric':
$field_value = preg_replace("/[^0-9]/", "", $field_value);
$return_data['new_value'] = $field_value;
$return_data['new_value_text'] = $field_value;
break;
case 'decimal':
case 'dollar':
$field_value = preg_replace("/[^0-9.]/", "", $field_value);
$field_value = number_format(floatval($field_value),2);
$return_data['new_value'] = $field_value;
$return_data['new_value_text'] = $field_value;
if ($field_type == 'dollar') {
$return_data['new_value'] = $currencySymbol . $field_value;
$return_data['new_value_text'] = $currencySymbol . $field_value;
}
break;
case 'string':
case 'text':
default:
switch ($field_value) {
case 'Y':
$return_data['new_value_text'] = getLanguageText('TEXT-Y');
break;
case 'N':
$return_data['new_value_text'] = getLanguageText('TEXT-N');
break;
case 'Visible':
case 'visible':
$return_data['new_value_text'] = getLanguageText('TEXT-VISIBLE');
break;
case 'Hidden':
case 'hidden':
$return_data['new_value_text'] = getLanguageText('TEXT-HIDDEN');
break;
}
break;
}
switch ($field_type) {
case 'numeric':
case 'decimal':
case 'dollar':
$field_value = preg_replace("/[^0-9.]/", "", $field_value);
$query = "UPDATE $table_name SET $field_name = $field_value WHERE record_num = $record_num";
writeLog("query: $query");
db_query($query);
break;
default:
$query = "UPDATE $table_name SET $field_name = '$field_value' WHERE record_num = $record_num";
writeLog("query: $query");
db_query($query);
break;
}
//
// hotlunch_menu_items table special processing
//
if ($table_name == 'hotlunch_menu_items') {
$query = "SELECT * FROM hotlunch_menu_items WHERE school_num = $school_num AND record_num = $record_num";
$rs = db_query($query);
$row = db_fetch_assoc($rs);
$row['logged_datetime'] = date("Y-m-d H:i:s",time());
$row['original_record_num'] = $record_num;
$row['record_action'] = 'Update';
if (!array_key_exists('food_category', $row)) $row['food_category'] = 'General';
$ltable = new Table("hotlunch_menu_items_log");
$query = $ltable->BuildInsert($row);
db_query($query);
$menu_num = $row['menu_num'];
$LinkedMenus = array();
$query = "SELECT record_num FROM hotlunch_menu_dates WHERE school_num = $school_num AND menu_link != 'No' AND source_menu = $menu_num";
$rs = db_query($query);
while ($r = db_fetch_assoc($rs)) {
$LinkedMenus[] = $r['record_num'];
}
$LinkedItems = array();
$return_data['linked'] = "";
if (count($LinkedMenus)) {
$linkedMenus = implode(',',$LinkedMenus);
// Get set of linked items
$query = "SELECT record_num FROM hotlunch_menu_items WHERE school_num = $school_num AND source_item = $record_num AND menu_num IN ($linkedMenus)";
writeLog($query);
$rs = db_query($query);
while ($row = db_fetch_assoc($rs)) {
$LinkedItems[] = $row['record_num'];
}
$return_data['linked'] = $LinkedItems;
if ($field_type == 'numeric' || $field_type == 'decimal') {
$query = "UPDATE $table_name SET $field_name = $field_value WHERE school_num = $school_num AND source_item = $record_num AND menu_num IN ($linkedMenus)";
}
else {
$query = "UPDATE $table_name SET $field_name = '$field_value' WHERE school_num = $school_num AND source_item = $record_num AND menu_num IN ($linkedMenus)";
}
writeLog("query: $query");
db_query($query);
}
}
writeLog("new_value: ".$return_data['new_value']);
writeLog("new_value_text: ".$return_data['new_value_text']);
$return_data['rows_updated'] = db_affected_rows();
writeLog("completed");
$return_data["flag"] = $field_value;
echo(json_encode($return_data));
?>