/** * 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)); }
/** * 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; } } }