- Модуль: 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();
}