MDL-31918 Use cached module info for activity completion report
authorAndrew Robert Nicols <andrew.nicols@luns.net.uk>
Tue, 6 Mar 2012 14:36:20 +0000 (14:36 +0000)
committerAndrew Robert Nicols <andrew.nicols@luns.net.uk>
Wed, 7 Mar 2012 15:25:38 +0000 (15:25 +0000)
report/completion/index.php

index dcd81a9..c9682b5 100644 (file)
@@ -91,6 +91,9 @@ if ($group === 0 && $course->groupmode == SEPARATEGROUPS) {
  * Load data
  */
 
+// Retrieve course_module data for all modules in the course
+$modinfo = get_fast_modinfo($course);
+
 // Get criteria for course
 $completion = new completion_info($course);
 
@@ -492,13 +495,10 @@ if (!$csv) {
         switch ($criterion->criteriatype) {
 
             case COMPLETION_CRITERIA_TYPE_ACTIVITY:
-                // Load activity
-                $activity = $criterion->get_mod_instance();
-
                 // Display icon
                 $icon = $OUTPUT->pix_url('icon', $criterion->module);
                 $iconlink = $CFG->wwwroot.'/mod/'.$criterion->module.'/view.php?id='.$criterion->moduleinstance;
-                $icontitle = $activity->name;
+                $icontitle = $modinfo->cms[$criterion->moduleinstance]->name;
                 $iconalt = get_string('modulename', $criterion->module);
                 break;
 
@@ -577,10 +577,7 @@ foreach ($progress as $user) {
         if ($criterion->criteriatype == COMPLETION_CRITERIA_TYPE_ACTIVITY) {
 
             // Load activity
-            $mod = $criterion->get_mod_instance();
-            $activity = $DB->get_record('course_modules', array('id' => $criterion->moduleinstance));
-            $activity->name = $mod->name;
-
+            $activity = $modinfo->cms[$criterion->moduleinstance];
 
             // Get progress information and state
             if (array_key_exists($activity->id,$user->progress)) {