244 lines
7.7 KiB
PHP
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));
|
|
|
|
?>
|