- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/internals/landing.php
- Класс: BitrixLandingInternalsLandingTable
- Вызов: LandingTable::revertCode
static function revertCode(EntityEvent $event): void
{
$primary = $event->getParameter('primary');
$fields = $event->getParameter('fields');
if (!Landing::isCheckUniqueAddress())
{
return;
}
if (isset($primary['ID']) && array_key_exists('CODE', $fields))
{
$landingId = (int)$primary['ID'];
$updateCode = false;
Landing::disableCheckDeleted();
$landing = Landing::createInstance($landingId);
if ($landing->getMeta()['RULE'])
{
Landing::enableCheckDeleted();
return;
}
if ($landing->exist())
{
if ($fields['FOLDER_ID'] ?? null)
{
$res = self::getList([
'select' => [
'ID'
],
'filter' => [
'!ID' => $primary['ID'],
'FOLDER_ID' => $fields['FOLDER_ID'],
'=CODE' => $fields['CODE']
]
]);
if ($res->fetch())
{
$updateCode = true;
}
}
else
{
$landingUrl = $landing->getPublicUrl(false, false);
$resolvedId = Landing::resolveIdByPublicUrl($landingUrl, $landing->getSiteId());
if ($resolvedId && $landingId !== $resolvedId)
{
$updateCode = true;
}
}
}
Landing::enableCheckDeleted();
if ($updateCode)
{
Landing::disableCheckUniqueAddress();
$reUpdate = [
'CODE' => $fields['CODE'] . '_' . Manager::getRandomString(4)
];
if (self::$additionalFields)
{
$reUpdate['ADDITIONAL_FIELDS'] = self::$additionalFields;
}
parent::update($landingId, $reUpdate);
Landing::enableCheckUniqueAddress();
}
}
}