From 76c38c7f9b5a255fa8b547e1a3a31788eb3b4512 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Mon, 30 Mar 2020 13:22:22 +0300 Subject: [PATCH 1/4] #1151 Delete sub categories when deleting a parent category [delete all subcats] --- .../src/Category/CategoryRepository.php | 33 +++++++++++++++++++ .../Contract/CategoryRepositoryInterface.php | 2 ++ .../Controller/Admin/CategoryController.php | 1 - 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php index 6db0b6ae5..d9462ec2a 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php @@ -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(); + } } } 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 38d128225..00b82a02f 100644 --- a/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php +++ b/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php @@ -21,4 +21,6 @@ interface CategoryRepositoryInterface extends EntryRepositoryInterface public function getCategories(); public function DeleteCategories($id); + + public function deleteSubcategories($id); } diff --git a/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php index 59ed1653f..b8f501a3c 100644 --- a/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php +++ b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php @@ -209,5 +209,4 @@ class CategoryController extends AdminController return redirect('admin/cats')->with('success', [$deletedCatsCount . ' categories has been deleted.']); } - } From a9b811dc44743a78359bcae75a3c33e4116f6182 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Mon, 30 Mar 2020 13:50:49 +0300 Subject: [PATCH 2/4] #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); } From 6d4145d0875473c00aa2691c9fbd4f37a6894b76 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Mon, 30 Mar 2020 14:58:56 +0300 Subject: [PATCH 3/4] #1151 Delete sub categories when deleting a parent category --- .../src/Category/CategoryModel.php | 4 ++- .../src/Category/CategoryRepository.php | 27 ++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php b/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php index 469589679..b5b4ee545 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php @@ -83,7 +83,9 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface public function deleteSubCategories($id) { $subCategories = $this->getAllSubCategories($id); - $this->newQuery()->whereIn('id', $subCategories)->delete(); + if (count($subCategories)) { + $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 ca7e41751..be73e968b 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php @@ -1,6 +1,7 @@ model = $model; + $this->advRepository = $advRepository; } public function findById($id) @@ -64,10 +68,31 @@ class CategoryRepository extends EntryRepository implements CategoryRepositoryIn return $this->model->orderBy('sort_order')->get(); } + public function removeCatFromAds($id) + { + $category = $this->find($id); + $catLevelNum = is_null($category->parent_category_id) ? 1 : $this->model->getCatLevel($category->id); + $catLevelText = "cat" . $catLevelNum; + + $advs = $this->advRepository->newQuery()->where($catLevelText, $category->id)->get(); + foreach ($advs as $adv) { + $nullableCats = array(); + for ($i = $catLevelNum; $i <= 10; $i++) { + $nullableCats['cat' . $i] = null; + } + $adv->update($nullableCats); + } + } + public function DeleteCategories($id) { + // Remove deleted category from ads + $this->removeCatFromAds($id); + + // Delete the category $this->model->find($id)->delete(); + // Delete the subcategories $this->model->deleteSubCategories($id); } } From 23bc0b8ec6e81ab6ad4700631eb855483b8b1ee8 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Mon, 30 Mar 2020 15:15:06 +0300 Subject: [PATCH 4/4] #1190 when Auto approve on doesnt set ending time --- .../advs-module/src/Http/Controller/advsController.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php index e8358e739..6844f899f 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php @@ -587,9 +587,13 @@ class AdvsController extends PublicController // Auto approve if (setting_value('visiosoft.module.advs::auto_approve')) { - if ($adv->status == 'pending_admin' || $adv->status == 'pending_user') { - $adv->status = 'approved'; - } + $defaultAdPublishTime = setting_value('visiosoft.module.advs::default_published_time'); + + $adv->update([ + 'status' => 'approved', + 'finish_at' => date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . $defaultAdPublishTime . ' day')), + 'publish_at' => date('Y-m-d H:i:s') + ]); } $form->render($request->update_id);