From 553031534af4391732326be191cd43b7b0bee05c Mon Sep 17 00:00:00 2001 From: Banana Date: Sun, 29 Sep 2019 21:32:49 +0200 Subject: [PATCH] edit tags --- webroot/lib/management.class.php | 4 +- webroot/lib/tag.class.php | 37 ++++++++++- webroot/view/editlink.inc.php | 1 - webroot/view/editlink.php | 2 + webroot/view/edittags.inc.php | 87 ++++++++++++++++++++++++++ webroot/view/edittags.php | 101 +++++++++++++++++++++++++++++++ 6 files changed, 228 insertions(+), 4 deletions(-) create mode 100644 webroot/view/edittags.inc.php create mode 100644 webroot/view/edittags.php diff --git a/webroot/lib/management.class.php b/webroot/lib/management.class.php index 82cba80..cee705f 100644 --- a/webroot/lib/management.class.php +++ b/webroot/lib/management.class.php @@ -136,11 +136,11 @@ class Management { $query = $this->DB->query($queryStr); if(!empty($query)) { while($result = $query->fetch_assoc()) { - if($stats === true) { + if($stats === true && isset($statsInfo[$result['id']])) { $ret[$result['id']] = array('name' => $result['name'], 'amount' => $statsInfo[$result['id']]); } else { - $ret[$result['id']] = array('name' => $result['name']); + $ret[$result['id']] = array('name' => $result['name'], 'amount' => 0); } } } diff --git a/webroot/lib/tag.class.php b/webroot/lib/tag.class.php index b15f749..45caae7 100644 --- a/webroot/lib/tag.class.php +++ b/webroot/lib/tag.class.php @@ -3,7 +3,7 @@ * Insipid * Personal web-bookmark-system * - * Copyright 2016-2017 Johannes Keßler + * Copyright 2016-2019 Johannes Keßler * * Development starting from 2011: Johannes Keßler * https://www.bananas-playground.net/projekt/insipid/ @@ -91,4 +91,39 @@ class Tag { $this->DB->query($queryStr); } } + + /** + * deletes the current loaded tag 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."_tagrelation` + WHERE `tagid` = '".$this->DB->real_escape_string($this->id)."'"; + $this->DB->query($queryStr); + + $queryStr = "DELETE + FROM `".DB_PREFIX."_tag` + 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 tag: '.var_export($e->getMessage(),true)); + + $this->DB->rollback(); + } + } + + return $ret; + } } diff --git a/webroot/view/editlink.inc.php b/webroot/view/editlink.inc.php index 522106b..b819360 100644 --- a/webroot/view/editlink.inc.php +++ b/webroot/view/editlink.inc.php @@ -122,4 +122,3 @@ if(!empty($linkData['categories'])) { $existingCategories = $Management->categories(); $existingTags = $Management->tags(); - diff --git a/webroot/view/editlink.php b/webroot/view/editlink.php index a1d1da1..d7c03ac 100644 --- a/webroot/view/editlink.php +++ b/webroot/view/editlink.php @@ -53,6 +53,8 @@

+

+

diff --git a/webroot/view/edittags.inc.php b/webroot/view/edittags.inc.php new file mode 100644 index 0000000..45da0e6 --- /dev/null +++ b/webroot/view/edittags.inc.php @@ -0,0 +1,87 @@ + + * + * 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['tag']) && !empty($_POST['tag']) && isset($_POST['updateTags'])) { + $tagData = $_POST['tag']; + + $deleteTagData = array(); + if(isset($_POST['deleteTag'])) { + $deleteTagData = $_POST['deleteTag']; + } + + $newTag = $_POST['newTag']; + + # first deletion, then update and then add + # adding a new one which matches an existing one will update it. + + $submitFeedback['message'] = array(); + $submitFeedback['status'] = 'success'; + + if(!empty($deleteTagData)) { + $submitFeedback['message'][] = 'Tags deleted successfully.'; + + foreach($deleteTagData as $k=>$v) { + if($v == "delete") { + $tagObj = new Tag($DB); + $load = $tagObj->initbyid($k); + if($load !== false) { + $tagObj->delete(); + } + else { + $submitFeedback['message'][] = 'Tags could not be deleted.'; + $submitFeedback['status'] = 'error'; + } + } + } + } + + if(!empty($newTag)) { + $submitFeedback['message'][] = 'Tags added successfully.'; + $tagArr = Summoner::prepareTagOrCategoryStr($newTag); + + foreach($tagArr as $c) { + $tagObj = new Tag($DB); + $do = $tagObj->initbystring($c); + if($do === false) { + $submitFeedback['message'][] = 'Tag could not be added.'; + $submitFeedback['status'] = 'error'; + } + } + } +} + +# show all the tags we have +$tagCollection = $Management->tags(false, true); +$subHeadline = 'All the tags '; diff --git a/webroot/view/edittags.php b/webroot/view/edittags.php new file mode 100644 index 0000000..5c31193 --- /dev/null +++ b/webroot/view/edittags.php @@ -0,0 +1,101 @@ + + * + * 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 tag + + +   +
+ +
+
+
+
+ +
-- 2.39.5