• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/operator.php
  • Класс: BitrixImOpenLinesOperator
  • Вызов: Operator::openChat
public function openChat($userCode)
{
	if (BitrixImUser::getInstance($this->userId)->isExtranet())
	{
		return false;
	}

	$chat = new Chat();
	$result = $chat->load(Array(
		'USER_CODE' => $userCode,
		'ONLY_LOAD' => 'Y',
	));
	if ($result)
	{
		$parsedUserCode = SessionCommon::parseUserCode($userCode);
		$lineId = $parsedUserCode['CONFIG_ID'];
		if ($chat->getData('AUTHOR_ID') != $this->userId)
		{
			$sessionField = $chat->getFieldData(Chat::FIELD_SESSION);
			$sessionCrmField = $chat->getFieldData(Chat::FIELD_CRM);
			$result = false;
			if (empty($sessionCrmField))
			{
				if (BitrixImOpenLinesConfig::canJoin($lineId, $sessionField['CRM_ENTITY_TYPE'], $sessionField['CRM_ENTITY_ID']))
				{
					$result = true;
				}
			}
			else
			{
				foreach ($sessionCrmField as $crmEntityType => $crmEntityId)
				{
					if (BitrixImOpenLinesConfig::canJoin($lineId, $crmEntityType, $crmEntityId))
					{
						$result = true;
						break;
					}
				}
			}
		}
	}

	if ($result)
	{
		return $chat->getData();
	}

	$this->error = new BasicError(__METHOD__, 'ACCESS_DENIED', Loc::getMessage('IMOL_OPERATOR_ERROR_ACCESS_DENIED'));

	return false;
}