function print_report_tree($contextid, $contexts, $systemcontext, $fullname) { global $CFG, $OUTPUT; // Only compute lang strings, etc once. static $stredit = null, $strcheckpermissions, $globalroleassigner, $assignurl, $checkurl; if (is_null($stredit)) { $stredit = get_string('edit'); $strcheckpermissions = get_string('checkpermissions', 'role'); $globalroleassigner = has_capability('moodle/role:assign', $systemcontext); $assignurl = $CFG->wwwroot . '/' . $CFG->admin . '/roles/assign.php'; $checkurl = $CFG->wwwroot . '/' . $CFG->admin . '/roles/check.php'; } // Pull the current context into an array for convinience. $context = context::instance_by_id($contextid); // Print the context name. echo $OUTPUT->heading($context->get_context_name(), 4, 'contextname'); // If there are any role assignments here, print them. foreach ($contexts[$contextid]->roleassignments as $ra) { $value = $ra->contextid . ',' . $ra->roleid; $inputid = 'unassign' . $value; echo '<p>'; if ($ra->rolename == $ra->localname) { echo strip_tags(format_string($ra->localname)); } else { echo strip_tags(format_string($ra->localname . ' (' . $ra->rolename . ')')); } if (has_capability('moodle/role:assign', $context)) { $raurl = $assignurl . '?contextid=' . $ra->contextid . '&roleid=' . $ra->roleid . '&removeselect[]=' . $ra->userid; $churl = $checkurl . '?contextid=' . $ra->contextid . '&reportuser='******'&userid=' . $context->instanceid; $churl .= '&userid=' . $context->instanceid; } $a = new stdClass(); $a->fullname = $fullname; $a->contextlevel = get_contextlevel_name($context->contextlevel); if ($context->contextlevel == CONTEXT_SYSTEM) { $strgoto = get_string('gotoassignsystemroles', 'role'); $strcheck = get_string('checksystempermissionsfor', 'role', $a); } else { $strgoto = get_string('gotoassignroles', 'role', $a); $strcheck = get_string('checkuserspermissionshere', 'role', $a); } echo ' <a title="' . $strgoto . '" href="' . $raurl . '"><img class="iconsmall" src="' . $OUTPUT->pix_url('t/edit') . '" alt="' . $stredit . '" /></a> '; echo ' <a title="' . $strcheck . '" href="' . $churl . '"><img class="iconsmall" src="' . $OUTPUT->pix_url('t/preview') . '" alt="' . $strcheckpermissions . '" /></a> '; echo "</p>\n"; } } // 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, $systemcontext, $fullname); echo '</li>'; } echo '</ul>'; } }
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>'; } }