- Модуль: imconnector
- Путь к файлу: ~/bitrix/modules/imconnector/lib/provider/network/input.php
- Класс: BitrixImConnectorProviderNetworkInput
- Вызов: Input::processingFinishSession
protected function processingFinishSession(array $params, $message): Result
{
$result = clone $this->result;
$sessions = array_map(function($value){return (int)$value;}, $params['SESSIONS']);
if (
empty($sessions)
&& $result->isSuccess()
)
{
$result->addError(new Error(
'No session',
'ERROR_IMCONNECTOR_ERROR_NO_SESSION',
__METHOD__,
$params
));
}
if ($result->isSuccess())
{
$querySession = ImConnectorDataSession::getInstance()->query();
$orm = $querySession
->setSelect(['ID', 'CONFIG_ID', 'USER_ID', 'SOURCE', 'CHAT_ID', 'USER_CODE'])
->setFilter([
'=ID' => $sessions,
'=CLOSED' => 'N',
])
->exec()
;
while (
($row = $orm->fetch())
&& $result->isSuccess()
)
{
/** @var BitrixImOpenLinesServicesMessage $messenger */
$messenger = ServiceLocator::getInstance()->get('ImOpenLines.Services.Message');
$messenger->addMessage([
'MESSAGE_TYPE' => IM_MESSAGE_OPEN_LINE,
'TO_CHAT_ID' => $row['CHAT_ID'],
'MESSAGE' => $params['MESSAGE'] ? : $message,
'SYSTEM' => 'Y',
'SKIP_COMMAND' => 'Y',
'RECENT_ADD' => 'N',
'PARAMS' => [
'CLASS' => 'bx-messenger-content-item-system'
],
]);
/** @var BitrixImOpenLinesServicesSessionManager $sessionManager */
$sessionManager = ServiceLocator::getInstance()->get('ImOpenLines.Services.SessionManager');
$session = $sessionManager->create();
$resultSessionStart = $session->start(array_merge($row, [
'SKIP_CREATE' => 'Y',
]));
if (
!$resultSessionStart->isSuccess() ||
$resultSessionStart->getResult() !== true
)
{
$result->addError(new Error(
'Failed to load session',
'ERROR_IMCONNECTOR_FAILED_LOAD_SESSION',
__METHOD__,
$params
));
}
else
{
$session->finish();
}
}
}
return $result;
}