From a9b811dc44743a78359bcae75a3c33e4116f6182 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Mon, 30 Mar 2020 13:50:49 +0300 Subject: [PATCH] #1151 Delete sub categories when deleting a parent category #465 --- .../src/Category/CategoryModel.php | 7 ++-- .../src/Category/CategoryRepository.php | 33 +------------------ .../Contract/CategoryRepositoryInterface.php | 2 -- 3 files changed, 4 insertions(+), 38 deletions(-) diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php b/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php index 821f4af15..469589679 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php @@ -24,7 +24,7 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface $cat_ids[] = $cat->id; $subCat = $cat->parent_category_id; if ($subCat != null) { - for ($i = 0; $i < 7; $i++) { + for ($i = 0; $i < 10; $i++) { $parCat = $this->getCat($subCat); if (isset($parCat)) { if ($parCat->parent_category_id == "") { @@ -83,9 +83,8 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface public function deleteSubCategories($id) { $subCategories = $this->getAllSubCategories($id); - foreach ($subCategories as $subCategory) { - $this->find($subCategory)->delete(); - } + $this->newQuery()->whereIn('id', $subCategories)->delete(); + return true; } diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php index d9462ec2a..ca7e41751 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php @@ -68,37 +68,6 @@ class CategoryRepository extends EntryRepository implements CategoryRepositoryIn { $this->model->find($id)->delete(); - $this->deleteSubcategories($id); - } - - public function deleteSubcategories($id) - { - // Get all subcategories - $allSubcategories = array(); - $subcategories = $this->getSubCatById($id); - if (count($subcategories)) { - foreach ($subcategories as $subcategory) { - $allSubcategories[$subcategory->id] = ['id' => $subcategory->id, 'processed' => false]; - } - do { - $unprocessedCategories = array_filter($allSubcategories, function ($unprocessedCategory) { - return $unprocessedCategory['processed'] === false; - }); - foreach ($unprocessedCategories as $unprocessedCategory) { - $subcategories = $this->getSubCatById($unprocessedCategory['id']); - foreach ($subcategories as $subcategory) { - $allSubcategories[$subcategory->id] = ['id' => $subcategory->id, 'processed' => false]; - } - $allSubcategories[$unprocessedCategory['id']]['processed'] = true; - } - } while (count($unprocessedCategories)); - - // Delete all subcategories - $whereIn = array(); - foreach ($allSubcategories as $category) { - $whereIn[] = $category['id']; - } - $this->newQuery()->whereIn('id', $whereIn)->delete(); - } + $this->model->deleteSubCategories($id); } } diff --git a/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php b/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php index 00b82a02f..38d128225 100644 --- a/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php +++ b/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php @@ -21,6 +21,4 @@ interface CategoryRepositoryInterface extends EntryRepositoryInterface public function getCategories(); public function DeleteCategories($id); - - public function deleteSubcategories($id); }