From 7b511b00f3e25fd758a52c4d8153d54f535fd045 Mon Sep 17 00:00:00 2001
From: John Hoopes <john.hoopes@wisc.edu>
Date: Tue, 12 Aug 2014 14:36:10 +0000
Subject: [PATCH] updating course_overview_uwmoodle for filtering internal
 courses from the external ones

---
 locallib.php | 53 +++++++++++++++++++++-------------------------------
 version.php  |  2 +-
 2 files changed, 22 insertions(+), 33 deletions(-)

diff --git a/locallib.php b/locallib.php
index a27fd73..921042d 100644
--- a/locallib.php
+++ b/locallib.php
@@ -103,7 +103,7 @@ function block_course_overview_uwmoodle_get_child_shortnames($courseid) {
  * @return array list of sorted courses grouped by term.
  */
 function block_course_overview_uwmoodle_get_sorted_courses() {
-    global $USER, $CFG;
+    global $USER, $CFG, $DB;
 
     $courses = enrol_get_my_courses(null, 'fullname', 0);
     $site = get_site();
@@ -120,10 +120,26 @@ function block_course_overview_uwmoodle_get_sorted_courses() {
         }
     }
 
+    // Find the termcode for each course
+    if (!empty($courses)) {
+        $courseids = array();
+        foreach ($courses as $course) {
+            $courseids[] = $course->id;
+        }
+        list ($insql, $inparams) = $DB->get_in_or_equal($courseids);
+        $select = "enrol='wisc' AND courseid $insql";
+        $enrols = $DB->get_records_select('enrol', $select, $inparams, '', 'id,courseid,customchar1');
+        foreach ($enrols as $enrol) {
+            if (empty($courses[$enrol->courseid]->term) || $courses[$enrol->courseid]->term < $enrol->customchar1) {
+                $courses[$enrol->courseid]->term = $enrol->customchar1;
+            }
+        }
+    }
+
     // get external courses
     require_once($CFG->dirroot . '/enrol/wisc/lib/externalcourses/external_user_courses.php');
     $externalcourses = new external_user_courses();
-    $ecourses = $externalcourses->get_user_courses($USER->email);
+    $ecourses = $externalcourses->get_user_courses($USER->email, $courses);
 
     $courses = array_merge($courses, $ecourses);
 
@@ -139,38 +155,11 @@ function block_course_overview_uwmoodle_get_sorted_courses() {
 function block_course_overview_uwmoodle_group_courses_by_term($courses) {
     global $DB;
 
-    // Find the termcodes for each course
-    $courseterms = array();
-    if (!empty($courses)) {
-        $courseids = array();
-        foreach ($courses as $course) {
-            if(get_class($course) !== 'external_course') { // skip external courses as we'll add those in after local courses
-                $courseids[] = $course->id;
-            }else{
-                // add external courses directly to the $courseterms array as we already have the term
-                // also skip external courses that have no term to be added to "other" term later
-                if(!empty($course->term)){
-                    $courseterms[$course->id][$course->term] = true;
-                }
-            }
-        }
-        if(!empty($courseids)){
-            list ($insql, $inparams) = $DB->get_in_or_equal($courseids);
-            $select = "enrol='wisc' AND courseid $insql";
-            $enrols = $DB->get_records_select('enrol', $select, $inparams, '', 'id,courseid,customchar1');
-            foreach ($enrols as $enrol) {
-                $courseterms[$enrol->courseid][$enrol->customchar1] = true;
-            }
-        }
-    }
-
-    // Sort the courses by termcode.  Note that one course can be in multiple terms.
+    // Organize courses into terms, maintaining existing sorting inside each term
     $terms = array();
     foreach ($courses as $course) {
-        if (!empty($courseterms[$course->id])) {
-            foreach ($courseterms[$course->id] as $termcode => $unused) {
-                $terms[$termcode][$course->id] = $course;
-            }
+        if (!empty($course->term)) {
+            $terms[$course->term][$course->id] = $course;
         } else {
             $terms[block_course_overview_uwmoodle::TERM_OTHER][$course->id] = $course;
         }
diff --git a/version.php b/version.php
index 813a01d..dbd60e1 100644
--- a/version.php
+++ b/version.php
@@ -18,7 +18,7 @@
 defined('MOODLE_INTERNAL') || die();
 
 $plugin->component = 'block_course_overview_uwmoodle';
-$plugin->version   = 2014080700;
+$plugin->version   = 2014081200;
 $plugin->release   = '2.0';
 $plugin->requires  = 2012120300;
 $plugin->maturity  = MATURITY_STABLE;
-- 
GitLab