From: skodak Date: Tue, 6 Mar 2007 19:19:19 +0000 (+0000) Subject: MDL-8522 fixed role reset warnings + only one legacy cap type allowed now in each... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=b357ed13f397cf7f6dc3987a59deb0d563bda032;p=moodle.git MDL-8522 fixed role reset warnings + only one legacy cap type allowed now in each role --- diff --git a/admin/roles/manage.php b/admin/roles/manage.php index 960df0bae9..e7db01baa9 100755 --- a/admin/roles/manage.php +++ b/admin/roles/manage.php @@ -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; } diff --git a/lang/en_utf8/role.php b/lang/en_utf8/role.php index 110419ba36..b220b6f660 100644 --- a/lang/en_utf8/role.php +++ b/lang/en_utf8/role.php @@ -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?

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?

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'; diff --git a/lib/accesslib.php b/lib/accesslib.php index 8668589471..5632324670 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -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.