MDL-25669, fix_course_sortorder should check MAX_COURSE_CATEGORIES limit, and print...
authorDongsheng Cai <dongsheng@moodle.com>
Fri, 7 Jan 2011 03:54:41 +0000 (11:54 +0800)
committerDongsheng Cai <dongsheng@moodle.com>
Mon, 10 Jan 2011 01:57:15 +0000 (09:57 +0800)
lib/datalib.php

index ad75220..cb3d926 100644 (file)
@@ -1039,11 +1039,20 @@ function fix_course_sortorder() {
             HAVING cc.coursecount <> COUNT(c.id)";
 
     if ($updatecounts = $DB->get_records_sql($sql)) {
+        // categories with more courses than MAX_COURSES_IN_CATEGORY
+        $categories = array();
         foreach ($updatecounts as $cat) {
             $cat->coursecount = $cat->newcount;
+            if ($cat->coursecount >= MAX_COURSES_IN_CATEGORY) {
+                $categories[] = $cat->id;
+            }
             unset($cat->newcount);
             $DB->update_record_raw('course_categories', $cat, true);
         }
+        if (!empty($categories)) {
+            $str = implode(', ', $categories);
+            debugging("The number of courses (category id: $str) has reached MAX_COURSES_IN_CATEGORY (" . MAX_COURSES_IN_CATEGORY . "), it will cause a sorting performance issue, please increase the value of MAX_COURSES_IN_CATEGORY in lib/datalib.php file. See tracker issue: MDL-25669", DEBUG_DEVELOPER);
+        }
     }
 
     // now make sure that sortorders in course table are withing the category sortorder ranges