MDL-17081 store also CAP_INHERIT in role export files

This commit is contained in:
Petr Škoda
2013-06-25 00:24:55 +02:00
parent 5e72efd498
commit fcd75b6e6d
2 changed files with 24 additions and 15 deletions
+16 -14
View File
@@ -98,31 +98,33 @@ class core_role_preset {
$permissions = $dom->createElement('permissions');
$top->appendChild($permissions);
$capabilities = $DB->get_records_sql(
"SELECT *
$capabilities = $DB->get_records_sql_menu(
"SELECT capability, permission
FROM {role_capabilities}
WHERE contextid = :syscontext AND roleid = :roleid
ORDER BY capability ASC",
array('syscontext'=>context_system::instance()->id, 'roleid'=>$roleid));
foreach ($capabilities as $cap) {
if ($cap->permission == CAP_INHERIT) {
$permissions->appendChild($dom->createElement('inherit', $cap->capability));
$allcapabilities = $DB->get_records('capabilities', array(), 'name ASC');
foreach ($allcapabilities as $cap) {
if (!isset($capabilities[$cap->name])) {
$permissions->appendChild($dom->createElement('inherit', $cap->name));
}
}
foreach ($capabilities as $cap) {
if ($cap->permission == CAP_ALLOW) {
$permissions->appendChild($dom->createElement('allow', $cap->capability));
foreach ($capabilities as $capability => $permission) {
if ($permission == CAP_ALLOW) {
$permissions->appendChild($dom->createElement('allow', $capability));
}
}
foreach ($capabilities as $cap) {
if ($cap->permission == CAP_PREVENT) {
$permissions->appendChild($dom->createElement('prevent', $cap->capability));
foreach ($capabilities as $capability => $permission) {
if ($permission == CAP_PREVENT) {
$permissions->appendChild($dom->createElement('prevent', $capability));
}
}
foreach ($capabilities as $cap) {
if ($cap->permission == CAP_PROHIBIT) {
$permissions->appendChild($dom->createElement('prohibit', $cap->capability));
foreach ($capabilities as $capability => $permission) {
if ($permission == CAP_PROHIBIT) {
$permissions->appendChild($dom->createElement('prohibit', $capability));
}
}
+8 -1
View File
@@ -63,9 +63,16 @@ class core_role_preset_testcase extends advanced_testcase {
ORDER BY capability ASC",
array('syscontext'=>context_system::instance()->id, 'roleid'=>$role->id));
$this->assertEquals(count($capabilities), count($info['permissions']));
foreach ($capabilities as $cap) {
$this->assertEquals($cap->permission, $info['permissions'][$cap->capability]);
unset($info['permissions'][$cap->capability]);
}
// The remainders should be only inherits.
foreach ($info['permissions'] as $capability => $permission) {
if ($permission == CAP_INHERIT) {
continue;
}
$this->fail('only CAP_INHERIT expected');
}
}
}