From 08a068e7bddd5be2af89dd1387e3f61d27bca5b2 Mon Sep 17 00:00:00 2001 From: Ivan Chaplygin Date: Thu, 13 Jul 2023 10:11:38 +0300 Subject: [PATCH] =?UTF-8?q?ref=20#91040=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B?= =?UTF-8?q?=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9=20=D0=B8=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=BA=D0=B8?= =?UTF-8?q?.=20=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=20=D0=B4=D1=83=D0=B1?= =?UTF-8?q?=D0=BB=D0=B8=D1=80=D1=83=D1=8E=D1=89=D0=B8=D0=B9=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BA=D0=B0=D1=81=D1=82=D0=BE=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D1=80=D0=B8=20=D1=81=D0=BE=D1=85=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BF=D1=80=D0=BE=D1=84?= =?UTF-8?q?=D0=B8=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classes/general/config/retailcrm.json | 4 -- .../classes/general/user/RetailCrmUser.php | 1 + intaro.retailcrm/install/index.php | 3 + intaro.retailcrm/lang/ru/install/index.php | 1 + .../installer/subscriberinstallertrait.php | 57 ++++++++++++++++++- 5 files changed, 61 insertions(+), 5 deletions(-) diff --git a/intaro.retailcrm/classes/general/config/retailcrm.json b/intaro.retailcrm/classes/general/config/retailcrm.json index a0708826..147d3d10 100644 --- a/intaro.retailcrm/classes/general/config/retailcrm.json +++ b/intaro.retailcrm/classes/general/config/retailcrm.json @@ -84,10 +84,6 @@ "type": "bool", "default": false }, - "subscribed": { - "type": "bool", - "default": false - }, "commentary": { "type": "string" }, diff --git a/intaro.retailcrm/classes/general/user/RetailCrmUser.php b/intaro.retailcrm/classes/general/user/RetailCrmUser.php index 61019bdf..46db5b61 100644 --- a/intaro.retailcrm/classes/general/user/RetailCrmUser.php +++ b/intaro.retailcrm/classes/general/user/RetailCrmUser.php @@ -126,6 +126,7 @@ class RetailCrmUser $customer['address']['city'] = $arFields['PERSONAL_CITY'] ?? null; $customer['address']['text'] = $arFields['PERSONAL_STREET'] ?? null; $customer['address']['index'] = $arFields['PERSONAL_ZIP'] ?? null; + $customer['subscribed'] = $arFields['UF_SUBSCRIBE_USER_EMAIL'] ?? false; if (mb_strlen($arFields['EMAIL']) < 100) { $customer['email'] = $arFields['EMAIL']; diff --git a/intaro.retailcrm/install/index.php b/intaro.retailcrm/install/index.php index f0192c0d..71bf06f9 100644 --- a/intaro.retailcrm/install/index.php +++ b/intaro.retailcrm/install/index.php @@ -256,6 +256,8 @@ class intaro_retailcrm extends CModule $this->addAgreement(); $this->CopyFilesSubscribe(); + $this->addSubscribeUserFields(); + $this->addSubscriberEvents(); OrderLoyaltyDataService::createLoyaltyHlBlock(); @@ -1293,6 +1295,7 @@ class intaro_retailcrm extends CModule $this->deleteFiles(); $this->deleteLPEvents(); + $this->deleteSubscribeEvents(); UnRegisterModule($this->MODULE_ID); diff --git a/intaro.retailcrm/lang/ru/install/index.php b/intaro.retailcrm/lang/ru/install/index.php index c789c178..84f280bb 100644 --- a/intaro.retailcrm/lang/ru/install/index.php +++ b/intaro.retailcrm/lang/ru/install/index.php @@ -54,4 +54,5 @@ $MESS ['UF_CARD_NUMBER_INTARO_TITLE'] = 'Номер карты программ $MESS ['UF_LP_ID_INTARO_TITLE'] = 'Номер аккаунта в программе лояльности'; $MESS['IBLOCK_NOT_SELECTED'] = 'Не выбрано ни одного инфоблока для экспорта'; $MESS['TARGET_DIR_DOESNT_EXIST'] = 'Целевая директория не существует'; +$MESS['UF_SUBSCRIBE_USER_EMAIL_TITLE'] = 'Подписка на события'; diff --git a/intaro.retailcrm/lib/component/installer/subscriberinstallertrait.php b/intaro.retailcrm/lib/component/installer/subscriberinstallertrait.php index da02fbe3..4ceedf2c 100644 --- a/intaro.retailcrm/lib/component/installer/subscriberinstallertrait.php +++ b/intaro.retailcrm/lib/component/installer/subscriberinstallertrait.php @@ -10,12 +10,13 @@ use Bitrix\Main\SystemException; use Bitrix\Main\ObjectPropertyException; use Bitrix\Main\ArgumentException; use RCrmActions; +use CUserTypeEntity; IncludeModuleLangFile(__FILE__); trait SubscriberInstallerTrait { - public function addSubscribeEvents(): void + public function addSubscriberEvents(): void { $eventManager = EventManager::getInstance(); @@ -85,4 +86,58 @@ trait SubscriberInstallerTrait } } } + + public function addSubscribeUserFields(): void + { + $this->addCustomSubscribeUserFields( + [ + [ + 'name' => 'UF_SUBSCRIBE_USER_EMAIL', + 'title' => GetMessage('UF_SUBSCRIBE_USER_EMAIL_TITLE') + ] + ] + ); + } + + /** + * @param $fields + * @param string $filedType + * @param array $customProps + */ + public function addCustomSubscribeUserFields($fields, string $filedType = 'boolean', array $customProps = []): void + { + foreach ($fields as $filed) { + $arProps = [ + 'ENTITY_ID' => 'USER', + 'FIELD_NAME' => $filed['name'], + 'USER_TYPE_ID' => $filedType, + 'MULTIPLE' => 'N', + 'MANDATORY' => 'N', + 'EDIT_FORM_LABEL' => ['ru' => $filed['title']], + + ]; + $props = array_merge($arProps, $customProps); + $obUserField = new CUserTypeEntity(); + $dbRes = CUserTypeEntity::GetList([], ['FIELD_NAME' => $filed['name']])->fetch(); + + if (!$dbRes['ID']) { + $obUserField->Add($props); + } + } + } + + private function deleteSubscribeEvents(): void + { + $eventManager = EventManager::getInstance(); + + foreach (Constants::SUBSCRIBE_EVENTS as $event){ + $eventManager->unRegisterEventHandler( + $event['FROM_MODULE'], + $event['EVENT_NAME'], + $this->MODULE_ID, + EventsHandlers::class, + $event['EVENT_NAME'].'Handler' + ); + } + } } \ No newline at end of file