public function getSessionSettings($container_) { $prefs = Preferences::getInstance(); $overriden = array(); $default_settings = $prefs->get('general', $container_); // load rules (overriden settings) $user_groups_preferences = Abstract_UserGroup_Preferences::load_all('general', $container_); $users_group_id = array(); foreach ($user_groups_preferences as $key => $pref) { if (in_array($pref->usergroup_id, $users_group_id)) { continue; } array_push($users_group_id, $pref->usergroup_id); } // from this group, which are these I am into $users_groups_mine_ids = $this->get_my_usersgroups_from_list($users_group_id); // Finnaly, overwrite default settings with users groups settings foreach ($user_groups_preferences as $pref) { $key = $pref->element_id; if (!in_array($pref->usergroup_id, $users_groups_mine_ids)) { continue; } $element = $pref->toConfigElement(); if (isset($overriden[$key]) && $overriden[$key] == true && $element->content != $default_settings[$key]) { ErrorManager::report('User "' . $this->getAttribute('login') . '" has at least two groups with the same overriden rule but with different values, the result will be unpredictable.'); } $default_settings[$key] = $element->content; $overriden[$key] = true; } $prefs_of_a_user_unsort = Abstract_User_Preferences::loadByUserLogin($this->getAttribute('login'), 'general', $container_); foreach ($prefs_of_a_user_unsort as $key => $pref) { $element = $pref->toConfigElement(); if (isset($overriden[$key]) && $overriden[$key] == true && $element->content != $default_settings[$key]) { Logger::debug("User '" . $this->getAttribute('login') . "' has at least overriden preferences but with different values, the result will be unpredictable."); } $default_settings[$key] = $element->content; $overriden[$key] = true; } return $default_settings; }
public function user_info($id_) { $this->check_authorized('viewUsers'); $userDB = UserDB::getInstance(); $user = $userDB->import($id_); if (!$user) { return null; } $u = array(); foreach ($user->getAttributesList() as $attr) { $u[$attr] = $user->getAttribute($attr); } $u['locale'] = $user->getLocale(); $search_limit = $this->prefs->get('general', 'max_items_per_page'); $usergroupDB = UserGroupDB::getInstance(); list($groups, $sizelimit_exceeded) = $usergroupDB->getGroupsContains('', array(), $search_limit, $user); $u['groups_partial_list'] = $sizelimit_exceeded; if (count($groups) > 0) { $u['groups'] = array(); foreach ($groups as $group_id => $group) { $u['groups'][$group->getUniqueID()] = $group->name; } } $applications = $user->applications(); if (is_array($applications) && count($applications) > 0) { $u['applications'] = array(); foreach ($applications as $application) { $u['applications'][$application->getAttribute('id')] = $application->getAttribute('name'); } } $sessions = Abstract_Session::getByUser($id_); if (count($sessions) > 0) { $u['sessions'] = array(); foreach ($sessions as $session) { $u['sessions'][$session->id] = $session->getAttribute('start_time'); } } $session_settings = $user->getSessionSettings('session_settings_defaults'); if (array_key_exists('enable_profiles', $session_settings) && $session_settings['enable_profiles'] == 1) { $profiles = $user->getProfiles(); if (count($profiles) > 0) { $u['profiles'] = array(); foreach ($profiles as $profile) { $server = Abstract_Server::load($profile->server); if (!$server) { continue; } $p = array('id' => $profile->id, 'server_id' => $server->id, 'server_name' => $server->getDisplayName()); $u['profiles'][$p['id']] = $p; } } } // Settings $u['settings'] = array(); $u['settings_default'] = array(); $session_prefs_categs = array('session_settings_defaults', 'remote_desktop_settings', 'remote_applications_settings'); foreach ($session_prefs_categs as $session_prefs_categ) { $u['settings'][$session_prefs_categ] = array(); $u['settings_default'][$session_prefs_categ] = array(); $session_prefs = $this->prefs->getElements('general', $session_prefs_categ); foreach ($session_prefs as $session_pref) { $e = self::pref_element2dict($session_pref); $u['settings_default'][$session_prefs_categ][$e['id']] = $e; } $user_prefs = Abstract_User_Preferences::loadByUserLogin($user->getAttribute('login'), 'general', $session_prefs_categ); foreach ($user_prefs as $user_pref) { $u['settings'][$session_prefs_categ][$user_pref->element_id] = $user_pref->value; } } return $u; }