/** * Due to moodle's internal plugin hooks we can not use our bespoke form class for Turnitin * settings. This form shows in settings > defaults as well as the activity creation screen. * * @global type $CFG * @param type $plugin_defaults * @return type */ public function add_elements_to_settings_form($mform, $course, $location = "activity", $cmid = 0, $currentrubric = 0) { global $CFG, $OUTPUT, $PAGE, $USER, $DB; // Include JS strings (closebutton is needed from both plugins). $PAGE->requires->string_for_js('changerubricwarning', 'plagiarism_turnitin'); $PAGE->requires->string_for_js('closebutton', 'turnitintooltwo'); $PAGE->requires->string_for_js('closebutton', 'plagiarism_turnitin'); $config = turnitintooltwo_admin_config(); $config_warning = ''; $rubrics = array(); if ($location == "activity") { $instructor = new turnitintooltwo_user($USER->id, 'Instructor'); $instructor->join_user_to_class($course->turnitin_cid); $rubrics = $instructor->get_instructor_rubrics(); // Get rubrics that are shared on the account. $turnitinclass = new turnitin_class($course->id); $turnitinclass->sharedrubrics = array(); $turnitinclass->read_class_from_tii(); // Merge the arrays, prioitising instructor owned arrays. $rubrics = $rubrics + $turnitinclass->sharedrubrics; } $options = array(0 => get_string('no'), 1 => get_string('yes')); $genoptions = array(0 => get_string('genimmediately1', 'plagiarism_turnitin'), 1 => get_string('genimmediately2', 'plagiarism_turnitin'), 2 => get_string('genduedate', 'plagiarism_turnitin')); $excludetypeoptions = array(0 => get_string('no'), 1 => get_string('excludewords', 'plagiarism_turnitin'), 2 => get_string('excludepercent', 'plagiarism_turnitin')); if ($location == "defaults") { $mform->addElement('header', 'plugin_header', get_string('turnitindefaults', 'plagiarism_turnitin')); $mform->addElement('html', get_string("defaultsdesc", "turnitintooltwo")); } if ($location != "defaults") { $mform->addElement('header', 'plugin_header', get_string('turnitinpluginsettings', 'plagiarism_turnitin')); // Add in custom Javascript and CSS. $PAGE->requires->jquery(); $PAGE->requires->jquery_plugin('ui'); $PAGE->requires->jquery_plugin('turnitintooltwo-turnitintooltwo', 'mod_turnitintooltwo'); $PAGE->requires->jquery_plugin('plagiarism-turnitin_module', 'plagiarism_turnitin'); $PAGE->requires->jquery_plugin('turnitintooltwo-colorbox', 'mod_turnitintooltwo'); $cssurl = new moodle_url('/mod/turnitintooltwo/css/colorbox.css'); $PAGE->requires->css($cssurl); // Refresh Grades $refreshgrades = ''; if ($cmid != 0) { // If assignment has submissions then show a refresh grades button $numsubs = $DB->count_records('plagiarism_turnitin_files', array('cm' => $cmid)); if ($numsubs > 0) { $refreshgrades = html_writer::tag('div', $OUTPUT->pix_icon('refresh', get_string('turnitinrefreshsubmissions', 'plagiarism_turnitin'), 'plagiarism_turnitin') . html_writer::tag('span', get_string('turnitinrefreshsubmissions', 'plagiarism_turnitin')), array('class' => 'plagiarism_turnitin_refresh_grades')); $refreshgrades .= html_writer::tag('div', $OUTPUT->pix_icon('loading', get_string('turnitinrefreshingsubmissions', 'plagiarism_turnitin'), 'plagiarism_turnitin') . html_writer::tag('span', get_string('turnitinrefreshingsubmissions', 'plagiarism_turnitin')), array('class' => 'plagiarism_turnitin_refreshing_grades')); } } // Quickmark Manager. $quickmarkmanagerlink = ''; if ($config->usegrademark) { $quickmarkmanagerlink .= $OUTPUT->box_start('row_quickmark_manager', ''); $quickmarkmanagerlink .= html_writer::link($CFG->wwwroot . '/mod/turnitintooltwo/extras.php?cmd=quickmarkmanager&view_context=box', get_string('launchquickmarkmanager', 'plagiarism_turnitin'), array('class' => 'plagiarism_turnitin_quickmark_manager_launch', 'title' => get_string('launchquickmarkmanager', 'plagiarism_turnitin'))); $quickmarkmanagerlink .= html_writer::tag('span', '', array('class' => 'launch_form', 'id' => 'quickmark_manager_form')); $quickmarkmanagerlink .= $OUTPUT->box_end(true); } $use_turnitin = $DB->get_record('plagiarism_turnitin_config', array('cm' => $cmid, 'name' => 'use_turnitin')); // Peermark Manager. $peermarkmanagerlink = ''; if (!empty($config->enablepeermark) && !empty($use_turnitin->value)) { if ($cmid != 0) { $peermarkmanagerlink .= $OUTPUT->box_start('row_peermark_manager', ''); $peermarkmanagerlink .= html_writer::link($CFG->wwwroot . '/plagiarism/turnitin/ajax.php?cmid=' . $cmid . '&action=peermarkmanager&view_context=box', get_string('launchpeermarkmanager', 'plagiarism_turnitin'), array('class' => 'peermark_manager_launch', 'id' => 'peermark_manager_' . $cmid, 'title' => get_string('launchpeermarkmanager', 'plagiarism_turnitin'))); $peermarkmanagerlink .= html_writer::tag('span', '', array('class' => 'launch_form', 'id' => 'peermark_manager_form')); $peermarkmanagerlink .= $OUTPUT->box_end(true); } } if (!empty($quickmarkmanagerlink) || !empty($peermarkmanagerlink) || !empty($refreshgrades)) { $mform->addElement('static', 'static', '', $refreshgrades . $quickmarkmanagerlink . $peermarkmanagerlink); } } $locks = $DB->get_records_sql("SELECT name, value FROM {plagiarism_turnitin_config} WHERE cm IS NULL"); if (empty($config_warning)) { $mform->addElement('select', 'use_turnitin', get_string("useturnitin", "turnitintooltwo"), $options); $this->lock($mform, $location, $locks); $mform->addElement('select', 'plagiarism_show_student_report', get_string("studentreports", "turnitintooltwo"), $options); $this->lock($mform, $location, $locks); $mform->addHelpButton('plagiarism_show_student_report', 'studentreports', 'plagiarism_turnitin'); if ($mform->elementExists('submissiondrafts') || $location == 'defaults') { $tiidraftoptions = array(0 => get_string("submitondraft", "turnitintooltwo"), 1 => get_string("submitonfinal", "turnitintooltwo")); $mform->addElement('select', 'plagiarism_draft_submit', get_string("draftsubmit", "turnitintooltwo"), $tiidraftoptions); $this->lock($mform, $location, $locks); $mform->disabledIf('plagiarism_draft_submit', 'submissiondrafts', 'eq', 0); } $mform->addElement('select', 'plagiarism_allow_non_or_submissions', get_string("allownonor", "turnitintooltwo"), $options); $this->lock($mform, $location, $locks); $mform->addHelpButton('plagiarism_allow_non_or_submissions', 'allownonor', 'plagiarism_turnitin'); $suboptions = array(0 => get_string('norepository', 'plagiarism_turnitin'), 1 => get_string('standardrepository', 'plagiarism_turnitin')); switch ($config->repositoryoption) { case 0: // Standard options $mform->addElement('select', 'plagiarism_submitpapersto', get_string('submitpapersto', 'plagiarism_turnitin'), $suboptions); $this->lock($mform, $location, $locks); break; case 1: // Standard options + Allow Instituional Repository $suboptions[2] = get_string('institutionalrepository', 'plagiarism_turnitin'); $mform->addElement('select', 'plagiarism_submitpapersto', get_string('submitpapersto', 'plagiarism_turnitin'), $suboptions); $this->lock($mform, $location, $locks); break; case 2: // Force Standard Repository $mform->addElement('hidden', 'plagiarism_submitpapersto', 1); $mform->setType('plagiarism_submitpapersto', PARAM_RAW); break; case 3: // Force No Repository $mform->addElement('hidden', 'plagiarism_submitpapersto', 0); $mform->setType('plagiarism_submitpapersto', PARAM_RAW); break; } $mform->addElement('html', html_writer::tag('div', get_string('checkagainstnote', 'plagiarism_turnitin'), array('class' => 'tii_checkagainstnote'))); $mform->addElement('select', 'plagiarism_compare_student_papers', get_string("spapercheck", "turnitintooltwo"), $options); $this->lock($mform, $location, $locks); $mform->addElement('select', 'plagiarism_compare_internet', get_string("internetcheck", "turnitintooltwo"), $options); $this->lock($mform, $location, $locks); $mform->addElement('select', 'plagiarism_compare_journals', get_string("journalcheck", "turnitintooltwo"), $options); $this->lock($mform, $location, $locks); if ($config->repositoryoption == 1) { $mform->addElement('select', 'plagiarism_compare_institution', get_string('compareinstitution', 'plagiarism_turnitin'), $options); $this->lock($mform, $location, $locks); } $mform->addElement('select', 'plagiarism_report_gen', get_string("reportgenspeed", "turnitintooltwo"), $genoptions); $this->lock($mform, $location, $locks); $mform->addElement('html', html_writer::tag('div', get_string('genspeednote', 'plagiarism_turnitin'), array('class' => 'tii_genspeednote'))); $mform->addElement('select', 'plagiarism_exclude_biblio', get_string("excludebiblio", "turnitintooltwo"), $options); $this->lock($mform, $location, $locks); $mform->addElement('select', 'plagiarism_exclude_quoted', get_string("excludequoted", "turnitintooltwo"), $options); $this->lock($mform, $location, $locks); $mform->addElement('select', 'plagiarism_exclude_matches', get_string("excludevalue", "turnitintooltwo"), $excludetypeoptions); $this->lock($mform, $location, $locks); $mform->addElement('text', 'plagiarism_exclude_matches_value', ''); $mform->setType('plagiarism_exclude_matches_value', PARAM_INT); $mform->addRule('plagiarism_exclude_matches_value', null, 'numeric', null, 'client'); $mform->disabledIf('plagiarism_exclude_matches_value', 'plagiarism_exclude_matches', 'eq', 0); if ($location == 'defaults') { $mform->addElement('text', 'plagiarism_locked_message', get_string("locked_message", "plagiarism_turnitin"), 'maxlength="50" size="50"'); $mform->setType('plagiarism_locked_message', PARAM_TEXT); $mform->setDefault('plagiarism_locked_message', get_string("locked_message_default", "plagiarism_turnitin")); $mform->addHelpButton('plagiarism_locked_message', 'locked_message', 'plagiarism_turnitin'); } if ($location == "activity" && $config->usegrademark) { // Populate Rubric options. $rubricoptions = array('' => get_string('norubric', 'plagiarism_turnitin')) + $rubrics; if (!empty($currentrubric)) { $rubricoptions[$currentrubric] = isset($rubricoptions[$currentrubric]) ? $rubricoptions[$currentrubric] : get_string('otherrubric', 'plagiarism_turnitin'); } $mform->addElement('select', 'plagiarism_rubric', get_string('attachrubric', 'plagiarism_turnitin'), $rubricoptions); $mform->addElement('static', 'rubric_link', '', html_writer::link($CFG->wwwroot . '/mod/turnitintooltwo/extras.php?cmd=rubricmanager&view_context=box', get_string('launchrubricmanager', 'plagiarism_turnitin'), array('class' => 'rubric_manager_launch', 'title' => get_string('launchrubricmanager', 'plagiarism_turnitin'))) . html_writer::tag('span', '', array('class' => 'launch_form', 'id' => 'rubric_manager_form'))); $mform->setDefault('plagiarism_rubric', ''); $mform->addElement('hidden', 'rubric_warning_seen', ''); $mform->setType('rubric_warning_seen', PARAM_RAW); $mform->addElement('static', 'rubric_note', '', get_string('attachrubricnote', 'plagiarism_turnitin')); } else { $mform->addElement('hidden', 'plagiarism_rubric', ''); $mform->setType('plagiarism_rubric', PARAM_RAW); } if (!empty($config->useerater)) { $handbookoptions = array(1 => get_string('erater_handbook_advanced', 'plagiarism_turnitin'), 2 => get_string('erater_handbook_highschool', 'plagiarism_turnitin'), 3 => get_string('erater_handbook_middleschool', 'plagiarism_turnitin'), 4 => get_string('erater_handbook_elementary', 'plagiarism_turnitin'), 5 => get_string('erater_handbook_learners', 'plagiarism_turnitin')); $dictionaryoptions = array('en_US' => get_string('erater_dictionary_enus', 'plagiarism_turnitin'), 'en_GB' => get_string('erater_dictionary_engb', 'plagiarism_turnitin'), 'en' => get_string('erater_dictionary_en', 'plagiarism_turnitin')); $mform->addElement('select', 'plagiarism_erater', get_string('erater', 'plagiarism_turnitin'), $options); $mform->setDefault('plagiarism_erater', 0); $mform->addElement('select', 'plagiarism_erater_handbook', get_string('erater_handbook', 'plagiarism_turnitin'), $handbookoptions); $mform->setDefault('plagiarism_erater_handbook', 2); $mform->disabledIf('plagiarism_erater_handbook', 'plagiarism_erater', 'eq', 0); $mform->addElement('select', 'plagiarism_erater_dictionary', get_string('erater_dictionary', 'plagiarism_turnitin'), $dictionaryoptions); $mform->setDefault('plagiarism_erater_dictionary', 'en_US'); $mform->disabledIf('plagiarism_erater_dictionary', 'plagiarism_erater', 'eq', 0); $mform->addElement('checkbox', 'plagiarism_erater_spelling', get_string('erater_categories', 'plagiarism_turnitin'), " " . get_string('erater_spelling', 'plagiarism_turnitin')); $mform->disabledIf('plagiarism_erater_spelling', 'plagiarism_erater', 'eq', 0); $mform->addElement('checkbox', 'plagiarism_erater_grammar', '', " " . get_string('erater_grammar', 'plagiarism_turnitin')); $mform->disabledIf('plagiarism_erater_grammar', 'plagiarism_erater', 'eq', 0); $mform->addElement('checkbox', 'plagiarism_erater_usage', '', " " . get_string('erater_usage', 'plagiarism_turnitin')); $mform->disabledIf('plagiarism_erater_usage', 'plagiarism_erater', 'eq', 0); $mform->addElement('checkbox', 'plagiarism_erater_mechanics', '', " " . get_string('erater_mechanics', 'plagiarism_turnitin')); $mform->disabledIf('plagiarism_erater_mechanics', 'plagiarism_erater', 'eq', 0); $mform->addElement('checkbox', 'plagiarism_erater_style', '', " " . get_string('erater_style', 'plagiarism_turnitin')); $mform->disabledIf('plagiarism_erater_style', 'plagiarism_erater', 'eq', 0); } $mform->addElement('html', html_writer::tag('div', get_string('anonblindmarkingnote', 'plagiarism_turnitin'), array('class' => 'tii_anonblindmarkingnote'))); if ($config->transmatch) { $mform->addElement('select', 'plagiarism_transmatch', get_string("transmatch", "turnitintooltwo"), $options); } else { $mform->addElement('hidden', 'plagiarism_transmatch', 0); } $mform->setType('plagiarism_transmatch', PARAM_INT); $mform->addElement('hidden', 'action', "defaults"); $mform->setType('action', PARAM_RAW); } else { $mform->addElement('hidden', 'use_turnitin', 0); $mform->setType('use_turnitin', PARAM_INT); } // Disable the form change checker - added in 2.3.2. if (is_callable(array($mform, 'disable_form_change_checker'))) { $mform->disable_form_change_checker(); } }
$assignmentid = required_param('assignment', PARAM_INT); $turnitintooltwoassignment = new turnitintooltwo_assignment($assignmentid); $cm = get_coursemodule_from_instance("turnitintooltwo", $assignmentid); if (has_capability('mod/turnitintooltwo:grade', context_module::instance($cm->id))) { echo $turnitintooltwoassignment->enrol_all_students($cm); } break; case "refresh_rubric_select": $courseid = required_param('course', PARAM_INT); $assignmentid = required_param('assignment', PARAM_INT); $modulename = required_param('modulename', PARAM_ALPHA); if (has_capability('moodle/course:update', context_course::instance($courseid))) { // Set Rubric options to instructor rubrics. $instructor = new turnitintooltwo_user($USER->id, 'Instructor'); $instructor->set_user_values_from_tii(); $instructorrubrics = $instructor->get_instructor_rubrics(); $options = array('' => get_string('norubric', 'turnitintooltwo')) + $instructorrubrics; // Add in rubric if the selected rubric belongs to another instructor. if (!empty($assignmentid)) { if ($modulename == "turnitintooltwo") { $turnitintooltwoassignment = new turnitintooltwo_assignment($assignmentid); } else { require_once $CFG->dirroot . '/plagiarism/turnitin/lib.php'; $pluginturnitin = new plagiarism_plugin_turnitin(); $cm = get_coursemodule_from_instance($modulename, $assignmentid); $plagiarismsettings = $pluginturnitin->get_settings($cm->id); } if ($modulename == "turnitintooltwo") { if (!empty($turnitintooltwoassignment->turnitintooltwo->rubric)) { $options[$turnitintooltwoassignment->turnitintooltwo->rubric] = isset($options[$turnitintooltwoassignment->turnitintooltwo->rubric]) ? $options[$turnitintooltwoassignment->turnitintooltwo->rubric] : get_string('otherrubric', 'turnitintooltwo'); }
public function definition() { global $CFG, $DB, $USER, $COURSE; $config = turnitintooltwo_admin_config(); // Module string is useful for product support. $modulestring = '<!-- Turnitin Moodle Direct Version: ' . turnitintooltwo_get_version() . ' - ('; // Get Moodle Course Object. $course = turnitintooltwo_assignment::get_course_data($COURSE->id); // Create or edit the class in Turnitin. if ($course->turnitin_cid == 0) { $tiicoursedata = turnitintooltwo_assignment::create_tii_course($course, $USER->id); $course->turnitin_cid = $tiicoursedata->turnitin_cid; $course->turnitin_ctl = $tiicoursedata->turnitin_ctl; } else { turnitintooltwo_assignment::edit_tii_course($course); $course->turnitin_ctl = $course->fullname . " (Moodle TT)"; } // Join this user to the class as an instructor and get their rubrics. $instructor = new turnitintooltwo_user($USER->id, 'Instructor'); $instructor->join_user_to_class($course->turnitin_cid); $instructor->set_user_values_from_tii(); $instructorrubrics = $instructor->get_instructor_rubrics(); // Get rubrics that are shared on the account. $turnitinclass = new turnitintooltwo_class($course->id); $turnitinclass->read_class_from_tii(); // Merge the arrays, prioitising instructor owned arrays. $rubrics = $instructorrubrics + $turnitinclass->sharedrubrics; $this->numsubs = 0; if (isset($this->_cm->id)) { $turnitintooltwoassignment = new turnitintooltwo_assignment($this->_cm->instance); $turnitintooltwoassignment->update_assignment_from_tii(); $this->turnitintooltwo = $DB->get_record("turnitintooltwo", array("id" => $this->_cm->instance)); $parts = $DB->get_records("turnitintooltwo_parts", array("turnitintooltwoid" => $this->_cm->instance, "deleted" => 0), 'id'); $i = 0; foreach ($parts as $part) { $i++; $attributes = array("id", "partname", "dtstart", "dtdue", "dtpost", "maxmarks"); foreach ($attributes as $att) { $attribute = $att . $i; $this->current->{$attribute} = $part->{$att}; } $attribute = "numsubs" . $i; $this->current->{$attribute} = $DB->count_records('turnitintooltwo_submissions', array('turnitintooltwoid' => $this->turnitintooltwo->id, 'submission_part' => $part->id)); $this->numsubs += $this->current->{$attribute}; $modulestring .= $modulestring != "(" ? " | " : ""; $modulestring .= $part->partname . ': ' . $part->tiiassignid; } $this->updating = true; } else { $this->updating = false; $instructordefaults = $instructor->get_instructor_defaults(); if (empty($instructordefaults)) { $instructordefaults = array(); } foreach ($instructordefaults as $k => $v) { $this->current->{$k} = $v; } } // Overwrite instructor default repository if admin is forcing repository setting switch ($config->repositoryoption) { case 2: // Force Standard Repository $this->current->submitpapersto = 1; break; case 3: // Force No Repository $this->current->submitpapersto = 0; break; } $modulestring .= ') -->'; $this->show_form($rubrics, $modulestring, $course->turnitin_cid); }
/** * Function called by course/reset.php when resetting moodle course, this is used to duplicate or reset a courses Turnitin * activities. If action specified is 'NEWCLASS' we are creating a new class on Turnitin. For both actions we create new * assignments on Turnitin and replace the turnitin ids for those parts in the database. * * @global object * @param var $courseid The course ID for the course to reset * @param string $action The action to use OLDCLASS or NEWCLASS * @return array The status array to pass to turnitintooltwo_reset_userdata */ function turnitintooltwo_duplicate_recycle($courseid, $action) { set_time_limit(0); global $DB, $USER; $config = turnitintooltwo_admin_config(); $partsarray = array(); $error = false; $turnitintooltwouser = new turnitintooltwo_user($USER->id, "Instructor"); $turnitintooltwouser->set_user_values_from_tii(); $instructorrubrics = $turnitintooltwouser->get_instructor_rubrics(); if (!($turnitintooltwos = $DB->get_records('turnitintooltwo', array('course' => $courseid)))) { turnitintooltwo_print_error('assigngeterror', 'turnitintooltwo', null, null, __FILE__, __LINE__); exit; } if (!($course = $DB->get_record('course', array('id' => $courseid)))) { turnitintooltwo_print_error('coursegeterror', 'turnitintooltwo', null, null, __FILE__, __LINE__); exit; } foreach ($turnitintooltwos as $turnitintooltwo) { if (!($parts = $DB->get_records('turnitintooltwo_parts', array('turnitintooltwoid' => $turnitintooltwo->id, 'deleted' => 0)))) { turnitintooltwo_print_error('partgeterror', 'turnitintooltwo', null, null, __FILE__, __LINE__); exit; } foreach ($parts as $part) { $partsarray[$courseid][$turnitintooltwo->id][$part->id]['tiiassignid'] = $part->tiiassignid; } } $currentcourse = turnitintooltwo_assignment::get_course_data($courseid); if ($action == "NEWCLASS") { // Delete Turnitin class link. if (!($delete = $DB->delete_records('turnitintooltwo_courses', array('courseid' => $courseid)))) { turnitintooltwo_print_error('coursedeleteerror', 'turnitintooltwo', null, null, __FILE__, __LINE__); exit; } $currentcourse->tii_rel_id = ''; // Create a new class to use with new parts. $tmpassignment = new turnitintooltwo_assignment(0, '', ''); $newcourse = $tmpassignment->create_tii_course($currentcourse, $USER->id); // Join Instructor to class. $turnitintooltwouser->join_user_to_class($newcourse->turnitin_cid); $currentcourse->turnitin_cid = $newcourse->turnitin_cid; $currentcourse->turnitin_ctl = $newcourse->turnitin_ctl; } // Create array of all the Turnitin assignment ids. $assignmentids = array(); foreach ($partsarray[$courseid] as $tiitoolid => $tiitool) { foreach ($tiitool as $partid => $data) { $assignmentids[] = $data['tiiassignid']; } } // Update all the assignments and parts from Turnitin. $turnitintooltwoassignment = new turnitintooltwo_assignment(0, '', ''); $turnitintooltwoassignment->update_assignment_from_tii($assignmentids); // Loop through Turnitintool instances and re-create assignment on Turnitin then swap over the stored Turnitin ids. foreach ($partsarray[$courseid] as $tiitoolid => $tiitool) { $turnitintooltwoassignment = new turnitintooltwo_assignment($tiitoolid); // Create new Assignment parts on Turnitin. $i = 0; foreach ($tiitool as $partid => $data) { $i++; $assignment = new TiiAssignment(); $assignment->setClassId($currentcourse->turnitin_cid); $assignment->setAuthorOriginalityAccess($turnitintooltwoassignment->turnitintooltwo->studentreports); $rubric_id = !empty($turnitintooltwoassignment->turnitintooltwo->rubric) ? $turnitintooltwoassignment->turnitintooltwo->rubric : ''; $rubric_id = !empty($rubric_id) && array_key_exists($rubric_id, $instructorrubrics) ? $rubric_id : ''; $assignment->setRubricId($rubric_id); $assignment->setSubmitPapersTo($turnitintooltwoassignment->turnitintooltwo->submitpapersto); $assignment->setResubmissionRule($turnitintooltwoassignment->turnitintooltwo->reportgenspeed); $assignment->setBibliographyExcluded($turnitintooltwoassignment->turnitintooltwo->excludebiblio); $assignment->setQuotedExcluded($turnitintooltwoassignment->turnitintooltwo->excludequoted); $assignment->setSmallMatchExclusionType($turnitintooltwoassignment->turnitintooltwo->excludetype); $assignment->setSmallMatchExclusionThreshold((int) $turnitintooltwoassignment->turnitintooltwo->excludevalue); if ($config->useanon) { $assignment->setAnonymousMarking($turnitintooltwoassignment->turnitintooltwo->anon); } $assignment->setLateSubmissionsAllowed($turnitintooltwoassignment->turnitintooltwo->allowlate); if ($config->repositoryoption == 1) { $assignment->setInstitutionCheck(isset($turnitintooltwoassignment->turnitintooltwo->institution_check) ? $turnitintooltwoassignment->turnitintooltwo->institution_check : 0); } $attribute = "maxmarks" . $i; $assignment->setMaxGrade($turnitintooltwoassignment->turnitintooltwo->{$attribute}); $assignment->setSubmittedDocumentsCheck($turnitintooltwoassignment->turnitintooltwo->spapercheck); $assignment->setInternetCheck($turnitintooltwoassignment->turnitintooltwo->internetcheck); $assignment->setPublicationsCheck($turnitintooltwoassignment->turnitintooltwo->journalcheck); $assignment->setTranslatedMatching($turnitintooltwoassignment->turnitintooltwo->transmatch); $assignment->setAllowNonOrSubmissions($turnitintooltwoassignment->turnitintooltwo->allownonor); // Erater settings. $assignment->setErater(isset($turnitintooltwoassignment->turnitintooltwo->erater) ? $turnitintooltwoassignment->turnitintooltwo->erater : 0); $assignment->setEraterSpelling($turnitintooltwoassignment->turnitintooltwo->erater_spelling); $assignment->setEraterGrammar($turnitintooltwoassignment->turnitintooltwo->erater_grammar); $assignment->setEraterUsage($turnitintooltwoassignment->turnitintooltwo->erater_usage); $assignment->setEraterMechanics($turnitintooltwoassignment->turnitintooltwo->erater_mechanics); $assignment->setEraterStyle($turnitintooltwoassignment->turnitintooltwo->erater_style); $assignment->setEraterSpellingDictionary(isset($turnitintooltwoassignment->turnitintooltwo->erater_dictionary) ? $turnitintooltwoassignment->turnitintooltwo->erater_dictionary : 'en_US'); $assignment->setEraterHandbook(isset($turnitintooltwoassignment->turnitintooltwo->erater_handbook) ? $turnitintooltwoassignment->turnitintooltwo->erater_handbook : 0); $attribute = "dtstart" . $i; $assignment->setStartDate(gmdate("Y-m-d\\TH:i:s\\Z", $turnitintooltwoassignment->turnitintooltwo->{$attribute})); $attribute = "dtdue" . $i; $assignment->setDueDate(gmdate("Y-m-d\\TH:i:s\\Z", $turnitintooltwoassignment->turnitintooltwo->{$attribute})); $attribute = "dtpost" . $i; $assignment->setFeedbackReleaseDate(gmdate("Y-m-d\\TH:i:s\\Z", $turnitintooltwoassignment->turnitintooltwo->{$attribute})); $attribute = "partname" . $i; $assignment->setTitle($turnitintooltwoassignment->turnitintooltwo->name . " " . $turnitintooltwoassignment->turnitintooltwo->{$attribute} . " (Moodle TT)"); $partassignid = $turnitintooltwoassignment->create_tii_assignment($assignment, $turnitintooltwoassignment->turnitintooltwo->id, $i); if (empty($partassignid)) { turnitintooltwo_activitylog("Moodle Assignment could not be created (" . $turnitintooltwoassignment->id . ") - " . $turnitintooltwoassignment->turnitintooltwo->name, "REQUEST"); $error = true; } $part = new stdClass(); $part->id = $partid; $part->tiiassignid = $partassignid; $part->turnitintooltwoid = $turnitintooltwoassignment->turnitintooltwo->id; $part->partname = $turnitintooltwoassignment->turnitintooltwo->{$attribute}; $part->deleted = 0; $part->maxmarks = $assignment->getMaxGrade(); $part->dtstart = strtotime($assignment->getStartDate()); $part->dtdue = strtotime($assignment->getDueDate()); $part->dtpost = strtotime($assignment->getFeedbackReleaseDate()); if (!($dbpart = $DB->update_record('turnitintooltwo_parts', $part))) { turnitintooltwo_print_error('partupdateerror', 'turnitintooltwo', null, $i, __FILE__, __LINE__); exit; } else { turnitintooltwo_activitylog("Moodle Assignment part updated (" . $part->id . ")", "REQUEST"); } if (!($delete = $DB->delete_records('turnitintooltwo_submissions', array('submission_part' => $partid)))) { turnitintooltwo_print_error('submissiondeleteerror', 'turnitintooltwo', null, null, __FILE__, __LINE__); exit; } } } $item = $action == "NEWCLASS" ? get_string('copyassigndata', 'turnitintooltwo') : get_string('replaceassigndata', 'turnitintooltwo'); $status[] = array('component' => get_string('modulenameplural', 'turnitintooltwo'), 'item' => $item, 'error' => $error); return $status; }
public function definition() { global $CFG, $DB, $USER; $config = turnitintooltwo_admin_config(); // Module string is useful for product support. if ($CFG->branch >= 26) { $pluginman = \core_plugin_manager::instance(); $plugins = $pluginman->get_plugins(); $module = $plugins['mod']['turnitintooltwo']; } else { $module = $DB->get_record('modules', array('name' => 'turnitintooltwo')); } $version = empty($module->version) ? $module->versiondisk : $module->version; $modulestring = '<!-- Turnitin Moodle Direct Version: ' . $version . ' - ('; $this->numsubs = 0; $instructor = new turnitintooltwo_user($USER->id, 'Instructor'); $instructor->set_user_values_from_tii(); $instructorrubrics = $instructor->get_instructor_rubrics(); if (isset($this->_cm->id)) { $turnitintooltwoassignment = new turnitintooltwo_assignment($this->_cm->instance); $turnitintooltwoassignment->update_assignment_from_tii(); $this->turnitintooltwo = $DB->get_record("turnitintooltwo", array("id" => $this->_cm->instance)); $parts = $DB->get_records("turnitintooltwo_parts", array("turnitintooltwoid" => $this->_cm->instance, "deleted" => 0), 'id'); $i = 0; foreach ($parts as $part) { $i++; $attributes = array("id", "partname", "dtstart", "dtdue", "dtpost", "maxmarks"); foreach ($attributes as $att) { $attribute = $att . $i; $this->current->{$attribute} = $part->{$att}; } $attribute = "numsubs" . $i; $this->current->{$attribute} = $DB->count_records('turnitintooltwo_submissions', array('turnitintooltwoid' => $this->turnitintooltwo->id, 'submission_part' => $part->id)); $this->numsubs += $this->current->{$attribute}; $modulestring .= $modulestring != "(" ? " | " : ""; $modulestring .= $part->partname . ': ' . $part->tiiassignid; } $this->updating = true; } else { $this->updating = false; $instructordefaults = $instructor->get_instructor_defaults(); if (empty($instructordefaults)) { $instructordefaults = array(); } foreach ($instructordefaults as $k => $v) { $this->current->{$k} = $v; } } // Overwrite instructor default repository if admin is forcing repository setting switch ($config->repositoryoption) { case 2: // Force Standard Repository $this->current->submitpapersto = 1; break; case 3: // Force No Repository $this->current->submitpapersto = 0; break; } $modulestring .= ') -->'; $this->show_form($instructorrubrics, $modulestring); }