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

513 lines
19 KiB
PHP

<?php
require_once("include/globals.php");
if (SessionActive() != 1 || ! UserLoggedIn()) {
header("Location: /");
exit();
}
// Start the template and output buffering
startTemplate();
$templatePageTitle = "";
$headerArgs = "";
// startLog("hotlunch.volunteers");
// Ensure that only valid user types have access to this module
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Application Volunteer','Schedule Volunteer','Administration Team','Schedule Team','Volunteer Administrator','Financial Team');
if (checkPermission($AllowedUserTypes) != 1) {
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
$action = '';
$naction = '';
header("Location: /?action=$action&naction=$naction$headerArgs&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
//
// Process all actions to list and edit records
//
$naction = "";
if (array_key_exists('schedule_num',$_GET)) $schedule_num = intval($_GET['schedule_num']);
if (array_key_exists('schedule_num',$_POST)) $schedule_num = intval($_POST['schedule_num']);
if (array_key_exists('menu_num',$_GET)) $menu_num = intval($_GET['menu_num']);
if (array_key_exists('menu_num',$_POST)) $menu_num = intval($_POST['menu_num']);
if (array_key_exists('selected_menu_num',$_GET)) $selected_menu_num = intval($_GET['selected_menu_num']);
if (array_key_exists('selected_menu_num',$_POST)) $selected_menu_num = intval($_POST['selected_menu_num']);
if (isset($selected_menu_num) && $selected_menu_num) {
$menu_num = $selected_menu_num;
$schedule_num = db_getVal("SELECT schedule_num FROM hotlunch_menu_dates WHERE school_num = $school_num AND record_num = $menu_num");
}
writeLog("SCHOOL_NUM: $school_num");
if (!isset($schedule_num)) {
$today = date("Y-m-d",time());
$query = "SELECT hlmd.schedule_num,hlmd.record_num AS menu_num " .
"FROM hotlunch_menu_dates AS hlmd, hotlunch_schedules AS hls " .
"WHERE hlmd.school_num = $school_num " .
"AND hlmd.menu_date >= '$today' " .
"AND hlmd.schedule_num = hls.record_num " .
"AND status IN ('Active','Closed','Completed') " .
"AND volunteer_signup != 'N' " .
"ORDER BY hls.sequence,hlmd.sequence LIMIT 0,1";
writeLog($query);
$results = db_query($query);
writeLog("Records Found: ".db_num_rows($results));
if (db_num_rows($results) == 0) {
$query = "SELECT hlmd.schedule_num,hlmd.record_num AS menu_num " .
"FROM hotlunch_menu_dates AS hlmd, hotlunch_schedules AS hls " .
"WHERE hlmd.school_num = $school_num " .
"AND hlmd.menu_date >= '$today' " .
"AND hlmd.schedule_num = hls.record_num " .
"AND status IN ('Active','Closed','Completed') " .
"ORDER BY hls.sequence,hlmd.sequence LIMIT 0,1";
writeLog($query);
$results = db_query($query);
writeLog("Records Found: ".db_num_rows($results));
}
if (db_num_rows($results)) {
$row = db_fetch_array($results);
extract($row);
}
else {
$error_message = getLanguageText('ERRORMSG-NO-CURRENT-SCHEDULES');
header("Location: /?action=schedules&naction=list&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
}
if (!isset($menu_num) && isset($schedule_num)) {
$today = date("Y-m-d",time());
$query = "SELECT record_num AS volunteer_menu_num FROM hotlunch_menu_dates " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num " .
"AND menu_date >= '$today' " .
"ORDER BY sequence,menu_date LIMIT 0,1";
writeLog($query);
$menu_num = db_getVal($query);
}
if (!isset($menu_num)) {
$today = date("Y-m-d",time());
$query = "SELECT record_num FROM hotlunch_menu_dates " .
"WHERE school_num = $school_num " .
"AND menu_date >= '$today' " .
"ORDER BY menu_date LIMIT 0,1";
writeLog($query);
$menu_num = db_getVal($query);
}
$current_menu_num = $menu_num;
// Check if this is a valid 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) == 0) {
$error_message = getLanguageText('ERRORMSG-INVALID-SCHEDULE');
$naction = '';
header("Location: /?action=$action&naction=$naction$headerArgs&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
$hotlunch_schedule = db_fetch_array($results);
$schedule_name = $hotlunch_schedule['schedule_name'];
$schedule_num = $hotlunch_schedule['record_num'];
$schedule_type = $hotlunch_schedule['schedule_type'];
// 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) {
$error_message = getLanguageText('ERRORMSG-ACCESS-DENIED');
$action = '';
$naction = '';
header("Location: /?action=$action&naction=$naction$headerArgs&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
}
// Check if this is a valid menu
$query = "select * from hotlunch_menu_dates " .
"where school_num = $school_num " .
"and schedule_num = $schedule_num " .
"and record_num = $current_menu_num";
$results = db_query($query);
if (db_num_rows($results) == 0) {
$error_message = getLanguageText('ERRORMSG-NO-MENU-NUM');
$naction = '';
header("Location: /?action=$action&naction=$naction$headerArgs&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
exit();
}
$hotlunch_menu_date = db_fetch_array($results);
$menu_date = $hotlunch_menu_date['menu_date'];
$menu_title = $hotlunch_menu_date['menu_title'];
$mdate = date("D M j, Y",strtotime($menu_date) + 60 * 60);
$templatePageTitle = getLanguageText('TEXT-VOLUNTEER-LIST') . " - $schedule_name - $menu_title";
if ($schedule_type != 'Fund Raising') $templatePageTitle .= " - $mdate";
include "hotlunch_reports.menu.php";
echo("<br>\n");
if (array_key_exists('naction',$_GET)) $naction = $_GET['naction'];
if (array_key_exists('naction',$_POST)) $naction = $_POST['naction'];
$school_num = $school_record['record_num'];
//
// Process any required actions
//
if (strlen($naction) > 0) {
if (array_key_exists('user_num',$_GET)) $user_num = intval($_GET['user_num']);
if (array_key_exists('user_num',$_POST)) $user_num = intval($_POST['user_num']);
switch ($naction) {
case 'add':
$vnum = db_getVal("SELECT count(*) FROM hotlunch_volunteers WHERE school_num = $school_num AND schedule_num = $schedule_num AND menu_num = $current_menu_num AND user_num = $user_num AND deleted != 'Y'");
if ($vnum == 0) {
$query = "SELECT max(sequence) FROM hotlunch_volunteers " .
"WHERE school_num = $school_num " .
"AND schedule_num = $schedule_num " .
"AND menu_num = $current_menu_num " .
"AND deleted != 'Y'";
$sequence = intval(db_getVal($query)) + 1;
$table = new Table("hotlunch_volunteers");
$menu_num = $current_menu_num;
$deleted = 'N';
$query = $table->BuildInsert();
db_query($query);
}
db_query("UPDATE users SET available_to_volunteer = 'Y' where school_num = $school_num AND record_num = $user_num");
break;
case 'delete':
// db_query("DELETE FROM hotlunch_volunteers WHERE school_num = $school_num AND schedule_num = $schedule_num AND menu_num = $current_menu_num AND user_num = $user_num");
db_query("UPDATE hotlunch_volunteers SET deleted = 'Y' WHERE school_num = $school_num AND schedule_num = $schedule_num AND menu_num = $current_menu_num AND user_num = $user_num AND deleted != 'Y'");
break;
}
}
include "form.messages.php";
if ($school_record['volunteer_sorting'] == 'Manual Sorting') {
?>
<script>
$(document).ready(function() {
<?php include "include/ajax.Setup.php" ?>
$("#volunteer-list").tableDnD({
onDrop: function(table, row) {
var rows = table.tBodies[0].rows;
var data = "&table=hotlunch_volunteers&school_num=<?php echo($school_num) ?>;
for (var i=0; i<rows.length; i++) {
var rowid = rows[i].id;
data += "&row_ids[]="+rowid;
// Update row classes
$("#"+rowid).removeClass("data-even");
$("#"+rowid).removeClass("data-odd");
if (i % 2) $("#"+rowid).addClass("data-even");
else $("#"+rowid).addClass("data-odd");
}
$.ajax({
url: "ajax.SequenceRecords.php",
data: data
});
}
});
});
</script>
<?php } ?>
<table width='700' class='content-table' id='volunteer-list'>
<thead>
<tr class='heading'>
<td colspan='4' align='center'>
<?php echo("$menu_title") ?>
<?php if ($schedule_type != 'Fund Raising') echo("<br>$mdate") ?>
</td>
</tr>
</thead>
<tbody>
<?php
// Set sort order
$orderBy = "last_name,first_name";
if ($school_record['volunteer_sorting'] == 'Manual Sorting') {
$orderBy = "sequence,$orderBy";
$results = db_query("SELECT u.*,hlv.user_num FROM hotlunch_volunteers AS hlv, users AS u " .
"WHERE hlv.school_num = $school_num " .
"AND hlv.schedule_num = $schedule_num " .
"AND hlv.menu_num = $current_menu_num " .
"AND hlv.user_num = u.record_num " .
"AND hlv.deleted != 'Y' " .
"ORDER BY $orderBy");
$sequence = 1;
while ($row = db_fetch_array($results)) {
$rnum = $row['record_num'];
db_query("UPDATE hotlunch_volunteers SET sequence = $sequence WHERE school_num = $school_num AND record_num = $rnum");
$sequence++;
}
}
// Display the list of volunteers
$query = "select u.*,hlv.user_num,hlv.sequence,hlv.record_num AS vrnum from hotlunch_volunteers as hlv, users as u " .
"where hlv.school_num = $school_num " .
"and hlv.schedule_num = $schedule_num " .
"and hlv.menu_num = $current_menu_num " .
"and hlv.user_num = u.record_num " .
"AND hlv.deleted != 'Y' " .
"AND u.school_num = $base_school_num " .
"order by $orderBy";
$volunteers = db_query($query);
$otipSpans = "";
$count = 0;
if (db_num_rows($volunteers) > 0) {
while ($volunteer = db_fetch_array($volunteers)) {
extract($volunteer);
$school_num = $school_record['record_num'];
$name = "$first_name $last_name";
$span_id = "user_$user_num";
$otipSpans .= "<span id='$span_id'>" . $otipTABLE .
sprintf($otipROW2,"Name: ",$name) .
sprintf($otipROW2,"Phone: ",$home_phone) .
sprintf($otipROW2,"Email: ",$email);
// Get set of children
$students = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND people_type = 'Student' AND user_num = $user_num");
while ($row = db_fetch_array($students)) {
$sname = $row['first_name'] . ' ' . $row['last_name'];
$class = getClassInfo($row['class_num'],'internal');
$otipSpans .= sprintf($otipROW21,'left',"<hr>$sname<br>$class");
}
$otipSpans .= "</table></span>\n";
$name = "<a href='mailto:$email' onmouseover=\"TagToTip('$span_id')\" onmouseout=\"UnTip()\">$name</a>";
$class = 'data-odd';
if ($count % 2) $class = 'data-even';
$count++;
$msg = getLanguageText('TEXT-CONFIRM-DELETE');
$delete_icon = "<img src='images/icons/delete16.png' alt='Delete Volunteer' border='0'>";
$delete_link = "<a href='?action=manage-volunteers&naction=delete&schedule_num=$schedule_num&menu_num=$current_menu_num&user_num=$user_num' onclick='return confirm(\"$msg\");' title='Delete Volunteer'>$delete_icon</a>";
// Display student grades
$query = "SELECT c.* FROM people AS p, classes AS c " .
"WHERE p.school_num = $base_school_num " .
"AND p.user_num = $user_num " .
"AND c.school_num = $base_school_num " .
"AND p.class_num = c.record_num";
$classes = db_query($query);
$cinfo = "";
while ($crow = db_fetch_assoc($classes)) {
$grade = $crow['grade'];
$division = $crow['division'];
$class_num = $crow['record_num'];
if (strlen($cinfo)) $cinfo .= " // ";
$cinfo .= getClassInfo($class_num, 'internal', 0);
}
?>
<tr class='<?php echo($class) ?>' id='row_<?php echo($vrnum) ?>'>
<td align='left'><?php echo($name) ?> </td>
<td align='center'><?php echo($home_phone) ?> </td>
<td align='center'><?php echo($cinfo) ?> </td>
<td align='center'><?php echo($delete_link) ?></td>
</tr>
<?php
}
}
else {
?>
<tr class='data-odd'>
<td align='center' colspan='2'><b>There are no volunteers registered for this date</b></td>
</tr>
<?php
}
?>
</tbody>
</table>
<br>
<br>
<form method='post' action='/'>
<table width='700' cellpadding='5' cellspacing='1' class='content-table'>
<tr class='heading'>
<td colspan='2' align='center'><?php displayLanguageText('TEXT-ADD-VOLUNTEER'); ?> - <?php echo($mdate) ?></td>
</tr>
<tr>
<td align='center'>User Name:
<select name='user_num'>
<?php
// Get volunteer users
$users = db_query("SELECT * FROM users WHERE school_num = $base_school_num AND type IN ('Parent','Administration Team','Schedule Team') AND available_to_volunteer = 'Y' ORDER BY last_name,first_name");
if (db_num_rows($users) > 0) {
echo(" <optgroup label='" . getLanguageText('TEXT-VOLUNTEERS') . "'>\n");
while ($row = db_fetch_array($users)) {
extract($row);
echo(" <option value='$record_num'>$first_name $last_name</option>\n");
}
echo(" </optgroup>\n");
}
$school_num = $school_record['record_num'];
// Get other parent users
$users = db_query("SELECT * FROM users WHERE school_num = $base_school_num AND type IN ('Parent','Administration Team','Schedule Team') AND available_to_volunteer != 'Y' ORDER BY last_name,first_name");
if (db_num_rows($users) > 0) {
echo(" <optgroup label='" . getLanguageText('TEXT-PARENTS') . "'>\n");
while ($row = db_fetch_array($users)) {
extract($row);
echo(" <option value='$record_num'>$first_name $last_name</option>\n");
}
echo(" </optgroup>\n");
}
// Get staff users
$users = db_query("SELECT * FROM users WHERE school_num = $base_school_num AND type = 'Staff' ORDER BY last_name,first_name");
if (db_num_rows($users) > 0) {
echo(" <optgroup label='" . getLanguageText('TEXT-STAFF') . "'>\n");
while ($row = db_fetch_array($users)) {
extract($row);
echo(" <option value='$record_num'>$first_name $last_name</option>\n");
}
echo(" </optgroup>\n");
}
$school_num = $school_record['record_num'];
?>
</td>
</tr>
</table>
<br>
<input type='hidden' name='action' value='manage-volunteers'>
<input type='hidden' name='naction' value='add'>
<input type='hidden' name='schedule_num' value='<?php echo($schedule_num) ?>'>
<input type='hidden' name='menu_num' value='<?php echo($current_menu_num) ?>'>
<input type='submit' name='button' class='btn btn--primary' value="<?php displayLanguageText('TEXT-ADD-VOLUNTEER'); ?>">
</form>
<br>
<?php
//
// Display the schedules and menu dates selection
//
$formStarted = false;
$today = date("Y-m-d",time());
// Get set of schedules
$query = "select * from hotlunch_schedules " .
"where school_num = $school_num " .
"and status in ('Active','Pending','Closed') " .
"order by $scheduleSortOrder";
$schedules = db_query($query);
while ($row = db_fetch_array($schedules)) {
$stitle = $row['schedule_name'];
$snum = $row['record_num'];
$stype = $row['schedule_type'];
$query = "select * from hotlunch_menu_dates " .
"where school_num = $school_num " .
"and schedule_num = $snum " .
"and menu_date > '$today' " .
"order by sequence,menu_date";
$menu_dates = db_query($query);
if (db_num_rows($menu_dates)) {
if (!$formStarted) {
$formStarted = true;
?>
<form method='post' action='/'>
<table width='700' cellpadding='5' cellspacing='1' class='content-table'>
<tr class='heading'>
<td colspan='2' align='center'><?php displayLanguageText('TEXT-CHANGE-MENU-DATE'); ?></td>
</tr>
<tr>
<td align='center'>
<table>
<tr>
<td align='left'><?php displayLanguageText('TEXT-MENU-DATE'); ?>:<br>
<select name='selected_menu_num'>
<?php
}
else {
echo(" </optgroup>\n");
}
echo(" <optgroup label='$stitle'>\n");
while ($row = db_fetch_array($menu_dates)) {
$mtitle = $row['menu_title'];
$mdate = date("D M j, Y",strtotime($row['menu_date']) + 60 * 60);
$mnum = $row['record_num'];
$numVolunteers = db_getVal("SELECT count(*) FROM hotlunch_volunteers WHERE school_num = $school_num AND schedule_num = $snum AND menu_num = $mnum AND deleted != 'Y'");
$selected = "";
if ($current_menu_num == $mnum) $selected = " selected='selected'";
$text = "($numVolunteers) $mtitle";
if ($stype != 'Fund Raising') $text .= " - $mdate";
echo(" <option value='$mnum'$selected>$text</option>\n");
}
}
}
if ($formStarted) {
?>
</optgroup>
</select>
</td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<input type='hidden' name='action' value='manage-volunteers'>
<input type='submit' name='button' class='btn btn--primary' value="<?php displayLanguageText('TEXT-CHANGE-MENU-DATE'); ?>">
</form>
<?php
}
?>
<?php
if ($_SESSION['UserInfo']['type'] != 'Volunteer Administrator') include "hotlunch_orders.print_buttons.php";
endTemplate();
?>