public function test_is_manual_grade_in_range_ungraded() { $this->assertTrue(question_engine::is_manual_grade_in_range(1, 2)); }
/** * Process a comment for a particular question on an attempt * * @param int $slot * @param \mod_activequiz\activequiz $rtq * * @return bool */ public function process_comment($slot = null, $rtq) { global $DB; // if there is no slot return false if (empty($slot)) { return false; } // Process any data that was submitted. if (data_submitted() && confirm_sesskey()) { if (optional_param('submit', false, PARAM_BOOL) && \question_engine::is_manual_grade_in_range($this->attempt->questionengid, $slot)) { $transaction = $DB->start_delegated_transaction(); $this->quba->process_all_actions(time()); $this->save(); $transaction->allow_commit(); // Trigger event for question manually graded $params = array('objectid' => $this->quba->get_question($slot)->id, 'courseid' => $rtq->getCourse()->id, 'context' => $rtq->getContext(), 'other' => array('rtqid' => $rtq->getRTQ()->id, 'attemptid' => $this->attempt->id, 'slot' => $slot, 'sessionid' => $this->attempt->sessionid)); $event = \mod_activequiz\event\question_manually_graded::create($params); $event->trigger(); return true; } } return false; }
protected function validate_submitted_marks() { $qubaids = optional_param('qubaids', null, PARAM_SEQUENCE); if (!$qubaids) { return false; } $qubaids = clean_param_array(explode(',', $qubaids), PARAM_INT); $slots = optional_param('slots', '', PARAM_SEQUENCE); if (!$slots) { $slots = array(); } else { $slots = explode(',', $slots); } foreach ($qubaids as $qubaid) { foreach ($slots as $slot) { if (!question_engine::is_manual_grade_in_range($qubaid, $slot)) { return false; } } } return true; }
require_login($attemptobj->get_course(), false, $attemptobj->get_cm()); $attemptobj->require_capability('mod/quiz:grade'); // Print the page header. $PAGE->set_pagelayout('popup'); $PAGE->set_heading($attemptobj->get_course()->fullname); $output = $PAGE->get_renderer('mod_quiz'); echo $output->header(); // Prepare summary information about this question attempt. $summarydata = array(); // Quiz name. $summarydata['quizname'] = array('title' => get_string('modulename', 'quiz'), 'content' => format_string($attemptobj->get_quiz_name())); // Question name. $summarydata['questionname'] = array('title' => get_string('question', 'quiz'), 'content' => $attemptobj->get_question_name($slot)); // Process any data that was submitted. if (data_submitted() && confirm_sesskey()) { if (optional_param('submit', false, PARAM_BOOL) && question_engine::is_manual_grade_in_range($attemptobj->get_uniqueid(), $slot)) { $transaction = $DB->start_delegated_transaction(); $attemptobj->process_submitted_actions(time()); $transaction->allow_commit(); // Log this action. $params = array('objectid' => $attemptobj->get_question_attempt($slot)->get_question()->id, 'courseid' => $attemptobj->get_courseid(), 'context' => context_module::instance($attemptobj->get_cmid()), 'other' => array('quizid' => $attemptobj->get_quizid(), 'attemptid' => $attemptobj->get_attemptid(), 'slot' => $slot)); $event = \mod_quiz\event\question_manually_graded::create($params); $event->trigger(); echo $output->notification(get_string('changessaved'), 'notifysuccess'); close_window(2, true); die; } } // Print quiz information. echo $output->review_summary_table($summarydata, 0); // Print the comment form.