示例#1
0
function plagiarism_urkund_send_files()
{
    global $DB;
    $plagiarismsettings = plagiarism_plugin_urkund::get_settings();
    if (!empty($plagiarismsettings)) {
        // Get all files in a pending state.
        $plagiarismfiles = $DB->get_records("plagiarism_urkund_files", array("statuscode" => "pending"));
        foreach ($plagiarismfiles as $pf) {
            // Check to make sure cm exists. - delete record if cm has been deleted.
            $sql = "SELECT m.name\n                      FROM {modules} m\n                      JOIN {course_modules} cm ON cm.module = m.id\n                     WHERE cm.id = ?";
            $modulename = $DB->get_field_sql($sql, array($pf->cm));
            if (empty($modulename)) {
                // The coursemodule related to this file has been deleted, delete the urkund entry.
                mtrace("URKUND fileid:{$pf->id} Course module id:" . $pf->cm . " does not exist, deleting record");
                $DB->delete_records('plagiarism_urkund_files', array('id' => $pf->id));
                continue;
            }
            mtrace("URKUND fileid:" . $pf->id . ' sending for processing');
            $file = plagiarism_urkund_get_file_object($pf);
            if (empty($file)) {
                mtrace("URKUND fileid:{$pf->id} File not found, this may have been replaced by a newer file - deleting record");
                if (debugging()) {
                    mtrace(plagiarism_urkund_pretty_print($pf));
                }
                $DB->delete_records('plagiarism_urkund_files', array('id' => $pf->id));
                continue;
            }
            if ($modulename == "assign") {
                // Check for group assignment and adjust userid if required.
                // This prevents subsequent group submissions from flagging a previous submission as a match.
                $pf = plagiarism_urkund_check_group($pf);
            }
            urkund_send_file_to_urkund($pf, $plagiarismsettings, $file);
        }
    }
}
        }
    } else {
        if ($resetuser == 2 && $id && confirm_sesskey()) {
            $plagiarismfile = $DB->get_record('plagiarism_urkund_files', array('id' => $id), '*', MUST_EXIST);
            $file = urkund_get_score(plagiarism_plugin_urkund::get_settings(), $plagiarismfile, true);
            // Reset attempts as this was a manual check.
            $file->attempt = $file->attempt - 1;
            $DB->update_record('plagiarism_urkund_files', $file);
            if ($file->statuscode == URKUND_STATUSCODE_ACCEPTED) {
                echo $OUTPUT->notification(get_string('scorenotavailableyet', 'plagiarism_urkund'));
            } else {
                if ($file->statuscode == URKUND_STATUSCODE_PROCESSED || $file->statuscode == 'Analyzed') {
                    echo $OUTPUT->notification(get_string('scoreavailable', 'plagiarism_urkund'));
                } else {
                    echo $OUTPUT->notification(get_string('unknownwarning', 'plagiarism_urkund'));
                    echo plagiarism_urkund_pretty_print($file);
                }
            }
        }
    }
    if (!empty($delete) && confirm_sesskey()) {
        $DB->delete_records('plagiarism_urkund_files', array('id' => $id));
        echo $OUTPUT->notification(get_string('filedeleted', 'plagiarism_urkund'));
    }
}
// Now show files in an error state.
$userfields = get_all_user_name_fields(true, 'u');
$sqlallfiles = "SELECT t.*, " . $userfields . ", m.name as moduletype, " . "cm.course as courseid, cm.instance as cminstance FROM " . "{plagiarism_urkund_files} t, {user} u, {modules} m, {course_modules} cm " . "WHERE m.id=cm.module AND cm.id=t.cm AND t.userid=u.id " . "AND t.statuscode <> 'Analyzed' ";
$sqlcount = "SELECT COUNT(id) FROM {plagiarism_urkund_files} WHERE statuscode <> 'Analyzed'";
$count = $DB->count_records_sql($sqlcount);
if (!$showall && !$table->is_downloading()) {