Skip to content

Commit bb7d6a3

Browse files
committed
add change
1 parent 40177a9 commit bb7d6a3

File tree

4 files changed

+68
-78
lines changed

4 files changed

+68
-78
lines changed

Diff for: Languages/media-module.pot

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
msgid ""
33
msgstr ""
44
"Project-Id-Version: TrayDigita Media Module 1.0.0\n"
5-
"POT-Creation-Date: 2023-10-16 01:39+0700\n"
5+
"POT-Creation-Date: 2023-10-22 02:41+0700\n"
66
"PO-Revision-Date: 2023-09-24 19:00+0700\n"
77
"Last-Translator: ArrayAccess\n"
88
"Language-Team: ArrayAccess\n"
@@ -26,35 +26,35 @@ msgstr ""
2626
"X-Poedit-SearchPathExcluded-1: *.html\n"
2727
"X-Poedit-SearchPathExcluded-2: *.json\n"
2828

29-
#: Media.php:45
29+
#: Media.php:43
3030
msgctxt "module"
3131
msgid "Media Manager"
3232
msgstr ""
3333

34-
#: Media.php:54
34+
#: Media.php:52
3535
msgctxt "module"
3636
msgid ""
3737
"Module to make application support media & file "
3838
"attachments"
3939
msgstr ""
4040

41-
#: Uploader/Abstracts/AbstractUploader.php:126
41+
#: Uploader/Abstracts/AbstractUploader.php:128
4242
msgctxt "module"
4343
msgid "File does not have file name"
4444
msgstr ""
4545

46-
#: Uploader/Abstracts/AbstractUploader.php:141
46+
#: Uploader/Abstracts/AbstractUploader.php:143
4747
#, php-format
4848
msgctxt "module"
4949
msgid "Could not determine file type from mimetype %s"
5050
msgstr ""
5151

52-
#: Uploader/Abstracts/AbstractUploader.php:221
52+
#: Uploader/Abstracts/AbstractUploader.php:259
5353
msgctxt "module"
5454
msgid "Could not save uploaded file"
5555
msgstr ""
5656

57-
#: Uploader/Abstracts/AbstractUploader.php:233
57+
#: Uploader/Abstracts/AbstractUploader.php:271
5858
msgctxt "module"
5959
msgid ""
6060
"Could not save uploaded file & determine target file."

Diff for: Servant/DataServe.php

+25-35
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,17 @@
33

44
namespace ArrayAccess\TrayDigita\App\Modules\Media\Servant;
55

6-
// phpcs:disable PSR1.Files.SideEffects
76
use ArrayAccess\TrayDigita\App\Modules\Media\Media;
7+
use ArrayAccess\TrayDigita\Responder\FileResponder;
88
use ArrayAccess\TrayDigita\Util\Filter\DataNormalizer;
99
use ArrayAccess\TrayDigita\Util\Filter\MimeType;
1010
use DateTimeImmutable;
1111
use DateTimeZone;
1212
use function clearstatcache;
13-
use function fclose;
14-
use function feof;
1513
use function filemtime;
1614
use function filesize;
17-
use function fopen;
18-
use function fread;
19-
use function header;
20-
use function headers_sent;
2115
use function is_file;
2216
use function is_readable;
23-
use function ob_end_flush;
24-
use function ob_get_level;
25-
use function ob_start;
2617
use function str_starts_with;
2718

2819
/**
@@ -49,10 +40,10 @@ public function getNormalizeFile(string $file)
4940
return $this->cachedNormalize[$file]?:null;
5041
}
5142
$file = DataNormalizer::normalizeDirectorySeparator($file);
52-
$uploadDir = $this->uploader->getDataDirectory();
53-
if (!str_starts_with($file, $uploadDir)) {
43+
$uploadDirectory = $this->uploader->getDataDirectory();
44+
if (!str_starts_with($file, $uploadDirectory)) {
5445
$file = DataNormalizer::normalizeDirectorySeparator(
55-
$uploadDir . '/' .$file
46+
$uploadDirectory . '/' .$file
5647
);
5748
}
5849
if (is_file($file) && is_readable($file)) {
@@ -103,33 +94,32 @@ public function getLastModified(string $file) : ?DateTimeImmutable
10394
);
10495
}
10596

97+
/**
98+
* @param string $file
99+
* @param bool $sendHeaderContentLength
100+
* @param bool $allowRange
101+
* @param bool $sendAsAttachment
102+
* @return bool
103+
*/
106104
public function display(
107105
string $file,
108-
bool $sendHeaderContentLength = false
109-
) : int|false {
106+
bool $sendHeaderContentLength = false,
107+
bool $allowRange = false,
108+
bool $sendAsAttachment = false
109+
) : bool {
110+
$file = $this->getNormalizeFile($file);
111+
if (!$file || !is_file($file)) {
112+
return false;
113+
}
110114
$size = $this->size($file);
111115
if ($size === false) {
112116
return false;
113117
}
114-
115-
$file = $this->uploader->getDataDirectory() . '/'. $file;
116-
$resource = fopen($file, 'rb');
117-
$level = ob_get_level();
118-
if ($level > 0) {
119-
ob_end_flush();
120-
}
121-
if ($sendHeaderContentLength && !headers_sent()) {
122-
header('Content-Length: %d', $size);
123-
}
124-
while (!feof($resource)) {
125-
echo fread($resource, 8192);
126-
}
127-
fclose($resource);
128-
129-
// re-start buffer
130-
if ($level > ob_get_level()) {
131-
ob_start();
132-
}
133-
return $size;
118+
$responder = (new FileResponder($file));
119+
$responder->sendContentLength($sendHeaderContentLength);
120+
$responder->setAllowRange($allowRange);
121+
$responder->sendAsAttachment($sendAsAttachment);
122+
// never
123+
$responder->send();
134124
}
135125
}

Diff for: Traits/MediaFilterTrait.php

+20-20
Original file line numberDiff line numberDiff line change
@@ -89,19 +89,19 @@ public function getAttachmentFileToBasePath(
8989
string $path
9090
): ?string {
9191
$path = DataNormalizer::normalizeUnixDirectorySeparator($path);
92-
$uploadDir = DataNormalizer::normalizeUnixDirectorySeparator(
92+
$uploadDirectory = DataNormalizer::normalizeUnixDirectorySeparator(
9393
$this->getUploadDirectory()
9494
);
95-
$dataDir = DataNormalizer::normalizeUnixDirectorySeparator(
95+
$dataDirectory = DataNormalizer::normalizeUnixDirectorySeparator(
9696
$this->getUploadDirectory()
9797
);
98-
$avatarDir = DataNormalizer::normalizeUnixDirectorySeparator(
98+
$avatarDirectory = DataNormalizer::normalizeUnixDirectorySeparator(
9999
$this->getUploadDirectory()
100100
);
101101

102-
$currentDirectory = str_starts_with($path, $avatarDir) ? $avatarDir : null;
103-
$currentDirectory ??= str_starts_with($path, $uploadDir) ? $uploadDir : null;
104-
$currentDirectory ??= str_starts_with($path, $dataDir) ? $dataDir : null;
102+
$currentDirectory = str_starts_with($path, $avatarDirectory) ? $avatarDirectory : null;
103+
$currentDirectory ??= str_starts_with($path, $uploadDirectory) ? $uploadDirectory : null;
104+
$currentDirectory ??= str_starts_with($path, $dataDirectory) ? $dataDirectory : null;
105105
if (!$currentDirectory) {
106106
return null;
107107
}
@@ -122,44 +122,44 @@ public function getUploadFileToBasePath(
122122
string $path
123123
) : ?string {
124124
$path = DataNormalizer::normalizeUnixDirectorySeparator($path);
125-
$uploadDir = DataNormalizer::normalizeUnixDirectorySeparator(
125+
$uploadDirectory = DataNormalizer::normalizeUnixDirectorySeparator(
126126
$this->getUploadDirectory()
127127
);
128128
/** @noinspection DuplicatedCode */
129-
if (!str_starts_with($path, $uploadDir)) {
129+
if (!str_starts_with($path, $uploadDirectory)) {
130130
return null;
131131
}
132-
$uploadDir = ltrim(substr($path, strlen($uploadDir)), '/');
133-
if (str_starts_with($uploadDir, $this->getFrontendPath())
134-
|| str_starts_with($uploadDir, $this->getBackendPath())
132+
$uploadDirectory = ltrim(substr($path, strlen($uploadDirectory)), '/');
133+
if (str_starts_with($uploadDirectory, $this->getFrontendPath())
134+
|| str_starts_with($uploadDirectory, $this->getBackendPath())
135135
) {
136-
$explode = explode('/', $uploadDir, 2);
136+
$explode = explode('/', $uploadDirectory, 2);
137137
array_shift($explode);
138138
return implode('/', $explode);
139139
}
140-
return $uploadDir;
140+
return $uploadDirectory;
141141
}
142142

143143
public function getDataFileToBasePath(
144144
string $path
145145
) : ?string {
146146
$path = DataNormalizer::normalizeUnixDirectorySeparator($path);
147-
$dataDir = DataNormalizer::normalizeUnixDirectorySeparator(
147+
$dataDirectory = DataNormalizer::normalizeUnixDirectorySeparator(
148148
$this->getDataDirectory()
149149
);
150150
/** @noinspection DuplicatedCode */
151-
if (!str_starts_with($path, $dataDir)) {
151+
if (!str_starts_with($path, $dataDirectory)) {
152152
return null;
153153
}
154-
$dataDir = ltrim(substr($path, strlen($dataDir)), '/');
155-
if (str_starts_with($dataDir, $this->getFrontendPath())
156-
|| str_starts_with($dataDir, $this->getBackendPath())
154+
$dataDirectory = ltrim(substr($path, strlen($dataDirectory)), '/');
155+
if (str_starts_with($dataDirectory, $this->getFrontendPath())
156+
|| str_starts_with($dataDirectory, $this->getBackendPath())
157157
) {
158-
$explode = explode('/', $dataDir, 2);
158+
$explode = explode('/', $dataDirectory, 2);
159159
array_shift($explode);
160160
return implode('/', $explode);
161161
}
162-
return $dataDir;
162+
return $dataDirectory;
163163
}
164164

165165
public function getUploadFileToURI(

Diff for: Traits/MediaPathTrait.php

+16-16
Original file line numberDiff line numberDiff line change
@@ -62,34 +62,34 @@ private function doFilterPath(): static
6262
$this->registeredPathInit = true;
6363
$path = ContainerHelper::service(Config::class, $this->getContainer())->get('path');
6464
$path = $path instanceof Config ? $path : new Config();
65-
$dataDir = $path->get('data');
66-
if (!$dataDir || !is_string($dataDir)) {
67-
$dataDir = dirname(TD_APP_DIRECTORY) . '/data';
65+
$dataDirectory = $path->get('data');
66+
if (!$dataDirectory || !is_string($dataDirectory)) {
67+
$dataDirectory = dirname(TD_APP_DIRECTORY) . '/data';
6868
}
69-
if (!is_dir($dataDir)) {
70-
mkdir($dataDir, 0755, true);
69+
if (!is_dir($dataDirectory)) {
70+
mkdir($dataDirectory, 0755, true);
7171
}
72-
$uploadDir = $path->get('upload');
73-
$publicDir = $path->get('public');
74-
if (!$uploadDir || !is_string($uploadDir) || !is_dir($uploadDir)) {
75-
if (!is_string($publicDir)
76-
|| !$publicDir
77-
|| !realpath($publicDir)
72+
$uploadDirectory = $path->get('upload');
73+
$publicDirectory = $path->get('public');
74+
if (!$uploadDirectory || !is_string($uploadDirectory) || !is_dir($uploadDirectory)) {
75+
if (!is_string($publicDirectory)
76+
|| !$publicDirectory
77+
|| !realpath($publicDirectory)
7878
) {
7979
if (!defined('TD_INDEX_FILE')) {
8080
throw new RuntimeException(
8181
'Could not determine public directory'
8282
);
8383
}
84-
$publicDir = dirname(TD_INDEX_FILE);
84+
$publicDirectory = dirname(TD_INDEX_FILE);
8585
} else {
86-
$publicDir = realpath($publicDir);
86+
$publicDirectory = realpath($publicDirectory);
8787
}
88-
$uploadDir = $publicDir . '/uploads';
88+
$uploadDirectory = $publicDirectory . '/uploads';
8989
}
9090

91-
$this->dataDirectory = DataNormalizer::normalizeDirectorySeparator($dataDir);
92-
$this->uploadDirectory = DataNormalizer::normalizeUnixDirectorySeparator($uploadDir);
91+
$this->dataDirectory = DataNormalizer::normalizeDirectorySeparator($dataDirectory);
92+
$this->uploadDirectory = DataNormalizer::normalizeUnixDirectorySeparator($uploadDirectory);
9393
$this->publicDirectory = DataNormalizer::normalizeDirectorySeparator(dirname($this->uploadDirectory));
9494
return $this;
9595
}

0 commit comments

Comments
 (0)