Просмотр исходного кода

[Tree] MaterializedPath: Some minor fixes. Added some abstract methods to AbstractMaterializedPath

comfortablynumb 13 лет назад
Родитель
Сommit
fe6761ceed

+ 23 - 1
lib/Gedmo/Tree/Strategy/AbstractMaterializedPath.php

@@ -197,7 +197,7 @@ abstract class AbstractMaterializedPath implements Strategy
      * @param ObjectManager $om
      * @param object $node - target node
      * @param object $ea - event adapter
-     * @param mixed $originalPath - original path of object
+     * @param string $originalPath - original path of object
      * @return void
      */
     public function updateNodesChildren(ObjectManager $om, $node, $ea, $originalPath)
@@ -210,4 +210,26 @@ abstract class AbstractMaterializedPath implements Strategy
             $this->updateNode($om, $child, $ea);
         }
     }
+
+    /**
+     * Remove node and its children
+     *
+     * @param ObjectManager $om
+     * @param object $meta - Metadata
+     * @param object $config - config
+     * @param object $node - node to remove
+     * @return void
+     */
+    abstract public function removeNode($om, $meta, $config, $node);
+
+    /**
+     * Returns children of the node with its original path
+     *
+     * @param ObjectManager $om
+     * @param object $meta - Metadata
+     * @param object $config - config
+     * @param mixed $originalPath - original path of object
+     * @return Doctrine\ODM\MongoDB\Cursor
+     */
+    abstract public function getChildren($om, $meta, $config, $originalPath);
 }

+ 3 - 15
lib/Gedmo/Tree/Strategy/ODM/MongoDB/MaterializedPath.php

@@ -17,13 +17,7 @@ use Gedmo\Tree\Strategy\AbstractMaterializedPath;
 class MaterializedPath extends AbstractMaterializedPath
 {
     /**
-     * Remove node and its children
-     *
-     * @param ObjectManager $om
-     * @param object $meta - Metadata
-     * @param object $config - config
-     * @param object $node - node to remove
-     * @return void
+     * {@inheritdoc}
      */
     public function removeNode($om, $meta, $config, $node)
     {
@@ -39,19 +33,13 @@ class MaterializedPath extends AbstractMaterializedPath
     }
 
     /**
-     * Returns children of the node with its original path
-     *
-     * @param ObjectManager $om
-     * @param object $meta - Metadata
-     * @param object $config - config
-     * @param mixed $originalPath - original path of object
-     * @return void
+     * {@inheritdoc}
      */
     public function getChildren($om, $meta, $config, $originalPath)
     {
         return $om->createQueryBuilder()
             ->find($meta->name)
-            ->field($config['path'])->equals(new \MongoRegex('/^'.$originalPath.'.+/'))
+            ->field($config['path'])->equals(new \MongoRegex('/^'.preg_quote($originalPath).'.+/'))
             ->sort($config['path'], 'asc')      // This may save some calls to updateNode
             ->getQuery()
             ->execute();

+ 1 - 0
tests/Gedmo/Tree/MaterializedPathODMMongoDBTest.php

@@ -100,6 +100,7 @@ class MaterializedPathODMMongoDBTest extends BaseTestCaseMongoODM
         $this->dm->flush();
 
         $result = $this->dm->createQueryBuilder()->find(self::CATEGORY)->getQuery()->execute();
+        
         $firstResult = $result->getNext();
 
         $this->assertEquals(1, $result->count());