} else {
print_error('invalidcourse', 'error');
}
- $coursecontext = $context;
} else if (!empty($courseid)){ // we need this for user tabs in user context
if (!$course = get_record('course', 'id', $courseid)) {
print_error('invalidcourse', 'error');
}
- $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
} else {
$courseid = SITEID;
require_login($course);
- if ($context->contextlevel == CONTEXT_COURSE) {
- require_login($context->instanceid);
- } else {
- require_login();
- }
-
require_capability('moodle/role:assign', $context);
/// needed for tabs.php
- $overridableroles = get_overridable_roles($context);
- $assignableroles = get_assignable_roles($context); // Plain role names, may be altered later
+
+ $overridableroles = get_overridable_roles($context, 'name', ROLENAME_BOTH);
+ $assignableroles = get_assignable_roles($context, 'name', ROLENAME_BOTH);
/// Get some language strings
}
-/// Rename some of the role names if needed
- if (isset($coursecontext)) {
- if ($aliasnames = get_records('role_names', 'contextid', $coursecontext->id)) {
- foreach ($aliasnames as $alias) {
- if (isset($assignableroles[$alias->roleid])) {
- $assignableroles[$alias->roleid] = $alias->name.' ('.$assignableroles[$alias->roleid].')';
- }
- }
- }
- }
-
/// Process incoming role assignment
if (!$course = get_record('course', 'id', $courseid)) {
print_error('invalidcourse');
}
-
- $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
-
} else {
$course = clone($SITE);
$courseid = SITEID;
- $coursecontext = $context;
}
require_login($course);
}
/// needed for tabs.php
- $overridableroles = get_overridable_roles($context);
- $assignableroles = get_assignable_roles($context);
+ $overridableroles = get_overridable_roles($context, 'name', ROLENAME_BOTH);
+ $assignableroles = get_assignable_roles($context, 'name', ROLENAME_BOTH);
/// Get some language strings
include_once('tabs.php');
}
-/// Rename some of the role names if needed
- if (isset($coursecontext)) {
- if ($aliasnames = get_records('role_names', 'contextid', $coursecontext->id)) {
- foreach ($aliasnames as $alias) {
- if (isset($overridableroles[$alias->roleid])) {
- $overridableroles[$alias->roleid] = $alias->name.' ('.$overridableroles[$alias->roleid].')';
- }
- }
- }
- }
-
-
print_heading_with_help(get_string('overridepermissionsin', 'role', print_context_name($context)), 'overrides');
if ($roleid) {
require_login($course);
- $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); // for role names later
-
$fullmodulename = get_string("modulename", $module->name);
$streditinga = get_string("editinga", "moodle", $fullmodulename);
$strmodulenameplural = get_string("modulenameplural", $module->name);
if ($block = get_record('block', 'id', $blockinstance->blockid)) {
$blockname = print_context_name($context);
- // Prepare the last part of the breadcrumbs first
- $navlinks[98] = array('name' => $blockname, 'link' => null, 'type' => 'misc');
- $navlinks[99] = array('name' => $straction, 'link' => null, 'type' => 'misc');
switch ($blockinstance->pagetype) {
case 'course-view':
require_login($course);
- if ($course->id != SITEID) {
- $navlinks[0] = array('name' => $course->shortname,
- 'link' => "$CFG->wwwroot/course/view.php?id=$course->id",
- 'type' => 'misc');
- $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); // for role names later
- }
+ $navlinks[] = array('name' => $blockname, 'link' => null, 'type' => 'misc');
+ $navlinks[] = array('name' => $straction, 'link' => null, 'type' => 'misc');
$navigation = build_navigation($navlinks);
print_header("$straction: $blockname", $course->fullname, $navigation);
}
case 'blog-view':
$strblogs = get_string('blogs','blog');
- $navlinks[0] = array('name' => $strblogs,
+ $navlinks[] = array('name' => $strblogs,
'link' => $CFG->wwwroot.'/blog/index.php',
'type' => 'misc');
+ $navlinks[] = array('name' => $blockname, 'link' => null, 'type' => 'misc');
+ $navlinks[] = array('name' => $straction, 'link' => null, 'type' => 'misc');
$navigation = build_navigation($navlinks);
print_header("$straction: $strblogs", $SITE->fullname, $navigation);
break;
+ case 'tag-index':
+ $strtags = get_string('tags');
+ $navlinks[] = array('name' => $strtags,
+ 'link' => $CFG->wwwroot.'/tag/index.php',
+ 'type' => 'misc');
+ $navlinks[] = array('name' => $blockname, 'link' => null, 'type' => 'misc');
+ $navlinks[] = array('name' => $straction, 'link' => null, 'type' => 'misc');
+ $navigation = build_navigation($navlinks);
+ print_header("$straction: $strtags", $SITE->fullname, $navigation);
+ break;
+
default:
+ $navlinks[] = array('name' => $blockname, 'link' => null, 'type' => 'misc');
+ $navlinks[] = array('name' => $straction, 'link' => null, 'type' => 'misc');
+ $navigation = build_navigation($navlinks);
print_header("$straction: $blockname", $SITE->fullname, $navigation);
break;
}
define('RISK_PERSONAL', 0x0008);
define('RISK_SPAM', 0x0010);
+// rolename displays
+define('ROLENAME_ORIGINAL', 0);// the name as defined in the role definition
+define('ROLENAME_ALIAS', 1); // the name as defined by a role alias
+define('ROLENAME_BOTH', 2); // Both, like this: Role alias (Original)
+
require_once($CFG->dirroot.'/group/lib.php');
$context_cache = array(); // Cache of all used context objects for performance (by level and instance)
* @param string $field
* @return array
*/
-function get_assignable_roles ($context, $field="name") {
+function get_assignable_roles ($context, $field='name', $rolenamedisplay=ROLENAME_ALIAS) {
global $CFG;
$roleids = implode(',',$roleids);
- // apply context role aliases if name requested
- if ($field == 'name') {
- $f = "COALESCE(rn.name, r.name) AS name";
- } else {
- $f = "r.$field";
- }
-
// The subselect scopes the DISTINCT down to
// the role ids - a DISTINCT over the whole of
// the role table is much more expensive on some DBs
- $sql = "SELECT r.id, $f
+ $sql = "SELECT r.id, r.$field
FROM {$CFG->prefix}role r
JOIN ( SELECT DISTINCT allowassign as allowedrole
FROM {$CFG->prefix}role_allow_assign raa
WHERE raa.roleid IN ($roleids) ) ar
ON r.id=ar.allowedrole
- LEFT OUTER JOIN {$CFG->prefix}role_names rn
- ON (rn.roleid = r.id AND rn.contextid = $context->id)
ORDER BY sortorder ASC";
$rs = get_recordset_sql($sql);
$roles[$r->id] = $r->{$field};
}
rs_close($rs);
- foreach ($roles as $roleid => $rolename) {
- $roles[$roleid] = strip_tags(format_string($rolename, true));
- }
- return $roles;
+
+ return role_fix_names($roles, $context, $rolenamedisplay);
}
/**
* @param string $field
* @return array
*/
-function get_assignable_roles_for_switchrole ($context, $field="name") {
+function get_assignable_roles_for_switchrole ($context, $field='name', $rolenamedisplay=ROLENAME_ALIAS) {
global $CFG;
$roleids = implode(',',$roleids);
- // apply context role aliases if name requested
- if ($field == 'name') {
- $f = "COALESCE(rn.name, r.name) AS name";
- } else {
- $f = "r.$field";
- }
-
-
// The subselect scopes the DISTINCT down to
// the role ids - a DISTINCT over the whole of
// the role table is much more expensive on some DBs
- $sql = "SELECT r.id, $f
+ $sql = "SELECT r.id, r.$field
FROM {$CFG->prefix}role r
JOIN ( SELECT DISTINCT allowassign as allowedrole
FROM {$CFG->prefix}role_allow_assign raa
JOIN {$CFG->prefix}role_capabilities rc
ON (r.id = rc.roleid AND rc.capability = 'moodle/course:view'
AND rc.capability != 'moodle/site:doanything')
- LEFT OUTER JOIN {$CFG->prefix}role_names rn
- ON (rn.roleid = r.id AND rn.contextid = $context->id)
ORDER BY sortorder ASC";
$rs = get_recordset_sql($sql);
$roles[$r->id] = $r->{$field};
}
rs_close($rs);
- foreach ($roles as $roleid => $rolename) {
- $roles[$roleid] = strip_tags(format_string($rolename, true));
- }
- return $roles;
+
+ return role_fix_names($roles, $context, $rolenamedisplay);
}
/**
* @param object $context
* @return array
*/
-function get_overridable_roles($context) {
+function get_overridable_roles($context, $field='name', $rolenamedisplay=ROLENAME_ALIAS) {
$options = array();
if ($roles = get_all_roles()) {
foreach ($roles as $role) {
if (user_can_override($context, $role->id)) {
- $options[$role->id] = $role->name;
+ $options[$role->id] = $role->$field;
}
}
}
- return role_fix_names($options, $context);
+ return role_fix_names($options, $context, $rolenamedisplay);
}
/**
/**
* Prepare list of roles for display, apply aliases and format text
* @param array $roleoptions array roleid=>rolename
- * @param object $coursecontext
+ * @param object $context
* @return array of role names
*/
-function role_fix_names($roleoptions, $coursecontext) {
- if ($aliasnames = get_records('role_names', 'contextid', $coursecontext->id)) {
- foreach ($aliasnames as $alias) {
- if (isset($roleoptions[$alias->roleid])) {
- $roleoptions[$alias->roleid] = $alias->name;
+function role_fix_names($roleoptions, $context, $rolenamedisplay=ROLENAME_ALIAS) {
+ if ($rolenamedisplay != ROLENAME_ORIGINAL && !empty($context->id)) {
+ if ($context->contextlevel == CONTEXT_MODULE || $context->contextlevel == CONTEXT_BLOCK) { // find the parent course context
+ if ($parentcontextid = array_shift(get_parent_contexts($context))) {
+ $context = get_context_instance_by_id($parentcontextid);
+ }
+ }
+ if ($aliasnames = get_records('role_names', 'contextid', $context->id)) {
+ if ($rolenamedisplay == ROLENAME_ALIAS) {
+ foreach ($aliasnames as $alias) {
+ if (isset($roleoptions[$alias->roleid])) {
+ $roleoptions[$alias->roleid] = format_string($alias->name);
+ }
+ }
+ } else if ($rolenamedisplay == ROLENAME_BOTH) {
+ foreach ($aliasnames as $alias) {
+ if (isset($roleoptions[$alias->roleid])) {
+ $roleoptions[$alias->roleid] = format_string($alias->name).' ('.format_string($roleoptions[$alias->roleid]).')';
+ }
+ }
}
}
}
foreach ($roleoptions as $rid => $name) {
- $roleoptions[$rid] = strip_tags(format_string($name));
+ $roleoptions[$rid] = strip_tags($name);
}
return $roleoptions;
}