From 85b788709a9f7a93645f7aab1675b99d57874d0b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 7 Dec 2020 23:35:37 +0300 Subject: setArticleTags: prevent duplicate tags being assigned if called twice editTagsDlg: prevent dialot from being submitted twice normalize_categories: filter out empty values that failed validation --- classes/article.php | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'classes/article.php') diff --git a/classes/article.php b/classes/article.php index 5b699a103..2c691f770 100755 --- a/classes/article.php +++ b/classes/article.php @@ -179,7 +179,7 @@ class Article extends Handler_Protected { print ""; @@ -232,19 +232,24 @@ class Article extends Handler_Protected { $int_id = $row['int_id']; - $sth = $this->pdo->prepare("DELETE FROM ttrss_tags WHERE + $dsth = $this->pdo->prepare("DELETE FROM ttrss_tags WHERE post_int_id = ? AND owner_uid = ?"); - $sth->execute([$int_id, $_SESSION['uid']]); + $dsth->execute([$int_id, $_SESSION['uid']]); + + $csth = $this->pdo->prepare("SELECT post_int_id FROM ttrss_tags + WHERE post_int_id = ? AND owner_uid = ? AND tag_name = ?"); + + $usth = $this->pdo->prepare("INSERT INTO ttrss_tags + (post_int_id, owner_uid, tag_name) + VALUES (?, ?, ?)"); $tags = FeedItem_Common::normalize_categories($tags); foreach ($tags as $tag) { - if ($tag != '') { - $sth = $this->pdo->prepare("INSERT INTO ttrss_tags - (post_int_id, owner_uid, tag_name) - VALUES (?, ?, ?)"); + $csth->execute([$int_id, $_SESSION['uid'], $tag]); - $sth->execute([$int_id, $_SESSION['uid'], $tag]); + if (!$csth->fetch()) { + $usth->execute([$int_id, $_SESSION['uid'], $tag]); } array_push($tags_to_cache, $tag); -- cgit v1.2.3