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