$edit_icon_small"; $commands[] = "$delete_icon_small"; // // Get data based on $action value // switch ($action) { case 'generic-table-list': // startLog("generic-table-list"); if (array_key_exists('table_name', $_GET)) $TableName = $_GET['table_name']; if (array_key_exists('actual_table_name', $_GET)) $ActualTableName = $_GET['actual_table_name']; if (array_key_exists('action-name', $_GET)) $action_name = db_escape_string($_GET['action-name']); if (!isset($TableName)) logExit("$TableName is not set"); if (isset($TableName)) writeLog("TableName: $TableName"); if (isset($action_name)) { writeLog("action_name: $action_name"); $query = "SELECT * FROM _form_actions WHERE action_name = '$action_name'"; writeLog($query); $results = db_query($query); $ActionRecord = db_fetch_assoc($results); } // // Setup lookup arrays for foreign key fields // // Get classes lookup array $query = "select * from classes where school_num = $school_num order by sequence"; $results = db_query($query); $ClassesLookup = array(0 => ''); while ($row = db_fetch_array($results)) { $rnum = $row['record_num']; $class = getClassInfo($rnum, 'label'); $ClassesLookup[$rnum] = $class; } // Get staff categories lookup array $query = "select * from staff_categories where school_num = $school_num order by sequence"; $scategories = db_query($query); $StaffCategoriesLookup = array(); while ($row = db_fetch_array($scategories)) { $title = $row['category_title']; $rnum = $row['record_num']; $StaffCategoriesLookup[$rnum] = $title; } // Get staff user accounts lookup array $query = "select * from users where school_num = $school_num and type = 'Staff' order by last_name, first_name"; $susers = db_query($query); $StaffUsersLookup = array(); while ($row = db_fetch_array($susers)) { $title = $row['userid']; $rnum = $row['record_num']; $StaffUsersLookup[$rnum] = $title; } // Get class programs $query = "select * from class_programs where school_num = $school_num order by sequence"; $programs = db_query($query); $ClassProgramsLookup = array(); while ($row = db_fetch_array($programs)) { $title = $row['program_name']; $rnum = $row['record_num']; $ClassProgramsLookup[$rnum] = $title; } $LookupArrays = array('staff_category' => $StaffCategoriesLookup, 'class_num' => $ClassesLookup, 'class_program' => $ClassProgramsLookup, 'user_num' => $StaffUsersLookup, ); unset($query); $commands = array(); $commands[] = "$edit_icon_small"; $commands[] = "$delete_icon_small"; $orderBy = "1"; writeLog("Generic: $TableName"); switch ($TableName) { case 'form-actions': $columnFields = array('action_name', 'action_table_name', 'action_table_load_name', 'action_sortable_flag', 'action_searchable_flag', 'action_default_commands_flag'); $columnHeaders = array('Action Name', 'DB Table', 'DataTable Name', 'Sortable', 'Seach Field', 'Default Commands'); $columnAlign = array('left', 'left', 'left', 'center', 'center', 'center'); $cwhere = ""; $orderBy = "action_name"; $commands[] = "$file_icon_small"; $commands[] = "$users_icon_small"; $commands[] = "$web_icon_small"; $query = "SELECT * FROM _form_actions ORDER BY action_name"; break; case 'form-fields': if (array_key_exists('current_form_action', $_GET)) $action_name = db_escape_string($_GET['current_form_action']); if (!isset($action_name)) { logExit("action_name is not set"); } // Validate the sction_name $query = "SELECT * FROM _form_actions WHERE action_name = '$action_name'"; writeLog($query); $action_record = db_getVal($query); if (!is_array($action_record)) { logExit("action_name is invalid: $action_name"); } $query = "SELECT count(*) FROM _form_fields WHERE action_name = '$action_name'"; $num = db_getVal($query); writeLog("Num Fields Found: $num"); if ($num == 0) { writeLog("action_table_name: ".$action_record['action_table_name']); $table = new Table($action_record['action_table_name']); $form_fields = new Table('_form_fields'); for ($i = 0; $i < count($table->column_names); $i++) { $fname = $table->column_names[$i]; $ftype = $table->column_types[$i]; $fvalues = $table->column_values[$i]; $fdefault = $table->column_defaults[$i]; $flength = 0; if ($fname == 'school_num') continue; if ($fname == 'record_num') continue; switch ($ftype) { case 'text': $ftype = 'textbox'; $flength = 60; break; case 'varchar': case 'int': case 'smallint': case 'decimal': $ftype = 'text'; $flength = 20; break; case 'enum': $ftype = 'select'; if ($fvalues == "'Y','N'") $fvalues = 'YN'; break; } if ($fname == 'sequence') $ftype = 'hidden'; $entry = array(); $entry['action_name'] = $action_name; $entry['action_fields_column_name'] = $fname; $entry['action_fields_screen_field_type'] = $ftype; $entry['action_fields_field_prompt'] = "TEXT-".strtoupper(str_replace('_','-',$fname)); $entry['action_fields_text_length'] = $flength; $entry['action_fields_insert_active_flag'] = 'Y'; $entry['action_fields_update_active_flag'] = 'Y'; $entry['action_fields_required_field_flag'] = 'N'; $entry['action_fields_default_field_value'] = $fdefault; $entry['action_fields_select_options'] = $fvalues; $entry['action_fields_report_alignment'] = 'left'; $entry['sequence'] = $i; $query = $form_fields->BuildInsert($entry); db_query($query); } } $columnFields = array('action_fields_column_name','action_fields_screen_field_type','action_fields_report_sequence', 'action_fields_insert_active_flag','action_fields_update_active_flag','action_fields_required_field_flag'); $columnHeaders = array('Column Name','Type','Report','Insert Active','Update Active','Required'); $columnAlign = array('left','left','center','center','center','center'); $cwhere = ""; $orderBy = "sequence, action_name"; // $commands[] = "$file_icon_small"; $query = "SELECT * FROM _form_fields WHERE action_name = '$action_name' ORDER BY sequence, action_name, action_fields_column_name"; break; case 'form-permissions': if (array_key_exists('current_form_action', $_GET)) $action_name = db_escape_string($_GET['current_form_action']); $query = "SELECT * FROM _form_permission WHERE action_name = '$action_name' ORDER BY record_num"; writeLog($query); $results = db_query($query); if (db_num_rows($results) == 0) { $table = new Table('_form_permission'); $options = GetFileListArray("user_types.txt", "", ""); $entry = array(); $entry['action_name'] = $action_name; foreach ($options AS $value => $option) { $utype = $option; $entry['action_permission_user_type'] = $utype; $entry['action_permission_allowed'] = 'N'; switch ($utype) { case 'System Administrator': case 'Application Administrator': $entry['action_permission_allowed'] = 'Y'; break; } $query = $table->BuildInsert($entry); writeLog($query); db_query($query); } $query = "SELECT * FROM _form_permission WHERE action_name = '$action_name' ORDER BY record_num"; writeLog($query); $results = db_query($query); } $columnFields = array('action_name','action_permission_user_type','action_permission_allowed'); $columnHeaders = array('Action Name','User Type','Access Allowed'); $columnAlign = array('left','left','center'); $data = array(); while ($row = db_fetch_assoc($results)) { $entry = array(); $entry[] = $row['action_name']; $entry[] = $row['action_permission_user_type']; $entry[] = $row['action_permission_allowed']; $entry['record_num'] = $row['record_num']; $data[] = $entry; } $action = ''; $totals = array(); $return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals); echo(json_encode($return_data)); exit; break; case 'staff-people': $columnFields = array('first_name','last_name','user_num','staff_category','class_num'); $columnHeaders = array(getLanguageText('TEXT-FIRST-NAME'), getLanguageText('TEXT-LAST-NAME'), getLanguageText('TEXT-USER-ID'), getLanguageText('TEXT-CATEGORY'), $GlobalText['Class'], ); $columnAlign = array('left','left','left','left','center'); if ($school_record['special_item_prices'] != 'N') { $columnFields[] = 'menu_price_category'; $columnHeaders[] = getLanguageText('TEXT-MENU-PRICE-CATEGORY'); $columnAlign[] = 'center'; } if ($school_record['implement_multiple_item_prices'] != 'N') { $columnFields[] = 'access_to_multiple_item_prices'; $columnHeaders[] = getLanguageText('TEXT-ACCESS-TO-FLEX-PRICES'); $columnAlign[] = 'center'; } $cwhere = " AND people_type = 'Staff' "; $orderBy = "last_name,first_name"; if (array_key_exists('sort-field', $_GET)) $orderBy = db_escape_string($_GET['sort-field']); if (array_key_exists('sort-order', $_GET)) $orderBy .= ' '.db_escape_string($_GET['sort-order']); unset($query); break; case 'classes': $columnFields = array(); $columnHeaders = array(); $columnAlign = array(); if ($school_record['p_display_division'] != 'N' || $school_record['i_display_division'] != 'N') { $columnFields[] = 'division'; $columnHeaders[] = $school_record['division_class_num_text']; $columnAlign[] = 'center'; } if ($school_record['p_display_grade'] != 'N' || $school_record['i_display_grade'] != 'N') { $columnFields[] = 'grade'; $columnHeaders[] = getLanguageText('TEXT-GRADE'); $columnAlign[] = 'center'; } if ($school_record['p_display_program'] != 'N' || $school_record['i_display_program'] != 'N') { $columnFields[] = 'class_program'; $columnHeaders[] = getLanguageText('TEXT-PROGRAM'); $columnAlign[] = 'center'; } $columnFields[] = 'description'; $columnHeaders[] = getLanguageText('TEXT-DESCRIPTION'); $columnAlign[] = 'left'; $columnFields[] = 'label_description'; $columnHeaders[] = getLanguageText('TEXT-LABEL-DESCRIPTION'); $columnAlign[] = 'left'; $columnFields[] = 'default_price_category'; $columnHeaders[] = getLanguageText('TEXT-DEFAULT-PRICE-CATEGORY'); $columnAlign[] = 'center'; for ($i = 0; $i < count($columnFields); $i++) { $fname = $columnFields[$i]; writeLog($fname); } $orderBy = "sequence"; $cwhere = ""; if (array_key_exists('custom-where', $_GET)) $cwhere .= $_GET['custom-where']; writeLog("cwhere: $cwhere"); if (array_key_exists('cwhere', $_GET)) $cwhere .= $_GET['cwhere']; writeLog("cwhere: $cwhere"); unset($query); break; default: if (array_key_exists('action-name', $_GET)) $action_name = db_escape_string($_GET['action-name']); $query = "SELECT * FROM _form_fields " . "WHERE action_name = '$action_name' " . "AND action_fields_report_sequence > 0 " . "ORDER BY action_fields_report_sequence, sequence"; $results = db_query($query); if (db_num_rows($results) == 0) { $return_data['content'] = "No Report Fields Defined for : $action_name"; echo(json_encode($return_data)); exit; } $columnFields = array(); $columnTypes = array(); $columnHeaders = array(); $columnAlign = array(); unset($orderBy); while ($row = db_fetch_assoc($results)) { $fname = $row['action_fields_column_name']; $skip = false; switch ($fname) { case 'menu_price_category': if ($school_record['special_item_prices'] == 'N') $skip = true; break; } if ($skip) continue; writeLog("school_record['special_item_prices']: ".$school_record['special_item_prices']); writeLog("Default: $fname"); $columnFields[] = $fname; $columnTypes[] = $row['action_fields_screen_field_type']; $columnAlign[] = $row['action_fields_report_alignment']; $header = $row['action_fields_field_prompt']; if (strpos($header, 'TEXT-') === 0) $header = getLanguageText($header); if (strpos($header, 'GlobalText.') === 0) { $pindex = str_replace('GlobalText.','',$header); $header = $GlobalText[$pindex]; } $columnHeaders[] = $header; if (!isset($orderBy)) $orderBy = $row['action_fields_column_name']; } writeLog("ActionRecord['action_sort_fields']: ".$ActionRecord['action_sort_fields']); if (strlen($ActionRecord['action_sort_fields'])) $orderBy = $ActionRecord['action_sort_fields']; if (array_key_exists('sort-field', $_GET)) $orderBy = db_escape_string($_GET['sort-field']); if (array_key_exists('sort-order', $_GET)) $orderBy .= ' '.db_escape_string($_GET['sort-order']); if ($sequence_flag == 'Y') $orderBy = "sequence"; $cwhere = ""; if (array_key_exists('custom-where', $_GET)) $cwhere .= $_GET['custom-where']; writeLog("cwhere: $cwhere"); if (array_key_exists('cwhere', $_GET)) $cwhere .= $_GET['cwhere']; writeLog("cwhere: $cwhere"); $cwhere = str_ireplace('where','',$cwhere); $cwhere = str_ireplace(';','',$cwhere); writeLog("cwhere: $cwhere"); unset($query); break; } if (!isset($ActualTableName)) $ActualTableName = $TableName; if (!isset($cwhere)) $cwhere = ""; if (!isset($query)) { $table = new Table($ActualTableName); writeLog("orderBy: $orderBy"); if ($table->school_num_flag == 'Y') $query = "SELECT * FROM $ActualTableName WHERE school_num = $school_num $cwhere ORDER BY $orderBy"; else $query = "SELECT * FROM $ActualTableName WHERE 1 = 1 $cwhere ORDER BY $orderBy"; } writeLog("$TableName query: $query"); $results = db_query($query); $return_data['num_records'] = db_num_rows($results); if ($return_data['num_records'] > 0) { $data = array(); while ($row = db_fetch_assoc($results)) { $entry = array(); for ($i = 0; $i < count($columnFields); $i++) { $fname = $columnFields[$i]; $ftype = $columnTypes[$i]; if (! array_key_exists($fname, $row)) { writeLog("fname error: $ActualTableName - $fname"); continue; } $fdata = $row[$fname]; if (isset($LookupArrays) && array_key_exists($fname, $LookupArrays)) { if (array_key_exists($fdata, $LookupArrays[$fname])) $fdata = $LookupArrays[$fname][$fdata]; else $fdata = ""; } if (strlen($fdata) && $ftype == 'money') { $fdata = '$'.number_format(floatval($fdata), 2); } if ($i == 0 && array_key_exists('record_num',$row)) { $rnum = $row['record_num']; $fdata = "$fdata"; } $entry[] = $fdata; } if (array_key_exists('record_num',$row)) $entry['record_num'] = $row['record_num']; $data[] = $entry; } $action = ''; if (!isset($totals)) $totals = array(); $return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals); } else { writeLog("No Records"); $return_data['content'] = "

--- ".getLanguageText('ERRORMSG-NO-RECORDS')." ---

"; echo(json_encode($return_data)); exit; } // writeLog($return_data['content']); writeLog("end of generic-table-list"); break; case 'polls': // Setup format $columnHeaders = array(getLanguageText('TEXT-TITLE'), getLanguageText('TEXT-QUESTIONS'), getLanguageText('TEXT-ANSWERS'), ); $columnAlign = array('left','center','center'); // Get records to display $query = "SELECT * FROM polls WHERE school_num = $school_num ORDER BY sequence"; writeLog("query: $query\n"); $results = db_query($query); if (db_num_rows($results)) { $data = array(); while ($row = db_fetch_assoc($results)) { extract($row); if (strlen(trim($description))) $description = "
".trim($description).""; $numQuestions = db_getVal("SELECT count(*) FROM poll_questions WHERE school_num = $school_num AND poll_num = $record_num"); $numAnswers = db_getVal("SELECT count(distinct user_num) FROM poll_answers WHERE school_num = $school_num AND poll_num = $record_num"); // Format for admin display $data[] = array("$poll_title$description", "$numQuestions", "$numAnswers", "record_num" => $record_num,"delete_flag" => 'Y'); } $commands = array(); $commands[] = "$edit_icon_small"; $commands[] = "$delete_icon_small"; $commands[] = "$view_icon_small"; if (isset($table_id) && strlen($table_id)) $customTableID = $table_id; $return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals); } else { $return_data['content'] = "

--- ".getLanguageText('ERRORMSG-NO-RECORDS')." ---

"; } break; case 'student-categories': // Setup format $columnHeaders = array(getLanguageText('TEXT-CATEGORY'), getLanguageText('TEXT-NUMBER'), ); $columnAlign = array('left','center','center'); // Get records to display $query = "SELECT * FROM student_categories WHERE school_num = $school_num ORDER BY sequence"; writeLog("query: $query\n"); $results = db_query($query); if (db_num_rows($results)) { $data = array(); while ($row = db_fetch_assoc($results)) { extract($row); $delete_flag = 'Y'; $numEntries = db_getVal("SELECT count(*) FROM people_categories WHERE school_num = $school_num AND category_num = $record_num"); if ($numEntries) $delete_flag = 'N'; $data[] = array($category, $numEntries, "record_num" => $record_num,"delete_flag" => $delete_flag); } // Commands $commands = array(); $commands[] = "$edit_icon_small"; $commands[] = "$delete_icon_small"; $commands[] = "$view_icon_small"; if (isset($table_id) && strlen($table_id)) $customTableID = $table_id; $TableWidth = 450; $return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals); } else { $return_data['content'] = "

--- ".getLanguageText('ERRORMSG-NO-RECORDS')." ---

"; } break; case 'delivery-classes': // Setup format $columnHeaders = array(getLanguageText('TEXT-CLASS'), getLanguageText('TEXT-DELIVERY-GROUP'), ); $columnAlign = array('left','center','center'); // Get records to display $query = "SELECT * FROM classes WHERE school_num = $school_num ORDER BY sequence"; writeLog("query: $query\n"); $results = db_query($query); if (db_num_rows($results)) { $data = array(); // Get delivery groups $query = "SELECT * FROM delivery_groups WHERE school_num = $school_num ORDER BY sequence"; writeLog("query: $query\n"); $groups = db_query($query); if (db_num_rows($groups)) { $groupEntries = array(); while ($row = db_fetch_assoc($groups)) { $groupEntries[] = $row; } } else { $return_data['content'] = "

--- ".getLanguageText('TEXT-NO-DELIVERY-GROUPS-FOUND')." ---

"; return; } while ($row = db_fetch_assoc($results)) { extract($row); $classInfo = getClassInfo($record_num, 'internal'); $groupField = ""; $data[] = array($classInfo, $groupField); } // Commands $commands = array(); if (isset($table_id) && strlen($table_id)) $customTableID = $table_id; $TableWidth = 600; $return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals); } else { $return_data['content'] = "

--- ".getLanguageText('ERRORMSG-NO-RECORDS')." ---

"; } break; case 'category-people': // Get category number $cnum = intval($_GET['cnum']); // Setup format $columnHeaders = array(getLanguageText('TEXT-NAME'), ); $columnAlign = array('left','center','center'); // Get records to display $query = "SELECT p.* FROM people_categories AS pc, people AS p " . "WHERE pc.school_num = $school_num " . "AND p.school_num = $school_num " . "AND p.record_num = pc.people_num " . "AND pc.category_num = $cnum " . "ORDER BY last_name,first_name"; writeLog("query: $query\n"); $results = db_query($query); if (db_num_rows($results)) { $data = array(); while ($row = db_fetch_assoc($results)) { extract($row); $name = $first_name.' '.$last_name; $delete_flag = 'Y'; $data[] = array($name, "record_num" => $record_num); } // Commands $commands = array(); $commands[] = "$delete_icon_small"; if (isset($table_id) && strlen($table_id)) $customTableID = $table_id; $TableWidth = 450; $return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals); } else { $return_data['content'] = "

--- ".getLanguageText('ERRORMSG-NO-RECORDS')." ---

"; } break; case 'meal-locations': // Setup format $columnHeaders = array(getLanguageText('TEXT-ALTERNATE-LOCATION'), getLanguageText('TEXT-NUMBER'), ); $columnAlign = array('left','center','center'); // Get records to display $query = "SELECT * FROM meal_locations " . "WHERE school_num = $school_num " . "ORDER BY sequence"; writeLog("query: $query\n"); $results = db_query($query); if (db_num_rows($results)) { $data = array(); while ($row = db_fetch_assoc($results)) { extract($row); $delete_flag = 'Y'; $numPeople = db_getVal("SELECT count(*) FROM people WHERE meal_location = $record_num"); $data[] = array($location, $numPeople, "record_num" => $record_num); } if (isset($table_id) && strlen($table_id)) $customTableID = $table_id; $TableWidth = 450; $return_data['content'] = getDataCustom($data,$columnHeaders,$action,$commands,'N',$columnAlign,$totals); } else { $return_data['content'] = "

--- ".getLanguageText('ERRORMSG-NO-RECORDS')." ---

"; } break; case 'upcoming-demos': case 'recent-demos': // Get school demo info $today = date("Y-m-d 00:00:00",time()); $cutoff = date("Y-m-d 00:00:00",time() - 24 * 60 * 60 * 60); if ($action == 'upcoming-demos') $query = "SELECT * FROM schools WHERE demo_scheduled_date > '$today' ORDER BY demo_scheduled_date"; if ($action == 'recent-demos') $query = "SELECT * FROM schools WHERE demo_scheduled_date > '$cutoff' AND demo_scheduled_date <= '$today' ORDER BY demo_scheduled_date"; $return_data['content'] = "

[Upcoming] [Recent]

"; $results = db_query($query); writeLog("num rows: " . db_num_rows($results) . "\n"); if (db_num_rows($results) == 0) { $return_data['content'] .= "

--- No Demos Scheduled ---

"; writeLog($return_data['content'] . "\n"); } else { $return_data['content'] .= "

-- Hot Lunch Demos --

"; $return_data['content'] .= "
"; while ($row = db_fetch_assoc($results)) { extract($row); $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; } $return_data['content'] .= "
$school_name$demo_scheduled_date
"; $return_data['content'] .= "
"; } break; case 'schedule-info': // startLog("schedule-info"); $schedule_num = intval($_GET['schedule_num']); writeLog("schedule_num: $schedule_num"); if ($schedule_num == 0) { $return_data['content'] = ""; break; } $supplier_school_num = intval($school_record['supplier_school_num']); if ($supplier_school_num == 0) $supplier_school_num = $school_num; $query = "SELECT * FROM hotlunch_schedules WHERE school_num IN ($school_num, $supplier_school_num) AND record_num = $schedule_num"; $results = db_query($query); if (db_num_rows($results) == 0) { $return_data['content'] = getLanguageText('ERRORMSG-INVALID-SCHEDULE'); writeLog("Invalid Schedule"); break; } $schedule = db_fetch_assoc($results); extract($schedule); writeLog("schedule_name: $schedule_name"); $return_data['new_schedule'] = $schedule_name; $return_data['ordering_start'] = substr($start_order_datetime,0,16); $return_data['ordering_end'] = substr($end_order_datetime,0,16); $return_data['schedule_start'] = $schedule_start_date; $query = "SELECT count(*) FROM hotlunch_menu_dates WHERE school_num = $school_num AND schedule_num = $schedule_num"; writeLog($query); $numMenus = db_getVal($query); writeLog("numMenus: $numMenus"); $numItems = db_getVal("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)"); $startDate = date("l F d, Y",strtotime($schedule_start_date)); $content = "$schedule_name ($schedule_type)
" . getLanguageText('TEXT-MENUS') . ": $numMenus
" . getLanguageText('TEXT-MENU-ITEMS') . ": $numItems
" . getLanguageText('TEXT-SCHEDULE-START-DATE') . ": $startDate"; writeLog($content); $return_data['content'] = $content; break; case 'school-info': $school_num = intval($_GET['school_num']); // Get school info $query = "SELECT * FROM schools WHERE record_num = $school_num"; $results = db_query($query); $row = db_fetch_assoc($results); extract($row); date_default_timezone_set($timezone); $timeNow = date("Y-m-d H:i",time()); date_default_timezone_set("Canada/Pacific"); $sprices = ""; if (strlen($special_item_prices)) $sprices = " ($special_item_prices)"; $query = "SELECT last_login,userid FROM login_log WHERE school_num = $school_num ORDER BY last_login DESC LIMIT 0,1"; list($last_login,$userid) = db_getVal($query); // Adjust URL if required switch ($url) { case 'larondepac.ca': case 'aeslunchbox.com': case 'clesharks.ca': case 'ggpac.org': case 'stonecresthotlunch.ca': case 'sullivanpac.com': $url = "www.$url"; break; } $return_data['content'] = "$school_name ($school_num) " . "- [edit] " . "- [refresh] " . "- $url " . "- [Clean] $sprices
" . "$city, $province - $phone
" . "$principal - $principal_email
"; $return_data['content'] .= " - Status: $status
" . " - Support: $support_level
" . " - Configuration: $system_configuration
" . " - Small School Discount: $small_school_discount
" . " - Start Date: $start_date
" . " - Expiry Date: $expiry_date
" . " - Last Login: $last_login ($userid)
" . " - Timezone: $timezone
" . " - Time Now: $timeNow
" . " - Access Code: $system_access_code
" . " - Reseller Code: $reseller
" . " - Reminder Day: $email_reminder_day ($email_reminder_weeks)
"; if ($paypal_enabled == 'Y') { $return_data['content'] .= " - PayPal Code: $paypal_code
\n"; $return_data['content'] .= " - PayPal Verified: $paypal_verified
\n"; } if ($bambora_enabled == 'Y') { $return_data['content'] .= " - Bambora MID: $bambora_merchant_id
\n"; } // Demo and followup info $return_data['content'] .= "
"; $return_data['content'] .= "
\n"; $return_data['content'] .= "
\n"; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= "
Welcome Email Sent:$welcome_email_sent
Followup Email Sent:$followup_email_sent
Demo Scheduled For:$demo_scheduled_date
Last Demo Date:$last_demo_date
Followup Date 1:$followup1_date
Followup Note 1:
Followup Date 2:$followup2_date
Followup Note 2:
Last Contact Date:$last_contact_date
Testimonial:$testimonial
Renewal Contact:$renewal_contact
"; $return_data['content'] .= "
\n"; $return_data['content'] .= "
\n"; // $return_data['content'] .= "Notes: - [edit]
\n"; $return_data['content'] .= "Notes:
\n"; $return_data['content'] .= ""; $return_data['content'] .= "\n"; $return_data['content'] .= "
\n"; $return_data['content'] .= "
\n"; $return_data['contacts'] = ""; $return_data['invoices'] = ""; // Get list of admin accounts $results = db_query("SELECT * FROM users WHERE school_num = $school_num AND type = 'System Administrator' ORDER BY userid"); if (db_num_rows($results)) { $return_data['contacts'] .= "Administrator Accounts:
"; while ($row = db_fetch_assoc($results)) { extract($row); $return_data['contacts'] .= " - $userid / $password
"; } } // Get contact list $results = db_query("SELECT * FROM school_contact_list WHERE school_num = $school_num ORDER BY sequence"); while ($row = db_fetch_assoc($results)) { extract($row); $return_data['contacts'] .= "
$contact_name"; if (strlen($contact_email)) $return_data['contacts'] .= " - $contact_email"; $return_data['contacts'] .= "
"; if (strlen($contact_phone)) $return_data['contacts'] .= " - Phone: $contact_phone
"; if (strlen($contact_cell)) $return_data['contacts'] .= " - Cell: $contact_cell
"; } if (strpos($url,'hotlunches.net') !== false || strpos($url,'payschoolfees.net') !== false || strpos($url,'parentcouncil.net') !== false || strpos($url,'fundraiserorders.com') !== false || strpos($url,'registrationnow.net') !== false || strpos($url,'schoolcouncil.net') !== false || strpos($url,'schoollunchorders.net') !== false) { $BaseURL = str_replace("$default_url_code.",'',$url); $schoolID = $default_url_code; $alias_email = trim($support_email); if (strlen($alias_email) == 0) $alias_email = trim($reply_email); $return_data['contacts'] .= "

"; $return_data['contacts'] .= "Email Alias: $schoolID@$BaseURL => $alias_email"; $return_data['contacts'] .= "

"; } // Get any linked sites $results = db_query("SELECT * FROM schools WHERE status = 'Linked' AND linked_site = $school_num ORDER BY link_sequence"); if (db_num_rows($results)) { $return_data['content'] .= "
"; while ($row = db_fetch_assoc($results)) { extract($row); $editLink = "[edit]"; $return_data['content'] .= "- ($record_num) $url " . "- Clean " . "$editLink ($special_item_prices)
"; } } // Get any invoices info $return_data['invoices'] .= "
"; $return_data['invoices'] = "$school_name ($school_num) " . "- [edit] " . "- [refresh] " . "- $url $sprices

"; $results = db_query("SELECT * FROM invoice_header WHERE school_num = $school_num ORDER BY invoice_date DESC"); if (db_num_rows($results)) { $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; while ($row = db_fetch_assoc($results)) { extract($row); $invnum = sprintf("%08d",$record_num + 500); $edit = "?action=invoices&selected_school=$school_num&naction=edit&record_num=$record_num"; $print = "?action=inv-print&invoice_num=$record_num"; $pay = ""; if ($status == 'Open') { $pay = "[]"; $pay = "[]"; $pay .= "[ezs]"; } else { $yesterday = date("Y-m-d",time() - 60 * 60 * 24); if ($payment_date >= $yesterday) $pay .= "[ezs]"; } $send = "[send]"; $balance = number_format($total - $amount_paid,2); $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; $return_data['invoices'] .= ""; } $return_data['invoices'] .= "
YEARNUMDATESTATUSTOTALPAIDBALANCE
$school_year#$invnum$invoice_date$status$currencySymbol$total$currencySymbol$amount_paid$currencySymbol$balance[edit] [print] $pay $send
"; } $return_data['invoices'] .= " [Add Invoice]"; $return_data['content'] .= "
"; $return_data['content'] .= "[Add Site]"; $return_data['content'] .= "    "; $return_data['content'] .= "[Send Notification]"; break; case 'user-info': $user_num = intval($_GET['user_num']); // Get user info $results = db_query("SELECT * FROM users WHERE record_num = $user_num"); if (!is_resource($results)) exit; $row = db_fetch_assoc($results); extract($row); $user_type = $type; $user_num = $record_num; $user_status = $status; // Get school info $results = db_query("SELECT * FROM schools WHERE record_num = $school_num"); $row = db_fetch_assoc($results); extract($row); $return_data['content'] = "$school_name ($school_num) " . "- $url $sprices
" . "$city, $province - $phone
"; $return_data['content'] .= "

" . "$userid - $first_name $last_name ($user_type)
" . "$email - $phone
" . "Last Login: $last_login
"; $return_data['content'] .= "$user_status

"; $return_data['content'] .= "

"; // Get student info $results = db_query("SELECT * FROM people WHERE school_num = $school_num AND user_num = $user_num"); while ($row = db_fetch_assoc($results)) { $return_data['content'] .= " - ".$row['first_name'].' '.$row['last_name']."
"; } break; case 'user-account': // Get user number $user_num = intval($_GET['user_num']); // Get records $columnHeaders = array("User ID","TRX Date","TRX Type","Charges","Credits","Method"); $columnAlign = array('left','center','left','right','right','left'); $query = "SELECT u.userid,substring(transaction_datetime,1,10) as trx_date,transaction_type,note,transaction_amount,schedule_num,order_num," . "payment_method,payment_reference,order_payments,ua.user_num,people_num,people_type,additional_note,ua.record_num,deleted," . "deleted_datetime,deleted_by_user_num,delete_reason,u.first_name,u.last_name " . "FROM user_account as ua LEFT JOIN people as p ON ua.people_num = p.record_num, users AS u " . "WHERE u.school_num = $base_school_num " . "AND ua.school_num = $school_num " . "AND ua.user_num = u.record_num " . "AND ua.user_num = $user_num " . "ORDER BY transaction_datetime,record_num"; $transactions = db_query($query); $data = array(); while ($row = db_fetch_assoc($transactions)) { extract($row); if ($transaction_amount < 0) { $charge = ""; $credit = "-$currencySymbol".number_format(abs($transaction_amount),2); } else { $credit = ""; $charge = "$currencySymbol".number_format(abs($transaction_amount),2); } if ($transaction_type == 'Order' && intval($schedule_num) > 0) { $sname = db_getVal("SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $schedule_num"); $transaction_type .= " (#$order_num - $sname)"; } if ($payment_method == 'Check') $payment_method .= " #$payment_reference"; $data[] = array($userid,$trx_date,$transaction_type,$charge,$credit,$payment_method); } $customTableID = "account-table"; $return_data['content'] = getDataCustom($data,$columnHeaders,$action,array(),'N',$columnAlign,$totals); break; case 'trx-history': // Get trx number $rnum = intval($_GET['rnum']); writeLog("rnum: $rnum\n"); $info = "
"; $info .= ""; $info .= ""; $info .= ""; $info .= ""; $info .= ""; // Get record $query = "SELECT * FROM user_account WHERE school_num = $school_num AND record_num = $rnum"; writeLog("query: $query\n"); $results = db_query($query); $row = db_fetch_assoc($results); writeLog("trx_history: ".$row['trx_history']."\n"); $entries = explode("\n",$row['trx_history']); for ($i = 0; $i < count($entries); $i++) { $row = explode('|',$entries[$i]); if (strlen($row[0])) { $bgclass = "data-even"; if ($i % 2) $bgclass = "data-odd"; $info .= ""; $info .= ""; $info .= ""; $info .= ""; $info .= ""; } } $info .= "
".getLanguageText('TEXT-TRANSACTION-TYPE')."".getLanguageText('TEXT-AMOUNT')."".getLanguageText('TEXT-SCHEDULE')."
".$row[0]."".$row[1]."".$row[2]."
".$row[3]."

"; $return_data['content'] = $info; break; case 'trx-receipt': // Get trx number $trxNum = intval($_GET['trxnum']); // Get trx record $query = "SELECT * FROM user_account WHERE school_num = $school_num AND record_num = $trxNum"; writeLog("query: $query\n"); $results = db_query($query); $trx = db_fetch_assoc($results); $userNum = $trx['user_num']; adjustUserAccountDetails($userNum); // Get receipt number $user_num = $userNum; $rcptNum = db_getVal("SELECT receipt_number FROM user_account_detail WHERE school_num = $school_num AND user_num = $user_num AND transaction_num = $trxNum LIMIT 0,1"); writeLog("rcptNum: $rcptNum\n"); // Get user info $query = "SELECT * FROM users WHERE school_num = $school_num AND record_num = $user_num"; writeLog("query: $query\n"); $results = db_query($query); $user = db_fetch_assoc($results); $name = $user['first_name'].' '.$user['last_name']; // Get transaction information $trx_details = ""; $trxTotal = 0; // Transaction based processing if ($school_record['select_transactions_on_post'] == 'Y') { // Get transactions in this receipt $query = "SELECT detail.*,ua.transaction_type,ua.transaction_amount AS trx_amount,ua2.transaction_datetime,ua.note,ua.schedule_num,ua.order_num " . "FROM user_account_detail AS detail, user_account AS ua, user_account AS ua2 " . "WHERE detail.school_num = $school_num " . "AND detail.school_num = ua.school_num " . "AND detail.school_num = ua2.school_num " . "AND ua.user_num = $user_num " . "AND ua2.user_num = $user_num " . "AND detail.user_num = $user_num " . "AND detail.receipt_number = '$rcptNum' " . "AND detail.posted_to_transaction = ua.record_num " . "AND detail.transaction_num = ua2.record_num " . "AND (ua.deleted != 'Y' OR ua.deleted IS NULL) " . "AND (ua2.deleted != 'Y' OR ua2.deleted IS NULL) " . "ORDER BY ua2.transaction_datetime,ua.record_num"; writeLog("query: $query\n"); $transactions = db_query($query); writeLog("# transactions: ".db_num_rows($transactions)."\n"); while ($row = db_fetch_assoc($transactions)) { if ($row['transaction_num'] == $trxNum) { $trnum = $row['transaction_num']; $ptnum = $row['posted_to_transaction']; $amt = $row['posted_amount'] * -1; $type = $row['transaction_type']; $note = $row['note']; $onum = $row['order_num']; $snum = $row['schedule_num']; $prnum = $row['record_num']; $rcpt = $row['receipt_number']; $trxdate = $row['transaction_datetime']; $trx_total = db_getVal("SELECT transaction_amount FROM user_account WHERE school_num = $school_num AND record_num = $trnum"); if ($type == 'Order') { $type .= " (#$onum)"; $query = "SELECT transaction_datetime FROM user_account_detail WHERE school_num = $school_num AND user_num = $user_num AND receipt_number = '$rcptNum' AND posted_to_transaction = $ptnum"; writeLog("query: $query\n"); // $amt = db_getVal($query) * -1; // $amt = $trx_total; // $row['transaction_datetime'] = db_getVal($query); $amt = $row['trx_amount']; } // Get schedule name $sname = ''; if ($snum == 1) $sname = getLanguageText('TEXT-MISCELLANEOUS-CHARGES'); if (intval($snum) > 1) { $query = "SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $snum"; writeLog("query: $query\n"); $sname = db_getVal($query); $note .= " ($sname)"; } if ($trx_total > 0) $note .= " $currencySymbol".number_format($trx_total,2); } else { $trnum = $row['transaction_num']; $ptnum = $row['posted_to_transaction']; $amt = $row['posted_amount']; $rcpt = $row['receipt_number']; $results = db_query("SELECT * FROM user_account WHERE school_num = $school_num AND user_num = $user_num AND record_num = $trnum"); $row = db_fetch_assoc($results); $type = $row['transaction_type']; $note = $row['note']; } $sign = ''; if ($amt < 0) $sign = '- '; $trxTotal += $amt; $date = date($school_record['date_format'],strtotime($row['transaction_datetime'])); $trx_details .= ""; $trx_details .= "$type"; $trx_details .= "$date"; $trx_details .= "$note"; $trx_details .= "$sign$currencySymbol".number_format(abs($amt),2).""; $trx_details .= ""; } // Add current trx to details $trx_details .= ""; $trx_details .= "".$trx['transaction_type'].""; $trx_details .= "$date"; $trx_details .= "".$trx['note'].""; $trx_details .= "- $currencySymbol".number_format(abs($trx['transaction_amount']),2).""; $trx_details .= ""; $trxTotal += $trx['transaction_amount']; } // Get order information if ($school_record['select_transactions_on_post'] != 'Y' && strlen($trx['order_payments']) && strlen($trx['transaction_payments']) == 0) { $orders = explode('|',$trx['order_payments']); $trx_details = ""; $trxTotal = 0; for ($i = 0; $i < count($orders); $i++) { $oinfo = $orders[$i]; $oinfo = str_replace('{','',$oinfo); $oinfo = str_replace('}','',$oinfo); list($onum,$amt) = explode(':',$oinfo); if ($onum > 0) { // Get order information $query = "SELECT * FROM hotlunch_order_header WHERE school_num = $school_num AND record_num = $onum"; writeLog("query: $query\n"); $results = db_query($query); $order = db_fetch_assoc($results); $snum = $order['schedule_num']; $pnum = $order['ordered_by_num']; // Get schedule name $sname = ""; if (intval($snum) > 1) { $query = "SELECT schedule_name FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $snum"; writeLog("query: $query\n"); $sname = db_getVal($query); } // Get person name $query = "SELECT * FROM people WHERE school_num = $school_num AND record_num = $pnum"; writeLog("query: $query\n"); $results = db_query($query); $person = db_fetch_assoc($results); $pname = $person['first_name'].' '.$person['last_name']; $trx_details .= ""; $trx_details .= "$pname"; $trx_details .= "$sname"; $trx_details .= "$currencySymbol".number_format($amt,2).""; $trx_details .= ""; $trxTotal += $amt; $query = "SELECT * FROM user_account WHERE school_num = $school_num AND order_num = $onum AND transaction_type != 'Order' AND deleted != 'Y' ORDER BY record_num"; writeLog("query: $query\n"); $results = db_query($query); if (db_num_rows($results)) { while ($row = db_fetch_assoc($results)) { $tname = $row['transaction_type']; $note = $row['note']; $amt = $row['transaction_amount']; $trx_details .= ""; $trx_details .= "$tname"; $trx_details .= "$note"; $trx_details .= "$currencySymbol".number_format($amt,2).""; $trx_details .= ""; $trxTotal += $amt; } } } } } $transaction_type = $trx['transaction_type']; if (strlen($trx['payment_method'])) { if ($trx['payment_method'] == 'Check') $transaction_type .= " - ".getLanguageText('TEXT-'.strtoupper($trx['payment_method'])); else $transaction_type .= " - ".$trx['payment_method']; if ($trx['payment_method'] == 'Check') $transaction_type .= "  (#".$trx['payment_reference'].")"; } $transaction_time = dateString('datetime',strtotime($trx['transaction_datetime'])); // Start content $return_data['content'] = "
"; // School header $return_data['content'] .= "
"; $return_data['content'] .= "".$school_record['pac_name']."
"; $return_data['content'] .= $school_record['address'].", ".$school_record['city'].", ".$school_record['province']."   ".$school_record['postal']."
"; // Receipt header $return_data['content'] .= "
"; $return_data['content'] .= "
"; $return_data['content'] .= "".getLanguageText('TEXT-RECEIPT')."
"; $return_data['content'] .= "
"; $return_data['content'] .= "
"; $return_data['content'] .= "
"; // Receipt content $return_data['content'] .= "
"; $return_data['content'] .= ""; $return_data['content'] .= "
"; $return_data['content'] .= "".getLanguageText('TEXT-FOR').": $name
"; $return_data['content'] .= "
"; $return_data['content'] .= "  # $rcptNum
"; $return_data['content'] .= "
"; // Payment content $return_data['content'] .= "
"; $return_data['content'] .= ""; $return_data['content'] .= "
"; $return_data['content'] .= " ".getLanguageText('TEXT-PAID').":    $currencySymbol".number_format(abs($trx['transaction_amount']),2)."
"; $return_data['content'] .= "
"; $return_data['content'] .= "  $transaction_type
"; $return_data['content'] .= $transaction_time."
"; $return_data['content'] .= "
"; // Detail content if (strlen($trx_details)) { $return_data['content'] .= "
"; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= $trx_details; if ($trxTotal > -0.01 && $trxTotal < 0.01) $trxTotal = 0.00; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $balance = db_getVal("SELECT sum(transaction_amount) FROM user_account " . "WHERE school_num = $school_num " . "AND user_num = $user_num " . "AND (deleted != 'Y' OR deleted IS NULL)"); $balance = intval($balance * 100) / 100; if ($balance > -0.01 && $balance < 0.01) $balance = 0.00; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= "
".getLanguageText('TEXT-NAME')."".getLanguageText('TEXT-DATE')."".getLanguageText('TEXT-ITEM')."".getLanguageText('TEXT-AMOUNT')."
 $currencySymbol".number_format($trxTotal,2)."





".getLanguageText('TEXT-CURRENT-ACCT-BALANCE').": $currencySymbol".number_format($balance,2)."





"; } $printed_time = dateString('datetime',time()); $return_data['content'] .= "
"; $return_data['content'] .= "

".getLanguageText('TEXT-PRINTED').": $printed_time

"; // End content table $return_data['content'] .= "
"; break; case 'login-log': // Get login log parameters $sdate = db_escape_string($_GET['sdate']); $edate = db_escape_string($_GET['edate']); $userid = db_escape_string($_GET['userid']); $ip = db_escape_string($_GET['ip']); $where = "AND last_login BETWEEN '$sdate 00:00:00' AND '$edate 23:59:59' "; if ($userid != 'All') $where .= "AND userid = '$userid' "; if ($ip != 'All') $where .= "AND user_ip = '$ip' "; if ($_SESSION['UserInfo']['type'] != 'SuperUser') $where .= "AND userid != 'superuser' "; $columnHeaders = array(getLanguageText('TEXT-USERID'), getLanguageText('TEXT-LOGIN'), getLanguageText('TEXT-LAST-ACTIVITY'), getLanguageText('TEXT-DURATION'), getLanguageText('TEXT-IP-ADDRESS')); $query = "SELECT * FROM login_log " . "WHERE school_num = $school_num " . $where . "ORDER BY last_login desc"; writeLog("query: $query\n"); $results = db_query($query); $data = array(); while ($row = db_fetch_assoc($results)) { extract($row); $dstr = ""; $last_action = ""; $last_action = date("Y-m-d H:i:s",$last_activity); $duration = $last_activity - $login_time; $dhr = intval($duration / 3600); $dmin = ($duration % 3600) / 60; $dsec = $duration % 60; $dstr = sprintf("%dh %02dm %02ds",$dhr,$dmin,$dsec); $data[] = array("$userid", $last_login, $last_action, $dstr, $user_ip); } $return_data['content'] = getDataCustom($data,$columnHeaders,$action,array(),'N'); break; case 'payment-posting-errors': // startLog("payment-posting-errors"); // Get parameters $sdate = $_GET['sdate']; $edate = $_GET['edate']; $columnHeaders = array(getLanguageText('TEXT-DATE'), getLanguageText('TEXT-USER-ID'), getLanguageText('TEXT-NAME'), getLanguageText('TEXT-ORDER-NUMBER'), getLanguageText('TEXT-PAYMENT-METHOD'), getLanguageText('TEXT-ORDER-TOTAL'), getLanguageText('TEXT-AMOUNT-PAID')); $query = "SELECT school_num, record_num, ordered_by_num, added_date, payment_method, order_total, amount_paid " . "FROM hotlunch_order_header " . "WHERE school_num = $school_num " . "AND amount_paid > (order_total * 2) " . "AND added_date BETWEEN '$sdate' AND '$edate' " . "ORDER BY added_date"; writeLog($query); $orders = db_query($query); $num = db_num_rows($orders); writeLog("num: $num"); $data = array(); while ($row = db_fetch_assoc($orders)) { extract($row); $query = "SELECT * FROM people WHERE school_num = $school_num AND record_num = $ordered_by_num"; $results = db_query($query); $student = db_fetch_assoc($results); $user_num = $student['user_num']; $name = $student['first_name'].' '.$student['last_name']; writeLog("$user_num - $name"); $userid = getLanguageText('TEXT-UNKNOWN') . " $ordered_by_num"; if (intval($user_num) > 0) { $query = "SELECT * FROM users WHERE school_num = $school_num AND record_num = $user_num"; $results = db_query($query); $user = db_fetch_assoc($results); $userid = $user['userid']; } $order_total = '$' . number_format($order_total,2); $amount_paid = '$' . number_format($amount_paid,2); $entry = array(); $entry[] = $added_date; $entry[] = $userid; $entry[] = $name; $entry[] = $record_num; $entry[] = $payment_method; $entry[] = $order_total; $entry[] = $amount_paid; $data[] = $entry; } $return_data['content'] = getDataCustom($data,$columnHeaders,'',array(),'N'); break; case 'order-log-detail': // Get order log detail $order_num = intval($_GET['order_num']); $record_num = intval($_GET['record_num']); $return_data['content'] = ""; $query = "SELECT * FROM hotlunch_order_change_log WHERE school_num = $school_num AND order_num = $order_num AND record_num = $record_num"; $results = db_query($query); if (db_num_rows($results) == 1) { $row = db_fetch_assoc($results); extract($row); $userid = "Unknown"; if ($updated_by > 1) $userid = db_getVal("SELECT userid FROM users WHERE school_num = $base_school_num AND record_num = $updated_by"); if (!$userid) $userid = "Unknown"; $student_name = ""; if ($ordered_by_num > 0) $student_name = db_getVal("SELECT concat(first_name,' ',last_name) FROM people WHERE school_num = $school_num AND record_num = $ordered_by_num"); $return_data['content'] .= ""; $return_data['content'] .= "\n"; $return_data['content'] .= "\n"; $return_data['content'] .= "\n"; $return_data['content'] .= ""; $return_data['content'] .= "\n"; $return_data['content'] .= "\n"; if ($user_num > 1) { $userid = db_getVal("SELECT userid FROM users WHERE school_num = $base_school_num AND record_num = $user_num"); if ($userid) $return_data['content'] .= "\n"; } $order_total = $currencySymbol . number_format($order_total,2); $return_data['content'] .= "\n"; $return_data['content'] .= "
".getLanguageText("TEXT-ACTIVITY").":$order_action
".getLanguageText("TEXT-DATE").":$updated_time
".getLanguageText("TEXT-USER-ID").":$userid
 
".getLanguageText("TEXT-ORDER-NUMBER").":$order_num
".getLanguageText("TEXT-ORDERED-BY").":$student_name
".getLanguageText("TEXT-USER-ACCOUNT").":$userid
".getLanguageText("TEXT-ORDER-TOTAL").":$order_total
"; } else { $return_data['content'] = "".getLanguageText("ERRORMSG-NOT-FOUND")."

"; } break; case 'email-queue': // Get email queue parameters $sdate = $_GET['sdate']; $edate = $_GET['edate']; $columnHeaders = array(getLanguageText('TEXT-POSTED'), getLanguageText('TEXT-STATUS'), getLanguageText('TEXT-EMAIL'), getLanguageText('TEXT-EMAIL-SUBJECT')); $query = "SELECT posted_time,posted_date_time,status,email_to,email_subject,record_num " . "FROM email_queue " . "WHERE school_num = $school_num " . "AND posted_date_time BETWEEN '$sdate 00:00:00' AND '$edate 23:59:59' " . "ORDER BY posted_date_time"; writeLog("query: $query\n"); $results = db_query($query); $data = array(); while ($row = db_fetch_assoc($results)) { extract($row); $posted_date_time = date($school_record['date_format'].' '.$school_record['time_format'],$posted_time); $data[] = array("$posted_date_time", "$status", "$email_to", "$email_subject"); } $return_data['content'] = getDataCustom($data,$columnHeaders,$action,array(),'N'); break; case 'email-msg': // Get email queue number $rnum = intval($_GET['rnum']); $query = "SELECT * FROM email_queue WHERE school_num = $school_num AND record_num = $rnum"; writeLog("query: $query\n"); $results = db_query($query); $msg = db_fetch_assoc($results); extract($msg); $sent_time = dateFormat($processing_end_time); $msg = strip_tags($email_message); if ($msg == $email_message) $email_message = nl2br($email_message); $info = "
"; $info .= ""; $info .= ""; $info .= ""; $info .= ""; $info .= ""; $info .= ""; $info .= "
".getLanguageText('TEXT-EMAIL') .":$email_to
".getLanguageText('TEXT-EMAIL-SUBJECT') .":$email_subject
".getLanguageText('TEXT-PROCESSED-TIME') .":$sent_time
".getLanguageText('TEXT-STATUS') .":$status

".getLanguageText('TEXT-MESSAGE') .":
".nl2br($email_message)."

"; $return_data['content'] = $info; break; case 'cafeteria-students': // Get parameters $menuNum = intval($_GET['menuNum']); $classNum = intval($_GET['classNum']); $where = ""; if ($classNum > 0) $where = "AND class_num = $classNum "; $query = "SELECT * FROM people WHERE school_num = $base_school_num $where ORDER BY last_name,first_name"; $people = db_query($query); if (db_num_rows($people)) { $return_data['content'] .= "
\n"; while ($row = db_fetch_assoc($people)) { extract($row); $people_num = $record_num; $userBalance = round(db_getVal("SELECT sum(transaction_amount) FROM user_account WHERE school_num = $school_num AND user_num = $user_num AND (deleted != 'Y' OR deleted IS NULL)"),2); $balance_class = ""; if ($userBalance > $school_record['cafeteria_balance_limit']) $balance_class = " cafeteria-balance-low"; $prefix = $school_record['currency_symbol']; if ($userBalance < 0) $prefix = "- " . $school_record['currency_symbol']; $userBalance = "" . $prefix . number_format(abs($userBalance),2) . ""; $itemsOrdered = db_getVal("SELECT count(*) FROM hotlunch_order_items WHERE school_num = $school_num AND ordered_by_num = $people_num AND menu_num = $menuNum"); $oclass = ""; if ($itemsOrdered > 0) $oclass = "cafeteria-student-with-order"; $return_data['content'] .= "
\n"; $return_data['content'] .= "$first_name $last_name ($people_type)"; $return_data['content'] .= "
$userBalance
"; $return_data['content'] .= "
\n"; } $return_data['content'] .= "
\n"; $return_data['content'] .= "
\n"; $return_data['content'] .= "
\n"; } break; case 'cafeteria-student-menu': // Get parameters $scheduleNum = intval($_GET['scheduleNum']); $menuNum = intval($_GET['menuNum']); $classNum = intval($_GET['classNum']); $studentNum = intval($_GET['studentNum']); $query = "SELECT * FROM hotlunch_schedules WHERE school_num = $school_num AND record_num = $scheduleNum"; $results = db_query($query); $schedule = db_fetch_assoc($results); $query = "SELECT * FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $menuNum"; $results = db_query($query); $menu_date = db_fetch_assoc($results); $qtyFieldFormat = $menu_date['order_format']; $query = "SELECT * FROM people WHERE school_num = $base_school_num AND record_num = $studentNum"; $results = db_query($query); $people = db_fetch_assoc($results); extract($people); $order_num = intval(db_getVal("SELECT record_num FROM hotlunch_orders WHERE school_num = $school_num AND student_num = $studentNum AND schedule_num = $scheduleNum")); if ($orderNum > 0) $orderNum = " ($order_num)"; else $orderNum = ""; if ($classNum > 0) $class = getClassInfo($classNum); $return_data['content'] .= "$first_name $last_name $orderNum
"; if ($classNum > 0) $return_data['content'] .= "$class
"; $query = "SELECT * FROM hotlunch_menu_items WHERE school_num = $school_num AND menu_num = $menuNum"; writeLog("query: $query\n"); $menu_items = db_query($query); $symbol = $school_record['currency_symbol']; $iconWidth = 25; $iconHeight = 25; $orderTotal = 0; $tabIndex = 1; if (db_num_rows($menu_items)) { $return_data['content'] .= ""; while ($row = db_fetch_assoc($menu_items)) { extract($row); $menu_item_num = $record_num; if ($item_type == 'Heading') { $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= "\n"; } if ($item_type == 'Item') { $query = "SELECT * FROM hotlunch_order_items WHERE school_num = $school_num AND ordered_by_num = $studentNum AND menu_num = $menuNum AND menu_item_num = $menu_item_num"; $results = db_query($query); if (db_num_rows($results)) { $ordered_item = db_fetch_assoc($results); $qty = $ordered_item['qty']; } else $qty = 0; $item_price = $online_price; $item_total = $qty * $item_price; $jprice = $item_price; if (strlen($item_description)) $item_title .= "
$item_description"; // Handle options if ($item_price == 0.00) { $jprice = 0; $item_price = ""; $item_total = ""; } $line_total = $qty * $jprice; $orderTotal += $line_total; $lineTotal = ""; if ($line_total != 0) { if ($line_total > 0) $lineTotal = $symbol . number_format($line_total,2); else $lineTotal = "- " . $symbol . number_format(abs($line_total),2); } $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $tabIndex++; } } $return_data['content'] .= "\n"; $return_data['content'] .= "
"; $return_data['content'] .= "$item_title"; $return_data['content'] .= "
$item_title"; if ($qtyFieldFormat == 'Quantity' && $menu_item_format == 'D' || $menu_item_format == 'Q') { $return_data['content'] .= "" . "" . "" . "" . "
" . "" . "
"; } else { $checked = ""; if ($qty == 1) $checked = "checked='checked'"; $return_data['content'] .= ""; } $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= "
$symbol" . number_format($item_price,2) . "$lineTotal
" . getLanguageText('TEXT-TOTAL') . "$symbol" . number_format($orderTotal,2) . "
\n"; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= ""; $return_data['content'] .= "$order_num"; } break; case 'update-students': $logging = false; $user_num = intval($_GET['usernum']); $mode = $_GET['mode']; $return_data['count'] = 0; $query = "SELECT* FROM people WHERE school_num = $school_num AND user_num = $user_num AND people_type = 'Student'"; writeLog("query: $query\n"); $students = db_query($query); if (db_num_rows($students)) { $return_data['count'] = db_num_rows($students); // Get classes $Classes = array(); $results = db_query("SELECT * FROM classes WHERE school_num = $school_num AND entry_type = 'Class' ORDER BY sequence"); while ($row = db_fetch_assoc($results)) { $cnum = $row['record_num']; $classInfo = getClassInfo($cnum,'dropdown'); $row['info'] = $classInfo; $Classes[] = $row; } $content = "
"; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $class = 'data-odd'; while ($row = db_fetch_assoc($students)) { extract($row); writeLog("class_num: $class_num\n"); if ($class == 'data-odd') $class = 'data-even'; else $class = 'data-odd'; $content .= ""; $content .= ""; $content .= ""; $content .= ""; } $content .= "
" . getLanguageText('TEXT-NAME') . "" . $GlobalText['Class'] . "
$first_name $last_name"; $content .= ""; $content .= "
"; $return_data['content'] = $content; } break; case 'load-image-gallery': $content = ""; $image_path = "files/$subpath/image"; $imagedir = opendir($image_path); $file_names = array(); while ($file = readdir($imagedir)) { if ($file == ".") continue; if ($file == "..") continue; if (strstr($file,"-tn.jpg") !== false) $file_names[] = $file; if (strstr($file,"-tn.png") !== false) $file_names[] = $file; if (strstr($file,"-tn.gif") !== false) $file_names[] = $file; } sort($file_names); $count = count($file_names); $rows = intval(($count + 3) / 4); $columns = 4; $img = 0; if (count($file_names)) { $content = "
"; for ($r = 0; $r < $rows; $r++) { $content .= ""; for ($c = 0; $c < $columns; $c++) { $content .= ""; } $content .= ""; } $content .= "
"; if ($img < count($file_names)) { $thumbnail = $file_names[$img]; $image = str_replace("-tn.",".",$thumbnail); $content .= ""; $img++; } else $content .= " "; $content .= "
"; } $return_data['content'] = $content; break; } $return_data['content'] .= $localContent; // writeLog("".$return_data['content']."\n"); writeLog("complete\n"); echo(json_encode($return_data)); ?>