• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/hook/page/copyright.php
  • Класс: BitrixLandingHookPageCopyright
  • Вызов: Copyright::onCopy
static function onCopy(?array $data, int $entityId, string $type, bool $publication = false): ?array
{
	// only for site
	if ($type !== Hook::ENTITY_TYPE_SITE)
	{
		return $data;
	}

	$data = $data ?: [];
	$newData = $data;

	if (!isset($newData['SHOW']))
	{
		$newData['SHOW'] = 'Y';
	}
	if (
		!isset($newData['CODE'])
		|| !$publication
	)
	{
		$newData['CODE'] = self::getRandomPhraseId();
	}

	// update
	if (
		$data !== $newData
		&& $publication
	)
	{
		$fields = [
			'HOOK' => 'COPYRIGHT',
			'ENTITY_ID' => $entityId,
			'ENTITY_TYPE' => $type,
			'PUBLIC' => 'N',
		];
		$existing = HookDataTable::getList([
			'select' => ['ID', 'CODE'],
			'filter' => $fields,
		]);
		while ($row = $existing->fetch())
		{
			$res = HookDataTable::update($row['ID'], [
				'VALUE' => $newData[$row['CODE']]
			]);
			if ($res->isSuccess())
			{
				unset($newData[$row['CODE']]);
			}
		}

		if (!empty($newData))
		{
			foreach($newData as $code => $value)
			{
				$fieldsAdd = $fields;
				$fieldsAdd['CODE'] = $code;
				$fieldsAdd['VALUE'] = $value;
				HookDataTable::add($fieldsAdd);
			}
		}
	}

	return $newData;
}