- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/classes/general/mail.php
- Класс: CAllMailMessage
- Вызов: CAllMailMessage::Add
static function Add($arFields, $mailboxID = false)
{
global $DB;
if (is_set($arFields, "NEW_MESSAGE") && $arFields["NEW_MESSAGE"] != "N")
$arFields["NEW_MESSAGE"]="Y";
if (is_set($arFields, "FULL_TEXT") && !is_set($arFields, "MESSAGE_SIZE"))
$arFields["MESSAGE_SIZE"] = mb_strlen($arFields["FULL_TEXT"]);
if (!is_set($arFields, "DATE_INSERT"))
$arFields["~DATE_INSERT"] = $DB->GetNowFunction();
if (is_set($arFields, "FIELD_DATE_ORIGINAL") && !is_set($arFields, "FIELD_DATE"))
{
$datetime = preg_replace('/(?<=[sd])UT$/i', '+0000', $arFields['FIELD_DATE_ORIGINAL']);
$timestamp = strtotime($datetime) ?: time();
$arFields['FIELD_DATE'] = convertTimeStamp($timestamp + CTimeZone::getOffset(), 'FULL');
}
if (array_key_exists('SUBJECT', $arFields))
{
$arFields['SUBJECT'] = strval(mb_substr($arFields['SUBJECT'], 0, 255));
}
if (array_key_exists('OPTIONS', $arFields))
{
$arFields['OPTIONS'] = serialize($arFields['OPTIONS']);
}
$params = $DB->PrepareInsert("b_mail_message", $arFields);
$sql = sprintf("INSERT INTO b_mail_message (%s) VALUES (%s)", $params[0], $params[1]);
$length = BinaryString::getLength($sql);
if (!CMailUtil::IsSizeAllowed($length))
{
$limit = BitrixMainApplication::getConnection()->getMaxAllowedPacket() - 1;
$trimLength = $length - $limit;
self::trimContent($arFields, $trimLength, [['BODY_HTML', 'BODY'], 'SEARCH_CONTENT', 'HEADER']);
$params = $DB->PrepareInsert("b_mail_message", $arFields);
$sql = sprintf("INSERT INTO b_mail_message (%s) VALUES (%s)", $params[0], $params[1]);
}
$DB->Query($sql, false, "File: " . __FILE__ . "
Line: " . __LINE__);
$ID = intval($DB->LastID());
static::saveForDeferredDownload($ID, $arFields, $mailboxID);
return $ID;
}