function show_manage($profile_id_) { $profiledb = ProfileDB::getInstance(); $profile = $profiledb->import($profile_id_); if (!is_object($profile)) { redirect('profiles.php'); } $used_users = $profile->getUsers(); page_header(); echo '<div id="profiles_div">'; echo '<h1>' . sprintf(_("Profile: %s"), $profile->id) . '</h1>'; echo '<div>'; echo '<h2>' . _('Server') . '</h2>'; echo '<a href="servers.php?action=manage&fqdn=' . $profile->server . '"> ' . $profile->server . '</a>'; echo '</div>'; echo '<br />'; echo '<div>'; echo '<h2>' . _('Used by') . '</h2>'; echo '<table border="0" cellspacing="1" cellpadding="3">'; foreach ($used_users as $user) { echo '<tr>'; echo '<td><a href="users.php?action=manage&id=' . $user->getAttribute('login') . '">' . $user->getAttribute('displayname') . '</a></td>'; echo '</tr>'; } echo '</table>'; echo '</div>'; echo '</div>'; page_footer(); }
public static function getInstance() { if (is_null(self::$instance)) { $prefs = Preferences::getInstance(); if (!$prefs) { die_error('get Preferences failed', __FILE__, __LINE__); } $mods_enable = $prefs->get('general', 'module_enable'); if (!in_array('ProfileDB', $mods_enable)) { die_error(_('ProfileDB module must be enabled'), __FILE__, __LINE__); } $mod_app_name = 'ProfileDB_' . $prefs->get('ProfileDB', 'enable'); self::$instance = new $mod_app_name(); } return self::$instance; }
public function delGroup($usergroup_) { $profiledb = ProfileDB::getInstance(); return $profiledb->delUserOfProfile($user_, $this); }
public function get() { $used = 0; $total = 0; if (Preferences::moduleIsEnabled('ProfileDB')) { $profiledb = ProfileDB::getInstance(); $total += $profiledb->count(); $used += $profiledb->countOnServer($this->server->fqdn); } if (Preferences::moduleIsEnabled('SharedFolderDB')) { $sharedfolderdb = SharedFolderDB::getInstance(); $total += $sharedfolderdb->count(); $used += $sharedfolderdb->countOnServer($this->server->fqdn); } if ($total == 0) { return 0; } else { return 1.0 - (double) $used / (double) $total; } }
public function getProfiles() { if (Preferences::moduleIsEnabled('ProfileDB') == false) { return array(); } $profiledb = ProfileDB::getInstance(); return $profiledb->importFromUser($this->getAttribute('login')); }
redirect(); } elseif ($_REQUEST['action'] == 'del' && isset($_REQUEST['sharedfolder_id']) && isset($_REQUEST['usergroup_id'])) { action_del_sharedfolder_acl($_REQUEST['sharedfolder_id'], $_REQUEST['usergroup_id']); redirect(); } } if ($_REQUEST['name'] == 'Profile') { if (Preferences::moduleIsEnabled('ProfileDB') == false) { popup_error(_('Profile management is not enabled')); redirect(); } if (!checkAuthorization('manageServers')) { redirect(); } if ($_REQUEST['action'] == 'del') { $profiledb = ProfileDB::getInstance(); foreach ($_REQUEST['ids'] as $id) { $network_folder = $profiledb->import($id); if (is_object($network_folder)) { if (!$network_folder->isUsed()) { $buf = $profiledb->remove($network_folder->id); } else { $buf = false; } if (!$buf) { popup_error(sprintf(_("Unable to delete profile '%s'"), $network_folder->id)); } else { popup_info(sprintf(_("Profile '%s' successfully deleted"), $network_folder->id)); } } else { popup_error(sprintf(_("Unable to load profile '%s'"), $id));
public static function load_orphans() { Logger::debug('main', 'Starting Abstract_Network_Folder::load_orphans()'); $sharedfolderdb = null; if (Preferences::moduleIsEnabled('SharedFolderDB')) { $sharedfolderdb = SharedFolderDB::getInstance(); } $profiles = null; if (Preferences::moduleIsEnabled('ProfileDB')) { $profiledb = ProfileDB::getInstance(); } $SQL = SQL::getInstance(); if (is_null($sharedfolderdb) && is_null($profiledb)) { $SQL->DoQuery('SELECT * FROM #1;', self::$table); } else { if (is_null($sharedfolderdb)) { $SQL->DoQuery('SELECT * FROM #1 WHERE @2 NOT IN ( SELECT @2 FROM #3 );', self::$table, 'id', ProfileDB_internal::$table); } else { if (is_null($profiledb)) { $SQL->DoQuery('SELECT * FROM #1 WHERE @2 NOT IN ( SELECT @2 FROM #3 );', self::$table, 'id', SharedFolderDB_internal::$table); } else { $SQL->DoQuery('SELECT * FROM #1 WHERE @2 NOT IN ( SELECT @2 FROM #3 ) AND @2 NOT IN ( SELECT @2 FROM #4 )', self::$table, 'id', ProfileDB_internal::$table, SharedFolderDB_internal::$table); } } } $rows = $SQL->FetchAllResults(); $network_folders = array(); foreach ($rows as $row) { $Network_Folder = self::generateFromRow($row); if (!is_object($Network_Folder)) { continue; } $network_folders[] = $Network_Folder; } return $network_folders; }
public function updateNetworkFolders() { if (!is_array($this->roles) || !array_key_exists(Server::SERVER_ROLE_FS, $this->roles)) { Logger::critical('main', 'Server::updateNetworkFolders - Not an FS'); return false; } if (!$this->isOnline()) { Logger::debug('main', 'Server::updateNetworkFolders server "' . $this->fqdn . ':' . $this->web_port . '" is not online'); return false; } $forders_on_server = $this->getNetworkFoldersList(); if (is_array($forders_on_server) === false) { Logger::error('main', 'Server::updateNetworkFolders getNetworkFoldersList failed for fqdn=' . $this->fqdn); return false; } $folders_on_sm1 = array(); if (Preferences::moduleIsEnabled('ProfileDB')) { $profiledb = ProfileDB::getInstance(); $folders_on_sm1 = $profiledb->importFromServer($this->fqdn); } $folders_on_sm2 = array(); if (Preferences::moduleIsEnabled('SharedFolderDB')) { $sharedfolderdb = SharedFolderDB::getInstance(); $folders_on_sm2 = $sharedfolderdb->importFromServer($this->fqdn); } $folders_on_sm = array(); if (is_array($folders_on_sm1)) { $folders_on_sm = array_merge($folders_on_sm, $folders_on_sm1); } if (is_array($folders_on_sm2)) { $folders_on_sm = array_merge($folders_on_sm, $folders_on_sm2); } foreach ($forders_on_server as $folder_id) { if (Preferences::moduleIsEnabled('SharedFolderDB')) { $folder = $sharedfolderdb->import($folder_id); if ($folder) { $db = $sharedfolderdb; } } if (Preferences::moduleIsEnabled('ProfileDB')) { if (!$folder) { $folder = $profiledb->import($folder_id); $db = $profiledb; } } if (is_object($folder) === false) { // networkfolder does not exist $folder = new NetworkFolder(); $folder->id = $folder_id; $folder->name = $folder_id; $folder->server = $this->fqdn; $profiledb->remove($folder); $sharedfolderdb->remove($folder); } } return true; }
public function buildServersList($simulation_mode = false) { if (!$this->user) { Logger::error('main', 'SessionManagement::buildServersList - User is not authenticated, aborting'); return false; } $serverRoles = $this->getServerRoles(); $this->servers = array(); $servers_count = 0; foreach ($serverRoles as $role) { if (!array_key_exists($role, $this->servers)) { $this->servers[$role] = array(); } switch ($role) { case Server::SERVER_ROLE_APS: $default_settings = $this->user->getSessionSettings('session_settings_defaults'); $bypass_servers_restrictions = $default_settings['bypass_servers_restrictions'] == 1; $servers = $this->chooseApplicationServers($bypass_servers_restrictions); if (!is_array($servers)) { return false; } foreach ($servers as $server) { $servers_count++; $this->servers[Server::SERVER_ROLE_APS][$server->id] = array('status' => Session::SESSION_STATUS_CREATED); } break; case Server::SERVER_ROLE_FS: if (get_class($this) != 'SessionManagement_internal') { Logger::error('main', 'SessionManagement::buildServersList - Role "' . $role . '" is not compatible with the current integration mode (' . substr(get_class($this), strlen('SessionManagement_')) . '), aborting'); return false; } $prefs = Preferences::getInstance(); if (!$prefs) { return false; } $mods_enable = $prefs->get('general', 'module_enable'); $default_settings = $this->user->getSessionSettings('session_settings_defaults'); $enable_profiles = $default_settings['enable_profiles'] == 1; $auto_create_profile = $default_settings['auto_create_profile'] == 1 && in_array('ProfileDB', $mods_enable); $start_without_profile = $default_settings['start_without_profile'] == 1; $enable_sharedfolders = $default_settings['enable_sharedfolders'] == 1 && in_array('SharedFolderDB', $mods_enable); $start_without_all_sharedfolders = $default_settings['start_without_all_sharedfolders'] == 1; if ($enable_profiles) { $fileservers = Abstract_Server::load_available_by_role(Server::SERVER_ROLE_FS); if (count($fileservers) > 0) { $profiles = $this->user->getProfiles(); if (!is_array($profiles)) { Logger::error('main', 'SessionManagement::buildServersList - getProfiles() failed for User "' . $this->user->getAttribute('login') . '", aborting'); return false; } if (count($profiles) == 1) { Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" already have a Profile, using it'); $profile = array_pop($profiles); foreach ($fileservers as $fileserver) { if ($fileserver->id != $profile->server) { continue; } if (!array_key_exists($fileserver->id, $this->servers[Server::SERVER_ROLE_FS])) { $this->servers[Server::SERVER_ROLE_FS][$fileserver->id] = array(); } $this->servers[Server::SERVER_ROLE_FS][$fileserver->id][] = array('type' => 'profile', 'rid' => $this->find_uniq_rid('profile', true), 'dir' => $profile->id); break; } } else { Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" does not have a Profile for now, checking for auto-creation'); if ($auto_create_profile) { Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" Profile will be auto-created and used'); $profileDB = ProfileDB::getInstance(); $fileserver = $profileDB->chooseFileServer(); if (!is_object($fileserver)) { Logger::error('main', 'SessionManagement::buildServersList - Auto-creation of Profile for User "' . $this->user->getAttribute('login') . '" failed (unable to get a valid FileServer)'); return false; } if (!$simulation_mode) { $profile = new Profile(NULL, $fileserver->id, NetworkFolder::NF_STATUS_OK); if (!$profileDB->addToServer($profile, $fileserver)) { Logger::error('main', 'SessionManagement::buildServersList - Auto-creation of Profile for User "' . $this->user->getAttribute('login') . '" failed (unable to add the Profile to the FileServer)'); return false; } if (!$profile->addUser($this->user)) { Logger::error('main', 'SessionManagement::buildServersList - Auto-creation of Profile for User "' . $this->user->getAttribute('login') . '" failed (unable to associate the User to the Profile)'); return false; } if (!array_key_exists($fileserver->id, $this->servers[Server::SERVER_ROLE_FS])) { $this->servers[Server::SERVER_ROLE_FS][$fileserver->id] = array(); } $this->servers[Server::SERVER_ROLE_FS][$fileserver->id][] = array('type' => 'profile', 'rid' => $this->find_uniq_rid('profile', true), 'dir' => $profile->id); } } else { Logger::debug('main', 'SessionManagement::buildServersList - Auto-creation of Profile for User "' . $this->user->getAttribute('login') . '" disabled, checking for session without Profile'); if (!$start_without_profile) { Logger::error('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" does not have a valid Profile, aborting'); return false; } Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" can start a session without a valid Profile, proceeding'); } } } else { Logger::debug('main', 'SessionManagement::buildServersList - No "' . $role . '" server found for User "' . $this->user->getAttribute('login') . '", checking for session without Profile'); if (!$start_without_profile) { Logger::error('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" does not have a valid Profile, aborting'); return false; } Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" can start a session without a valid Profile, proceeding'); } } if ($enable_sharedfolders) { $sharedfolders = $this->user->getSharedFolders(); if (!is_array($sharedfolders)) { Logger::error('main', 'SessionManagement::buildServersList - getSharedFolders() failed for User "' . $this->user->getAttribute('login') . '", aborting'); return false; } if (count($sharedfolders) > 0) { foreach ($sharedfolders as $sharedfolder_id => $info) { $sharedfolder = $info['share']; $fileserver = Abstract_Server::load($sharedfolder->server); if (!$fileserver || !$fileserver->isOnline() || $fileserver->getAttribute('locked')) { Logger::warning('main', 'SessionManagement::buildServersList - Server "' . $sharedfolder->server . '" for SharedFolder "' . $sharedfolder->id . '" is not available'); if (!$start_without_all_sharedfolders) { Logger::error('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" does not have all SharedFolders available, aborting'); return false; } else { Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" can start a session without all SharedFolders available, proceeding'); continue; } } if (!array_key_exists($fileserver->id, $this->servers[Server::SERVER_ROLE_FS])) { $this->servers[Server::SERVER_ROLE_FS][$fileserver->id] = array(); } $this->servers[Server::SERVER_ROLE_FS][$fileserver->id][] = array('type' => 'sharedfolder', 'rid' => $this->find_uniq_rid('sharedfolder', true), 'dir' => $sharedfolder->id, 'name' => $sharedfolder->name, 'mode' => $info['mode']); } } } break; case Server::SERVER_ROLE_WEBAPPS: $servers = $this->chooseWebAppServers(); if (!is_array($servers)) { break; } Logger::debug('main', 'SessionManagement::buildServersList - found ' . count($servers) . ' webapp server(s)'); foreach ($servers as $server) { $servers_count++; $this->servers[Server::SERVER_ROLE_WEBAPPS][$server->id] = array('status' => Session::SESSION_STATUS_CREATED); } break; } } if ($servers_count < 1) { Logger::error('main', 'SessionManagement::buildServersList - no server found!'); return false; } return true; }
function checkup_liaison($type_, $element_, $group_) { switch ($type_) { case 'ApplicationServer': $applicationDB = ApplicationDB::getInstance(); $buf = $applicationDB->import($element_); if (!is_object($buf)) { return 'Application "' . $element_ . '" does not exist'; } $buf = Abstract_Server::load($group_); if (!$buf) { return 'Server "' . $group_ . '" does not exist'; } break; case 'AppsGroup': $applicationDB = ApplicationDB::getInstance(); $buf = $applicationDB->import($element_); if (!is_object($buf)) { return 'Application "' . $element_ . '" does not exist'; } $applicationsGroupDB = ApplicationsGroupDB::getInstance(); $buf = $applicationsGroupDB->import($group_); if (!is_object($buf)) { return 'ApplicationsGroup "' . $group_ . '" does not exist'; } break; case 'ApplicationMimeType': $applicationDB = ApplicationDB::getInstance(); $buf = $applicationDB->import($element_); if (!is_object($buf)) { return 'Application "' . $element_ . '" does not exist'; } break; case 'ServerSession': $buf = Abstract_Server::load($element_); if (!$buf) { return 'Server "' . $element_ . '" does not exist'; } $buf = Abstract_Session::load($group_); if (!$buf) { return 'Session "' . $group_ . '" does not exist'; } break; case 'UserGroupSharedFolder': $sharedfolderdb = SharedFolderDB::getInstance(); $userGroupDB = UserGroupDB::getInstance(); $buf = $userGroupDB->import($element_); if (!is_object($buf)) { return 'UserGroup "' . $element_ . '" does not exist'; } $buf = $sharedfolderdb->import($group_); if (!$buf) { return 'SharedFolder "' . $group_ . '" does not exist'; } break; case 'UserProfile': $profiledb = ProfileDB::getInstance(); $userDB = UserDB::getInstance(); $buf = $userDB->import($element_); if (!is_object($buf)) { return 'User "' . $element_ . '" does not exist'; } $buf = $profiledb->import($group_); if (!$buf) { return 'Profile "' . $group_ . '" does not exist'; } break; case 'UsersGroup': $userDB = UserDB::getInstance(); $buf = $userDB->import($element_); if (!is_object($buf)) { return 'User "' . $element_ . '" does not exist'; } $userGroupDB = UserGroupDB::getInstance(); $buf = $userGroupDB->import($group_); if (!is_object($buf)) { return 'UserGroup "' . $group_ . '" does not exist'; } break; case 'UsersGroupApplicationsGroup': $userGroupDB = UserGroupDB::getInstance(); $buf = $userGroupDB->import($element_); if (!is_object($buf)) { return 'UserGroup "' . $element_ . '" does not exist'; } $applicationsGroupDB = ApplicationsGroupDB::getInstance(); $buf = $applicationsGroupDB->import($group_); if (!is_object($buf)) { return 'ApplicationsGroup "' . $group_ . '" does not exist'; } break; case 'UsersGroupCached': $userDB = UserDB::getInstance(); $buf = $userDB->import($element_); if (!is_object($buf)) { return 'User "' . $element_ . '" does not exist'; } $userGroupDB = UserGroupDB::getInstance(); $buf = $userGroupDB->import($group_); if (!is_object($buf)) { return 'UserGroup "' . $group_ . '" does not exist'; } break; } return true; }
public static function removeRole($fqdn_, $role_) { Logger::debug('main', "Starting Abstract_Server::removeRole for '{$fqdn_}' removing '{$role_}'"); if (substr($fqdn_, -1) == '.') { $fqdn_ = substr($fqdn_, 0, strlen($fqdn_) - 1); } $a_server = Abstract_Server::load($fqdn_); if (is_object($a_server) == false) { Logger::error('main', "Starting Abstract_Server::removeRole error failed to load server '{$fqdn_}'"); return false; } $roles = $a_server->getAttribute('roles'); if (is_array($roles) == false) { return false; } if (in_array($role_, $roles) == false) { return false; } switch ($role_) { case Server::SERVER_ROLE_APS: $prefs = Preferences::getInstance(); if (!$prefs) { die_error('get Preferences failed', __FILE__, __LINE__); } $slave_server_settings = $prefs->get('general', 'slave_server_settings'); $remove_orphan = (bool) $slave_server_settings['remove_orphan']; Abstract_Liaison::delete('ApplicationServer', NULL, $fqdn_); if ($remove_orphan) { $apps = $a_server->getApplications(); $applicationDB = ApplicationDB::getInstance(); // remove the orphan applications if (is_array($apps)) { foreach ($apps as $an_application) { if ($an_application->isOrphan()) { Logger::debug('main', "Abstract_Server::delete {$an_application} is orphan"); $applicationDB->remove($an_application); } } } } $tm = new Tasks_Manager(); $tm->load_from_server($fqdn_); foreach ($tm->tasks as $a_task) { $tm->remove($a_task->id); } break; case Server::SERVER_ROLE_FS: if (Preferences::moduleIsEnabled('ProfileDB')) { $profiledb = ProfileDB::getInstance(); $folders = $profiledb->importFromServer($fqdn_); foreach ($folders as $a_folder) { $profiledb->remove($a_folder->id); } } if (Preferences::moduleIsEnabled('SharedFolderDB')) { $sharedfolderdb = SharedFolderDB::getInstance(); $folders = $sharedfolderdb->importFromServer($fqdn_); foreach ($folders as $a_folder) { $profiledb->remove($a_folder->id); } } break; // case Server::SERVER_ROLE_GATEWAY: // break; } return true; }
public function buildServersList() { if (!$this->user) { Logger::error('main', 'SessionManagement::buildServersList - User is not authenticated, aborting'); throw_response(AUTH_FAILED); } $serverRoles = $this->getServerRoles(); $this->servers = array(); foreach ($serverRoles as $role) { if (!array_key_exists($role, $this->servers)) { $this->servers[$role] = array(); } switch ($role) { case Server::SERVER_ROLE_APS: $applicationServerTypes = $this->getApplicationServerTypes(); $servers = array(); foreach ($applicationServerTypes as $type) { $buf = $this->user->getAvailableServers($type); if (is_null($buf) || !is_array($buf)) { return false; } $servers = array_merge($servers, $buf); } $slave_server_settings = $this->prefs->get('general', 'slave_server_settings'); if (is_array($slave_server_settings) && array_key_exists('use_max_sessions_limit', $slave_server_settings) && $slave_server_settings['use_max_sessions_limit'] == 1) { foreach ($servers as $k => $server) { if (!isset($server->max_sessions) || $server->max_sessions == 0) { continue; } $total = Abstract_Session::countByServer($server->fqdn); if ($total >= $server->max_sessions) { Logger::warning('main', 'SessionManagement::buildServersList - Server \'' . $server->fqdn . '\' has reached its "max sessions" limit, sessions cannot be launched on it anymore'); unset($servers[$k]); } } } if (count($servers) == 0) { $event = new SessionStart(array('user' => $this->user)); $event->setAttribute('ok', false); $event->setAttribute('error', _('No available server')); $event->emit(); Logger::error('main', 'SessionManagement::buildServersList - No "' . $role . '" server found for User "' . $this->user->getAttribute('login') . '", aborting'); return false; } foreach ($servers as $server) { $this->servers[Server::SERVER_ROLE_APS][$server->fqdn] = array('status' => Session::SESSION_STATUS_CREATED); } break; case Server::SERVER_ROLE_FS: if (get_class($this) != 'SessionManagement_internal') { Logger::error('main', 'SessionManagement::buildServersList - Role "' . $role . '" is not compatible with the current integration mode (' . substr(get_class($this), strlen('SessionManagement_')) . '), aborting'); return false; } $default_settings = $this->user->getSessionSettings('session_settings_defaults'); $enable_profiles = $default_settings['enable_profiles'] == 1 ? true : false; $auto_create_profile = $default_settings['auto_create_profile'] == 1 ? true : false; $start_without_profile = $default_settings['start_without_profile'] == 1 ? true : false; $enable_sharedfolders = $default_settings['enable_sharedfolders'] == 1 ? true : false; $start_without_all_sharedfolders = $default_settings['start_without_all_sharedfolders'] == 1 ? true : false; if ($enable_profiles) { $fileservers = Abstract_Server::load_available_by_role(Server::SERVER_ROLE_FS); if (count($fileservers) > 0) { $profiles = $this->user->getProfiles(); if (!is_array($profiles)) { Logger::error('main', 'SessionManagement::buildServersList - getProfiles() failed for User "' . $this->user->getAttribute('login') . '", aborting'); return false; } if (count($profiles) == 1) { Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" already have a Profile, using it'); $profile = array_pop($profiles); foreach ($fileservers as $fileserver) { if ($fileserver->fqdn != $profile->server) { continue; } if (!array_key_exists($fileserver->fqdn, $this->servers[Server::SERVER_ROLE_FS])) { $this->servers[Server::SERVER_ROLE_FS][$fileserver->fqdn] = array(); } $this->servers[Server::SERVER_ROLE_FS][$fileserver->fqdn][] = array('type' => 'profile', 'server' => $fileserver, 'dir' => $profile->id); break; } } else { Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" does not have a Profile for now, checking for auto-creation'); if ($auto_create_profile) { Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" Profile will be auto-created and used'); $profileDB = ProfileDB::getInstance(); $fileserver = $profileDB->chooseFileServer(); if (!is_object($fileserver)) { Logger::error('main', 'SessionManagement::buildServersList - Auto-creation of Profile for User "' . $this->user->getAttribute('login') . '" failed (unable to get a valid FileServer)'); return false; } $profile = new Profile(); $profile->server = $fileserver->getAttribute('fqdn'); if (!$profileDB->addToServer($profile, $fileserver)) { Logger::error('main', 'SessionManagement::buildServersList - Auto-creation of Profile for User "' . $this->user->getAttribute('login') . '" failed (unable to add the Profile to the FileServer)'); return false; } if (!$profile->addUser($this->user)) { Logger::error('main', 'SessionManagement::buildServersList - Auto-creation of Profile for User "' . $this->user->getAttribute('login') . '" failed (unable to associate the User to the Profile)'); return false; } if (!array_key_exists($fileserver->fqdn, $this->servers[Server::SERVER_ROLE_FS])) { $this->servers[Server::SERVER_ROLE_FS][$fileserver->fqdn] = array(); } $this->servers[Server::SERVER_ROLE_FS][$fileserver->fqdn][] = array('type' => 'profile', 'server' => $fileserver, 'dir' => $profile->id); } else { Logger::debug('main', 'SessionManagement::buildServersList - Auto-creation of Profile for User "' . $this->user->getAttribute('login') . '" disabled, checking for session without Profile'); if (!$start_without_profile) { Logger::error('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" does not have a valid Profile, aborting'); return false; } Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" can start a session without a valid Profile, proceeding'); } } } else { Logger::debug('main', 'SessionManagement::buildServersList - No "' . $role . '" server found for User "' . $this->user->getAttribute('login') . '", checking for session without Profile'); if (!$start_without_profile) { Logger::error('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" does not have a valid Profile, aborting'); return false; } Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" can start a session without a valid Profile, proceeding'); } } if ($enable_sharedfolders) { $sharedfolders = $this->user->getSharedFolders(); if (!is_array($sharedfolders)) { Logger::error('main', 'SessionManagement::buildServersList - getSharedFolders() failed for User "' . $this->user->getAttribute('login') . '", aborting'); return false; } if (count($sharedfolders) > 0) { foreach ($sharedfolders as $sharedfolder) { $fileserver = Abstract_Server::load($sharedfolder->server); if (!$fileserver || !$fileserver->isOnline() || $fileserver->getAttribute('locked')) { Logger::warning('main', 'SessionManagement::buildServersList - Server "' . $sharedfolder->server . '" for SharedFolder "' . $sharedfolder->id . '" is not available'); if (!$start_without_all_sharedfolders) { Logger::error('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" does not have all SharedFolders available, aborting'); return false; } else { Logger::debug('main', 'SessionManagement::buildServersList - User "' . $this->user->getAttribute('login') . '" can start a session without all SharedFolders available, proceeding'); continue; } } if (!array_key_exists($fileserver->fqdn, $this->servers[Server::SERVER_ROLE_FS])) { $this->servers[Server::SERVER_ROLE_FS][$fileserver->fqdn] = array(); } $this->servers[Server::SERVER_ROLE_FS][$fileserver->fqdn][] = array('type' => 'sharedfolder', 'server' => $fileserver, 'dir' => $sharedfolder->id, 'name' => $sharedfolder->name); } } } break; } } return true; }
function server_display_role_preparation_fs($server_) { $ret = array(); if (Preferences::moduleIsEnabled('ProfileDB') == false && Preferences::moduleIsEnabled('SharedFolderDB') == false) { return $ret; } $networkfolders = false; if (Preferences::moduleIsEnabled('SharedFolderDB')) { $sharedfolderdb = SharedFolderDB::getInstance(); $networkfolders = $sharedfolderdb->importFromServer($server_->getAttribute('fqdn')); } $profiles = false; if (Preferences::moduleIsEnabled('ProfileDB')) { $profiledb = ProfileDB::getInstance(); $profiles = $profiledb->importFromServer($server_->getAttribute('fqdn')); } $ret['NetworkFolders'] = array(); $ret['profiles'] = array(); $ret['sharedfolders'] = array(); $ret['used by profiles'] = array(); $ret['used by sharedfolders'] = array(); if (is_array($networkfolders)) { foreach ($networkfolders as $a_networkfolder) { $ret['sharedfolders'][$a_networkfolder->id] = $a_networkfolder; if (isset($ret['used by sharedfolders'][$a_networkfolder->id]) === false) { $ret['used by sharedfolders'][$a_networkfolder->id] = array(); } $groups = $a_networkfolder->getUserGroups(); if (is_array($groups) && count($groups) > 0) { foreach ($groups as $a_group) { $buf = array(); $buf['id'] = $a_group->getUniqueID(); $buf['name'] = $a_group->name; $ret['used by sharedfolders'][$a_networkfolder->id][] = $buf; } } } } if (is_array($profiles)) { foreach ($profiles as $a_networkfolder) { $ret['profiles'][$a_networkfolder->id] = $a_networkfolder; if (isset($ret['used by profiles'][$a_networkfolder->id]) === false) { $ret['used by profiles'][$a_networkfolder->id] = array(); } $users = $a_networkfolder->getUsers(); if (is_array($users) && count($users) > 0) { foreach ($users as $a_user) { $buf = array(); $buf['id'] = $a_user->getAttribute('login'); $buf['name'] = $a_user->getAttribute('displayname'); $ret['used by profiles'][$a_networkfolder->id][] = $buf; } } } } return $ret; }
function list_comments() { global $display; require_once 'modules/Profile/db.php'; $user_id = EClassApi::getParam('user_id'); $user = DB::fetch('SELECT id, user_name FROM account WHERE id="' . $user_id . '"'); $is_admin = false; if (User::is_admin()) { $is_admin = true; } $display->add('is_admin', $is_admin); $limit = ''; $divID = 'comment_list'; $cmd = 'comment_list_pagging'; $item_per_page = 10; if (Url::get('cmd') == $cmd) { $display->add('load_ajax_page', true); } else { $display->add('load_ajax_page', false); } $url_path = WEB_DIR . "ajax.php?act=user&code=comments&user_id=" . $user['id']; $count = ProfileDB::get_total_comment($user['id']); require_once ROOT_PATH . 'core/ECPagging.php'; $paging = ECPagging::AjaxPaging($limit, $count['acount'], $item_per_page, 5, 'comment_page_no', '', false, false, $url_path, $divID); $comments = ProfileDB::get_comments($user['id'], $item_per_page, $limit); $display->add('user_id', $user['id']); $display->add('is_login', (int) User::is_login()); if (User::is_login()) { $display->add('cur_id', (int) User::$current->data['id']); $display->add('cur_user_name', User::$current->data['user_name']); if (User::$current->data['avatar_url'] == '') { $cur_avatar_url = 'style/images/50x50.gif'; } else { $cur_avatar_url = EClassApi::getImageThumb(User::$current->data['avatar_url'], 50, 50, 0, User::$current->data['img_server']); } $display->add('cur_avatar', $cur_avatar_url); } else { $display->add('cur_id', '0'); $display->add('cur_user_name', ''); $display->add('cur_avatar', 'style/images/50x50.gif'); $cur_avatar_url = ""; } $display->add('comments', $comments); $display->add('paging', $paging); $display->add('user_name', User::$current->data['user_name']); $display->output('comment', false, 'Profile'); System::halt(); }