MDL-17081 store also CAP_INHERIT in role export files
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user