• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/crm.php
  • Класс: BitrixImOpenLinesCrm
  • Вызов: Crm::updateUserConnector
public function updateUserConnector(): Result
{
	$result = new Result();

	$fields = $this->getFields();
	$session = $fields->getSession();

	if (!empty($session))
	{
		$entitys = array_merge($this->registeredEntites, $this->updateEntites);

		if (
			$session->getData('SOURCE') == Connector::TYPE_LIVECHAT
			&& ImUser::getInstance($session->getData('USER_ID'))->isConnector()
			&& ImUser::getInstance($session->getData('USER_ID'))->getName() == ''
			&& !empty($entitys)
		)
		{
			$entityID = 0;
			$entityType = null;

			foreach ($entitys as $entity)
			{
				if ($entity['ENTITY_TYPE'] != 'DEAL' &&
					(empty($entityID) || empty($entityType) || $entity['IS_PRIMARY'] == 'Y')
				)
				{
					$entityID = $entity['ENTITY_ID'];
					$entityType = $entity['ENTITY_TYPE'];
				}
			}

			if (!empty($entityID) && !empty($entityType))
			{
				$entityData = CrmCommon::get($entityType, $entityID, false);

				if (!empty($entityData) && (!empty($entityData['NAME']) || !empty($entityData['LAST_NAME']) || !empty($entityData['SECOND_NAME'])))
				{
					$user = new CUser();
					$user->Update($session->getData('USER_ID'), Array(
						'NAME' => $entityData['NAME'],
						'LAST_NAME' => $entityData['LAST_NAME'],
						'SECOND_NAME' => $entityData['SECOND_NAME'],
					));

					$relations = CIMChat::GetRelationById($session->getData('CHAT_ID'), false, true, false);
					BitrixPullEvent::add(array_keys($relations), Array(
						'module_id' => 'im',
						'command' => 'userUpdate',
						'params' => Array(
							'user' => ImUser::getInstance($session->getData('USER_ID'))->getFields()
						),
						'extra' => BitrixImCommon::getPullExtra()
					));
				}

			}
		}
	}
	else
	{
		$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_NO_SESSION'), self::ERROR_IMOL_NO_SESSION, __METHOD__));
	}

	return $result;
}