]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-17005 - very high memory comsumption for feedback module->show entries on big...
authoragrabs <agrabs>
Mon, 25 May 2009 19:48:33 +0000 (19:48 +0000)
committeragrabs <agrabs>
Mon, 25 May 2009 19:48:33 +0000 (19:48 +0000)
mod/feedback/lib.php
mod/feedback/show_entries.php
mod/feedback/version.php

index b00e12657775caeaa0aaf34c78795ed7c9b5a79f..3fbf4ac9eb709d5c06e765f6376aa83d8f14e54b 100644 (file)
@@ -615,20 +615,34 @@ function feedback_check_is_switchrole(){
     return false;
 }
 
-/**
+/** 
  *  get users which have the complete-capability
- *  @param int $cmid
- *  @param mixed $groups single groupid or array of groupids - group(s) user is in
+ *  @param object $cm
+ *  @param int $group single groupid
  *  @return object the userrecords
  */
-function feedback_get_complete_users($cmid, $groups = false) {
-
-    if (!$context = get_context_instance(CONTEXT_MODULE, $cmid)) {
+function feedback_get_complete_users($cm, $group = false) {
+    global $DB;
+    
+    if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) {
             print_error('badcontext');
     }
 
-    //description of the call below: get_users_by_capability($context, $capability, $fields='', $sort='', $limitfrom='', $limitnum='', $groups='', $exceptions='', $doanything=true)
-    return get_users_by_capability($context, 'mod/feedback:complete', '', 'lastname', '', '', $groups, '', false);
+    $params = array($cm->instance);
+
+    $fromgroup = '';
+    $wheregroup = '';
+    if($group) {
+        $fromgroup = ', {groups_members} g';
+        $wheregroup = ' AND g.id = ? AND g.userid = c.userid';
+        $params[] = $group;
+    }
+    $sql = 'SELECT u.* FROM {user} u, {feedback_completed} c'.$fromgroup.'
+              WHERE u.id = c.userid AND c.feedback = ?
+              '.$wheregroup.'
+              ORDER BY u.lastname';
+    
+    return $DB->get_records_sql($sql, $params);
 }
 
 /**
index 286725144ff2c43e2c1043e273e292daf2bd1ac6..716502996b637418f5909c027dac1d9870364cf8 100644 (file)
                     $mygroupid = $SESSION->feedback->lstgroupid;
                 }
                 if($mygroupid) {
-                    $students = feedback_get_complete_users($cm->id, $mygroupid);
+                    $students = feedback_get_complete_users($cm, $mygroupid);
                 } else {
-                    $students = feedback_get_complete_users($cm->id);
+                    $students = feedback_get_complete_users($cm);
                 }
             }else {
-                $students = feedback_get_complete_users($cm->id);
+                $students = feedback_get_complete_users($cm);
             }
 
             $mygroupid=isset($mygroupid)?$mygroupid:NULL;
index b1bb96e8ee6fcccc2cee66c467d5833e8e10a720..7093fb5e2976a8df4861c75de258ce953876ff79 100644 (file)
@@ -10,7 +10,7 @@
 */
 
    
-    $module->version = 2009042001; // The current module version (Date: YYYYMMDDXX)
+    $module->version = 2009052701; // The current module version (Date: YYYYMMDDXX)
     $module->requires = 2009041700;  // Requires this Moodle version
     $feedback_version_intern = 1; //this version is used for restore older backups
     $module->cron = 0; // Period for cron to check this module (secs)