Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/location/lib/infrastructure/ |
Upload File : |
<?php namespace Bitrix\Location\Infrastructure; use Bitrix\Location\Entity\Area; use Bitrix\Location\Geometry\Converter\Manager; use Bitrix\Location\Model\AreaTable; use Bitrix\Location\Repository\AreaRepository; use Bitrix\Main\Application; use Bitrix\Main\Error; use Bitrix\Main\IO\Path; use Bitrix\Main\Result; use Bitrix\Main\IO; class DataInstaller { private const DEFAULT_DATA_PATH = '/bitrix/modules/location/data'; /** * @return string */ public static function installAreasAgent(): string { $agent = '\\Bitrix\\Location\\Infrastructure\\DataInstaller::installAreasAgent();'; $connection = Application::getInstance()->getConnection(); if (!$connection->isTableExists(AreaTable::getTableName())) { return $agent; } $result = self::installAreas(); if (!$result->isSuccess()) { return $agent; } return ''; } /** * @return Result */ private static function installAreas(): Result { $result = new Result(); $dataPath = Application::getDocumentRoot() . self::DEFAULT_DATA_PATH; if (!IO\Directory::isDirectoryExists($dataPath)) { return $result->addError(new Error('Default data directory not found')); } $areasFile = new IO\File(Path::combine($dataPath, 'areas.php')); if (!$areasFile->isExists()) { return $result->addError(new Error('File with areas not found')); } $areas = include $areasFile->getPath(); if (!is_array($areas)) { return $result->addError(new Error('No data in areas file')); } $areaRepository = new AreaRepository(); foreach ($areas as $area) { $existingArea = $areaRepository->findByTypeAndCode($area['TYPE'], $area['CODE']); if ($existingArea) { continue; } $areaFile = new IO\File(Path::combine($dataPath, 'areas', $area['FILE'])); if (!$areaFile->isExists()) { $result->addError(new Error('Area file not found')); continue; } $addResult = $areaRepository->store( (new Area()) ->setType($area['TYPE']) ->setCode($area['CODE']) ->setSort($area['SORT']) ->setGeometry( Manager::makeConverter(Manager::FORMAT_GEOJSON) ->read($areaFile->getContents()) ) ); if (!$addResult->isSuccess()) { $result->addErrors($addResult->getErrors()); } } return $result; } }