/** * Löscht eine Kategorie und reorganisiert die Prioritäten verbleibender Geschwister-Kategorien. * * @param int $category_id Id der Kategorie die gelöscht werden soll * * @throws rex_api_exception * * @return string Eine Statusmeldung */ public static function deleteCategory($category_id) { $clang = 1; $thisCat = rex_sql::factory(); $thisCat->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'article WHERE id=' . $category_id . ' and clang_id=' . $clang); // Prüfen ob die Kategorie existiert if ($thisCat->getRows() == 1) { $KAT = rex_sql::factory(); $KAT->setQuery('select * from ' . rex::getTablePrefix() . "article where parent_id='{$category_id}' and clang_id='{$clang}' and startarticle=1"); // Prüfen ob die Kategorie noch Unterkategorien besitzt if ($KAT->getRows() == 0) { $KAT->setQuery('select * from ' . rex::getTablePrefix() . "article where parent_id='{$category_id}' and clang_id='{$clang}' and startarticle=0"); // Prüfen ob die Kategorie noch Artikel besitzt (ausser dem Startartikel) if ($KAT->getRows() == 0) { $thisCat = rex_sql::factory(); $thisCat->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'article WHERE id=' . $category_id); $parent_id = $thisCat->getValue('parent_id'); $message = rex_article_service::_deleteArticle($category_id); foreach ($thisCat as $row) { $_clang = $row->getValue('clang_id'); // ----- PRIOR self::newCatPrio($parent_id, $_clang, 0, 1); // ----- EXTENSION POINT $message = rex_extension::registerPoint(new rex_extension_point('CAT_DELETED', $message, ['id' => $category_id, 'parent_id' => $parent_id, 'clang' => $_clang, 'name' => $row->getValue('catname'), 'priority' => $row->getValue('catpriority'), 'path' => $row->getValue('path'), 'status' => $row->getValue('status')])); } rex_complex_perm::removeItem('structure', $category_id); } else { throw new rex_api_exception(rex_i18n::msg('category_could_not_be_deleted') . ' ' . rex_i18n::msg('category_still_contains_articles')); } } else { throw new rex_api_exception(rex_i18n::msg('category_could_not_be_deleted') . ' ' . rex_i18n::msg('category_still_contains_subcategories')); } } else { throw new rex_api_exception(rex_i18n::msg('category_could_not_be_deleted')); } return $message; }