if (!isset($accessdata['ra'][$ra->path])) {
$accessdata['ra'][$ra->path] = array();
}
- array_push($accessdata['ra'][$ra->path], $ra->roleid);
+ $accessdata['ra'][$ra->path][$ra->roleid] = $ra->roleid;
// Concatenate as string the whole path (all related context)
// for this role. This is damn faster than using array_merge()
// (this check is cheaper than in_array())
if ($lastseen !== $ra->path.':'.$ra->roleid) {
$lastseen = $ra->path.':'.$ra->roleid;
- array_push($accessdata['ra'][$ra->path], $ra->roleid);
+ $accessdata['ra'][$ra->path][$ra->roleid] = $ra->roleid;
array_push($localroles, $ra->roleid);
}
}
if (!empty($CFG->defaultuserroleid)) {
$accessdata = get_role_access($CFG->defaultuserroleid, $accessdata);
if (!isset($accessdata['ra'][$base])) {
- $accessdata['ra'][$base] = array($CFG->defaultuserroleid);
- } else {
- array_push($accessdata['ra'][$base], $CFG->defaultuserroleid);
+ $accessdata['ra'][$base] = array();
}
+ $accessdata['ra'][$base][$CFG->defaultuserroleid] = $CFG->defaultuserroleid;
$accessdata['dr'] = $CFG->defaultuserroleid;
}
$base = '/'. SYSCONTEXTID .'/'. $frontpagecontext->id;
$accessdata = get_default_frontpage_role_access($CFG->defaultfrontpageroleid, $accessdata);
if (!isset($accessdata['ra'][$base])) {
- $accessdata['ra'][$base] = array($CFG->defaultfrontpageroleid);
- } else {
- array_push($accessdata['ra'][$base], $CFG->defaultfrontpageroleid);
+ $accessdata['ra'][$base] = array();
}
+ $accessdata['ra'][$base][$CFG->defaultfrontpageroleid] = $CFG->defaultfrontpageroleid;
}
// for dirty timestamps in cron
$accessdata['time'] = time();
// Load the rdefs
$_SESSION['USER']->access = get_role_access($guest->id);
// Put the ghost enrolment in place...
- $_SESSION['USER']->access['ra'][$base] = array($guest->id);
+ $_SESSION['USER']->access['ra'][$base] = array($guest->id => $guest->id);
} else if (!empty($_SESSION['USER']->id)) { // can not use isloggedin() yet
if (!empty($CFG->defaultuserroleid)) {
$accessdata = get_role_access($CFG->defaultuserroleid, $accessdata);
if (!isset($accessdata['ra'][$base])) {
- $accessdata['ra'][$base] = array($CFG->defaultuserroleid);
- } else {
- array_push($accessdata['ra'][$base], $CFG->defaultuserroleid);
+ $accessdata['ra'][$base] = array();
}
+ $accessdata['ra'][$base][$CFG->defaultuserroleid] = $CFG->defaultuserroleid;
$accessdata['dr'] = $CFG->defaultuserroleid;
}
$base = '/'. SYSCONTEXTID .'/'. $frontpagecontext->id;
$accessdata = get_default_frontpage_role_access($CFG->defaultfrontpageroleid, $accessdata);
if (!isset($accessdata['ra'][$base])) {
- $accessdata['ra'][$base] = array($CFG->defaultfrontpageroleid);
- } else {
- array_push($accessdata['ra'][$base], $CFG->defaultfrontpageroleid);
+ $accessdata['ra'][$base] = array();
}
+ $accessdata['ra'][$base][$CFG->defaultfrontpageroleid] = $CFG->defaultfrontpageroleid;
}
$_SESSION['USER']->access = $accessdata;
} else if (!empty($CFG->notloggedinroleid)) {
$_SESSION['USER']->access = get_role_access($CFG->notloggedinroleid);
- $_SESSION['USER']->access['ra'][$base] = array($CFG->notloggedinroleid);
+ $_SESSION['USER']->access['ra'][$base] = array($CFG->notloggedinroleid => $CFG->notloggedinroleid);
}
// Timestamp to read dirty context timestamps later
//
// Add the ghost RA
//
- if (isset($accessdata['ra'][$context->path])) {
- array_push($accessdata['ra'][$context->path], $roleid);
- } else {
- $accessdata['ra'][$context->path] = array($roleid);
+ if (!isset($accessdata['ra'][$context->path])) {
+ $accessdata['ra'][$context->path] = array();
}
+ $accessdata['ra'][$context->path][$roleid] = $roleid;
return $accessdata;
}
/**
- * Removes any extra guest roels from accessdata
+ * Removes any extra guest roles from accessdata
* @param object $context
* @param array $accessdata
* @return array access data
WHERE ra.contextid = :contextid AND ra.userid = :userid";
$ras = $DB->get_records_sql($sql, array('contextid'=>$context->id, 'userid'=>$USER->id));
- $accessdata['ra'][$context->path] = array_keys($ras);
+ $accessdata['ra'][$context->path] = array_combine(array_keys($ras), array_keys($ras));
return $accessdata;
}