ソースを参照

[Tree] Closure: Minor fixes and some refactoring

comfortablynumb 13 年 前
コミット
8d33db553e

+ 13 - 7
lib/Gedmo/Tree/Entity/Repository/ClosureTreeRepository.php

@@ -297,7 +297,7 @@ class ClosureTreeRepository extends AbstractTreeRepository
         $config = $this->listener->getConfiguration($this->_em, $meta->name);
         $nestedTree = array();
         $idField = $meta->getSingleIdentifierFieldName();
-        $hasLevelProp = isset($config['level']) && $config['level'];
+        $hasLevelProp = !empty($config['level']);
         $levelProp = $hasLevelProp ? $config['level'] : self::SUBQUERY_LEVEL;
 
         if (count($nodes) > 0) {
@@ -333,7 +333,17 @@ class ClosureTreeRepository extends AbstractTreeRepository
     /**
      * {@inheritdoc}
      */
-    public function getNodesHierarchy($node, $direct, array $config, array $options = array(), $returnQueryBuilder = false)
+    public function getNodesHierarchy($node, $direct, array $config, array $options = array())
+    {
+        return $this->getNodesHierarchyQuery($node, $direct, $config, $options)->getArrayResult();
+    }
+
+    public function getNodesHierarchyQuery($node, $direct, array $config, array $options = array())
+    {
+        return $this->getNodesHierarchyQueryBuilder($node, $direct, $config, $options)->getQuery();
+    }
+
+    public function getNodesHierarchyQueryBuilder($node, $direct, array $config, array $options = array())
     {
         $meta = $this->getClassMetadata();
         $idField = $meta->getSingleIdentifierFieldName();
@@ -366,11 +376,7 @@ class ClosureTreeRepository extends AbstractTreeRepository
 
         $q->setParameters(compact('node'));
 
-        if ($returnQueryBuilder) {
-            return $q;
-        }
-
-        return $q->getQuery()->getArrayResult();
+        return $q;
     }
 
     /**

+ 1 - 1
lib/Gedmo/Tree/RepositoryUtils.php

@@ -72,7 +72,7 @@ class RepositoryUtils implements RepositoryUtilsInterface
                 // override and change it, guessing which field to use
                 if ($meta->hasField('title')) {
                     $field = 'title';
-                } else if ($meta->hasField('name')) {
+                } elseif ($meta->hasField('name')) {
                     $field = 'name';
                 } else {
                     throw new InvalidArgumentException("Cannot find any representation field");

+ 2 - 5
tests/Gedmo/Tree/ClosureTreeRepositoryTest.php

@@ -162,7 +162,7 @@ class ClosureTreeRepositoryTest extends BaseTestCaseORM
         $roots = $repo->getRootNodes();
         $meta = $this->em->getClassMetadata(self::CATEGORY);
         $config = $this->listener->getConfiguration($this->em, $meta->name);
-        $qb = $repo->getNodesHierarchy($roots[0], false, $config, array(), true);
+        $qb = $repo->getNodesHierarchyQueryBuilder($roots[0], false, $config);
 
         $this->assertFalse(strpos($qb->getQuery()->getDql(), '(SELECT MAX('));
     }
@@ -175,13 +175,11 @@ class ClosureTreeRepositoryTest extends BaseTestCaseORM
         $roots = $repo->getRootNodes();
         $meta = $this->em->getClassMetadata(self::CATEGORY_WITHOUT_LEVEL);
         $config = $this->listener->getConfiguration($this->em, $meta->name);
-        $qb = $repo->getNodesHierarchy($roots[0], false, $config, array(), true);
+        $qb = $repo->getNodesHierarchyQueryBuilder($roots[0], false, $config);
 
         $this->assertTrue(((bool) strpos($qb->getQuery()->getDql(), '(SELECT MAX(')));
     }
 
-
-
     // Utility Methods
 
     protected function buildTreeTests($class)
@@ -245,7 +243,6 @@ class ClosureTreeRepositoryTest extends BaseTestCaseORM
         $this->assertEquals('Carrots', $vegitables['__children'][1]['title']);
     }
 
-
     protected function getUsedEntityFixtures()
     {
         return array(