- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/session/update.php
- Класс: BitrixImOpenLinesSessionUpdate
- Вызов: Update::updateStatus
private function updateStatus(): void
{
if (
isset($this->newData['SKIP_CHANGE_STATUS'])
&& $this->newData['SKIP_CHANGE_STATUS'] === true
&& isset($this->newData['STATUS'])
)
{
unset($this->newData['STATUS']);
}
unset(
$this->newData['USER_ID'],
$this->newData['SKIP_DATE_CLOSE'],
$this->newData['SKIP_CHANGE_STATUS'],
$this->newData['FORCE_CLOSE'],
$this->newData['INPUT_MESSAGE']
);
if (
!empty($this->newData['STATUS'])
&& $this->session->getSessionField('STATUS') != $this->newData['STATUS'])
{
$this->session->chat->updateSessionStatus($this->newData['STATUS']);
if (
(int)$this->session->getSessionField('STATUS') !== Session::STATUS_OPERATOR
&& (int)$this->newData['STATUS'] === Session::STATUS_OPERATOR
)
{
$this->isResponseOperator = true;
}
elseif (
(int)$this->session->getSessionField('STATUS') === Session::STATUS_OPERATOR
&& (int)$this->newData['STATUS'] !== Session::STATUS_OPERATOR
)
{
$this->isResponseOperator = false;
}
$sessionClose = false;
if (
isset($this->newData['CLOSED'])
&& $this->newData['CLOSED'] === 'Y'
)
{
$sessionClose = true;
}
if (
!empty($this->session->getSessionField('SOURCE'))
&& Connector::isLiveChat($this->session->getSessionField('SOURCE'))
&& !empty($this->session->getSessionField('USER_CODE'))
)
{
$chatEntityId = BitrixImOpenLinesChat::parseLinesChatEntityId($this->session->getSessionField('USER_CODE'));
if (!empty($chatEntityId['connectorChatId']))
{
BitrixPullEvent::add($this->session->getSessionField('USER_ID'), [
'module_id' => 'imopenlines',
'command' => 'sessionStatus',
'params' => [
'chatId' => (int)$chatEntityId['connectorChatId'],
'sessionId' => (int)$this->session->getSessionField('ID'),
'sessionStatus' => (int)$this->newData['STATUS'],
'spam' => $this->session->getSessionField('SPAM') == 'Y',
'sessionClose' => $sessionClose
]
]);
}
}
}
}