Browse Source

[sluggable] handlers removed object manager from constructor, since it may differ when called

gediminasm 14 years ago
parent
commit
1ddd2f592c

+ 2 - 2
lib/Gedmo/Sluggable/Handler/InversedRelativeSlugHandler.php

@@ -48,9 +48,8 @@ class InversedRelativeSlugHandler implements SlugHandlerInterface
      * )
      * {@inheritDoc}
      */
-    public function __construct(ObjectManager $om, SluggableListener $sluggable)
+    public function __construct(SluggableListener $sluggable)
     {
-        $this->om = $om;
         $this->sluggable = $sluggable;
     }
 
@@ -84,6 +83,7 @@ class InversedRelativeSlugHandler implements SlugHandlerInterface
      */
     public function onSlugCompletion(SluggableAdapter $ea, array &$config, $object, &$slug)
     {
+        $this->om = $ea->getObjectManager();
         $isInsert = $this->om->getUnitOfWork()->isScheduledForInsert($object);
         if (!$isInsert) {
             $options = $this->getOptions($object);

+ 2 - 2
lib/Gedmo/Sluggable/Handler/RelativeSlugHandler.php

@@ -57,9 +57,8 @@ class RelativeSlugHandler implements SlugHandlerInterface
      * )
      * {@inheritDoc}
      */
-    public function __construct(ObjectManager $om, SluggableListener $sluggable)
+    public function __construct(SluggableListener $sluggable)
     {
-        $this->om = $om;
         $this->sluggable = $sluggable;
     }
 
@@ -85,6 +84,7 @@ class RelativeSlugHandler implements SlugHandlerInterface
      */
     public function postSlugBuild(SluggableAdapter $ea, array &$config, $object, &$slug)
     {
+        $this->om = $ea->getObjectManager();
         $this->originalTransliterator = $this->sluggable->getTransliterator();
         $this->sluggable->setTransliterator(array($this, 'transliterate'));
     }

+ 1 - 2
lib/Gedmo/Sluggable/Handler/SlugHandlerInterface.php

@@ -24,10 +24,9 @@ interface SlugHandlerInterface
     /**
      * Construct the slug handler
      *
-     * @param Doctrine\Common\Persistence\ObjectManager $om
      * @param Gedmo\Sluggable\SluggableListener $sluggable
      */
-    function __construct(ObjectManager $om, SluggableListener $sluggable);
+    function __construct(SluggableListener $sluggable);
 
     /**
      * Get the options for specific object

+ 2 - 2
lib/Gedmo/Sluggable/Handler/TreeSlugHandler.php

@@ -72,9 +72,8 @@ class TreeSlugHandler implements SlugHandlerInterface
     /**
      * {@inheritDoc}
      */
-    public function __construct(ObjectManager $om, SluggableListener $sluggable)
+    public function __construct(SluggableListener $sluggable)
     {
-        $this->om = $om;
         $this->sluggable = $sluggable;
     }
 
@@ -105,6 +104,7 @@ class TreeSlugHandler implements SlugHandlerInterface
      */
     public function postSlugBuild(SluggableAdapter $ea, array &$config, $object, &$slug)
     {
+        $this->om = $ea->getObjectManager();
         $options = $this->getOptions($object);
         $this->originalTransliterator = $this->sluggable->getTransliterator();
         $this->sluggable->setTransliterator(array($this, 'transliterate'));

+ 10 - 4
lib/Gedmo/Sluggable/SluggableListener.php

@@ -152,10 +152,16 @@ class SluggableListener extends MappedEventSubscriber
         return __NAMESPACE__;
     }
 
-    private function getHandler($class, ObjectManager $om)
+    /**
+     * Get the slug handler instance by $class name
+     *
+     * @param string $class
+     * @return Gedmo\Sluggable\Handler\SlugHandlerInterface
+     */
+    private function getHandler($class)
     {
         if (!isset($this->handlers[$class])) {
-            $this->handlers[$class] = new $class($om, $this);
+            $this->handlers[$class] = new $class($this);
         }
         return $this->handlers[$class];
     }
@@ -206,7 +212,7 @@ class SluggableListener extends MappedEventSubscriber
                 if (isset($config['handlers'])) {
                     foreach ($config['handlers'] as $class => $options) {
                         $this
-                            ->getHandler($class, $om)
+                            ->getHandler($class)
                             ->postSlugBuild($ea, $slugFieldConfig, $object, $slug)
                         ;
                     }
@@ -249,7 +255,7 @@ class SluggableListener extends MappedEventSubscriber
                 if (isset($config['handlers'])) {
                     foreach ($config['handlers'] as $class => $options) {
                         $this
-                            ->getHandler($class, $om)
+                            ->getHandler($class)
                             ->onSlugCompletion($ea, $slugFieldConfig, $object, $slug)
                         ;
                     }