• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/block.php
  • Класс: BitrixLandingBlock
  • Вызов: Block::collectAllowedAttrs
static function collectAllowedAttrs(array $mixed, array &$allowed, $selector = null)
{
	foreach ($mixed as $itemSelector => $item)
	{
		if (!is_string($itemSelector))
		{
			$itemSelector = $selector;
		}
		if (
			isset($item['attrs']) &&
			is_array($item['attrs'])
		)
		{
			self::collectAllowedAttrs($item['attrs'], $allowed, $itemSelector);
		}
		else if (
			isset($item['additional']['attrsType']) ||
			$itemSelector === 'additional'
		)
		{
			$manifestAttrs = self::getAttrs();
			$attrs = $manifestAttrs['bitrix']['attrs'];
			if (is_array($item['additional']['attrsType']))
			{
				foreach ($attrs as $attr) {
					$allowed[$itemSelector][] = $attr['attribute'];
				}
			}
			if (is_array($item['attrsType']))
			{
				foreach ($attrs as $attr) {
					$allowed['#wrapper'][] = $attr['attribute'];
				}
			}
		}
		else if (
			isset($item['additional']['attrs']) &&
			is_array($item['additional']['attrs'])
		)
		{
			self::collectAllowedAttrs($item['additional']['attrs'], $allowed, $itemSelector);
		}
		else if (
			isset($item['additional']) &&
			is_array($item['additional'])
		)
		{
			self::collectAllowedAttrs($item['additional'], $allowed, $itemSelector);
		}
		else if (
			isset($item['attribute']) &&
			is_string($item['attribute'])
		)
		{
			if (
				isset($item['selector']) &&
				is_string($item['selector'])
			)
			{
				$itemSelector = trim($item['selector']);
			}
			if ($itemSelector)
			{
				if (!isset($allowed[$itemSelector]))
				{
					$allowed[$itemSelector] = [];
				}
				$allowed[$itemSelector][] = $item['attribute'];
			}
		}
		else if (is_array($item))
		{
			self::collectAllowedAttrs($item, $allowed, $itemSelector);
		}
	}
}