ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
BaseDelivery.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
26use Psr\Http\Message\ResponseInterface;
27
31abstract class BaseDelivery
32{
33 protected const MIME_TYPE_MAP = __DIR__ . '/../../../FileUpload/src/mime_type_map.php';
34
35 protected array $mime_type_map;
36
37 public function __construct(
38 protected Services $http,
39 protected ResponseBuilder $response_builder,
40 protected ResponseBuilder $fallback_response_builder,
41 ) {
42 if (is_readable(self::MIME_TYPE_MAP)) {
43 $map = include self::MIME_TYPE_MAP;
44 }
45 $this->mime_type_map = $map ?? [];
46 }
47
48 protected function saveAndClose(
49 ResponseInterface $r,
50 ?string $path_to_delete = null
51 ): never {
52 $sender = function () use ($r): void {
53 $this->http->saveResponse($r);
54 $this->http->sendResponse();
55 $this->http->close();
56 };
57
58 if ($path_to_delete !== null && file_exists($path_to_delete)) {
59 ignore_user_abort(true);
60 set_time_limit(0);
61 ob_start();
62
63 $sender();
64
65 ob_flush();
66 ob_end_flush();
67 flush();
68
69 unlink($path_to_delete);
70 } else {
71 $sender();
72 }
73 }
74
75 protected function setGeneralHeaders(
76 ResponseInterface $r,
77 string $uri,
78 string $mime_type,
79 string $file_name,
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);
84 $r = $r->withHeader(
85 ResponseHeader::CONTENT_DISPOSITION,
86 $disposition->value . '; filename="' . $file_name . '"'
87 );
88 $r = $r->withHeader(ResponseHeader::CACHE_CONTROL, 'max-age=31536000, immutable, private');
89
90 return $r->withHeader(
91 ResponseHeader::EXPIRES,
92 date("D, j M Y H:i:s", strtotime('+5 days')) . " GMT"
93 );
94 }
95}
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,)
Class Services.
Definition: Services.php:38
$http
Definition: deliver.php:30
Interface ResponseHeader.
static http()
Fetches the global http state from ILIAS.