diff --git a/src/PimcoreElementManagerBundle/DependencyInjection/PimcoreElementManagerExtension.php b/src/PimcoreElementManagerBundle/DependencyInjection/PimcoreElementManagerExtension.php index cc21220..d0c5975 100644 --- a/src/PimcoreElementManagerBundle/DependencyInjection/PimcoreElementManagerExtension.php +++ b/src/PimcoreElementManagerBundle/DependencyInjection/PimcoreElementManagerExtension.php @@ -68,13 +68,9 @@ public function load(array $configs, ContainerBuilder $container): void ); $bundles = $container->getParameter('kernel.bundles'); + $isMergeSupported = \array_key_exists('ObjectMergerBundle', $bundles); - if (\array_key_exists('ObjectMergerBundle', $bundles)) { - $container->setParameter('pimcore_element_manager.merge_supported', true); - } - else { - $container->setParameter('pimcore_element_manager.merge_supported', false); - } + $container->setParameter('pimcore_element_manager.merge_supported', $isMergeSupported); $this->registerDuplicationCheckerConfiguration($config['duplication'] ?? [], $container, $loader); @@ -105,12 +101,12 @@ private function registerSaveManagerConfiguration( $definition = new Definition($config['save_manager_class']); $options = [ - 'naming_scheme' => $config['naming_scheme']['options'], - 'duplicates' => $config['duplicates']['options'], - 'validations' => $config['validations']['options'], + 'naming_scheme' => $config['naming_scheme']['options'] ?? null, + 'duplicates' => $config['duplicates']['options'] ?? null, + 'validations' => $config['validations']['options'] ?? null, ]; - if ($config['naming_scheme']['enabled']) { + if (isset($config['naming_scheme']['enabled']) && $config['naming_scheme']['enabled'] === true) { $namingDefinition = new Definition(NamingSchemeSaveHandler::class, [ new Reference($config['naming_scheme']['service']), ]); @@ -126,22 +122,20 @@ private function registerSaveManagerConfiguration( ]); } - if ($config['unique_key']['enabled']) { + if (isset($config['unique_key']['enabled']) && $config['unique_key']['enabled'] === true) { $definition->addMethodCall('addSaveHandler', [new Reference(UniqueKeySaveHandler::class)]); } - if ($config['validations']['enabled_on_save']) { + if (isset($config['validations']['enabled_on_save']) && $config['validations']['enabled_on_save'] === true) { $definition->addMethodCall('addSaveHandler', [new Reference(ValidationSaveHandler::class)]); } - if ($config['duplicates']['enabled_on_save']) { + if (isset($config['duplicates']['enabled_on_save']) && $config['duplicates']['enabled_on_save'] === true) { $definition->addMethodCall('addSaveHandler', [new Reference(DuplicationSaveHandler::class)]); } - if ($config['save_handlers']) { - foreach ($config['save_handlers'] as $saveHandler) { - $definition->addMethodCall('addSaveHandler', [new Reference($saveHandler)]); - } + foreach ($config['save_handlers'] ?? [] as $saveHandler) { + $definition->addMethodCall('addSaveHandler', [new Reference($saveHandler)]); } $definition->addMethodCall('setOptions', [$options]); @@ -221,9 +215,7 @@ private function registerDuplicationCheckerMapping(ContainerBuilder $container, $this->registerMappingFilesFromDir($dir, $fileRecorder); } - if (isset($config['mapping']['paths']) && \is_array($config['mapping']['paths'])) { - $this->registerMappingFilesFromConfig($container, $config, $fileRecorder); - } + $this->registerMappingFilesFromConfig($container, $config, $fileRecorder); } private function registerMappingFilesFromDir($dir, callable $fileRecorder): void @@ -246,7 +238,7 @@ private function registerMappingFilesFromConfig( array $config, callable $fileRecorder ): void { - foreach ($config['mapping']['paths'] as $path) { + foreach ($config['mapping']['paths'] ?? [] as $path) { if (\is_dir($path)) { $this->registerMappingFilesFromDir($path, $fileRecorder); $container->addResource(new DirectoryResource($path, '/^$/')); @@ -256,6 +248,7 @@ private function registerMappingFilesFromConfig( \sprintf('Unsupported mapping type in "%s", supported types is only Yaml.', $path) ); } + $fileRecorder($matches[1], $path); } else { throw new \RuntimeException(\sprintf('Could not open file or directory "%s".', $path)); @@ -268,16 +261,16 @@ private function registerDuplicateIndexConfiguration( string $className, array $config ): void { - if (!$config || !$config['enabled']) { + if (!isset($config['enabled']) || $config['enabled'] !== true) { return; } $groups = []; - foreach ($config['groups'] as $groupName => $group) { + foreach ($config['groups'] ?? [] as $groupName => $group) { $fields = []; - foreach ($group['fields'] as $fieldName => $fieldConfig) { + foreach ($group['fields'] ?? [] as $fieldName => $fieldConfig) { $fieldMetaData = new Definition(FieldMetadata::class, [ $fieldName, $fieldConfig, ]); @@ -312,7 +305,7 @@ private function registerDuplicateIndexConfiguration( return; } - $listFields = $config['list_fields']; + $listFields = $config['list_fields'] ?? []; $metadata = new Definition(Metadata::class, [$className, $groups, $listFields]);