1842 lines
74 KiB
Plaintext
1842 lines
74 KiB
Plaintext
<?php
|
|
require_once("include/globals.php");
|
|
|
|
if (SessionActive() != 1 || ! UserLoggedIn()) {
|
|
header("Location: /");
|
|
exit();
|
|
}
|
|
|
|
|
|
//
|
|
// Process all actions to manage the students for a user account
|
|
//
|
|
$CurrentTable = "people";
|
|
$DeleteField = "first_name,last_name";
|
|
$dSeparator = " ";
|
|
$FormFile = "students.form.php";
|
|
$TitleText = $GlobalText['StudentAdmin'];
|
|
$OrderBy = "last_name,first_name";
|
|
|
|
// Start the template and output buffering
|
|
startTemplate();
|
|
$templatePageTitle = "$TitleText";
|
|
|
|
// startLog("students.php");
|
|
|
|
$naction = "";
|
|
if (array_key_exists('naction',$_GET)) $naction = $_GET['naction'];
|
|
if (array_key_exists('naction',$_POST)) $naction = $_POST['naction'];
|
|
|
|
$userType = $_SESSION['UserInfo']['type'];
|
|
if ($naction == "" && in_array($userType,array('Parent','Staff'))) $naction = 'display';
|
|
if ($_SESSION['UserInfo']['type'] == 'Administration Team') $userType = 'Parent';
|
|
if ($_SESSION['UserInfo']['type'] == 'Schedule Team') $userType = 'Parent';
|
|
if ($_SESSION['UserInfo']['type'] == 'Financial Team') $userType = 'Parent';
|
|
|
|
$mode = "";
|
|
if (array_key_exists('mode',$_GET)) $mode = db_escape_string($_GET['mode']);
|
|
if (array_key_exists('mode',$_POST)) db_escape_string($mode = $_POST['mode']);
|
|
$_SESSION['mode'] = $mode;
|
|
if ($mode == 'parent') $userType = 'Parent';
|
|
|
|
|
|
$next_action = "";
|
|
if (array_key_exists('next_action',$_GET)) $next_action = $_GET['next_action'];
|
|
if (array_key_exists('next_action',$_POST)) $next_action = $_POST['next_action'];
|
|
|
|
unset($override_naction);
|
|
if (array_key_exists('override_naction',$_GET)) $override_naction = $_GET['override_naction'];
|
|
if (array_key_exists('override_naction',$_POST)) $override_naction = $_POST['override_naction'];
|
|
|
|
unset($donext);
|
|
if (array_key_exists('donext',$_GET)) $donext = $_GET['donext'];
|
|
if (array_key_exists('donext',$_POST)) $donext = $_POST['donext'];
|
|
|
|
if (isset($donext)) $naction = $donext;
|
|
|
|
|
|
|
|
$current_class_num = 0;
|
|
if ($action == 'class-students') {
|
|
if (array_key_exists('current_class_num',$_GET)) $current_class_num = intval($_GET['current_class_num']);
|
|
if (array_key_exists('current_class_num',$_POST)) $current_class_num = intval($_POST['current_class_num']);
|
|
|
|
unset($current_student);
|
|
if (array_key_exists('current_student',$_GET)) $current_student = intval($_GET['current_student']);
|
|
if (array_key_exists('current_student',$_POST)) $current_student = intval($_POST['current_student']);
|
|
|
|
if (isset($current_student)) {
|
|
$current_class_num = db_getVal("SELECT class_num FROM people WHERE school_num = $base_school_num AND record_num = $current_student");
|
|
}
|
|
|
|
if (!isset($current_class_num) && array_key_exists('record_num',$_POST) && isset($naction) && $naction == 'update') {
|
|
if (array_key_exists('class_num',$_POST)) $current_class_num = intval($_POST['class_num']);
|
|
}
|
|
}
|
|
|
|
// Set school_num from global array
|
|
$school_num = $school_record['record_num'];
|
|
|
|
|
|
// Ensure that only valid user types see the menu
|
|
$AllowedUserTypes = array('SuperUser','System Administrator','Application Administrator','Communications Administrator','Administration Team','Schedule Team');
|
|
if (checkPermission($AllowedUserTypes) == 1 && $_SESSION['mode'] != 'parent') {
|
|
include "students.options.php";
|
|
}
|
|
|
|
|
|
// Check the number of students if this is a parent
|
|
if ($naction == "display" && $userType == 'Parent') {
|
|
$unum = intval($_SESSION['UserInfo']['record_num']);
|
|
$num_students = db_getVal("SELECT count(*) FROM people WHERE school_num = $base_school_num AND user_num = $unum");
|
|
if ($num_students == 0) {
|
|
header("Location: /?action=students&naction=add");
|
|
exit();
|
|
}
|
|
}
|
|
|
|
include "form.messages.php";
|
|
|
|
|
|
switch (strtolower($naction)) {
|
|
case "add":
|
|
$next_naction = "insert";
|
|
$active = 'Y';
|
|
$display = 'Y';
|
|
|
|
include $FormFile;
|
|
break;
|
|
|
|
case "insert":
|
|
extract($_POST);
|
|
|
|
$first_name = trim($first_name);
|
|
$last_name = trim($last_name);
|
|
$user_num = intval($selected_user_num);
|
|
$class_num = intval($class_num);
|
|
if (!isset($meal_location)) $meal_location = $class_num;
|
|
|
|
$class_results = db_query("SELECT * FROM classes WHERE school_num = $base_school_num");
|
|
$numClasses = db_num_rows($class_results);
|
|
|
|
if ($numClasses > 0 && $school_record['participant_grouping'] != 'None' && (intval($class_num) == 0 || strlen($class_num) == 0)) {
|
|
$error_message = getLanguageText('ERRORMSG-NO-CLASS');
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
|
|
if (strlen(trim($first_name)) == 0 || strlen(trim($last_name)) == 0) {
|
|
$error_message = getLanguageText('ERRORMSG-FIRST-LAST-NAME-REQUIRED');
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
|
|
if (in_array($_SESSION['UserInfo']['type'],array('Parent','Staff')) || $mode == 'parent') {
|
|
$user_num = intval($_SESSION['UserInfo']['record_num']);
|
|
}
|
|
else {
|
|
// Check that there is a user_num
|
|
if ($user_num == 0 || strlen($user_num) == 0) {
|
|
$error_message = getLanguageText('ERRORMSG-NO-ACCOUNT');
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
|
|
$user_type = db_getVal("SELECT type FROM users WHERE school_num = $base_school_num AND record_num = $user_num");
|
|
if (!$user_type) {
|
|
$error_message = getLanguageText('ERRORMSG-INVALID-ACCOUNT');
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
|
|
if (!in_array($user_type,array('Parent','Administration Team','Schedule Team','Staff'))) {
|
|
$error_message = getLanguageText('ERRORMSG-INVALID-ACCOUNT');
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
}
|
|
|
|
|
|
// Check that there is a valid class_num
|
|
if (isset($menu_price_category)) writeLog("menu_price_category: $menu_price_category");
|
|
writeLog("numClasses: $numClasses");
|
|
|
|
if ($numClasses > 0) {
|
|
if (!array_key_exists('menu_price_category',$_POST) || strlen($_POST['menu_price_category']) == 0) {
|
|
$class_results = db_query("SELECT * FROM classes WHERE school_num = $school_num AND record_num = $class_num");
|
|
$class = db_fetch_assoc($class_results);
|
|
if (array_key_exists('default_price_category', $class) && strlen($class['default_price_category'])) $menu_price_category = $class['default_price_category'];
|
|
writeLog("class['default_price_category']: ".$class['default_price_category']);
|
|
if (isset($menu_price_category)) writeLog("menu_price_category: $menu_price_category");
|
|
}
|
|
}
|
|
else {
|
|
$class_num = 1;
|
|
$meal_location = 1;
|
|
$menu_price_category = 'Regular';
|
|
}
|
|
writeLog("menu_price_category: $menu_price_category");
|
|
|
|
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') $status = $school_record['default_student_status'];
|
|
if ($_SESSION['UserInfo']['type'] == 'Staff') $status = 'Verified';
|
|
$added_date = date("Y-m-d",time());
|
|
$people_type = 'Student';
|
|
if (!isset($display) || strlen($display) == 0) $display = 'N';
|
|
|
|
// Reformat the student name if required
|
|
if ($first_name == strtolower($first_name) || $first_name == strtoupper($first_name) ||
|
|
$last_name == strtolower($last_name) || $last_name == strtoupper($last_name)) {
|
|
$first_name = ucwords(strtolower($first_name));
|
|
$last_name = ucwords(strtolower($last_name));
|
|
}
|
|
|
|
// Check if this student exists already in this account
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
$query = "select * from people " .
|
|
"where school_num = $base_school_num " .
|
|
"and user_num = $user_num " .
|
|
"and people_type = '$people_type' " .
|
|
"and first_name = '" . db_escape_string($first_name) . "' " .
|
|
"and last_name = '" . db_escape_string($last_name) . "' " .
|
|
"and status != 'Inactive'";
|
|
$results = db_query($query);
|
|
if (db_num_rows($results) > 0) {
|
|
$error_message = $GlobalText['ErrorStudentExists'];
|
|
$error_message .= ": <a href='mailto:" . $school_record['support_email'] . "'>" . $school_record['support_email'] . "</a>";
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
}
|
|
|
|
// Check if this student exists already in this class
|
|
if ($school_record['allow_duplicate_students'] != 'Y') {
|
|
$cwhere = "";
|
|
if ($numClasses > 0 && $class_num > 0) $cwhere = "and class_num = $class_num ";
|
|
$query = "select * from people " .
|
|
"where school_num = $base_school_num " .
|
|
$cwhere .
|
|
"and people_type = '$people_type' " .
|
|
"and first_name = '" . db_escape_string($first_name) . "' " .
|
|
"and last_name = '" . db_escape_string($last_name) . "' " .
|
|
"and status != 'Inactive'";
|
|
$results = db_query($query);
|
|
// db_query_log($query,"student-class check: " . db_num_rows($results));
|
|
if (db_num_rows($results) > 0) {
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
$error_message = $GlobalText['ErrorStudentExists'];
|
|
$error_message .= ": <a href='mailto:" . $school_record['support_email'] . "'>" . $school_record['support_email'] . "</a>";
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
else {
|
|
$error_message = getLanguageText('WARNING-STUDENT-EXISTS');
|
|
}
|
|
}
|
|
}
|
|
|
|
// Save the new student
|
|
$school_num = $base_school_num;
|
|
$GLOBALS['school_num'] = $base_school_num;
|
|
if (!isset($menu_price_category) || strlen($menu_price_category) == 0) $menu_price_category = 'Regular';
|
|
|
|
// Format birthdate if provided
|
|
if (isset($birthdate) && strlen($birthdate)) $birthdate = date("Y-m-d",strtotime($birthdate));
|
|
if (!isset($active)) $active = 'Y';
|
|
|
|
$table = new Table("$CurrentTable");
|
|
|
|
$student = array();
|
|
$cols = $table->column_names;
|
|
for ($i = 0; $i < count($cols); $i++) {
|
|
$col = $cols[$i];
|
|
if ($col == "record_num") continue;
|
|
if (isset($col)) $student[$col] = $$col;
|
|
}
|
|
$student["school_num"] = $base_school_num;
|
|
|
|
$query = $table->BuildInsert($student);
|
|
db_query($query);
|
|
$record_num = db_insert_id();
|
|
|
|
$school_num = $school_record['record_num'];
|
|
$GLOBALS['school_num'] = $school_record['record_num'];
|
|
|
|
// Handle any student categories
|
|
if (count($student_categories)) {
|
|
for ($i = 0; $i < count($student_categories); $i++) {
|
|
$cnum = intval($student_categories[$i]);
|
|
db_query("insert into people_categories values($base_school_num,$record_num,$cnum)");
|
|
}
|
|
}
|
|
|
|
// Handle any allergy entries
|
|
$allergens = db_query("select * from allergens where school_num = $base_school_num order by sequence");
|
|
if (db_num_rows($allergens) > 0) {
|
|
while ($row = db_fetch_array($allergens)) {
|
|
$allergen_num = $row['record_num'];
|
|
if (array_key_exists("allergen_$allergen_num", $_POST) && $_POST["allergen_$allergen_num"] == 'Y') {
|
|
db_query("insert into allergies values($base_school_num,$record_num,$allergen_num)");
|
|
}
|
|
}
|
|
}
|
|
|
|
$next_naction = 'search';
|
|
|
|
if ($action == 'account-students') {
|
|
$next_naction = 'display';
|
|
$action .= "&uid=$user_num";
|
|
}
|
|
|
|
if ($action == 'class-students') {
|
|
$next_naction = 'display';
|
|
$action .= "¤t_class_num=$current_class_num";
|
|
}
|
|
|
|
if (in_array($_SESSION['UserInfo']['type'],array('Parent','Staff'))) $next_naction = 'display';
|
|
|
|
$form_message = getLanguageText('RECORD-INSERTED-MSG');
|
|
header("Location: $FormTarget?action=$action&naction=$next_naction&mode=$mode&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
|
|
exit();
|
|
|
|
case "edit":
|
|
$next_naction = "update";
|
|
|
|
// Get current record
|
|
$record_num = intval($_GET['record_num']);
|
|
$uwhere = "";
|
|
if (in_array($_SESSION['UserInfo']['type'],array('Parent','Staff')) || $_SESSION['mode'] == 'parent') {
|
|
$uwhere = "and user_num = " . $_SESSION['UserInfo']['record_num'] . " ";
|
|
}
|
|
|
|
$query = "select * from $CurrentTable " .
|
|
"where school_num = $base_school_num " .
|
|
$uwhere .
|
|
"and record_num = $record_num";
|
|
$results = db_query($query);
|
|
if (db_num_rows($results) == 1) {
|
|
$row = db_fetch_array($results);
|
|
extract($row);
|
|
include $FormFile;
|
|
}
|
|
else {
|
|
$error_message = getLanguageText('ERRORMSG-NOT-FOUND');
|
|
include 'students.display.php';
|
|
}
|
|
break;
|
|
|
|
case "update":
|
|
extract($_POST);
|
|
|
|
$first_name = trim($first_name);
|
|
$last_name = trim($last_name);
|
|
$people_type = trim($people_type);
|
|
$user_num = intval($selected_user_num);
|
|
$class_num = intval($class_num);
|
|
if (!isset($meal_location)) $meal_location = $class_num;
|
|
else $meal_location = intval($meal_location);
|
|
$record_num = intval($record_num);
|
|
|
|
if ($people_type == 'Student' && ($school_record['participant_grouping'] != 'None' && (intval($class_num) == 0 || strlen($class_num) == 0))) {
|
|
$error_message = getLanguageText('ERRORMSG-NO-CLASS');
|
|
$_POST['naction'] = 'edit';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
|
|
if (strlen(trim($first_name)) == 0 || strlen(trim($last_name)) == 0) {
|
|
$error_message = getLanguageText('ERRORMSG-FIRST-LAST-NAME-REQUIRED');
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
|
|
// Verify the form data
|
|
$results = db_query("SELECT * FROM classes WHERE school_num = $base_school_num");
|
|
$numClasses = db_num_rows($results);
|
|
if ($numClasses > 0) {
|
|
if (!isset($menu_price_category) || strlen($menu_price_category) == 0) {
|
|
$class = db_fetch_assoc($results);
|
|
if (array_key_exists('default_price_category', $class) && strlen($class['default_price_category'])) $menu_price_category = $class['default_price_category'];
|
|
}
|
|
}
|
|
else {
|
|
$class_num = 1;
|
|
$meal_location = 1;
|
|
}
|
|
|
|
if (in_array($_SESSION['UserInfo']['type'],array('Parent','Staff'))) {
|
|
$user_num = intval($_SESSION['UserInfo']['record_num']);
|
|
if ($_SESSION['UserInfo']['type'] == 'Staff') $status = 'Verified';
|
|
}
|
|
else {
|
|
// Check that there is a user_num
|
|
if ($user_num == 0 || strlen($user_num) == 0) {
|
|
$error_message = getLanguageText('ERRORMSG-NO-ACCOUNT');
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
|
|
$user_type = db_getVal("SELECT type FROM users WHERE school_num = $base_school_num AND record_num = $user_num");
|
|
if (!$user_type) {
|
|
$error_message = getLanguageText('ERRORMSG-INVALID-ACCOUNT');
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
|
|
if (!in_array($user_type,array('Parent','Administration Team','Schedule Team','Staff','Guest'))) {
|
|
$error_message = getLanguageText('ERRORMSG-INVALID-ACCOUNT');
|
|
$_POST['naction'] = 'add';
|
|
$args = encodeArray($_POST);
|
|
$args .= "&error_message=" . urlencode($error_message);
|
|
header("Location: $FormTarget?$args");
|
|
exit();
|
|
}
|
|
}
|
|
|
|
|
|
$uid = $user_num;
|
|
|
|
// Get original user_num
|
|
$orig_user_num = db_getVal("SELECT user_num FROM people WHERE record_num = $record_num");
|
|
|
|
// Reformat first name if required
|
|
if ($first_name == strtolower($first_name) || $first_name == strtoupper($first_name)) {
|
|
$first_name = ucwords(strtolower($first_name));
|
|
}
|
|
|
|
// Reformat last name if required
|
|
if ($last_name == strtolower($last_name) || $last_name == strtoupper($last_name)) {
|
|
$last_name = ucwords(strtolower($last_name));
|
|
|
|
if (strpos($last_name,"Mc") === 0) {
|
|
$last_name[2] = $entered_last_name[2];
|
|
}
|
|
if (strpos($last_name,"Mac")) {
|
|
$last_name[3] = $entered_last_name[3];
|
|
}
|
|
}
|
|
|
|
// Update the student record
|
|
$school_num = $base_school_num;
|
|
$GLOBALS['school_num'] = $base_school_num;
|
|
if (!isset($menu_price_category) || strlen($menu_price_category) == 0) $menu_price_category = 'Regular';
|
|
|
|
if ($class_num == 1) $people_type = 'Customer';
|
|
|
|
// Format birthdate if provided
|
|
if (isset($birthdate) && strlen($birthdate)) $birthdate = date("Y-m-d",strtotime($birthdate));
|
|
if (!isset($active)) $active = 'Y';
|
|
|
|
$table = new Table("$CurrentTable");
|
|
$query = $table->BuildUpdate();
|
|
db_query($query);
|
|
|
|
$school_num = $school_record['record_num'];
|
|
$GLOBALS['school_num'] = $school_record['record_num'];
|
|
|
|
// Handle any student categories
|
|
db_query("delete from people_categories where school_num = $base_school_num and people_num = $record_num");
|
|
if (count($student_categories)) {
|
|
for ($i = 0; $i < count($student_categories); $i++) {
|
|
$cnum = intval($student_categories[$i]);
|
|
db_query("insert into people_categories values($base_school_num,$record_num,$cnum)");
|
|
}
|
|
}
|
|
|
|
// Handle any allergy entries
|
|
$allergens = db_query("select * from allergens where school_num = $base_school_num order by sequence");
|
|
if (db_num_rows($allergens) > 0) {
|
|
db_query("delete from allergies where school_num = $base_school_num and people_num = $record_num");
|
|
while ($row = db_fetch_array($allergens)) {
|
|
$allergen_num = $row['record_num'];
|
|
if (array_key_exists("allergen_$allergen_num", $_POST) && $_POST["allergen_$allergen_num"] == 'Y') {
|
|
db_query("insert into allergies values($base_school_num,$record_num,$allergen_num)");
|
|
}
|
|
}
|
|
}
|
|
|
|
// If the user_num was changed then move any order transactions to the new user_num
|
|
if ($user_num != $orig_user_num) {
|
|
db_query("UPDATE user_account SET user_num = $user_num WHERE people_num = $record_num");
|
|
}
|
|
|
|
if (isset($override_naction)) $naction = $override_naction;
|
|
|
|
$next_naction = 'search';
|
|
|
|
if ($action == 'account-students') {
|
|
$next_naction = 'display';
|
|
$action .= "&uid=$user_num";
|
|
}
|
|
|
|
if ($action == 'class-students') {
|
|
$next_naction = 'display';
|
|
$action .= "¤t_class_num=$current_class_num";
|
|
}
|
|
|
|
if (in_array($_SESSION['UserInfo']['type'],array('Parent','Staff'))) {
|
|
$next_naction = 'display';
|
|
}
|
|
|
|
$form_message = getLanguageText('RECORD-UPDATED-MSG');
|
|
header("Location: $FormTarget?action=$action&naction=$next_naction&mode=$mode&form_message=" . urlencode($form_message));
|
|
exit();
|
|
|
|
case "update-status":
|
|
$sids = $_POST['sids'];
|
|
|
|
for ($i = 0; $i < count($sids); $i++) {
|
|
$snum = $sids[$i];
|
|
$status = $_POST["status_$snum"];
|
|
$query = "update people set status = '$status' " .
|
|
"where school_num = $base_school_num " .
|
|
"and people_type = 'Student' " .
|
|
"and record_num = $snum";
|
|
db_query($query);
|
|
}
|
|
|
|
$next_naction = 'search';
|
|
$form_message = getLanguageText('TEXT-STUDENT-STATUS-UPDATED');
|
|
header("Location: $FormTarget?action=$action&naction=$next_naction&mode=$mode&form_message=" . urlencode($form_message));
|
|
exit();
|
|
|
|
case "student-lookup":
|
|
include "students.lookup.php";
|
|
break;
|
|
|
|
case "student-lookup-search":
|
|
$search_text = db_escape_string($_POST['search_text']);
|
|
if (strlen($search_text) < 2) {
|
|
header("Location: /?action=users&naction=search");
|
|
exit();
|
|
}
|
|
|
|
$sTextB = "'%25" . $search_text . "%25'";
|
|
$sText = "'" . $search_text . "%25'";
|
|
|
|
$lookup_where = "AND (st.first_name LIKE $sText " .
|
|
"OR st.last_name LIKE $sText " .
|
|
"OR u.last_name LIKE $sTextB " .
|
|
"OR u.home_phone LIKE $sTextB)";
|
|
$naction = "list";
|
|
header("Location: /?action=$action&naction=$naction&lookup_where=" . urlencode($lookup_where));
|
|
break;
|
|
|
|
case "show-info":
|
|
include "students.info.php";
|
|
break;
|
|
|
|
case "delete-confirmed":
|
|
extract($_GET);
|
|
$student_num = intval($record_num);
|
|
|
|
$uwhere = "";
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent' || $_SESSION['mode'] == 'parent') {
|
|
$uwhere = "and user_num = " . $_SESSION['UserInfo']['record_num'] . " ";
|
|
}
|
|
|
|
$query = "select * from $CurrentTable " .
|
|
"where school_num = $base_school_num " .
|
|
$uwhere .
|
|
"and record_num = $student_num";
|
|
$results = db_query($query);
|
|
$numStudents = db_num_rows($results);
|
|
|
|
// Check if this student has orders that are not Inactive
|
|
if ($numStudents != 1) {
|
|
$error_message = getLanguageText('ERRORMSG-NOT-FOUND');
|
|
header("Location: $FormTarget?action=$action&naction=display&show_status=$show_status&show_type=$show_type&uid=$uid&mode=$mode&error_message=" . urlencode($error_message));
|
|
exit();
|
|
}
|
|
|
|
$row = db_fetch_array($results);
|
|
extract($row);
|
|
$snums = $school_record['linked_sites'];
|
|
$numOrders = db_getVal("SELECT count(*) FROM hotlunch_order_header " .
|
|
"WHERE school_num IN ($snums) " .
|
|
"AND ordered_by_num = $student_num " .
|
|
"AND status IN ('Unpaid','Pending','Paid','Complimentary')");
|
|
|
|
if ($numOrders > 0) {
|
|
$error_message = getLanguageText('ERRORMSG-NO-DELETE-ORDERS');
|
|
header("Location: $FormTarget?action=$action&naction=display&show_status=$show_status&show_type=$show_type&uid=$uid&mode=$mode&error_message=" . urlencode($error_message));
|
|
exit();
|
|
}
|
|
|
|
// Delete the current record
|
|
$query = "delete from $CurrentTable where school_num = $base_school_num and record_num = $record_num";
|
|
db_query($query);
|
|
|
|
// Delete any orders
|
|
logOrderChange($record_num, "STUDENT DELETED", "students.php");
|
|
$query = "delete from hotlunch_order_header where school_num = $school_num and ordered_by_num = $record_num";
|
|
db_query($query);
|
|
|
|
$query = "delete from hotlunch_order_items where school_num = $school_num and ordered_by_num = $record_num";
|
|
db_query($query);
|
|
|
|
// Delete any allergies entries
|
|
db_query("DELETE FROM allergies WHERE school_num = $base_school_num AND people_num = $record_num");
|
|
|
|
// Delete user account entries
|
|
$query = "delete from user_account where school_num = $base_school_num and people_num = $record_num";
|
|
db_query($query);
|
|
|
|
// Update user balance_owing
|
|
updateUserBalance($user_num,$school_num);
|
|
|
|
|
|
$form_message = getLanguageText('RECORD-DELETED-MSG');
|
|
|
|
$next_naction = 'search';
|
|
header("Location: $FormTarget?action=$action&naction=$next_naction&mode=$mode&form_message=" . urlencode($form_message));
|
|
exit();
|
|
|
|
case "verified":
|
|
case "unverified":
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
// Update student status
|
|
$status = 'Verified';
|
|
if ($naction == 'unverified') $status = 'Unverified';
|
|
|
|
$query = "update people set status = '$status' " .
|
|
"where school_num = $base_school_num " .
|
|
"and record_num = $record_num";
|
|
db_query($query);
|
|
|
|
$form_message = getLanguageText('TEXT-STUDENT-STATUS-UPDATED');
|
|
include 'students.display.php';
|
|
break;
|
|
|
|
case "verify-all":
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
// Update student status
|
|
$status = 'Verified';
|
|
|
|
$query = "update people set status = '$status' " .
|
|
"where school_num = $base_school_num " .
|
|
"and class_num = $current_class_num";
|
|
db_query($query);
|
|
|
|
$form_message = getLanguageText('TEXT-STUDENT-VERIFY-ALL');
|
|
include 'students.display.php';
|
|
break;
|
|
|
|
case "update-verified":
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
// Update student status
|
|
$status = 'Verified';
|
|
|
|
$query = "update people set status = '$status' " .
|
|
"where school_num = $base_school_num";
|
|
db_query($query);
|
|
|
|
$form_message = getLanguageText('TEXT-STUDENT-VERIFY-ALL');
|
|
$action = "students";
|
|
$naction = "list-unverified";
|
|
include 'students.display.php';
|
|
break;
|
|
|
|
case "update-unverified":
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
// Update student status
|
|
$status = 'Unverified';
|
|
|
|
$query = "update people set status = '$status' " .
|
|
"where school_num = $base_school_num";
|
|
db_query($query);
|
|
|
|
$form_message = getLanguageText('RECORDS-UPDATED-MSG');
|
|
$action = "students";
|
|
$naction = "search";
|
|
include 'students.display.php';
|
|
break;
|
|
|
|
case "set-price-cat":
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
// Update student price category
|
|
$category = db_escape_string($_GET['price_category']);
|
|
|
|
if (isset($current_class_num) && $current_class_num > 0) {
|
|
$query = "update people set menu_price_category = '$category' " .
|
|
"where school_num = $base_school_num " .
|
|
"and class_num = $current_class_num";
|
|
}
|
|
else {
|
|
$query = "update people set menu_price_category = '$category' " .
|
|
"where school_num = $base_school_num";
|
|
}
|
|
db_query($query);
|
|
|
|
$form_message = getLanguageText('RECORDS-UPDATED-MSG');
|
|
include 'students.display.php';
|
|
break;
|
|
|
|
case "search":
|
|
default:
|
|
if ($userType == 'Parent' || $mode == 'parent') {
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
// Student Lookup Form
|
|
include "students.lookup.php";
|
|
|
|
$ChoosePagination = 'Y';
|
|
$next_naction = "lookup";
|
|
|
|
// include $FormFile;
|
|
break;
|
|
|
|
case "lookup":
|
|
extract($_POST);
|
|
if ($people_type == 'Parent') {
|
|
$people_type = 'Customer';
|
|
$class_num = 2;
|
|
}
|
|
$user_num = $selected_user_num;
|
|
$school_num = $base_school_num;
|
|
$table = new Table("$CurrentTable");
|
|
$lookup_query = $table->BuildQuery("","","st.");
|
|
$school_num = $school_record['record_num'];
|
|
|
|
$lookup_where = "";
|
|
if (strpos($lookup_query,"where ")) {
|
|
$lookup_where = strstr($lookup_query," where");
|
|
$lookup_where = str_replace(" where"," and",$lookup_where);
|
|
}
|
|
|
|
if (strpos(strtolower($lookup_where),"order by ")) $lookup_where = preg_replace("/order by .*/i","",$lookup_where);
|
|
$lookup_where .= " ";
|
|
$naction = "list";
|
|
$TitleText = getLanguageText('RECORD-LOOKUP');
|
|
if (isset($user_num) && $user_num > 0) {
|
|
$query = "select * from users where record_num = $user_num";
|
|
$results = db_query($query);
|
|
$row = db_fetch_array($results);
|
|
$userid = $row['userid'];
|
|
$name = $row['first_name'] . ' ' . $row['last_name'];
|
|
$PageTitle = getLanguageText('TEXT-STUDENT-ACCOUNT-LIST') . "<br> $name ($userid)";
|
|
}
|
|
|
|
include 'students.display.php';
|
|
break;
|
|
|
|
case "fetch":
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
$lookup_where = "where school.record_num = $record_num";
|
|
$naction = "list";
|
|
$TitleText = getLanguageText('RECORD-LOOKUP');
|
|
break;
|
|
|
|
case "edit-verified":
|
|
case "edit-unverified":
|
|
case "edit-all":
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
$title = "Edit Students";
|
|
$swhere = "";
|
|
$grouping = "All";
|
|
|
|
if ($naction == "edit-verified") {
|
|
$swhere .= "AND status = 'Verified' ";
|
|
$title = "Edit Verified Students";
|
|
$grouping = "Verified";
|
|
}
|
|
|
|
if ($naction == "edit-unverified") {
|
|
$swhere .= "AND status = 'Unverified' ";
|
|
$title = "Edit Unverified Students";
|
|
$grouping = "Unverified";
|
|
}
|
|
|
|
if (isset($current_class_num) && $current_class_num > 0) {
|
|
$swhere .= "AND class_num = $current_class_num ";
|
|
$title = "Edit $grouping Class Students";
|
|
}
|
|
|
|
$results = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND people_type IN ('Student','Customer') $swhere ORDER BY last_name,first_name");
|
|
if (db_num_rows($results)) {
|
|
$num = db_num_rows($results);
|
|
|
|
include "students.edit-all.php";
|
|
}
|
|
break;
|
|
|
|
case "update-all":
|
|
$grouping = $_POST['grouping'];
|
|
$swhere = "";
|
|
if ($grouping == 'Verified') $swhere = "AND status = 'Verified' ";
|
|
if ($grouping == 'Unverified') $swhere = "AND status = 'Unverified' ";
|
|
if (array_key_exists('current_class_num',$_POST) && $_POST['current_class_num'] > 0) $swhere .= "AND class_num = " . $_POST['current_class_num'] . " ";
|
|
|
|
$results = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND people_type IN ('Student','Customer') $swhere ORDER BY last_name,first_name");
|
|
|
|
while ($row = db_fetch_array($results)) {
|
|
$rnum = $row['record_num'];
|
|
if (isset($_POST["class$rnum"]) && $_POST["class$rnum"] > 0) {
|
|
$class_num = intval($_POST["class$rnum"]);
|
|
$status = db_escape_string($_POST["status$rnum"]);
|
|
$display = db_escape_string($_POST["display$rnum"]);
|
|
|
|
if ($school_record['user_defined_values'] == 'Y') {
|
|
$user_defined_value = $_POST["user_val$rnum"];
|
|
db_query("UPDATE people SET class_num = $class_num,status = '$status',display = '$display',user_defined_value = '$user_defined_value' WHERE record_num = $rnum");
|
|
}
|
|
else {
|
|
db_query("UPDATE people SET class_num = $class_num,status = '$status',display = '$display' WHERE record_num = $rnum");
|
|
}
|
|
}
|
|
}
|
|
|
|
$form_message = getLanguageText('MSG-STUDENTS-UPDATED');
|
|
|
|
unset($class_num);
|
|
unset($status);
|
|
unset($display);
|
|
unset($user_defined_value);
|
|
|
|
$naction = "lookup";
|
|
$next_naction = "lookup";
|
|
|
|
break;
|
|
|
|
case "reset-meal-locations":
|
|
db_query("UPDATE people SET meal_location = class_num WHERE school_num = $base_school_num AND people_type IN ('Student','Customer','Staff')");
|
|
|
|
case "edit-meal-locations":
|
|
if ($_SESSION['UserInfo']['type'] == 'Parent') {
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
$title = getLanguageText('TEXT-ALTERNATE-LOCATION');
|
|
|
|
$results = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND people_type IN ('Student','Customer') ORDER BY last_name,first_name");
|
|
if (db_num_rows($results)) {
|
|
$num = db_num_rows($results);
|
|
|
|
include "students.edit-meal-locations.php";
|
|
}
|
|
break;
|
|
|
|
case "update-meal-locations":
|
|
$results = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND people_type IN ('Student','Customer') ORDER BY last_name,first_name");
|
|
|
|
while ($row = db_fetch_array($results)) {
|
|
$rnum = $row['record_num'];
|
|
$meal_location = intval($_POST['meal_location_'.$rnum]);
|
|
db_query("UPDATE people SET meal_location = $meal_location WHERE record_num = $rnum");
|
|
}
|
|
|
|
$form_message = getLanguageText('MSG-STUDENTS-UPDATED');
|
|
|
|
unset($class_num);
|
|
unset($status);
|
|
unset($display);
|
|
unset($user_defined_value);
|
|
|
|
$results = db_query("SELECT * FROM people WHERE school_num = $base_school_num AND people_type IN ('Student','Customer') ORDER BY last_name,first_name");
|
|
if (db_num_rows($results)) {
|
|
$num = db_num_rows($results);
|
|
|
|
include "students.edit-meal-locations.php";
|
|
}
|
|
break;
|
|
|
|
case "upload-form":
|
|
include "students.upload.form.php";
|
|
break;
|
|
|
|
case "upload":
|
|
$num_fields = $_POST['num_fields'];
|
|
$fields = explode(",",$_POST['fields']);
|
|
|
|
// Get and process the data file
|
|
$temp_name = $_FILES['filename']['tmp_name'];
|
|
$file_name = str_replace(' ','_',$_FILES['filename']['name']);
|
|
|
|
if (strlen($file_name) == 0) {
|
|
$error_message = getLanguageText('MSG-NO-SOURCE-DATA-FILE');
|
|
$naction = "upload-form";
|
|
header("Location: /?action=$action&naction=$naction&error_message=".urlencode($error_message));
|
|
exit();
|
|
}
|
|
|
|
// Validate the file type
|
|
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
|
$ftype = finfo_file($finfo,$temp_name);
|
|
if ($ftype != "text/plain") {
|
|
$error_message = getLanguageText('ERRORMSG-INVALID-FILE-FORMAT');
|
|
$naction = "upload-form";
|
|
header("Location: /?action=$action&naction=$naction&error_message=".urlencode($error_message));
|
|
exit();
|
|
}
|
|
|
|
// Move file to temp folder
|
|
if (!move_uploaded_file($temp_name,"temp/$school_num.students.csv")) {
|
|
$error_message = getLanguageText('MSG-ZERO-UPLOADED');
|
|
$new_naction = "upload-form";
|
|
break;
|
|
}
|
|
|
|
// Open and process the data file
|
|
$fp = fopen("temp/$school_num.students.csv","r");
|
|
$records = 0;
|
|
|
|
|
|
$class_data = $_POST['class_data'];
|
|
$userid_source = $_POST['userid_source'];
|
|
$password_source = $_POST['password_source'];
|
|
|
|
// Characters for generated password
|
|
$CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
$charsLength = strlen($CHARS) - 1;
|
|
|
|
|
|
// Delete existing if required
|
|
if (array_key_exists('delete_existing', $_POST) && $_POST['delete_existing'] == 'Y') {
|
|
$linked_sites = $school_record['linked_sites'];
|
|
|
|
db_query("delete from users where school_num = $school_num and type in ('Parent','Administration Team','Schedule Team','Volunteer Administrator')");
|
|
db_query("delete from user_account where school_num IN ($linked_sites)");
|
|
db_query("DELETE FROM user_account_detail WHERE school_num IN ($linked_sites)");
|
|
|
|
db_query("delete from user_online_payments where school_num IN ($linked_sites)");
|
|
db_query("delete from user_paypal_transactions where school_num IN ($linked_sites)");
|
|
db_query("delete from user_exact_transactions where school_num IN ($linked_sites)");
|
|
db_query("delete from user_merchant_account_transactions where school_num IN ($linked_sites)");
|
|
|
|
db_query("delete from people where school_num = $school_num and people_type = 'Student'");
|
|
db_query("delete from people where school_num = $school_num and people_type = 'Customer'");
|
|
}
|
|
|
|
|
|
$user_count = 0;
|
|
$class_count = 0;
|
|
$student_count = 0;
|
|
$error_count = 0;
|
|
$skipped_count = 0;
|
|
|
|
// delete existing entries
|
|
db_query("DELETE FROM people_csv WHERE school_num = $school_num");
|
|
|
|
// Setup defaults for student insert
|
|
$people_csv = new Table("people_csv");
|
|
$people = new Table("people");
|
|
$users = new Table("users");
|
|
$ua = new Table("user_account");
|
|
|
|
$added_date = date("Y-m-d",time());
|
|
$date_added = date("Y-m-d",time());
|
|
$people_type = "Student";
|
|
$status = "Verified";
|
|
$display = 'N';
|
|
$menu_price_category = "Regular";
|
|
$create_flag = 'N';
|
|
$created = 'N';
|
|
|
|
$errors = array();
|
|
$dataset_num = 1;
|
|
$prev_snum = 0;
|
|
$sequence = 1;
|
|
$count = 0;
|
|
if ($skip_first_row == 'Y') $count = 1;
|
|
$row_num = 0;
|
|
|
|
$country = $school_record['country'];
|
|
db_query("DELETE FROM upload_columns WHERE school_num = $school_num AND action = '$action'");
|
|
$row_processed = false;
|
|
|
|
|
|
if (array_key_exists('date_format',$_POST)) {
|
|
$date_format = $_POST['date_format'];
|
|
db_query("INSERT INTO upload_columns (school_num, action, field, value) VALUES ($school_num,'$action','date_format','$date_format')");
|
|
}
|
|
|
|
if (array_key_exists('skip_first_row',$_POST)) {
|
|
$skip_first_row = $_POST['skip_first_row'];
|
|
db_query("INSERT INTO upload_columns (school_num, action, field, value) VALUES ($school_num,'$action','skip_first_row','$skip_first_row')");
|
|
}
|
|
|
|
if (array_key_exists('userid_source',$_POST)) {
|
|
$userid_source = $_POST['userid_source'];
|
|
db_query("INSERT INTO upload_columns (school_num, action, field, value) VALUES ($school_num,'$action','userid_source','$userid_source')");
|
|
}
|
|
|
|
if (array_key_exists('password_source',$_POST)) {
|
|
$password_source = $_POST['password_source'];
|
|
db_query("INSERT INTO upload_columns (school_num, action, field, value) VALUES ($school_num,'$action','password_source','$password_source')");
|
|
}
|
|
|
|
while (($data = fgetcsv($fp,10000,",")) !== FALSE) {
|
|
$row_num++;
|
|
if ($row_num == 1 && $skip_first_row == 'Y') continue;
|
|
|
|
$numDataFields = count($data);
|
|
if ($numDataFields == 0) continue;
|
|
$count++;
|
|
|
|
// Set defaults
|
|
$balance = 0.00;
|
|
$note = '';
|
|
|
|
|
|
// Parse the data from the record
|
|
for ($i = 0; $i < count($fields); $i++) {
|
|
$fname = $fields[$i];
|
|
unset($$fname);
|
|
|
|
// Update upload column entry
|
|
$col = $_POST[$fname];
|
|
if (!$row_processed) db_query("INSERT INTO upload_columns (school_num, action, field, column_num) VALUES ($school_num,'$action','$fname',$col) ON DUPLICATE KEY UPDATE column_num = $col");
|
|
|
|
if (array_key_exists($fname, $_POST) && strlen($_POST[$fname]) > 0) {
|
|
$col = $_POST[$fname] - 1;
|
|
$$fname = preg_replace('/\$/','',trim($data[$col]));
|
|
|
|
// Format birthdate
|
|
if ($fname == "birthdate") {
|
|
if (array_key_exists('date_format',$_POST)) {
|
|
$birthdate = formatDate($birthdate,$_POST['date_format']);
|
|
}
|
|
else {
|
|
$birthdate = date("Y-m-d",strtotime($date));
|
|
}
|
|
}
|
|
|
|
// Set gender/sex field
|
|
if ($fname == "sex") {
|
|
switch ($sex) {
|
|
case 'F':
|
|
$sex = 'Female';
|
|
break;
|
|
|
|
case 'M':
|
|
default:
|
|
$sex = 'Male';
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Set account balance if required
|
|
if ($fname == "balance") {
|
|
$balance = number_format(floatval($data[$col]),2);
|
|
}
|
|
|
|
if ($fname == "email") $email = strtolower($email);
|
|
if ($fname == "email2") $email2 = strtolower($email2);
|
|
if ($fname == "email3") $email3 = strtolower($email3);
|
|
if ($fname == "email4") $email4 = strtolower($email4);
|
|
}
|
|
}
|
|
$row_processed = true;
|
|
|
|
// Check for duplicate email addresses
|
|
$emails = array();
|
|
if (strlen($email)) $emails[] = $email;
|
|
if (strlen($email2) && !in_array($email2,$emails)) $emails[] = $email2;
|
|
if (strlen($email3) && !in_array($email3,$emails)) $emails[] = $email3;
|
|
if (strlen($email4) && !in_array($email4,$emails)) $emails[] = $email4;
|
|
|
|
unset($email);
|
|
unset($email2);
|
|
unset($email3);
|
|
unset($email4);
|
|
|
|
switch (count($emails)) {
|
|
case 3:
|
|
$email3 = $emails[2];
|
|
case 2:
|
|
$email2 = $emails[1];
|
|
case 1:
|
|
$email = $emails[0];
|
|
default:
|
|
break;
|
|
}
|
|
|
|
|
|
// Ensure that there is at least a student name
|
|
if (strlen($first_name) == 0 || strlen($last_name) == 0) {
|
|
$error_count++;
|
|
$errors[] = array($count, getLanguageText('ERRORMSG-FIRST-LAST-NAME-REQUIRED'), $first_name, $last_name);
|
|
continue;
|
|
}
|
|
|
|
// Ensure there is a student number
|
|
if (strlen($student_number) == 0) {
|
|
$error_count++;
|
|
$errors[] = array($count, getLanguageText('ERRORMSG-STUDENT-NUMBER-REQUIRED'), $first_name, $last_name);
|
|
continue;
|
|
}
|
|
|
|
|
|
// Check for an existing entry
|
|
$query = "SELECT * FROM people WHERE school_num = $school_num AND student_number = '".db_escape_string($student_number)."'";
|
|
echo("<!-- $query -->\n");
|
|
$results = db_query($query);
|
|
if (db_num_rows($results)) {
|
|
$skipped_count++;
|
|
echo("<!-- skipped: $skipped_count -->\n");
|
|
continue;
|
|
}
|
|
|
|
// Ensure there is a grade or division value
|
|
if (strlen($division) == 0) unset($division);
|
|
if (strlen($grade) == 0) unset($grade);
|
|
|
|
if (!isset($division) && !isset($grade)) {
|
|
$error_count++;
|
|
$errors[] = array($count, getLanguageText('ERRORMSG-CLASS-DATA-MISSING'), $first_name, $last_name);
|
|
continue;
|
|
}
|
|
|
|
// Update sequence for individual students
|
|
if ($student_number == $prev_snum) $sequence++;
|
|
else {
|
|
$sequence = 1;
|
|
|
|
// Get student class number
|
|
unset($class_num);
|
|
|
|
// Check using division field if set
|
|
if (!isset($class_num) && isset($division)) {
|
|
$results = db_query("SELECT record_num FROM classes WHERE school_num = $school_num AND division = '$division'");
|
|
if (db_num_rows($results)) {
|
|
$row = db_fetch_assoc($results);
|
|
$class_num = $row['record_num'];
|
|
}
|
|
}
|
|
|
|
// Check using grade field if set
|
|
if (!isset($class_num) && isset($grade)) {
|
|
$results = db_query("SELECT * FROM classes WHERE school_num = $school_num AND grade = '$grade'");
|
|
if (db_num_rows($results)) {
|
|
$row = db_fetch_assoc($results);
|
|
$class_num = $row['record_num'];
|
|
$menu_price_category = $row['default_price_category'];
|
|
}
|
|
}
|
|
|
|
// Create class if not found
|
|
if (!isset($class_num)) {
|
|
$class_sequence = db_getVal("SELECT max(sequence) FROM classes WHERE school_num = $base_school_num") + 0;
|
|
$class_sequence++;
|
|
|
|
if (isset($grade)) {
|
|
if (isset($division)) {
|
|
echo("<!-- INSERT INTO classes (school_num,grade,division,sequence,default_price_category) VALUES($school_num,'$grade','$division',$class_sequence,'Regular') -->\n");
|
|
db_query("INSERT INTO classes (school_num,grade,division,sequence,default_price_category) VALUES($school_num,'$grade','$division',$class_sequence,'Regular')");
|
|
}
|
|
else {
|
|
echo("<!-- INSERT INTO classes (school_num,grade,sequence,default_price_category) VALUES($school_num,'$grade',$class_sequence,'Regular') -->\n");
|
|
db_query("INSERT INTO classes (school_num,grade,sequence,default_price_category) VALUES($school_num,'$grade',$class_sequence,'Regular')");
|
|
}
|
|
}
|
|
else {
|
|
echo("<!-- INSERT INTO classes (school_num,division,sequence,default_price_category) VALUES($school_num,'$division',$class_sequence,'Regular') -->\n");
|
|
db_query("INSERT INTO classes (school_num,division,sequence,default_price_category) VALUES($school_num,'$division',$class_sequence,'Regular')");
|
|
}
|
|
|
|
$class_num = db_insert_id();
|
|
$menu_price_category = 'Regular';
|
|
}
|
|
}
|
|
|
|
// Format phone numbers
|
|
if ($school_record['country'] == 'Canada' || $school_record['country'] == 'USA') {
|
|
if (strlen($home_phone)) {
|
|
$home_phone = preg_replace("/[^0-9]/","",$home_phone);
|
|
$home_phone = "(" . substr($home_phone,0,3) . ")" . substr($home_phone,3,3) . "-" . substr($home_phone,6);
|
|
}
|
|
if (strlen($daytime_phone)) {
|
|
$daytime_phone = preg_replace("/[^0-9]/","",$daytime_phone);
|
|
$daytime_phone = "(" . substr($daytime_phone,0,3) . ")" . substr($daytime_phone,3,3) . "-" . substr($daytime_phone,6);
|
|
}
|
|
if (strlen($cell_phone)) {
|
|
$cell_phone = preg_replace("/[^0-9]/","",$cell_phone);
|
|
$cell_phone = "(" . substr($cell_phone,0,3) . ")" . substr($cell_phone,3,3) . "-" . substr($cell_phone,6);
|
|
}
|
|
}
|
|
|
|
// Format parent names if required
|
|
if (strlen($parent_name) && strlen($parent_first_name) == 0 && strlen($parent_last_name) == 0) {
|
|
list($parent_first_name,$parent_last_name) = explode(" ",$parent_name,2);
|
|
}
|
|
|
|
if (strlen($parent_name2) && strlen($parent_first_name2) == 0 && strlen($parent_last_name2) == 0) {
|
|
list($parent_first_name2,$parent_last_name2) = explode(" ",$parent_name2,2);
|
|
}
|
|
|
|
// Ensure date format is correct
|
|
if (isset($birthdate) && strlen($birthdate)) {
|
|
$birthdate = date("Y-m-d",strtotime($birthdate));
|
|
}
|
|
|
|
$prev_snum = $student_number;
|
|
|
|
// Save record
|
|
$query = $people_csv->BuildInsert();
|
|
echo("<!-- $query -->\n");
|
|
db_query($query);
|
|
$records++;
|
|
}
|
|
|
|
// if ($_SESSION['UserInfo']['type'] == 'SuperUser') exit();
|
|
|
|
|
|
// Check for relationships table entries
|
|
$numRelationships = db_getVal("SELECT count(*) FROM people_relationships WHERE school_num = $school_num");
|
|
$numStudentRelationships = db_getVal("SELECT count(*) FROM people_csv WHERE school_num = $school_num AND length(relationship) > 0");
|
|
|
|
$useRelationships = false;
|
|
if ($numRelationships > 0 && $numStudentRelationships > 0) $useRelationships = true;
|
|
|
|
|
|
// Create students and parents entries
|
|
$query = "SELECT DISTINCT student_number FROM people_csv WHERE school_num = $school_num ORDER BY student_number";
|
|
$snums = db_query($query);
|
|
|
|
// Identify which entry to use for account
|
|
while ($row = db_fetch_assoc($snums)) {
|
|
$snum = $row['student_number'];
|
|
|
|
// Get student's entries in csv table
|
|
if ($useRelationships) {
|
|
$Squery = "SELECT pc.*,pr.sequence AS rsequence FROM people_csv AS pc, people_relationships AS pr " .
|
|
"WHERE pc.school_num = $school_num " .
|
|
"AND pr.school_num = $school_num " .
|
|
"AND pc.relationship = pr.relationship " .
|
|
"AND pc.student_number = '$snum' " .
|
|
"ORDER BY rsequence, sequence";
|
|
}
|
|
else {
|
|
$Squery = "SELECT * FROM people_csv WHERE school_num = $school_num AND student_number = '$snum' ORDER BY sequence";
|
|
}
|
|
|
|
$create_flag = 'N';
|
|
$entries = db_query($Squery);
|
|
if (db_num_rows($entries)) {
|
|
// Get all entries for this student into an array
|
|
$studentEntries = array();
|
|
while ($row = db_fetch_assoc($entries)) {
|
|
$studentEntries[] = $row;
|
|
}
|
|
|
|
for ($i = 0; $create_flag == 'N' && $i < count($studentEntries); $i++) {
|
|
extract($studentEntries[$i]);
|
|
|
|
$match = 0;
|
|
|
|
if (strlen($userid) == 0 && strlen($email) && str_match('@',$email)) {
|
|
if ($userid_source == 'Email Address') $userid = db_escape_string($email);
|
|
if ($userid_source == 'Parent First Name and Last Name') {
|
|
$fname = str_replace('.','',str_replace("'",'',str_replace(' ','',$parent_first_name)));
|
|
$lname = str_replace('.','',str_replace("'",'',str_replace(' ','',$parent_last_name)));
|
|
$userid = db_escape_string(strtolower($fname.'.'.$lname));
|
|
}
|
|
if ($userid_source == 'Student Number') $userid = db_escape_string($student_number);
|
|
$match = 1;
|
|
}
|
|
|
|
if (strlen($userid) == 0 && strlen($email2) && str_match('@',$email2)) {
|
|
if ($userid_source == 'Email Address') $userid = db_escape_string($email2);
|
|
if ($userid_source == 'Parent First Name and Last Name') {
|
|
$fname = str_replace('.','',str_replace("'",'',str_replace(' ','',$parent_first_name2)));
|
|
$lname = str_replace('.','',str_replace("'",'',str_replace(' ','',$parent_last_name2)));
|
|
$userid = db_escape_string(strtolower($fname.'.'.$lname));
|
|
}
|
|
$match = 2;
|
|
}
|
|
|
|
if (strlen($userid)) {
|
|
// Set password
|
|
switch ($password_source) {
|
|
case 'Email Address':
|
|
if ($match == 1) $password = db_escape_string($email);
|
|
if ($match == 2) $password = db_escape_string($email2);
|
|
break;
|
|
|
|
case 'Parent First Name and Last Name':
|
|
if ($match == 1) {
|
|
$fname = str_replace('.','',str_replace("'",'',str_replace(' ','',$parent_first_name)));
|
|
$lname = str_replace('.','',str_replace("'",'',str_replace(' ','',$parent_last_name)));
|
|
$password = db_escape_string(strtolower($fname.'.'.$lname));
|
|
}
|
|
if ($match == 2) {
|
|
$fname = str_replace('.','',str_replace("'",'',str_replace(' ','',$parent_first_name2)));
|
|
$lname = str_replace('.','',str_replace("'",'',str_replace(' ','',$parent_last_name2)));
|
|
$password = db_escape_string(strtolower($fname.'.'.$lname));
|
|
}
|
|
break;
|
|
|
|
case 'Home Phone':
|
|
$password = preg_replace("/[^0-9]/","",$home_phone);
|
|
break;
|
|
|
|
case 'User ID':
|
|
$password = $userid;
|
|
break;
|
|
|
|
case 'Initials and Student Number':
|
|
$password = substr($parent_first_name,0,1).substr($parent_last_name,0,1).$student_number;
|
|
echo("<!-- password: $password -->\n");
|
|
break;
|
|
|
|
case 'Random Password':
|
|
$password = "";
|
|
while (strlen($password) < 10) {
|
|
$c = rand(0,$charsLength);
|
|
$password .= substr($CHARS,$c,1);
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (strlen($password) == 0) $password = $userid;
|
|
|
|
// Update entry to flag it for use as user account
|
|
db_query("UPDATE people_csv SET create_flag = 'Y', userid = '$userid', password = '$password' WHERE school_num = $school_num AND record_num = $record_num");
|
|
$create_flag = 'Y';
|
|
|
|
// Check for a second email address
|
|
$i++;
|
|
if (array_key_exists('save_second_email_address', $_POST) && $_POST['save_second_email_address'] == 'Y' && strlen($email2) == 0 && count($studentEntries) > $i) {
|
|
for ($j = $i; $j < count($studentEntries); $j++) {
|
|
$email2 = $studentEntries[$j]['email'];
|
|
if (strlen($email2) && str_match('@',$email2)) {
|
|
$first_name2 = db_escape_string($studentEntries[$j]['parent_first_name']);
|
|
$last_name2 = db_escape_string($studentEntries[$j]['parent_last_name']);
|
|
$email2 = db_escape_string($email2);
|
|
|
|
db_query("UPDATE people_csv SET parent_first_name2 = '$first_name2', parent_last_name2 = '$last_name2', email2 = '$email2' WHERE school_num = $school_num AND record_num = $record_num");
|
|
$j = count($studentEntries);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// If no entry with email address was found then use the first entry for the student
|
|
if ($create_flag == 'N') {
|
|
$results = db_query($query);
|
|
$row = db_fetch_assoc($results);
|
|
extract($row);
|
|
|
|
// Set userid
|
|
if (strlen($userid) == 0) {
|
|
if (strlen($parent_first_name) && strlen($parent_last_name)) $userid = db_escape_string(strtolower($parent_first_name.'.'.$parent_last_name));
|
|
if (strlen($userid) == 0 && strlen($parent_first_name)) $userid = db_escape_string(strtolower($parent_first_name));
|
|
if (strlen($userid) == 0 && strlen($parent_last_name)) $userid = db_escape_string(strtolower($parent_last_name));
|
|
|
|
if (strlen($userid) == 0) {
|
|
if (strlen($parent_first_name2) && strlen($parent_last_name2)) $userid = db_escape_string(strtolower($parent_first_name2.'.'.$parent_last_name2));
|
|
if (strlen($userid) == 0 && strlen($parent_first_name2)) $userid = db_escape_string(strtolower($parent_first_name2));
|
|
if (strlen($userid) == 0 && strlen($parent_last_name2)) $userid = db_escape_string(strtolower($parent_last_name2));
|
|
}
|
|
|
|
if (strlen($userid) == 0) $userid = "no.parent.info";
|
|
|
|
$userid = str_replace(" ","",$userid);
|
|
}
|
|
|
|
// Set password
|
|
switch ($password_source) {
|
|
case 'Email Address':
|
|
$password = db_escape_string(strtolower($email));
|
|
break;
|
|
|
|
case 'Parent First Name and Last Name':
|
|
$password = db_escape_string(strtolower($parent_first_name.'.'.$parent_last_name));
|
|
$password = str_replace(" ","",$password);
|
|
break;
|
|
|
|
case 'Home Phone':
|
|
$password = preg_replace("/[^0-9]/","",$home_phone);
|
|
break;
|
|
|
|
case 'User ID':
|
|
$password = $userid;
|
|
break;
|
|
}
|
|
|
|
if (strlen($password) == 0) $password = $userid;
|
|
|
|
db_query("UPDATE people_csv SET create_flag = 'Y', userid = '$userid', password = '$password' WHERE school_num = $school_num AND record_num = $record_num");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
$create_log = array();
|
|
|
|
$query = "SELECT * FROM people_csv WHERE school_num = $school_num AND create_flag = 'Y' ORDER BY student_number";
|
|
$entries = db_query($query);
|
|
while ($row = db_fetch_assoc($entries)) {
|
|
extract($row);
|
|
|
|
// Check if this student is in the system already
|
|
$results = db_query("SELECT * FROM people WHERE school_num = $school_num AND student_number = '$student_number'");
|
|
if (db_num_rows($results)) {
|
|
$create_log[] = array($student_number, $first_name, $last_name, '', '', '', getLanguageText('TEXT-DUPLICATE-ENTRY'));
|
|
continue;
|
|
}
|
|
else {
|
|
|
|
// Check if there is a user account already
|
|
$userRecord = array();
|
|
$userRecord['school_num'] = $school_num;
|
|
$userRecord['first_name'] = db_escape_string($parent_first_name);
|
|
$userRecord['last_name'] = db_escape_string($parent_last_name);
|
|
$userRecord['first_name2'] = db_escape_string($parent_first_name2);
|
|
$userRecord['last_name2'] = db_escape_string($parent_last_name2);
|
|
$userRecord['userid'] = db_escape_string($userid);
|
|
$userRecord['password'] = db_escape_string($password);
|
|
$userRecord['email'] = db_escape_string($email);
|
|
$userRecord['email2'] = db_escape_string($email2);
|
|
$userRecord['home_phone'] = db_escape_string($home_phone);
|
|
$userRecord['daytime_phone'] = db_escape_string($daytime_phone);
|
|
$userRecord['cell_phone'] = db_escape_string($cell_phone);
|
|
|
|
$userRecord['type'] = 'Parent';
|
|
$userRecord['status'] = 'Active';
|
|
$userRecord['date_added'] = $date_added;
|
|
$userRecord['can_order'] = 'Yes';
|
|
$userRecord['has_order'] = 'N';
|
|
$userRecord['num_orders'] = 0;
|
|
$userRecord['balance_owing'] = 0.00;
|
|
$userRecord['account_balance'] = 0.00;
|
|
$userRecord['receive_emails'] = 'Y';
|
|
$userRecord['email_reminders'] = 'Y';
|
|
$userRecord['email_flag'] = 'Y';
|
|
$userRecord['language'] = $school_record['default_language'];
|
|
$userRecord['added_time'] = time();
|
|
|
|
|
|
$results = db_query("SELECT * FROM users WHERE school_num = $base_school_num AND userid = '" . db_escape_string($userid) . "'");
|
|
|
|
// Get user_num if record found
|
|
if (db_num_rows($results) == 1) {
|
|
$row = db_fetch_array($results);
|
|
$user_num = $row['record_num'];
|
|
|
|
$status = getLanguageText('TEXT-USER-ACCOUNT-FOUND');
|
|
if ($parent_first_name != $row['first_name']) $status .= " (" . getLanguageText('TEXT-PARENT-FIRST-NAME') . ")";
|
|
if ($parent_last_name != $row['last_name']) $status .= " (" . getLanguageText('TEXT-PARENT-LAST-NAME') . ")";
|
|
if ($home_phone != $row['home_phone']) $status .= " (" . getLanguageText('TEXT-HOME-PHONE') . ")";
|
|
|
|
$create_log[] = array($student_number, $first_name, $last_name, $userid, $parent_first_name, $parent_last_name, getLanguageText('TEXT-USER-ACCOUNT-FOUND'));
|
|
}
|
|
else {
|
|
if (strlen($userRecord['email']) == 0 && strlen($userRecord['email2']) > 0) {
|
|
$userRecord['email'] = $userRecord['email2'];
|
|
$userRecord['email2'] = "";
|
|
}
|
|
|
|
$userRecord['password_crypt'] = encrypt_password($password);
|
|
|
|
// Create user account if not found
|
|
$query = $users->BuildInsert($userRecord);
|
|
echo("<!-- $query -->\n");
|
|
db_query($query);
|
|
$user_num = db_insert_id();
|
|
$user_count++;
|
|
|
|
// Create balance forward entry if there is a balance amount
|
|
if ($balance != 0.00) {
|
|
$transaction_type = 'Charge Adjustment';
|
|
if ($balance < 0) $transaction_type = 'Credit Adjustment';
|
|
if (strlen($note) == 0) $note = $school_record['previous_balances_post_message'];
|
|
else $note = $school_record['previous_balances_post_message'] . ": $note";
|
|
$transaction_amount = $balance;
|
|
$entered_time = time();
|
|
$transaction_datetime = date("Y-m-d H:i:s",$entered_time);
|
|
|
|
// Create a new transaction
|
|
$query = $ua->BuildInsert();
|
|
echo("<!-- $query -->\n");
|
|
db_query($query);
|
|
}
|
|
|
|
$create_log[] = array($student_number, $first_name, $last_name, $userid, $parent_first_name, $parent_last_name, getLanguageText('TEXT-USER-ACCOUNT-CREATED'));
|
|
}
|
|
|
|
|
|
// Insert student record
|
|
$status = 'Verified';
|
|
$display = 'Y';
|
|
$active = 'Y';
|
|
$query = $people->BuildInsert();
|
|
echo("<!-- $query -->\n");
|
|
db_query($query);
|
|
$student_count++;
|
|
}
|
|
}
|
|
|
|
|
|
$data = array();
|
|
$data[] = array(getLanguageText('TEXT-CLASSES'),$class_count);
|
|
$data[] = array(getLanguageText('TEXT-PARENTS'),$user_count);
|
|
$data[] = array(getLanguageText('TEXT-STUDENTS'),$student_count);
|
|
$data[] = array(getLanguageText('TEXT-ERRORS'),$error_count);
|
|
$data[] = array(getLanguageText('TEXT-SKIPPED'),$skipped_count);
|
|
|
|
$columnHeaders = array(getLanguageText('TEXT-RESULT'),getLanguageText('TEXT-NUMBER'));
|
|
$columnAlign = array('center','center');
|
|
$TableWidth = 450;
|
|
listDataCustom($data,$columnHeaders,'',array(),'N',$columnAlign);
|
|
|
|
echo("<br>");
|
|
|
|
$columnHeaders = array(getLanguageText('TEXT-STUDENT-NUMBER'),
|
|
getLanguageText('TEXT-FIRST-NAME'),
|
|
getLanguageText('TEXT-LAST-NAME'),
|
|
getLanguageText('TEXT-USER-ID'),
|
|
getLanguageText('TEXT-PARENT-FIRST-NAME'),
|
|
getLanguageText('TEXT-PARENT-LAST-NAME'),
|
|
getLanguageText('TEXT-STATUS'));
|
|
$columnAlign = array('center','center','center','center','center','center','center');
|
|
unset($TableWidth);
|
|
listDataCustom($create_log,$columnHeaders,'',array(),'N',$columnAlign);
|
|
|
|
if ($error_count > 0) {
|
|
$columnHeaders = array("Row","Error","First Name","Last Name");
|
|
$columnAlign = array('left','left','left','left');
|
|
unset($TableWidth);
|
|
listDataCustom($errors,$columnHeaders,'',array(),'N',$columnAlign);
|
|
}
|
|
|
|
break;
|
|
|
|
case "students-update-form":
|
|
include "students.update.form.php";
|
|
break;
|
|
|
|
case "students-update-upload":
|
|
$num_fields = $_POST['num_fields'];
|
|
$fields = explode(",",$_POST['fields']);
|
|
|
|
// Get and process the data file
|
|
$temp_name = $_FILES['filename']['tmp_name'];
|
|
$file_name = str_replace(' ','_',$_FILES['filename']['name']);
|
|
|
|
if (!isset($file_name) || strlen($file_name) == 0) {
|
|
$error_message = getLanguageText('MSG-NO-SOURCE-DATA-FILE');
|
|
$naction = "upload-form";
|
|
header("Location: /?action=$action&naction=$naction&error_message=".urlencode($error_message));
|
|
exit();
|
|
}
|
|
|
|
// Validate the file type
|
|
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
|
$ftype = finfo_file($finfo,$temp_name);
|
|
if ($ftype != "text/plain") {
|
|
$error_message = getLanguageText('ERRORMSG-INVALID-FILE-FORMAT');
|
|
$naction = "upload-form";
|
|
header("Location: /?action=$action&naction=$naction&error_message=".urlencode($error_message));
|
|
exit();
|
|
}
|
|
|
|
// Move file to temp folder
|
|
if (!move_uploaded_file($temp_name,"temp/$school_num.students.csv")) {
|
|
$error_message = getLanguageText('MSG-ZERO-UPLOADED');
|
|
$new_naction = "upload-form";
|
|
break;
|
|
}
|
|
|
|
// Open and process the data file
|
|
$fp = fopen("temp/$school_num.students.csv","r");
|
|
$records = 0;
|
|
|
|
$student_count = 0;
|
|
$error_count = 0;
|
|
$skipped_count = 0;
|
|
|
|
$count = 0;
|
|
if ($skip_first_row == 'Y') $count = 1;
|
|
$row_num = 0;
|
|
|
|
$uaction = "students-update";
|
|
db_query("DELETE FROM upload_columns WHERE school_num = $school_num AND action = '$uaction'");
|
|
$row_processed = false;
|
|
|
|
if (array_key_exists('skip_first_row',$_POST)) {
|
|
$skip_first_row = $_POST['skip_first_row'];
|
|
db_query("INSERT INTO upload_columns (school_num, action, field, value) VALUES ($school_num,'$uaction','skip_first_row','$skip_first_row')");
|
|
}
|
|
|
|
while (($data = fgetcsv($fp,10000,",")) !== FALSE) {
|
|
$row_num++;
|
|
if ($row_num == 1 && $skip_first_row == 'Y') continue;
|
|
|
|
$numDataFields = count($data);
|
|
if ($numDataFields == 0) continue;
|
|
$count++;
|
|
|
|
// Parse the data from the record
|
|
for ($i = 0; $i < count($fields); $i++) {
|
|
$fname = $fields[$i];
|
|
unset($$fname);
|
|
|
|
// Update upload column entry
|
|
$col = $_POST[$fname];
|
|
if (!$row_processed) db_query("INSERT INTO upload_columns (school_num, action, field, column_num) VALUES ($school_num,'$uaction','$fname',$col) ON DUPLICATE KEY UPDATE column_num = $col");
|
|
|
|
if (array_key_exists($fname, $_POST) && strlen($_POST[$fname]) > 0) {
|
|
$col = $_POST[$fname] - 1;
|
|
$$fname = preg_replace('/\$/','',trim($data[$col]));
|
|
}
|
|
}
|
|
|
|
// Ensure there is a student number
|
|
if (strlen($student_number) == 0) {
|
|
$error_count++;
|
|
$errors[] = array($count, getLanguageText('ERRORMSG-STUDENT-NUMBER-REQUIRED'));
|
|
continue;
|
|
}
|
|
|
|
|
|
// Check for an existing entry
|
|
$query = "SELECT * FROM people WHERE school_num = $school_num AND student_number = '".db_escape_string($student_number)."'";
|
|
$results = db_query($query);
|
|
if (db_num_rows($results) == 0) {
|
|
$error_count++;
|
|
$errors[] = array($count, getLanguageText('ERRORMSG-STUDENT-NOT-FOUND'),$student_number);
|
|
continue;
|
|
}
|
|
|
|
$row = db_fetch_assoc($results);
|
|
$rnum = $row['record_num'];
|
|
$query = "UPDATE people SET school_grade = '" . db_escape_string($grade) . "' WHERE record_num = $rnum";
|
|
$student_count++;
|
|
}
|
|
|
|
|
|
$data = array();
|
|
$data[] = array(getLanguageText('TEXT-STUDENTS'),$student_count);
|
|
$data[] = array(getLanguageText('TEXT-ERRORS'),$error_count);
|
|
$data[] = array(getLanguageText('TEXT-SKIPPED'),$skipped_count);
|
|
|
|
$columnHeaders = array(getLanguageText('TEXT-RESULT'),getLanguageText('TEXT-NUMBER'));
|
|
$columnAlign = array('center','center');
|
|
$TableWidth = 450;
|
|
listDataCustom($data,$columnHeaders,'',array(),'N',$columnAlign);
|
|
|
|
if ($error_count > 0) {
|
|
$columnHeaders = array("Row","Error");
|
|
$columnAlign = array('left','left');
|
|
listDataCustom($errors,$columnHeaders,'',array(),'N',$columnAlign);
|
|
}
|
|
|
|
break;
|
|
|
|
case "view-added-dates":
|
|
$query = "SELECT added_date,count(*) AS num FROM people " .
|
|
"WHERE school_num = $school_num " .
|
|
"AND people_type = 'Student' " .
|
|
"GROUP BY 1 " .
|
|
"ORDER BY 1";
|
|
$results = db_query($query);
|
|
|
|
$data = array();
|
|
while ($row = db_fetch_assoc($results)) {
|
|
extract($row);
|
|
$data[] = array($added_date,"<a href='?action=students&naction=view-added-dates-list&added_date=$added_date'>" . $num . "</a>");
|
|
}
|
|
|
|
$columnHeaders = array(getLanguageText('TEXT-DATE-ADDED'),getLanguageText('TEXT-COUNT'));
|
|
$columnAlign = array('center','center');
|
|
$TableWidth = 400;
|
|
listDataCustom($data,$columnHeaders,'',array(),'N',$columnAlign);
|
|
break;
|
|
|
|
case "view-added-dates-list":
|
|
$added_date = db_escape_string($_GET['added_date']);
|
|
$query = "SELECT p.first_name,p.last_name,p.student_number,u.userid,p.added_date,user_num FROM people AS p, users AS u " .
|
|
"WHERE p.school_num = $school_num " .
|
|
"AND u.school_num = $school_num " .
|
|
"AND p.people_type = 'Student' " .
|
|
"AND p.added_date = '$added_date' " .
|
|
"AND p.user_num = u.record_num " .
|
|
"ORDER BY p.last_name,p.first_name";
|
|
$results = db_query($query);
|
|
|
|
$data = array();
|
|
while ($row = db_fetch_assoc($results)) {
|
|
extract($row);
|
|
$data[] = array($first_name,$last_name,$student_number,"<a href='?action=users&naction=show-info&user_num=$user_num'>".$userid."</a>",$added_date);
|
|
}
|
|
|
|
$columnHeaders = array(getLanguageText('TEXT-FIRST-NAME'),
|
|
getLanguageText('TEXT-LAST-NAME'),
|
|
getLanguageText('TEXT-STUDENT-NUMBER'),
|
|
getLanguageText('TEXT-USER-ID'),
|
|
getLanguageText('TEXT-DATE-ADDED'));
|
|
$columnAlign = array('left','left','left','left');
|
|
$TableWidth = 700;
|
|
listDataCustom($data,$columnHeaders,'',array(),'N',$columnAlign);
|
|
break;
|
|
|
|
case "copy-to-lockers":
|
|
$lschool_num = intval($school_record['locker_school_num']);
|
|
if ($lschool_num == 0) break;
|
|
|
|
// Get student records
|
|
$query = "SELECT p.*,c.grade FROM people AS p, classes AS c " .
|
|
"WHERE p.school_num = $school_num " .
|
|
"AND c.school_num = $school_num " .
|
|
"AND p.class_num = c.record_num " .
|
|
"AND people_type = 'Student' " .
|
|
"AND student_number IS NOT NULL " .
|
|
"AND student_number > ''";
|
|
$results = db_query($query);
|
|
if (db_num_rows($results)) {
|
|
$students = array();
|
|
while ($row = db_fetch_assoc($results)) {
|
|
$students[] = $row;
|
|
}
|
|
|
|
// Characters for generated password
|
|
$CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
$charsLength = strlen($CHARS) - 1;
|
|
|
|
$date_added = date("Y-m-d",time());
|
|
$added_time = date("Y-m-d H:i:s",time());
|
|
|
|
db_close($_DB);
|
|
$_DB = mysql_connect("web3-db",$db_uname,$db_pass);
|
|
db_query("USE locker_assignment");
|
|
|
|
$users = new Table("users");
|
|
$user_count = 0;
|
|
for ($i = 0; $i < count($students); $i++) {
|
|
$entry = $students[$i];
|
|
$student_number = $entry['student_number'];
|
|
|
|
// Check if this student exists in locker system already
|
|
$query = "SELECT * FROM users WHERE school_num = $lschool_num AND userid = '$student_number'";
|
|
$results = db_query($query);
|
|
if (db_num_rows($results) == 0) {
|
|
// Generate the password
|
|
$password = "";
|
|
while (strlen($password) < 10) {
|
|
$c = rand(0,$charsLength);
|
|
$password .= substr($CHARS,$c,1);
|
|
}
|
|
|
|
|
|
$entry['school_num'] = $lschool_num;
|
|
$entry['userid'] = $student_number;
|
|
$entry['password'] = $password;
|
|
$entry['status'] = 'Active';
|
|
$entry['type'] = 'Student';
|
|
$entry['date_added'] = $date_added;
|
|
$entry['added_time'] = $added_time;
|
|
|
|
$query = $users->BuildInsert($entry);
|
|
db_query($query);
|
|
$user_count++;
|
|
}
|
|
}
|
|
}
|
|
|
|
db_close($_DB);
|
|
$_DB = mysql_connect("localhost",$db_uname,$db_pass);
|
|
db_query("USE hotlunch");
|
|
$form_message = getLanguageText('TEXT-USER-ACCOUNTS-CREATED') . ": $user_count";
|
|
$error_message = "";
|
|
header("Location: $FormTarget?action=students&naction=search&form_message=" . urlencode($form_message) . "&error_message=" . urlencode($error_message));
|
|
exit();
|
|
|
|
case "display":
|
|
case "list":
|
|
case "list-class":
|
|
case "list-unverified":
|
|
case "list-inactive":
|
|
case "students-without-class-number":
|
|
case "students-without-student-number":
|
|
writeLog("students.display.php");
|
|
include 'students.display.php';
|
|
break;
|
|
}
|
|
|
|
|
|
//
|
|
// Display search screen if required
|
|
//
|
|
if ($userType != 'Parent' && $mode != 'parent' && $naction == 'lookup') {
|
|
// Student Lookup Form
|
|
include "students.lookup.php";
|
|
|
|
$ChoosePagination = 'Y';
|
|
$next_naction = "lookup";
|
|
|
|
include $FormFile;
|
|
}
|
|
|
|
if (intval($school_record['locker_school_num']) > 0) {
|
|
echo("<p><a href='?action=students&naction=copy-to-lockers' class='largeButton'>Copy to Lockers</a></p>\n");
|
|
}
|
|
|
|
endTemplate();
|
|
|
|
?>
|