/** * @param array $dimensions Dimension values indexed by dimension name * @return array Allowed preset names for the given dimension combination indexed by dimension name */ public function allowedPresetsByName(array $dimensions) { $allowedPresets = array(); $preselectedDimensionPresets = array(); foreach ($dimensions as $dimensionName => $dimensionValues) { $preset = $this->contentDimensionsPresetSource->findPresetByDimensionValues($dimensionName, $dimensionValues); if ($preset !== null) { $preselectedDimensionPresets[$dimensionName] = $preset['identifier']; } } foreach ($preselectedDimensionPresets as $dimensionName => $presetName) { $presets = $this->contentDimensionsPresetSource->getAllowedDimensionPresetsAccordingToPreselection($dimensionName, $preselectedDimensionPresets); $allowedPresets[$dimensionName] = array_keys($presets[$dimensionName]['presets']); } return $allowedPresets; }
/** * Returns only presets of the dimension specified by $dimensionName. But even though only one dimension is returned, * the output follows the structure as described in ContentDimensionPresetSourceInterface::getAllPresets(). * * It is possible to pass a selection of presets as a filter. In that case, $chosenDimensionPresets must be an array * of one or more dimension names (key) and preset names (value). The returned list will then only contain dimension * presets which are allowed in combination with the given presets. * * Example: Given that $chosenDimensionPresets = array('country' => 'US') and that a second dimension "language" * exists and $dimensionName is "language. This method will now display a list of dimension presets for the dimension * "language" which are allowed in combination with the country "US". * * @param string $dimensionName Name of the dimension to return presets for * @param array $chosenDimensionPresets An optional array of dimension names and a single preset per dimension * @return void */ public function showAction($dimensionName, $chosenDimensionPresets = array()) { if ($chosenDimensionPresets === array()) { $contentDimensionsAndPresets = $this->contentDimensionPresetSource->getAllPresets(); if (!isset($contentDimensionsAndPresets[$dimensionName])) { $this->throwStatus(404, sprintf('The dimension %s does not exist.', $dimensionName)); } $contentDimensionsAndPresets = array($dimensionName => $contentDimensionsAndPresets[$dimensionName]); } else { $contentDimensionsAndPresets = $this->contentDimensionPresetSource->getAllowedDimensionPresetsAccordingToPreselection($dimensionName, $chosenDimensionPresets); } if ($this->view instanceof JsonView) { $this->view->assign('value', $contentDimensionsAndPresets); } else { $this->view->assign('dimensionName', $dimensionName); $this->view->assign('contentDimensionsPresets', $contentDimensionsAndPresets); } }