getAllPresets() public method

Example: 'language': defaultPreset: 'all' label: 'Language' icon: 'icon-language' presets: 'all': label: 'All languages' values: ['mul_ZZ'] uriSegment: 'intl' 'de_DE': label: 'Deutsch (Deutschland)' values: ['de_DE', 'de_ZZ', 'mul_ZZ'] uriSegment: 'deutsch'
public getAllPresets ( ) : array
return array Presets configuration, indexed by dimension identifier
 /**
  * Array of all possible dimension configurations allowed by configured presets.
  *
  * @return array
  */
 public function getAllAllowedCombinations()
 {
     $configuration = $this->contentDimensionPresetSource->getAllPresets();
     $dimensionCombinations = [];
     $dimensionNames = array_keys($configuration);
     $dimensionCount = count($dimensionNames);
     if ($dimensionCount === 0) {
         // This is correct, we have one allowed combination which is no dimension values (empty array).
         return [[]];
     }
     // Reset all presets first just to be sure
     foreach ($configuration as $dimensionName => &$dimensionConfiguration) {
         reset($dimensionConfiguration['presets']);
     }
     unset($dimensionConfiguration);
     while (true) {
         $skipCurrentCombination = false;
         $currentPresetCombination = ['withPresetIdentifiers' => [], 'withDimensionValues' => []];
         foreach ($dimensionNames as $dimensionName) {
             $presetIdentifierForDimension = key($configuration[$dimensionName]['presets']);
             $presetForDimension = current($configuration[$dimensionName]['presets']);
             if (!is_array($presetForDimension) || !isset($presetForDimension['values'])) {
                 $skipCurrentCombination = true;
             }
             $currentPresetCombination['withPresetIdentifiers'][$dimensionName] = $presetIdentifierForDimension;
             $currentPresetCombination['withDimensionValues'][$dimensionName] = $presetForDimension['values'];
         }
         if ($skipCurrentCombination === false && $this->contentDimensionPresetSource->isPresetCombinationAllowedByConstraints($currentPresetCombination['withPresetIdentifiers'])) {
             $dimensionCombinations[] = $currentPresetCombination['withDimensionValues'];
         }
         $nextDimension = 0;
         $hasValue = next($configuration[$dimensionNames[$nextDimension]]['presets']);
         while ($hasValue === false) {
             reset($configuration[$dimensionNames[$nextDimension]]['presets']);
             $nextDimension++;
             if (!isset($dimensionNames[$nextDimension])) {
                 // we have gone through all dimension combinations now.
                 return $dimensionCombinations;
             }
             $hasValue = next($configuration[$dimensionNames[$nextDimension]]['presets']);
         }
     }
 }