private function build_form() { $picture_yes = '<i class="fa fa-success fa-2x" title="' . LangLoader::get_message('yes', 'common') . '"></i>'; $picture_no = '<i class="fa fa-error fa-2x" title="' . LangLoader::get_message('no', 'common') . '"></i>'; $picture_unknown = '<i class="fa fa-question fa-2x" title="' . LangLoader::get_message('unknown', 'main') . '"></i>'; $default_lang_config = LangsManager::get_lang(LangsManager::get_default_lang())->get_configuration(); $default_theme_config = ThemesManager::get_theme(ThemesManager::get_default_theme())->get_configuration(); $editors = AppContext::get_content_formatting_service()->get_available_editors(); $default_editor = $editors[ContentFormattingConfig::load()->get_default_editor()]; $server_configuration = new ServerConfiguration(); $general_config = GeneralConfig::load(); $server_environment_config = ServerEnvironmentConfig::load(); $sessions_config = SessionsConfig::load(); $maintenance_config = MaintenanceConfig::load(); $url_rewriting_available = false; $url_rewriting_known = true; try { $url_rewriting_available = $server_configuration->has_url_rewriting(); } catch (UnsupportedOperationException $ex) { $url_rewriting_known = false; } $summerization = "---------------------------------System report---------------------------------\n-----------------------------generated by PHPBoost-----------------------------\nSERVER CONFIGURATION-----------------------------------------------------------\nphp version\t\t\t: " . ServerConfiguration::get_phpversion() . "\ndbms version\t\t\t: " . PersistenceContext::get_dbms_utils()->get_dbms_version() . "\ngd library\t\t\t: " . (int) $server_configuration->has_gd_library() . "\nurl rewriting\t\t\t: " . ($url_rewriting_known ? (int) $url_rewriting_available : 'N/A') . "\napcu cache\t\t\t: " . (int) DataStoreFactory::is_apc_available() . "\nPHPBOOST CONFIGURATION---------------------------------------------------------\nphpboost version\t\t: " . Environment::get_phpboost_version() . "\nserver url\t\t\t: " . $general_config->get_site_url() . "\nsite path\t\t\t: " . $general_config->get_site_path() . "\ndefault theme\t\t\t: " . $default_theme_config->get_name() . " (" . LangLoader::get_message('version', 'admin') . " " . $default_theme_config->get_version() . ")\ndefault language\t\t: " . $default_lang_config->get_name() . "\ndefault editor\t\t\t: " . $default_editor . "\nhome page\t\t\t: " . Environment::get_home_page() . "\nurl rewriting\t\t\t: " . (int) $server_environment_config->is_url_rewriting_enabled() . "\napcu cache\t\t\t: " . (int) DataStoreFactory::is_apc_enabled() . "\noutput gzip\t\t\t: " . (int) $server_environment_config->is_output_gziping_enabled() . "\nsession cookie name\t\t: " . $sessions_config->get_cookie_name() . "\nsession duration\t\t: " . $sessions_config->get_session_duration() . "\nactive session duration\t\t: " . $sessions_config->get_active_session_duration() . "\nDIRECTORIES AUTHORIZATIONS-----------------------------------------------------\n"; $form = new HTMLForm('system-report', '', false); $this->get_advises($form); $fieldset = new FormFieldsetHTML('report', $this->admin_lang['server']); $form->add_fieldset($fieldset); $fieldset->add_field(new FormFieldFree('php_version', $this->admin_lang['php_version'], ServerConfiguration::get_phpversion())); $fieldset->add_field(new FormFieldFree('dbms_version', $this->admin_lang['dbms_version'], PersistenceContext::get_dbms_utils()->get_dbms_version())); $fieldset->add_field(new FormFieldFree('gd_library', $this->admin_lang['gd_library'], $server_configuration->has_gd_library() ? $picture_yes : $picture_no)); $fieldset->add_field(new FormFieldFree('url_rewriting', $this->admin_lang['url_rewriting'], $url_rewriting_known ? $url_rewriting_available ? $picture_yes : $picture_no : $picture_unknown)); $fieldset->add_field(new FormFieldFree('apcu_cache', LangLoader::get_message('apcu_cache', 'admin-cache-common'), DataStoreFactory::is_apc_available() ? $picture_yes : $picture_no)); $fieldset = new FormFieldsetHTML('report', $this->admin_lang['phpboost_config']); $form->add_fieldset($fieldset); $fieldset->add_field(new FormFieldFree('kernel_version', $this->admin_lang['kernel_version'], Environment::get_phpboost_version())); $fieldset->add_field(new FormFieldFree('site_url', LangLoader::get_message('advanced-config.site_url', 'admin-config-common'), $general_config->get_site_url())); $fieldset->add_field(new FormFieldFree('site_path', LangLoader::get_message('advanced-config.site_path', 'admin-config-common'), $general_config->get_site_path())); $fieldset->add_field(new FormFieldFree('default_theme', LangLoader::get_message('general-config.default_theme', 'admin-config-common'), $default_theme_config->get_name() . " (" . LangLoader::get_message('version', 'admin') . " " . $default_theme_config->get_version() . ")")); $fieldset->add_field(new FormFieldFree('default_language', LangLoader::get_message('general-config.default_language', 'admin-config-common'), $default_lang_config->get_name())); $fieldset->add_field(new FormFieldFree('default_editor', LangLoader::get_message('content.config.default-formatting-language', 'admin-contents-common'), $default_editor)); $fieldset->add_field(new FormFieldFree('start_page', LangLoader::get_message('general-config.start_page', 'admin-config-common'), Environment::get_home_page())); $fieldset->add_field(new FormFieldFree('phpboost_url_rewriting', $this->admin_lang['url_rewriting'], $server_environment_config->is_url_rewriting_enabled() ? $picture_yes : $picture_no)); $fieldset->add_field(new FormFieldFree('phpboost_apcu_cache', LangLoader::get_message('apcu_cache', 'admin-cache-common'), DataStoreFactory::is_apc_enabled() ? $picture_yes : $picture_no)); $fieldset->add_field(new FormFieldFree('output_gz', $this->admin_lang['output_gz'], $server_environment_config->is_output_gziping_enabled() ? $picture_yes : $picture_no)); $fieldset->add_field(new FormFieldFree('cookie_name', LangLoader::get_message('advanced-config.cookie-name', 'admin-config-common'), $sessions_config->get_cookie_name())); $fieldset->add_field(new FormFieldFree('session_length', LangLoader::get_message('advanced-config.cookie-duration', 'admin-config-common'), $sessions_config->get_session_duration())); $fieldset->add_field(new FormFieldFree('session_guest_length', LangLoader::get_message('advanced-config.active-session-duration', 'admin-config-common'), $sessions_config->get_active_session_duration())); $fieldset = new FormFieldsetHTML('directories_auth', $this->admin_lang['directories_auth']); $form->add_fieldset($fieldset); $directories_summerization = ''; foreach (PHPBoostFoldersPermissions::get_permissions() as $key => $folder) { $fieldset->add_field(new FormFieldFree(str_replace('/', '_', $key), $key, $folder->is_writable() ? $picture_yes : $picture_no)); $directories_summerization .= $key . str_repeat(' ', 5 - strlen($key) / 8) . ": " . (int) $folder->is_writable() . "\n"; } $fieldset = new FormFieldsetHTML('summerization', $this->admin_lang['system_report_summerization']); $form->add_fieldset($fieldset); $fieldset->add_field(new FormFieldLabel($this->admin_lang['system_report_summerization_explain'])); $fieldset->add_field(new FormFieldMultiLineTextEditor('summerization', '', $summerization . $directories_summerization, array('rows' => 20, 'cols' => 15, 'class' => 'system-report'))); $this->form = $form; }
public static function __static() { $config = SessionsConfig::load(); self::$DATA_COOKIE_NAME = $config->get_cookie_name() . '_data'; self::$AUTOCONNECT_COOKIE_NAME = $config->get_cookie_name() . '_autoconnect'; self::$request = AppContext::get_request(); self::$response = AppContext::get_response(); }
function Add_msg($idtopic, $idcat, $contents, $title, $last_page, $last_page_rewrite, $new_topic = false) { global $LANG; ##### Insertion message ##### $last_timestamp = time(); $result = PersistenceContext::get_querier()->insert(PREFIX . 'forum_msg', array('idtopic' => $idtopic, 'user_id' => AppContext::get_current_user()->get_id(), 'contents' => FormatingHelper::strparse($contents), 'timestamp' => $last_timestamp, 'timestamp_edit' => 0, 'user_id_edit' => 0, 'user_ip' => AppContext::get_request()->get_ip_address())); $last_msg_id = $result->get_last_inserted_id(); //Topic PersistenceContext::get_querier()->inject("UPDATE " . PREFIX . "forum_topics SET " . ($new_topic ? '' : 'nbr_msg = nbr_msg + 1, ') . "last_user_id = '" . AppContext::get_current_user()->get_id() . "', last_msg_id = '" . $last_msg_id . "', last_timestamp = '" . $last_timestamp . "' WHERE id = '" . $idtopic . "'"); //On met à jour le last_topic_id dans la catégorie dans le lequel le message a été posté PersistenceContext::get_querier()->update(ForumSetup::$forum_cats_table, array('last_topic_id' => $idtopic), 'WHERE id = :id', array('id' => $idcat)); //Mise à jour du nombre de messages du membre. PersistenceContext::get_querier()->inject("UPDATE " . DB_TABLE_MEMBER . " SET posted_msg = posted_msg + 1 WHERE user_id = '" . AppContext::get_current_user()->get_id() . "'"); //On marque le topic comme lu. mark_topic_as_read($idtopic, $last_msg_id, $last_timestamp); ##### Gestion suivi du sujet mp/mail ##### if (!$new_topic) { //Message précédent ce nouveau message. $previous_msg_id = 0; try { $previous_msg_id = PersistenceContext::get_querier()->get_column_value(PREFIX . "forum_msg", 'MAX(id)', 'WHERE idtopic = :idtopic AND id < :id', array('idtopic' => $idtopic, 'id' => $last_msg_id)); } catch (RowNotFoundException $e) { } $title_subject = TextHelper::html_entity_decode($title); $title_subject_pm = $title_subject; if (AppContext::get_current_user()->get_id() > 0) { $pseudo = ''; try { $pseudo = PersistenceContext::get_querier()->get_column_value(DB_TABLE_MEMBER, 'display_name', 'WHERE user_id = :id', array('id' => AppContext::get_current_user()->get_id())); } catch (RowNotFoundException $e) { } $pseudo_pm = '<a href="' . UserUrlBuilder::profile(AppContext::get_current_user()->get_id())->rel() . '">' . $pseudo . '</a>'; } else { $pseudo = $LANG['guest']; $pseudo_pm = $LANG['guest']; } $next_msg_link = '/forum/topic' . url('.php?id=' . $idtopic . $last_page, '-' . $idtopic . $last_page_rewrite . '.php') . ($previous_msg_id ? '#m' . $previous_msg_id : ''); $preview_contents = substr($contents, 0, 300); //Récupération des membres suivant le sujet. $max_time = time() - SessionsConfig::load()->get_active_session_duration(); $result = PersistenceContext::get_querier()->select("SELECT m.user_id, m.display_name, m.email, tr.pm, tr.mail, v.last_view_id\n\t\t\tFROM " . PREFIX . "forum_track tr\n\t\t\tLEFT JOIN " . DB_TABLE_MEMBER . " m ON m.user_id = tr.user_id\n\t\t\tLEFT JOIN " . PREFIX . "forum_view v ON v.idtopic = :idtopic AND v.user_id = tr.user_id\n\t\t\tWHERE tr.idtopic = :idtopic AND v.last_view_id IS NOT NULL AND m.user_id != :user_id", array('idtopic' => $idtopic, 'user_id' => AppContext::get_current_user()->get_id())); while ($row = $result->fetch()) { //Envoi un Mail à ceux dont le last_view_id est le message précedent. if ($row['last_view_id'] == $previous_msg_id && $row['mail'] == '1') { AppContext::get_mail_service()->send_from_properties($row['email'], $LANG['forum_mail_title_new_post'], sprintf($LANG['forum_mail_new_post'], $row['display_name'], $title_subject, AppContext::get_current_user()->get_display_name(), $preview_contents, HOST . DIR . $next_msg_link, HOST . DIR . '/forum/action.php?ut=' . $idtopic . '&trt=1', 1)); } //Envoi un MP à ceux dont le last_view_id est le message précedent. if ($row['last_view_id'] == $previous_msg_id && $row['pm'] == '1') { $content = sprintf($LANG['forum_mail_new_post'], $row['display_name'], $title_subject_pm, AppContext::get_current_user()->get_display_name(), $preview_contents, '<a href="' . $next_msg_link . '">' . $next_msg_link . '</a>', '<a href="/forum/action.php?ut=' . $idtopic . '&trt=2">/forum/action.php?ut=' . $idtopic . '&trt=2</a>'); PrivateMsg::start_conversation($row['user_id'], $LANG['forum_mail_title_new_post'], nl2br($content), '-1', PrivateMsg::SYSTEM_PM); } } $result->dispose(); forum_generate_feeds(); //Regénération du flux rss. } return $last_msg_id; }
public function __construct() { $this->user_id = 1; $this->session_id = '0123456789'; $this->token = '42'; $this->expiry = time() + SessionsConfig::load()->get_session_duration(); $this->ip = '0000:0000:0000:0000:0000:0000:0000:0001'; $user_accounts_config = UserAccountsConfig::load(); $this->cached_data = array('level' => User::ADMIN_LEVEL, 'login' => 'Admin', 'display_name' => 'Admin'); $this->data = array(); }
function forum_list_user_online($condition) { list($total_admin, $total_modo, $total_member, $total_visit, $users_list) = array(0, 0, 0, 0, ''); $result = PersistenceContext::get_querier()->select("SELECT s.user_id, m.level, m.display_name, m.groups\n\tFROM " . DB_TABLE_SESSIONS . " s \n\tLEFT JOIN " . DB_TABLE_MEMBER . " m ON m.user_id = s.user_id \n\tWHERE s.timestamp > :timestamp " . $condition . "\n\tORDER BY s.timestamp DESC", array('timestamp' => time() - SessionsConfig::load()->get_active_session_duration())); while ($row = $result->fetch()) { $group_color = User::get_group_color($row['groups'], $row['level']); switch ($row['level']) { case -1: case '': $total_visit++; break; case 0: $total_member++; break; case 1: $total_modo++; break; case 2: $total_admin++; break; } $coma = !empty($users_list) && $row['level'] != -1 ? ', ' : ''; $users_list .= !empty($row['display_name']) && $row['level'] != -1 ? $coma . '<a href="' . UserUrlBuilder::profile($row['user_id'])->rel() . '" class="' . UserService::get_level_class($row['level']) . '"' . (!empty($group_color) ? ' style="color:' . $group_color . '"' : '') . '>' . $row['display_name'] . '</a>' : ''; } $result->dispose(); $total = $total_admin + $total_modo + $total_member + $total_visit; if (empty($total)) { $current_user = AppContext::get_current_user(); if ($current_user->get_level() != User::VISITOR_LEVEL) { $group_color = User::get_group_color($current_user->get_groups(), $current_user->get_level(), true); switch ($current_user->get_level()) { case 0: $total_member++; break; case 1: $total_modo++; break; case 2: $total_admin++; break; } $users_list .= '<a href="' . UserUrlBuilder::profile($current_user->get_id())->rel() . '" class="' . UserService::get_level_class($current_user->get_level()) . '"' . (!empty($group_color) ? ' style="color:' . $group_color . '"' : '') . '>' . $current_user->get_display_name() . '</a>'; } else { $total_visit++; } $total++; } return array($users_list, $total_admin, $total_modo, $total_member, $total_visit, $total); }
public function build_view() { $active_sessions_start_time = time() - SessionsConfig::load()->get_active_session_duration(); $number_users_online = OnlineService::get_number_users_connected('WHERE user_id <> -1 AND timestamp > :time', array('time' => $active_sessions_start_time)); $pagination = $this->get_pagination($number_users_online); $users = OnlineService::get_online_users('WHERE s.user_id <> -1 AND s.timestamp > :time ORDER BY ' . $this->config->get_display_order_request() . ' LIMIT :number_items_per_page OFFSET :display_from', array('number_items_per_page' => $pagination->get_number_items_per_page(), 'display_from' => $pagination->get_display_from(), 'time' => $active_sessions_start_time)); foreach ($users as $user) { if ($user->get_id() == AppContext::get_current_user()->get_id()) { $user->set_location_script(OnlineUrlBuilder::home()->rel()); $user->set_location_title($this->lang['online']); $user->set_last_update(new Date()); } $group_color = User::get_group_color($user->get_groups(), $user->get_level(), true); if ($user->get_level() != User::VISITOR_LEVEL) { $this->view->assign_block_vars('users', array('C_AVATAR' => $user->has_avatar(), 'C_GROUP_COLOR' => !empty($group_color), 'PSEUDO' => $user->get_display_name(), 'LEVEL' => UserService::get_level_lang($user->get_level()), 'LEVEL_CLASS' => UserService::get_level_class($user->get_level()), 'GROUP_COLOR' => $group_color, 'TITLE_LOCATION' => $user->get_location_title(), 'LAST_UPDATE' => $user->get_last_update()->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE), 'U_PROFILE' => UserUrlBuilder::profile($user->get_id())->rel(), 'U_LOCATION' => $user->get_location_script(), 'U_AVATAR' => $user->get_avatar())); } } $this->view->put_all(array('C_PAGINATION' => $pagination->has_several_pages(), 'C_USERS' => count($users), 'PAGINATION' => $pagination->display())); return $this->view; }
public function get_menu_content() { $tpl = new FileTemplate('online/OnlineModuleMiniMenu.tpl'); $lang = LangLoader::get('common', 'online'); $tpl->add_lang($lang); $online_config = OnlineConfig::load(); $condition = 'WHERE s.timestamp > :time ORDER BY ' . $online_config->get_display_order_request(); $parameters = array('time' => time() - SessionsConfig::load()->get_active_session_duration()); $users = OnlineService::get_online_users($condition, $parameters); foreach ($users as $user) { $this->incremente_level($user); if ($this->total_users <= $online_config->get_number_member_displayed()) { $group_color = User::get_group_color($user->get_groups(), $user->get_level(), true); if ($user->get_level() != User::VISITOR_LEVEL) { $tpl->assign_block_vars('users', array('U_PROFILE' => UserUrlBuilder::profile($user->get_id())->rel(), 'PSEUDO' => TextHelper::wordwrap_html($user->get_display_name(), 19), 'LEVEL_CLASS' => UserService::get_level_class($user->get_level()), 'C_GROUP_COLOR' => !empty($group_color), 'GROUP_COLOR' => $group_color)); } } } $main_lang = LangLoader::get('main'); $tpl->put_all(array('C_MORE_USERS' => $this->total_users > $online_config->get_number_member_displayed(), 'L_VISITOR' => $this->number_visitor > 1 ? $main_lang['guest_s'] : $main_lang['guest'], 'L_MEMBER' => $this->number_member > 1 ? $main_lang['member_s'] : $main_lang['member'], 'L_MODO' => $this->number_moderator > 1 ? $main_lang['modo_s'] : $main_lang['modo'], 'L_ADMIN' => $this->number_administrator > 1 ? $main_lang['admin_s'] : $main_lang['admin'], 'L_USERS_ONLINE' => $this->total_users > 1 ? $lang['online_users'] : $lang['online_user'], 'L_TOTAL' => $main_lang['total'], 'TOTAL_USERS_CONNECTED' => $this->total_users, 'TOTAL_VISITOR_CONNECTED' => $this->number_visitor, 'TOTAL_MEMBER_CONNECTED' => $this->number_member, 'TOTAL_MODERATOR_CONNECTED' => $this->number_moderator, 'TOTAL_ADMINISTRATOR_CONNECTED' => $this->number_administrator)); return $tpl->render(); }
private function save_in_cookie() { $expiry = time() + SessionsConfig::load()->get_autoconnect_duration(); $cookie = new HTTPCookie(Session::$AUTOCONNECT_COOKIE_NAME, $this->get_serialized_content(), $expiry); AppContext::get_response()->set_cookie($cookie); }
foreach ($displayed_extended_fields as $field_type) { $extended_fields_to_recover_list .= 'ext_field.' . $field_type . ', '; } $tpl = new FileTemplate('forum/forum_membermsg.tpl'); $authorized_categories = ForumService::get_authorized_categories(Category::ROOT_CATEGORY); $row = PersistenceContext::get_querier()->select_single_row_query("SELECT COUNT(*) as nbr_msg\n\tFROM " . PREFIX . "forum_msg msg\n\tLEFT JOIN " . PREFIX . "forum_topics t ON msg.idtopic = t.id\n\tWHERE msg.user_id = :user_id AND t.idcat IN :authorized_categories", array('authorized_categories' => $authorized_categories, 'user_id' => $view_msg)); $nbr_msg = $row['nbr_msg']; $page = AppContext::get_request()->get_getint('p', 1); $pagination = new ModulePagination($page, $nbr_msg, $_NBR_ELEMENTS_PER_PAGE, Pagination::LIGHT_PAGINATION); $pagination->set_url(new Url('/forum/membermsg.php?id=' . $view_msg . '&p=%d')); if ($pagination->current_page_is_empty() && $page > 1) { $error_controller = PHPBoostErrors::unexisting_page(); DispatchManager::redirect($error_controller); } $tpl->put_all(array('C_PAGINATION' => $pagination->has_several_pages(), 'FORUM_NAME' => $config->get_forum_name() . ' : ' . $LANG['show_member_msg'], 'PAGINATION' => $pagination->display(), 'L_BACK' => $LANG['back'], 'L_VIEW_MSG_USER' => $LANG['show_member_msg'], 'L_FORUM_INDEX' => $LANG['forum_index'], 'U_FORUM_VIEW_MSG' => url('.php?id=' . $view_msg))); $result = PersistenceContext::get_querier()->select("SELECT msg.id, msg.user_id, msg.idtopic, msg.timestamp, msg.timestamp_edit, m.groups, t.title, t.status, t.idcat, c.name, m.display_name, m.level, m.email, m.show_email, m.registration_date AS registered, m.posted_msg, m.warning_percentage, m.delay_banned, s.user_id AS connect, msg.contents, ext_field.user_avatar, m.posted_msg, ext_field.user_sign, " . $extended_fields_to_recover_list . "m.warning_percentage, m.delay_readonly, m.delay_banned \n\tFROM " . PREFIX . "forum_msg msg\n\tLEFT JOIN " . PREFIX . "forum_topics t ON msg.idtopic = t.id\n\tLEFT JOIN " . ForumSetup::$forum_cats_table . " c ON c.id = t.idcat\n\tLEFT JOIN " . DB_TABLE_MEMBER . " m ON m.user_id = :user_id\n\tLEFT JOIN " . DB_TABLE_MEMBER_EXTENDED_FIELDS . " ext_field ON ext_field.user_id = msg.user_id\n\tLEFT JOIN " . DB_TABLE_SESSIONS . " s ON s.user_id = msg.user_id AND s.timestamp > :timestamp\n\tWHERE msg.user_id = :id AND t.idcat IN :authorized_categories\n\tORDER BY msg.id DESC\n\tLIMIT :number_items_per_page OFFSET :display_from", array('id' => $view_msg, 'user_id' => $view_msg, 'timestamp' => time() - SessionsConfig::load()->get_active_session_duration(), 'authorized_categories' => $authorized_categories, 'number_items_per_page' => $pagination->get_number_items_per_page(), 'display_from' => $pagination->get_display_from())); while ($row = $result->fetch()) { //On encode l'url pour un éventuel rewriting, c'est une opération assez gourmande $rewrited_cat_title = ServerEnvironmentConfig::load()->is_url_rewriting_enabled() ? '+' . Url::encode_rewrite($row['name']) : ''; //On encode l'url pour un éventuel rewriting, c'est une opération assez gourmande $rewrited_title = ServerEnvironmentConfig::load()->is_url_rewriting_enabled() ? '+' . Url::encode_rewrite($row['title']) : ''; //Ajout du marqueur d'édition si activé. $edit_mark = $row['timestamp_edit'] > 0 && $config->is_edit_mark_enabled() ? '<span class="edit-pseudo">' . $LANG['edit_by'] . ' <a href="' . UserUrlBuilder::profile($row['user_id_edit'])->rel() . '">' . $row['login_edit'] . '</a> ' . $LANG['on'] . ' ' . Date::to_format($row['timestamp_edit'], Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE) . '</span><br />' : ''; $group_color = User::get_group_color($row['groups'], $row['level']); //Rang de l'utilisateur. $user_rank = $row['level'] === '0' ? $LANG['member'] : $LANG['guest']; $user_group = $user_rank; $user_rank_icon = ''; if ($row['level'] === '2') { $user_rank = $ranks_cache[-2]['name']; $user_group = $user_rank;
private static function update_existing_session($user_id) { $columns = array('timestamp' => time() + SessionsConfig::load()->get_session_duration(), 'ip' => AppContext::get_request()->get_ip_address()); $parameters = array('user_id' => $user_id); $condition = 'WHERE user_id=:user_id'; PersistenceContext::get_querier()->update(DB_TABLE_SESSIONS, $columns, $condition, $parameters); }
$com_pseudo = '<span style="font-style:italic;">' . (!empty($row['display_name']) ? TextHelper::wordwrap_html($row['display_name'], 13) : $LANG['guest']) . '</span>'; } $tpl->assign_block_vars('comments_list', array('CONTENT' => FormatingHelper::second_parse($row['message']), 'U_PSEUDO' => $com_pseudo, 'U_LINK' => Url::to_rel($row['path']) . '#com' . $row['id'])); $i++; } $result->dispose(); //Advises $advises_form = new HTMLForm('advises_list', '', false); AdminServerSystemReportController::get_advises($advises_form); //Header logo $theme = ThemesManager::get_theme(AppContext::get_current_user()->get_theme()); $customize_interface = $theme->get_customize_interface(); $header_logo_path = $customize_interface->get_header_logo_path(); $tpl->put_all(array('L_QUICK_ACCESS' => $LANG['quick_access'], 'L_ADD_CONTENT' => $LANG['add_content'], 'L_MODULES_MANAGEMENT' => $LANG['modules_management'], 'L_ADD_ARTICLES' => $LANG['add_articles'], 'L_ADD_NEWS' => $LANG['add_news'], 'L_CUSTOMIZE_SITE' => $LANG['customize_site'], 'L_ADD_TEMPLATE' => $LANG['add_template'], 'L_MENUS_MANAGEMENT' => $LANG['menus_management'], 'L_CUSTOMIZE_TEMPLATE' => $LANG['customize_template'], 'L_SITE_MANAGEMENT' => $LANG['site_management'], 'L_GENERAL_CONFIG' => $LANG['general_config'], 'L_EMPTY_CACHE' => $LANG['empty_cache'], 'L_SAVE_DATABASE' => $LANG['save_database'], 'L_WELCOME_TITLE' => $LANG['welcome_title'], 'L_WELCOME_DESC' => $LANG['welcome_desc'], 'WRITING_PAD_CONTENT' => WritingPadConfig::load()->get_content(), 'C_HEADER_LOGO' => !empty($header_logo_path), 'HEADER_LOGO' => Url::to_rel($header_logo_path), 'C_NO_COM' => $i == 0, 'C_UNREAD_ALERTS' => (bool) AdministratorAlertService::get_number_unread_alerts(), 'L_INDEX_ADMIN' => $LANG['administration'], 'L_ADMIN_ALERTS' => $LANG['administrator_alerts'], 'L_NO_UNREAD_ALERT' => $LANG['no_unread_alert'], 'L_UNREAD_ALERT' => $LANG['unread_alerts'], 'L_DISPLAY_ALL_ALERTS' => $LANG['display_all_alerts'], 'L_ADMINISTRATOR_ALERTS' => $LANG['administrator_alerts'], 'L_QUICK_LINKS' => $LANG['quick_links'], 'L_ACTION_USERS_MANAGEMENT' => $LANG['action.members_management'], 'L_ACTION_MENUS_MANAGEMENT' => $LANG['action.menus_management'], 'L_ACTION_MODULES_MANAGEMENT' => $LANG['action.modules_management'], 'L_ACTION_THEMES_MANAGEMENT' => $LANG['action.themes_management'], 'L_ACTION_LANGS_MANAGEMENT' => $LANG['action.langs_management'], 'L_NO_COMMENT' => LangLoader::get_message('no_item_now', 'common'), 'L_LAST_COMMENTS' => $LANG['last_comments'], 'L_VIEW_ALL_COMMENTS' => $LANG['view_all_comments'], 'L_WRITING_PAD' => $LANG['writing_pad'], 'L_STATS' => $LANG['stats'], 'L_USER_ONLINE' => $LANG['user_online'], 'L_USER_IP' => $LANG['user_ip'], 'L_LOCALISATION' => $LANG['localisation'], 'L_LAST_UPDATE' => $LANG['last_update'], 'L_WEBSITE_UPDATES' => $LANG['website_updates'], 'L_BY' => $LANG['by'], 'L_UPDATE' => $LANG['update'], 'L_RESET' => $LANG['reset'], 'ADVISES' => $advises_form->display())); //Liste des personnes en lignes. $result = PersistenceContext::get_querier()->select("SELECT s.user_id, s.ip, s.timestamp, s.location_script, s.location_title, m.display_name, m.groups, m.level\nFROM " . DB_TABLE_SESSIONS . " s\nLEFT JOIN " . DB_TABLE_MEMBER . " m ON s.user_id = m.user_id\nWHERE s.timestamp > :timestamp\nORDER BY s.timestamp DESC", array('timestamp' => time() - SessionsConfig::load()->get_active_session_duration())); while ($row = $result->fetch()) { //On vérifie que la session ne correspond pas à un robot. $robot = Robots::get_robot_by_ip($row['ip']); switch ($row['level']) { case User::MEMBER_LEVEL: $class = 'member'; break; case User::MODERATOR_LEVEL: $class = 'modo'; break; case User::ADMIN_LEVEL: $class = 'admin'; break; } if (!empty($robot)) {
if ($pagination->current_page_is_empty() && $page > 1) { $error_controller = PHPBoostErrors::unexisting_page(); DispatchManager::redirect($error_controller); } $tpl->assign_block_vars('pm', array('C_PAGINATION' => $pagination->has_several_pages(), 'PAGINATION' => $pagination->display(), 'U_PM_BOX' => '<a href="pm.php' . '">' . $LANG['pm_box'] . '</a>', 'U_TITLE_CONVERS' => '<a href="pm' . url('.php?id=' . $pm_id_get, '-0-' . $pm_id_get . '.php') . '">' . $convers['title'] . '</a>')); $tpl->put_all(array('L_REQUIRE_MESSAGE' => $LANG['require_text'], 'L_REQUIRE_TITLE' => $LANG['require_title'], 'L_DELETE_MESSAGE' => $LANG['alert_delete_msg'], 'L_PRIVATE_MESSAGE' => $LANG['private_message'], 'L_RESPOND' => $LANG['respond'], 'L_SUBMIT' => $LANG['submit'], 'L_PREVIEW' => $LANG['preview'], 'L_EDIT' => LangLoader::get_message('edit', 'common'), 'L_DELETE' => LangLoader::get_message('delete', 'common'), 'L_RESET' => $LANG['reset'])); //Message non lu par autre membre que user_id view_status => 0. //Message lu par autre membre que user_id view_status => 1. $is_guest_in_convers = false; $page = retrieve(GET, 'p', 0); //Redéfinition de la variable $page pour prendre en compte les redirections. $quote_last_msg = $page > 1 ? 1 : 0; //On enlève 1 au limite si on est sur une page > 1, afin de récupérer le dernier msg de la page précédente. $i = 0; $j = 0; $result = PersistenceContext::get_querier()->select("SELECT msg.id, msg.user_id, msg.timestamp, msg.view_status, m.display_name, m.level, m.email, m.show_email, m.registration_date AS registered, ext_field.user_avatar, m.posted_msg, m.warning_percentage, m.delay_banned, m.groups, s.user_id AS connect, msg.contents\n\tFROM " . DB_TABLE_PM_MSG . " msg\n\tLEFT JOIN " . DB_TABLE_MEMBER . " m ON m.user_id = msg.user_id\n\tLEFT JOIN " . DB_TABLE_MEMBER_EXTENDED_FIELDS . " ext_field ON ext_field.user_id = msg.user_id\n\tLEFT JOIN " . DB_TABLE_SESSIONS . " s ON s.user_id = msg.user_id AND s.timestamp > :timestamp AND s.user_id <> -1\n\tWHERE msg.idconvers = :idconvers\n\tORDER BY msg.timestamp\n\tLIMIT :number_items_per_page OFFSET :display_from", array('timestamp' => time() - SessionsConfig::load()->get_active_session_duration(), 'idconvers' => $pm_id_get, 'number_items_per_page' => $_NBR_ELEMENTS_PER_PAGE + $quote_last_msg, 'display_from' => $pagination->get_display_from() - $quote_last_msg)); while ($row = $result->fetch()) { $row['user_id'] = (int) $row['user_id']; $is_admin = $row['user_id'] === -1; if ($is_admin) { $row['level'] = 2; } if (!$is_guest_in_convers) { $is_guest_in_convers = empty($row['display_name']); } //Avatar $user_avatar = !empty($row['user_avatar']) ? Url::to_rel($row['user_avatar']) : ($user_accounts_config->is_default_avatar_enabled() ? Url::to_rel('/templates/' . $current_user->get_theme() . '/images/' . $user_accounts_config->get_default_avatar_name()) : ''); //Reprise du dernier message de la page précédente. $row['contents'] = $quote_last_msg == 1 && $i == 0 ? '<span class="text-strong">' . $LANG['quote_last_msg'] . '</span><br /><br />' . $row['contents'] : $row['contents']; $i++; $group_color = User::get_group_color($row['groups'], $row['level']);
/** * @desc Return the array containing the result's data list * @param &string[][] $args The array containing the result's id list * @return string[] The array containing the result's data list */ public function compute_search_results($args) { $results_data = array(); $results =& $args['results']; $nb_results = count($results); $ids = array(); for ($i = 0; $i < $nb_results; $i++) { $ids[] = $results[$i]['id_content']; } $request = "\n\t\tSELECT\n\t\t\tmsg.id AS msg_id,\n\t\t\tmsg.user_id AS user_id,\n\t\t\tmsg.idtopic AS topic_id,\n\t\t\tmsg.timestamp AS date,\n\t\t\tt.title AS title,\n\t\t\tm.display_name AS login,\n\t\t\text_field.user_avatar AS avatar,\n\t\t\ts.user_id AS connect,\n\t\t\tmsg.contents AS contents\n\t\tFROM " . PREFIX . "forum_msg msg\n\t\tLEFT JOIN " . DB_TABLE_SESSIONS . " s ON s.user_id = msg.user_id AND s.timestamp > '" . (time() - SessionsConfig::load()->get_active_session_duration()) . "' AND s.user_id != -1\n\t\tLEFT JOIN " . DB_TABLE_MEMBER . " m ON m.user_id = msg.user_id\n\t\tLEFT JOIN " . DB_TABLE_MEMBER_EXTENDED_FIELDS . " ext_field ON ext_field.user_id = msg.user_id\n\t\tJOIN " . PREFIX . "forum_topics t ON t.id = msg.idtopic\n\t\tWHERE msg.id IN (" . implode(',', $ids) . ")\n\t\tGROUP BY t.id"; $result = $this->db_querier->select($request); while ($row = $result->fetch()) { $results_data[] = $row; } $result->dispose(); return $results_data; }
private function save() { $this->general_config->set_site_url($this->form->get_value('site_url')); $this->general_config->set_site_path($this->form->get_value('site_path')); $this->general_config->set_site_timezone($this->form->get_value('site_timezone')->get_raw_value()); GeneralConfig::save(); $this->sessions_config->set_cookie_name($this->form->get_value('cookie_name')); $this->sessions_config->set_session_duration($this->form->get_value('session_duration')); $this->sessions_config->set_active_session_duration($this->form->get_value('active_session_duration')); SessionsConfig::save(); if (!$this->form->field_is_disabled('url_rewriting_enabled')) { $this->server_environment_config->set_url_rewriting_enabled($this->form->get_value('url_rewriting_enabled')); } $this->server_environment_config->set_htaccess_manual_content($this->form->get_value('htaccess_manual_content')); $robots_file = new File(PATH_TO_ROOT . '/robots.txt'); $robots_file->write($this->form->get_value('robots_content')); if (!$this->form->field_is_disabled('output_gziping_enabled')) { $this->server_environment_config->set_output_gziping_enabled($this->form->get_value('output_gziping_enabled')); } ServerEnvironmentConfig::save(); $this->clear_cache(); if ($this->form->get_value('debug_mode_enabled')) { $options = array(); if ($this->form->get_value('debug_mode_type')->get_raw_value() == '1') { $options[Debug::STRICT_MODE] = true; } if ($this->form->get_value('display_database_query_enabled')) { $options[Debug::DISPLAY_DATABASE_QUERY] = true; } Debug::enabled_debug_mode($options); } else { Debug::disable_debug_mode(); } HtaccessFileCache::regenerate(); }
//Création du tableau des rangs. $array_ranks = array(-1 => $LANG['guest_s'], 0 => $LANG['member_s'], 1 => $LANG['modo_s'], 2 => $LANG['admin_s']); $extended_fields_cache = ExtendedFieldsCache::load(); $displayed_extended_fields = $extended_fields_cache->get_websites_or_emails_extended_field_field_types(); $extended_fields_to_recover_list = ''; foreach ($displayed_extended_fields as $field_type) { $extended_fields_to_recover_list .= 'ext_field.' . $field_type . ', '; } list($track, $track_pm, $track_mail, $poll_done) = array(false, false, false, false); $ranks_cache = ForumRanksCache::load()->get_ranks(); //Récupère les rangs en cache. $quote_last_msg = $page > 1 ? 1 : 0; //On enlève 1 au limite si on est sur une page > 1, afin de récupérer le dernier msg de la page précédente. $i = 0; $j = 0; $result = PersistenceContext::get_querier()->select("SELECT msg.id, msg.timestamp, msg.timestamp_edit, msg.user_id_edit, m.user_id, p.question, p.answers, p.voter_id, p.votes, p.type, m.display_name as login, m.level, m.groups, m.email, m.show_email, m.registration_date AS registered, ext_field.user_avatar, m.posted_msg, ext_field.user_sign, " . $extended_fields_to_recover_list . "m.warning_percentage, m.delay_readonly, m.delay_banned, m2.display_name as login_edit, s.user_id AS connect, tr.id AS trackid, tr.pm as trackpm, tr.track AS track, tr.mail AS trackmail, msg.contents\nFROM " . PREFIX . "forum_msg msg\nLEFT JOIN " . PREFIX . "forum_poll p ON p.idtopic = :idtopic\nLEFT JOIN " . DB_TABLE_MEMBER . " m ON m.user_id = msg.user_id\nLEFT JOIN " . DB_TABLE_MEMBER . " m2 ON m2.user_id = msg.user_id_edit\nLEFT JOIN " . DB_TABLE_MEMBER_EXTENDED_FIELDS . " ext_field ON ext_field.user_id = msg.user_id\nLEFT JOIN " . PREFIX . "forum_track tr ON tr.idtopic = :idtopic AND tr.user_id = :user_id\nLEFT JOIN " . DB_TABLE_SESSIONS . " s ON s.user_id = msg.user_id AND s.timestamp > :timestamp AND s.user_id != -1\nWHERE msg.idtopic = :idtopic\nORDER BY msg.timestamp \nLIMIT :number_items_per_page OFFSET :display_from", array('idtopic' => $id_get, 'user_id' => AppContext::get_current_user()->get_id(), 'timestamp' => time() - SessionsConfig::load()->get_active_session_duration(), 'number_items_per_page' => $pagination->get_number_items_per_page() + $quote_last_msg, 'display_from' => $pagination->get_display_from() - $quote_last_msg)); while ($row = $result->fetch()) { //Invité? $is_guest = empty($row['user_id']); $first_message = $row['id'] == $topic['first_msg_id'] ? true : false; //Gestion du niveau d'autorisation. list($edit, $del, $cut, $moderator) = array(false, false, false, false); if ($check_group_edit_auth || AppContext::get_current_user()->get_id() == $row['user_id'] && !$is_guest && !$first_message) { list($edit, $del) = array(true, true); if ($check_group_edit_auth) { $cut = !$first_message ? true : false; $moderator = !$is_guest ? true : false; } } elseif (AppContext::get_current_user()->get_id() == $row['user_id'] && !$is_guest && $first_message) { //Premier msg du topic => suppression du topic non autorisé au membre auteur du message. $edit = true;