Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
21 / 21 |
CRAP | |
100.00% |
51 / 51 |
Category | |
100.00% |
1 / 1 |
|
100.00% |
33 / 33 |
40 | |
100.00% |
51 / 51 |
__toString | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
countBranches | |
100.00% |
1 / 1 |
2 | |
100.00% |
0 / 0 |
|||
calcChildrenRank | |
100.00% |
1 / 1 |
2 | |
100.00% |
0 / 0 |
|||
getParents | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
getPath | |
100.00% |
1 / 1 |
4 | |
100.00% |
9 / 9 |
|||
getNameWithLevel | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
getDescendants | |
100.00% |
1 / 1 |
3 | |
100.00% |
9 / 9 |
|||
getSelfAndDescendants | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
hasProductCategories | |
100.00% |
1 / 1 |
1 | |
100.00% |
5 / 5 |
|||
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
getId | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
setName | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getName | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
setLevel | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getLevel | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
setRank | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getRank | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
setCreateDate | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getCreateDate | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
setUpdateDate | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getUpdateDate | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
setDelFlg | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getDelFlg | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
addProductCategory | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
removeProductCategory | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
getProductCategories | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
addChild | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
removeChild | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
getChildren | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
setParent | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getParent | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
setCreator | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getCreator | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
<?php | |
/* | |
* This file is part of EC-CUBE | |
* | |
* Copyright(c) 2000-2015 LOCKON CO.,LTD. All Rights Reserved. | |
* | |
* http://www.lockon.co.jp/ | |
* | |
* This program is free software; you can redistribute it and/or | |
* modify it under the terms of the GNU General Public License | |
* as published by the Free Software Foundation; either version 2 | |
* of the License, or (at your option) any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* | |
* You should have received a copy of the GNU General Public License | |
* along with this program; if not, write to the Free Software | |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
*/ | |
namespace Eccube\Entity; | |
use Doctrine\Common\Collections\Criteria; | |
use Doctrine\ORM\Mapping as ORM; | |
/** | |
* Category | |
*/ | |
class Category extends \Eccube\Entity\AbstractEntity | |
{ | |
/** | |
* @return string | |
*/ | |
public function __toString() | |
{ | |
return $this->getName(); | |
} | |
/** | |
* @return integer | |
*/ | |
public function countBranches() | |
{ | |
$count = 1; | |
foreach ($this->getChildren() as $Child) { | |
$count += $Child->countBranches(); | |
} | |
return $count; | |
} | |
/** | |
* @param \Doctrine\ORM\EntityManager $em | |
* @param integer $rank | |
* @return \Eccube\Entity\Category | |
*/ | |
public function calcChildrenRank(\Doctrine\ORM\EntityManager $em, $rank) | |
{ | |
$this->setRank($this->getRank() + $rank); | |
$em->persist($this); | |
foreach ($this->getChildren() as $Child) { | |
$Child->calcChildrenRank($em, $rank); | |
} | |
return $this; | |
} | |
public function getParents() | |
{ | |
$path = $this->getPath(); | |
array_pop($path); | |
return $path; | |
} | |
public function getPath() | |
{ | |
$path = array(); | |
$Category = $this; | |
$max = 10; | |
while ($max--) { | |
$path[] = $Category; | |
$Category = $Category->getParent(); | |
if (!$Category || !$Category->getId()) { | |
break; | |
} | |
} | |
return array_reverse($path); | |
} | |
public function getNameWithLevel() | |
{ | |
return str_repeat(' ', $this->getLevel() - 1) . $this->getName(); | |
} | |
public function getDescendants() | |
{ | |
$DescendantCategories = array(); | |
$max = 10; | |
$ChildCategories = $this->getChildren(); | |
foreach ($ChildCategories as $ChildCategory) { | |
$DescendantCategories[$ChildCategory->getId()] = $ChildCategory; | |
$DescendantCategories2 = $ChildCategory->getDescendants(); | |
foreach ($DescendantCategories2 as $DescendantCategory) { | |
$DescendantCategories[$DescendantCategory->getId()] = $DescendantCategory; | |
} | |
} | |
return $DescendantCategories; | |
} | |
public function getSelfAndDescendants() | |
{ | |
return array_merge(array($this), $this->getDescendants()); | |
} | |
/** | |
* カテゴリに紐づく商品があるかどうかを調べる. | |
* | |
* ProductCategoriesはExtra Lazyのため, lengthやcountで評価した際にはCOUNTのSQLが発行されるが, | |
* COUNT自体が重いので, LIMIT 1で取得し存在チェックを行う. | |
* | |
* @see http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-associations.html#filtering-collections | |
* @return bool | |
*/ | |
public function hasProductCategories() | |
{ | |
$criteria = Criteria::create() | |
->orderBy(array('category_id' => Criteria::ASC)) | |
->setFirstResult(0) | |
->setMaxResults(1); | |
return $this->ProductCategories->matching($criteria)->count() === 1; | |
} | |
/** | |
* @var integer | |
*/ | |
private $id; | |
/** | |
* @var string | |
*/ | |
private $name; | |
/** | |
* @var integer | |
*/ | |
private $level; | |
/** | |
* @var integer | |
*/ | |
private $rank; | |
/** | |
* @var \DateTime | |
*/ | |
private $create_date; | |
/** | |
* @var \DateTime | |
*/ | |
private $update_date; | |
/** | |
* @var integer | |
*/ | |
private $del_flg; | |
/** | |
* @var \Doctrine\Common\Collections\Collection | |
*/ | |
private $ProductCategories; | |
/** | |
* @var \Doctrine\Common\Collections\Collection | |
*/ | |
private $Children; | |
/** | |
* @var \Eccube\Entity\Category | |
*/ | |
private $Parent; | |
/** | |
* @var \Eccube\Entity\Member | |
*/ | |
private $Creator; | |
/** | |
* Constructor | |
*/ | |
public function __construct() | |
{ | |
$this->ProductCategories = new \Doctrine\Common\Collections\ArrayCollection(); | |
$this->Children = new \Doctrine\Common\Collections\ArrayCollection(); | |
} | |
/** | |
* Get id | |
* | |
* @return integer | |
*/ | |
public function getId() | |
{ | |
return $this->id; | |
} | |
/** | |
* Set name | |
* | |
* @param string $name | |
* @return Category | |
*/ | |
public function setName($name) | |
{ | |
$this->name = $name; | |
return $this; | |
} | |
/** | |
* Get name | |
* | |
* @return string | |
*/ | |
public function getName() | |
{ | |
return $this->name; | |
} | |
/** | |
* Set level | |
* | |
* @param integer $level | |
* @return Category | |
*/ | |
public function setLevel($level) | |
{ | |
$this->level = $level; | |
return $this; | |
} | |
/** | |
* Get level | |
* | |
* @return integer | |
*/ | |
public function getLevel() | |
{ | |
return $this->level; | |
} | |
/** | |
* Set rank | |
* | |
* @param integer $rank | |
* @return Category | |
*/ | |
public function setRank($rank) | |
{ | |
$this->rank = $rank; | |
return $this; | |
} | |
/** | |
* Get rank | |
* | |
* @return integer | |
*/ | |
public function getRank() | |
{ | |
return $this->rank; | |
} | |
/** | |
* Set create_date | |
* | |
* @param \DateTime $createDate | |
* @return Category | |
*/ | |
public function setCreateDate($createDate) | |
{ | |
$this->create_date = $createDate; | |
return $this; | |
} | |
/** | |
* Get create_date | |
* | |
* @return \DateTime | |
*/ | |
public function getCreateDate() | |
{ | |
return $this->create_date; | |
} | |
/** | |
* Set update_date | |
* | |
* @param \DateTime $updateDate | |
* @return Category | |
*/ | |
public function setUpdateDate($updateDate) | |
{ | |
$this->update_date = $updateDate; | |
return $this; | |
} | |
/** | |
* Get update_date | |
* | |
* @return \DateTime | |
*/ | |
public function getUpdateDate() | |
{ | |
return $this->update_date; | |
} | |
/** | |
* Set del_flg | |
* | |
* @param integer $delFlg | |
* @return Category | |
*/ | |
public function setDelFlg($delFlg) | |
{ | |
$this->del_flg = $delFlg; | |
return $this; | |
} | |
/** | |
* Get del_flg | |
* | |
* @return integer | |
*/ | |
public function getDelFlg() | |
{ | |
return $this->del_flg; | |
} | |
/** | |
* Add ProductCategories | |
* | |
* @param \Eccube\Entity\ProductCategory $productCategories | |
* @return Category | |
*/ | |
public function addProductCategory(\Eccube\Entity\ProductCategory $productCategories) | |
{ | |
$this->ProductCategories[] = $productCategories; | |
return $this; | |
} | |
/** | |
* Remove ProductCategories | |
* | |
* @param \Eccube\Entity\ProductCategory $productCategories | |
*/ | |
public function removeProductCategory(\Eccube\Entity\ProductCategory $productCategories) | |
{ | |
$this->ProductCategories->removeElement($productCategories); | |
} | |
/** | |
* Get ProductCategories | |
* | |
* @return \Doctrine\Common\Collections\Collection | |
*/ | |
public function getProductCategories() | |
{ | |
return $this->ProductCategories; | |
} | |
/** | |
* Add Children | |
* | |
* @param \Eccube\Entity\Category $children | |
* @return Category | |
*/ | |
public function addChild(\Eccube\Entity\Category $children) | |
{ | |
$this->Children[] = $children; | |
return $this; | |
} | |
/** | |
* Remove Children | |
* | |
* @param \Eccube\Entity\Category $children | |
*/ | |
public function removeChild(\Eccube\Entity\Category $children) | |
{ | |
$this->Children->removeElement($children); | |
} | |
/** | |
* Get Children | |
* | |
* @return \Doctrine\Common\Collections\Collection | |
*/ | |
public function getChildren() | |
{ | |
return $this->Children; | |
} | |
/** | |
* Set Parent | |
* | |
* @param \Eccube\Entity\Category $parent | |
* @return Category | |
*/ | |
public function setParent(\Eccube\Entity\Category $parent = null) | |
{ | |
$this->Parent = $parent; | |
return $this; | |
} | |
/** | |
* Get Parent | |
* | |
* @return \Eccube\Entity\Category | |
*/ | |
public function getParent() | |
{ | |
return $this->Parent; | |
} | |
/** | |
* Set Creator | |
* | |
* @param \Eccube\Entity\Member $creator | |
* @return Category | |
*/ | |
public function setCreator(\Eccube\Entity\Member $creator = null) | |
{ | |
$this->Creator = $creator; | |
return $this; | |
} | |
/** | |
* Get Creator | |
* | |
* @return \Eccube\Entity\Member | |
*/ | |
public function getCreator() | |
{ | |
return $this->Creator; | |
} | |
} |