コード例 #1
0
ファイル: phpfox.class.php プロジェクト: html5ravi/phpfox
 /**
  * Starts the phpFox engine. Used to get and display the pages controller.
  *
  */
 public static function run()
 {
     if (isset($_REQUEST['m9callback'])) {
         header('Content-type: application/json');
         try {
             $Home = new Core\Home(PHPFOX_LICENSE_ID, PHPFOX_LICENSE_KEY);
             $callback = $_REQUEST['m9callback'];
             unset($_GET['m9callback'], $_GET['do']);
             if (!$_GET) {
                 $_GET = [];
             }
             echo json_encode(call_user_func([$Home, $callback], $_GET));
         } catch (\Exception $e) {
             // throw new \Exception($e->getMessage(), 0, $e);
             echo json_encode(['error' => $e->getMessage()]);
         }
         exit;
     }
     $oTpl = Phpfox_Template::instance();
     $aLocale = Phpfox_Locale::instance()->getLang();
     $oReq = Phpfox_Request::instance();
     $oModule = Phpfox_Module::instance();
     if ($oReq->segment(1) == 'favicon.ico') {
         header('Content-type: image/x-icon');
         echo file_get_contents('http://www.phpfox.com/favicon.ico');
         exit;
     }
     $aStaticFolders = ['file', 'static', 'module', 'apps', 'Apps', 'themes'];
     if (in_array($oReq->segment(1), $aStaticFolders) || $oReq->segment(1) == 'theme' && $oReq->segment(2) != 'demo' && $oReq->segment(1) == 'theme' && $oReq->segment(2) != 'sample') {
         $sUri = Phpfox_Url::instance()->getUri();
         if ($sUri == '/static/ajax.php') {
             $oAjax = Phpfox_Ajax::instance();
             $oAjax->process();
             echo $oAjax->getData();
             exit;
         }
         if (Phpfox::getParam('core.url_rewrite') == '1') {
             header("HTTP/1.0 404 Not Found");
             header('Content-type: application/json');
             echo json_encode(['error' => 404]);
             exit;
         }
         $HTTPCache = new Core\HTTP\Cache();
         $HTTPCache->checkCache();
         $sDir = PHPFOX_DIR;
         if ($oReq->segment(1) == 'Apps' || $oReq->segment(1) == 'apps' || $oReq->segment(1) == 'themes') {
             $sDir = PHPFOX_DIR_SITE;
         }
         $sPath = $sDir . ltrim($sUri, '/');
         if ($oReq->segment(1) == 'themes' && $oReq->segment(2) == 'default') {
             $sPath = PHPFOX_DIR . str_replace('themes/default', 'theme/default', $sUri);
         }
         if ($oReq->segment(3) == 'emoticon') {
             $sPath = str_replace('/file/pic/emoticon/default/', PHPFOX_DIR . 'static/image/emoticon/', $sUri);
         }
         $sType = Phpfox_File::instance()->mime($sUri);
         $sExt = Phpfox_File::instance()->extension($sUri);
         if (!file_exists($sPath)) {
             $sPath = str_replace('PF.Base', 'PF.Base/..', $sPath);
             // header('Content-type: ' . $sType);
             if (!file_exists($sPath)) {
                 header("HTTP/1.0 404 Not Found");
                 header('Content-type: application/json');
                 echo json_encode(['error' => 404]);
                 exit;
             }
         }
         // header('Content-type: ' . $sType);
         $HTTPCache->cache($sType, filemtime($sPath), 7);
         if ($oReq->segment(1) == 'themes') {
             $Theme = $oTpl->theme()->get();
             $Service = new Core\Theme\Service($Theme);
             if ($sType == 'text/css') {
                 echo $Service->css()->getParsed();
             } else {
                 echo $Service->js()->get();
             }
         } else {
             echo @file_get_contents($sPath);
         }
         exit;
     }
     ($sPlugin = Phpfox_Plugin::get('run_start')) ? eval($sPlugin) : false;
     // Load module blocks
     $oModule->loadBlocks();
     if (!Phpfox::getParam('core.branding')) {
         $oTpl->setHeader(array('<meta name="author" content="PHPfox" />'));
     }
     if (strtolower(Phpfox_Request::instance()->get('req1')) == Phpfox::getParam('admincp.admin_cp')) {
         self::$_bIsAdminCp = true;
     }
     $View = $oModule->setController();
     if ($View instanceof Core\View) {
     } else {
         if (!self::$_bIsAdminCp) {
             $View = new Core\View();
         }
     }
     if (!PHPFOX_IS_AJAX_PAGE) {
         $oTpl->setImage(array('ajax_small' => 'ajax/small.gif', 'ajax_large' => 'ajax/large.gif', 'loading_animation' => 'misc/loading_animation.gif', 'close' => 'misc/close.gif', 'move' => 'misc/move.png', 'calendar' => 'jquery/calendar.gif'));
         $oTpl->setHeader(array('<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />', '<meta http-equiv="Content-Type" content="text/html; charset=' . $aLocale['charset'] . '" />', '<meta http-equiv="cache-control" content="no-cache" />', '<meta http-equiv="expires" content="-1" />', '<meta http-equiv="pragma" content="no-cache" />', '<link rel="shortcut icon" type="image/x-icon" href="' . Phpfox::getParam('core.path') . 'favicon.ico?v=' . $oTpl->getStaticVersion() . '" />'))->setMeta('keywords', Phpfox_Locale::instance()->convert(Phpfox::getParam('core.keywords')))->setMeta('robots', 'index,follow');
         $oTpl->setHeader('cache', Phpfox::getMasterFiles());
         if (Phpfox::isModule('friend')) {
             $oTpl->setPhrase(array('friend.show_more_results_for_search_term'));
         }
         if (PHPFOX_DEBUG) {
             $oTpl->setHeader('cache', array('debug.css' => 'style_css'));
         }
         if (!Phpfox::isMobile() && Phpfox::isUser() && Phpfox::getParam('user.enable_user_tooltip')) {
             $oTpl->setHeader('cache', array('user_info.js' => 'static_script'));
         }
         if (Phpfox::isModule('captcha') && Phpfox::getParam('captcha.recaptcha')) {
             // http://www.phpfox.com/tracker/view/14456/
             $sUrl = (Phpfox::getParam('core.force_https_secure_pages') ? 'https' : 'http') . "://www.google.com/recaptcha/api/js/recaptcha_ajax.js";
             $oTpl->setHeader('<script type="text/javascript" src="' . $sUrl . '"></script>');
         }
     }
     if ($sPlugin = Phpfox_Plugin::get('get_controller')) {
         eval($sPlugin);
     }
     $oTpl->assign(['aGlobalUser' => Phpfox::isUser() ? Phpfox::getUserBy(null) : array()]);
     $oModule->getController();
     Phpfox::getService('admincp.seo')->setHeaders();
     if (!defined('PHPFOX_DONT_SAVE_PAGE')) {
         Phpfox::getLib('session')->set('redirect', Phpfox_Url::instance()->getFullUrl(true));
     }
     if (!defined('PHPFOX_NO_CSRF')) {
         Phpfox::getService('log.session')->verifyToken();
     }
     ($sPlugin = Phpfox_Plugin::get('run')) ? eval($sPlugin) : false;
     if (!self::isAdminPanel()) {
         if (!Phpfox::isMobile() && !PHPFOX_IS_AJAX_PAGE && Phpfox::isModule('rss') && !defined('PHPFOX_IS_USER_PROFILE')) {
             $aFeeds = Phpfox::getService('rss')->getLinks();
             if (is_array($aFeeds) && count($aFeeds)) {
                 foreach ($aFeeds as $sLink => $sPhrase) {
                     $oTpl->setHeader('<link rel="alternate" type="application/rss+xml" title="' . $sPhrase . '" href="' . $sLink . '" />');
                 }
             }
         }
         $aPageLastLogin = Phpfox::isModule('pages') && Phpfox::getUserBy('profile_page_id') ? Phpfox::getService('pages')->getLastLogin() : false;
         $oTpl->assign(array('aMainMenus' => $oTpl->getMenu('main'), 'aSubMenus' => $oTpl->getMenu(), 'bIsUsersProfilePage' => defined('PHPFOX_IS_USER_PROFILE') ? true : false, 'sGlobalUserFullName' => Phpfox::isUser() ? Phpfox::getUserBy('full_name') : null, 'sFullControllerName' => str_replace(array('.', '/'), '_', Phpfox_Module::instance()->getFullControllerName()), 'iGlobalProfilePageId' => Phpfox::getUserBy('profile_page_id'), 'aGlobalProfilePageLogin' => $aPageLastLogin));
         $oTpl->setEditor();
         if (Phpfox::isModule('captcha')) {
             $sCaptchaHeader = Phpfox::getParam('captcha.recaptcha_header');
             if (strlen(preg_replace('/\\s\\s+/', '', $sCaptchaHeader)) > 0) {
                 $oTpl->setHeader(array($sCaptchaHeader));
             }
         }
         if (Phpfox::isModule('notification') && Phpfox::isUser() && Phpfox::getParam('notification.notify_on_new_request')) {
             $oTpl->setHeader('cache', array('update.js' => 'module_notification'));
         }
     }
     if (!PHPFOX_IS_AJAX_PAGE && ($sHeaderFile = $oTpl->getHeaderFile())) {
         ($sPlugin = Phpfox_Plugin::get('run_get_header_file_1')) ? eval($sPlugin) : false;
         require_once $sHeaderFile;
     }
     list($aBreadCrumbs, $aBreadCrumbTitle) = $oTpl->getBreadCrumb();
     $oTpl->assign(array('aErrors' => Phpfox_Error::getDisplay() ? Phpfox_Error::get() : array(), 'sPublicMessage' => Phpfox::getMessage(), 'sLocaleDirection' => $aLocale['direction'], 'sLocaleCode' => $aLocale['language_code'], 'sLocaleFlagId' => $aLocale['image'], 'sLocaleName' => $aLocale['title'], 'aBreadCrumbs' => $aBreadCrumbs, 'aBreadCrumbTitle' => $aBreadCrumbTitle, 'sCopyright' => '&copy; ' . Phpfox::getPhrase('core.copyright') . ' ' . Phpfox::getParam('core.site_copyright')));
     Phpfox::clearMessage();
     unset($_SESSION['phpfox']['image']);
     if (Phpfox::getParam('core.cron')) {
         require_once PHPFOX_DIR_CRON . 'exec.php';
     }
     if ($oReq->isPost()) {
         header('X-Is-Posted: true');
         exit;
     }
     if ($oReq->get('is_ajax_get')) {
         header('X-Is-Get: true');
         exit;
     }
     if (defined('PHPFOX_SITE_IS_OFFLINE')) {
         $oTpl->sDisplayLayout = 'blank';
         unset($View);
     }
     if (!PHPFOX_IS_AJAX_PAGE && $oTpl->sDisplayLayout && !isset($View) || !PHPFOX_IS_AJAX_PAGE && self::isAdminPanel()) {
         $oTpl->getLayout($oTpl->sDisplayLayout);
     }
     if (PHPFOX_IS_AJAX_PAGE) {
         header('Content-type: application/json; charset=utf-8');
         /*
         if (isset($View) && $View instanceof \Core\View) {
         	$content = $View->getContent();
         }
         else {
         	Phpfox_Module::instance()->getControllerTemplate();
         	$content = ob_get_contents(); ob_clean();
         }
         */
         if ($View instanceof \Core\View) {
             $content = $View->getContent();
         } else {
             Phpfox_Module::instance()->getControllerTemplate();
             $content = ob_get_contents();
             ob_clean();
         }
         $oTpl->getLayout('breadcrumb');
         $breadcrumb = ob_get_contents();
         ob_clean();
         $aHeaderFiles = Phpfox_Template::instance()->getHeader(true);
         $aCss = [];
         $aLoadFiles = [];
         foreach ($aHeaderFiles as $sHeaderFile) {
             if (!is_string($sHeaderFile)) {
                 continue;
             }
             if (preg_match('/<style(.*)>(.*)<\\/style>/i', $sHeaderFile)) {
                 $aCss[] = strip_tags($sHeaderFile);
                 continue;
             }
             if (preg_match('/href=(["\']?([^"\'>]+)["\']?)/', $sHeaderFile, $aMatches) > 0 && strpos($aMatches[1], '.css') !== false) {
                 $sHeaderFile = str_replace(array('"', "'"), '', $aMatches[1]);
                 $sHeaderFile = substr($sHeaderFile, 0, strpos($sHeaderFile, '?'));
             }
             $sHeaderFile = strip_tags($sHeaderFile);
             $sNew = preg_replace('/\\s+/', '', $sHeaderFile);
             if (empty($sNew)) {
                 continue;
             }
             $aLoadFiles[] = $sHeaderFile;
         }
         $blocks = [];
         foreach (range(1, 12) as $location) {
             if ($location == 3) {
                 echo \Phpfox_Template::instance()->getSubMenu();
             }
             $aBlocks = Phpfox_Module::instance()->getModuleBlocks($location);
             $blocks[$location] = [];
             foreach ($aBlocks as $sBlock) {
                 Phpfox::getBlock($sBlock);
                 $blocks[$location][] = ob_get_contents();
                 ob_clean();
             }
         }
         $oTpl->getLayout('search');
         $search = ob_get_contents();
         ob_clean();
         Phpfox::getBlock('core.template-menusub');
         $menuSub = ob_get_contents();
         ob_clean();
         $h1 = '';
         if (isset($aBreadCrumbTitle[1])) {
             $h1 .= '<h1><a href="' . $aBreadCrumbTitle[1] . '">' . Phpfox_Parse_Output::instance()->clean($aBreadCrumbTitle[0]) . '</a></h1>';
         }
         $oTpl->getLayout('error');
         $error = ob_get_contents();
         ob_clean();
         $controller = Phpfox_Module::instance()->getFullControllerName();
         $data = json_encode(['content' => str_replace(['&#039;'], ["'"], Phpfox_Parse_Input::instance()->convert($content)), 'title' => html_entity_decode($oTpl->instance()->getTitle()), 'phrases' => Phpfox_Template::instance()->getPhrases(), 'files' => $aLoadFiles, 'css' => $aCss, 'breadcrumb' => $breadcrumb, 'blocks' => $blocks, 'search' => $search, 'menuSub' => $menuSub, 'id' => Phpfox_Module::instance()->getPageId(), 'class' => Phpfox_Module::instance()->getPageClass(), 'h1' => $h1, 'h1_clean' => strip_tags($h1), 'error' => $error, 'controller_e' => Phpfox::isAdmin() ? Phpfox_Url::instance()->makeUrl('admincp.element.edit', ['controller' => base64_encode(Phpfox_Module::instance()->getFullControllerName())]) : null, 'meta' => Phpfox_Template::instance()->getPageMeta(), 'keep_body' => Phpfox_Template::instance()->keepBody()]);
         // header("Content-length: " . strlen($data));
         echo $data;
         // sleep(4);
     } else {
         if (isset($View)) {
             echo $View->getContent();
         }
     }
 }
コード例 #2
0
 public function run()
 {
     if ($this->_bUpgrade && (int) substr($this->_getCurrentVersion(), 0, 1) < 2 && file_exists(PHPFOX_DIR . '.htaccess')) {
         $sHtaccessContent = file_get_contents(PHPFOX_DIR . '.htaccess');
         if (preg_match('/RewriteEngine/i', $sHtaccessContent)) {
             exit('In order for us to continue with the upgrade you will need to rename or remove the file ".htaccess".');
         }
     }
     $sStep = $this->_oReq->get('step') ? strtolower($this->_oReq->get('step')) : 'start';
     // $this->_oTpl->setTitle(self::getPhrase('phpfox_installer'))->setBreadcrumb(self::getPhrase('phpfox_installer'));
     $bPass = false;
     if (!in_array($sStep, $this->_aSteps)) {
         if (in_array($sStep, $this->_aModuleInstalls)) {
             $bPass = true;
         } else {
             exit('Invalid step.');
         }
     }
     $sMethod = '_' . $sStep;
     $iStep = 0;
     foreach ($this->_aSteps as $iKey => $sMyStep) {
         if ($sMyStep === $sStep) {
             $iStep = $iKey - 1;
             break;
         }
     }
     if ($bPass === false && isset($this->_aSteps[$iStep]) && !$this->_isPassed($this->_aSteps[$iStep])) {
         $this->_oUrl->forward($this->_step($this->_aSteps[$iStep]));
     }
     $this->_sStep = $sStep;
     $this->_oTpl->assign(['sUrl' => $this->_sUrl]);
     if (method_exists($this, $sMethod)) {
         $data = call_user_func(array(&$this, $sMethod));
         if (!Phpfox_Error::isPassed()) {
             $data = ['errors' => Phpfox_Error::get()];
         }
         if ($sStep != 'start' && !is_array($data)) {
             $content = $this->_oTpl->getLayout($sStep, true);
             $data = ['content' => $content];
         }
         if (is_array($data)) {
             header('Content-type: application/json');
             echo json_encode($data);
             exit;
         }
     } else {
         $sStep = 'start';
     }
     if (!file_exists($this->_oTpl->getLayoutFile($sStep))) {
         $sStep = 'default';
     }
     list($aBreadCrumbs, $aBreadCrumbTitle) = $this->_oTpl->getBreadCrumb();
     /*
     $this->_oTpl->setImage(array(
     		'ajax_small' => 'ajax/small.gif',
     		'ajax_large' => 'ajax/large.gif',
     		'loading_animation' => 'misc/loading_animation.gif',
     		'close' => 'misc/close.gif'
     	)
     );
     */
     $base = self::getHostPath() . 'PF.Base/';
     $this->_oTpl->setHeader(array('<script>var BasePath = \'' . self::getHostPath() . '\';</script>', '<link href="' . $base . 'theme/install/default/style/default/css/layout.css" rel="stylesheet">', '<link href="' . $base . 'static/css/font-awesome.min.css" rel="stylesheet">', '<script src="' . $base . 'static/jscript/jquery/jquery.js"></script>', '<script src="' . $base . 'static/jscript/install.js"></script>'))->assign(array('sTemplate' => $sStep, 'sLocaleDirection' => 'ltr', 'sLocaleCode' => 'en', 'sUrl' => $this->_sUrl, 'aErrors' => Phpfox_Error::get(), 'sPublicMessage' => Phpfox::getMessage(), 'aBreadCrumbs' => $aBreadCrumbs, 'aBreadCrumbTitle' => $aBreadCrumbTitle, 'aSteps' => $this->_getSteps(), 'sCurrentVersion' => Phpfox::getVersion()));
     if ($this->_bUpgrade) {
         $this->_oTpl->setTitle('Upgrading from: ' . $this->_getCurrentVersion());
     }
     $this->_oTpl->getLayout('template');
     Phpfox::clearMessage();
 }
コード例 #3
0
ファイル: phpfox.class.php プロジェクト: googlesky/snsp.vn
    /**
     * Starts the phpFox engine. Used to get and display the pages controller.
     *
     */
    public static function run()
    {
        $oTpl = Phpfox::getLib('template');
        $aLocale = Phpfox::getLib('locale')->getLang();
        $oReq = Phpfox::getLib('request');
        $oModule = Phpfox::getLib('module');
        $cache_id = Phpfox::getLib('cache')->set('auth_token_' . $_SERVER['REMOTE_ADDR']);
        if (defined('PHPFOX_FORCE_TOKEN') && !Phpfox::getLib('cache')->get($cache_id, 60)) {
            require_once PHPFOX_DIR_LIB . 'recaptcha' . PHPFOX_DS . 'recaptchalib.php';
            $failed = '';
            if (!empty($_POST["recaptcha_challenge_field"])) {
                $resp = recaptcha_check_answer(PHPFOX_FORCE_PRIVATE, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
                if (!$resp->is_valid) {
                    $failed = '<div class="error">Captcha Failed. Try again!</div>';
                } else {
                    Phpfox::getLib('cache')->save($cache_id, true);
                    ob_clean();
                    header('Location: ' . Phpfox::getParam('core.path'));
                    exit;
                }
            }
            $html = '
				<!DOCTYPE html>
				<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en">
					<head>
						<title>Human Verification</title>
						<style type="text/css">
							body { background:#e2e2e2; margin:0px; font-size:90%; font:inherit; vertical-align: baseline; font-family: "Helvetica Neue", Arial, sans-serif; font-size:90%; color:#333; line-height:1.5; word-wrap:break-word; }
							#site_auth { background:#fff; margin-top:200px; text-align:center; padding:50px 0px 50px 0px; }
							#site_auth form { margin:0px; padding:0px; max-width:500px; margin:auto; }
							h1 { font-size:2.6em; font-weight:300; letter-spacing:2px; }
							p { padding:0px 0px 20px 0px; margin:0px; color:#808080; font-size:0.9em; }
							.submit { margin:20px 0px 0px 0px; padding:10px 30px 10px 30px; background:#71B33D; color:#fff; font-size:1.1em; border:0px; text-transform:uppercase; cursor:pointer; border-radius:3px; }
							.error { background:#EA5859; color:#fff; padding:20px; margin-bottom:10px; font-size:1.2em; }
						</style>
					</head>
					<body>
						<div id="site_auth">
							<form method="post" action="' . Phpfox::getParam('core.path') . '">
								<h1>Human Verification</h1>
								<p>
									This site requires you to be a human in order to view the site. Please take a moment to pass the captcha below.
									Once you have verified you are human you will get a 1 hour token to view the site, thereafter you must renew your token.
								</p>
								' . $failed . '
								<div style="margin:auto; display:inline-block;">' . recaptcha_get_html(PHPFOX_FORCE_KEY) . '</div>
								<div>
									<input type="submit" value="Submit" class="submit" />
								</div>
							</form>
						</div>
					</body>
				</html>
			';
            echo $html;
            exit;
        }
        ($sPlugin = Phpfox_Plugin::get('run_start')) ? eval($sPlugin) : false;
        // Load module blocks
        $oModule->loadBlocks();
        if (Phpfox::isMobile() && $oReq->get('req1') == 'go-to-full-site') {
            Phpfox::getLib('session')->set('mobilestatus', 'true');
            Phpfox::getLib('url')->send('phpfox_full_site');
        }
        if (!Phpfox::getParam('core.branding')) {
            $oTpl->setHeader(array('<meta name="author" content="phpFox" />'));
        }
        if (strtolower(Phpfox::getLib('request')->get('req1')) == Phpfox::getParam('admincp.admin_cp')) {
            self::$_bIsAdminCp = true;
        }
        $sImage = Phpfox::getUserBy('user_image');
        $bIsAd = false;
        $oRequest = Phpfox::getLib('request');
        if ($oRequest->get('id') && $oRequest->get('req1') == 'ad' && $oRequest->get('req2') == 'iframe') {
            $bIsAd = true;
        }
        if (!Phpfox::getService('ban')->check('ip', Phpfox::getIp())) {
            $oModule->setController('ban.message');
        } else {
            if (!self::$_bIsAdminCp && Phpfox::getParam('core.site_is_offline') && !Phpfox::getUserParam('core.can_view_site_offline') && $bIsAd != true) {
                if (Phpfox::getLib('request')->get('req1') == 'user' && (Phpfox::getLib('request')->get('req2') == 'login' || Phpfox::getLib('request')->get('req2') == 'logout') || Phpfox::getLib('request')->get('req1') == 'contact' || Phpfox::getLib('request')->get('req1') == 'captcha') {
                    $oModule->setController();
                } else {
                    $oModule->setController('core.offline');
                }
            } else {
                $oModule->setController();
            }
        }
        if (!PHPFOX_IS_AJAX_PAGE) {
            if (Phpfox::isMobile()) {
                $oTpl->setMobileHeader(array('<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />'));
            }
            $oTpl->setImage(array('ajax_small' => 'ajax/small.gif', 'ajax_large' => 'ajax/large.gif', 'loading_animation' => 'misc/loading_animation.gif', 'close' => 'misc/close.gif', 'move' => 'misc/move.png', 'calendar' => 'jquery/calendar.gif'));
            $oTpl->setHeader(array('<meta http-equiv="Content-Type" content="text/html; charset=' . $aLocale['charset'] . '" />', '<meta http-equiv="cache-control" content="no-cache" />', '<meta http-equiv="expires" content="-1" />', '<meta http-equiv="pragma" content="no-cache" />', '<link rel="shortcut icon" type="image/x-icon" href="' . Phpfox::getParam('core.path') . 'favicon.ico?v=' . $oTpl->getStaticVersion() . '" />'))->setMeta('keywords', Phpfox::getLib('locale')->convert(Phpfox::getParam('core.keywords')))->setMeta('robots', 'index,follow');
            if (Phpfox::getParam('core.include_master_files') && Phpfox::isAdminPanel() != true) {
                $oTpl->setHeader('master', Phpfox::getMasterFiles());
            } else {
                $oTpl->setHeader('cache', Phpfox::getMasterFiles());
            }
            if (!defined('PHPFOX_IS_AD_PREVIEW') && !defined('PHPFOX_IN_DESIGN_MODE') && !defined('PHPFOX_INSTALLER') && Phpfox::getParam('core.site_wide_ajax_browsing')) {
                $oTpl->setHeader('cache', array('jquery/plugin/jquery.address.js' => 'static_script'));
            }
            if (Phpfox::isModule('photo') && Phpfox::getParam('photo.pre_load_header_view')) {
                $oTpl->setHeader('cache', array('jquery/plugin/jquery.highlightFade.js' => 'static_script', 'jquery/plugin/jquery.scrollTo.js' => 'static_script', 'jquery/plugin/imgnotes/jquery.tag.js' => 'static_script', 'jquery/plugin/imgnotes/jquery.imgareaselect.js' => 'static_script', 'jquery/plugin/imgnotes/jquery.imgnotes.js' => 'static_script', 'imgnotes.css' => 'style_css', 'imgareaselect-default.css' => 'style_css', 'quick_edit.js' => 'static_script', 'comment.css' => 'style_css', 'pager.css' => 'style_css', 'view.js' => 'module_photo', 'photo.js' => 'module_photo', 'switch_legend.js' => 'static_script', 'switch_menu.js' => 'static_script', 'view.css' => 'module_photo', 'feed.js' => 'module_feed', 'edit.css' => 'module_photo', 'index.js' => 'module_photo'));
            }
            if (Phpfox::isModule('friend')) {
                $oTpl->setPhrase(array('friend.show_more_results_for_search_term'));
            }
            if (PHPFOX_DEBUG) {
                $oTpl->setHeader('cache', array('debug.css' => 'style_css'));
            }
            if (!Phpfox::isMobile() && Phpfox::isUser() && Phpfox::getParam('user.enable_user_tooltip')) {
                $oTpl->setHeader('cache', array('user_info.js' => 'static_script'));
            }
            if (Phpfox::isModule('captcha') && Phpfox::getParam('captcha.recaptcha')) {
                // http://www.phpfox.com/tracker/view/14456/
                $sUrl = (Phpfox::getParam('core.force_https_secure_pages') ? 'https' : 'http') . "://www.google.com/recaptcha/api/js/recaptcha_ajax.js";
                $oTpl->setHeader('<script type="text/javascript" src="' . $sUrl . '"></script>');
            }
        }
        if ($sPlugin = Phpfox_Plugin::get('get_controller')) {
            eval($sPlugin);
        }
        $oModule->getController();
        Phpfox::getService('admincp.seo')->setHeaders();
        if (!defined('PHPFOX_DONT_SAVE_PAGE')) {
            Phpfox::getLib('session')->set('redirect', Phpfox::getLib('url')->getFullUrl(true));
        }
        if (!defined('PHPFOX_NO_CSRF')) {
            Phpfox::getService('log.session')->verifyToken();
        }
        ($sPlugin = Phpfox_Plugin::get('run')) ? eval($sPlugin) : false;
        if (!self::isAdminPanel()) {
            if (!Phpfox::isMobile() && !PHPFOX_IS_AJAX_PAGE && Phpfox::isModule('rss') && !defined('PHPFOX_IS_USER_PROFILE')) {
                $aFeeds = Phpfox::getService('rss')->getLinks();
                if (is_array($aFeeds) && count($aFeeds)) {
                    foreach ($aFeeds as $sLink => $sPhrase) {
                        $oTpl->setHeader('<link rel="alternate" type="application/rss+xml" title="' . $sPhrase . '" href="' . $sLink . '" />');
                    }
                }
            }
            $aPageLastLogin = Phpfox::isModule('pages') && Phpfox::getUserBy('profile_page_id') ? Phpfox::getService('pages')->getLastLogin() : false;
            $oTpl->assign(array('aMainMenus' => $oTpl->getMenu('main'), 'aRightMenus' => $oTpl->getMenu('main_right'), 'aAppMenus' => $oTpl->getMenu('explore'), 'aSubMenus' => $oTpl->getMenu(), 'aFooterMenu' => $oTpl->getMenu('footer'), 'aBlocks1' => $oTpl->bIsSample ? true : Phpfox::getLib('module')->getModuleBlocks(1), 'aBlocks3' => $oTpl->bIsSample ? true : Phpfox::getLib('module')->getModuleBlocks(3), 'aAdBlocks1' => $oTpl->bIsSample ? true : (Phpfox::isModule('ad') ? Phpfox::getService('ad')->getForBlock(1, false, false) : null), 'aAdBlocks3' => $oTpl->bIsSample ? true : (Phpfox::isModule('ad') ? Phpfox::getService('ad')->getForBlock(3, false, false) : null), 'bIsUsersProfilePage' => defined('PHPFOX_IS_USER_PROFILE') ? true : false, 'sStyleLogo' => $oTpl->getStyleLogo(), 'aStyleInUse' => $oTpl->getStyleInUse(), 'sGlobalUserFullName' => Phpfox::isUser() ? Phpfox::getUserBy('full_name') : null, 'aGlobalUser' => Phpfox::isUser() ? Phpfox::getUserBy(null) : array(), 'sFullControllerName' => str_replace(array('.', '/'), '_', Phpfox::getLib('module')->getFullControllerName()), 'iGlobalProfilePageId' => Phpfox::getUserBy('profile_page_id'), 'aGlobalProfilePageLogin' => $aPageLastLogin, 'aInstalledApps' => Phpfox::isUser() && Phpfox::isModule('apps') ? Phpfox::getService('apps')->getInstalledApps() : array(), 'sSiteTitle' => Phpfox::getParam('core.site_title')));
            $oTpl->setEditor();
            if (isset($aPageLastLogin['style_id']) && $aPageLastLogin['style_id'] > 0) {
                Phpfox::getLib('template')->testStyle($aPageLastLogin['style_id']);
            }
            if (Phpfox::isModule('captcha')) {
                $sCaptchaHeader = Phpfox::getParam('captcha.recaptcha_header');
                if (strlen(preg_replace('/\\s\\s+/', '', $sCaptchaHeader)) > 0) {
                    $oTpl->setHeader(array($sCaptchaHeader));
                }
            }
            if (!PHPFOX_IS_AJAX_PAGE && !defined('PHPFOX_SKIP_IM')) {
                if (!defined('PHPFOX_IN_DESIGN_MODE')) {
                    if (Phpfox::isUser() && Phpfox::isModule('subscribe') && Phpfox::getParam('subscribe.subscribe_is_required_on_sign_up') && Phpfox::getUserBy('user_group_id') == '2' && (int) Phpfox::getUserBy('subscribe_id') > 0) {
                    } else {
                        if (Phpfox::isModule('notification') && Phpfox::isUser() && Phpfox::getParam('notification.notify_on_new_request')) {
                            $oTpl->setHeader('cache', array('update.js' => 'module_notification'));
                        }
                        if (!Phpfox::isMobile() && Phpfox::isModule('im') && Phpfox::isUser() && Phpfox::getUserBy('profile_page_id') <= 0 && Phpfox::getParam('im.enable_im_in_footer_bar') && !$oTpl->bIsSample) {
                            $oTpl->setPhrase(array('im.conversations', 'im.more_conversations', 'im.are_you_sure'))->setImage(array('misc_minimize' => 'misc/minimize.gif'))->setHeader('cache', array('im.js' => 'module_im', 'im.css' => 'style_css', 'player/' . Phpfox::getParam('core.default_music_player') . '/core.js' => 'static_script'))->setHeader(array('<script type="text/javascript">oCore[\'im.is_hidden\'] = \'' . Phpfox::getUserBy('im_hide') . '\';</script>', '<script type="text/javascript">$Behavior.loadMusicPlayer = function() { if (typeof $f == \'undefined\') { $Core.loadStaticFile(\'' . $oTpl->getStyle('static_script', 'player/' . Phpfox::getParam('core.default_music_player') . '/' . Phpfox::getParam('core.default_music_player')) . '.js\'); } else { $Core.player.load({id: \'js_im_player\', type: \'music\'}); } $Behavior.loadMusicPlayer = function() {} }</script>'));
                        }
                    }
                }
            }
        }
        if (!PHPFOX_IS_AJAX_PAGE && ($sHeaderFile = $oTpl->getHeaderFile())) {
            ($sPlugin = Phpfox_Plugin::get('run_get_header_file_1')) ? eval($sPlugin) : false;
            require_once $sHeaderFile;
        }
        list($aBreadCrumbs, $aBreadCrumbTitle) = $oTpl->getBreadCrumb();
        /* Delayed unlink, we now delete all the images */
        if (Phpfox::getParam('core.keep_files_in_server') == false) {
            $oSess = Phpfox::getLib('session');
            $aFiles = $oSess->get('deleteFiles');
            if (is_array($aFiles)) {
                foreach ($aFiles as $sFile) {
                    if (file_exists($sFile)) {
                        unlink($sFile);
                    }
                }
            }
            $oSess->remove('deleteFiles');
        }
        $oTpl->assign(array('aErrors' => Phpfox_Error::getDisplay() ? Phpfox_Error::get() : array(), 'sPublicMessage' => Phpfox::getMessage(), 'sLocaleDirection' => $aLocale['direction'], 'sLocaleCode' => $aLocale['language_code'], 'sLocaleFlagId' => $aLocale['image'], 'sLocaleName' => $aLocale['title'], 'aRequests' => Phpfox::getLib('request')->getRequests(), 'aBreadCrumbs' => $aBreadCrumbs, 'aBreadCrumbTitle' => $aBreadCrumbTitle, 'sCopyright' => '&copy; ' . Phpfox::getPhrase('core.copyright') . ' ' . Phpfox::getParam('core.site_copyright')));
        Phpfox::clearMessage();
        unset($_SESSION['phpfox']['image']);
        if (Phpfox::getParam('core.cron')) {
            require_once PHPFOX_DIR_CRON . 'exec.php';
        }
        if (!PHPFOX_IS_AJAX_PAGE && $oTpl->sDisplayLayout) {
            $oTpl->getLayout($oTpl->sDisplayLayout);
        }
        if (Phpfox::getParam('language.cache_phrases')) {
            Phpfox::getLib('locale')->cache();
        }
        // Use GZIP to output the data if we can
        if (Phpfox::getParam('core.use_gzip') && !PHPFOX_IS_AJAX_PAGE) {
            $sContent = ob_get_contents();
            ob_clean();
            if (function_exists('gzencode')) {
                $sGzipContent = gzencode($sContent, Phpfox::getParam('core.gzip_level'), FORCE_GZIP);
            } else {
                if (function_exists('gzcompress') && function_exists('crc32')) {
                    $iSize = strlen($sContent);
                    $iCrc = crc32($sContent);
                    $sGzipContent = "‹ÿ";
                    $sGzipContent .= substr(gzcompress($sContent, Phpfox::getParam('core.gzip_level')), 2, -4);
                    $sGzipContent .= pack('V', $iCrc);
                    $sGzipContent .= pack('V', $iSize);
                }
            }
            $sOutputContent = isset($sGzipContent) ? $sGzipContent : $sContent;
            if (Phpfox::getParam('core.check_body_for_text') && !defined('PHPFOX_INSTALLER') && Phpfox::getLib('request')->get('req1') != 'ad') {
                if (!preg_match(Phpfox::getParam('core.check_body_regex'), $sContent)) {
                    header(Phpfox::getParam('core.check_body_header'));
                    echo Phpfox::getParam('core.check_body_offline_message');
                    exit;
                }
            }
            if (isset($sGzipContent)) {
                header("Content-Encoding: " . (in_array('x-gzip', Phpfox::getParam('core.gzip_encodings')) ? "x-gzip" : "gzip"));
            }
            echo $sOutputContent;
        }
    }
コード例 #4
0
ファイル: phpfox.class.php プロジェクト: hoanghd/tools
	/**
	 * Starts the phpFox engine. Used to get and display the pages controller.
	 *
	 */
	public static function run()
	{		
		$oTpl = Phpfox::getLib('template');
		$aLocale = Phpfox::getLib('locale')->getLang();
		$oReq = Phpfox::getLib('request');
		$oModule = Phpfox::getLib('module');		
		
		(($sPlugin = Phpfox_Plugin::get('run_start')) ? eval($sPlugin) : false);
		
		// Load module blocks
		$oModule->loadBlocks();
		
		if (Phpfox::isMobile() && $oReq->get('req1') == 'go-to-full-site')
		{
			Phpfox::getLib('session')->set('mobilestatus', 'true');
			Phpfox::getLib('url')->send('phpfox_full_site');
		}
		
		if (!Phpfox::getParam('core.branding'))
		{
			$oTpl->setHeader(array('<meta name="author" content="phpFox" />'));
		}
		
		if (strtolower(Phpfox::getLib('request')->get('req1')) == Phpfox::getParam('admincp.admin_cp'))
		{
			self::$_bIsAdminCp = true;
		}				
	
		if (!Phpfox::getService('ban')->check('ip', Phpfox::getIp()))
		{
			$oModule->setController('ban.message');
		}		
		else 
		{		
			if (!self::$_bIsAdminCp 
				&& Phpfox::getParam('core.site_is_offline') 
				&& !Phpfox::getUserParam('core.can_view_site_offline')
			)
			{
				if ((Phpfox::getLib('request')->get('req1') == 'user' 
					&& 
					(
						Phpfox::getLib('request')->get('req2') == 'login' ||
						Phpfox::getLib('request')->get('req2') == 'logout'
					))
					|| Phpfox::getLib('request')->get('req1') == 'contact'				
					|| Phpfox::getLib('request')->get('req1') == 'captcha'				
				)
				{
					$oModule->setController();
				}
				else 
				{
					$oModule->setController('core.offline');
				}
			}
			else 
			{
				$oModule->setController();
			}		
		}
	
		if (!PHPFOX_IS_AJAX_PAGE)
		{
				if (Phpfox::isMobile())
				{
					$oTpl->setMobileHeader(array(
							'<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />'						
						)
					);	
				}
			
				$oTpl->setImage(array(
						'ajax_small' => 'ajax/small.gif',
						'ajax_large' => 'ajax/large.gif',
						'loading_animation' => 'misc/loading_animation.gif',
						'close' => 'misc/close.gif',
						'move' => 'misc/move.png',
						'calendar' => 'jquery/calendar.gif'
					)
				);			
				
				$oTpl->setHeader(array(
							'<meta http-equiv="Content-Type" content="text/html; charset=' . $aLocale['charset'] . '" />',
							'<meta name="keywords" content="' . Phpfox::getLib('locale')->convert(Phpfox::getParam('core.keywords')) . '" />',				
							'<meta name="description" content="' . Phpfox::getLib('locale')->convert(Phpfox::getParam('core.description')) . '" />',								
							'<meta name="robots" content="index,follow" />',				
							'<meta http-equiv="imagetoolbar" content="no" />',						
							'<meta http-equiv="cache-control" content="no-cache" />',
							'<meta http-equiv="expires" content="-1" />',
							'<meta http-equiv="pragma" content="no-cache" />',						
							'<link rel="shortcut icon" type="image/x-icon" href="' . Phpfox::getParam('core.path') . 'favicon.ico" />'						
						)
					)
					->setHeader('cache', array(
							'layout.css' => 'style_css',
							'common.css' => 'style_css',
							'thickbox.css' => 'style_css',
							'jquery.css' => 'style_css',
							'pager.css' => 'style_css',
							'jquery/jquery.js' => 'static_script'							
						)
					);
				
					if (!Phpfox::isMobile())
					{
						$oTpl->setHeader('cache', array('jquery/ui.js' => 'static_script'));
					}
				
					if (!defined('PHPFOX_IS_AD_PREVIEW') && !defined('PHPFOX_IN_DESIGN_MODE') && !defined('PHPFOX_INSTALLER') && Phpfox::getParam('core.site_wide_ajax_browsing'))
					{
						$oTpl->setHeader('cache', array('jquery/plugin/jquery.address.js' => 'static_script'));
					}				
				
					$oTpl->setHeader('cache', array(
							'common.js' => 'static_script',
							'main.js' => 'static_script',
							'ajax.js' => 'static_script',
							'thickbox/thickbox.js' => 'static_script',
							'search.js' => 'module_friend'					
						)
					);		
		
				if (PHPFOX_DEBUG)
				{
					$oTpl->setHeader('cache', array('debug.css' => 'style_css'));
				}		
				
				if (!Phpfox::isMobile() && Phpfox::isUser() && Phpfox::getParam('user.enable_user_tooltip'))
				{
					$oTpl->setHeader('cache', array(
							'user_info.js' => 'static_script'
						)
					);			
				}
				
				if ($aLocale['direction'] == 'rtl')
				{
					$oTpl->setHeader('cache', array(
							'rtl.css' => 'style_css'
						)
					);
				}
		}
			
		
		(($sPlugin = Phpfox_Plugin::get('get_controller')) ? eval($sPlugin) : false);

		$oModule->getController();
		
		if (!Phpfox::isUser() && !defined('PHPFOX_DONT_SAVE_PAGE'))
		{
			Phpfox::getLib('session')->set('redirect', Phpfox::getLib('url')->getFullUrl(true));
		}
	
		if (!defined('PHPFOX_NO_CSRF'))
		{			
			Phpfox::getService('log.session')->verifyToken();	
		}
		
		(($sPlugin = Phpfox_Plugin::get('run')) ? eval($sPlugin) : false);
	
		if (!self::isAdminPanel())
		{			
				if (!Phpfox::isMobile() && !PHPFOX_IS_AJAX_PAGE && Phpfox::isModule('rss') && !defined('PHPFOX_IS_USER_PROFILE'))
				{
					$aFeeds = Phpfox::getService('rss')->getLinks();
					if (is_array($aFeeds) && count($aFeeds))
					{
						foreach ($aFeeds as $sLink => $sPhrase)
						{
							$oTpl->setHeader('<link rel="alternate" type="application/rss+xml" title="' . $sPhrase . '" href="' . $sLink . '" />');
						}
					}
				}
				
				$aPageLastLogin = ((Phpfox::isModule('pages') && Phpfox::getUserBy('profile_page_id')) ? Phpfox::getService('pages')->getLastLogin() : false);
				
				$oTpl->assign(array(
						'aMenus' => $oTpl->getMenu('main'),
						'aRightMenus' => $oTpl->getMenu('main_right'),
						'aAppMenus' => $oTpl->getMenu('explore'),
						'aSubMenus' => $oTpl->getMenu(),
						'aFooterMenu' => $oTpl->getMenu('footer'),
						'aBlocks1' => ($oTpl->bIsSample ? true : Phpfox::getLib('module')->getModuleBlocks(1)),
						'aBlocks3' => ($oTpl->bIsSample ? true : Phpfox::getLib('module')->getModuleBlocks(3)),								
						'aAdBlocks1' => ($oTpl->bIsSample ? true : (Phpfox::isModule('ad') ? Phpfox::getService('ad')->getForBlock(1) : null)),
						'aAdBlocks3' => ($oTpl->bIsSample ? true : (Phpfox::isModule('ad') ? Phpfox::getService('ad')->getForBlock(3) : null)),								
						'bIsUsersProfilePage' => (defined('PHPFOX_IS_USER_PROFILE') ? true : false),
						'sStyleLogo' => $oTpl->getStyleLogo(),
						'aStyleInUse' => $oTpl->getStyleInUse(),
						'sGlobalUserFullName' => (Phpfox::isUser() ? Phpfox::getUserBy('full_name') : null),
						'aGlobalUser' => (Phpfox::isUser() ? Phpfox::getUserBy(null) : array()),
						'sFullControllerName' => str_replace('.', '_', Phpfox::getLib('module')->getFullControllerName()),
						'iGlobalProfilePageId' => Phpfox::getUserBy('profile_page_id'),
						'aGlobalProfilePageLogin' => $aPageLastLogin,
						'aInstalledApps' => (Phpfox::isUser() ? Phpfox::getService('apps')->getInstalledApps() : array())
					)
				);			
				
				if (isset($aPageLastLogin['style_id']) && $aPageLastLogin['style_id'] > 0)
				{
					Phpfox::getLib('template')->testStyle($aPageLastLogin['style_id']);
				}
				
				if (Phpfox::isModule('captcha'))
				{
				    $sCaptchaHeader = Phpfox::getParam('captcha.recaptcha_header');
				
				    if (strlen(preg_replace('/\s\s+/', '', $sCaptchaHeader)) > 0)
				    {
					    $oTpl->setHeader(array($sCaptchaHeader));
				    }
				}
				
				if (!PHPFOX_IS_AJAX_PAGE && !defined('PHPFOX_SKIP_IM'))
				{
					if (!defined('PHPFOX_IN_DESIGN_MODE'))
					{
						if (Phpfox::isUser() 
							&& Phpfox::isModule('subscribe')
							&& Phpfox::getParam('subscribe.subscribe_is_required_on_sign_up') 
							&& Phpfox::getUserBy('user_group_id') == '2' 
							&& (int) Phpfox::getUserBy('subscribe_id') > 0
						)
						{
				
						}
						else 
						{
							if (Phpfox::isModule('notification') && Phpfox::isUser() && Phpfox::getParam('notification.notify_on_new_request'))
							{
								$oTpl->setHeader('cache', array('update.js' => 'module_notification'));
							}
							
							if (!Phpfox::isMobile() && Phpfox::isModule('im') && Phpfox::isUser() && Phpfox::getUserBy('profile_page_id') <= 0 && Phpfox::getParam('im.enable_im_in_footer_bar') && !$oTpl->bIsSample)
							{
								$oTpl->setPhrase(array(
											'im.conversations',
											'im.more_conversations',
											'im.are_you_sure'
										)
									)
									->setImage(array(
											'misc_minimize' => 'misc/minimize.gif'
										)
									)
									->setHeader('cache', array(
										'im.js' => 'module_im',
										'im.css' => 'style_css',								
										// 'player/' . Phpfox::getParam('core.default_music_player') . '/core.js' => 'static_script',
									)
								)
								->setHeader(array(
										'<script type="text/javascript">oCore[\'im.is_hidden\'] = \'' . Phpfox::getUserBy('im_hide') . '\';</script>',
										// '<script type="text/javascript">$(function() { $Core.player.load({id: \'js_im_player\', type: \'music\'}); });</script>'
									)
								);
							}
						}
					}										
				}
			
		}
		
		if (!PHPFOX_IS_AJAX_PAGE && ($sHeaderFile = $oTpl->getHeaderFile()))
		{
        	require_once($sHeaderFile);
		}
		
		list($aBreadCrumbs, $aBreadCrumbTitle) = $oTpl->getBreadCrumb();

		$oTpl->assign(array(
				'aErrors' => (Phpfox_Error::getDisplay() ? Phpfox_Error::get() : array()),
				'sPublicMessage' => Phpfox::getMessage(),
				'sLocaleDirection' => $aLocale['direction'],
				'sLocaleCode' => $aLocale['language_code'],
				'sLocaleFlagId' => $aLocale['image'],
				'sLocaleName' => $aLocale['title'],
				'aRequests' => Phpfox::getLib('request')->getRequests(),
				'aBreadCrumbs' => $aBreadCrumbs,
				'aBreadCrumbTitle' => $aBreadCrumbTitle,
				'sCopyright' => '&copy; ' . Phpfox::getPhrase('core.copyright') . ' ' . Phpfox::getParam('core.site_copyright')
			)
		);		

		Phpfox::clearMessage();		
		
		unset($_SESSION['phpfox']['image']);		
	
		if (Phpfox::getParam('core.cron'))
		{
			require_once(PHPFOX_DIR_CRON . 'exec.php');
		}

		if (!PHPFOX_IS_AJAX_PAGE && $oTpl->sDisplayLayout)
		{			
			$oTpl->getLayout($oTpl->sDisplayLayout);
		}

		if (Phpfox::getParam('language.cache_phrases'))
		{
			Phpfox::getLib('locale')->cache();
		}		
		
		if (!PHPFOX_IS_AJAX_PAGE && Phpfox::getParam('core.phpfox_is_hosted'))
		{
			$iTotalMembersOnline = Phpfox::getService('log.session')->getOnlineMembers();
			if ($iTotalMembersOnline > Phpfox::getParam('core.phpfox_max_users_online') && $iTotalMembersOnline > (int) Phpfox::getParam('core.phpfox_total_users_online_mark'))
			{
				$oDb = Phpfox::getLib('database');
				$oDb->update(Phpfox::getT('setting'), array('value_actual' => (int) $iTotalMembersOnline), 'var_name = \'phpfox_total_users_online_mark\'');
				
				$sPastHistory = Phpfox::getParam('core.phpfox_total_users_online_history');
				$aPastHistory = array();
				if (!empty($sPastHistory) && Phpfox::getLib('parse.format')->isSerialized($sPastHistory))
				{
					$aPastHistory = unserialize($sPastHistory);	
				}
				$oDb->update(Phpfox::getT('setting'), array('value_actual' => serialize(array_merge($aPastHistory, array(array('time_stamp' => PHPFOX_TIME, 'total' => (int) $iTotalMembersOnline))))), 'var_name = \'phpfox_total_users_online_history\'');
				
				Phpfox::getLib('cache')->remove('setting');
				
				ob_clean();				
			}
		}		
		
		// Use GZIP to output the data if we can		
		if (Phpfox::getParam('core.use_gzip') && !PHPFOX_IS_AJAX_PAGE)
		{						
			$sContent = ob_get_contents();
			
			ob_clean();
	
			if (function_exists('gzencode'))
			{			
				$sGzipContent = gzencode($sContent, Phpfox::getParam('core.gzip_level'), FORCE_GZIP);
			}
			else
			{
				if (function_exists('gzcompress') && function_exists('crc32'))
				{		
					$iSize = strlen($sContent);
					$iCrc = crc32($sContent);
					$sGzipContent = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff";
					$sGzipContent .= substr(gzcompress($sContent, Phpfox::getParam('core.gzip_level')), 2, -4);
					$sGzipContent .= pack('V', $iCrc);
					$sGzipContent .= pack('V', $iSize);		
				}		
			}

			if (isset($sGzipContent))
			{				
				header("Content-Encoding: " . (in_array('x-gzip', Phpfox::getParam('core.gzip_encodings')) ? "x-gzip" : "gzip"));
			}			
			
			echo (isset($sGzipContent) ? $sGzipContent : $sContent);			
		}	
	}
コード例 #5
0
 public function run()
 {
     if (defined('PHPFOX_IS_HOSTED_SCRIPT')) {
         $this->_update();
         exit;
     }
     if ($this->_bUpgrade && (int) substr($this->_getCurrentVersion(), 0, 1) < 2 && file_exists(PHPFOX_DIR . '.htaccess')) {
         $sHtaccessContent = file_get_contents(PHPFOX_DIR . '.htaccess');
         if (preg_match('/RewriteEngine/i', $sHtaccessContent)) {
             exit('In order for us to continue with the upgrade you will need to rename or remove the file ".htaccess".');
         }
     }
     $sStep = $this->_oReq->get('req2') ? strtolower($this->_oReq->get('req2')) : 'key';
     $this->_oTpl->setTitle(self::getPhrase('phpfox_installer'))->setBreadcrumb(self::getPhrase('phpfox_installer'));
     $bPass = false;
     if (!in_array($sStep, $this->_aSteps)) {
         if (in_array($sStep, $this->_aModuleInstalls)) {
             $bPass = true;
         } else {
             exit('Invalid step.');
         }
     }
     $sMethod = '_' . $sStep;
     $iStep = 0;
     foreach ($this->_aSteps as $iKey => $sMyStep) {
         if ($sMyStep === $sStep) {
             $iStep = $iKey - 1;
             break;
         }
     }
     if ($bPass === false && isset($this->_aSteps[$iStep]) && !$this->_isPassed($this->_aSteps[$iStep])) {
         $this->_oUrl->forward($this->_step($this->_aSteps[$iStep]));
     }
     $this->_sStep = $sStep;
     if (method_exists($this, $sMethod)) {
         call_user_func(array(&$this, $sMethod));
     } else {
         $sStep = 'key';
     }
     if (PHPFOX_DEBUG) {
         $this->_oTpl->setHeader(array('debug.css' => 'style_css'));
     }
     if (!file_exists($this->_oTpl->getLayoutFile($sStep))) {
         $sStep = 'default';
     }
     list($aBreadCrumbs, $aBreadCrumbTitle) = $this->_oTpl->getBreadCrumb();
     $this->_oTpl->setImage(array('ajax_small' => 'ajax/small.gif', 'ajax_large' => 'ajax/large.gif', 'loading_animation' => 'misc/loading_animation.gif', 'close' => 'misc/close.gif'));
     $this->_oTpl->setHeader(array('<link rel="shortcut icon" type="image/x-icon" href="' . Phpfox_Installer::getHostPath() . 'favicon.ico?v=' . $this->_oTpl->getStaticVersion() . '" />', 'layout.css' => 'style_css', 'thickbox.css' => 'style_css', 'jquery/jquery.js' => 'static_script', 'common.js' => 'static_script', 'main.js' => 'static_script', 'thickbox/thickbox.js' => 'static_script'))->assign(array('sTemplate' => $sStep, 'sLocaleDirection' => 'ltr', 'sLocaleCode' => 'en', 'sUrl' => $this->_sUrl, 'aErrors' => Phpfox_Error::get(), 'sPublicMessage' => Phpfox::getMessage(), 'aBreadCrumbs' => $aBreadCrumbs, 'aBreadCrumbTitle' => $aBreadCrumbTitle, 'aSteps' => $this->_getSteps()));
     if ($this->_bUpgrade) {
         $this->_oTpl->setTitle('Upgrading from: ' . $this->_getCurrentVersion());
     }
     header("X-Content-Encoded-By: phpFox " . PhpFox::getVersion());
     $this->_oTpl->getLayout('template');
     Phpfox::clearMessage();
 }