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
This commit is contained in:
Andrew Dolgov 2020-12-07 23:35:37 +03:00
parent 0e4e0e624e
commit 85b788709a
2 changed files with 16 additions and 8 deletions

View File

@ -179,7 +179,7 @@ class Article extends Handler_Protected {
print "<footer>"; print "<footer>";
print "<button dojoType='dijit.form.Button' print "<button dojoType='dijit.form.Button'
type='submit' class='alt-primary' onclick=\"dijit.byId('editTagsDlg').execute()\">".__('Save')."</button> "; type='submit' class='alt-primary'>".__('Save')."</button> ";
print "<button dojoType='dijit.form.Button' print "<button dojoType='dijit.form.Button'
onclick=\"dijit.byId('editTagsDlg').hide()\">".__('Cancel')."</button>"; onclick=\"dijit.byId('editTagsDlg').hide()\">".__('Cancel')."</button>";
print "</footer>"; print "</footer>";
@ -232,19 +232,24 @@ class Article extends Handler_Protected {
$int_id = $row['int_id']; $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 = ?"); 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); $tags = FeedItem_Common::normalize_categories($tags);
foreach ($tags as $tag) { foreach ($tags as $tag) {
if ($tag != '') { $csth->execute([$int_id, $_SESSION['uid'], $tag]);
$sth = $this->pdo->prepare("INSERT INTO ttrss_tags
(post_int_id, owner_uid, tag_name)
VALUES (?, ?, ?)");
$sth->execute([$int_id, $_SESSION['uid'], $tag]); if (!$csth->fetch()) {
$usth->execute([$int_id, $_SESSION['uid'], $tag]);
} }
array_push($tags_to_cache, $tag); array_push($tags_to_cache, $tag);

View File

@ -189,6 +189,9 @@ abstract class FeedItem_Common extends FeedItem {
return $cat; return $cat;
}, $tmp); }, $tmp);
// remove empty values
$tmp = array_filter($tmp, 'strlen');
asort($tmp); asort($tmp);
return array_unique($tmp); return array_unique($tmp);