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; } }