• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/messageusertype.php
  • Класс: BitrixMailMessageUserType
  • Вызов: MessageUserType::sendEntityCreatedEvents
static function sendEntityCreatedEvents($message, $userField)
{
	if (MainLoader::includeModule('pull'))
	{
		$bindingEntityLink = '';

		if ($userField['ENTITY_ID'] === MessageAccessTable::ENTITY_TYPE_CRM_ACTIVITY
			&& Loader::includeModule('crm'))
		{
			$bindingEntity = BitrixCrmActivityTable::query()
				->addSelect('OWNER_TYPE_ID')
				->addSelect('OWNER_ID')
				->where('ID', $userField['VALUE_ID'])
				->exec()
				->fetch();

			if ($bindingEntity)
			{
				$bindingEntityLink = CCrmOwnerType::GetEntityShowPath($bindingEntity['OWNER_TYPE_ID'], $bindingEntity['OWNER_ID']);
			}
		}

		if ($userField['ENTITY_ID'] === MessageAccessTable::ENTITY_TYPE_TASKS_TASK
			&& Loader::includeModule('tasks'))
		{
			$bindingEntity = BitrixTasksInternalsTaskTable::getList([
				'select' => ['ID'],
				'filter' => [
					'=ID' => $userField['VALUE_ID'],
				],
				'limit' => 1,
			])->fetch();

			if ($bindingEntity)
			{
				global $USER;
				$userPage = BitrixMainConfigOption::get('socialnetwork', 'user_page', '/company/personal/', SITE_ID);
				$bindingEntityLink = CComponentEngine::makePathFromTemplate(
					BitrixMainConfigOption::get(
						'tasks',
						'paths_task_user_action',
						$userPage . 'user/#user_id#/tasks/task/#action#/#task_id#/',
						SITE_ID
					),
					[
						'user_id' => $USER->getId(),
						'action' => 'view',
						'task_id' => $bindingEntity['ID'],
					]
				);
			}
		}

		if ($userField['ENTITY_ID'] === MessageAccessTable::ENTITY_TYPE_BLOG_POST
			&& Loader::includeModule('blog'))
		{
			$bindingEntity = BitrixBlogPostTable::getList([
				'select' => ['ID'],
				'filter' => [
					'=ID' => $userField['VALUE_ID'],
				],
				'limit' => 1,
			])->fetch();

			if ($bindingEntity)
			{
				global $USER;
				$userPage = BitrixMainConfigOption::get('socialnetwork', 'user_page', '/company/personal/', SITE_ID);
				$bindingEntityLink = CComponentEngine::makePathFromTemplate(
					$userPage . 'user/#user_id#/blog/#post_id#/',
					[
						'user_id' => $USER->getId(),
						'post_id' => $bindingEntity['ID'],
					]
				);
			}
		}

		CPullWatch::addToStack(
			'mail_mailbox_' . $message['MAILBOX_ID'],
			[
				'module_id' => 'mail',
				'command' => 'messageBindingCreated',
				'params' => [
					'messageId' => $message['ID'],
					'mailboxId' => $message['MAILBOX_ID'],
					'entityType' => $userField['ENTITY_ID'],
					'entityId' => $userField['VALUE_ID'],
					'bindingEntityLink' => $bindingEntityLink,
				],
			]
		);
	}
	$event = new MainEvent(
		'mail',
		'onBeforeUserFieldSave',
		[
			'mailbox_id' => $message['MAILBOX_ID'],
			'message_id' => $message['ID'],
			'entity_uf_id' => $userField['ID'],
			'entity_type' => $userField['ENTITY_ID'],
			'entity_id' => $userField['VALUE_ID'],
		]
	);
	$event->send();
}