/** * Observer function to handle the assessable_uploaded event in mod_forum. * @param \mod_forum\event\assessable_uploaded $event */ public static function forum_file_uploaded(\mod_forum\event\assessable_uploaded $event) { global $CFG; require_once $CFG->dirroot . '/plagiarism/urkund/lib.php'; $eventdata = $event->get_data(); $eventdata['eventtype'] = 'forum_file_uploaded'; $urkund = new plagiarism_plugin_urkund(); $urkund->event_handler($eventdata); }
/** * Sends post content to plagiarism plugin * @param object $post Forum post object * @param object $cm Course-module * @param string $name * @return bool */ function forum_trigger_content_uploaded_event($post, $cm, $name) { $context = context_module::instance($cm->id); $fs = get_file_storage(); $files = $fs->get_area_files($context->id, 'mod_forum', 'attachment', $post->id, "timemodified", false); $params = array('context' => $context, 'objectid' => $post->id, 'other' => array('content' => $post->message, 'pathnamehashes' => array_keys($files), 'discussionid' => $post->discussion, 'triggeredfrom' => $name)); $event = \mod_forum\event\assessable_uploaded::create($params); $event->trigger(); return true; }
public function create_file_event($params) { return \mod_forum\event\assessable_uploaded::create($params); }
/** * Get all relevant submission data to requeue submission for the cron to process. */ public function recreate_submission_event() { global $DB, $CFG; // Create module object. $moduleclass = "turnitin_" . $this->cm->modname; $moduleobject = new $moduleclass(); // Some data depends on submission type. switch ($this->submissiondata->submissiontype) { case 'file': $file = $this->get_file_info(); // Collate data and trigger new event for the cron to process. if ($CFG->branch >= 26) { $params = array('context' => context_module::instance($this->cm->id), 'courseid' => $this->cm->course, 'objectid' => $file->get_itemid(), 'userid' => $this->submissiondata->userid, 'other' => array('content' => '', 'pathnamehashes' => array($this->submissiondata->identifier))); // Forum attachments need the discussion id to be set. if ($this->cm->modname == "forum") { $discussionid = $moduleobject->get_discussionid($this->data['forumdata']); $params['other']['discussionid'] = $discussionid; $params['other']['triggeredfrom'] = 'turnitin_recreate_submission_event'; } $event = $moduleobject->create_file_event($params); if ($this->cm->modname != "forum") { $event->set_legacy_files(array($this->submissiondata->identifier => $file)); } $event->trigger(); } else { $eventdata = new stdClass(); $eventdata->modulename = $this->cm->modname; $eventdata->cmid = $this->cm->id; $eventdata->courseid = $this->cm->course; $eventdata->itemid = $file->get_itemid(); $eventdata->userid = $this->submissiondata->userid; $eventdata->pathnamehashes = array($this->submissiondata->identifier); events_trigger('assessable_file_uploaded', $eventdata); } break; case 'text_content': // Get the actual text content. $onlinetextdata = $moduleobject->get_onlinetext($this->submissiondata->userid, $this->cm); // Collate data and trigger new event for the cron to process. if ($CFG->branch >= 26) { $params = array('context' => context_module::instance($this->cm->id), 'courseid' => $this->cm->course, 'objectid' => $onlinetextdata->itemid, 'userid' => $this->submissiondata->userid, 'other' => array('pathnamehashes' => array(), 'content' => trim($onlinetextdata->onlinetext), 'format' => $onlinetextdata->onlineformat)); $event = $moduleobject->create_text_event($params, $this->cm); $event->trigger(); } else { $eventdata = new stdClass(); $eventdata->modulename = $this->cm->modname; $eventdata->cmid = $this->cm->id; $eventdata->courseid = $this->cm->course; $eventdata->itemid = $onlinetextdata->itemid; $eventdata->userid = $this->submissiondata->userid; $eventdata->content = trim($onlinetextdata->onlinetext); events_trigger('assessable_content_uploaded', $eventdata); } break; case 'forum_post': $discussionid = $moduleobject->get_discussionid($this->data['forumdata']); $forum = $DB->get_record("forum", array("id" => $this->cm->instance)); // Some forum types don't pass in certain values on main forum page. if ((empty($discussionid) || $querystrid != 0) && ($forum->type == 'blog' || $forum->type == 'single')) { $discussion = $DB->get_record_sql('SELECT FD.id FROM {forum_posts} FP JOIN {forum_discussions} FD ON FP.discussion = FD.id WHERE FD.forum = ? AND FD.course = ? AND FP.userid = ? AND FP.message LIKE ? ', array($forum->id, $forum->course, $this->submissiondata->userid, $this->data['forumpost'])); $discussionid = $discussion->id; } $submission = $DB->get_record_select('forum_posts', " userid = ? AND message LIKE ? AND discussion = ? ", array($this->submissiondata->userid, $this->data['forumpost'], $discussionid)); // Collate data and trigger new event for the cron to process. if ($CFG->branch >= 26) { $params = array('context' => context_module::instance($this->cm->id), 'courseid' => $this->cm->course, 'objectid' => $submission->id, 'userid' => $this->submissiondata->userid, 'other' => array('pathnamehashes' => '', 'content' => trim($this->data['forumpost']), 'discussionid' => $discussionid, 'triggeredfrom' => 'turnitin_recreate_submission_event')); $event = \mod_forum\event\assessable_uploaded::create($params); $event->trigger(); } else { $eventdata = new stdClass(); $eventdata->modulename = $this->cm->modname; $eventdata->cmid = $this->cm->id; $eventdata->courseid = $this->cm->course; $eventdata->itemid = $submission->id; $eventdata->userid = $this->submissiondata->userid; $eventdata->content = trim($this->data['forumpost']); events_trigger('assessable_content_uploaded', $eventdata); } break; } $submissiondata = new stdClass(); $submissiondata->id = $this->id; $submissiondata->statuscode = 'pending'; return $DB->update_record('plagiarism_turnitin_files', $submissiondata); }