diff --git a/composer.json b/composer.json index d71c8236..65241374 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ ], "require": { "php": "^8.1", - "gedmo/doctrine-extensions": "^3.20.0", + "gedmo/doctrine-extensions": "^3.21.0", "symfony/cache": "^6.4 || ^7.0", "symfony/config": "^6.4 || ^7.0", "symfony/dependency-injection": "^6.4 || ^7.0", diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 483d087e..386d6af2 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -20,6 +20,7 @@ public function getConfigTreeBuilder(): TreeBuilder ->append($this->getVendorNode('orm')) ->append($this->getVendorNode('mongodb')) ->append($this->getClassNode()) + ->append($this->getSoftDeleteableNode()) ->append($this->getUploadableNode()) ->children() ->scalarNode('default_locale') @@ -117,6 +118,21 @@ private function getClassNode(): ArrayNodeDefinition return $node; } + private function getSoftDeleteableNode(): ArrayNodeDefinition + { + $treeBuilder = new TreeBuilder('softdeleteable'); + $node = $treeBuilder->getRootNode(); + + $node + ->addDefaultsIfNotSet() + ->children() + ->booleanNode('handle_post_flush_event')->defaultFalse()->end() + ->end() + ; + + return $node; + } + private function getUploadableNode(): ArrayNodeDefinition { $treeBuilder = new TreeBuilder('uploadable'); diff --git a/src/DependencyInjection/StofDoctrineExtensionsExtension.php b/src/DependencyInjection/StofDoctrineExtensionsExtension.php index 53431a79..301e7e18 100644 --- a/src/DependencyInjection/StofDoctrineExtensionsExtension.php +++ b/src/DependencyInjection/StofDoctrineExtensionsExtension.php @@ -113,6 +113,12 @@ public function load(array $configs, ContainerBuilder $container) $container->setParameter('stof_doctrine_extensions.persist_default_translation', $config['persist_default_translation']); $container->setParameter('stof_doctrine_extensions.skip_translation_on_load', $config['skip_translation_on_load']); + // Register the softdeleteable configuration if the listener is used + if (isset($loaded['softdeleteable'])) { + $container->getDefinition('stof_doctrine_extensions.listener.softdeleteable') + ->replaceArgument(0, $config['softdeleteable']['handle_post_flush_event']); + } + // Register the uploadable configuration if the listener is used if (isset($loaded['uploadable'])) { $uploadableConfig = $config['uploadable']; diff --git a/src/Resources/config/softdeleteable.php b/src/Resources/config/softdeleteable.php index 30813129..1906a20a 100644 --- a/src/Resources/config/softdeleteable.php +++ b/src/Resources/config/softdeleteable.php @@ -11,6 +11,7 @@ $container->services() ->set('stof_doctrine_extensions.listener.softdeleteable', param('stof_doctrine_extensions.listener.softdeleteable.class')) + ->args([abstract_arg('Set in the extension')]) ->call('setCacheItemPool', [service('stof_doctrine_extensions.metadata_cache')]) ->call('setClock', [service('clock')->ignoreOnInvalid()]) ->call('setAnnotationReader', [service('.stof_doctrine_extensions.reader')->ignoreOnInvalid()])