예제 #1
0
 public function renderRedirect($redirectType, $redirectTarget, $redirectMessage = null, array $redirectParams = array())
 {
     if (XenForo_ViewRenderer_Abstract::hasManualDeferredToRun()) {
         $this->_response->setRedirect('admin.php?tools/run-deferred&redirect=' . urlencode($redirectTarget), 303);
         $this->_needsContainer = false;
         return '';
     } else {
         return parent::renderRedirect($redirectType, $redirectTarget, $redirectMessage, $redirectParams);
     }
 }
 /**
  * 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;
     }
 }