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; }
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 } } }
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) { } }
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(); } }