public function test_upgrade_offline_assignment() { global $DB; $this->setUser($this->editingteachers[0]); $generator = $this->getDataGenerator()->get_plugin_generator('mod_assignment'); $params = array('course'=>$this->course->id, 'assignmenttype'=>'offline'); $record = $generator->create_instance($params); $assignment = new assignment_base($record->cmid); $this->setAdminUser(); $log = ''; $upgrader = new assign_upgrade_manager(); $this->assertTrue($upgrader->upgrade_assignment($assignment->assignment->id, $log)); $record = $DB->get_record('assign', array('course'=>$this->course->id)); $cm = get_coursemodule_from_instance('assign', $record->id); $context = context_module::instance($cm->id); $assign = new assign($context, $cm, $this->course); $plugin = $assign->get_submission_plugin_by_type('onlinetext'); $this->assertEmpty($plugin->is_enabled()); $plugin = $assign->get_submission_plugin_by_type('comments'); $this->assertEmpty($plugin->is_enabled()); $plugin = $assign->get_submission_plugin_by_type('file'); $this->assertEmpty($plugin->is_enabled()); $plugin = $assign->get_feedback_plugin_by_type('comments'); $this->assertNotEmpty($plugin->is_enabled()); $plugin = $assign->get_feedback_plugin_by_type('file'); $this->assertEmpty($plugin->is_enabled()); $plugin = $assign->get_feedback_plugin_by_type('offline'); $this->assertEmpty($plugin->is_enabled()); course_delete_module($cm->id); }
/** * Upgrade a single assignment. This is used by both upgrade single and upgrade batch * * @param int $assignmentid - The assignment id to upgrade * @return array(string, boolean, string) - * The array contains * - the assignment summary (returned by tool_assignmentupgrade_get_assignment) * - success * - the upgrade log */ function tool_assignmentupgrade_upgrade_assignment($assignmentid) { global $CFG; require_once $CFG->dirroot . '/mod/assign/upgradelib.php'; $assignment_upgrader = new assign_upgrade_manager(); $info = tool_assignmentupgrade_get_assignment($assignmentid); if ($info) { $log = ''; $success = $assignment_upgrader->upgrade_assignment($assignmentid, $log); } else { $success = false; $log = get_string('assignmentnotfound', 'tool_assignmentupgrade', $assignmentid); $info = new stdClass(); $info->name = get_string('unknown', 'tool_assignmentupgrade'); $info->shortname = get_string('unknown', 'tool_assignmentupgrade'); } return array($info, $success, $log); }
/** * This function will attempt to upgrade the newly restored assignment to an instance of mod_assign if * mod_assignment is currently disabled and mod_assign is enabled and mod_assign says it can upgrade this assignment. * * @return none */ private function upgrade_mod_assign() { global $DB, $CFG; // The current module must exist. $pluginmanager = core_plugin_manager::instance(); $plugininfo = $pluginmanager->get_plugin_info('mod_assign'); // Check that the assignment module is installed. if ($plugininfo && $plugininfo->is_installed_and_upgraded()) { // Include the required mod assign upgrade code. require_once $CFG->dirroot . '/mod/assign/upgradelib.php'; require_once $CFG->dirroot . '/mod/assign/locallib.php'; // Get the id and type of this assignment. $newinstance = $this->task->get_activityid(); $record = $DB->get_record('assignment', array('id' => $newinstance), 'assignmenttype', MUST_EXIST); $type = $record->assignmenttype; $subplugininfo = $pluginmanager->get_plugin_info('assignment_' . $type); // See if it is possible to upgrade. if (assign::can_upgrade_assignment($type, $subplugininfo->versiondb)) { $assignment_upgrader = new assign_upgrade_manager(); $log = ''; $success = $assignment_upgrader->upgrade_assignment($newinstance, $log); if (!$success) { throw new restore_step_exception('mod_assign_upgrade_failed', $log); } } } }
/** * Convert a single assignment from the old format to the new one. * @param stdClass $assignmentinfo An object containing information about this class * @param string $log This gets appended to with the details of the conversion process * @return boolean This is the overall result (true/false) */ function tool_assignmentupgrade_upgrade_assignment($assignmentinfo, &$log) { global $CFG; require_once $CFG->dirroot . '/mod/assign/locallib.php'; require_once $CFG->dirroot . '/mod/assign/upgradelib.php'; $assignment_upgrader = new assign_upgrade_manager(); return $assignment_upgrader->upgrade_assignment($assignmentinfo->id, $log); }