- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/messageusertype.php
- Класс: BitrixMailMessageUserType
- Вызов: MessageUserType::onBeforeSave
static function onBeforeSave($userField, $mailMessageId, $userId)
{
$previousMailsIds = (array) $userField['VALUE'];
if (!in_array($mailMessageId, $previousMailsIds))
{
$message = MailMessageTable::getList([
'select' => [
'ID', 'MAILBOX_ID',
],
'filter' => [
'=ID' => $mailMessageId,
],
])->fetch();
if (MailboxTable::getUserMailbox($message['MAILBOX_ID'], $userId))
{
if ($userField['VALUE'] !== false && $userField['MULTIPLE'] === 'N')
{
$result = static::deleteList([
'!=MESSAGE_ID' => $mailMessageId,
'=ENTITY_UF_ID' => $userField['ID'],
'=ENTITY_TYPE' => $userField['ENTITY_ID'],
'=ENTITY_ID' => $userField['VALUE_ID'],
]);
}
InternalsMessageAccessTable::add([
'TOKEN' => md5(sprintf(
'%u:%u:%u:%s:%s:%u',
time(),
$message['MAILBOX_ID'],
$mailMessageId,
$userField['ENTITY_ID'],
$userField['ID'],
$userField['VALUE_ID']
)),
'MAILBOX_ID' => $message['MAILBOX_ID'],
'MESSAGE_ID' => $mailMessageId,
'ENTITY_UF_ID' => $userField['ID'],
'ENTITY_TYPE' => $userField['ENTITY_ID'],
'ENTITY_ID' => $userField['VALUE_ID'],
'SECRET' => bin2hex(MainSecurityRandom::getBytes(16)),
'OPTIONS' => [],
]);
static::sendEntityCreatedEvents($message, $userField);
}
}
return $mailMessageId;
}