• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/publicaction/block.php
  • Класс: BitrixLandingPublicActionBlock
  • Вызов: Block::cardAction
static function cardAction($action, $lid, $block, $selector, array $params = array())
{
	$error = new BitrixLandingError;
	$result = new PublicActionResult();
	$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]))
		{
			// action with card  of block
			if (mb_strpos($selector, '@') !== false)
			{
				[$selector, $position] = explode('@', $selector);
			}
			else
			{
				$position = -1;
			}
			if (
				mb_strtolower($action) == 'clonecard' &&
				isset($params['content'])
			)
			{
				$res = $blocks[$block]->$action(
					$selector,
					$position,
					Manager::sanitize(
						$params['content'], $bad
					)
				);
			}
			else
			{
				$res = $blocks[$block]->$action($selector, $position);
			}
			if ($res)
			{
				$result->setResult($blocks[$block]->save());
			}
			if ($blocks[$block]->getError()->isEmpty())
			{
				$landing->touch();
			}
			$result->setError($blocks[$block]->getError());
		}
		else
		{
			$error->addError(
				'BLOCK_NOT_FOUND',
				Loc::getMessage('LANDING_BLOCK_NOT_FOUND')
			);
		}
	}
	$result->setError($landing->getError());
	$result->setError($error);
	return $result;
}