/** * Observer function to handle the assessable_uploaded event in mod_assign onlinetext. * @param \assignsubmission_onlinetext\event\assessable_uploaded $event */ public static function assignsubmission_onlinetext_uploaded(\assignsubmission_onlinetext\event\assessable_uploaded $event) { global $CFG; require_once $CFG->dirroot . '/plagiarism/urkund/lib.php'; $eventdata = $event->get_data(); $eventdata['eventtype'] = 'assignsubmission_onlinetext_uploaded'; $urkund = new plagiarism_plugin_urkund(); $urkund->event_handler($eventdata); }
public function create_text_event($params) { return \assignsubmission_onlinetext\event\assessable_uploaded::create($params); }
/** * Save data to the database and trigger plagiarism plugin, * if enabled, to scan the uploaded content via events trigger * * @param stdClass $submission * @param stdClass $data * @return bool */ public function save(stdClass $submission, stdClass $data) { global $USER, $DB; $editoroptions = $this->get_edit_options(); $data = file_postupdate_standard_editor($data, 'onlinetext', $editoroptions, $this->assignment->get_context(), 'assignsubmission_onlinetext', ASSIGNSUBMISSION_ONLINETEXT_FILEAREA, $submission->id); $onlinetextsubmission = $this->get_onlinetext_submission($submission->id); $fs = get_file_storage(); $files = $fs->get_area_files($this->assignment->get_context()->id, 'assignsubmission_onlinetext', ASSIGNSUBMISSION_ONLINETEXT_FILEAREA, $submission->id, 'id', false); // Check word count before submitting anything. $exceeded = $this->check_word_count(trim($data->onlinetext)); if ($exceeded) { $this->set_error($exceeded); return false; } $params = array('context' => context_module::instance($this->assignment->get_course_module()->id), 'courseid' => $this->assignment->get_course()->id, 'objectid' => $submission->id, 'other' => array('pathnamehashes' => array_keys($files), 'content' => trim($data->onlinetext), 'format' => $data->onlinetext_editor['format'])); if (!empty($submission->userid) && $submission->userid != $USER->id) { $params['relateduserid'] = $submission->userid; } $event = \assignsubmission_onlinetext\event\assessable_uploaded::create($params); $event->trigger(); $groupname = null; $groupid = 0; // Get the group name as other fields are not transcribed in the logs and this information is important. if (empty($submission->userid) && !empty($submission->groupid)) { $groupname = $DB->get_field('groups', 'name', array('id' => $submission->groupid), '*', MUST_EXIST); $groupid = $submission->groupid; } else { $params['relateduserid'] = $submission->userid; } $count = count_words($data->onlinetext); // Unset the objectid and other field from params for use in submission events. unset($params['objectid']); unset($params['other']); $params['other'] = array('submissionid' => $submission->id, 'submissionattempt' => $submission->attemptnumber, 'submissionstatus' => $submission->status, 'onlinetextwordcount' => $count, 'groupid' => $groupid, 'groupname' => $groupname); if ($onlinetextsubmission) { $onlinetextsubmission->onlinetext = $data->onlinetext; $onlinetextsubmission->onlineformat = $data->onlinetext_editor['format']; $params['objectid'] = $onlinetextsubmission->id; $updatestatus = $DB->update_record('assignsubmission_onlinetext', $onlinetextsubmission); $event = \assignsubmission_onlinetext\event\submission_updated::create($params); $event->set_assign($this->assignment); $event->trigger(); return $updatestatus; } else { $onlinetextsubmission = new stdClass(); $onlinetextsubmission->onlinetext = $data->onlinetext; $onlinetextsubmission->onlineformat = $data->onlinetext_editor['format']; $onlinetextsubmission->submission = $submission->id; $onlinetextsubmission->assignment = $this->assignment->get_instance()->id; $onlinetextsubmission->id = $DB->insert_record('assignsubmission_onlinetext', $onlinetextsubmission); $params['objectid'] = $onlinetextsubmission->id; $event = \assignsubmission_onlinetext\event\submission_created::create($params); $event->set_assign($this->assignment); $event->trigger(); return $onlinetextsubmission->id > 0; } }
/** * Save data to the database and trigger plagiarism plugin, * if enabled, to scan the uploaded content via events trigger * * @param stdClass $submission * @param stdClass $data * @return bool */ public function save(stdClass $submission, stdClass $data) { global $USER, $DB; $editoroptions = $this->get_edit_options(); $data = file_postupdate_standard_editor($data, 'onlinetext', $editoroptions, $this->assignment->get_context(), 'assignsubmission_onlinetext', ASSIGNSUBMISSION_ONLINETEXT_FILEAREA, $submission->id); $onlinetextsubmission = $this->get_onlinetext_submission($submission->id); $fs = get_file_storage(); $files = $fs->get_area_files($this->assignment->get_context()->id, 'assignsubmission_onlinetext', ASSIGNSUBMISSION_ONLINETEXT_FILEAREA, $submission->id, 'id', false); $params = array('context' => context_module::instance($this->assignment->get_course_module()->id), 'objectid' => $submission->id, 'other' => array('pathnamehashes' => array_keys($files), 'content' => trim($data->onlinetext), 'format' => $data->onlinetext_editor['format'])); $event = \assignsubmission_onlinetext\event\assessable_uploaded::create($params); $event->trigger(); if ($onlinetextsubmission) { $onlinetextsubmission->onlinetext = $data->onlinetext; $onlinetextsubmission->onlineformat = $data->onlinetext_editor['format']; return $DB->update_record('assignsubmission_onlinetext', $onlinetextsubmission); } else { $onlinetextsubmission = new stdClass(); $onlinetextsubmission->onlinetext = $data->onlinetext; $onlinetextsubmission->onlineformat = $data->onlinetext_editor['format']; $onlinetextsubmission->submission = $submission->id; $onlinetextsubmission->assignment = $this->assignment->get_instance()->id; return $DB->insert_record('assignsubmission_onlinetext', $onlinetextsubmission) > 0; } }