Eccube\Entity\Category::countBranches PHP Method

countBranches() public method

public countBranches ( ) : integer
return integer
    public function countBranches()
    {
        $count = 1;
        foreach ($this->getChildren() as $Child) {
            $count += $Child->countBranches();
        }
        return $count;
    }

Usage Example

Example #1
0
 /**
  * カテゴリの順位を1下げる.
  *
  * @param  \Eccube\Entity\Category $Category カテゴリ
  * @return boolean 成功した場合 true
  */
 public function down(\Eccube\Entity\Category $Category)
 {
     $em = $this->getEntityManager();
     $em->getConnection()->beginTransaction();
     try {
         $rank = $Category->getRank();
         $Parent = $Category->getParent();
         if ($Parent) {
             $CategoryDown = $this->createQueryBuilder('c')->where('c.rank < :rank AND c.Parent = :Parent')->setParameter('rank', $rank)->setParameter('Parent', $Parent)->orderBy('c.rank', 'DESC')->setMaxResults(1)->getQuery()->getSingleResult();
         } else {
             $CategoryDown = $this->createQueryBuilder('c')->where('c.rank < :rank AND c.Parent IS NULL')->setParameter('rank', $rank)->orderBy('c.rank', 'DESC')->setMaxResults(1)->getQuery()->getSingleResult();
         }
         $this_count = $Category->countBranches();
         $down_count = $CategoryDown->countBranches();
         $Category->calcChildrenRank($em, $down_count * -1);
         $CategoryDown->calcChildrenRank($em, $this_count);
         $em->flush();
         $em->getConnection()->commit();
     } catch (\Exception $e) {
         $em->getConnection()->rollback();
         return false;
     }
     return true;
 }