Пример #1
0
function tool_editrolesbycap_get_default_permission($role, $capability)
{
    static $cache = array();
    if (empty($role->archetype)) {
        return CAP_INHERIT;
    }
    if (isset($cache[$capability->name][$role->archetype])) {
        return $cache[$capability->name][$role->archetype];
    }
    $defaults = get_default_capabilities($role->archetype);
    if (isset($defaults[$capability->name])) {
        $cache[$capability->name][$role->archetype] = $defaults[$capability->name];
    } else {
        $cache[$capability->name][$role->archetype] = CAP_INHERIT;
    }
    return $cache[$capability->name][$role->archetype];
}
Пример #2
0
/**
 * Reset role capabilities to default according to selected role archetype.
 * If no archetype selected, removes all capabilities.
 *
 * @param int $roleid
 * @return void
 */
function reset_role_capabilities($roleid)
{
    global $DB;
    $role = $DB->get_record('role', array('id' => $roleid), '*', MUST_EXIST);
    $defaultcaps = get_default_capabilities($role->archetype);
    $systemcontext = context_system::instance();
    $DB->delete_records('role_capabilities', array('roleid' => $roleid));
    foreach ($defaultcaps as $cap => $permission) {
        assign_capability($cap, $permission, $roleid, $systemcontext->id);
    }
}
Пример #3
0
 protected function load_parent_permissions()
 {
     $this->parentpermissions = get_default_capabilities($this->role->archetype);
 }
Пример #4
0
/**
 * Reset role capabilitites to default according to selected legacy capability.
 * If several legacy caps selected, use the first from get_default_capabilities.
 * If no legacy selected, removes all capabilities.
 *
 * @param int @roleid
 */
function reset_role_capabilities($roleid)
{
    global $DB;
    $sitecontext = get_context_instance(CONTEXT_SYSTEM);
    $legacyroles = get_legacy_roles();
    $defaultcaps = array();
    foreach ($legacyroles as $ltype => $lcap) {
        $localoverride = get_local_override($roleid, $sitecontext->id, $lcap);
        if (!empty($localoverride->permission) and $localoverride->permission == CAP_ALLOW) {
            //choose first selected legacy capability
            $defaultcaps = get_default_capabilities($ltype);
            break;
        }
    }
    $DB->delete_records('role_capabilities', array('roleid' => $roleid));
    if (!empty($defaultcaps)) {
        foreach ($defaultcaps as $cap => $permission) {
            assign_capability($cap, $permission, $roleid, $sitecontext->id);
        }
    }
}
Пример #5
0
 protected function load_parent_permissions()
 {
     if ($this->role->legacytype) {
         $this->parentpermissions = get_default_capabilities($this->role->legacytype);
     } else {
         $this->parentpermissions = array();
     }
 }