From: Aleksey Filippov Date: Thu, 19 Feb 2026 16:43:10 +0000 (+0300) Subject: auto-claude: subtask-2-3 - Добавить авто-конвертацию MOV/AVI → MP4 в saveUploadedFile() X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=26cee70d72e12611cd8a650fde3608a9305dec35;p=erp24_rep%2Fyii-erp24%2F.git auto-claude: subtask-2-3 - Добавить авто-конвертацию MOV/AVI → MP4 в saveUploadedFile() - Добавлена авто-конвертация MOV/AVI файлов в MP4 после saveAs() - При успешной конвертации оригинальный файл удаляется - URL в записи Files обновляется на MP4 версию - Если FFmpeg недоступен, файл сохраняется в оригинальном формате Co-Authored-By: Claude Opus 4.5 --- diff --git a/erp24/services/FileService.php b/erp24/services/FileService.php index e6ce4e2a..cea7bbe9 100755 --- a/erp24/services/FileService.php +++ b/erp24/services/FileService.php @@ -157,7 +157,22 @@ class FileService $targetFile = $filePath . $uniqueFileName; $file->saveAs($targetFile); - + + // Авто-конвертация MOV/AVI → MP4 + $extension = strtolower($file->extension); + $finalUrl = '/uploads' . $target_dir . $uniqueFileName; + if (in_array($extension, ['mov', 'avi'], true)) { + $mp4FileName = pathinfo($uniqueFileName, PATHINFO_FILENAME) . '.mp4'; + $mp4TargetFile = $filePath . $mp4FileName; + $convertedPath = self::convertToMp4($targetFile, $mp4TargetFile); + if ($convertedPath !== null) { + // Конвертация успешна - используем MP4 + $finalUrl = '/uploads' . $target_dir . $mp4FileName; + // Удаляем оригинальный MOV/AVI файл + @unlink($targetFile); + } + } + $type = 'image'; switch ($file->extension) { case 'txt': @@ -176,7 +191,7 @@ class FileService $fileRecord->entity_id = $entity_id; $fileRecord->entity = $entity; $fileRecord->file_type = $type; - $fileRecord->url = '/uploads' . $target_dir . $uniqueFileName; + $fileRecord->url = $finalUrl; if (!$fileRecord->save()) { Yii::error('Ошибка сохранения записи: ' . json_encode($fileRecord->getErrors(), JSON_UNESCAPED_UNICODE)); }