public function delete() { if ((int) $this->id === 0 || (int) $this->id === (int) Configuration::get('PS_ROOT_CATEGORY')) { return false; } $this->clearCache(); $deleted_children = $all_cat = $this->getAllChildren(); $all_cat[] = $this; foreach ($all_cat as $cat) { /** @var Category $cat */ $cat->deleteLite(); if (!$this->hasMultishopEntries()) { $cat->deleteImage(); $cat->cleanGroups(); $cat->cleanAssoProducts(); // Delete associated restrictions on cart rules CartRule::cleanProductRuleIntegrity('categories', array($cat->id)); Category::cleanPositions($cat->id_parent); /* Delete Categories in GroupReduction */ if (GroupReduction::getGroupsReductionByCategoryId((int) $cat->id)) { GroupReduction::deleteCategory($cat->id); } } } /* Rebuild the nested tree */ if (!$this->hasMultishopEntries() && (!isset($this->doNotRegenerateNTree) || !$this->doNotRegenerateNTree)) { Category::regenerateEntireNtree(); } Hook::exec('actionCategoryDelete', array('category' => $this, 'deleted_children' => $deleted_children)); return true; }