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