From 86dced433eb402e5f59943104a2e932b2f7acdcf Mon Sep 17 00:00:00 2001 From: Tony Butler Date: Fri, 11 Jul 2014 12:10:50 +0100 Subject: [PATCH] MDL-43908 mod_assign: Remove redundant code and improve SQL query Signed-off-by: Tony Butler --- mod/assign/locallib.php | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index bbc79b64874..14962c6ea38 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -1599,17 +1599,17 @@ class assign { // Collect all submissions from the past 24 hours that require mailing. // Submissions are excluded if the assignment is hidden in the gradebook. - $sql = 'SELECT g.id as gradeid, a.course, a.name, a.blindmarking, a.revealidentities, - g.*, g.timemodified as lastmodified + $sql = "SELECT g.id as gradeid, a.course, a.name, a.blindmarking, a.revealidentities, + g.*, g.timemodified as lastmodified, cm.id as cmid FROM {assign} a JOIN {assign_grades} g ON g.assignment = a.id LEFT JOIN {assign_user_flags} uf ON uf.assignment = a.id AND uf.userid = g.userid - JOIN {course_modules} cm ON cm.course = a.course - JOIN {modules} md ON md.id = cm.module + JOIN {course_modules} cm ON cm.course = a.course AND cm.instance = a.id + JOIN {modules} md ON md.id = cm.module AND md.name = 'assign' JOIN {grade_items} gri ON gri.iteminstance = a.id AND gri.courseid = a.course AND gri.itemmodule = md.name WHERE g.timemodified >= :yesterday AND g.timemodified <= :today AND - uf.mailed = 0 AND gri.hidden = 0'; + uf.mailed = 0 AND gri.hidden = 0"; $params = array('yesterday' => $yesterday, 'today' => $timenow); $submissions = $DB->get_records_sql($sql, $params); @@ -1642,9 +1642,6 @@ class assign { unset($courseidsql); unset($params); - // Simple array we'll use for caching modules. - $modcache = array(); - // Message students about new feedback. foreach ($submissions as $submission) { @@ -1686,22 +1683,10 @@ class assign { continue; } - if (!array_key_exists($submission->assignment, $modcache)) { - $mod = get_coursemodule_from_instance('assign', $submission->assignment, $course->id); - if (empty($mod)) { - mtrace('Could not find course module for assignment id ' . $submission->assignment); - continue; - } - $modcache[$submission->assignment] = $mod; - } else { - $mod = $modcache[$submission->assignment]; - } - // Context lookups are already cached. - $contextmodule = context_module::instance($mod->id); - - // Get assignment visibility information for user. $modinfo = get_fast_modinfo($course, $user->id); - $cm = $modinfo->get_cm($mod->id); + $cm = $modinfo->get_cm($submission->cmid); + // Context lookups are already cached. + $contextmodule = context_module::instance($cm->id); if (!$cm->uservisible) { // Hold mail notification for assignments the user cannot access until later. @@ -1724,7 +1709,7 @@ class assign { $messagetype, $eventtype, $updatetime, - $mod, + $cm, $contextmodule, $course, $modulename, @@ -1752,7 +1737,6 @@ class assign { // Free up memory just to be sure. unset($courses); - unset($modcache); } // Update calendar events to provide a description.