$configuration) { if (empty($configuration) || !is_array($configuration)) { throw new InvalidConfigurationException( 'Missing configuration for module "' . $identifier . '".', 1519490105 ); } if (!is_string($configuration['module']) || empty($configuration['module']) || !class_exists($configuration['module']) || !is_subclass_of( $configuration['module'], ModuleInterface::class, true ) ) { throw new InvalidConfigurationException( 'The module "' . $identifier . '" defines an invalid module class. Ensure the class exists and implements the "' . ModuleInterface::class . '".', 1519490112 ); } } $orderedModules = GeneralUtility::makeInstance(DependencyOrderingService::class)->orderByDependencies( $modules ); $moduleInstances = []; foreach ($orderedModules as $moduleConfiguration) { $module = GeneralUtility::makeInstance($moduleConfiguration['module']); if ( $module instanceof ModuleInterface && ( ($module instanceof ConfigurableInterface && $module->isEnabled()) || !($module instanceof ConfigurableInterface) ) ) { $moduleInstances[$module->getIdentifier()] = $module; } if ($module instanceof SubmoduleProviderInterface) { $subModuleInstances = $this->validateSortAndInitializeModules($moduleConfiguration['submodules'] ?? []); $module->setSubModules($subModuleInstances); } } return $moduleInstances; } }