/** * @param int $idCategory * @param \Generated\Shared\Transfer\LocaleTransfer $localeTransfer * * @return void */ public function deleteCategoryRecursive($idCategory, LocaleTransfer $localeTransfer) { $this->connection->beginTransaction(); $this->removeMappings($idCategory); $categoryNodes = $this->categoryQueryContainer->queryAllNodesByCategoryId($idCategory)->find(); foreach ($categoryNodes as $node) { $this->cmsFacade->updateBlocksAssignedToDeletedCategoryNode($node->getIdCategoryNode()); //TODO: https://spryker.atlassian.net/browse/CD-540 $children = $this->categoryQueryContainer->queryFirstLevelChildren($node->getIdCategoryNode())->find(); foreach ($children as $child) { $this->deleteCategoryRecursive($child->getFkCategory(), $localeTransfer); } $nodeExists = $this->categoryQueryContainer->queryNodeById($node->getIdCategoryNode())->count() > 0; if ($nodeExists) { $this->categoryFacade->deleteNode($node->getIdCategoryNode(), $localeTransfer, true); } } $this->categoryFacade->deleteCategory($idCategory); $this->connection->commit(); }
/** * @param int $idCategory * * @return \Orm\Zed\Category\Persistence\SpyCategoryNode[]|\Propel\Runtime\Collection\ObjectCollection */ public function getAllNodesByIdCategory($idCategory) { return $this->queryContainer->queryAllNodesByCategoryId($idCategory)->find(); }