Merge branch 'MDL-54873-master' of git://github.com/andrewnicols/moodle

This commit is contained in:
David Monllao 2016-08-30 12:52:38 +08:00
commit bb75b82e21
3 changed files with 53 additions and 12 deletions

View File

@ -176,7 +176,15 @@ class assign_grading_table extends table_sql implements renderable {
$from .= 'LEFT JOIN {assign_user_flags} uf
ON u.id = uf.userid
AND uf.assignment = :assignmentid3';
AND uf.assignment = :assignmentid3 ';
if (!empty($this->assignment->get_instance()->blindmarking)) {
$from .= 'LEFT JOIN {assign_user_mapping} um
ON u.id = um.userid
AND um.assignment = :assignmentid4 ';
$params['assignmentid4'] = (int)$this->assignment->get_instance()->id;
$fields .= ', um.id as recordid ';
}
$userparams = array();
$userindex = 0;
@ -463,8 +471,10 @@ class assign_grading_table extends table_sql implements renderable {
* @return string
*/
public function col_recordid(stdClass $row) {
return get_string('hiddenuser', 'assign') .
$this->assignment->get_uniqueid_for_user($row->userid);
if (empty($row->recordid)) {
$row->recordid = $this->assignment->get_uniqueid_for_user($row->userid);
}
return get_string('hiddenuser', 'assign') . $row->recordid;
}
@ -838,7 +848,10 @@ class assign_grading_table extends table_sql implements renderable {
'action' => 'grader');
if ($this->assignment->is_blind_marking()) {
$urlparams['blindid'] = $this->assignment->get_uniqueid_for_user($row->userid);
if (empty($row->recordid)) {
$row->recordid = $this->assignment->get_uniqueid_for_user($row->userid);
}
$urlparams['blindid'] = $row->recordid;
} else {
$urlparams['userid'] = $row->userid;
}
@ -1015,7 +1028,10 @@ class assign_grading_table extends table_sql implements renderable {
'action' => 'grader');
if ($this->assignment->is_blind_marking()) {
$urlparams['blindid'] = $this->assignment->get_uniqueid_for_user($row->userid);
if (empty($row->recordid)) {
$row->recordid = $this->assignment->get_uniqueid_for_user($row->userid);
}
$urlparams['blindid'] = $row->recordid;
} else {
$urlparams['userid'] = $row->userid;
}

View File

@ -649,13 +649,14 @@ function assign_print_recent_activity($course, $viewfullnames, $timestart) {
$dbparams = array($timestart, $course->id, 'assign', ASSIGN_SUBMISSION_STATUS_SUBMITTED);
$namefields = user_picture::fields('u', null, 'userid');
if (!$submissions = $DB->get_records_sql("SELECT asb.id, asb.timemodified, cm.id AS cmid,
if (!$submissions = $DB->get_records_sql("SELECT asb.id, asb.timemodified, cm.id AS cmid, um.id as recordid,
$namefields
FROM {assign_submission} asb
JOIN {assign} a ON a.id = asb.assignment
JOIN {course_modules} cm ON cm.instance = a.id
JOIN {modules} md ON md.id = cm.module
JOIN {user} u ON u.id = asb.userid
LEFT JOIN {assign_user_mapping} um ON um.userid = u.id AND um.assignment = a.id
WHERE asb.timemodified > ? AND
asb.latest = 1 AND
a.course = ? AND
@ -735,7 +736,10 @@ function assign_print_recent_activity($course, $viewfullnames, $timestart) {
// Obscure first and last name if blind marking enabled.
if ($assign->is_blind_marking()) {
$submission->firstname = get_string('participant', 'mod_assign');
$submission->lastname = $assign->get_uniqueid_for_user($submission->userid);
if (empty($submission->recordid)) {
$submission->recordid = $assign->get_uniqueid_for_user($submission->userid);
}
$submission->lastname = $submission->recordid;
}
print_recent_activity_note($submission->timemodified,
$submission,

View File

@ -1470,7 +1470,8 @@ class assign {
$params['assignmentid1'] = $assignid;
$params['assignmentid2'] = $assignid;
$sql = 'SELECT u.id, s.status, s.timemodified AS stime, g.timemodified AS gtime, g.grade FROM {user} u
$fields = 'SELECT u.id, s.status, s.timemodified AS stime, g.timemodified AS gtime, g.grade';
$from = ' FROM {user} u
LEFT JOIN {assign_submission} s
ON u.id = s.userid
AND s.assignment = :assignmentid1
@ -1479,7 +1480,18 @@ class assign {
ON u.id = g.userid
AND g.assignment = :assignmentid2
AND g.attemptnumber = s.attemptnumber
WHERE u.id ' . $insql;
';
$where = ' WHERE u.id ' . $insql;
if (!empty($this->get_instance()->blindmarking)) {
$from .= 'LEFT JOIN {assign_user_mapping} um
ON u.id = um.userid
AND um.assignment = :assignmentid3 ';
$params['assignmentid3'] = $assignid;
$fields .= ', um.id as recordid ';
}
$sql = "$fields $from $where";
$records = $DB->get_records_sql($sql, $params);
@ -1899,13 +1911,14 @@ class assign {
// - If marking workflow is not enabled, the grade was updated in the past 24 hours, or
// if marking workflow is enabled, the workflow state is at 'released'.
$sql = "SELECT g.id as gradeid, a.course, a.name, a.blindmarking, a.revealidentities,
g.*, g.timemodified as lastmodified, cm.id as cmid
g.*, g.timemodified as lastmodified, cm.id as cmid, um.id as recordid
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 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
LEFT JOIN {assign_user_mapping} um ON g.id = um.userid AND um.assignment = a.id
WHERE ((a.markingworkflow = 0 AND g.timemodified >= :yesterday AND g.timemodified <= :today) OR
(a.markingworkflow = 1 AND uf.workflowstate = :wfreleased)) AND
uf.mailed = 0 AND gri.hidden = 0
@ -2005,7 +2018,11 @@ class assign {
$uniqueid = 0;
if ($submission->blindmarking && !$submission->revealidentities) {
$uniqueid = self::get_uniqueid_for_user_static($submission->assignment, $user->id);
if (empty($submission->recordid)) {
$uniqueid = self::get_uniqueid_for_user_static($submission->assignment, $user->id);
} else {
$uniqueid = $submission->recordid;
}
}
$showusers = $submission->blindmarking && !$submission->revealidentities;
self::send_assignment_notification($grader,
@ -3921,7 +3938,11 @@ class assign {
public function fullname($user) {
if ($this->is_blind_marking()) {
$hasviewblind = has_capability('mod/assign:viewblinddetails', $this->get_context());
$uniqueid = $this->get_uniqueid_for_user($user->id);
if (empty($user->recordid)) {
$uniqueid = $this->get_uniqueid_for_user($user->id);
} else {
$uniqueid = $user->recordid;
}
if ($hasviewblind) {
return get_string('participant', 'assign') . ' ' . $uniqueid . ' (' . fullname($user) . ')';
} else {