From 28f452a99cf075b16267a7b424b3e524ca9ea0c8 Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Sat, 1 Nov 2025 10:19:38 +0300 Subject: [PATCH] =?utf8?q?=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5=D0=BD?= =?utf8?q?=D0=B8=D1=8E=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD?= =?utf8?q?=D0=B0=D0=BB=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?utf8?q?=D0=BA=D0=B8=20URL=20=D0=B8=D0=B7=D0=BE=D0=B1=D1=80=D0=B0=D0=B6?= =?utf8?q?=D0=B5=D0=BD=D0=B8=D0=B9=20kikfeedbackrequest=5Ffile?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/helpers/ImageHelper.php | 4 +- erp24/services/FileService.php | 76 +++++++++++++++++++++++++++++++++- 2 files changed, 77 insertions(+), 3 deletions(-) diff --git a/erp24/helpers/ImageHelper.php b/erp24/helpers/ImageHelper.php index bd6a8f66..9700196b 100644 --- a/erp24/helpers/ImageHelper.php +++ b/erp24/helpers/ImageHelper.php @@ -25,7 +25,9 @@ class ImageHelper public static function drawImage($url, $width = 200) { - ?> src='' alt="img" onclick="window.open(this.src, '_blank');" /> + src='' alt="img" onclick="window.open(this.src, '_blank');" /> + 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); -- 2.39.5