public static function prepareViewParams(XenForo_ViewRenderer_Abstract $viewRenderer, XenForo_View $view) { $params = $view->getParams(); $jobs = array(); if (!empty($params['jobs'])) { foreach ($params['jobs'] as $jobId => $job) { $preparedJob = array(); if (empty($job['_job_result'])) { continue; } $preparedJob['_job_result'] = $job['_job_result']; switch ($job['_job_result']) { case 'error': if (empty($job['_job_error'])) { continue; } $preparedJob['_job_error'] = $job['_job_error']; break; case 'message': if (empty($job['_job_message'])) { continue; } $preparedJob['_job_message'] = $job['_job_message']; break; case 'ok': if (empty($job['_job_response'])) { continue; } /** @var XenForo_ControllerResponse_View $response */ $response = $job['_job_response']; $viewOutput = $viewRenderer->renderViewObject($response->viewName, 'Json', $response->params, $response->templateName); if (!is_array($viewOutput)) { $viewOutput = @json_decode($viewOutput, true); } if (is_array($viewOutput)) { $preparedJob = array_merge($preparedJob, $viewOutput); } elseif ($viewOutput === null) { $preparedJob = array_merge($preparedJob, $response->params); } break; default: continue; } $jobs[$jobId] = $preparedJob; } } return array('jobs' => $jobs); }
public static function addHeaders(XenForo_ViewRenderer_Abstract $viewRenderer, Zend_Controller_Response_Http $response) { if (!bdApi_Option::get('cors')) { return; } $request = $viewRenderer->getRequest(); $origin = $request->getHeader('Origin'); if (!empty($origin)) { $response->setHeader('Access-Control-Allow-Origin', $origin, true); $response->setHeader('Access-Control-Allow-Credentials', 'true', true); } else { $response->setHeader('Access-Control-Allow-Origin', '*', true); } $method = $request->getHeader('Access-Control-Request-Method'); if (!empty($method)) { $response->setHeader('Access-Control-Allow-Method', $method, true); } $headers = $request->getHeader('Access-Control-Request-Headers'); if (!empty($headers)) { $response->setHeader('Access-Control-Allow-Headers', $headers, true); } }
public function renderOptions(XenForo_ViewRenderer_Abstract $viewRenderer, array &$templateParams) { $templateParams['namePrefix'] = self::getNamePrefix(); $templateParams['options_loaded'] = get_class($this); $templateParams['options'] = !empty($templateParams['widget']['options']) ? $templateParams['widget']['options'] : array(); $templateParams['rendererConfiguration'] = $this->getConfiguration(); if ($this->_getOptionsTemplate()) { $optionsTemplate = $viewRenderer->createTemplateObject($this->_getOptionsTemplate(), $templateParams); $this->_renderOptions($optionsTemplate); $templateParams['optionsRendered'] = $optionsTemplate->render(); } }
/** * Renders the view. * * @param XenForo_ControllerResponse_Abstract Controller response object from last controller * @param XenForo_ViewRenderer_Abstract View renderer for specified response type * @param array Extra container params (probably "sections" from routing) * * @return string View output */ public function renderView(XenForo_ControllerResponse_Abstract $controllerResponse, XenForo_ViewRenderer_Abstract $viewRenderer, array $containerParams = array()) { $this->_dependencies->preRenderView($controllerResponse); $this->_response->setHeader('Last-Modified', gmdate('D, d M Y H:i:s') . ' GMT', true); if ($controllerResponse->responseCode) { $this->_response->setHttpResponseCode($controllerResponse->responseCode); if (!empty($controllerResponse->containerParams['allowHeader'])) { $this->_response->setHeader('Allow', $controllerResponse->containerParams['allowHeader']); } } if ($controllerResponse instanceof XenForo_ControllerResponse_Error) { $innerContent = $viewRenderer->renderError($controllerResponse->errorText); } else { if ($controllerResponse instanceof XenForo_ControllerResponse_Message) { $innerContent = $viewRenderer->renderMessage($controllerResponse->message); } else { if ($controllerResponse instanceof XenForo_ControllerResponse_View) { $viewRenderer->addJsonParams($controllerResponse->jsonParams); $innerContent = $viewRenderer->renderView($controllerResponse->viewName, $controllerResponse->params, $controllerResponse->templateName, $controllerResponse->subView); } else { if ($controllerResponse instanceof XenForo_ControllerResponse_Redirect) { $target = XenForo_Link::convertUriToAbsoluteUri($controllerResponse->redirectTarget, true); $innerContent = $viewRenderer->renderRedirect($controllerResponse->redirectType, $target, $controllerResponse->redirectMessage, $controllerResponse->redirectParams); } else { // generally shouldn't happen $innerContent = false; } } } } if ($innerContent === false || $innerContent === null) { $innerContent = $viewRenderer->renderUnrepresentable(); } if ($viewRenderer->getNeedsContainer()) { $specificContainerParams = XenForo_Application::mapMerge($containerParams, $controllerResponse->containerParams); $containerParams = $this->_dependencies->getEffectiveContainerParams($specificContainerParams, $this->_request); return $viewRenderer->renderContainer($innerContent, $containerParams); } else { return $innerContent; } }
/** * Pre-loads the specified template. * * @param string $template */ public function preLoadTemplate($template) { $this->_renderer->preloadTemplate($template); }
/** * Constructor * @see XenForo_ViewRenderer_Abstract::__construct() */ public function __construct(XenForo_Dependencies_Abstract $dependencies, Zend_Controller_Response_Http $response, Zend_Controller_Request_Http $request) { parent::__construct($dependencies, $response, $request); $this->_response->setHeader('Content-Type', 'application/xml; charset=UTF-8', true); }
/** * Renders the container. * @see XenForo_ViewRenderer_Abstract::renderContainer() * * @param string * @param array * * @return string */ public function renderContainer($contents, array $params = array()) { $options = XenForo_Application::get('options'); $params['debugMode'] = XenForo_Application::debugMode(); $params['debugFormBackground'] = $options->debugFormBackground; if (!empty($params['adminNavigation']['sideLinks'])) { $params['sideNav'] = $this->_renderSideNav($params['adminNavigation']['sideLinksRoot'], $params['adminNavigation']['sideLinks']); } else { $params['sideNav'] = array(); } $params['serverTimeInfo'] = XenForo_Locale::getDayStartTimestamps(); $params['publicUrl'] = $options->useFriendlyUrls ? './' : 'index.php'; if (!isset($params['allowManualDeferredRun'])) { $params['allowManualDeferredRun'] = true; } $params['hasManualDeferred'] = XenForo_ViewRenderer_Abstract::hasManualDeferredToRun($params['allowManualDeferredRun']) || !empty($params['hasManualDeferred']); $templateName = !empty($params['containerTemplate']) ? $params['containerTemplate'] : 'PAGE_CONTAINER'; $template = $this->createTemplateObject($templateName, $params); if ($contents instanceof XenForo_Template_Abstract) { $contents = $contents->render(); } $template->setParams($this->_dependencies->getExtraContainerData()); $template->setParam('contents', $contents); if ($params['debugMode']) { $template->setParams(XenForo_Debug::getDebugTemplateParams()); } $rendered = $template->render(); $rendered = $this->replaceRequiredExternalPlaceholders($template, $rendered); $language = XenForo_Visitor::getInstance()->getLanguage(); if (isset($language['text_direction']) && $language['text_direction'] == 'RTL') { $rendered = XenForo_Template_Helper_RightToLeft::replaceRtlEntities($rendered); } return $rendered; }
/** * Add default parameters to the provided parameters array * * @param array $params * * @return array */ protected static function _addDefaultParams(array &$params = array()) { $visitor = XenForo_Visitor::getInstance(); if ($visitor->getUserId()) { $params['_visitor_conversationsUnread'] = XenForo_Locale::numberFormat($visitor->conversations_unread); $params['_visitor_alertsUnread'] = XenForo_Locale::numberFormat($visitor->alerts_unread); } if (XenForo_ViewRenderer_Abstract::hasManualDeferredToRun()) { $params['_manualDeferred'] = true; } if (!empty(XenForo_Application::$autoDeferredIds)) { $params['_autoDeferred'] = true; } return $params; }
/** * Constructor * @see XenForo_ViewRenderer_Abstract::__construct() */ public function __construct(XenForo_Dependencies_Abstract $dependencies, Zend_Controller_Response_Http $response, Zend_Controller_Request_Http $request) { parent::__construct($dependencies, $response, $request); }
/** * Constructor * @see XenForo_ViewRenderer_Abstract::__construct() */ public function __construct(XenForo_Dependencies_Abstract $dependencies, Zend_Controller_Response_Http $response, Zend_Controller_Request_Http $request) { // TODO: Facebook sends text/javascript instead of application/json. SMV says that's a good thing. parent::__construct($dependencies, $response, $request); $this->_response->setHeader('Content-Type', 'application/json; charset=UTF-8', true); }