184 lines
5.8 KiB
PHP
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));
|
|
?>
|