]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
расширению функционала обработки URL изображений kikfeedbackrequest_file
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Sat, 1 Nov 2025 07:19:38 +0000 (10:19 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Sat, 1 Nov 2025 07:19:38 +0000 (10:19 +0300)
erp24/helpers/ImageHelper.php
erp24/services/FileService.php

index bd6a8f6633f6ca923a091271c4e8179bfdecc13c..9700196bfa0cf5ae1d8a83c2dfb59ef33aed8937 100644 (file)
@@ -25,7 +25,9 @@ class ImageHelper
 
        
     public static function drawImage($url, $width = 200) {
-        ?><img width=<?= $width ?> src='<?= str_starts_with($url, 'http') ? $url : FileService::padWithSlash($url) ?>' alt="img" onclick="window.open(this.src, '_blank');" /><?php
+        ?>
+        <img width=<?= $width ?> src='<?= str_starts_with($url, 'http') ? $url : FileService::padWithSlash($url) ?>' alt="img" onclick="window.open(this.src, '_blank');" />
+        <?php
     }
 
 
index 92e2894a8375dce1c6714f33b946d99c339dec9c..5006cf18b65976cb2d454732659f11fc2a8cf341 100755 (executable)
@@ -193,15 +193,87 @@ class FileService
         $fileRecord->save();
     }
 
+    /**
+     * Получает базовый URL для api2 в зависимости от текущего домена
+     */
+    private static function getApi2BaseUrl(): string
+    {
+        $currentHost = $_SERVER['HTTP_HOST'] ?? 'localhost';
+
+        // Для продакшена
+        if ($currentHost === 'erp.erp-flowers.ru') {
+            return 'https://api2.erp.erp-flowers.ru';
+        }
+
+        // Для dev сервера
+        if ($currentHost === 'dev.erp-flowers.ru') {
+            return 'https://api2.dev.erp-flowers.ru';
+        }
+
+        // Для dev1 сервера
+        if ($currentHost === 'dev1.erp-flowers.ru') {
+            return 'https://api2.dev1.erp-flowers.ru';
+        }
+
+        // Для локальной разработки (предполагаем localhost:5555 для api2)
+        if (str_contains($currentHost, 'localhost')) {
+            return 'http://localhost:5555';
+        }
+
+        // По умолчанию продакшен
+        return 'https://api2.erp.erp-flowers.ru';
+    }
+
+    /**
+     * Проверяет доступность URL
+     */
+    private static function checkUrlAvailability(string $url): bool
+    {
+        $client = new Client([
+            'timeout' => 5,
+            'connect_timeout' => 2,
+            'verify' => false, // Для тестовых сред
+        ]);
+
+        try {
+            $response = $client->head($url);
+            return $response->getStatusCode() === 200;
+        } catch (\Exception $e) {
+            return false;
+        }
+    }
+
+    /**
+     * Получает корректный URL для изображения с проверкой доступности
+     */
+    private static function getCorrectImageUrl(string $relativePath): string
+    {
+        $currentApi2Url = self::getApi2BaseUrl() . $relativePath;
+        $prodApi2Url = 'https://api2.erp.erp-flowers.ru' . $relativePath;
+
+        // Если текущий URL доступен, используем его
+        if (self::checkUrlAvailability($currentApi2Url)) {
+            return $currentApi2Url;
+        }
+
+        // Если текущий недоступен, пробуем продакшен
+        if (self::checkUrlAvailability($prodApi2Url)) {
+            return $prodApi2Url;
+        }
+
+        // Если ничего не доступно, возвращаем текущий (лучше показать ошибку чем ничего)
+        return $currentApi2Url;
+    }
+
     public static function drawFile($file) {
         if ($file->file_type == 'image') {
             $url = $file->url;
             // Корректировка URL для файлов kikfeedbackrequest_file с типом image
             if ($file->entity == 'kikfeedbackrequest_file') {
                 if (str_starts_with($url, '/uploads/')) {
-                    $url = 'https://api2.erp.erp-flowers.ru' . $url;
+                    $url = self::getCorrectImageUrl($url);
                 } else {
-                    $url = str_replace('https://erp.erp-flowers.ru', 'https://api2.erp.erp-flowers.ru', $url);
+                    $url = str_replace('https://erp.erp-flowers.ru', self::getApi2BaseUrl(), $url);
                 }
             }
             ImageHelper::drawImage($url);