- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/chat.php
- Класс: BitrixImOpenLinesChat
- Вызов: Chat::setPauseFlag
public function setPauseFlag($params): Result
{
$result = new Result();
$pause = $params['ACTIVE'] === 'Y'? 'Y': 'N';
$sessionField = $this->getFieldData(self::FIELD_SESSION);
if ($sessionField['PAUSE'] === $pause)
{
$result->setResult(true);
}
elseif($this->isDataLoaded())
{
$session = new Session();
$session->setChat($this);
$resultLoad = $session->load([
'USER_CODE' => $this->chat['ENTITY_ID']
]);
if ($resultLoad)
{
if($this->validationAction($session->getData('CHAT_ID')))
{
if(
empty($params['USER_ID'])
|| $params['USER_ID'] == $session->getData('OPERATOR_ID')
)
{
$queueManager = Queue::initialization($session);
if($queueManager && $queueManager->startLock())
{
$session->pause($pause == 'Y');
$this->updateFieldData([self::FIELD_SESSION => [
'PAUSE' => $pause
]]);
if ($pause == 'Y')
{
$datePause = new DateTime();
$datePause->add('1 WEEK');
$formattedDate = FormatDate('d F', $datePause->getTimestamp());
Im::addMessage([
'TO_CHAT_ID' => $this->chat['ID'],
'MESSAGE' => Loc::getMessage('IMOL_CHAT_ASSIGN_ON', ['#DATE#' => '[b]'.$formattedDate.'[/b]']),
'SYSTEM' => 'Y',
]);
}
else
{
Im::addMessage([
'TO_CHAT_ID' => $this->chat['ID'],
'MESSAGE' => Loc::getMessage('IMOL_CHAT_ASSIGN_OFF'),
'SYSTEM' => 'Y',
]);
}
$queueManager->stopLock();
$result->setResult(true);
}
}
elseif ($params['USER_ID'] != $session->getData('OPERATOR_ID'))
{
$result->addError(new Error('Attempt to pin / unpin a chat by a user who is not an operator', self::ERROR_USER_NOT_OPERATOR, __METHOD__, ['USER_ID' => $params['USER_ID'], 'OPERATOR_ID' => $session->getData('OPERATOR_ID')]));
}
}
else
{
$result->addError(new Error(Loc::getMessage('IMOL_CHAT_ERROR_NOT_LOAD_DATA'), 'IMOL_CHAT_ERROR_NOT_LOAD_DATA', __METHOD__, ['chat' => $this->chat]));
}
}
else
{
$result->addError(new Error(Loc::getMessage('IMOL_CHAT_ERROR_ANSWER_NOT_LOAD_SESSION'), 'IMOL_CHAT_ERROR_ANSWER_NOT_LOAD_SESSION', __METHOD__, $params));
}
}
else
{
$result->addError(new Error('Chat failed to load', 'NOT_LOAD_CHAT', __METHOD__, $params));
}
return $result;
}