/**
  * 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);
 }
Example #3
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);
     // 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;
     }
 }
Example #4
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;
     }
 }