]> git.mjollnir.org Git - moodle.git/commitdiff
More efficient get_my_courses()
authormoodler <moodler>
Tue, 19 Sep 2006 14:14:32 +0000 (14:14 +0000)
committermoodler <moodler>
Tue, 19 Sep 2006 14:14:32 +0000 (14:14 +0000)
lib/datalib.php

index 8c12d7bc256171ee9a223ab42a2128aad14c4ded..7b20baabd99c1b8fa37c13ef23283afd54256bda 100644 (file)
@@ -658,55 +658,30 @@ function get_courses_page($categoryid="all", $sort="c.sortorder ASC", $fields="c
  */
 function get_my_courses($userid, $sort='visible DESC,sortorder ASC') {
 
-    global $CFG, $USER;
-
     $mycourses = array();
-    $SQL = "SELECT * from {$CFG->prefix}course ORDER BY $sort";
-    $courses = get_records_sql($SQL);
-    
-    foreach ($courses as $course) {
-        if ($course->id != SITEID) {
-            // users with moodle/course:view are considered course participants
-            // the course needs to be visible, or user must have moodle/course:viewhiddencourses capability set to view
-            // hidden courses  
-            if (has_capability('moodle/course:view', get_context_instance(CONTEXT_COURSE, $course->id), $userid)
-                && ($course->visible || has_capability('moodle/course:viewhiddencourses', get_context_instance(CONTEXT_COURSE, $course->id), $userid))) {
-                $mycourses[] = $course;
-            }
-        }
-    }
 
-    return $mycourses;
-/*
-    if ($students = get_records('user_students', 'userid', $userid, '', 'id, course')) {
-        foreach ($students as $student) {
-            $course[$student->course] = $student->course;
-        }
-    }
-    if (count($course) > 0 && empty($USER->admin)) {
-        if ($courses = get_records_list('course', 'id', implode(',', $course), '', 'id,visible')) {
-            foreach ($courses as $k => $c) {
-                if (!$c->visible) {
-                    unset($course[$c->id]);
+    $rs = get_recordset('course', '', '', $sort, '*');
+
+    if ($rs && $rs->RecordCount() > 0) {
+        while (!$rs->EOF) {
+            $course = (object)$rs->fields;
+
+            if ($course->id != SITEID) {
+                // users with moodle/course:view are considered course participants
+                // the course needs to be visible, or user must have moodle/course:viewhiddencourses 
+                // capability set to view hidden courses  
+                $context = get_context_instance(CONTEXT_COURSE, $course->id);
+                if (has_capability('moodle/course:view', $context, $userid) && 
+                    ($course->visible || has_capability('moodle/course:viewhiddencourses', $context, $userid))) {
+                    $mycourses[] = $course;
                 }
             }
-        }
-    }
 
-    if ($teachers = get_records('user_teachers', 'userid', $userid, '', 'id, course')) {
-        foreach ($teachers as $teacher) {
-            $course[$teacher->course] = $teacher->course;
+            $rs->MoveNext();
         }
     }
 
-    if (empty($course)) {
-        return $course;
-    }
-
-    $courseids = implode(',', $course);
-
-    return get_records_list('course', 'id', $courseids, $sort);
-*/
+    return $mycourses;
 }
 
 
@@ -1539,4 +1514,4 @@ function category_parent_visible($parent = 0) {
 }
 
 // vim:autoindent:expandtab:shiftwidth=4:tabstop=4:tw=140:
-?>
\ No newline at end of file
+?>