- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/site/update/chatsalesorder.php
- Класс: BitrixLandingSiteUpdateChatSalesOrder
- Вызов: ChatSalesOrder::prepareLandingHooks
static function prepareLandingHooks($currentHooks, $newHooks, $pageId): void
{
$isUpdateBgHooks = true;
foreach ($currentHooks as $currentHookData)
{
if (
$currentHookData['HOOK'] === 'BACKGROUND'
&& $currentHookData['CODE'] === 'USE'
&& $currentHookData['VALUE'] === 'Y'
)
{
$isUpdateBgHooks = false;
}
}
$updateHooksData = [];
$createHooksData = [];
foreach ($newHooks as $hookData)
{
if ($hookData['HOOK'] === 'BACKGROUND' && $isUpdateBgHooks === false)
{
continue;
}
$isExistPublicHook = false;
$isExistUnPublicHook = false;
foreach ($currentHooks as $currentHookData)
{
if (
$hookData['HOOK'] === $currentHookData['HOOK']
&& $hookData['CODE'] === $currentHookData['CODE']
)
{
if ($hookData['VALUE'] !== $currentHookData['VALUE'])
{
$updateHooksData[] = [
'ID' => $currentHookData['ID'],
'VALUE' => $hookData['VALUE'],
];
}
$isPublicHook = $currentHookData['PUBLIC'];
if ($isPublicHook === 'Y')
{
$isExistPublicHook = true;
}
if ($isPublicHook === 'N')
{
$isExistUnPublicHook = true;
}
}
}
$isNeedCreateHook = false;
if (!$isExistPublicHook)
{
$isNeedCreateHook = true;
$isPublic = 'Y';
}
if (!$isExistUnPublicHook)
{
$isNeedCreateHook = true;
$isPublic = 'N';
}
if ($isNeedCreateHook === true && isset($isPublic))
{
$createHooksData[] = [
'ENTITY_ID' => $pageId,
'ENTITY_TYPE' => 'L',
'HOOK' => $hookData['HOOK'],
'CODE' => $hookData['CODE'],
'VALUE' => $hookData['VALUE'],
'PUBLIC' => $isPublic,
];
}
}
//update
foreach ($updateHooksData as $updateHookData)
{
InternalsHookDataTable::update(
$updateHookData['ID'],
['VALUE' => $updateHookData['VALUE']]
);
}
//create
foreach ($createHooksData as $createHookData)
{
InternalsHookDataTable::add([
'ENTITY_ID' => $createHookData['ENTITY_ID'],
'ENTITY_TYPE' => $createHookData['ENTITY_TYPE'],
'HOOK' => $createHookData['HOOK'],
'CODE' => $createHookData['CODE'],
'VALUE' => $createHookData['VALUE'],
'PUBLIC' => $createHookData['PUBLIC'],
]);
}
}