From: agrabs Date: Mon, 25 May 2009 19:48:33 +0000 (+0000) Subject: MDL-17005 - very high memory comsumption for feedback module->show entries on big... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=a600ad359ac26f82956c3a21f8637c3681def23e;p=moodle.git MDL-17005 - very high memory comsumption for feedback module->show entries on big Moodle platforms --- diff --git a/mod/feedback/lib.php b/mod/feedback/lib.php index b00e126577..3fbf4ac9eb 100644 --- a/mod/feedback/lib.php +++ b/mod/feedback/lib.php @@ -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); } /** diff --git a/mod/feedback/show_entries.php b/mod/feedback/show_entries.php index 286725144f..716502996b 100644 --- a/mod/feedback/show_entries.php +++ b/mod/feedback/show_entries.php @@ -126,12 +126,12 @@ $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; diff --git a/mod/feedback/version.php b/mod/feedback/version.php index b1bb96e8ee..7093fb5e29 100644 --- a/mod/feedback/version.php +++ b/mod/feedback/version.php @@ -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)