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.
// 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.