mirror of
https://github.com/openclassify/openclassify.git
synced 2026-02-09 14:56:13 -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)
|
public function DeleteCategories($id)
|
||||||
{
|
{
|
||||||
$this->model->find($id)->delete();
|
$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 getCategories();
|
||||||
|
|
||||||
public function DeleteCategories($id);
|
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.']);
|
return redirect('admin/cats')->with('success', [$deletedCatsCount . ' categories has been deleted.']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user