]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
auto-claude: subtask-2-3 - Добавить авто-конвертацию MOV/AVI → MP4 в saveUploadedFile()
authorAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Thu, 19 Feb 2026 16:43:10 +0000 (19:43 +0300)
committerAleksey Filippov <Aleksey.Filippov@erp-flowers.ru>
Thu, 19 Feb 2026 16:43:10 +0000 (19:43 +0300)
- Добавлена авто-конвертация MOV/AVI файлов в MP4 после saveAs()
- При успешной конвертации оригинальный файл удаляется
- URL в записи Files обновляется на MP4 версию
- Если FFmpeg недоступен, файл сохраняется в оригинальном формате

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
erp24/services/FileService.php

index e6ce4e2ae43060e14509b422c71dc35712da949a..cea7bbe96290b7929e0e4808d57bf86a75b0fb80 100755 (executable)
@@ -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));
         }