Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/landing/lib/History/Action/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/landing/lib/History/Action/UpdateDynamicAction.php

<?php

namespace Bitrix\Landing\History\Action;

use Bitrix\Landing\Block;
use Bitrix\Landing\Node;
use Bitrix\Main\Web\Json;

class UpdateDynamicAction extends BaseAction
{
	// now it is not used as separate js command, just as multy
	protected const JS_COMMAND = 'updateDynamic';

	public function execute(bool $undo = true): bool
	{
		$value = $undo ? $this->params['valueBefore'] : $this->params['valueAfter'];

		if ($this->params['block'] && is_array($value))
		{
			$block = new Block((int)$this->params['block']);
			$block->saveDynamicParams($value);

			return $block->save();
		}

		return false;
	}

	public static function enrichParams(array $params): array
	{
		$params['block'] = $params['block']->getId();

		return $params;
	}

	/**
	 * @param bool $undo - if false - redo
	 * @return array
	 */
	public function getJsCommand(bool $undo = true): array
	{
		$params = parent::getJsCommand($undo);

		$params['params']['value'] =
			$undo
				? $params['params']['valueBefore']
				: $params['params']['valueAfter'];

		unset(
			$params['params']['valueAfter'],
			$params['params']['valueBefore'],
		);

		$params['params']['dynamicParams'] = $params['params']['value'];
		$params['params']['dynamicState'] = [];
		foreach (array_keys($params['params']['dynamicParams']) as $selector)
		{
			$params['params']['dynamicState'][$selector] = true;
		}
		if (!$params['params']['dynamicState']['wrapper'])
		{
			!$params['params']['dynamicState']['wrapper'] = false;
		}

		return $params;
	}
}