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;
 }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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();
 }
Ejemplo n.º 5
0
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();
 }
Ejemplo n.º 8
0
 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);
 }
Ejemplo n.º 9
0
 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 . '&amp;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;
Ejemplo n.º 10
0
 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);
 }
Ejemplo n.º 11
0
        $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)) {
Ejemplo n.º 12
0
 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']);
Ejemplo n.º 13
0
 /**
  * @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();
 }
Ejemplo n.º 15
0
//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;