Example #1
0
/**
 * Obtains the role of a given user
 *
 * @param ElggUser $user
 * @return ElggRole The role the user belongs to
 */
function roles_get_role($user = null)
{
    $user = $user ? $user : elgg_get_logged_in_user_entity();
    if (elgg_instanceof($user, 'user')) {
        $options = array('type' => 'object', 'subtype' => 'role', 'relationship' => 'has_role', 'relationship_guid' => $user->guid);
        $roles = elgg_get_entities_from_relationship($options);
        if (is_array($roles) && !empty($roles)) {
            return $roles[0];
        }
    }
    // Couldn't find role for the current user, or there is no logged in user
    return roles_get_role_by_name(roles_filter_role_name(NO_ROLE));
}
Example #2
0
/**
 * Saves user role upon changing role on the user settings page
 *
 * @param string $hook_name    "usersettings:save"
 * @param string $entity_type  "user"
 * @param mixed  $return_value Return value
 * @param mixed  $params       An associative array of parameters provided by the hook trigger
 * @return void
 */
function roles_user_settings_save($hook_name, $entity_type, $return_value, $params)
{
    $role_name = get_input('role');
    $user_id = get_input('guid');
    $role_name = roles_filter_role_name($role_name, $user_id);
    $role = roles_get_role_by_name($role_name);
    $user = get_entity($user_id);
    $res = roles_set_role($role, $user);
    if ($res === false) {
        register_error(elgg_echo('user:role:fail'));
        return false;
    } else {
        if ($res === true) {
            system_message(elgg_echo('user:role:success'));
            return true;
        }
    }
}