function Group::load_group
Search API
7.x Group.php | Group::load_group($bool_load_significant_only = true, $array_significant_courses = false, $bool_reload_missing_only = false) |
6.x Group.php | Group::load_group($bool_load_significant_only = true, $array_significant_courses = false, $bool_reload_missing_only = false) |
2 calls to Group::load_group()
- Group::reload_missing_courses in classes/
Group.php - Group::__construct in classes/
Group.php
File
- classes/
Group.php, line 208
Class
Code
function load_group($bool_load_significant_only = true, $array_significant_courses = false, $bool_reload_missing_only = false)
{
$this->load_descriptive_data();
if ($this->db_delete_flag == 1)
{
return;
}
$bool_significant_courses_empty = true;
if (is_array($array_significant_courses))
{
$bool_significant_courses_empty = false;
}
if ($bool_reload_missing_only == true)
{
// We are only going to load the *missing* courses from
// this group. So, begin by getting an array of what is
// not missing.
$array_group_requirement_ids = $this->list_courses->get_group_requirement_id_array();
}
$table_name = "group_requirements";
if ($this->bool_use_draft) {
$table_name = "draft_$table_name";
}
$res = db_query("SELECT * FROM `$table_name`
WHERE group_id = ? ", $this->get_db_group_id());
while ($cur = db_fetch_array($res))
{
$id = $cur ["id"];
$course_id = intval($cur ["course_id"]);
// The group requirements table doesn't have a school_id.
//$this->school_id = intval($cur['school_id']);
if ($cur ["course_id"] * 1 > 0)
{
if ($bool_load_significant_only == true && $bool_significant_courses_empty == false)
{
// If this course_id is NOT in the array of significant courses
// (that the student took or has transfer credit or subs for)
// then skip it. Never add it to the group.
if (isset($array_significant_courses [$cur ["course_id"]]) && $array_significant_courses [$cur ["course_id"]] != true)
{ // course was not in there, so skip!
continue;
}
}
// A course is the next requirement.
// Is this more than XX repeats? If so, we consider it "infinite"
if ($cur ['course_repeats'] <= Group::GROUP_COURSE_INFINITE_REPEATS_THRESHOLD) {
// Less than XX repeats, so treat it like a normal course.
for ($t = 0; $t <= $cur ["course_repeats"]; $t++)
{ // Add in the specified repeats for this group...
// This will usually only go through the loop once.
$use_id = $id . "_rep_$t";
if ($bool_reload_missing_only == true)
{
// Only load this course if it is missing from the group.
// Read the reload_missing_courses() method for an explanation
// of why we should want to do this.
// Basically, check all the courses in the current
// list_courses object for a db_group_requirement_id of $id.
// Only proceed if $id was NOT found.
if (@$array_group_requirement_ids [$use_id] == true)
{
continue;
}
}
$course_c = new Course();
$course_c->bool_use_draft = $this->bool_use_draft;
$course_c->course_id = $cur ["course_id"];
$course_c->db_group_attributes = $cur ['attributes'];
$course_c->db_group_requirement_id = $use_id;
$course_c->db = $this->db;
$course_c->catalog_year = $this->catalog_year;
$course_c->assigned_to_group_id = $this->group_id;
$course_c->assigned_to_semester_num = $this->assigned_to_semester_num;
$course_c->specified_repeats = $cur ["course_repeats"];
if ($cur ["course_repeats"] > 0)
{
$course_c->bool_specified_repeat = true;
}
$course_c->min_grade = trim(strtoupper($cur ["course_min_grade"]));
if ($course_c->min_grade == "")
{ // By default, all courses have a
// min grade requirement of D.
$course_c->min_grade = "D";
}
$this->list_courses->add($course_c);
} // for t <= cur['course_repeats']
}
else {
// We are dealing with a course with "infinite" repeats.
$use_id = $id . "_rep_999";
if ($bool_reload_missing_only == true)
{
// Only load this course if it is missing from the group.
// Read the reload_missing_courses() method for an explanation
// of why we should want to do this.
// Basically, check all the courses in the current
// list_courses object for a db_group_requirement_id of $id.
// Only proceed if $id was NOT found.
if (@$array_group_requirement_ids [$use_id] == true)
{
continue;
}
}
$course_c = new Course();
$course_c->bool_use_draft = $this->bool_use_draft;
$course_c->course_id = $cur ["course_id"];
$course_c->db_group_attributes = $cur ['attributes'];
$course_c->db_group_requirement_id = $use_id;
$course_c->db = $this->db;
$course_c->catalog_year = $this->catalog_year;
$course_c->assigned_to_group_id = $this->group_id;
$course_c->assigned_to_semester_num = $this->assigned_to_semester_num;
$course_c->specified_repeats = Group::GROUP_COURSE_INFINITE_REPEATS;
$course_c->bool_specified_repeat = true;
$course_c->min_grade = trim(strtoupper($cur ["course_min_grade"]));
if ($course_c->min_grade == "")
{ // By default, all courses have a
// min grade requirement of D.
$course_c->min_grade = "D";
}
$this->list_courses->add($course_c);
}
} // if cur['course_id']
if ($cur ["child_group_id"] * 1 > 0)
{
$temp_add_as_new_group = FALSE;
// Another group is the next requirement (its a branch)
if ($bool_reload_missing_only == true)
{ // Since we are reloading courses, this subgroup is (probably) already
// part of this group, so do not re-create it, just find it
// and reload it's missing courses.
$temp_g = new Group();
$temp_g->school_id = $this->school_id;
$temp_g->bool_use_draft = $this->bool_use_draft;
$temp_g->group_id = $cur ["child_group_id"] . '_' . $this->req_by_degree_id;
$temp_g->requirement_type = $this->requirement_type;
if ($group_g = $this->list_groups->find_match($temp_g)) {
$group_g->reload_missing_courses();
}
else {
// We didn't find the child group, possibly because this is the first time we are loading it. If that is
// the case, then we should just add it fresh.
$temp_add_as_new_group = TRUE;
}
}
else {
$temp_add_as_new_group = TRUE;
}
if ($temp_add_as_new_group) {
// Add this as a brand-new sub group, so create it
// and add it to this group.
$group_g = new Group($cur ["child_group_id"] . "_" . $this->req_by_degree_id, null, $this->assigned_to_semester_num, $array_significant_courses, $this->bool_use_draft);
$group_g->requirement_type = $this->requirement_type;
$this->list_groups->add($group_g);
}
} // if child_group_id > 0
} // while cur = db_fetch_array(res)
// When we load this group, let's also check for any hooks.
// Since this class might be used outside of FP, only do this if we know
// that the bootstrap.inc file has been executed.
if ($GLOBALS ["fp_bootstrap_loaded"] == TRUE) {
invoke_hook("group_load", array(&$this));
}
}