<?php use Bitrix\Main\ArgumentOutOfRangeException; use Bitrix\Main\Context; use Bitrix\Main\Loader; use Intaro\RetailCrm\Component\ConfigProvider; use Intaro\RetailCrm\Component\Factory\ClientFactory; use Intaro\RetailCrm\Component\ServiceLocator; use Intaro\RetailCrm\Service\CookieService; use Intaro\RetailCrm\Service\OrderLoyaltyDataService; use Intaro\RetailCrm\Service\LoyaltyService; use Intaro\RetailCrm\Service\LoyaltyAccountService; use Intaro\RetailCrm\Service\CustomerService; use Intaro\RetailCrm\Vendor\Doctrine\Common\Annotations\AnnotationReader; use Intaro\RetailCrm\Vendor\Doctrine\Common\Annotations\AnnotationRegistry; use \Intaro\RetailCrm\Component\Builder\Api\CustomerBuilder; use RetailCrm\Exception\CurlException; require_once __DIR__ . '/RetailcrmClasspathBuilder.php'; $retailcrmModuleId = 'intaro.retailcrm'; $server = Context::getCurrent()->getServer()->getDocumentRoot(); $version = COption::GetOptionString('intaro.retailcrm', 'api_version'); $builder = new RetailcrmClasspathBuilder(); $builder->setDisableNamespaces(true) ->setDocumentRoot($server) ->setModuleId($retailcrmModuleId) ->setPath('classes') ->setVersion($version) ->build(); Loader::registerAutoLoadClasses('intaro.retailcrm', $builder->getResult()); AnnotationRegistry::registerLoader('class_exists'); ServiceLocator::registerServices([ \Intaro\RetailCrm\Service\Utils::class, Logger::class, AnnotationReader::class, CookieService::class, LoyaltyAccountService::class, LoyaltyService::class, CustomerService::class, OrderLoyaltyDataService::class, CustomerBuilder::class ]); $arJsConfig = [ 'intaro_countdown' => [ 'js' => '/bitrix/js/intaro/sms.js', 'rel' => [], ], ]; foreach ($arJsConfig as $ext => $arExt) { CJSCore::RegisterExt($ext, $arExt); } if (empty(ConfigProvider::getSitesAvailable())) { $client = ClientFactory::createClientAdapter(); try { $credentials = $client->getCredentials(); ConfigProvider::setSitesAvailable($credentials->sitesAvailable[0] ?? ''); } catch (ArgumentOutOfRangeException | CurlException $exception) { Logger::getInstance()->write($exception->getMessage()); } }