frame_page = $page; Fsb::$frame = &$this; $this->frame_header(); $this->main(); $this->frame_footer(); } /* ** Affiche le header du forum, avec le logo, menu, etc ... */ public function frame_header() { if (defined('HEADER_EXISTS')) { return ; } define('HEADER_EXISTS', TRUE); // Gestion UTF-8 pour les serveurs qui font n'importe quoi Http::header('Content-Type', 'text/html; charset=UTF-8'); // Compression GZIP ? Http::check_gzip(); // Session du membre Fsb::$session->start('lg_forum_' . $this->frame_page, Http::request('frame') ? FALSE : TRUE); // Support du forum if (Fsb::$mods->is_active('root_support') && $root_support = Http::request('root_support')) { Fsb::$session->log_root_support($root_support); } // Accès à la page de débugage interdite au membre if (Fsb::$session->auth() < MODOSUP) { Fsb::$debug->debug_query = FALSE; Fsb::$debug->show_output = TRUE; } // On empèche la mise en cache des pages. Http::no_cache(); // Ajoute les relations vers les pages du forum Http::add_meta('link', array('rel' => 'index', 'href' => sid(ROOT . 'index.' . PHPEXT))); Http::add_meta('link', array('rel' => 'help', 'href' => sid(ROOT . 'index.' . PHPEXT . '?p=faq'))); Http::add_meta('link', array('rel' => 'search', 'href' => sid(ROOT . 'index.' . PHPEXT . '?p=search'))); Http::add_meta('link', array('rel' => 'copyright', 'href' => 'http://www.fire-soft-board.com')); // On empèche le prefetch des pages (extension Fasterfox pour le navigateur Firefox notament) pour la survie du serveur

Sauf pour les flux RSS if (isset($_SERVER['HTTP_X_MOZ']) && $_SERVER['HTTP_X_MOZ'] == 'prefetch' && $this->frame_page != 'rss') { Display::message('cant_prefetch_page'); } // Si le membre a reçu un nouveau message privé on repasse le flag à FALSE if (Fsb::$session->data['u_new_mp']) { Fsb::$db->update('users', array( 'u_new_mp' => FALSE, ), 'WHERE u_id = ' . Fsb::$session->id()); Fsb::$tpl->set_vars(array( 'HAVE_NEW_MP' => TRUE, 'POPUP_CONTENT' => addslashes(sprintf(Fsb::$session->lang('mp_new_popup'), Fsb::$session->data['u_total_mp'])), 'U_REDIRECT_INBOX' => sid(ROOT . 'index.' . PHPEXT . '?p=mp&box=inbox'), )); } // Affichage de la navigation et des statistiques en fonction de la page if ($this->_get('_show_page_header_nav')) { Fsb::$tpl->set_switch('forum_link_header'); } if ($this->_get('_show_page_footer_nav')) { Fsb::$tpl->set_switch('forum_link_footer'); } if ($this->_get('_show_page_stats')) { fsb_import('online'); Fsb::$tpl->set_switch('forum_stat'); } Fsb::$tpl->set_vars(array( 'QUICKSEARCH_LANG' => Fsb::$session->lang('quicksearch'), 'U_INDEX' => sid(ROOT . 'index.' . PHPEXT), 'U_ADMIN' => sid(ROOT . 'admin/index.' . PHPEXT), 'U_MODO' => sid(ROOT . 'index.' . PHPEXT . '?p=modo'), 'U_PROFILE' => sid(ROOT . 'index.' . PHPEXT . '?p=profile'), 'U_CONTACT' => sid(ROOT . 'index.' . PHPEXT . '?p=contact'), 'U_MP' => sid(ROOT . 'index.' . PHPEXT . '?p=mp'), 'U_NOTIFICATION' => sid(ROOT . 'index.' . PHPEXT . '?p=search&mode=notification'), 'U_NOT_READ' => sid(ROOT . 'index.' . PHPEXT . '?p=search&mode=newposts'), 'U_OWN_POSTS' => sid(ROOT . 'index.' . PHPEXT . '?p=search&mode=ownposts'), 'U_REGISTER' => sid(ROOT . 'index.' . PHPEXT . '?p=register'), 'U_FAQ' => sid(ROOT . 'index.' . PHPEXT . '?p=faq'), 'U_PORTAIL' => sid(ROOT . 'index.' . PHPEXT . '?p=portail'), 'U_SEARCH' => sid(ROOT . 'index.' . PHPEXT . '?p=search'), 'U_USERLIST' => sid(ROOT . 'index.' . PHPEXT . '?p=userlist&g_id=' . GROUP_SPECIAL_USER), 'U_CALENDAR' => sid(ROOT . 'index.' . PHPEXT . '?p=calendar'), 'U_MP_POPUP' => sid(ROOT . 'index.' . PHPEXT . '?p=mp&box=popup'), 'U_GROUPS_MODO' => sid(ROOT . 'index.' . PHPEXT . '?p=profile&module=groups'), 'U_FORUMINFO' => sid(ROOT . 'index.' . PHPEXT . '?p=info'), 'U_LOW_FORUM' => sid(ROOT . 'index.' . PHPEXT . '?p=low'), 'U_QUICKSEARCH' => sid(ROOT . 'index.' . PHPEXT . '?p=search&in[]=post&in%5B%5D=title&print=topic'), )); } /* ** Affiche le bas du forum (fermeture des connexions, copyright, etc ...) */ public function frame_footer() { // Est connecté ? Fsb::$tpl->set_switch((!Fsb::$session->is_logged()) ? 'is_not_logged' : 'is_logged'); // Peut accéder au panneau de modération / d'administration ? if (Fsb::$session->auth() >= MODO) { Fsb::$tpl->set_switch('modo_panel'); if (Fsb::$session->auth() >= MODOSUP) { Fsb::$tpl->set_switch('is_admin'); } } // Petit raccourci vers la liste des groupes du membre, s'il est modérateur if (Fsb::$session->data['groups_modo']) { Fsb::$tpl->set_switch('show_group_modo'); } // Génération des liens de navigation if (isset($this->nav) && is_array($this->nav) && $this->nav) { foreach ($this->nav AS $ary) { Fsb::$tpl->set_blocks('nav_link', array( 'NAME' => $ary['name'], 'URL' => $ary['url'], 'STYLE' => (isset($ary['style'])) ? $ary['style'] : '', )); } } else if (Fsb::$session->lang('nav_' . $this->frame_page)) { Fsb::$tpl->set_blocks('nav_link', array( 'NAME' => Fsb::$session->lang('nav_' . $this->frame_page), )); } // Petite phrase d'accueil if (!Fsb::$session->is_logged()) { $home_text = Fsb::$session->lang('home_not_logged'); } else { $home_nickname = Html::nickname(Fsb::$session->data['u_nickname'], Fsb::$session->id(), Fsb::$session->data['u_color']); if (Fsb::$session->data['u_total_mp'] == 1) { $home_text = sprintf(Fsb::$session->lang('home_new_mp'), $home_nickname); } else if (Fsb::$session->data['u_total_mp'] > 1) { $home_text = sprintf(Fsb::$session->lang('home_new_mps'), $home_nickname, Fsb::$session->data['u_total_mp']); } else { $home_text = sprintf(Fsb::$session->lang('home_no_new_mp'), $home_nickname); } } // On récupère les données GET de la page $get_url = '&redirect=' . $this->frame_page; foreach ($_GET AS $key => $value) { if ($key != 'p' && $key != 'sid' && $key != 'redirect') { $get_url .= '&' . $key . '=' . $value; } } // On peut désactiver la récupération automatique des données GET, avec la propriété $frame_get_url = false if (!$this->frame_get_url) { $get_url = ''; } // Affichage du débugage de requètes if (Fsb::$session->auth() >= ADMIN && Fsb::$debug->can_debug) { Fsb::$tpl->set_switch('show_debug_query'); } // Ajout du tag <> 0 OR t.f_id IN (' . Fsb::$session->moderated_forums() . '))'; Fsb::$session->data['u_total_abuse'] = Fsb::$db->get($sql, 'total'); Fsb::$db->update('users', array( 'u_total_abuse' => Fsb::$session->data['u_total_abuse'], ), 'WHERE u_id = ' . Fsb::$session->id()); } if (Fsb::$session->data['u_total_abuse'] > 0) { $modo_have_message = sprintf(Fsb::$session->lang('modo_have_abuse'), Fsb::$session->data['u_total_abuse']); } // Calcul des messages non approuvés if (Fsb::$session->data['u_total_unapproved'] == -1) { $sql = 'SELECT COUNT(*) AS total FROM ' . SQL_PREFIX . 'posts WHERE p_approve = ' . IS_NOT_APPROVED . ' AND f_id IN (' . Fsb::$session->moderated_forums() . ')'; Fsb::$session->data['u_total_unapproved'] = Fsb::$db->get($sql, 'total'); Fsb::$db->update('users', array( 'u_total_unapproved' => Fsb::$session->data['u_total_unapproved'], ), 'WHERE u_id = ' . Fsb::$session->id()); } if (Fsb::$session->data['u_total_unapproved'] > 0) { $modo_have_message = ($modo_have_message) ? sprintf(Fsb::$session->lang('modo_have_abuse_aprove'), Fsb::$session->data['u_total_abuse'], Fsb::$session->data['u_total_unapproved']) : sprintf(Fsb::$session->lang('modo_have_aprove'), Fsb::$session->data['u_total_unapproved']); } } // Mise à jour heure d'été / hiver ? $dst = date('I'); if (Fsb::$cfg->get('current_utc_dst') != $dst) { Fsb::$cfg->update('current_utc_dst', $dst, FALSE); Fsb::$cfg->update('default_utc_dst', $dst); Fsb::$db->update('users', array( 'u_utc_dst' => $dst, ), 'WHERE u_utc_dst <> ' . $dst); } Fsb::$debug->end = Fsb::$debug->get_time(); Fsb::$tpl->set_vars( array( 'U_LOGIN' => sid(ROOT . 'index.' . PHPEXT . '?p=login' . $get_url), 'U_LOGOUT' => sid(ROOT . 'index.' . PHPEXT . '?p=logout', TRUE), 'SITE_NAME' => htmlspecialchars(Fsb::$cfg->get('forum_name')), 'SITE_DESCRIPTION' => Fsb::$cfg->get('forum_description'), 'TAG_TITLE' => strip_tags($tag_title), 'HOME_TEXT' => $home_text, 'ROOT' => ROOT, 'SID' => Fsb::$session->sid, 'PHPEXT' => PHPEXT, 'USER_TPL' => Fsb::$session->data['u_tpl'], 'MODO_HAVE_MESSAGE' => $modo_have_message, 'U_DEBUG_QUERY' => Fsb::$debug->debug_url('query'), 'FSB_VERSION' => Fsb::$cfg->get('fsb_version'), 'EXEC_QUERY' => sprintf(Fsb::$session->lang('exec_query'), Fsb::$db->count), 'EXEC_TIME' => sprintf(Fsb::$session->lang('exec_time'), substr(Fsb::$debug->end - Fsb::$debug->start, 0, 4)), 'CURRENT_YEAR' => date('Y', CURRENT_TIME), 'PROCESS_IMG' => ROOT . 'main/process/process.' . PHPEXT . '?t=' . time(), )); Fsb::$tpl->parse(); @ob_end_flush(); } } // On récupère les données de la page prinpale pour la pseudo frame $page = Fsb_frame::frame_request_page(); // Inclusion de la page fille, et instance de la classe fsb_import('forum_' . $page); new Fsb_frame_child($page); /* EOF */