public function validate($receiver, $options = null) { $urkund = new plagiarism_plugin_urkund(); $valid = $urkund->validate_receiver($receiver); if ($valid === true) { return true; } else { return false; } }
public function execute() { global $CFG; require_once $CFG->dirroot . '/plagiarism/urkund/lib.php'; $plagiarismsettings = \plagiarism_plugin_urkund::get_settings(); if (!empty($plagiarismsettings)) { urkund_get_scores($plagiarismsettings); } }
public function execute() { global $CFG; require_once $CFG->dirroot . '/plagiarism/urkund/lib.php'; $plagiarismsettings = \plagiarism_plugin_urkund::get_settings(); if (!empty($plagiarismsettings)) { plagiarism_urkund_update_allowed_filetypes(); plagiarism_urkund_delete_old_records(); } }
// Check if run in last 30min. echo $OUTPUT->box(get_string('cronwarning', 'plagiarism_urkund'), 'generalbox admin warning'); } $warning = ''; if (!empty($a->countallevents)) { $warning = ' warning'; } echo $OUTPUT->box(get_string('waitingevents', 'plagiarism_urkund', $a), 'generalbox admin' . $warning) . "<br/>"; if ($resetuser == 1 && $id && confirm_sesskey()) { if (urkund_reset_file($id)) { echo $OUTPUT->notification(get_string('fileresubmitted', 'plagiarism_urkund')); } } 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) { echo $OUTPUT->notification(get_string('scoreavailable', 'plagiarism_urkund')); } else { echo $OUTPUT->notification(get_string('unknownwarning', 'plagiarism_urkund')); print_object($file); } } } }
// Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * checkreceiver.php - Checks to make sure passed receiver address is valid. * * @since 2.0 * @package plagiarism_urkund * @subpackage plagiarism * @author Dan Marsden <*****@*****.**> * @copyright 2014 Dan Marsden http://danmarsden.com * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ define('AJAX_SCRIPT', true); require_once dirname(dirname(__FILE__)) . '/../config.php'; require_once $CFG->libdir . '/plagiarismlib.php'; require_once $CFG->dirroot . '/plagiarism/urkund/lib.php'; require_once $CFG->libdir . '/filelib.php'; $receiver = required_param('ur', PARAM_TEXT); $contextinstance = required_param('c', PARAM_INT); $coursecontext = context_course::instance($contextinstance); require_login(); require_capability('plagiarism/urkund:enable', $coursecontext); require_sesskey(); // Now make call to check receiver address is valid. $urkund = new plagiarism_plugin_urkund(); echo json_encode($urkund->validate_receiver($receiver));
function plagiarism_urkund_send_files() { global $DB, $CFG; $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)) { continue; } if ($module = "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); } if (!empty($file)) { urkund_send_file_to_urkund($pf, $plagiarismsettings, $file); } else { $DB->delete_records('plagiarism_urkund_files', array('id' => $pf->id)); mtrace("URKUND fileid:{$pf->id} File not found, this may have been replaced by a newer file - deleting record"); } } } }
/** * Observer function to handle the assessable_submitted event in mod_assign. * @param \mod_assign\event\assessable_submitted $event */ public static function assignsubmission_submitted(\mod_assign\event\assessable_submitted $event) { global $CFG; require_once $CFG->dirroot . '/plagiarism/urkund/lib.php'; $eventdata = $event->get_data(); $eventdata['eventtype'] = 'assignsubmission_submitted'; $urkund = new plagiarism_plugin_urkund(); $urkund->event_handler($eventdata); }
function urkund_reset_file($id) { global $DB, $CFG; $plagiarismfile = $DB->get_record('plagiarism_urkund_files', array('id' => $id), '*', MUST_EXIST); if ($plagiarismfile->statuscode == 'Analyzed' || $plagiarismfile->statuscode == URKUND_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_urkund_files', $plagiarismfile); // Update before trying to send again. return urkund_send_file($plagiarismfile->cm, $plagiarismfile->userid, $file, plagiarism_plugin_urkund::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_urkund_files', $plagiarismfile); // Update before trying to send again. return urkund_send_file($plagiarismfile->cm, $plagiarismfile->userid, $file, plagiarism_plugin_urkund::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_urkund_files', $plagiarismfile); // Update before trying to send again. return urkund_send_file($plagiarismfile->cm, $plagiarismfile->userid, $file, plagiarism_plugin_urkund::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_urkund_files', $plagiarismfile); // Update before trying to send again. return urkund_send_file($plagiarismfile->cm, $plagiarismfile->userid, $file, plagiarism_plugin_urkund::get_settings()); } } } } } } } }
require_once $CFG->dirroot . '/plagiarism/urkund/lib.php'; require_once 'urkund_form.php'; require_login(); admin_externalpage_setup('plagiarismurkund'); $context = context_system::instance(); $mform = new urkund_defaults_form(null); $plagiarismdefaults = $DB->get_records_menu('plagiarism_urkund_config', array('cm' => 0), '', 'name, value'); // The cmid(0) is the default list. if (!empty($plagiarismdefaults)) { $mform->set_data($plagiarismdefaults); } echo $OUTPUT->header(); $currenttab = 'urkunddefaults'; require_once 'urkund_tabs.php'; if (($data = $mform->get_data()) && confirm_sesskey()) { $plagiarismplugin = new plagiarism_plugin_urkund(); $plagiarismelements = $plagiarismplugin->config_options(); foreach ($plagiarismelements as $element) { if (isset($data->{$element})) { $newelement = new Stdclass(); $newelement->cm = 0; $newelement->name = $element; if (is_array($data->{$element})) { $newelement->value = implode(',', $data->{$element}); } else { $newelement->value = $data->{$element}; } if (isset($plagiarismdefaults[$element])) { $newelement->id = $DB->get_field('plagiarism_urkund_config', 'id', array('cm' => 0, 'name' => $element)); $DB->update_record('plagiarism_urkund_config', $newelement); } else {