Files
HotLunches/hotlunch_orders.print.php
2026-10-19 15:22:52 -07:00

253 lines
7.1 KiB
PHP

<?php
$ValidAccess = 2010;
require_once("include/globals.php");
if (session_status() !== PHP_SESSION_ACTIVE) {
if (!empty($sessionName)) {
session_name($sessionName);
}
session_start();
}
//
// Ensure that the user is logged in
//
if (SessionActive() != 1 || !UserLoggedIn()) {
echo("<br>\n");
$error_message = "Invalid Access";
include "form.messages.php";
exit();
}
// Get parameters to script
if (array_key_exists('schedule_num',$_GET)) $schedule_num = intval($_GET['schedule_num']);
if (array_key_exists('order_num',$_GET)) $order_num = intval($_GET['order_num']);
if (!isset($order_num)) {
echo("<br>\n");
$error_message = "Invalid Access";
include "form.messages.php";
return;
}
// Get order information
$query = "select * from hotlunch_order_header " .
"where school_num = $school_num " .
"and record_num = $order_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
echo("<br>\n");
$error_message = "Invalid Order Number";
include "form.messages.php";
return;
}
$order_header = db_fetch_array($results);
$ordered_by_num = $order_header['ordered_by_num'];
$ordered_by_type = $order_header['ordered_by_type'];
$source = $order_header['source'];
$status = getLanguageText('TEXT-'.$order_header['status']);
// Get ordered by info
$query = "select concat_ws(' ',first_name,last_name) as name,class_num,user_num from people " .
"where school_num = $base_school_num " .
"and record_num = $ordered_by_num";
$people_record = db_query($query);
if (db_num_rows($people_record) == 0) {
echo("<br>\n");
$error_message = "Ordered by person not found - $ordered_by_num";
include "form.messages.php";
return;
}
$row = db_fetch_assoc($people_record);
$name = $row['name'];
$class_info = getClassInfo($row['class_num'],'parent');
// Verify that this student is linked to the current user
if ($_SESSION['UserInfo']['type'] == 'Parent') {
$unum = intval($_SESSION['UserInfo']['record_num']);
if ($row['user_num'] != $unum) {
echo("<br>\n");
$error_message = "Invalid access - student number";
include "form.messages.php";
return;
}
}
// Check that a Staff user can only see their own order
if ($_SESSION['UserInfo']['type'] == 'Staff') {
$unum = intval($_SESSION['UserInfo']['record_num']);
$query = "select concat_ws(' ',first_name,last_name) as name from people " .
"where school_num = $base_school_num " .
"and user_num = $unum " .
"and record_num = $ordered_by_num";
$name = db_getVal($query);
if ($name = '') {
echo("<br>\n");
$error_message = "Invalid Access";
include "form.messages.php";
return;
}
}
// Other user types can view any order
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Application Volunteer','Schedule Volunteer','Administration Team','Schedule Team');
if (checkPermission($AllowedUserTypes) == 1) {
if ($ordered_by_type == 'Student') {
$query = "select concat_ws(' ',first_name,last_name) as name,class_num from people " .
"where school_num = $base_school_num " .
"and record_num = $ordered_by_num";
$results = db_query($query);
$row = db_fetch_array($results);
$name = $row['name'];
$class_num = $row['class_num'];
$class_info = getClassInfo($class_num,'internal');
}
if ($ordered_by_type == 'Staff') {
$query = "select concat_ws(' ',first_name,last_name) as name from people " .
"where school_num = $base_school_num " .
"and record_num = $ordered_by_num";
$name = db_getVal($query);
}
if ($ordered_by_type == 'Concession') {
$name = "Concession Order";
}
}
$ordered_by = db_fetch_array($results);
// Verify the schedule_num is valid
$today = date("Y-m-d",time());
$query = "select * from hotlunch_schedules " .
"where school_num = $school_num " .
"and record_num = $schedule_num " .
"and status != 'Deleted'";
$results = db_query($query);
if (db_num_rows($results) == 0) {
echo("<br>\n");
$error_message = "Invalid schedule number";
include "form.messages.php";
return;
}
$schedule = db_fetch_array($results);
// If this is a ScheduleTeam user check if they have permission to access this schedule
if (in_array($_SESSION['UserInfo']['type'],array('Schedule Team','Schedule Volunteer'))) {
$userNum = intval($_SESSION['UserInfo']['record_num']);
$access = db_getVal("SELECT count(*) FROM hotlunch_schedules_people WHERE school_num = $school_num AND schedule_num = $schedule_num AND user_num = $userNum");
if (!$access || $access == 0) {
echo("<br>\n");
$error_message = "You are not allowed access to the requested hot lunch schedule";
include "form.messages.php";
return;
}
}
//
// Setup the PDF
//
require("tcpdf/config/lang/eng.php");
require("tcpdf/tcpdf.php");
$document_font = $school_record['document_font'];
if (strlen($document_font) == 0) $document_font = "Helvetica";
$document_font_weight = "";
$document_text_color = "#000000";
$document_font_size = 9;
$left_col = 20;
$middle_col = 100;
$max_rows = 230;
$logo_url = $school_record['logo_url'];
$logo_image = "images/" . $school_record['logo_image'];
$logo_row = $max_rows + 10;
$document_name = getLanguageText('TEXT-ORDER-DETAILS');
class PDF extends TCPDF {
function Header() {
global $incr, $left_col, $start_row, $title_width, $document_font, $document_font_size, $report_title, $report_subtitle;
}
function Footer() {
global $incr, $left_col, $title_width, $max_rows, $document_font, $document_font_size, $document_name, $logo_image, $logo_url, $logo_row, $school_name;
// Print the date
$this->SetFont($document_font,"",$document_font_size - 1);
$this->SetXY($left_col,$logo_row);
$date = dateString('datetime');
$this->Cell($title_width,$incr - 1,"$document_name: $date",'0',1,'R');
$this->SetXY($left_col,$logo_row + $incr);
$this->Cell($title_width,$incr - 1,"$school_name",'0',1,'R','',1);
$this->Image($logo_image,10,$logo_row, 50);
$this->SetXY(20,$logo_row + 9);
$this->SetFont($document_font,"B",$document_font_size);
$this->Cell($title_width,$incr,$logo_url,'0',1,'L');
}
}
//
// Setup PDF document
//
// Force exact physical size for Letter: 8.5 x 11 inches => 215.9mm x 279.4mm (portrait)
$pageFormat = array(215.9, 279.4);
$pdf= new PDF('P', 'mm', $pageFormat, true, 'UTF-8', false);
$pdf->addPage();
$font_red = hexdec("00");
$font_green = hexdec("00");
$font_blue = hexdec("00");
$pdf->SetTextColor($font_red,$font_green,$font_blue);
include "hotlunch_orders.print.inc.php";
// Output the completed PDF
$filename = "order.pdf";
if (function_exists('ob_get_length') && ob_get_length()) { @ob_end_clean(); }
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-type: application/pdf');
header("Content-Disposition: attachment; filename=$filename");
header('Content-Transfer-Encoding: binary');
$pdf->Output($filename,"D");
?>