• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/update/block.php
  • Класс: BitrixLandingUpdateBlock
  • Вызов: Block::prepareClassesToSet
static function prepareClassesToSet($classes, array $addClasses = [], array $removeClasses = [])
{
	if (is_array($classes) && isset($classes['classList']))
	{
		$classes = $classes['classList'];
	}
	if (!is_array($classes))
	{
		$classes = [$classes];
	}

	$classesUnique = array_unique($classes);
	// all nodes have equal classes
	if (count($classesUnique) === 1)
	{
		$result = [
			[
				'classList' => $classesUnique[0],
				'suffix' => '',
			],
		];
	}
	// different classes
	else
	{
		$classesSorted = [];
		// find most frequent class
		$counts = array_count_values($classes);
		arsort($counts);
		$mainClass = key($counts);
		foreach ($classes as $pos => $class)
		{
			if ($class !== $mainClass)
			{
				$classesSorted[] = [
					'classList' => $class,
					 'suffix' => '@' . $pos,
				];
			}
		}
		$result = array_merge(
			[
				[
					'classList' => $mainClass,
					'suffix' => '',
				],
			],
			$classesSorted
		);
	}

	// add and remove classes
	foreach ($result as $pos => $class)
	{
		if ($addClasses || $removeClasses)
		{
			$classList = explode(' ', $class['classList']);

			if ($addClasses)
			{
				$classList = array_merge($classList, $addClasses);
			}
			if ($removeClasses)
			{
				$classList = array_diff($classList, $removeClasses);
			}
			$result[$pos]['classList'] = implode(' ', array_unique($classList));
		}
	}

	return $result;
}