Example #1
0
    /**
     * 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;
}
Example #3
0
 /**
  * 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;
 }