Skip to content

Commit 2b6301d

Browse files
committed
Рефакторинг
1 parent b934e69 commit 2b6301d

File tree

8 files changed

+114
-83
lines changed

8 files changed

+114
-83
lines changed

install/version.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

33
$arModuleVersion = [
4-
'VERSION' => '1.1.0',
5-
'VERSION_DATE' => '2021-07-28'
4+
'VERSION' => '1.1.1',
5+
'VERSION_DATE' => '2021-07-29'
66
];

lib/Bitrix/EventInfo.php renamed to lib/Bitrix/DTO/EventInfo.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?php
22

3-
namespace Proklung\Notifier\Bitrix;
3+
namespace Proklung\Notifier\Bitrix\DTO;
44

55
/**
66
* Class EventInfo
77
* DTO с информацией о шаблоне битриксового события.
8-
* @package Proklung\Notifier\Bitrix
8+
* @package Proklung\Notifier\Bitrix\DTO
99
*
1010
* @since 28.07.2021
1111
*/

lib/Bitrix/EventBridge.php renamed to lib/Bitrix/EventBridgeMail.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88
use Bitrix\Main\Mail\Internal\EventMessageTable;
99
use Bitrix\Main\ObjectPropertyException;
1010
use Bitrix\Main\SystemException;
11+
use Proklung\Notifier\Bitrix\DTO\EventInfo;
12+
use RuntimeException;
1113

1214
/**
13-
* Class EventBridge
15+
* Class EventBridgeMail
1416
* @package Proklung\Notifier\Bitrix
1517
*
1618
* @since 28.07.2021
1719
*/
18-
class EventBridge
20+
class EventBridgeMail
1921
{
2022
/**
2123
* Получить скомпилированный текст письма для события.
@@ -25,6 +27,8 @@ class EventBridge
2527
* @param array $sites ID сайтов.
2628
*
2729
* @return array
30+
* @throws ArgumentException | ObjectPropertyException | SystemException Битриксовые ошибки.
31+
* @throws RuntimeException Когда событие не найдено.
2832
*/
2933
public function compileMessage(EventInfo $eventInfo, array $context, array $sites = []) : array
3034
{
@@ -62,8 +66,8 @@ public function getMessageTemplate(string $codeEvent, array $sites = []) : array
6266
$messageDb = EventMessageTable::getList([
6367
'select' => ['ID'],
6468
'filter' => [
65-
'=ACTIVE' => 'Y',
6669
'=EVENT_NAME' => $codeEvent,
70+
'=ACTIVE' => 'Y',
6771
'=EVENT_MESSAGE_SITE.SITE_ID' => $arSites,
6872
],
6973
'group' => ['ID']
@@ -88,4 +92,4 @@ public function getMessageTemplate(string $codeEvent, array $sites = []) : array
8892

8993
return $result;
9094
}
91-
}
95+
}

lib/Bitrix/BitrixMailEventSender.php renamed to lib/Bitrix/Sender/BitrixMailEventSender.php

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
<?php
22

3-
namespace Proklung\Notifier\Bitrix;
3+
namespace Proklung\Notifier\Bitrix\Sender;
44

55
use Bitrix\Main\ArgumentException;
6-
use Bitrix\Main\Mail\Internal\EventTable;
76
use Bitrix\Main\ObjectPropertyException;
87
use Bitrix\Main\SystemException;
9-
use Exception;
8+
use Proklung\Notifier\Bitrix\EventBridgeMail;
9+
use Proklung\Notifier\Bitrix\Utils\EventTableUpdater;
1010
use Symfony\Component\Notifier\Notification\Notification;
1111
use Symfony\Component\Notifier\NotifierInterface;
1212
use Symfony\Component\Notifier\Recipient\Recipient;
1313

1414
/**
1515
* Class BitrixMailEventSender
16-
* @package Proklung\Notifier\Bitrix
16+
* @package Proklung\Notifier\Bitrix\Sender
1717
*
1818
* @since 28.07.2021
1919
*/
2020
class BitrixMailEventSender
2121
{
2222
/**
23-
* @var EventBridge $eventBridge Обработка битриксовых данных события.
23+
* @var EventBridgeMail $eventBridge Обработка битриксовых данных события.
2424
*/
2525
private $eventBridge;
2626

@@ -32,10 +32,10 @@ class BitrixMailEventSender
3232
/**
3333
* BitrixMailEventSender constructor.
3434
*
35-
* @param EventBridge $eventBridge Обработка битриксовых данных события.
35+
* @param EventBridgeMail $eventBridge Обработка битриксовых данных события.
3636
* @param NotifierInterface $notifier Notifier.
3737
*/
38-
public function __construct(EventBridge $eventBridge, NotifierInterface $notifier)
38+
public function __construct(EventBridgeMail $eventBridge, NotifierInterface $notifier)
3939
{
4040
$this->eventBridge = $eventBridge;
4141
$this->notifier = $notifier;
@@ -50,7 +50,7 @@ public function __construct(EventBridge $eventBridge, NotifierInterface $notifie
5050
*/
5151
public static function getInstance(NotifierInterface $notifier) : self
5252
{
53-
return new static(new EventBridge(), $notifier);
53+
return new static(new EventBridgeMail(), $notifier);
5454
}
5555

5656
/**
@@ -83,23 +83,7 @@ public function send(string $codeEvent, array $arFields, ?string $importance = n
8383
$this->notifier->send($notification, $recipient);
8484

8585
// Эмуляция поведения Битрикса при обработке событий.
86-
try {
87-
EventTable::add(
88-
[
89-
'EVENT_NAME' => $eventInfo->getEventCode(),
90-
'SUCCESS_EXEC' => 'Y',
91-
'MESSAGE_ID' => 99999, // Признак, что отправлено через Notifier
92-
'DUPLICATE' => 'N',
93-
'LID' => SITE_ID,
94-
'LANGUAGE_ID' => LANGUAGE_ID,
95-
'DATE_INSERT' => new \Bitrix\Main\Type\DateTime,
96-
'DATE_EXEC' => new \Bitrix\Main\Type\DateTime,
97-
'C_FIELDS' => $eventInfo->getMessageData(),
98-
]
99-
);
100-
} catch (Exception $e) {
101-
// Silence. Не самый важный момент.
102-
}
86+
EventTableUpdater::create($eventInfo->getEventCode(), $eventInfo->getMessageData(), 99999);
10387
}
10488
}
10589
}

lib/Bitrix/BitrixSmsSender.php renamed to lib/Bitrix/Sender/BitrixSmsSender.php

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
<?php
22

3-
namespace Proklung\Notifier\Bitrix;
3+
namespace Proklung\Notifier\Bitrix\Sender;
44

55
use Bitrix\Main\ArgumentException;
6-
use Bitrix\Main\Mail\Internal\EventTable;
76
use Bitrix\Main\ObjectPropertyException;
87
use Bitrix\Main\SystemException;
9-
use Bitrix\Main\Type\DateTime;
108
use Exception;
9+
use Proklung\Notifier\Bitrix\EventBridgeSms;
10+
use Proklung\Notifier\Bitrix\Utils\EventTableUpdater;
1111
use RuntimeException;
1212
use Symfony\Component\Notifier\Exception\TransportExceptionInterface;
1313
use Symfony\Component\Notifier\Message\SmsMessage;
1414
use Symfony\Component\Notifier\TexterInterface;
1515

1616
/**
1717
* Class BitrixSmsSender
18-
* @package Proklung\Notifier\Bitrix
18+
* @package Proklung\Notifier\Bitrix\Sender
1919
*
2020
* @since 28.07.2021
2121
*/
@@ -89,22 +89,8 @@ public function send(string $codeEvent, array $arFields): void
8989
}
9090

9191
// Эмуляция поведения Битрикса при обработке событий.
92-
try {
93-
EventTable::add(
94-
[
95-
'EVENT_NAME' => $codeEvent,
96-
'SUCCESS_EXEC' => $success,
97-
'MESSAGE_ID' => 99999, // Признак, что отправлено через Notifier
98-
'DUPLICATE' => 'N',
99-
'LID' => SITE_ID,
100-
'LANGUAGE_ID' => LANGUAGE_ID,
101-
'DATE_INSERT' => new DateTime,
102-
'DATE_EXEC' => new DateTime,
103-
'C_FIELDS' => $success === 'N' ? ['error' => $errorMessage] : ['data' => $sentMessage->getMessageId()],
104-
]
105-
);
106-
} catch (Exception $e) {
107-
// Silence. Не самый важный момент.
108-
}
92+
$fields = $success === 'N' ? ['error' => $errorMessage] : ['data' => $sentMessage->getMessageId()];
93+
94+
EventTableUpdater::create($codeEvent, $fields, 99999, $success);
10995
}
110-
}
96+
}

lib/Bitrix/BitrixTelegramEventSender.php renamed to lib/Bitrix/Sender/BitrixTelegramEventSender.php

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?php
22

3-
namespace Proklung\Notifier\Bitrix;
3+
namespace Proklung\Notifier\Bitrix\Sender;
44

55
use Bitrix\Main\ArgumentException;
6-
use Bitrix\Main\Mail\Internal\EventTable;
76
use Bitrix\Main\ObjectPropertyException;
87
use Bitrix\Main\SystemException;
9-
use Exception;
8+
use Proklung\Notifier\Bitrix\EventBridgeMail;
9+
use Proklung\Notifier\Bitrix\Utils\EventTableUpdater;
1010
use RuntimeException;
1111
use Symfony\Component\Notifier\Bridge\Telegram\TelegramOptions;
1212
use Symfony\Component\Notifier\Bridge\Telegram\TelegramTransport;
@@ -23,7 +23,7 @@
2323
class BitrixTelegramEventSender
2424
{
2525
/**
26-
* @var EventBridge $eventBridge Обработка битриксовых данных события.
26+
* @var EventBridgeMail $eventBridge Обработка битриксовых данных события.
2727
*/
2828
private $eventBridge;
2929

@@ -35,10 +35,10 @@ class BitrixTelegramEventSender
3535
/**
3636
* BitrixChatEventSender constructor.
3737
*
38-
* @param EventBridge $eventBridge Обработка битриксовых данных события.
38+
* @param EventBridgeMail $eventBridge Обработка битриксовых данных события.
3939
* @param ChatterInterface $notifier Notifier.
4040
*/
41-
public function __construct(EventBridge $eventBridge, ChatterInterface $notifier)
41+
public function __construct(EventBridgeMail $eventBridge, ChatterInterface $notifier)
4242
{
4343
$this->eventBridge = $eventBridge;
4444
$this->notifier = $notifier;
@@ -64,7 +64,7 @@ public static function getInstance(ChatterInterface $notifier) : self
6464
);
6565
}
6666

67-
return new static(new EventBridge(), $notifier);
67+
return new static(new EventBridgeMail(), $notifier);
6868
}
6969

7070
/**
@@ -96,23 +96,7 @@ public function send(string $codeEvent, array $arFields) : void
9696
$this->notifier->send($notification);
9797

9898
// Эмуляция поведения Битрикса при обработке событий.
99-
try {
100-
EventTable::add(
101-
[
102-
'EVENT_NAME' => $eventInfo->getEventCode(),
103-
'SUCCESS_EXEC' => 'Y',
104-
'MESSAGE_ID' => 99999, // Признак, что отправлено через Notifier
105-
'DUPLICATE' => 'N',
106-
'LID' => SITE_ID,
107-
'LANGUAGE_ID' => LANGUAGE_ID,
108-
'DATE_INSERT' => new \Bitrix\Main\Type\DateTime,
109-
'DATE_EXEC' => new \Bitrix\Main\Type\DateTime,
110-
'C_FIELDS' => $eventInfo->getMessageData(),
111-
]
112-
);
113-
} catch (Exception $e) {
114-
// Silence. Не самый важный момент.
115-
}
99+
EventTableUpdater::create($eventInfo->getEventCode(), $eventInfo->getMessageData(), 99999);
116100
}
117101
}
118102
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
3+
namespace Proklung\Notifier\Bitrix\Utils;
4+
5+
use Bitrix\Main\Mail\Internal\EventTable;
6+
use Bitrix\Main\Type\DateTime;
7+
use Exception;
8+
9+
/**
10+
* Class EventTableUpdater
11+
* @package Proklung\Notifier\Bitrix\Utils
12+
*
13+
* @since 29.07.2021
14+
*/
15+
class EventTableUpdater
16+
{
17+
/**
18+
* Добавить запись в b_event о событии. Статический фасад.
19+
*
20+
* @param string $eventCode Код события.
21+
* @param array $fields Поля.
22+
* @param integer $messageId Признак, что отправлено через Notifier.
23+
* @param string $success Признак успешности отправки.
24+
*
25+
* @return void
26+
*/
27+
public static function create(
28+
string $eventCode,
29+
array $fields,
30+
int $messageId = 99999,
31+
string $success = 'Y'
32+
) {
33+
$self = new static();
34+
35+
$self->add($eventCode, $fields, $messageId, $success);
36+
}
37+
38+
/**
39+
* Добавить запись в b_event о событии.
40+
*
41+
* @param string $eventCode Код события.
42+
* @param array $fields Поля.
43+
* @param integer $messageId Признак, что отправлено через Notifier.
44+
* @param string $success Признак успешности отправки.
45+
*
46+
* @return void
47+
*/
48+
public function add(
49+
string $eventCode,
50+
array $fields,
51+
int $messageId = 99999,
52+
string $success = 'Y'
53+
) : void
54+
{
55+
// Эмуляция поведения Битрикса при обработке событий.
56+
try {
57+
EventTable::add(
58+
[
59+
'EVENT_NAME' => $eventCode,
60+
'SUCCESS_EXEC' => $success,
61+
'MESSAGE_ID' => $messageId, // Признак, что отправлено через Notifier
62+
'DUPLICATE' => 'N',
63+
'LID' => SITE_ID,
64+
'LANGUAGE_ID' => LANGUAGE_ID,
65+
'DATE_INSERT' => new DateTime,
66+
'DATE_EXEC' => new DateTime,
67+
'C_FIELDS' => $fields,
68+
]
69+
);
70+
} catch (Exception $e) {
71+
// Silence. Не самый важный момент.
72+
}
73+
}
74+
}

readme.MD

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,7 @@ return [
188188
### Использование битриксовых почтовых событий и их шаблонов
189189

190190
```php
191-
use Proklung\Notifier\Bitrix\BitrixMailEventSender;
192-
use Symfony\Component\Notifier\Notification\Notification;
191+
use Proklung\Notifier\Bitrix\Sender\BitrixMailEventSender;
193192

194193
$bitrixEventHandler = BitrixMailEventSender::getInstance(
195194
\Proklung\Notifier\DI\Services::getInstance()->get('notifier')
@@ -208,7 +207,7 @@ return [
208207
### Использование битриксовых SMS событий и их шаблонов
209208

210209
```php
211-
use Proklung\Notifier\Bitrix\BitrixSmsSender;
210+
use Proklung\Notifier\Bitrix\Sender\BitrixSmsSender;
212211

213212
$bitrixEventHandler = BitrixSmsSender::getInstance(
214213
\Proklung\Notifier\DI\Services::getInstance()->get('texter')
@@ -230,7 +229,7 @@ return [
230229
### Отправка битриксовых почтовых шаблонов в Телеграм
231230

232231
```php
233-
use Proklung\Notifier\Bitrix\BitrixTelegramEventSender;
232+
use Proklung\Notifier\Bitrix\Sender\BitrixTelegramEventSender;
234233

235234
$bitrixEventHandler = BitrixTelegramEventSender::getInstance(
236235
\Proklung\Notifier\DI\Services::getInstance()->get('chatter')

0 commit comments

Comments
 (0)