• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/internals/block.php
  • Класс: BitrixLandingInternalsBlockTable
  • Вызов: BlockTable::prepareChange
static function prepareChange(EntityEvent $event): EntityEventResult
{
	$result = new EntityEventResult();
	$primary = $event->getParameter('primary');
	$fields = $event->getParameter('fields');
	$modifyFields = [];

	// calculate filter hash
	if (($primary['ID'] ?? null) && array_key_exists('SOURCE_PARAMS', $fields))
	{
		BitrixLandingSourceFilterEntity::setFilter(
			$primary['ID'],
			$fields['SOURCE_PARAMS']
		);
		$modifyFields['SOURCE_PARAMS'] = $fields['SOURCE_PARAMS'];
	}

	// work with content
	if (array_key_exists('CONTENT', $fields))
	{
		$replaced = false;
		$oldContent = null;

		if ($primary['ID'] ?? null)
		{
			$res = self::getList([
				'select' => [
					'CONTENT'
				],
				'filter' => [
					'ID' => $primary['ID']
				]
			]);
			$oldContent = $res->fetch()['CONTENT'] ?? null;
		}

		$fields['CONTENT'] = BitrixLandingConnectorDisk::sanitizeContent($fields['CONTENT'], $oldContent, $replaced);
		if ($replaced)
		{
			$modifyFields['CONTENT'] = $fields['CONTENT'];
		}
	}

	if ($modifyFields)
	{
		$result->modifyFields($modifyFields);
	}

	return $result;
}