Ejemplo n.º 1
0
 /**
  * 
  * Checks if this role is a reserved role
  * 
  * @return boolean True if the current role is a reserved role
  */
 public function isReservedRole()
 {
     return ElggRole::isReservedRoleName($this->name);
 }
Ejemplo n.º 2
0
/**
 * Processes the configuration files and generates the appropriate ElggRole objects.
 *
 * If, for any role definition, there is an already existing role with the same name,
 * the role permissions will be updated for the given role object.
 * If there is no previously existing, corresponding role object, it will be created now.
 *
 * @param array $roles_array The roles configuration array
 */
function roles_create_from_config($roles_array)
{
    $options = array('type' => 'object', 'subtype' => 'role');
    $roles = elgg_get_entities($options);
    $existing_roles = array();
    foreach ($roles as $role) {
        $existing_roles[$role->name] = $role;
    }
    foreach ($roles_array as $rname => $rdetails) {
        $current_role = $existing_roles[$rname];
        if (elgg_instanceof($current_role, 'object', 'role')) {
            // Update existing role obejct
            $current_role->title = elgg_echo($rdetails['title']);
            $current_role->extends = $rdetails['extends'];
            $current_role->permissions = serialize($rdetails['permissions']);
            $current_role->save();
        } else {
            // Create new role object
            $new_role = new ElggRole();
            $new_role->title = elgg_echo($rdetails['title']);
            $new_role->owner_guid = elgg_get_logged_in_user_guid();
            $new_role->container_guid = $new_role->owner_guid;
            $new_role->access_id = ACCESS_PUBLIC;
            if (!$new_role->save()) {
                error_log('Could not create new role $rname');
            } else {
                // Add metadata
                $new_role->name = $rname;
                $new_role->extends = $rdetails['extends'];
                $new_role->permissions = serialize($rdetails['permissions']);
            }
        }
    }
}
Ejemplo n.º 3
0
if (!$current_role && roles_get_role_by_name($name)) {
    register_error(elgg_echo(PLUGIN_ID . ':edit:duplicate', array($name)));
    forward(REFERER);
}
if (elgg_instanceof($current_role, 'object', 'role')) {
    // Update existing role obejct
    $current_role->title = $title;
    $current_role->extends = $ordered_extends;
    if ($current_role->save()) {
        system_message(elgg_echo(PLUGIN_ID . ':edit:success', array($name)));
        $forward_url = $current_role->getURL();
    }
} else {
    $site = elgg_get_site_entity();
    // Create new role object
    $new_role = new \ElggRole();
    $new_role->title = $title;
    $new_role->owner_guid = elgg_get_logged_in_user_guid();
    $new_role->container_guid = $site->owner_guid;
    $new_role->access_id = ACCESS_PUBLIC;
    if (!$new_role->save()) {
        error_log('Could not create new role $name');
        register_error(elgg_echo(PLUGIN_ID . ':edit:error', array($name)));
        $forward_url = REFERER;
    } else {
        // Add metadata
        $new_role->name = $name;
        $new_role->extends = $ordered_extends;
        $new_role->permissions = serialize(array());
        system_message(elgg_echo(PLUGIN_ID . ':edit:success', array($name)));
        $forward_url = $new_role->getURL();