function load_semester_classes_from_database($s_year, $s_semester, $s_output_type = "json", $b_just_count = FALSE) { // get some common variables global $maindb; global $global_user; $a_subjects = array(); $a_classes = array(); $s_name = ""; $id = $global_user->get_id(); // translate school time to real time $s_semester = (string) $s_semester; $a_semester = school_time_to_real_time($s_semester, $s_year); $s_load_year = $a_semester["year"]; $s_load_semester = $a_semester["semester"]; $s_name = $a_semester["name"]; // load the subjects if (!$b_just_count) { $a_subjects_db = db_query("SELECT `abbr`,`title` FROM `{$maindb}`.`subjects` WHERE `semester`='[semester]' AND `year`='[year]' ORDER BY `title`", array("semester" => $s_load_semester, "year" => $s_load_year)); if ($a_subjects_db === FALSE || count($a_subjects_db) == 0) { return "Failed to load the subjects for the semester, given semester ({$s_year}, {$s_semester}) possibly out of range."; } for ($i = 0; $i < count($a_subjects_db); $i++) { $a_subjects[$a_subjects_db[$i]["abbr"]] = $a_subjects_db[$i]["title"]; } } // build the query to load the classes $access_to_custom_class = "`subject`!='CUSTOM' OR `user_ids_with_access` LIKE '%|{$id},%'"; $s_select_clause = "`subject`,`enroll` AS `Enroll`,`title` AS `Title`,`days` AS `Days`,`hours` AS `Hrs`,`limit` AS `Limit`,`location` AS `Location`,`time` AS `Time`,`parent_class`,`crn` AS `CRN`,`course` AS `Course`,`campus` AS `*Campus`,`seats` AS `Seats`,`instructor` AS `Instructor`,`user_ids_with_access` AS `accesses`"; if ($b_just_count) { $s_select_clause = "COUNT(*) AS `count`"; } // load the classes $a_classes_db = db_query("SELECT {$s_select_clause} FROM `{$maindb}`.`classes` WHERE `semester`='[semester]' AND `year`='[year]' AND ({$access_to_custom_class}) ORDER BY `subject`,`course`", array("semester" => $s_load_semester, "year" => $s_load_year)); if ($a_classes_db === FALSE || count($a_classes_db) == 0) { return json_encode(array(new command("failure", "Failed to load the classes for the semester, given semester ({$s_year}, {$s_semester}) possibly out of range."))); } // is this just a test count? if ($b_just_count) { return (int) $a_classes_db[0]["count"]; } $a_subclasses = array(); foreach ($a_classes_db as $k => $a_class) { if ($a_class["CRN"] == 0) { $a_classes_db[$k]["CRN"] = (string) $a_class["parent_class"] . "A"; $a_subclasses[] = $a_classes_db[$k]; unset($a_classes_db[$k]); } else { $a_classes_db[$k]["CRN"] = (string) $a_class["CRN"]; } if ($a_class["accesses"] != "") { $s_access = $a_class["accesses"]; $s_access = substr($s_access, 0, strpos($s_access, "|{$id},")); $s_access = substr($s_access, max(0, (int) strrpos($s_access, ","))); $a_classes_db[$k]["accesses"] = ltrim($s_access, ","); } } foreach ($a_classes_db as $a_class) { $a_classes[] = $a_class; $crn = $a_class["CRN"]; $subcrn = $crn + "A"; foreach ($a_subclasses as $k => $a_subclass) { if ($a_subclass["CRN"] == $subcrn) { $a_classes[] = $a_subclass; unset($a_subclass[$k]); } } } $a_retval = array('name' => $s_name, 'subjects' => $a_subjects, 'classes' => $a_classes); if ($s_output_type == "json") { $s_semester_data = json_encode(array(new command("success", $a_retval))); return $s_semester_data; } else { if ($s_output_type == "array") { return $a_retval; } } }
function get_real_semester($s_semester, $s_year) { $a_semester = school_time_to_real_time($s_semester, $s_year); return $a_semester["semester"]; }