Skip to content

Commit

Permalink
Merge branch 'w26_MDL-17081_m26_roles2' of git://github.com/skodak/mo…
Browse files Browse the repository at this point in the history
…odle
  • Loading branch information
stronk7 committed Jun 24, 2013
2 parents 49eef7d + fcd75b6 commit 7f5c46d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 15 deletions.
30 changes: 16 additions & 14 deletions admin/roles/classes/preset.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,31 +98,33 @@ public static function get_export_xml($roleid) {
$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));
}
}

Expand Down
9 changes: 8 additions & 1 deletion admin/roles/tests/preset_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,16 @@ public function test_xml() {
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');
}
}
}
Expand Down

0 comments on commit 7f5c46d

Please sign in to comment.