mirror of
https://github.com/openclassify/openclassify.git
synced 2026-01-11 18:01:10 -06:00
#1151 Delete sub categories when deleting a parent category [delete all subcats]
This commit is contained in:
parent
767013ffdd
commit
76c38c7f9b
@ -67,5 +67,38 @@ class CategoryRepository extends EntryRepository implements CategoryRepositoryIn
|
||||
public function DeleteCategories($id)
|
||||
{
|
||||
$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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,4 +21,6 @@ interface CategoryRepositoryInterface extends EntryRepositoryInterface
|
||||
public function getCategories();
|
||||
|
||||
public function DeleteCategories($id);
|
||||
|
||||
public function deleteSubcategories($id);
|
||||
}
|
||||
|
||||
@ -209,5 +209,4 @@ class CategoryController extends AdminController
|
||||
return redirect('admin/cats')->with('success', [$deletedCatsCount . ' categories has been deleted.']);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user