global $DB, $CFG, $USER;
// Steps to upgrade an assignment.
- // Is the user the admin? admin check goes here.
- if (!is_siteadmin($USER->id)) {
- return false;
- }
-
core_php_time_limit::raise(ASSIGN_MAX_UPGRADE_TIME_SECS);
// Get the module details.
'*',
MUST_EXIST);
$oldcontext = context_module::instance($oldcoursemodule->id);
+ // We used to check for admin capability, but since Moodle 2.7 this is called
+ // during restore of a mod_assignment module.
+ // Also note that we do not check for any mod_assignment capabilities, because they can
+ // be removed so that users don't add new instances of the broken old thing.
+ if (!has_capability('mod/assign:addinstance', $oldcontext)) {
+ $log = get_string('couldnotcreatenewassignmentinstance', 'mod_assign');
+ return false;
+ }
// First insert an assign instance to get the id.
$oldassignment = $DB->get_record('assignment', array('id'=>$oldassignmentid), '*', MUST_EXIST);