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

244 lines
7.7 KiB
PHP

<?php
$ValidAccess = 2010;
$sessionName = 'hotlunch';
session_name($sessionName);
session_start();
require_once("include/globals.php");
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();
$moduleName = "ajax.ScheduleCopy.php";
startLog($moduleName);
// CSRF token validation
include "include/ajax.csrfToken.php";
// Get parameters
$source_schedule_num = intval($_GET['source_schedule']);
$schedule_title = db_escape_string($_GET['schedule_title']);
$order_start = db_escape_string($_GET['order_start']);
$order_end = db_escape_string($_GET['order_end']);
$schedule_start = db_escape_string($_GET['schedule_start']);
writeLog("source_schedule_num: $source_schedule_num\n");
writeLog("schedule_title: $schedule_title\n");
writeLog("order_start: $order_start\n");
writeLog("order_end: $order_end\n");
writeLog("schedule_start: $schedule_start\n");
// Get source schedule
$query = "SELECT * FROM hotlunch_schedules WHERE record_num = $source_schedule_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$return_data['ajax_return_code'] = -1;
$return_data['ajax_message'] = getLanguageText('ERRORMSG-INVALID-SCHEDULE');
echo(json_encode($return_data));
exit;
}
$schedule = db_fetch_assoc($results);
$source_school_num = $schedule['school_num'];
$schedule_type = $schedule['schedule_type'];
$schedule_start_date = $schedule['schedule_start_date'];
$schedule_end_date = $schedule['schedule_end_date'];
$schedule_offset = strtotime("$schedule_start 12:00:00") - strtotime("$schedule_start_date 12:00:00");
$schedule['schedule_end_date'] = date("Y-m-d",strtotime("$schedule_end_date 12:00:00") + $schedule_offset);
// Get menu dates
switch ($schedule_type) {
case 'Hot Lunch':
case 'Date Sensitive':
$query = "SELECT * FROM hotlunch_menu_dates " .
"WHERE school_num = $source_school_num " .
"AND schedule_num = $source_schedule_num " .
"ORDER BY menu_date";
$DateSensitive = true;
break;
default:
$query = "SELECT * FROM hotlunch_menu_dates " .
"WHERE school_num = $source_school_num " .
"AND schedule_num = $source_schedule_num " .
"ORDER BY sequence";
$DateSensitive = false;
break;
}
$results = db_query($query);
if (db_num_rows($results) == 0) {
$return_data['ajax_return_code'] = -1;
$return_data['ajax_message'] = getLanguageText('ERRORMSG-INVALID-SCHEDULE');
echo(json_encode($return_data));
exit;
}
$menuDates = array();
while ($row = db_fetch_assoc($results)) {
$menuDates[] = $row;
}
// Check start date for date sensitive schedules
if ($DateSensitive) {
writeLog("Date Sensitive");
$first_menu_date = $menuDates[0]['menu_date'];
$swday = date("D",strtotime($first_menu_date));
$nwday = date("D",strtotime($schedule_start));
if ($swday != $nwday) {
$return_data['ajax_return_code'] = -1;
$return_data['ajax_message'] = getLanguageText('ERRORMSG-SCHEDULE-START-DATE-MISMATCH') . "<br />$swday -> $nwday";
echo(json_encode($return_data));
exit;
}
$offset = strtotime("$schedule_start 12:00:00") - strtotime("$first_menu_date 12:00:00");
for ($i = 0; $i < count($menuDates); $i++) {
$mdate = $menuDates[$i]['menu_date'];
$newdate = date("Y-m-d",strtotime($mdate) + $offset);
$menuDates[$i]['menu_date'] = $newdate;
}
}
$schedulesTable = new Table("hotlunch_schedules");
$schedule['school_num'] = $school_num;
$schedule['schedule_name'] = $schedule_title;
$schedule['sequence'] = intval(db_getVal("SELECT max(sequence) FROM hotlunch_schedules WHERE school_num = $school_num")) + 1;
$schedule['start_order_datetime'] = $order_start;
$schedule['end_order_datetime'] = $order_end;
$schedule['schedule_start_date'] = $schedule_start;
$query = $schedulesTable->BuildInsert($schedule);
db_query($query);
$newSchedule = db_insert_id();
$menudatesTable = new Table("hotlunch_menu_dates");
$menuitemsTable = new Table("hotlunch_menu_items");
$menuproductsTable = new Table("hotlunch_menu_products");
$scheduleclassesTable = new Table("hotlunch_schedules_classes");
$menudatesclassesTable = new Table("hotlunch_menu_dates_classes");
$menuitemsclassesTable = new Table("hotlunch_menu_items_classes");
// Copy each menu date to new schedule
for ($i = 0; $i < count($menuDates); $i++) {
$entry = $menuDates[$i];
$entry['school_num'] = $school_num;
$entry['schedule_num'] = $newSchedule;
$source_menu_num = $entry['record_num'];
$query = $menudatesTable->BuildInsert($entry);
db_query($query);
$newMenu = db_insert_id();
// Get and copy menu items to new menu date
$query = "SELECT * FROM hotlunch_menu_items WHERE school_num = $source_school_num AND menu_num = $source_menu_num";
$items = db_query($query);
while ($row = db_fetch_assoc($items)) {
$source_item_num = $row['record_num'];
$row['school_num'] = $school_num;
$row['menu_num'] = $newMenu;
$query = $menuitemsTable->BuildInsert($row);
db_query($query);
$newItem = db_insert_id();
// Get and copy menu products to new menu item
$query = "SELECT * FROM hotlunch_menu_products WHERE school_num = $source_school_num AND menu_item_num = $source_item_num";
$products = db_query($query);
while ($row = db_fetch_assoc($products)) {
$row['school_num'] = $school_num;
$row['menu_item_num'] = $newItem;
$query = $menuproductsTable->BuildInsert($row);
db_query($query);
}
// Process any menu_items_classes
if ($school_num == $source_school) {
$query = "SELECT * FROM hotlunch_menu_items_classes " .
"WHERE school_num = $source_school_num " .
"AND schedule_num = $source_schedule_num " .
"AND menu_num = $source_menu_num " .
"AND menu_item_num = $source_item_num";
$results = db_query($query);
while ($row = db_fetch_assoc($results)) {
$row['school_num'] = $school_num;
$row['schedule_num'] = $newSchedule;
$row['menu_num'] = $newMenu;
$row['menu_item_num'] = $newItem;
$query = $menuitemsclassesTable->BuildInsert($row);
db_query($query);
}
}
}
// Process any menu_dates_classes entries
if ($school_num == $source_school) {
$query = "SELECT * FROM hotlunch_menu_dates_classes " .
"WHERE school_num = $source_school_num " .
"AND schedule_num = $source_schedule_num " .
"AND menu_num = $source_menu_num";
$results = db_query($query);
while ($row = db_fetch_assoc($results)) {
$row['school_num'] = $school_num;
$row['schedule_num'] = $newSchedule;
$row['menu_num'] = $newMenu;
$query = $menudatesclassesTable->BuildInsert($row);
db_query($query);
}
}
}
// Process any schedules_classes entries
if ($school_num == $source_school) {
$query = "SELECT * FROM hotlunch_schedules_classes " .
"WHERE school_num = $source_school_num " .
"AND schedule_num = $source_schedule_num";
$results = db_query($query);
while ($row = db_fetch_assoc($results)) {
$row['school_num'] = $school_num;
$row['schedule_num'] = $newSchedule;
$query = $scheduleclassesTable->BuildInsert($row);
db_query($query);
}
}
$return_data['ajax_return_code'] = 0;
$return_data['ajax_message'] = "";
$return_data['schedule_num'] = $newSchedule;
echo(json_encode($return_data));
?>