Exemple #1
0
 public static function getFc()
 {
     static $fcTemp = null;
     if ($fcTemp === null) {
         if (!XenForo_Application::isRegistered('_bdApi_fc')) {
             throw new XenForo_Exception('API front controller cannot be found.');
         }
         /* @var $fc XenForo_FrontController */
         $fc = XenForo_Application::get('_bdApi_fc');
         $fcTemp = new XenForo_FrontController($fc->getDependencies());
         $fcTemp->setup();
     }
     return $fcTemp;
 }
 /**
  *
  * @see ThemeHouse_Listener_Template::_render()
  */
 protected function _render($templateName, $viewParams = null)
 {
     if (!$viewParams) {
         $viewParams = $this->_fetchViewParams();
     }
     return $this->_fc->getDependencies()->createTemplateObject($templateName, $viewParams)->render();
 }
 /**
  * Gets the view renderer for the specified response type.
  *
  * @param string Response type (eg, html, xml, json)
  *
  * @return XenForo_ViewRenderer_Abstract
  */
 protected function _getViewRenderer($responseType)
 {
     $viewRenderer = $this->getViewRenderer(self::$_fc->getResponse(), $responseType, self::$_fc->getRequest(), self::$_fc->getDependencies());
     if ($viewRenderer) {
         return $viewRenderer;
     }
     return $this->_viewRenderer;
 }
Exemple #4
0
 public static function front_controller_pre_route(XenForo_FrontController $fc)
 {
     // use cookie flag to change web UI interface to match requested language_id from api
     $request = $fc->getRequest();
     $apiLanguageId = $request->getParam('_apiLanguageId');
     if (!empty($apiLanguageId) && preg_match('#^(?<timestamp>\\d+) (?<data>.+)$#', $apiLanguageId, $matches)) {
         try {
             $languageId = bdApi_Crypt::decryptTypeOne($matches['data'], $matches['timestamp']);
             if ($languageId > 0) {
                 $cookiePrefix = XenForo_Application::getConfig()->get('cookie')->get('prefix');
                 XenForo_Helper_Cookie::setCookie('language_id', $languageId);
                 $_COOKIE[$cookiePrefix . 'language_id'] = $languageId;
                 $fc->getResponse()->setHeader('X-Api-Language', $languageId);
             }
         } catch (XenForo_Exception $e) {
             // ignore
         }
     }
 }
Exemple #5
0
 public static function postView(XenForo_FrontController $fc, &$output)
 {
     if (!$fc->getDependencies() instanceof XenForo_Dependencies_Public) {
         return;
     }
     if (!is_string($output) || empty($output)) {
         return;
     }
     try {
         if (preg_match('#<body[^>]*>#sU', $output)) {
             self::_changeExternalLinks($output);
         } else {
             $json = json_decode($output, true);
             if ($json && isset($json['templateHtml'])) {
                 self::_changeExternalLinks($json['templateHtml']);
                 $output = json_encode($json);
             }
         }
     } catch (Exception $e) {
     }
 }
Exemple #6
0
 public static function frontControllerPreView(XenForo_FrontController $fc, XenForo_ControllerResponse_Abstract &$controllerResponse, XenForo_ViewRenderer_Abstract &$viewRenderer, array &$containerParams)
 {
     $dependencies = $fc->getDependencies();
     if ($dependencies instanceof XenForo_Dependencies_Admin) {
         if ($controllerResponse->controllerAction == 'RunDeferred') {
             return;
         }
         $xenAddons = XenForo_Application::get('addOns');
         if (empty($xenAddons['Brivium_AdminStyleSystem'])) {
             return;
         }
         $dataRegistryModel = self::getModelFromCache('XenForo_Model_DataRegistry');
         $dataRegistries = $dataRegistryModel->getMulti(array('adminStyles', 'BRASS_rebuildTemplate'));
         $adminStyles = !empty($dataRegistries['adminStyles']) ? $dataRegistries['adminStyles'] : false;
         if (!is_array($adminStyles)) {
             $styleModel = XenForo_Model::create('XenForo_Model_Style');
             $styleModel->setAdminStyles(true);
             $adminStyles = $styleModel->rebuildStyleCache();
         }
         XenForo_Application::set('adminStyles', $adminStyles);
         if (!empty($dataRegistries['BRASS_rebuildTemplate']) && $dataRegistries['BRASS_rebuildTemplate'] < XenForo_Application::$time - 60) {
             XenForo_Application::defer('Atomic', array('simple' => array('Brivium_AdminStyleSystem_Deferred_RebuildAllAdminTemplate', 'Brivium_AdminStyleSystem_Deferred_AdminTemplateReparse', 'Brivium_AdminStyleSystem_Deferred_AdminTemplate')), 'BRASS_rebuildAllAdminTemplates', true);
             return;
         }
         $brAdminTemplateModel = self::getModelFromCache('Brivium_AdminStyleSystem_Model_AdminTemplate');
         if (!$brAdminTemplateModel->isRebuildTemplate()) {
             return;
         }
         $tmpDependencies = new Brivium_AdminStyleSystem_Dependencies_Admin();
         list(self::$_defaultTemplateParams, self::$_setStyleProperties) = $tmpDependencies->preRenderView();
         if ($viewRenderer instanceof XenForo_ViewRenderer_HtmlAdmin) {
             $viewRenderer = new Brivium_AdminStyleSystem_ViewRenderer_HtmlAdmin($dependencies, $fc->getResponse(), $fc->getRequest());
         } elseif ($viewRenderer instanceof XenForo_ViewRenderer_Json) {
             $viewRenderer = new XenForo_ViewRenderer_Json($tmpDependencies, $fc->getResponse(), $fc->getRequest());
         }
     }
 }
<?php

$startTime = microtime(true);
$fileDir = dirname(__FILE__);
$rootPath = realpath($fileDir . '/..');
chdir($rootPath);
require $rootPath . '/library/XenForo/Autoloader.php';
XenForo_Autoloader::getInstance()->setupAutoloader($rootPath . '/library');
XenForo_Application::initialize($rootPath . '/library', $rootPath, false);
XenForo_Application::set('page_start_time', $startTime);
XenForo_Phrase::setPhrases(require $fileDir . '/language_en.php');
XenForo_Template_Install::setFilePath($fileDir . '/templates');
$fc = new XenForo_FrontController(new XenForo_Dependencies_Install());
$fc->run();
 public static function front_controller_post_view(XenForo_FrontController $fc, &$output)
 {
     // FailSafe
     if (!$fc) {
         return false;
     }
     $dependencies = $fc->getDependencies();
     // Disable on Admin dependencies
     if ($dependencies instanceof XenForo_Dependencies_Admin) {
         return false;
     }
     // XenForo Route
     $route = $fc->route();
     // Disable on attachment controller
     if ($route->getControllerName() === "XenForo_ControllerPublic_Attachment") {
         return false;
     }
     if ($route->getResponseType() === "html") {
         $keyPos = strpos($output, '<!--EHSS_Widget_Exists-->');
         if ($keyPos !== false) {
             $req = new Zend_Controller_Request_Http();
             $res = new Zend_Controller_Response_Http();
             $viewRenderer = $dependencies->getViewRenderer($res, 'html', $req);
             $template = $viewRenderer->renderView('', array(), 'eh_socialshare_js');
             $output = str_replace('<!--EHSS_Widget_Exists-->', '', $output);
             $output = str_replace('<script type="text/javascript" data-ehss="true"></script>', $template, $output);
         } else {
             $output = str_replace('<script type="text/javascript" data-ehss="true"></script>', '', $output);
         }
         return true;
     } else {
         return false;
     }
 }
 public static function listen(XenForo_FrontController $fc, XenForo_ControllerResponse_Abstract &$controllerResponse, XenForo_ViewRenderer_Abstract &$viewRenderer, array &$containerParams)
 {
     $options = XenForo_Application::get('options');
     if (!$options->dark_azucloud_enabled) {
         return;
     }
     $search_engines = array("google." => "q", "search.yahoo." => "p", "bing." => "q", "ask." => "q", "search.aol." => "query", "search.msn." => "q", "search.live." => "q");
     /** @var Dark_AzuCloud_Model_Nakano */
     $azumodel = Xenforo_Model::create('Dark_AzuCloud_Model_Nakano');
     $route = $fc->getRequest()->getParam('_matchedRoutePath');
     // If we're in the admin panel or on an error page bail out before the route/controller match
     if (substr($controllerResponse->controllerName, 0, 23) != 'XenForo_ControllerAdmin' && $azumodel->matchPage($controllerResponse->controllerName, $controllerResponse->controllerAction, $route) && !($controllerResponse instanceof XenForo_ControllerResponse_Exception || $controllerResponse instanceof XenForo_ControllerResponse_Error)) {
         if (strlen($route) > 0) {
             // First we try and add any search terms coming with the request
             if (!empty($_SERVER['HTTP_REFERER'])) {
                 $referer_parsed = parse_url($_SERVER['HTTP_REFERER']);
                 // invalid url in referer? bail!
                 if ($referer_parsed !== false && array_key_exists('host', $referer_parsed) && !empty($referer_parsed['host'])) {
                     $referer = strtolower($referer_parsed['host']);
                     if (substr($referer, 0, 4) == 'www.') {
                         $referer = substr($referer, 4);
                     }
                     foreach ($search_engines as $search_engine => $delim) {
                         if (substr($referer, 0, strlen($search_engine)) == $search_engine) {
                             $clean_referer = str_replace(array('&fp_ip=', 'site%3A', '&esq='), '', $_SERVER['HTTP_REFERER']);
                             if (preg_match('/' . $delim . '=(.*?)&/', $clean_referer, $matches) && count($matches) == 2) {
                                 $query = urldecode($matches[1]);
                                 $query = str_replace(array('"', "'"), "", $query);
                                 $query = implode(' ', preg_split('/[\\s,\\+]+/', $query));
                                 if ($options->dark_azucloud_operators) {
                                     $query = preg_replace('/(^|[\\s])[-\\+~](\\S+)/', '$1$2', $query);
                                     $query = preg_replace('/(^|[\\s])(?:allintitle|allinurl|allinanchor|inanchor|intext|intitle|inurl|link|site)\\:(\\S+)/', '$1$2', $query);
                                 }
                                 // Very unlikely we want anything < 3 letters ;)
                                 if (strlen($query) > 2 && (!$options->dark_azucloud_boardurl || stripos(str_ireplace("www.", "", $query), str_ireplace("www.", "", $options->boardUrl)) === false)) {
                                     $azumodel->hitSearchTerm($query, $route);
                                 }
                             }
                         }
                     }
                 }
             }
             // Next we want to get the data to stick in the tag cloud...
             $terms = $azumodel->getTermsForRoute($route, XenForo_Application::get('options')->dark_azucloud_limit, XenForo_Application::get('options')->dark_azucloud_cutoff);
             if (count($terms) > 0) {
                 foreach ($terms as &$term) {
                     $term['value'] = XenForo_Helper_String::censorString($term['value']);
                     $term['tag'] = 'span';
                 }
                 $containerParams['dark_azucloud_enable'] = true;
             }
             if (array_key_exists(0, $terms)) {
                 $terms[0]['tag'] = 'h2';
             }
             if (array_key_exists(1, $terms)) {
                 $terms[1]['tag'] = 'h3';
             }
             if (array_key_exists(2, $terms)) {
                 $terms[2]['tag'] = 'h4';
             }
             if (array_key_exists(3, $terms)) {
                 $terms[3]['tag'] = 'strong';
             }
             $containerParams['dark_azucloud_terms'] = $terms;
             $containerParams['dark_azucloud_count'] = count($terms);
         }
     }
 }
 public static function front_controller_post_view(XenForo_FrontController $fc, &$output)
 {
     $responseType = $fc->route()->getResponseType();
     $controllerName = $fc->route()->getControllerName();
     $dependencies = $fc->getDependencies();
     // Disable on Admin features
     if ($dependencies instanceof XenForo_Dependencies_Admin) {
         return;
     }
     // Disable on attachments
     if ($controllerName === "XenForo_ControllerPublic_Attachment") {
         return;
     }
     if ($responseType === "html") {
         $ehss_keyPos = strpos($output, '<!--EHSS_Widget_Exist-->');
         if ($ehss_keyPos !== false) {
             // Is this the only way to fetch template..?
             $request = new Zend_Controller_Request_Http();
             $response = new Zend_Controller_Response_Http();
             $viewRenderer = $dependencies->getViewRenderer($response, 'html', $request);
             $template = $viewRenderer->renderView('', array(), 'eh_socialshare_js');
             $output = str_replace('<!--EHSS_Widget_Exist-->', '', $output);
             $output = str_replace('<!--EHSS_Require_JS-->', $template, $output);
         } else {
             $output = str_replace('<!--EHSS_Require_JS-->', '', $output);
         }
     }
 }
 public static function front_controller_post_view(XenForo_FrontController $fc, &$output)
 {
     if (defined('WIDGET_FRAMEWORK_LOADED')) {
         $core = WidgetFramework_Core::getInstance();
         if (!empty($_REQUEST['_getRender']) && !empty($_REQUEST['_renderedIds'])) {
             $controllerResponse = new XenForo_ControllerResponse_View();
             $controllerResponse->viewName = 'WidgetFramework_ViewPublic_Widget_Render';
             $controllerResponse->params = $_REQUEST;
             $viewRenderer = $fc->getDependencies()->getViewRenderer($fc->getResponse(), 'json', $fc->getRequest());
             $output = $fc->renderView($controllerResponse, $viewRenderer);
         }
         if (WidgetFramework_Option::get('layoutEditorEnabled')) {
             foreach (array_keys(self::$_layoutEditorRendered) as $key) {
                 $fc->getResponse()->setHeader('X-Widget-Framework-Rendered', $key, false);
             }
         }
         $core->shutdown();
     }
 }