예제 #1
0
파일: Batch.php 프로젝트: billyprice1/bdApi
 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);
 }
예제 #2
0
파일: Cors.php 프로젝트: billyprice1/bdApi
 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;
     }
 }
예제 #5
0
 /**
  * Pre-loads the specified template.
  *
  * @param string $template
  */
 public function preLoadTemplate($template)
 {
     $this->_renderer->preloadTemplate($template);
 }
예제 #6
0
 /**
  * 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);
 }
예제 #7
0
 /**
  * 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;
 }
예제 #8
0
파일: Json.php 프로젝트: Sywooch/forums
 /**
  * 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;
 }
예제 #9
0
파일: Raw.php 프로젝트: Sywooch/forums
 /**
  * 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);
 }
예제 #10
0
 /**
  * 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);
 }