MDL-8522 fixed role reset warnings + only one legacy cap type allowed now in each role
This commit is contained in:
@@ -319,7 +319,13 @@
|
||||
$a->id = $roleid;
|
||||
$a->name = $roles[$roleid]->name;
|
||||
$a->shortname = $roles[$roleid]->shortname;
|
||||
notice_yesno(get_string('resetrolesure', 'role', $a), 'manage.php', 'manage.php', $optionsyes, $optionsno, 'post', 'get');
|
||||
$a->legacytype = get_legacy_type($roleid);
|
||||
if (empty($a->legacytype)) {
|
||||
$warning = get_string('resetrolesurenolegacy', 'role', $a);
|
||||
} else {
|
||||
$warning = get_string('resetrolesure', 'role', $a);
|
||||
}
|
||||
notice_yesno($warning, 'manage.php', 'manage.php', $optionsyes, $optionsno, 'post', 'get');
|
||||
admin_externalpage_print_footer($adminroot);
|
||||
die;
|
||||
}
|
||||
|
||||
@@ -80,7 +80,8 @@ $string['question:export'] = 'Export questions';
|
||||
$string['question:import'] = 'Import questions';
|
||||
$string['question:manage'] = 'Manage questions';
|
||||
$string['question:managecategory'] = 'Manage question category';
|
||||
$string['resetrolesure'] = 'Are you sure that you want to reset role \"$a->name ($a->shortname)\" to defaults?<p></p>The defaults are taken from the selected legacy capability.';
|
||||
$string['resetrolesure'] = 'Are you sure that you want to reset role \"$a->name ($a->shortname)\" to defaults?<p></p>The defaults are taken from the selected legacy capability ($a->legacytype).';
|
||||
$string['resetrolesurenolegacy'] = 'Are you sure that you want to removed all permissions defined in this role \"$a->name ($a->shortname)\"?';
|
||||
$string['risks'] = 'Risks';
|
||||
$string['role:assign'] = 'Assign roles to users';
|
||||
$string['role:manage'] = 'Create and manage roles';
|
||||
|
||||
@@ -1565,6 +1565,26 @@ function get_legacy_roles() {
|
||||
);
|
||||
}
|
||||
|
||||
function get_legacy_type($roleid) {
|
||||
$sitecontext = get_context_instance(CONTEXT_SYSTEM);
|
||||
$legacyroles = get_legacy_roles();
|
||||
|
||||
$result = '';
|
||||
foreach($legacyroles as $ltype=>$lcap) {
|
||||
$localoverride = get_local_override($roleid, $sitecontext->id, $lcap);
|
||||
if (!empty($localoverride->permission) and $localoverride->permission == CAP_ALLOW) {
|
||||
//choose first selected legacy capability - reset the rest
|
||||
if (empty($result)) {
|
||||
$result = $ltype;
|
||||
} else {
|
||||
delete_records('role_capabilities', 'roleid', $roleid, 'contextid', $sitecontext->id, 'capability', $lcap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign the defaults found in this capabality definition to roles that have
|
||||
* the corresponding legacy capabilities assigned to them.
|
||||
|
||||
Reference in New Issue
Block a user