359 lines
12 KiB
PHP
359 lines
12 KiB
PHP
<?php
|
|
|
|
$CurrentScheduleRecord = array();
|
|
$CurrentScheduleMenus = array();
|
|
$CurrentScheduleMenuItems = array();
|
|
|
|
$OrderingCutOffTime = date("Y-m-d H:i:s",time());
|
|
$CurrentMenuActive = 'Y';
|
|
$menu_price_category = 'Regular';
|
|
|
|
|
|
function buildOrderForm($schedule_num, $source, $ordered_by_num, $order_num) {
|
|
|
|
global $school_num, $school_record, $CurrentScheduleRecord;
|
|
|
|
$ret = initializeOrderForm($schedule_num);
|
|
|
|
switch ($ret) {
|
|
case -1:
|
|
header("Location: /?error_message=".urlencode(getLanguageText('ERRORMSG-INVALID-SCHEDULE-NUM')));
|
|
return;
|
|
break;
|
|
|
|
case -2:
|
|
header("Location: /?error_message=".urlencode(getLanguageText('ERRORMSG-NO-MENU-DATES')));
|
|
return;
|
|
break;
|
|
|
|
case -3:
|
|
header("Location: /?error_message=".urlencode(getLanguageText('ERRORMSG-NO-MENU-ITEMS')));
|
|
return;
|
|
break;
|
|
|
|
case 0:
|
|
break;
|
|
}
|
|
|
|
if ($ordered_by_num == 0) buildStudentFields();
|
|
|
|
echo("<div class='order-form-div'>");
|
|
buildOrderMenus($schedule_num, $source, $ordered_by_num, $order_num);
|
|
echo("</div>");
|
|
}
|
|
|
|
|
|
function initializeOrderForm($schedule_num) {
|
|
|
|
global $school_num, $school_record, $CurrentScheduleRecord, $OrderingCutOffTime;
|
|
|
|
if (!isset($schedule_num) || intval($schedule_num) == 0) {
|
|
return(-1);
|
|
}
|
|
|
|
$schedule_num = intval($schedule_num);
|
|
|
|
|
|
// Validate the schedule
|
|
$query = "SELECT * FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $schedule_num";
|
|
writeLog($query);
|
|
$results = db_query($query);
|
|
|
|
if (db_num_rows($results) != 1) {
|
|
return(-1);
|
|
}
|
|
|
|
$schedule_record = db_fetch_assoc($results);
|
|
$CurrentScheduleRecord = $schedule_record;
|
|
writeLog("Current Schedule: ".$CurrentScheduleRecord['schedule_name']);
|
|
|
|
|
|
// Check for menu dates in the schedule
|
|
$numMenus = db_getVal("SELECT count(*) FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num");
|
|
if ($numMenus == 0) return(-2);
|
|
|
|
|
|
// Check for menu items in the schedule
|
|
$query = "SELECT count(*) FROM hotlunch_menu_items " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND menu_num IN (SELECT record_num FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num)";
|
|
$numItems = db_getVal($query);
|
|
if ($numItems == 0) return(-3);
|
|
|
|
|
|
// Check if access to schedule is permitted
|
|
if (($_SESSION['UserInfo']['type'] == 'Parent' || $_SESSION['UserInfo']['type'] == 'Staff')) {
|
|
$ret = checkScheduleAccess($schedule_num, $ordered_by_num);
|
|
if ($ret != 1) return($ret);
|
|
}
|
|
|
|
|
|
// Determine ordering cutoff date
|
|
$today = date("Y-m-d",time());
|
|
$schedule_type = $schedule_record['schedule_type'];
|
|
writeLog("schedule_type: $schedule_type");
|
|
|
|
// Get first menu date
|
|
if ($schedule_type == 'Hot Lunch' || $schedule_type == 'Date Sensitive') {
|
|
$query = "SELECT min(menu_date) FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num AND menu_type = 'Regular'";
|
|
$first_menu_date = db_getVal($query);
|
|
|
|
$days_prior = $schedule_record['days_prior_to_order_date'];
|
|
if ($days_prior == 0 && date("H",time()) >= $schedule_record['order_until_hour']) $days_prior = 1;
|
|
$menu_date_cutoff = date("Y-m-d",time() + $days_prior * 60 * 60 * 24 - 60);
|
|
if ($schedule_record['end_order_datetime'] < $first_menu_date) $menu_date_cutoff = $today;
|
|
if ($schedule_record['menu_cutoff_date'] > $today) $menu_date_cutoff = $schedule_record['menu_cutoff_date'];
|
|
|
|
$CurrentScheduleRecord['schedule_type_flag'] = 'Date Sensitive';
|
|
}
|
|
else {
|
|
$menu_date_cutoff = date("Y-m-d H:i:s",time() + 24 * 60 * 60);
|
|
|
|
$CurrentScheduleRecord['schedule_type_flag'] = 'Not Date Sensitive';
|
|
}
|
|
|
|
$OrderingCutOffTime = $menu_date_cutoff;
|
|
writeLog("OrderingCutOffTime: $OrderingCutOffTime");
|
|
}
|
|
|
|
|
|
function buildStudentFields() {
|
|
return;
|
|
}
|
|
|
|
|
|
function buildOrderMenus($schedule_num, $source, $ordered_by_num, $order_num) {
|
|
|
|
global $school_num, $school_record, $CurrentScheduleRecord, $OrderingCutOffTime, $CurrentMenuActive;
|
|
|
|
if (!isset($schedule_num) || intval($schedule_num) == 0) {
|
|
return(-1);
|
|
}
|
|
|
|
$schedule_num = intval($schedule_num);
|
|
$schedule_record = $CurrentScheduleRecord;
|
|
$dateNow = date("Y-m-d H:i:00",time());
|
|
|
|
$query = "SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num";
|
|
writeLog($query);
|
|
$menuDates = db_query($query);
|
|
|
|
if (db_num_rows($menuDates) == 0) return(-1);
|
|
|
|
while ($mdate = db_fetch_assoc($menuDates)) {
|
|
$CurrentScheduleMenus[] = $mdate;
|
|
$menu_num = $mdate['record_num'];
|
|
$menu_title = $mdate['menu_title'];
|
|
$menu_date = $mdate['menu_date'];
|
|
|
|
$tclass = 'menudate-header';
|
|
|
|
if (($_SESSION['UserInfo']['type'] == 'Parent' || $_SESSION['UserInfo']['type'] == 'Staff')) {
|
|
$ret = checkMenuAccess($menu_num, $ordered_by_num);
|
|
if ($ret != 1) continue;
|
|
}
|
|
|
|
$menuDateActive = "Y";
|
|
$menu_available = $mdate['available'];
|
|
if ($CurrentScheduleRecord['schedule_type_flag'] == 'Date Sensitive') {
|
|
if ($mdate['menu_date'] < $OrderingCutOffTime) $menuDateActive = 'N';
|
|
if ($schedule_record['custom_menu_end_dates'] == 'Y' && $mdate['menu_end_order_datetime'] < $dateNow) $menuDateActive = 'N';
|
|
|
|
if ($menuDateActive == 'N' || $menu_available == 'N') {
|
|
$tclass = 'menudate-past';
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent' || $_SESSION['UserInfo']['type'] == 'Staff' || $_SESSION['UserInfo']['type'] == 'Guest') {
|
|
$menu_title .= " - " . getLanguageText('TEXT-NOT-AVAILABLE-AT-THIS-TIME');
|
|
//MWFMWF if ($hide_unavailable_dates == 'Y') $rowStyle = " style='display: none;'";
|
|
}
|
|
}
|
|
}
|
|
|
|
$menu_date = "";
|
|
writeLog("menuDateActive: $menuDateActive");
|
|
if ($schedule_record['display_menu_date'] == 'Y' && $mdate['menu_type'] != 'Footer') {
|
|
$menu_date = date("l F jS, Y",strtotime($mdate['menu_date']));
|
|
writeLog("menu_date: $menu_date");
|
|
}
|
|
|
|
$CurrentMenuActive = $menuDateActive;
|
|
|
|
if ($CurrentScheduleRecord['schedule_type_flag'] == 'Date Sensitive')
|
|
writeLog(" - Menu: $menu_title - $menu_date ($menu_num)");
|
|
else
|
|
writeLog(" - Menu: $menu_title ($menu_num)");
|
|
|
|
|
|
displayMenuTitle($menu_title, $menu_num, $menu_date, $tclass);
|
|
|
|
buildMenu($schedule_num, $source, $menu_num, $menuDateActive, $tclass);
|
|
}
|
|
}
|
|
|
|
|
|
function checkScheduleAccess($schedule_num, $ordered_by_num) {
|
|
return(1);
|
|
}
|
|
|
|
|
|
function checkMenuAccess($menu_num, $ordered_by_num) {
|
|
return(1);
|
|
}
|
|
|
|
|
|
function displayMenuTitle($menu_title, $menu_num, $menu_date, $tclass) {
|
|
|
|
global $school_num, $school_record, $CurrentScheduleRecord, $OrderingCutOffTime, $CurrentMenuActive;
|
|
|
|
$tableClass = "menu-active-$CurrentMenuActive";
|
|
|
|
echo("<table width='95%' menu_num='$menu_num' visible='$CurrentMenuActive' class='menu-title-table $tableClass'>\n");
|
|
echo("<tr>\n");
|
|
echo("<td class='menu-header-div $tclass'>");
|
|
echo("<div class='menu-title-div'> $menu_title</div>");
|
|
echo("<div class='menu-date-div'>$menu_date </div>");
|
|
echo("</td>");
|
|
echo("</tr>\n");
|
|
echo("</table>\n");
|
|
}
|
|
|
|
|
|
function buildMenu($schedule_num, $source, $menu_num, $menuDateActive, $tclass) {
|
|
|
|
global $school_num, $school_record, $CurrentScheduleRecord, $OrderingCutOffTime;
|
|
|
|
if (!isset($schedule_num) || intval($schedule_num) == 0) {
|
|
return(-1);
|
|
}
|
|
|
|
$schedule_num = intval($schedule_num);
|
|
$menu_num = intval($menu_num);
|
|
|
|
$query = "SELECT * FROM hotlunch_menu_items " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND menu_num = $menu_num " .
|
|
"AND active != 'N' " .
|
|
"ORDER BY sequence";
|
|
writeLog($query);
|
|
$menuItems = db_query($query);
|
|
|
|
echo("<div id='menu-div-$menu_num' class='menu-div-active-$menuDateActive'>\n");
|
|
|
|
while ($row = db_fetch_assoc($menuItems)) {
|
|
$item_type = $row['item_type'];
|
|
$item_type = $row['item_type'];
|
|
|
|
switch ($item_type) {
|
|
case 'Item':
|
|
displayMenuItem($schedule_num, $source, $menu_num, $row, $menuDateActive, $tclass);
|
|
break;
|
|
|
|
case 'Heading':
|
|
displayMenuHeading($schedule_num, $source, $menu_num, $row, $menuDateActive, $tclass);
|
|
break;
|
|
}
|
|
}
|
|
|
|
echo("</div>");
|
|
}
|
|
|
|
|
|
function displayMenuHeading($schedule_num, $source, $menu_num, $row, $menuDateActive, $tclass) {
|
|
|
|
global $school_num, $school_record, $CurrentScheduleRecord, $OrderingCutOffTime, $CurrentMenuActive;
|
|
|
|
extract($row);
|
|
|
|
$tableClass = "menu-active-$CurrentMenuActive";
|
|
|
|
echo("<table menu_num='$menu_num' class='menu-heading-table $tableClass'>\n");
|
|
echo("<tr class='menu-subheading'>\n");
|
|
echo("<td class='menudate-subheader'>");
|
|
echo("$item_title");
|
|
echo("</td>");
|
|
echo("</tr>\n");
|
|
echo("</table>\n");
|
|
}
|
|
|
|
|
|
function displayMenuItem($schedule_num, $source, $menu_num, $row, $menuDateActive, $tclass) {
|
|
|
|
global $school_num, $school_record, $CurrentScheduleRecord, $OrderingCutOffTime, $CurrentMenuActive, $menu_price_category, $currencySymbol;
|
|
|
|
extract($row);
|
|
|
|
$tableClass = "menu-active-$CurrentMenuActive";
|
|
if (!isset($currencySymbol)) $currencySymbol = $school_record['currency_symbol'];
|
|
|
|
$display_price = $CurrentScheduleRecord['display_item_price'];
|
|
$display_price = $CurrentScheduleRecord['schedule_prices'];
|
|
writeLog("display_price: $display_price");
|
|
|
|
$item_price = "";
|
|
$itemPrice = 0;
|
|
$alt_flag = "alt-prices='N'";
|
|
|
|
if ($display_price == 'Y') {
|
|
switch ($source) {
|
|
case 'On-Line':
|
|
$itemPrice = $online_price;
|
|
$item_price = $currencySymbol . number_format($itemPrice,2);
|
|
|
|
$multiple = false;
|
|
if ($school_record['implement_multiple_item_prices'] == 'Y') {
|
|
if ($number_of_alternate_prices > 0 && $menu_price_category == 'Regular') {
|
|
$multiple = true;
|
|
$alt_flag = "alt-prices='Y'";
|
|
|
|
$item_price_d = "<select name='alt_prices_$record_num' id='alt_prices_$record_num' menu_item='$record_num' class='alternate-prices'>";
|
|
$item_price_d .= "<option value='$itemPrice'>$item_price</option>";
|
|
for ($n = 1; $n <= $number_of_alternate_prices; $n++) {
|
|
$fname = "alternate_price$n";
|
|
$alt_price = $$fname;
|
|
$item_price_d .= "<option value='$alt_price'>$currencySymbol$alt_price</option>";
|
|
}
|
|
$item_price_d .= "</select>";
|
|
$item_price = $item_price_d;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'Paper':
|
|
$itemPrice = $offline_price;
|
|
$item_price = $currencySymbol . number_format($itemPrice,2);
|
|
break;
|
|
}
|
|
}
|
|
|
|
$qtyfield = "<input type='text' name='qty-$record_num' id='qty-$record_num' class='item-qty' menu_num='$menu_num' menu_item='$record_num' size='2' " .
|
|
"style='width: 40px;' value=''>";
|
|
|
|
$pricefield = "<input type='hidden' id='price-$record_num' value='$itemPrice' $alt_flag>";
|
|
|
|
$extendedpricefield = "<span name='extended-price-$record_num' id='extended-price-$record_num' menu_num='$menu_num' " .
|
|
"style='width: 200px; border: none; text-align: right;'>";
|
|
|
|
echo("<table class='menu-item-table $tableClass'>\n");
|
|
echo("<tr>\n");
|
|
echo("<td class='menu-item-td'>");
|
|
echo("<div menu_item='$record_num' class='item-qty-decrease'><img src='images/icons/subtract16.png' width='16' height='16' hspace='5'></div>");
|
|
echo("<div menu_item='$record_num' class='menu-item-title-div'><b>$item_title</b></div>");
|
|
echo("<div class='menu-item-price-div'>$item_price</div>");
|
|
echo("<div class='menu-item-qty-div'>$qtyfield</div>");
|
|
echo("<div class='menu-item-extended-price-div'>$extendedpricefield</div>");
|
|
echo("<div menu_item='$record_num' class='item-qty-increase'><img src='images/icons/add16.png' width='16' height='16' hspace='5'></div>");
|
|
|
|
if (strlen($item_description)) {
|
|
echo("<br>\n");
|
|
echo("<div menu_item='$record_num' class='item-qty-increase item-description-div'>- $item_description</div>\n");
|
|
}
|
|
|
|
echo($pricefield);
|
|
|
|
echo("</td>");
|
|
echo("</tr>\n");
|
|
echo("</table>\n");
|
|
}
|
|
|
|
|
|
?>
|