/** * Allocate submissions as requested by user * * @return workshop_allocation_result */ public function init() { global $PAGE; $result = new workshop_allocation_result($this); $customdata = array(); $customdata['workshop'] = $this->workshop; $this->mform = new $this->form_class($PAGE->url, $customdata); if ($this->mform->is_cancelled()) { redirect($this->workshop->view_url()); } else if ($settings = $this->mform->get_data()) { $settings = workshop_random_allocator_setting::instance_from_object($settings); $this->execute($settings, $result); return $result; } else { // this branch is executed if the form is submitted but the data // doesn't validate and the form should be redisplayed // or on the first display of the form. $result->set_status(workshop_allocation_result::STATUS_VOID); return $result; } }
function workshopallocation_live_assessable_uploaded($event) { global $DB; $cm = get_coursemodule_from_id('workshop', $event->contextinstanceid, 0, false, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); $instance = $DB->get_record('workshop', array('id' => $cm->instance), '*', MUST_EXIST); $workshop = new workshop($instance, $cm, $course); $record = $DB->get_record('workshopallocation_live', array('workshopid' => $workshop->id)); if ($workshop->phase == workshop::PHASE_ASSESSMENT and $record and $record->enabled) { $randomallocator = $workshop->allocator_instance('random'); $settings = workshop_random_allocator_setting::instance_from_text($record->settings); $result = new workshop_allocation_result($randomallocator); $randomallocator->execute($settings, $result); } return true; }
/** * Stores the pre-defined random allocation settings for later usage * * @param bool $enabled is the scheduled allocation enabled * @param bool $reset reset the recent execution info * @param workshop_random_allocator_setting $settings settings form data * @param workshop_allocation_result $result logger */ protected function store_settings($enabled, $reset, workshop_random_allocator_setting $settings, workshop_allocation_result $result) { global $DB; $data = new stdClass(); $data->workshopid = $this->workshop->id; $data->enabled = $enabled; $data->submissionend = $this->workshop->submissionend; $data->settings = $settings->export_text(); if ($reset) { $data->timeallocated = null; $data->resultstatus = null; $data->resultmessage = null; $data->resultlog = null; } $result->log($data->settings, 'debug'); $current = $DB->get_record('workshopallocation_scheduled', array('workshopid' => $data->workshopid), '*', IGNORE_MISSING); if ($current === false) { $DB->insert_record('workshopallocation_scheduled', $data); } else { $data->id = $current->id; $DB->update_record('workshopallocation_scheduled', $data); } }