![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/pdf-ai.com/public_html/vendor/php-flasher/flasher/Http/ |
<?php
/*
* This file is part of the PHPFlasher package.
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
*/
namespace Flasher\Prime\Http;
use Flasher\Prime\FlasherInterface;
use Flasher\Prime\Response\Presenter\HtmlPresenter;
final class ResponseExtension
{
/**
* @var FlasherInterface
*/
private $flasher;
public function __construct(FlasherInterface $flasher)
{
$this->flasher = $flasher;
}
/**
* @return ResponseInterface
*/
public function render(RequestInterface $request, ResponseInterface $response)
{
if (!$this->isRenderable($request, $response)) {
return $response;
}
$content = $response->getContent() ?: '';
if (!\is_string($content)) {
return $response;
}
$placeHolders = array(
HtmlPresenter::FLASHER_FLASH_BAG_PLACE_HOLDER,
HtmlPresenter::HEAD_END_PLACE_HOLDER,
HtmlPresenter::BODY_END_PLACE_HOLDER,
);
foreach ($placeHolders as $insertPlaceHolder) {
$insertPosition = strripos($content, $insertPlaceHolder);
if (false !== $insertPosition) {
break;
}
}
if (false === $insertPosition) {
return $response;
}
$alreadyRendered = HtmlPresenter::FLASHER_FLASH_BAG_PLACE_HOLDER === $insertPlaceHolder;
$htmlResponse = $this->flasher->render(array(), 'html', array('envelopes_only' => $alreadyRendered));
if (empty($htmlResponse)) {
return $response;
}
$htmlResponse = "\n".str_replace("\n", '', $htmlResponse)."\n";
$content = substr($content, 0, $insertPosition).$htmlResponse.substr($content, $insertPosition + \strlen($insertPlaceHolder));
$response->setContent($content);
return $response;
}
/**
* @return bool
*/
private function isRenderable(RequestInterface $request, ResponseInterface $response)
{
return !$request->isXmlHttpRequest()
&& $request->isHtmlRequestFormat()
&& $request->hasSession()
&& !$response->isRedirection()
&& $response->isHtml()
&& !$response->isAttachment()
&& !$response->isJson();
}
}