getServer()->getDocumentRoot(); $version = COption::GetOptionString('intaro.retailcrm', 'api_version'); $builder = new RetailcrmClasspathBuilder(); $builder->setDisableNamespaces(true) ->setDocumentRoot($server) ->setModuleId($retailcrmModuleId) ->setDirectories(['classes', 'lib/icml']) ->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' => [], ], 'intaro_custom_props' => [ 'js' => '/bitrix/js/intaro/custom-props-export.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()); } }