Merge branch 'wip-MDL-40368-m26' of git://github.com/samhemelryk/moodle
[moodle.git] / admin / tool / capability / index.php
index 7386700..d1707d2 100644 (file)
@@ -107,4 +107,61 @@ if (count($capabilities) && count($rolestoshow)) {
 }
 
 // Footer.
-echo $OUTPUT->footer();
\ No newline at end of file
+echo $OUTPUT->footer();
+
+function print_report_tree($contextid, $contexts, $allroles) {
+    global $CFG;
+
+    // Array for holding lang strings.
+    static $strpermissions = null;
+    if (is_null($strpermissions)) {
+        $strpermissions = array(
+            CAP_INHERIT => get_string('notset','role'),
+            CAP_ALLOW => get_string('allow','role'),
+            CAP_PREVENT => get_string('prevent','role'),
+            CAP_PROHIBIT => get_string('prohibit','role')
+        );
+    }
+
+    // Start the list item, and print the context name as a link to the place to
+    // make changes.
+    if ($contextid == context_system::instance()->id) {
+        $url = "$CFG->wwwroot/$CFG->admin/roles/manage.php";
+        $title = get_string('changeroles', 'tool_capability');
+    } else {
+        $url = "$CFG->wwwroot/$CFG->admin/roles/override.php?contextid=$contextid";
+        $title = get_string('changeoverrides', 'tool_capability');
+    }
+    $context = context::instance_by_id($contextid);
+    echo '<h3><a href="' . $url . '" title="' . $title . '">', $context->get_context_name(), '</a></h3>';
+
+    // If there are any role overrides here, print them.
+    if (!empty($contexts[$contextid]->rolecapabilities)) {
+        $rowcounter = 0;
+        echo '<table class="generaltable rolecaps"><tbody>';
+        foreach ($allroles as $role) {
+            if (isset($contexts[$contextid]->rolecapabilities[$role->id])) {
+                $permission = $contexts[$contextid]->rolecapabilities[$role->id];
+                echo '<tr class="r' . ($rowcounter % 2) . '"><th class="cell">', $role->localname,
+                        '</th><td class="cell">' . $strpermissions[$permission] . '</td></tr>';
+                $rowcounter++;
+            }
+        }
+        echo '</tbody></table>';
+    }
+
+    // After we have done the site context, change the string for CAP_INHERIT
+    // from 'notset' to 'inherit'.
+    $strpermissions[CAP_INHERIT] = get_string('inherit','role');
+
+    // If there are any child contexts, print them recursively.
+    if (!empty($contexts[$contextid]->children)) {
+        echo '<ul>';
+        foreach ($contexts[$contextid]->children as $childcontextid) {
+            echo '<li>';
+            print_report_tree($childcontextid, $contexts, $allroles);
+            echo '</li>';
+        }
+        echo '</ul>';
+    }
+}