X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FApp%2FPage.php;h=0d7b1643635cff55cab6248a8ff96c464f245fb8;hb=7bea941f3c03e77d5e59275fbf46272e3a37b1d8;hp=d302ef6c24770f2b3d8ef2ac63e3e6cca7edfcd6;hpb=8bdd90066f82a7ff1be36be3c6c3b49800a078c8;p=friendica.git diff --git a/src/App/Page.php b/src/App/Page.php index d302ef6c24..0d7b164363 100644 --- a/src/App/Page.php +++ b/src/App/Page.php @@ -1,6 +1,6 @@ isNormal()) { Hook::callAll('page_content_top', $this->page['content']); } - $this->page['content'] .= $content; + $this->page['content'] .= (string)$response->getBody(); } /** @@ -370,21 +371,51 @@ class Page implements ArrayAccess $this->footerScripts[] = trim($url, '/'); } + /** + * Directly exit with the current response (include setting all headers) + * + * @param ResponseInterface $response + */ + public function exit(ResponseInterface $response) + { + header(sprintf("HTTP/%s %s %s", + $response->getProtocolVersion(), + $response->getStatusCode(), + $response->getReasonPhrase()) + ); + + foreach ($response->getHeaders() as $key => $header) { + if (is_array($header)) { + $header_str = implode(',', $header); + } else { + $header_str = $header; + } + + if (empty($key)) { + header($header_str); + } else { + header("$key: $header_str"); + } + } + + echo $response->getBody(); + } + /** * Executes the creation of the current page and prints it to the screen * - * @param App $app The Friendica App - * @param BaseURL $baseURL The Friendica Base URL - * @param Arguments $args The Friendica App arguments - * @param Mode $mode The current node mode - * @param string $content The content to print on frontend - * @param L10n $l10n The l10n language class - * @param IManageConfigValues $config The Configuration of this node - * @param IManagePersonalConfigValues $pconfig The personal/user configuration + * @param App $app The Friendica App + * @param BaseURL $baseURL The Friendica Base URL + * @param Arguments $args The Friendica App arguments + * @param Mode $mode The current node mode + * @param ResponseInterface $response The Response of the module class, including type, content & headers + * @param L10n $l10n The l10n language class + * @param IManageConfigValues $config The Configuration of this node + * @param IManagePersonalConfigValues $pconfig The personal/user configuration * * @throws HTTPException\InternalServerErrorException|HTTPException\ServiceUnavailableException */ - public function run(App $app, BaseURL $baseURL, Arguments $args, Mode $mode, string $content, L10n $l10n, Profiler $profiler, IManageConfigValues $config, IManagePersonalConfigValues $pconfig) + public function run(App $app, BaseURL $baseURL, Arguments $args, Mode $mode, ResponseInterface $response, L10n $l10n, Profiler $profiler, IManageConfigValues $config, IManagePersonalConfigValues $pconfig) { $moduleName = $args->getModuleName(); @@ -394,8 +425,7 @@ class Page implements ArrayAccess * Sets the $Page->page['content'] variable */ $timestamp = microtime(true); - $this->initContent($content, $mode); - $profiler->set(microtime(true) - $timestamp, 'content'); + $this->initContent($response, $mode); // Load current theme info after module has been initialized as theme could have been set in module $currentTheme = $app->getCurrentTheme(); @@ -423,6 +453,8 @@ class Page implements ArrayAccess */ $this->initFooter($app, $mode, $l10n); + $profiler->set(microtime(true) - $timestamp, 'aftermath'); + if (!$mode->isAjax()) { Hook::callAll('page_end', $this->page['content']); } @@ -433,6 +465,20 @@ class Page implements ArrayAccess $this->page['nav'] = Nav::build($app); } + foreach ($response->getHeaders() as $key => $header) { + if (is_array($header)) { + $header_str = implode(',', $header); + } else { + $header_str = $header; + } + + if (empty($key)) { + header($header_str); + } else { + header("$key: $header_str"); + } + } + // Build the page - now that we have all the components if (isset($_GET["mode"]) && (($_GET["mode"] == "raw") || ($_GET["mode"] == "minimal"))) { $doc = new DOMDocument();