if ($lastcron < time() - 3600 * 0.5) {
     // Check if run in last 30min.
     echo $OUTPUT->box(get_string('cronwarning', 'plagiarism_unplag'), 'generalbox admin warning');
 }
 $warning = '';
 if (!empty($a->countallevents)) {
     $warning = ' warning';
 }
 if ($resetuser == 1 && $id && confirm_sesskey()) {
     if (plagiarism_plugin_unplag::unplag_reset_file($id)) {
         echo $OUTPUT->notification(get_string('fileresubmitted', 'plagiarism_unplag'));
     }
 } else {
     if ($resetuser == 2 && $id && confirm_sesskey()) {
         $plagiarismfile = $DB->get_record('plagiarism_unplag_files', array('id' => $id), '*', MUST_EXIST);
         $file = plagiarism_plugin_unplag::unplag_get_score(plagiarism_plugin_unplag::get_settings(), $plagiarismfile, true);
         // Reset attempts as this was a manual check.
         $file->attempt = $file->attempt - 1;
         $DB->update_record('plagiarism_unplag_files', $file);
         if ($file->statuscode == UNPLAG_STATUSCODE_ACCEPTED) {
             echo $OUTPUT->notification(get_string('scorenotavailableyet', 'plagiarism_unplag'));
         } else {
             if ($file->statuscode == UNPLAG_STATUSCODE_PROCESSED) {
                 echo $OUTPUT->notification(get_string('scoreavailable', 'plagiarism_unplag'));
             } else {
                 echo $OUTPUT->notification(get_string('unknownwarning', 'plagiarism_unplag'));
                 print_object($file);
             }
         }
     }
 }
 static function unplag_reset_file($id)
 {
     global $DB, $CFG;
     $plagiarismfile = $DB->get_record('plagiarism_unplag_files', array('id' => $id), '*', MUST_EXIST);
     if ($plagiarismfile->statuscode == UNPLAG_STATUSCODE_PROCESSED || $plagiarismfile->statuscode == UNPLAG_STATUSCODE_ACCEPTED) {
         // Sanity Check.
         return true;
     }
     // Set some new values.
     $plagiarismfile->statuscode = 'pending';
     $plagiarismfile->attempt = 0;
     $plagiarismfile->timesubmitted = time();
     $cm = get_coursemodule_from_id('', $plagiarismfile->cm);
     $modulecontext = context_module::instance($plagiarismfile->cm);
     $fs = get_file_storage();
     if ($cm->modname == 'assignment') {
         $submission = $DB->get_record('assignment_submissions', array('assignment' => $cm->instance, 'userid' => $plagiarismfile->userid));
         $files = $fs->get_area_files($modulecontext->id, 'mod_assignment', 'submission', $submission->id);
         foreach ($files as $file) {
             if ($file->get_contenthash() == $plagiarismfile->identifier) {
                 $DB->update_record('plagiarism_unplag_files', $plagiarismfile);
                 // Update before trying to send again.
                 return self::unplag_send_file($plagiarismfile->cm, $plagiarismfile->userid, $file, self::get_settings());
             }
         }
     } else {
         if ($cm->modname == 'assign') {
             require_once $CFG->dirroot . '/mod/assign/locallib.php';
             $assign = new assign($modulecontext, null, null);
             $submissionplugins = $assign->get_submission_plugins();
             $dbparams = array('assignment' => $assign->get_instance()->id, 'userid' => $plagiarismfile->userid);
             $submissions = $DB->get_records('assign_submission', $dbparams);
             foreach ($submissions as $submission) {
                 foreach ($submissionplugins as $submissionplugin) {
                     $component = $submissionplugin->get_subtype() . '_' . $submissionplugin->get_type();
                     $fileareas = $submissionplugin->get_file_areas();
                     foreach ($fileareas as $filearea => $name) {
                         $files = $fs->get_area_files($assign->get_context()->id, $component, $filearea, $submission->id, "timemodified", false);
                         foreach ($files as $file) {
                             if ($file->get_contenthash() == $plagiarismfile->identifier) {
                                 $DB->update_record('plagiarism_unplag_files', $plagiarismfile);
                                 // Update before trying to send again.
                                 return self::unplag_send_file($plagiarismfile->cm, $plagiarismfile->userid, $file, plagiarism_plugin_unplag::get_settings());
                             }
                         }
                     }
                 }
             }
         } else {
             if ($cm->modname == 'workshop') {
                 require_once $CFG->dirroot . '/mod/workshop/locallib.php';
                 $cm = get_coursemodule_from_id('workshop', $plagiarismfile->cm, 0, false, MUST_EXIST);
                 $workshop = $DB->get_record('workshop', array('id' => $cm->instance), '*', MUST_EXIST);
                 $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
                 $workshop = new workshop($workshop, $cm, $course);
                 $submissions = $workshop->get_submissions($plagiarismfile->userid);
                 foreach ($submissions as $submission) {
                     $files = $fs->get_area_files($workshop->context->id, 'mod_workshop', 'submission_attachment', $submission->id);
                     foreach ($files as $file) {
                         if ($file->get_contenthash() == $plagiarismfile->identifier) {
                             $DB->update_record('plagiarism_unplag_files', $plagiarismfile);
                             // Update before trying to send again.
                             return self::unplag_send_file($plagiarismfile->cm, $plagiarismfile->userid, $file, plagiarism_plugin_unplag::get_settings());
                         }
                     }
                 }
             } else {
                 if ($cm->modname == 'forum') {
                     require_once $CFG->dirroot . '/mod/forum/lib.php';
                     $cm = get_coursemodule_from_id('forum', $plagiarismfile->cm, 0, false, MUST_EXIST);
                     $posts = forum_get_user_posts($cm->instance, $plagiarismfile->userid);
                     foreach ($posts as $post) {
                         $files = $fs->get_area_files($modulecontext->id, 'mod_forum', 'attachment', $post->id, "timemodified", false);
                         foreach ($files as $file) {
                             if ($file->get_contenthash() == $plagiarismfile->identifier) {
                                 $DB->update_record('plagiarism_unplag_files', $plagiarismfile);
                                 // Update before trying to send again.
                                 return self::unplag_send_file($plagiarismfile->cm, $plagiarismfile->userid, $file, plagiarism_plugin_unplag::get_settings());
                             }
                         }
                     }
                 }
             }
         }
     }
 }