- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/classes/general/mail.php
- Класс: CAllMailMessage
- Вызов: CAllMailMessage::Update
static function Update($ID, $arFields, $mailboxID = false)
{
global $DB;
$ID = intval($ID);
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->PrepareUpdate("b_mail_message", $arFields);
$sql = sprintf("UPDATE b_mail_message SET %s WHERE ID=%s", $params, $ID);
$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->PrepareUpdate("b_mail_message", $arFields);
$sql = sprintf("UPDATE b_mail_message SET %s WHERE ID=%s", $params, $ID);
}
$DB->Query($sql, false, "File: " . __FILE__ . "
Line: " . __LINE__);
static::saveForDeferredDownload($ID, $arFields, $mailboxID);
return true;
}