Skip to content

Commit

Permalink
0.21.0
Browse files Browse the repository at this point in the history
- добавлены воркеры для `AnyFile` и `Audio`
- исправлены пути
- оптимизирована точка входа `Media::upload()`
  • Loading branch information
Karel Wintersky committed Dec 5, 2024
1 parent 049bf0f commit 5be4323
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 37 deletions.
45 changes: 9 additions & 36 deletions src/Media.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use AJUR\FSNews\Media\Constants\ConvertSizes;
use AJUR\FSNews\Media\Helpers\DTHelper;
use AJUR\FSNews\Media\Helpers\MediaHelpers;
use AJUR\FSNews\Media\Workers\Any;
use AJUR\FSNews\Media\Workers\Audio;
use AJUR\FSNews\Media\Workers\Photo;
use AJUR\FSNews\Media\Workers\Video;
Expand Down Expand Up @@ -106,6 +107,9 @@ public function upload($fn_source, $watermark_corner, LoggerInterface $logger =
$f_info_mimetype = finfo_file( $f_info, $fn_source);
$allow = false;

$logger->debug( '[UPLOAD] MIME-тип загруженного файла: ', [ $f_info_mimetype ] );
$logger->debug( '[UPLOAD] Размер загруженного файла: ', [ filesize($fn_source) ] );

foreach (AllowedMimeTypes::$allowed_mime_types as $mimetype) {
if (stripos( $f_info_mimetype, $mimetype ) === 0) {
$allow = true;
Expand Down Expand Up @@ -133,9 +137,8 @@ public function upload($fn_source, $watermark_corner, LoggerInterface $logger =
$result = $worker->upload($fn_source);

} else {

$result = Media::uploadAnyFile( $fn_source, $logger );

$worker = new Any(self::$options, $logger);
$result = $worker->upload($fn_source);
}

return $result;
Expand Down Expand Up @@ -188,38 +191,8 @@ public static function uploadAnyFile($fn_source, LoggerInterface $logger = null)
{
$logger = $logger ?? self::$logger ?? new NullLogger();

$logger->debug('[FILE] Обрабатываем как абстрактный файл (audio/*)');

$path = self::getAbsoluteResourcePath('files', 'now');
self::validatePath($path);
$radix = self::getRandomFilename(20);
$source_extension = MediaHelpers::detectFileExtension($fn_source);
$filename_origin = "{$radix}.{$source_extension}";

$logger->debug("[FILE] Загруженный файл будет иметь корень имени:", [ $filename_origin ]);

$prefix = ConvertSizes::getConvertSizes('files._.prefix');

// никаких действий над файлом не совершается
$fn_target = Path::create($path)->joinName("{$prefix}{$filename_origin}")->toString(); // ПРЕФИКС УЖЕ СОДЕРЖИТ `_`

if (!move_uploaded_file($fn_source, $fn_target)) {
$logger->error("[FILE] Не удалось сохранить сохранить загруженный файл {$fn_source} как файл оригинала {$fn_target}", [ $fn_source, $fn_target ]);
throw new MediaException("Не удалось сохранить сохранить загруженный файл {$fn_source} как файл оригинала {$fn_target}", -1);
}

$logger->debug("[FILE] Загруженный файл {$fn_source} сохранён как оригинал в файл {$fn_target}: ", [ $fn_source, $fn_target ]);

$logger->debug('[FILE] Stored as', [ $fn_target ]);
$logger->debug('[FILE] Returned', [ $fn_target]);

return (new Result())->setData([
'filename' => $fn_target,
'path' => $path,
'radix' => $radix,
'status' => 'ready',
'type' => MediaInterface::MEDIA_TYPE_FILE
]);
$worker = new Any(self::$options, $logger);
return $worker->upload($fn_source);
}

/**
Expand All @@ -240,7 +213,7 @@ public static function uploadVideo($fn_source, LoggerInterface $logger = null):
$worker = new Video(self::$options, $logger);

return $worker->upload($fn_source);
} // uploadVideo
}

/**
* Удаляет тайтловое изображение и все его превьюшки
Expand Down
62 changes: 62 additions & 0 deletions src/Media/Workers/Any.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,75 @@

namespace AJUR\FSNews\Media\Workers;

use AJUR\FSNews\Media\Constants\ContentDirs;
use AJUR\FSNews\Media\Constants\ConvertSizes;
use AJUR\FSNews\Media\Helpers\MediaHelpers;
use AJUR\FSNews\MediaException;
use AJUR\FSNews\MediaInterface;
use Arris\Path;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
use Arris\Entity\Result;

/**
* Воркер для файлов любого (неизвестного) типа и общие обработчики
*/
class Any
{
// deleteAbstractFile(type, cdate, radix name)

/**
* @var NullLogger|null
*/
public $logger;

public array $options = [];

public function __construct(array $options = [], $logger = null)
{
$this->options = $options;
$this->logger = $logger ?? new NullLogger();
}

public function upload($fn_source, LoggerInterface $logger = null):Result
{
$logger = $logger ?? $this->logger ?? new NullLogger();

$logger->debug('[FILE] Обрабатываем как абстрактный файл (audio/*)');

$path = ContentDirs::getAbsoluteResourcePath('files', 'now');
ContentDirs::validatePath($path);
$radix = MediaHelpers::getRandomFilename(20);
$source_extension = MediaHelpers::detectFileExtension($fn_source);
$filename_original = "{$radix}.{$source_extension}";

$logger->debug("[FILE] Загруженный файл будет иметь корень имени:", [ $filename_original ]);

$prefix = ConvertSizes::getConvertSizes('files._.prefix');

// никаких действий над файлом не совершается
$fn_target = Path::create($path)->joinName("{$prefix}{$filename_original}")->toString(); // ПРЕФИКС УЖЕ СОДЕРЖИТ `_`

if (!move_uploaded_file($fn_source, $fn_target)) {
$logger->error("[FILE] Не удалось сохранить сохранить загруженный файл {$fn_source} как файл оригинала {$fn_target}", [ $fn_source, $fn_target ]);
throw new MediaException("Не удалось сохранить сохранить загруженный файл {$fn_source} как файл оригинала {$fn_target}", -1);
}

$logger->debug("[FILE] Загруженный файл {$fn_source} сохранён как оригинал в файл {$fn_target}: ", [ $fn_source, $fn_target ]);

$logger->debug('[FILE] Stored as', [ $fn_target ]);
$logger->debug('[FILE] Returned', [ $fn_target]);

return (new Result())->setData([
'filename' => "{$prefix}{$filename_original}",
'path' => $path,
'radix' => $radix,
'status' => 'ready',
'type' => MediaInterface::MEDIA_TYPE_FILE
]);

}



}
2 changes: 1 addition & 1 deletion src/Media/Workers/Audio.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public function upload($fn_source, LoggerInterface $logger = null): Result
$logger->debug('[AUDIO] Returned', [ $fn_origin ]);

return (new Result())->setData([
'filename' => $fn_origin,
'filename' => "{$prefix}{$filename_original}",
'path' => $path,
'radix' => $radix,
'extension' => $source_extension,
Expand Down

0 comments on commit 5be4323

Please sign in to comment.