• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/Controller/Property/Action/SaveAction.php
  • Класс: BitrixIblockControllerPropertyActionSaveAction
  • Вызов: SaveAction::processFeatureFields
private function processFeatureFields(array $fields, ?array $oldFields): array
{
	$fields = $this->convertPublicFeature($fields);

	$features = $fields['FEATURES'] ?? null;
	if (!isset($features) || !is_array($features))
	{
		return $fields;
	}

	$result = [];

	$currentFeatures = [];
	if (isset($oldFields['FEATURES']))
	{
		foreach ($oldFields['FEATURES'] as $index => $isEnabled)
		{
			$currentFeatures[$index] = $isEnabled;
		}
	}

	foreach ($features as $index => $isEnabled)
	{
		if (isset($currentFeatures[$index]))
		{
			unset($currentFeatures[$index]);
		}

		$feature = PropertyFeature::parseIndex((string)$index);
		if (isset($feature))
		{
			$feature['IS_ENABLED'] = $isEnabled === 'Y' ? 'Y' : 'N';
			$result[] = $feature;
		}
	}

	foreach ($currentFeatures as $index => $isEnabled)
	{
		$feature = PropertyFeature::parseIndex($index);
		if (isset($feature))
		{
			$feature['IS_ENABLED'] = $isEnabled === 'Y' ? 'Y' : 'N';
			$result[] = $feature;
		}
	}

	$fields['FEATURES'] = $result;

	return $fields;
}