public function testable_grading_batch_operations_form($operation, $selectedusers) { global $CFG; require_once $CFG->dirroot . '/mod/setask/gradingbatchoperationsform.php'; // Mock submit the grading operations form. $data = array(); $data['id'] = $this->get_course_module()->id; $data['selectedusers'] = $selectedusers; $data['returnaction'] = 'grading'; $data['operation'] = $operation; mod_setask_grading_batch_operations_form::mock_submit($data); // Set required variables in the form. $formparams = array(); $formparams['submissiondrafts'] = 1; $formparams['duedate'] = 1; $formparams['attemptreopenmethod'] = ASSIGN_ATTEMPT_REOPEN_METHOD_MANUAL; $formparams['feedbackplugins'] = array(); $formparams['markingworkflow'] = 1; $formparams['markingallocation'] = 1; $formparams['cm'] = $this->get_course_module()->id; $formparams['context'] = $this->get_context(); $mform = new mod_setask_grading_batch_operations_form(null, $formparams); return $mform; }
/** * Ask the user to confirm they want to perform this batch operation * * @param moodleform $mform Set to a grading batch operations form * @return string - the page to view after processing these actions */ protected function process_grading_batch_operation(&$mform) { global $CFG; require_once $CFG->dirroot . '/mod/setask/gradingbatchoperationsform.php'; require_sesskey(); $markingallocation = $this->get_instance()->markingworkflow && $this->get_instance()->markingallocation && has_capability('mod/setask:manageallocations', $this->context); $batchformparams = array('cm' => $this->get_course_module()->id, 'submissiondrafts' => $this->get_instance()->submissiondrafts, 'duedate' => $this->get_instance()->duedate, 'attemptreopenmethod' => $this->get_instance()->attemptreopenmethod, 'feedbackplugins' => $this->get_feedback_plugins(), 'context' => $this->get_context(), 'markingworkflow' => $this->get_instance()->markingworkflow, 'markingallocation' => $markingallocation); $formclasses = array('class' => 'gradingbatchoperationsform'); $mform = new mod_setask_grading_batch_operations_form(null, $batchformparams, 'post', '', $formclasses); if ($data = $mform->get_data()) { // Get the list of users. $users = $data->selectedusers; $userlist = explode(',', $users); $prefix = 'plugingradingbatchoperation_'; if ($data->operation == 'grantextension') { // Reset the form so the grant extension page will create the extension form. $mform = null; return 'grantextension'; } else { if ($data->operation == 'setmarkingworkflowstate') { return 'viewbatchsetmarkingworkflowstate'; } else { if ($data->operation == 'setmarkingallocation') { return 'viewbatchmarkingallocation'; } else { if (strpos($data->operation, $prefix) === 0) { $tail = substr($data->operation, strlen($prefix)); list($plugintype, $action) = explode('_', $tail, 2); $plugin = $this->get_feedback_plugin_by_type($plugintype); if ($plugin) { return 'plugingradingbatchoperation'; } } } } } foreach ($userlist as $userid) { if ($data->operation == 'lock') { $this->process_lock_submission($userid); } else { if ($data->operation == 'unlock') { $this->process_unlock_submission($userid); } else { if ($data->operation == 'reverttodraft') { $this->process_revert_to_draft($userid); } else { if ($data->operation == 'addattempt') { if (!$this->get_instance()->teamsubmission) { $this->process_add_attempt($userid); } } } } } } if ($this->get_instance()->teamsubmission && $data->operation == 'addattempt') { // This needs to be handled separately so that each team submission is only re-opened one time. $this->process_add_attempt_group($userlist); } } return 'grading'; }