- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/publicaction/block.php
- Класс: Bitrix\Landing\PublicAction\Block
- Вызов: Block::changeNodeName
static function changeNodeName($lid, $block, array $data, bool $preventHistory = false)
{
$error = new \Bitrix\Landing\Error;
$result = new PublicActionResult();
$content = array();
Landing::setEditMode();
$preventHistory ? History::deactivate() : History::activate();
// collect selectors in right array
foreach ($data as $selector => $value)
{
if (mb_strpos($selector, '@') !== false)
{
[$selector, $position] = explode('@', $selector);
}
else
{
$position = 0;
}
if (!isset($content[$selector]))
{
$content[$selector] = array();
}
$content[$selector][$position] = $value;
}
if (!empty($content))
{
$landing = Landing::createInstance($lid, [
'blocks_id' => $block
]);
// try find the block in landing instance
if ($landing->exist())
{
$block = intval($block);
$blocks = $landing->getBlocks();
if (isset($blocks[$block]))
{
$blocks[$block]->changeNodeName($content);
$result->setResult($blocks[$block]->save());
$result->setError($blocks[$block]->getError());
if ($blocks[$block]->getError()->isEmpty())
{
$landing->touch();
}
}
else
{
$error->addError(
'BLOCK_NOT_FOUND',
Loc::getMessage('LANDING_BLOCK_NOT_FOUND')
);
}
}
$result->setError($landing->getError());
}
else
{
$error->addError(
'NODES_NOT_FOUND',
Loc::getMessage('LANDING_BLOCK_NODES_NOT_FOUND')
);
}
return $result;
}