- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/session.php
- Класс: BitrixImOpenLinesSession
- Вызов: Session::start
public function start($params)
{
Debug::addSession($this, 'begin ' . __METHOD__, $params);
$result = new Result();
$result->setResult(false);
$this->connectorId = $params['SOURCE'];
$fields = [];
$fields['PARENT_ID'] = (int)($params['PARENT_ID'] ?? 0);
$fields['USER_CODE'] = $params['USER_CODE'];
$fields['USER_CODE_FAIL'] = $params['USER_CODE_FAIL'];
$fields['CONFIG_ID'] = (int)$params['CONFIG_ID'];
$fields['USER_ID'] = (int)$params['USER_ID'];
$fields['OPERATOR_ID'] = (int)($params['OPERATOR_ID'] ?? 0);
$params['CRM_TRACE_DATA'] = (string)($params['CRM_TRACE_DATA'] ?? '');
$params['CRM_SKIP_PHONE_VALIDATE'] = (string)($params['CRM_SKIP_PHONE_VALIDATE'] ?? '');
$fields['SOURCE'] = (string)($params['SOURCE'] ?? '');
$fields['MODE'] = (isset($params['MODE']) && $params['MODE'] === self::MODE_OUTPUT ? self::MODE_OUTPUT : self::MODE_INPUT);
$params['DEFERRED_JOIN'] = (isset($params['DEFERRED_JOIN']) && $params['DEFERRED_JOIN'] === 'Y' ? 'Y' : 'N');
$params['SKIP_CREATE'] = (isset($params['SKIP_CREATE']) && $params['SKIP_CREATE'] === 'Y' ? 'Y' : 'N');
$params['REOPEN'] = (isset($params['REOPEN']) && $params['REOPEN'] === 'Y' ? 'Y' : 'N');
$params['SKIP_CRM'] = (isset($params['SKIP_CRM']) && $params['SKIP_CRM'] === 'Y' ? 'Y' : 'N');
//Check open line configuration load
if (empty($this->config) && !empty($fields['CONFIG_ID']))
{
$configManager = new Config();
$this->config = $configManager->get($fields['CONFIG_ID']);
}
if (empty($this->config))
{
$result->addError(new Error(
Loc::getMessage('IMOL_SESSION_ERROR_NO_IMOL_CONFIGURATION'),
'NO IMOL CONFIGURATION',
__METHOD__,
$params
));
}
if ($result->isSuccess())
{
if ($this->prepareUserChat($params) !== true || empty($this->chat))
{
$result->addError(new Error(Loc::getMessage('IMOL_SESSION_ERROR_NO_CHAT'), 'NO CHAT', __METHOD__, $params));
}
}
if ($result->isSuccess())
{
//Load session
$resultReading = $this->readingSession($fields, $params);
if ($resultReading->isSuccess())
{
if ($resultReading->getResult() == true)
{
$result->setResult(true);
}
//If you do create a session
elseif
(
$params['SKIP_CREATE'] !== 'Y' &&
!$this->isCloseVote()
)
{
//Creating a new session
$resultCreate = $this->createSession($fields, $params);
if ($resultCreate->isSuccess())
{
$result->setResult(true);
}
else
{
$result->addErrors($resultCreate->getErrors());
}
}
}
else
{
$result->addErrors($resultReading->getErrors());
}
}
Debug::addSession($this, 'end ' . __METHOD__, ['SUCCESS' => $result->isSuccess(), 'ERRORS' => $result->getErrorMessages()]);
return $result;
}