From 9851e8417a1323d2326ca868a4de61d720aa480d Mon Sep 17 00:00:00 2001 From: Banana Date: Tue, 23 Jul 2019 23:17:30 +0200 Subject: [PATCH] editing categories --- webroot/lib/category.class.php | 50 ++++++++++++++- webroot/view/editcategories.inc.php | 70 +++++++++++++++++++++ webroot/view/editcategories.php | 96 +++++++++++++++++++++++++++++ webroot/view/overview.inc.php | 68 ++++++++++---------- webroot/view/overview.php | 21 ++++++- 5 files changed, 267 insertions(+), 38 deletions(-) create mode 100644 webroot/view/editcategories.inc.php create mode 100644 webroot/view/editcategories.php diff --git a/webroot/lib/category.class.php b/webroot/lib/category.class.php index db216f8..4c48913 100644 --- a/webroot/lib/category.class.php +++ b/webroot/lib/category.class.php @@ -71,11 +71,24 @@ class Category { /** * by given DB table id load all the info we need * @param int $id + * @return boolean */ public function initbyid($id) { + $ret = false; + if(!empty($id)) { - $this->id = $id; + $queryStr = "SELECT id,name + FROM `".DB_PREFIX."_category` + WHERE `id` = '".$this->DB->real_escape_string($id)."'"; + $query = $this->DB->query($queryStr); + if(!empty($query) && $query->num_rows > 0) { + $result = $query->fetch_assoc(); + $this->id = $id; + $ret = true; + } } + + return $ret; } /** @@ -91,4 +104,39 @@ class Category { $this->DB->query($queryStr); } } + + /** + * deletes the current loaded category from db + * @return boolean + */ + public function delete() { + $ret = false; + + if(!empty($this->id)) { + $this->DB->begin_transaction(MYSQLI_TRANS_START_READ_WRITE); + + try { + $queryStr = "DELETE + FROM `".DB_PREFIX."_categoryrelation` + WHERE `categoryid` = '".$this->DB->real_escape_string($this->id)."'"; + $this->DB->query($queryStr); + + $queryStr = "DELETE + FROM `".DB_PREFIX."_category` + WHERE `id` = '".$this->DB->real_escape_string($this->id)."'"; + $this->DB->query($queryStr); + + $this->DB->commit(); + } catch (Exception $e) { + if(DEBUG) { + var_dump($e->getMessage()); + } + error_log('Failed to remove category: '.var_export($e->getMessage(),true)); + + $this->DB->rollback(); + } + } + + return $ret; + } } diff --git a/webroot/view/editcategories.inc.php b/webroot/view/editcategories.inc.php new file mode 100644 index 0000000..d739a37 --- /dev/null +++ b/webroot/view/editcategories.inc.php @@ -0,0 +1,70 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/gpl-3.0. + * + */ +$submitFeedback = false; +$formData = false; + +# very simple security check. +# can/should be extended in the future. +Summoner::simpleAuth(); + + +if(isset($_POST['category']) && !empty($_POST['category']) && isset($_POST['updateCategories'])) { + $categoryData = $_POST['category']; + + $deleteCategoryData = array(); + if(isset($_POST['deleteCategory'])) { + $deleteCategoryData = $_POST['deleteCategory']; + } + + $newCategory = $_POST['newCategory']; + + # first deletion, then update and then add + # adding a new one which matches an existing one will update it. + + if(!empty($deleteCategoryData)) { + foreach($deleteCategoryData as $k=>$v) { + if($v == "delete") { + $catObj = new Category($DB); + $load = $catObj->initbyid($k); + if($load === true) { + $catObj->delete(); + } + } + } + + $submitFeedback['message'] = 'Link updated successfully.'; + $submitFeedback['status'] = 'success'; + } + + $submitFeedback['message'] = 'Something went wrong...'; + $submitFeedback['status'] = 'error'; +} + +# show all the categories we have +$categoryCollection = $Management->categories(false, true); +$subHeadline = 'All the categories '; diff --git a/webroot/view/editcategories.php b/webroot/view/editcategories.php new file mode 100644 index 0000000..0fd5615 --- /dev/null +++ b/webroot/view/editcategories.php @@ -0,0 +1,96 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/gpl-3.0. + * + */ + ?> +
+
+
+

+ + + + + + + + + +

+
+
+ +
+
+ +

+ +
+
+
+ +
+ +
+
+
+ + + + + + + $v) { ?> + + + + + + + + + + + + + + +
NameNew nameDeletion
+ + + +
New category + + +   +
+ +
+
+
+
+ +
diff --git a/webroot/view/overview.inc.php b/webroot/view/overview.inc.php index 0137dd0..05581ec 100644 --- a/webroot/view/overview.inc.php +++ b/webroot/view/overview.inc.php @@ -27,14 +27,14 @@ */ $_requestMode = false; if(isset($_GET['m']) && !empty($_GET['m'])) { - $_requestMode = trim($_GET['m']); - $_requestMode = Summoner::validate($_requestMode,'nospace') ? $_requestMode : "all"; + $_requestMode = trim($_GET['m']); + $_requestMode = Summoner::validate($_requestMode,'nospace') ? $_requestMode : "all"; } $_id = false; if(isset($_GET['id']) && !empty($_GET['id'])) { - $_id = trim($_GET['id']); - $_id = Summoner::validate($_id,'digit') ? $_id : false; + $_id = trim($_GET['id']); + $_id = Summoner::validate($_id,'digit') ? $_id : false; } $linkCollection = array(); @@ -43,34 +43,34 @@ $tagCollection = array(); $categoryCollection = array(); switch($_requestMode) { - case 'tag': - if(!empty($_id)) { - $linkCollection = $Management->linksByTag($_id,false,false); - if(!empty($linkCollection)) { - $subHeadline = $linkCollection[0]['tag'].' '; - } - } - else { - # show all the tags we have - $tagCollection = $Management->tags(false, true); - $subHeadline = 'All the tags '; - } - break; - case 'category': - if(!empty($_id)) { - $linkCollection = $Management->linksByCategory($_id,false,false); - if(!empty($linkCollection)) { - $subHeadline = $linkCollection[0]['category'].' '; - } - } - else { - # show all the categories we have - $categoryCollection = $Management->categories(false, true); - $subHeadline = 'All the categories '; - } - break; - case 'all': - default: - # show all - $linkCollection = $Management->links(); + case 'tag': + if(!empty($_id)) { + $linkCollection = $Management->linksByTag($_id,false,false); + if(!empty($linkCollection)) { + $subHeadline = $linkCollection[0]['tag'].' '; + } + } + else { + # show all the tags we have + $tagCollection = $Management->tags(false, true); + $subHeadline = 'All the tags '; + } + break; + case 'category': + if(!empty($_id)) { + $linkCollection = $Management->linksByCategory($_id,false,false); + if(!empty($linkCollection)) { + $subHeadline = $linkCollection[0]['category'].' '; + } + } + else { + # show all the categories we have + $categoryCollection = $Management->categories(false, true); + $subHeadline = 'All the categories '; + } + break; + case 'all': + default: + # show all + $linkCollection = $Management->links(); } diff --git a/webroot/view/overview.php b/webroot/view/overview.php index 65cfdb3..79e6536 100644 --- a/webroot/view/overview.php +++ b/webroot/view/overview.php @@ -3,7 +3,7 @@ * Insipid * Personal web-bookmark-system * - * Copyright 2016-2018 Johannes Keßler + * Copyright 2016-2019 Johannes Keßler * * Development starting from 2011: Johannes Keßler * https://www.bananas-playground.net/projekt/insipid/ @@ -25,8 +25,7 @@ * along with this program. If not, see http://www.gnu.org/licenses/gpl-3.0. * */ - ?> - +?>
@@ -100,6 +99,14 @@
+
@@ -117,6 +124,14 @@
+
-- 2.39.5