Example #1
0
    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);
    }
Example #2
0
/**
 * 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);
             }
         }
     }
 }
Example #4
0
/**
 * 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);
}