Files
HotLunches/hotlunch.orderform.php
2026-10-19 15:22:52 -07:00

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'>&nbsp;&nbsp;$menu_title</div>");
echo("<div class='menu-date-div'>$menu_date&nbsp;&nbsp;</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");
}
?>