From 4e244d9791966a3cc9d987458c4e538d1f6feedd Mon Sep 17 00:00:00 2001 From: Akolzin Dmitry Date: Thu, 18 Oct 2018 12:07:10 +0300 Subject: [PATCH] Add send configuration method --- .../classes/general/RCrmActions.php | 129 ++++++++++++------ intaro.retailcrm/install/index.php | 56 +------- .../lang/ru/classes/general/RCrmActions.php | 2 + intaro.retailcrm/lang/ru/install/index.php | 1 - 4 files changed, 90 insertions(+), 98 deletions(-) create mode 100644 intaro.retailcrm/lang/ru/classes/general/RCrmActions.php diff --git a/intaro.retailcrm/classes/general/RCrmActions.php b/intaro.retailcrm/classes/general/RCrmActions.php index b4ac891c..fde89489 100644 --- a/intaro.retailcrm/classes/general/RCrmActions.php +++ b/intaro.retailcrm/classes/general/RCrmActions.php @@ -13,15 +13,15 @@ class RCrmActions $arSites = array(); $rsSites = CSite::GetList($by, $sort, array('ACTIVE' => 'Y')); while ($ar = $rsSites->Fetch()) { - $arSites[] = $ar; + $arSites[] = $ar; } - + return $arSites; } - + public static function OrderTypesList($arSites) { - $orderTypesList = array(); + $orderTypesList = array(); foreach ($arSites as $site) { $personTypes = \Bitrix\Sale\PersonType::load($site['LID']); $bitrixOrderTypesList = array(); @@ -33,10 +33,10 @@ class RCrmActions } $orderTypesList = $orderTypesList + $bitrixOrderTypesList; } - + return $orderTypesList; } - + public static function DeliveryList() { $bitrixDeliveryTypesList = array(); @@ -49,9 +49,9 @@ class RCrmActions } } foreach ($arDeliveryServiceAll as $arDeliveryService) { - if ((($arDeliveryService['PARENT_ID'] == '0' || $arDeliveryService['PARENT_ID'] == null) || - in_array($arDeliveryService['PARENT_ID'], $groups)) && - $arDeliveryService['ID'] != $noOrderId && + if ((($arDeliveryService['PARENT_ID'] == '0' || $arDeliveryService['PARENT_ID'] == null) || + in_array($arDeliveryService['PARENT_ID'], $groups)) && + $arDeliveryService['ID'] != $noOrderId && $arDeliveryService['CLASS_NAME'] != '\Bitrix\Sale\Delivery\Services\Group') { if (in_array($arDeliveryService['PARENT_ID'], $groups)) { $arDeliveryService['PARENT_ID'] = 0; @@ -62,7 +62,7 @@ class RCrmActions return $bitrixDeliveryTypesList; } - + public static function PaymentList() { $bitrixPaymentTypesList = array(); @@ -73,9 +73,9 @@ class RCrmActions while ($payment = $dbPaymentAll->fetch()) { $bitrixPaymentTypesList[] = $payment; } - + return $bitrixPaymentTypesList; - } + } public static function StatusesList() { @@ -90,7 +90,7 @@ class RCrmActions 'NAME' => $arStatus['NAME'], ); } - + return $bitrixPaymentStatusesList; } @@ -104,11 +104,11 @@ class RCrmActions while ($prop = $arPropsAll->Fetch()) { $bitrixPropsList[$prop['PERSON_TYPE_ID']][] = $prop; } - + return $bitrixPropsList; - } - - public static function PricesExportList() + } + + public static function PricesExportList() { $priceId = COption::GetOptionString(self::$MODULE_ID, 'catalog_base_price', 0); $catalogExportPrices = array(); @@ -117,21 +117,21 @@ class RCrmActions { $catalogExportPrices[$arPriceType['ID']] = $arPriceType; } - + return $catalogExportPrices; - } - - public static function StoresExportList() + } + + public static function StoresExportList() { $catalogExportStores = array(); $dbStores = CCatalogStore::GetList(array(), array("ACTIVE" => "Y"), false, false, array('ID', 'TITLE')); while ($stores = $dbStores->Fetch()) { $catalogExportStores[] = $stores; } - + return $catalogExportStores; - } - + } + public static function IblocksExportList() { $catalogExportIblocks = array(); @@ -154,10 +154,10 @@ class RCrmActions } } } - + return $catalogExportIblocks; } - + /** * * w+ event in bitrix log @@ -208,7 +208,7 @@ class RCrmActions RetailCrmHistory::customerHistory(); RetailCrmHistory::orderHistory(); self::uploadOrdersAgent(); - + return 'RCrmActions::orderAgent();'; } @@ -295,7 +295,7 @@ class RCrmActions } else { $newFio = explode(" ", $fio, 3); } - + switch (count($newFio)) { default: case 0: @@ -322,31 +322,74 @@ class RCrmActions return $result; } + public static function sendConfiguration($api, $api_version, $active = true) + { + $scheme = isset($_SERVER['HTTPS']) ? 'https://' : 'http://'; + $baseUrl = $scheme . $_SERVER['HTTP_HOST']; + $integrationCode = 'bitrix'; + $logo = 'https://s3.eu-central-1.amazonaws.com/retailcrm-billing/images/5af47fe682bf2-1c-bitrix-logo.svg'; + $accountUrl = $baseUrl . '/bitrix/admin'; + + $clientId = COption::GetOptionString(self::$MODULE_ID, 'client_id', 0); + + if (!$clientId) { + $clientId = uniqid(); + COption::SetOptionString(self::$MODULE_ID, 'client_id', $clientId); + } + + $code = $integrationCode . '-' . $clientId; + + if ($api_version == 'v4') { + $configuration = array( + 'name' => GetMessage('API_MODULE_NAME'), + 'code' => $code, + 'logo' => $logo, + 'configurationUrl' => $accountUrl, + 'active' => $active + ); + + self::apiMethod($api, 'marketplaceSettingsEdit', __METHOD__, $configuration); + } else { + $configuration = array( + 'clientId' => $clientId, + 'code' => $code, + 'integrationCode' => $integrationCode, + 'active' => $active, + 'name' => GetMessage('API_MODULE_NAME'), + 'logo' => $logo, + 'baseUrl' => $baseUrl, + 'accountUrl' => $accountUrl + ); + + self::apiMethod($api, 'integrationModulesEdit', __METHOD__, $configuration); + } + } + public static function apiMethod($api, $methodApi, $method, $params, $site = null) { switch ($methodApi) { - case 'ordersPaymentDelete': + case 'ordersPaymentDelete': case 'ordersHistory': - case 'customerHistory': + case 'customerHistory': case 'ordersFixExternalIds': case 'customersFixExternalIds': return self::proxy($api, $methodApi, $method, array($params)); - + case 'orderGet': return self::proxy($api, 'ordersGet', $method, array($params, 'id', $site)); - + case 'ordersGet': case 'ordersEdit': case 'customersGet': case 'customersEdit': return self::proxy($api, $methodApi, $method, array($params, 'externalId', $site)); - + case 'paymentEditById': return self::proxy($api, 'ordersPaymentEdit', $method, array($params, 'id', $site)); - + case 'paymentEditByExternalId': return self::proxy($api, 'ordersPaymentEdit', $method, array($params, 'externalId', $site)); - + default: return self::proxy($api, $methodApi, $method, array($params, $site)); } @@ -403,12 +446,12 @@ class RCrmActions ); $log->write(array( 'api' => $version, - 'methodApi' => $methodApi, - 'errorMsg' => $e->getMessage(), - 'errors' => $e->getCode(), + 'methodApi' => $methodApi, + 'errorMsg' => $e->getMessage(), + 'errors' => $e->getCode(), 'params' => $params ), 'apiErrors'); - + if (function_exists('retailCrmApiResult')) { retailCrmApiResult($methodApi, false, 'CurlException'); } @@ -421,12 +464,12 @@ class RCrmActions ); $log->write(array( 'api' => $version, - 'methodApi' => $methodApi, - 'errorMsg' => $e->getMessage(), - 'errors' => $e->getCode(), + 'methodApi' => $methodApi, + 'errorMsg' => $e->getMessage(), + 'errors' => $e->getCode(), 'params' => $params ), 'apiErrors'); - + if (function_exists('retailCrmApiResult')) { retailCrmApiResult($methodApi, false, 'ArgumentException'); } diff --git a/intaro.retailcrm/install/index.php b/intaro.retailcrm/install/index.php index 0bca1b63..11ab0390 100644 --- a/intaro.retailcrm/install/index.php +++ b/intaro.retailcrm/install/index.php @@ -1046,46 +1046,8 @@ class intaro_retailcrm extends CModule $api_key = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_KEY_OPTION, 0); $api_version = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_VERSION, 0); $this->RETAIL_CRM_API = new \RetailCrm\ApiClient($api_host, $api_key); - $scheme = isset($_SERVER['HTTPS']) ? 'https://' : 'http://'; - $baseUrl = $scheme . $_SERVER['HTTP_HOST']; - $code = 'bitrix'; - $logo = 'https://s3.eu-central-1.amazonaws.com/retailcrm-billing/images/5af47fe682bf2-1c-bitrix-logo.svg'; - $accountUrl = $baseUrl . '/bitrix/admin/settings.php?mid=intaro.retailcrm'; - try { - if ($api_version == 'v4') { - $configuration = array( - 'name' => GetMessage('API_MODULE_NAME'), - 'code' => $code, - 'logo' => $logo, - 'configurationUrl' => $accountUrl, - 'active' => true - ); - - $this->RETAIL_CRM_API->marketplaceSettingsEdit($configuration); - } else { - $clientId = hash('md5', date('Y-m-d H:i:s')); - - $configuration = array( - 'clientId' => $clientId, - 'code' => $code, - 'integrationCode' => $code, - 'active' => true, - 'name' => GetMessage('API_MODULE_NAME'), - 'logo' => $logo, - 'baseUrl' => $baseUrl, - 'accountUrl' => $accountUrl - ); - - $this->RETAIL_CRM_API->integrationModulesEdit($configuration); - COption::SetOptionString($this->MODULE_ID, $this->CLIENT_ID, $clientId); - } - } catch (\RetailCrm\Exception\CurlException $e) { - RCrmActions::eventLog( - 'intaro.retailcrm/install/index.php', 'RetailCrm\ApiClient::statisticUpdate::CurlException', - $e->getCode() . ': ' . $e->getMessage() - ); - } + RCrmActions::sendConfiguration($this->RETAIL_CRM_API, $api_version); $APPLICATION->IncludeAdminFile( GetMessage('MODULE_INSTALL_TITLE'), $this->INSTALL_PATH . '/step6.php' @@ -1100,7 +1062,6 @@ class intaro_retailcrm extends CModule $api_host = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_HOST_OPTION, 0); $api_key = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_KEY_OPTION, 0); $api_version = COption::GetOptionString($this->MODULE_ID, $this->CRM_API_VERSION, 0); - $clientId = COption::GetOptionString($this->MODULE_ID, $this->CLIENT_ID, 0); include($this->INSTALL_PATH . '/../classes/general/Http/Client.php'); include($this->INSTALL_PATH . '/../classes/general/Response/ApiResponse.php'); @@ -1119,13 +1080,6 @@ class intaro_retailcrm extends CModule $retail_crm_api = new \RetailCrm\ApiClient($api_host, $api_key); - $configuration = array( - 'clientId' => $clientId, - 'code' => 'bitrix', - 'integrationCode' => 'bitrix', - 'active' => false, - ); - CAgent::RemoveAgent("RCrmActions::orderAgent();", $this->MODULE_ID); CAgent::RemoveAgent("RetailCrmInventories::inventoriesUpload();", $this->MODULE_ID); CAgent::RemoveAgent("RetailCrmPrices::pricesUpload();", $this->MODULE_ID); @@ -1196,13 +1150,7 @@ class intaro_retailcrm extends CModule } } - if ($api_version == 'v4') { - unset($configuration['integrationCode']); - unset($configuration['clientId']); - $retail_crm_api->marketplaceSettingsEdit($configuration); - } else { - $retail_crm_api->integrationModulesEdit($configuration); - } + RCrmActions::sendConfiguration($retail_crm_api, $api_version, false); $this->DeleteFiles(); diff --git a/intaro.retailcrm/lang/ru/classes/general/RCrmActions.php b/intaro.retailcrm/lang/ru/classes/general/RCrmActions.php new file mode 100644 index 00000000..5e605d10 --- /dev/null +++ b/intaro.retailcrm/lang/ru/classes/general/RCrmActions.php @@ -0,0 +1,2 @@ +