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;
        }
    }
}
Пример #2
0
function get_real_semester($s_semester, $s_year)
{
    $a_semester = school_time_to_real_time($s_semester, $s_year);
    return $a_semester["semester"];
}