From: Vladimir Fomichev Date: Sat, 1 Nov 2025 07:19:38 +0000 (+0300) Subject: расширению функционала обработки URL изображений kikfeedbackrequest_file X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=28f452a99cf075b16267a7b424b3e524ca9ea0c8;p=erp24_rep%2Fyii-erp24%2F.git расширению функционала обработки URL изображений kikfeedbackrequest_file --- 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);