/** * */ function forum_user_complete($course, $user, $mod, $forum) { global $CFG; if ($posts = forum_get_user_posts($forum->id, $user->id)) { if (!($cm = get_coursemodule_from_instance('forum', $forum->id, $course->id))) { error('Course Module ID was incorrect'); } $discussions = forum_get_user_involved_discussions($forum->id, $user->id); foreach ($posts as $post) { if (!isset($discussions[$forum->discussion])) { continue; } $discussion = $discussions[$forum->discussion]; forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false, false); } } else { echo "<p>" . get_string("noposts", "forum") . "</p>"; } }
/** * @global object * @global object * @param object $coure * @param object $user * @param object $mod * @param object $forum */ function forum_user_complete($course, $user, $mod, $forum) { global $CFG,$USER, $OUTPUT; require_once("$CFG->libdir/gradelib.php"); $grades = grade_get_grades($course->id, 'mod', 'forum', $forum->id, $user->id); if (!empty($grades->items[0]->grades)) { $grade = reset($grades->items[0]->grades); echo $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); if ($grade->str_feedback) { echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); } } if ($posts = forum_get_user_posts($forum->id, $user->id)) { if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { print_error('invalidcoursemodule'); } $discussions = forum_get_user_involved_discussions($forum->id, $user->id); foreach ($posts as $post) { if (!isset($discussions[$post->discussion])) { continue; } $discussion = $discussions[$post->discussion]; forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false); } } else { echo "<p>".get_string("noposts", "forum")."</p>"; } }
/** * */ function forum_user_complete($course, $user, $mod, $forum) { global $CFG; if ($posts = forum_get_user_posts($forum->id, $user->id)) { foreach ($posts as $post) { $post->forum = $forum->id; forum_print_post($post, $course->id, $ownpost = false, $reply = false, $link = false, $rate = false); } } else { echo "<p>" . get_string("noposts", "forum") . "</p>"; } }
/** * */ function forum_user_complete($course, $user, $mod, $forum) { global $CFG, $USER; require_once "{$CFG->libdir}/gradelib.php"; $grades = grade_get_grades($course->id, 'mod', 'forum', $forum->id, $user->id); if (!empty($grades->items[0]->grades)) { $grade = reset($grades->items[0]->grades); echo '<p>' . get_string('grade') . ': ' . $grade->str_long_grade . '</p>'; if ($grade->str_feedback) { echo '<p>' . get_string('feedback') . ': ' . $grade->str_feedback . '</p>'; } } if ($posts = forum_get_user_posts($forum->id, $user->id)) { if (!($cm = get_coursemodule_from_instance('forum', $forum->id, $course->id))) { error('Course Module ID was incorrect'); } $discussions = forum_get_user_involved_discussions($forum->id, $user->id); // preload all user ratings for these discussions - one query only and minimal memory $cm->cache->ratings = array(); $cm->cache->myratings = array(); if ($postratings = forum_get_all_user_ratings($user->id, $discussions)) { foreach ($postratings as $pr) { if (!isset($cm->cache->ratings[$pr->postid])) { $cm->cache->ratings[$pr->postid] = array(); } $cm->cache->ratings[$pr->postid][$pr->id] = $pr->rating; if ($pr->userid == $USER->id) { $cm->cache->myratings[$pr->postid] = $pr->rating; } } unset($postratings); } foreach ($posts as $post) { if (!isset($discussions[$post->discussion])) { continue; } $discussion = $discussions[$post->discussion]; $ratings = null; if ($forum->assessed) { if ($scale = make_grades_menu($forum->scale)) { $ratings = new object(); $ratings->scale = $scale; $ratings->assesstimestart = $forum->assesstimestart; $ratings->assesstimefinish = $forum->assesstimefinish; $ratings->allow = false; } } forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false, $ratings); } } else { echo "<p>" . get_string("noposts", "forum") . "</p>"; } }
/** * */ function forum_user_complete($course, $user, $mod, $forum) { global $CFG, $USER; if ($posts = forum_get_user_posts($forum->id, $user->id)) { if (!($cm = get_coursemodule_from_instance('forum', $forum->id, $course->id))) { print_error('invalidcoursemodule'); } $discussions = forum_get_user_involved_discussions($forum->id, $user->id); // preload all user ratings for these discussions - one query only and minimal memory $cm->cache->ratings = array(); $cm->cache->myratings = array(); if ($postratings = forum_get_all_user_ratings($user->id, $discussions)) { foreach ($postratings as $pr) { if (!isset($cm->cache->ratings[$pr->postid])) { $cm->cache->ratings[$pr->postid] = array(); } $cm->cache->ratings[$pr->postid][$pr->id] = $pr->rating; if ($pr->userid == $USER->id) { $cm->cache->myratings[$pr->postid] = $pr->rating; } } unset($postratings); } foreach ($posts as $post) { if (!isset($discussions[$post->discussion])) { continue; } $discussion = $discussions[$post->discussion]; $ratings = null; if ($forum->assessed) { if ($scale = make_grades_menu($forum->scale)) { $ratings = new object(); $ratings->scale = $scale; $ratings->assesstimestart = $forum->assesstimestart; $ratings->assesstimefinish = $forum->assesstimefinish; $ratings->allow = false; } } forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false, $ratings); } } else { echo "<p>" . get_string("noposts", "forum") . "</p>"; } }
function plagiarism_urkund_get_file_object($plagiarismfile) { global $CFG, $DB; if (strpos($plagiarismfile->identifier, $CFG->tempdir) === true) { // This is a stored text file in temp dir. $file = new stdclass(); if (file_exists($plagiarismfile->identifier)) { $file->type = "tempurkund"; $file->filename = basename($plagiarismfile->identifier); $file->timestamp = time(); $file->identifier = sha1(file_get_contents($plagiarismfile->identifier)); $file->filepath = $plagiarismfile->identifier; // Sanity check to see if the Sha1 for this file has already been sent to urkund using a different record. if ($DB->record_exists('plagiarism_urkund_files', array('identifier' => $file->identifier, 'cm' => $plagiarismfile->cm, 'userid' => $plagiarismfile->userid))) { // This file has already been sent and multiple records for this file were created // Delete plagiarism record and file. $DB->delete_records('plagiarism_urkund_files', array('id' => $plagiarismfile->id)); debugging("This file has been duplicated, deleting the duplicate record. Identifier:" . $file->identifier); unlink($plagiarismfile->identifier); // Delete temp file as we don't need it anymore. return false; } return $file; } else { debugging("The local version of this file has been deleted, and this file cannot be sent"); return false; } } else { $cm = get_coursemodule_from_id('', $plagiarismfile->cm); $modulecontext = context_module::instance($plagiarismfile->cm); $fs = get_file_storage(); if ($cm->modname == 'assign') { require_once $CFG->dirroot . '/mod/assign/locallib.php'; $assign = new assign($modulecontext, null, null); if ($assign->get_instance()->teamsubmission) { $submission = $assign->get_group_submission($plagiarismfile->userid, 0, false); } else { $submission = $assign->get_user_submission($plagiarismfile->userid, false); } $submissionplugins = $assign->get_submission_plugins(); 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) { return $file; } } } } } 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) { return $file; } } } } 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) { return $file; } } } } } } } }
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()); } } } } } } } }