MDL-43908 mod_assign: Remove redundant code and improve SQL query

Signed-off-by: Tony Butler <tonyjbutler@gmail.com>
This commit is contained in:
Tony Butler 2014-07-11 12:10:50 +01:00
parent c681f7a083
commit 86dced433e

View file

@ -1599,17 +1599,17 @@ class assign {
// Collect all submissions from the past 24 hours that require mailing. // Collect all submissions from the past 24 hours that require mailing.
// Submissions are excluded if the assignment is hidden in the gradebook. // 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, $sql = "SELECT g.id as gradeid, a.course, a.name, a.blindmarking, a.revealidentities,
g.*, g.timemodified as lastmodified g.*, g.timemodified as lastmodified, cm.id as cmid
FROM {assign} a FROM {assign} a
JOIN {assign_grades} g ON g.assignment = a.id 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 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 {course_modules} cm ON cm.course = a.course AND cm.instance = a.id
JOIN {modules} md ON md.id = cm.module 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 JOIN {grade_items} gri ON gri.iteminstance = a.id AND gri.courseid = a.course AND gri.itemmodule = md.name
WHERE g.timemodified >= :yesterday AND WHERE g.timemodified >= :yesterday AND
g.timemodified <= :today 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); $params = array('yesterday' => $yesterday, 'today' => $timenow);
$submissions = $DB->get_records_sql($sql, $params); $submissions = $DB->get_records_sql($sql, $params);
@ -1642,9 +1642,6 @@ class assign {
unset($courseidsql); unset($courseidsql);
unset($params); unset($params);
// Simple array we'll use for caching modules.
$modcache = array();
// Message students about new feedback. // Message students about new feedback.
foreach ($submissions as $submission) { foreach ($submissions as $submission) {
@ -1686,22 +1683,10 @@ class assign {
continue; 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); $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) { if (!$cm->uservisible) {
// Hold mail notification for assignments the user cannot access until later. // Hold mail notification for assignments the user cannot access until later.
@ -1724,7 +1709,7 @@ class assign {
$messagetype, $messagetype,
$eventtype, $eventtype,
$updatetime, $updatetime,
$mod, $cm,
$contextmodule, $contextmodule,
$course, $course,
$modulename, $modulename,
@ -1752,7 +1737,6 @@ class assign {
// Free up memory just to be sure. // Free up memory just to be sure.
unset($courses); unset($courses);
unset($modcache);
} }
// Update calendar events to provide a description. // Update calendar events to provide a description.