name])) { $featurePostValues = $postValues[$this->name]; } $this->postValues = $featurePostValues; $isNonCustomPresetActive = false; $customPresetFound = false; foreach ($this->presetRegistry as $presetClass) { $presetInstance = GeneralUtility::makeInstance($presetClass); if (!($presetInstance instanceof PresetInterface)) { throw new Exception( 'Preset ' . $presetClass . ' does not implement PresetInterface', 1378644821 ); } $presetInstance->setPostValues($featurePostValues); // Custom preset is set active if no preset before is active if ($presetInstance->isActive()) { $isNonCustomPresetActive = true; } if ($presetInstance instanceof CustomPresetInterface && !$isNonCustomPresetActive ) { // Throw Exception if two custom presets are registered if ($customPresetFound === true) { throw new Exception( 'Preset ' . $presetClass . ' implements CustomPresetInterface, but another' . ' custom preset is already registered', 1378645039 ); } /** @var CustomPresetInterface $presetInstance */ $presetInstance->setActive(); $customPresetFound = true; } $this->presetInstances[] = $presetInstance; } } /** * Return presets ordered by priority * * @return array|PresetInterface[] * @throws Exception */ public function getPresetsOrderedByPriority() { if (empty($this->presetInstances)) { throw new Exception( 'Presets not initialized', 1378645155 ); } $orderedPresets = []; foreach ($this->presetInstances as $presetInstance) { /** @var PresetInterface $presetInstance */ $orderedPresets[$presetInstance->getPriority()] = $presetInstance; } krsort($orderedPresets, SORT_NUMERIC); return $orderedPresets; } /** * Return name of feature * * @return string Name of feature */ public function getName() { return $this->name; } }