Всем привет,при обновлении до php8 не сохраняются рассылки, если в них указан кастомный триггер. Ошибок при этом в логах нет. Помогите найти причину,триггер в списке есть,но после сохранения он сбрасывается на первый в списке
Вот добавление события:
Сам класс Sender:
Триггер:
Вот добавление события:
| Код |
|---|
$eventManager->addEventHandler(
"sender",
"onTriggerList",
array("\\Class\\Events\\Sender", "onTriggerList")
);
|
| Код |
|---|
class Sender
{
public static function onTriggerList(Event $event): EventResult
{
$triggers = [
Class\Sender\TriggerFirstOrder::class
];
return new EventResult(
EventResult::SUCCESS,
[
'TRIGGER' => 'Class\Sender\TriggerFirstOrder'
],
'sale'
);
}
}
|
Триггер:
| Код |
|---|
<?
namespace Class\Sender;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Loader;
use Bitrix\Sale;
use Bitrix\Main\Event;
use Bitrix\Main\EventResult;
if (!Loader::includeModule('sender'))
{
return;
}
Loc::loadMessages(__FILE__);
class TriggerFirstOrder extends \Bitrix\Sender\TriggerConnector
{
public function getName()
{
return "Создание первого заказа";
}
public function getCode()
{
return "Class_order_first";
}
public function getEventModuleId()
{
return 'sale';
}
public function getEventType()
{
return "OnOrderAdd";
}
public static function canBeTarget(): bool
{
return false;
}
public function filter()
{
\Bitrix\Main\Loader::includeModule('sale');
$eventData = $this->getParam('EVENT');
if(!($eventData['ENTITY'] instanceof \Bitrix\Sale\Order))
{
return false;
}
$userId = $eventData['ENTITY']->getField('USER_ID');
$dbOrders = \Bitrix\Sale\Internals\OrderTable::getList(array(
'filter' => array('USER_ID' => $userId),
'select' => ["ID"],
));
if ($dbOrders->getCount() > 1)
{
return false;
}
return $this->filterConnectorData();
}
public function getConnector()
{
$connector = new \Bitrix\Sale\Sender\ConnectorOrder;
$connector->setModuleId('sale');
return $connector;
}
/** @return array */
public function getProxyFieldsFromEventToConnector()
{
$eventData = $this->getParam('EVENT');
return array('ID' => $eventData[0], 'LID' => $this->getSiteId());
}
/**
* @return array
* @throws \Bitrix\Main\ArgumentNullException
*/
public function getPersonalizeFields()
{
$eventData = $this->getParam('EVENT');
$result = ['ORDER_ID' => $eventData[0]];
if ((int)$eventData[0] <= 0)
return $result;
$registry = Sale\Registry::getInstance(Sale\Registry::REGISTRY_TYPE_ORDER);
/** @var Sale\Order $orderClass */
$orderClass = $registry->getOrderClassName();
$order = $orderClass::load($eventData[0]);
if ($order)
{
$result = [
'ORDER_ID' => $order->getField('ACCOUNT_NUMBER'),
'ORDER_REAL_ID' => $order->getId()
];
}
return $result;
}
/**
* @return array
*/
public static function getPersonalizeList()
{
return array(
array(
'CODE' => 'ORDER_ID',
'NAME' => "Код заказа",
"DESC" => "Это код заказа, с которым связано событие"
)
);
}
public function getForm()
{
return '';
}
}
|