/** * Create a migrated turnitin assignment in Moodle * * @global type $DB * @global type $CFG * @param array $partids the ids of turnitin assignment to create as parts of new assignment * @param int $courseid * @param string $assignmentname * @return boolean false if failed */ public static function create_migration_assignment($partids, $courseid, $assignmentname) { global $DB, $CFG, $OUTPUT; $config = turnitintooltwo_admin_config(); $partids = (array) $partids; $tempassignment = new turnitintooltwo_assignment(0, '', 'M'); $newassignment = $tempassignment->update_assignment_from_tii($partids); $newassignment["turnitintooltwo"]->course = $courseid; $newassignment["turnitintooltwo"]->name = $assignmentname; $newassignment["turnitintooltwo"]->numparts = count($partids); $newassignment["turnitintooltwo"]->gradedisplay = 1; $newassignment["turnitintooltwo"]->shownonsubmission = 1; $newassignment["turnitintooltwo"]->usegrademark = $config->usegrademark; // Get maximum grade. $newassignment["turnitintooltwo"]->grade = 0; foreach ($newassignment["parts"] as $part) { if ($newassignment["turnitintooltwo"]->grade < $part->maxmarks) { $newassignment["turnitintooltwo"]->grade = $part->maxmarks; } } $turnitintooltwoassignment = new turnitintooltwo_assignment(0, $newassignment["turnitintooltwo"]); if (!($toolid = $DB->insert_record("turnitintooltwo", $turnitintooltwoassignment->turnitintooltwo))) { turnitintooltwo_activitylog(get_string('migrationassignmentcreationerror', 'turnitintooltwo', $courseid), "REQUEST"); return false; } else { turnitintooltwo_activitylog(get_string('migrationassignmentcreated', 'turnitintooltwo', $toolid), "REQUEST"); } $module = $DB->get_record("modules", array("name" => "turnitintooltwo")); $coursemodule = new stdClass(); $coursemodule->course = $courseid; $coursemodule->module = $module->id; $coursemodule->added = time(); $coursemodule->instance = $toolid; $coursemodule->section = 0; include_once $CFG->dirroot . "/course/lib.php"; // Add Course module and get course section. if (!($coursemodule->coursemodule = add_course_module($coursemodule))) { echo $OUTPUT->notification(get_string('migrationassignmenterror1', 'turnitintooltwo', $courseid)); turnitintooltwo_activitylog(get_string('migrationassignmenterror1', 'turnitintooltwo', $courseid), "REQUEST"); return false; } if (is_callable('course_add_cm_to_section')) { if (!($sectionid = course_add_cm_to_section($coursemodule->course, $coursemodule->coursemodule, $coursemodule->section))) { echo $OUTPUT->notification(get_string('migrationassignmenterror2', 'turnitintooltwo', $courseid)); turnitintooltwo_activitylog(get_string('migrationassignmenterror2', 'turnitintooltwo', $courseid), "REQUEST"); return false; } } else { if (!($sectionid = add_mod_to_section($coursemodule))) { echo $OUTPUT->notification(get_string('migrationassignmenterror2', 'turnitintooltwo', $courseid)); turnitintooltwo_activitylog(get_string('migrationassignmenterror2', 'turnitintooltwo', $courseid), "REQUEST"); return false; } } $DB->set_field("course_modules", "section", $sectionid, array("id" => $coursemodule->coursemodule)); rebuild_course_cache($courseid); foreach ($newassignment["parts"] as $part) { $part->turnitintooltwoid = $toolid; $part->deleted = 0; $part->migrated = -1; if ($part->id = $DB->insert_record("turnitintooltwo_parts", $part)) { turnitintooltwo_activitylog(get_string('migrationassignmentpartcreated', 'turnitintooltwo', $part->id), "REQUEST"); } if ($turnitintooltwoassignment->create_event($toolid, $part->partname, $part->dtdue)) { $part->migrated = 1; $DB->update_record("turnitintooltwo_parts", $part); } else { echo $OUTPUT->notification(get_string('migrationassignmenterror3', 'turnitintooltwo', $courseid)); turnitintooltwo_activitylog(get_string('migrationassignmenterror3', 'turnitintooltwo', $courseid), "REQUEST"); } } }