diff --git a/src/PimcoreElementManagerBundle/DependencyInjection/CompilerPass/AddSaveHandlerPass.php b/src/PimcoreElementManagerBundle/DependencyInjection/CompilerPass/AddSaveHandlerPass.php index 6adf2ef..5001751 100644 --- a/src/PimcoreElementManagerBundle/DependencyInjection/CompilerPass/AddSaveHandlerPass.php +++ b/src/PimcoreElementManagerBundle/DependencyInjection/CompilerPass/AddSaveHandlerPass.php @@ -28,7 +28,7 @@ class AddSaveHandlerPass implements CompilerPassInterface */ public function process(ContainerBuilder $container): void { - foreach ($container->findTaggedServiceIds('element_manager.save_handler', true) as $id => $attributes) { + foreach ($container->findTaggedServiceIds('pimcore_element_manager.save_handler', true) as $id => $attributes) { if (!isset($attributes[0]['className'])) { throw new \InvalidArgumentException(\sprintf('Tagged Service `%s` needs to have `className` attribute.', $id)); } diff --git a/src/PimcoreElementManagerBundle/DependencyInjection/Configuration.php b/src/PimcoreElementManagerBundle/DependencyInjection/Configuration.php index 8353ab8..7df2064 100644 --- a/src/PimcoreElementManagerBundle/DependencyInjection/Configuration.php +++ b/src/PimcoreElementManagerBundle/DependencyInjection/Configuration.php @@ -44,7 +44,7 @@ class Configuration implements ConfigurationInterface */ public function getConfigTreeBuilder(): TreeBuilder { - $treeBuilder = new TreeBuilder('element_manager'); + $treeBuilder = new TreeBuilder('pimcore_element_manager'); $rootNode = $treeBuilder->getRootNode(); $rootNode @@ -109,7 +109,7 @@ private function addSaveManagerSection(ArrayNodeDefinition $rootNode): void ->useAttributeAsKey('name') ->prototype('scalar')->end() ->children() - ->scalarNode('group')->defaultValue('element_manager')->end() + ->scalarNode('group')->defaultValue('pimcore_element_manager')->end() ->end() ->end() ->end() @@ -177,7 +177,7 @@ private function addDuplicationSection(ArrayNodeDefinition $rootNode): void /** * @param ArrayNodeDefinition $node */ - private function addPimcoreResourcesSection(ArrayNodeDefinition $node) + private function addPimcoreResourcesSection(ArrayNodeDefinition $node): void { $node ->children() diff --git a/src/PimcoreElementManagerBundle/DependencyInjection/ElementManagerExtension.php b/src/PimcoreElementManagerBundle/DependencyInjection/PimcoreElementManagerExtension.php similarity index 96% rename from src/PimcoreElementManagerBundle/DependencyInjection/ElementManagerExtension.php rename to src/PimcoreElementManagerBundle/DependencyInjection/PimcoreElementManagerExtension.php index 1615e6a..d13b5bf 100644 --- a/src/PimcoreElementManagerBundle/DependencyInjection/ElementManagerExtension.php +++ b/src/PimcoreElementManagerBundle/DependencyInjection/PimcoreElementManagerExtension.php @@ -36,7 +36,7 @@ use Symfony\Component\Finder\Finder; use Symfony\Component\HttpFoundation\File\File; -class ElementManagerExtension extends AbstractModelExtension +class PimcoreElementManagerExtension extends AbstractModelExtension { /** * @inheritDoc @@ -179,12 +179,11 @@ private function registerDuplicationCheckerConfiguration( $duplicationBuilder->addMethodCall('addXmlMappings', [$files['yaml']]); } - // ToDo refactor Caching -// if (!$container->getParameter('kernel.debug')) { -// $duplicationBuilder->addMethodCall('setMetadataCache', [ -// new Reference('duplication_checker.mapping.cache.symfony'), -// ]); -// } + if (!$container->getParameter('kernel.debug')) { + $duplicationBuilder->addMethodCall('setMappingCache', [ + new Reference('duplication_checker.mapping.cache.adapter'), + ]); + } } /** @@ -220,7 +219,7 @@ private function registerDuplicationCheckerMapping(ContainerBuilder $container, $this->registerMappingFilesFromDir($dir, $fileRecorder); } - if (\is_array($config['mapping']['paths'])) { + if (isset($config['mapping']['paths']) && \is_array($config['mapping']['paths'])) { $this->registerMappingFilesFromConfig($container, $config, $fileRecorder); } } diff --git a/src/PimcoreElementManagerBundle/PimcoreElementManagerBundle.php b/src/PimcoreElementManagerBundle/PimcoreElementManagerBundle.php index 0102de2..b8f5056 100644 --- a/src/PimcoreElementManagerBundle/PimcoreElementManagerBundle.php +++ b/src/PimcoreElementManagerBundle/PimcoreElementManagerBundle.php @@ -20,9 +20,12 @@ use Composer\InstalledVersions; use CoreShop\Bundle\ResourceBundle\AbstractResourceBundle; use CoreShop\Bundle\ResourceBundle\CoreShopResourceBundle; +use Instride\Bundle\PimcoreElementManagerBundle\DependencyInjection\CompilerPass\AddDataTransformersPass; use Instride\Bundle\PimcoreElementManagerBundle\DependencyInjection\CompilerPass\AddSaveHandlerPass; +use Instride\Bundle\PimcoreElementManagerBundle\DependencyInjection\CompilerPass\AddSimilarityCheckerPass; use Pimcore\Extension\Bundle\Traits\PackageVersionTrait; use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\Validator\DependencyInjection\AddConstraintValidatorsPass; class PimcoreElementManagerBundle extends AbstractResourceBundle { @@ -50,10 +53,9 @@ public function build(ContainerBuilder $builder): void { parent::build($builder); - // TODO: Activate? -// $builder->addCompilerPass(new AddConstraintValidatorsPass('duplication_checker.validator_factory', 'duplication_checker.constraint_validator')); -// $builder->addCompilerPass(new AddDataTransformersPass()); -// $builder->addCompilerPass(new AddSimilarityCheckerPass()); + $builder->addCompilerPass(new AddConstraintValidatorsPass('duplication_checker.validator_factory', 'duplication_checker.constraint_validator')); + $builder->addCompilerPass(new AddDataTransformersPass()); + $builder->addCompilerPass(new AddSimilarityCheckerPass()); $builder->addCompilerPass(new AddSaveHandlerPass()); } diff --git a/src/PimcoreElementManagerBundle/Resources/config/pimcore/admin.yaml b/src/PimcoreElementManagerBundle/Resources/config/pimcore/admin.yaml index 320face..182b73d 100644 --- a/src/PimcoreElementManagerBundle/Resources/config/pimcore/admin.yaml +++ b/src/PimcoreElementManagerBundle/Resources/config/pimcore/admin.yaml @@ -1,8 +1,8 @@ -element_manager: +pimcore_element_manager: pimcore_admin: js: startup: '/bundles/pimcoreelementmanager/pimcore/js/startup.js' duplicate_index_item: '/bundles/pimcoreelementmanager/pimcore/js/duplication_index/item.js' duplicate_index_panel: '/bundles/pimcoreelementmanager/pimcore/js/duplication_index/panel.js' css: - index: '/bundles/pimcoreelementmanager/pimcore/css/elementmanager.css' + index: '/bundles/pimcoreelementmanager/pimcore/css/pimcoreelementmanager.css' diff --git a/src/PimcoreElementManagerBundle/Resources/config/pimcore/routing.yaml b/src/PimcoreElementManagerBundle/Resources/config/pimcore/routing.yaml index d01b512..ab6c896 100644 --- a/src/PimcoreElementManagerBundle/Resources/config/pimcore/routing.yaml +++ b/src/PimcoreElementManagerBundle/Resources/config/pimcore/routing.yaml @@ -1,22 +1,21 @@ pimcore_element_manager_admin_duplicate_index: type: coreshop.resources resource: | - alias: pimcore_element_manager.potential_duplicate - only: [get, list] - additional_routes: - duplicates: - path: get-potential-duplicates - action: getPotentialDuplicates - methods: - - GET - decline: - path: decline - action: declineDuplication - methods: - - POST - undecline: - path: undecline - action: unDeclineDuplication - methods: - - POST - + alias: pimcore_element_manager.potential_duplicate + only: [get, list] + additional_routes: + duplicates: + path: get-potential-duplicates + action: getPotentialDuplicates + methods: + - GET + decline: + path: decline + action: declineDuplication + methods: + - POST + undecline: + path: undecline + action: unDeclineDuplication + methods: + - POST diff --git a/src/PimcoreElementManagerBundle/Resources/config/services/commands.yaml b/src/PimcoreElementManagerBundle/Resources/config/services/commands.yaml index a4de9e5..a50fc0f 100644 --- a/src/PimcoreElementManagerBundle/Resources/config/services/commands.yaml +++ b/src/PimcoreElementManagerBundle/Resources/config/services/commands.yaml @@ -9,4 +9,4 @@ services: - '@Instride\Bundle\PimcoreElementManagerBundle\DuplicateIndex\DuplicateFinder' - '@event_dispatcher' tags: - - { name: console.command, command: 'element_manager:duplicate-index' } + - { name: console.command, command: 'pimcore-element-manager:duplicate-index' } diff --git a/src/PimcoreElementManagerBundle/Resources/config/services/duplication.yaml b/src/PimcoreElementManagerBundle/Resources/config/services/duplication.yaml index 999b9d3..88ab00c 100644 --- a/src/PimcoreElementManagerBundle/Resources/config/services/duplication.yaml +++ b/src/PimcoreElementManagerBundle/Resources/config/services/duplication.yaml @@ -39,7 +39,7 @@ services: tags: - { name: kernel.cache_warmer } - duplication_checker.mapping.cache.symfony.php_array: + duplication_checker.mapping.cache.adapter: class: Symfony\Component\Cache\Adapter\PhpArrayAdapter public: false factory: ['Symfony\Component\Cache\Adapter\PhpArrayAdapter', 'create'] @@ -47,12 +47,6 @@ services: - '%duplication_checker.cache.file%' - '@duplication_checker.cache' - duplication_checker.mapping.cache.symfony: - class: Symfony\Component\Cache\Psr16Cache - public: false - arguments: - - '@duplication_checker.mapping.cache.symfony.php_array' - Instride\Bundle\PimcoreElementManagerBundle\DuplicateChecker\DuplicateService: arguments: - '@duplication_checker.validator' diff --git a/src/PimcoreElementManagerBundle/Resources/config/services/save_manager.yaml b/src/PimcoreElementManagerBundle/Resources/config/services/save_manager.yaml index f3c1c81..577b759 100644 --- a/src/PimcoreElementManagerBundle/Resources/config/services/save_manager.yaml +++ b/src/PimcoreElementManagerBundle/Resources/config/services/save_manager.yaml @@ -23,3 +23,5 @@ services: - { name: kernel.event_listener, event: pimcore.dataobject.postAdd, method: onPostAdd } - { name: kernel.event_listener, event: pimcore.dataobject.preDelete, method: onPreDelete } - { name: kernel.event_listener, event: pimcore.dataobject.postDelete, method: onPostDelete } + + Instride\Bundle\PimcoreElementManagerBundle\SaveManager\ObjectSaveManagers: ~ diff --git a/src/PimcoreElementManagerBundle/Resources/public/pimcore/css/elementmanager.css b/src/PimcoreElementManagerBundle/Resources/public/pimcore/css/pimcoreelementmanager.css similarity index 100% rename from src/PimcoreElementManagerBundle/Resources/public/pimcore/css/elementmanager.css rename to src/PimcoreElementManagerBundle/Resources/public/pimcore/css/pimcoreelementmanager.css diff --git a/src/PimcoreElementManagerBundle/SaveManager/ObjectSaveManager.php b/src/PimcoreElementManagerBundle/SaveManager/ObjectSaveManager.php index ba7276f..99cb75e 100644 --- a/src/PimcoreElementManagerBundle/SaveManager/ObjectSaveManager.php +++ b/src/PimcoreElementManagerBundle/SaveManager/ObjectSaveManager.php @@ -24,73 +24,39 @@ class ObjectSaveManager implements ObjectSaveManagerInterface /** * @var ObjectSaveHandlerInterface[] */ - protected $saveHandlers = []; + protected array $saveHandlers = []; + protected array $options = []; - /** - * @var array - */ - protected $options = []; - - /** - * @inheritDoc - */ public function preAdd(Concrete $object): void { - if ($object->getPublished()) { - $this->validateOnSave($object); - } - $this->applySaveHandlers($object, 'preAdd'); - - // TODO: Should be a save handler - /*if ($this->pimcoreContextResolver->getPimcoreContext() === PimcoreContextResolver::CONTEXT_ADMIN) { - $this->applyNamingScheme($address); - }*/ } - /** - * @inheritDoc - */ public function postAdd(Concrete $object): void { $this->applySaveHandlers($object, 'postAdd'); } - /** - * @inheritDoc - */ public function preUpdate(Concrete $object): void { $this->applySaveHandlers($object, 'preUpdate'); } - /** - * @inheritDoc - */ public function postUpdate(Concrete $object): void { $this->applySaveHandlers($object, 'postUpdate'); } - /** - * @inheritDoc - */ public function preDelete(Concrete $object): void { $this->applySaveHandlers($object, 'preDelete'); } - /** - * @inheritDoc - */ public function postDelete(Concrete $object): void { $this->applySaveHandlers($object, 'postDelete'); } - /** - * @inheritDoc - */ public function validateOnSave(Concrete $object, bool $withDuplicatesCheck = true): bool { return true; @@ -112,35 +78,22 @@ public function setSaveHandlers(array $saveHandlers): void $this->saveHandlers = $saveHandlers; } - /** - * @inheritDoc - */ public function addSaveHandler(ObjectSaveHandlerInterface $saveHandler): void { $this->saveHandlers[] = $saveHandler; } - /** - * @inheritDoc - */ public function getOptions(): array { return $this->options; } - /** - * @inheritDoc - */ public function setOptions(array $options): void { $this->options = $options; } - /** - * @param Concrete $concrete - * @param $saveHandlerMethod - */ - private function applySaveHandlers(Concrete $concrete, $saveHandlerMethod): void + private function applySaveHandlers(Concrete $concrete, string $saveHandlerMethod): void { $saveHandlers = $this->getSaveHandlers(); $postSaveMethod = 'post' . \ucfirst($saveHandlerMethod);