4.x _CourseList.php _CourseList::remove_previously_fulfilled(CourseList $list_courses, $group_id, $bool_keep_repeatable_courses = true, $list_substitutions)

Remove courses from THIS list which appear in listCourses under these conditions:

  • the listCourses->"assigned_to_group_id" != $group_id

This function is being used primarily with $list_courses being the list of courses that students have taken. Also checking substitutions for courses substituted into groups.


CourseList $list_courses:

int $group_id:

bool $bool_keep_repeatable_courses:

SubstitutionList $list_substitutions:


classes/_CourseList.php, line 403




function remove_previously_fulfilled(CourseList $list_courses, $group_id, $bool_keep_repeatable_courses = true, $list_substitutions) {

  $rtn_list = new CourseList();

  for ($t = 0; $t < $this->count; $t++) {
    $course = $this->array_list[$t];

    if ($bool_keep_repeatable_courses == true) { // We can always keep repeatable courses in the list.
      if ($course->repeat_hours > $course->min_hours) {

    // Has the course been substituted?
    if ($test_sub = $list_substitutions->find_requirement($course, false, -1)) {
      // it WAS substituted, so we should NOT add it to our
      // rtnList.

    // Okay, now check if $course is anywhere in $list_courses
    if ($test_course = $list_courses->find_match($course)) {
      // Yes, it found a match.
      // I am taking out this part where I say if it is in
      // this group then we can keep it.  I think that shouldn't
      // be in.
      // This course is in another group, so do nothing
      // and skip it.

      // perhaps the course is on the degreePlan in excess with a W
      // or F?
      if (!$test_course->meets_min_grade_requirement_of(null, "D")) {
        // Meaning, this was a failed attempt, so we can add
        // our original course back in.

      // perhaps this course was purposefully excluded from
      // this list because it did not meet the min grade
      // requirements?  If this is the case, $course should
      // still appear in THIS list.
      if (!$test_course->meets_min_grade_requirement_of($course)) {
        // Meaning, this was attempt did not meet the
        // min grade of the original requirement, so we can add
        // our original requirement back in.

    else {
      // The course was NOT found in the courseList,
      // so its safe to add it back in.


  $this->array_list = $rtn_list->array_list;