MDL-45582: Apply grades and feedback to entire group does not work with Annotate PDF feature

This commit is contained in:
Gregory Faller 2014-06-16 18:09:21 +09:30
parent 337075d17b
commit 028c9d20b9
2 changed files with 40 additions and 0 deletions

View File

@ -308,4 +308,36 @@ class page_editor {
return $DB->delete_records('assignfeedback_editpdf_annot', array('id'=>$annotationid));
}
/**
* This function copies annotations and comments from the source user
* to the current group member being processed when using applytoall.
* @param int|\assign $assignment
* @param stdClass $grade
* @param int $sourceuserid
* @return bool
*/
public static function copy_drafts_from_to($assignment, $grade, $sourceuserid) {
global $DB;
// Delete any existing annotations and comments from current user.
$DB->delete_records('assignfeedback_editpdf_annot', array('gradeid' => $grade->id));
$DB->delete_records('assignfeedback_editpdf_cmnt', array('gradeid' => $grade->id));
// Get gradeid, annotations and comments from sourceuserid.
$sourceusergrade = $assignment->get_user_grade($sourceuserid, true, $grade->attemptnumber);
$annotations = $DB->get_records('assignfeedback_editpdf_annot', array('gradeid' => $sourceusergrade->id, 'draft' => 1));
$comments = $DB->get_records('assignfeedback_editpdf_cmnt', array('gradeid' => $sourceusergrade->id, 'draft' => 1));
// Add annotations and comments to current user to generate feedback file.
foreach ($annotations as $annotation) {
$annotation->gradeid = $grade->id;
$DB->insert_record('assignfeedback_editpdf_annot', $annotation);
}
foreach ($comments as $comment) {
$comment->gradeid = $grade->id;
$DB->insert_record('assignfeedback_editpdf_cmnt', $comment);
}
return true;
}
}

View File

@ -178,6 +178,9 @@ class assign_feedback_editpdf extends assign_feedback_plugin {
$html = $renderer->render($widget);
$mform->addElement('static', 'editpdf', get_string('editpdf', 'assignfeedback_editpdf'), $html);
$mform->addHelpButton('editpdf', 'editpdf', 'assignfeedback_editpdf');
$mform->addElement('hidden', 'editpdf_source_userid', $userid);
$mform->setType('editpdf_source_userid', PARAM_INT);
$mform->setConstant('editpdf_source_userid', $userid);
}
}
@ -189,6 +192,11 @@ class assign_feedback_editpdf extends assign_feedback_plugin {
* @return bool
*/
public function save(stdClass $grade, stdClass $data) {
$sourceuserid = $data->editpdf_source_userid;
// Copy drafts annotations and comments if current user is different to sourceuserid.
if ($sourceuserid != $grade->userid) {
page_editor::copy_drafts_from_to($this->assignment, $grade, $sourceuserid);
}
if (page_editor::has_annotations_or_comments($grade->id, true)) {
document_services::generate_feedback_document($this->assignment, $grade->userid, $grade->attemptnumber);
}