Пример #1
0
 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;
 }
Пример #2
0
 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;
 }