19declare(strict_types=1);
26use Psr\Http\Message\ResponseInterface;
33 protected const MIME_TYPE_MAP = __DIR__ .
'/../../../FileUpload/src/mime_type_map.php';
42 if (is_readable(self::MIME_TYPE_MAP)) {
45 $this->mime_type_map = $map ?? [];
50 ?
string $path_to_delete =
null
52 $sender = function () use ($r): void {
53 $this->
http->saveResponse($r);
54 $this->
http->sendResponse();
58 if ($path_to_delete !==
null && file_exists($path_to_delete)) {
59 ignore_user_abort(
true);
69 unlink($path_to_delete);
80 Disposition $disposition = Disposition::INLINE
81 ): ResponseInterface {
82 $r = $r->withHeader(
'X-ILIAS-FileDelivery-Method', $this->response_builder->getName());
83 $r = $r->withHeader(ResponseHeader::CONTENT_TYPE, $mime_type);
85 ResponseHeader::CONTENT_DISPOSITION,
86 $disposition->value .
'; filename="' . $file_name .
'"'
88 $r = $r->withHeader(ResponseHeader::CACHE_CONTROL,
'max-age=31536000, immutable, private');
90 return $r->withHeader(
91 ResponseHeader::EXPIRES,
92 date(
"D, j M Y H:i:s", strtotime(
'+5 days')) .
" GMT"
setGeneralHeaders(ResponseInterface $r, string $uri, string $mime_type, string $file_name, Disposition $disposition=Disposition::INLINE)
saveAndClose(ResponseInterface $r, ?string $path_to_delete=null)
__construct(protected Services $http, protected ResponseBuilder $response_builder, protected ResponseBuilder $fallback_response_builder,)
static http()
Fetches the global http state from ILIAS.