- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/queue/queue.php
- Класс: BitrixImOpenLinesQueueQueue
- Вызов: Queue::sendEventOnBeforeSessionTransfer
static function sendEventOnBeforeSessionTransfer($parameters): array
{
$result = $parameters['newOperatorQueue'];
//Event
$event = new Event('imopenlines', 'OnBeforeSessionTransfer', $parameters);
$event->send();
foreach($event->getResults() as $eventResult)
{
$errorEvent = false;
$errorsMessageEvent = [];
if ((int)$eventResult->getType() === EventResult::SUCCESS)
{
$newValues = $eventResult->getParameters();
if (!empty($newValues['newOperatorQueue']))
{
if (!isset($newValues['newOperatorQueue']['RESULT']))
{
$errorEvent = true;
$errorsMessageEvent[] = 'The event handler must pass the value [newOperatorQueue][RESULT]';
}
elseif (!is_bool($newValues['newOperatorQueue']['RESULT']))
{
$errorEvent = true;
$errorsMessageEvent[] = '[newOperatorQueue][RESULT] only the bool type is allowed';
}
if (!isset($newValues['newOperatorQueue']['OPERATOR_ID']))
{
$errorEvent = true;
$errorsMessageEvent[] = 'The event handler must pass the value [newOperatorQueue][OPERATOR_ID]';
}
elseif (
!is_numeric($newValues['newOperatorQueue']['OPERATOR_ID']) &&
(
mb_strpos($newValues['newOperatorQueue']['OPERATOR_ID'], 'queue') !== 0 ||
!is_numeric(mb_substr($newValues['newOperatorQueue']['OPERATOR_ID'], 5))
)
)
{
$errorEvent = true;
$errorsMessageEvent[] = '[newOperatorQueue][OPERATOR_ID] only a number is allowed, including 0 or a number with the "queue" prefix';
}
if (!isset($newValues['newOperatorQueue']['OPERATOR_LIST']))
{
$errorEvent = true;
$errorsMessageEvent[] = 'The event handler must pass the value [newOperatorQueue][OPERATOR_LIST]';
}
elseif (!is_array($newValues['newOperatorQueue']['OPERATOR_LIST']))
{
$errorEvent = true;
$errorsMessageEvent[] = '[newOperatorQueue][OPERATOR_LIST] only an array is allowed, including an empty array []';
}
else
{
foreach ($newValues['newOperatorQueue']['OPERATOR_LIST'] as $operator)
{
if (empty($operator))
{
$errorEvent = true;
$errorsMessageEvent[] = '[newOperatorQueue][OPERATOR_LIST] each value must not be empty';
}
elseif (!is_numeric($operator))
{
$errorEvent = true;
$errorsMessageEvent[] = '[newOperatorQueue][OPERATOR_LIST] each value must be a digit';
}
}
}
if (!isset($newValues['newOperatorQueue']['DATE_QUEUE']))
{
$errorEvent = true;
$errorsMessageEvent[] = 'The event handler must pass the value [newOperatorQueue][DATE_QUEUE]';
}
elseif (
!($newValues['newOperatorQueue']['DATE_QUEUE'] instanceof DateTime) &&
!empty($newValues['newOperatorQueue']['DATE_QUEUE'])
)
{
$errorEvent = true;
$errorsMessageEvent[] = '[newOperatorQueue][DATE_QUEUE] a valid value is only an object of the "BitrixMainTypeDateTime" class or "false"';
}
elseif (
empty($newValues['newOperatorQueue']['DATE_QUEUE'])
&& empty($newValues['newOperatorQueue']['OPERATOR_ID'])
&& empty($newValues['newOperatorQueue']['OPERATOR_LIST'])
)
{
$errorEvent = true;
$errorsMessageEvent[] = '[newOperatorQueue][DATE_QUEUE] if an "empty" value is passed, including "false", then [newOperatorQueue][OPERATOR_ID] or [newOperatorQueue][OPERATOR_LIST] must have non-empty values';
}
if (!isset($newValues['newOperatorQueue']['QUEUE_HISTORY']))
{
$errorEvent = true;
$errorsMessageEvent[] = 'The event handler must pass the value [newOperatorQueue][QUEUE_HISTORY]';
}
elseif (!is_array($newValues['newOperatorQueue']['QUEUE_HISTORY']))
{
$errorEvent = true;
$errorsMessageEvent[] = '[newOperatorQueue][QUEUE_HISTORY] only an array is allowed, including an empty array []';
}
if ($errorEvent === false)
{
$result = $newValues['newOperatorQueue'];
}
}
else
{
$errorEvent = true;
$errorsMessageEvent[] = 'The event handler returned an empty "newOperatorQueue" value';
}
}
else
{
$errorEvent = true;
$errorsMessageEvent[] = 'The result of the processing of the event returned with an error';
}
if ($errorEvent === true)
{
$eventError = new Event('imopenlines', 'OnErrorEventBeforeSessionTransfer',
[
'errors' => $errorsMessageEvent,
'eventResult' => $eventResult
]);
$eventError->send();
}
}
return $result;
}