*/ $commentid = required_param('commentid', PARAM_INT); $rownum = optional_param('rownum', 1, PARAM_INT); if ($rownum < 1) { $rownum = 1; } if (!($comment = $DB->get_record('emarking_comment', array('id' => $commentid)))) { emarking_json_error('Invalid comment id for searching.'); } $params = array($submission->emarkingid, $submission->id, $comment->levelid); $similaranswers = $DB->get_records_sql("SELECT c.id, c.rawtext as text, c.pageno, c.pagesid\n\t\tFROM {emarking_comment} as c\n\t\tWHERE pagesid in (\n\t\tSELECT id FROM {emarking_page}\n\t\tWHERE assignment in (SELECT emarking FROM {emarking_page} WHERE id = ?))\n\t\tAND pagesid <> ? AND c.levelid = ?\n\t\tORDER BY c.id", $params); $count = 0; foreach ($similaranswers as $answer) { $count++; if ($count == $rownum) { if (!($submission = $DB->get_record('emarking_draft', array('id' => $answer->pagesid)))) { emarking_json_error('Invalid submission'); } if (!($emarking = $DB->get_record("emarking", array("id" => $submission->emarkingid)))) { emarking_json_error('Invalid assignment'); } if (!($course = $DB->get_record("course", array("id" => $emarking->course)))) { emarking_json_error('Invalid course'); } if (!($cm = get_coursemodule_from_instance("emarking", $emarking->id, $course->id))) { emarking_json_error('Invalid course module'); } list($imageurl, $imgwidth, $imgheight, $numfiles) = emarking_get_page_image($pageno, $submission, $context->id); emarking_json_array(array('error' => '', 'url' => $imageurl, 'width' => $imgwidth, 'height' => $imgheight, 'pagecount' => $numfiles)); } }
break; case 'rotatepage': if (!$issupervisor) { emarking_json_error('Invalid access'); } list($imageurl, $anonymousurl, $imgwidth, $imgheight) = emarking_rotate_image($pageno, $submission, $context); if (strlen($imageurl) == 0) { emarking_json_error('Image is empty'); } $output = array('imageurl' => $imageurl, 'anonymousimageurl' => $anonymousurl, 'width' => $imgwidth, 'height' => $imgheight); emarking_json_array($output); break; case 'sortpages': $neworder = required_param('neworder', PARAM_SEQUENCE); $neworderarr = explode(',', $neworder); if (!emarking_sort_submission_pages($submission, $neworderarr)) { emarking_json_error('Error trying to resort pages!'); } $output = array('neworder' => $neworder); emarking_json_array($output); break; case 'updcomment': emarking_check_grade_permission($readonly, $draft, $context); // Add to Moodle log so some auditing can be done. \mod_emarking\event\emarking_graded::create_from_draft($draft, $submission, $context)->trigger(); $newgrade = emarking_update_comment($submission, $draft, $emarking, $context); emarking_json_array(array('message' => 'Success!', 'newgrade' => $newgrade, 'timemodified' => time())); break; default: emarking_json_error('Invalid action!'); }
// Ping action for fast validation of user logged in and communication with server if ($action === 'ping') { emarking_json_array(array('user' => $USER->id)); } // Now require login so full security is checked require_login($course->id, false, $cm); $url = new moodle_url('/mod/emarking/ajax/m.php', array('cmid' => $cmid, 'action' => $action)); // Switch according to action switch ($action) { case 'markersconfig': // Add to Moodle log so some auditing can be done $item = array('context' => context_module::instance($cm->id), 'objectid' => $cm->id); // Add to Moodle log so some auditing can be done \mod_emarking\event\markersconfig_called::create($item)->trigger(); $module = new stdClass(); include "qry/qryGetMarkersConfiguration.php"; emarking_json_array($results); break; case 'addmarker': case 'addpage': include 'act/actAddCriterion2Marker.php'; emarking_json_array($output); break; case 'delmarker': case 'delpage': include 'act/actDeleteCriterion2Marker.php'; emarking_json_array($output); break; default: emarking_json_error('Invalid action!' . $action); }