Allows appending new tags to existing ones in auto_tagger

This commit is contained in:
myname 2022-10-07 18:41:53 -05:00
parent 3154a833f7
commit ccb78e272c

View file

@ -210,8 +210,26 @@ class AutoTagger extends Extension
private function add_auto_tag(string $tag, string $additional_tags)
{
global $database;
if ($database->exists("SELECT * FROM auto_tag WHERE LOWER(tag)=LOWER(:tag)", ["tag"=>$tag])) {
throw new AutoTaggerException("Auto-Tag is already set for that tag");
$existing_tags = $database->get_one("SELECT additional_tags FROM auto_tag WHERE LOWER(tag)=LOWER(:tag)", ["tag"=>$tag]);
if (!is_null($existing_tags)) {
// Auto Tags already exist, so we will append new tags to the existing one
$tag = Tag::sanitize($tag);
$additional_tags = Tag::explode($additional_tags);
$existing_tags = Tag::explode($existing_tags);
foreach ($additional_tags as $t) {
if (!in_array(strtolower($t), $existing_tags)) {
array_push($existing_tags, strtolower($t));
}
}
$database->execute(
"UPDATE auto_tag set additional_tags=:existing_tags where tag=:tag",
["tag"=>$tag, "existing_tags"=>Tag::implode($existing_tags)]
);
log_info(
AutoTaggerInfo::KEY,
"Updated auto-tag for {$tag} -> {".implode(" ", $additional_tags)."}"
);
} else {
$tag = Tag::sanitize($tag);
$additional_tags = Tag::explode($additional_tags);
@ -225,10 +243,9 @@ class AutoTagger extends Extension
AutoTaggerInfo::KEY,
"Added auto-tag for {$tag} -> {".implode(" ", $additional_tags)."}"
);
// Now we apply it to existing items
$this->apply_new_auto_tag($tag);
}
// Now we apply it to existing items
$this->apply_new_auto_tag($tag);
}
private function update_auto_tag(string $tag, string $additional_tags): bool