• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/mail/event.php
  • Класс: Bitrix\Main\Mail\Event
  • Вызов: Event::send
static function send(array $data)
{
	$manageCache = Application::getInstance()->getManagedCache();
	if(CACHED_b_event !== false && $manageCache->read(CACHED_b_event, "events"))
	{
		$manageCache->clean('events');
	}

	$fileList = [];
	if(isset($data['FILE']))
	{
		if(is_array($data['FILE']))
			$fileList = $data['FILE'];

		unset($data['FILE']);
	}

	$attachments = [];
	foreach ($fileList as $file)
	{
		$attachment = [];
		if (is_numeric($file) && \CFile::GetFileArray($file))
		{
			$attachment['FILE_ID'] = $file;
			$attachment['IS_FILE_COPIED'] = 'N';
		}
		else
		{
			$fileArray = \CFile::MakeFileArray($file);
			$fileArray['MODULE_ID'] = 'main';

			$attachment['FILE'] = $fileArray;
			$attachment['IS_FILE_COPIED'] = 'Y';
		}
		$attachments[] = $attachment;
	}

	$connection = Application::getConnection();

	$connection->startTransaction();

	$result = MailInternal\EventTable::add($data);

	if ($result->isSuccess())
	{
		$id = $result->getId();

		foreach ($attachments as $file)
		{
			$attachment = [
				'EVENT_ID' => $id,
				'IS_FILE_COPIED' => $file['IS_FILE_COPIED'],
				'FILE_ID' => $file['FILE_ID'] ?? null,
			];

			if ($attachment['IS_FILE_COPIED'] == 'Y')
			{
				$attachment['FILE_ID'] = \CFile::SaveFile($file['FILE'], 'main');
			}

			MailInternal\EventAttachmentTable::add($attachment);
		}
	}

	$connection->commitTransaction();

	return $result;
}