/** * Measure the current course module * * @return bool success or not */ public function measure() { global $DB; if (!moss_enabled($this->moss->cmid)) { return false; } $mosses = $DB->get_records_select('moss', 'tag = ? AND tag != 0', array($this->moss->tag)); foreach ($mosses as $moss) { if ($moss->cmid == $this->moss->cmid) { // current moss must be extracted lastly // to overwrite other files belong to the same person continue; } $this->extract_files($moss); } $this->extract_files(); if (!$this->call_moss()) { return false; } $this->moss->timemeasured = time(); $DB->update_record('moss', $this->moss); return true; }
/** * Save files in $eventdata to moss file area * * @param object $eventdata */ function moss_save_files_from_event($eventdata) { global $DB; $result = true; if (!moss_enabled($eventdata->cmid)) { return $result; } if (!empty($eventdata->file) && empty($eventdata->files)) { //single assignment type passes a single file $eventdata->files[] = $eventdata->file; } if (isset($eventdata->files)) { moss_save_storedfiles($eventdata->files, $eventdata->cmid, $eventdata->userid); } return $result; }
/** * hook to allow plagiarism specific information to be displayed beside a submission * * @param array $linkarraycontains all relevant information for the plugin to generate a link * @return string */ public function get_links($linkarray) { global $DB, $OUTPUT; $link = ''; if (!moss_enabled($linkarray['cmid'])) { return $link; } $sql = 'SELECT r.* FROM {plagiarism_moss_results} r LEFT JOIN {plagiarism_moss_matchedfiles} f ON r.id = f.result WHERE f.contenthash = :contenthash AND r.userid = :userid AND r.moss = :mossid '; if (!has_capability('plagiarism/moss:viewunconfirmed', get_context_instance(CONTEXT_MODULE, $linkarray['cmid']))) { $sql .= 'AND r.confirmed = 1 '; } $sql .= 'ORDER BY r.rank ASC'; $params = array('userid' => $linkarray['userid'], 'contenthash' => $linkarray['file']->get_contenthash(), 'mossid' => $DB->get_field('plagiarism_moss', 'id', array('cmid' => $linkarray['cmid']))); $results = $DB->get_records_sql($sql, $params); if (!empty($results)) { $result = current($results); $text = $result->percentage . '%' . "({$result->linesmatched})"; $icon = $OUTPUT->pix_icon('i/completion-manual-n', get_string('unconfirmed', 'plagiarism_moss')); foreach ($results as $r) { if ($r->confirmed) { $icon = $OUTPUT->pix_icon('i/completion-manual-y', get_string('confirmed', 'plagiarism_moss')); break; } } $text .= $icon; $result->count = count($results); $title = get_string('resultlinktitle', 'plagiarism_moss', $result); $params = array('id' => $linkarray['cmid'], 'user' => $linkarray['userid']); $url = new moodle_url('/plagiarism/moss/view.php', $params); $link = html_writer::link($url, $text, array('title' => $title)); } return $link; }