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