/** * @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 $idNode * * @return bool */ public function hasChildren($idNode) { $childrenCount = $this->queryContainer->queryFirstLevelChildren($idNode)->count(); return $childrenCount > 0; }