diff --git a/mod/photos.php b/mod/photos.php index 65ad9b5d4..247898ccd 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -1418,9 +1418,8 @@ function photos_content(App $a) $arr = explode(',', $link_item['tag']); // parse tags and add links $tag_arr = []; - foreach ($arr as $t) { - array_push($tag_arr, ['name' => BBCode::convert($t), - 'removeurl' => '/tagrm/'.$link_item['id'] . '/' . bin2hex($t)]); + foreach ($arr as $tag) { + array_push($tag_arr, ['name' => BBCode::convert($tag), 'removeurl' => '/tagrm/'.$link_item['id'] . '/' . bin2hex($tag)]); } $tags = ['title' => L10n::t('Tags: '), 'tags' => $tag_arr]; if ($cmd === 'edit') { diff --git a/mod/tagrm.php b/mod/tagrm.php index 8497bc28a..a5288eaf9 100644 --- a/mod/tagrm.php +++ b/mod/tagrm.php @@ -9,6 +9,7 @@ use Friendica\Core\L10n; use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Model\Item; +use Friendica\Model\Term; function tagrm_post(App $a) { @@ -21,10 +22,8 @@ function tagrm_post(App $a) } $tags = []; - if (defaults($_POST, 'tag', '')){ - foreach ($_POST['tag'] as $t){ - array_push($tags, hex2bin(notags(trim($t)))); - } + foreach (defaults($_POST, 'tag', []) as $tag) { + array_push($tags, hex2bin(notags(trim($tag)))); } $item_id = defaults($_POST,'item', 0); @@ -52,23 +51,24 @@ function update_tags($item_id, $tags){ $a->internalRedirect($_SESSION['photo_return']); } - $arr = explode(',', $item['tag']); + $old_tags = explode(',', $item['tag']); - foreach ($tags as $t) { - foreach ($arr as $i => $x) { - if (strcmp($x, $t) == 0) { - unset($arr[$i]); + foreach ($tags as $new_tag) { + foreach ($old_tags as $count => $old_tag) { + if (strcmp($old_tag, $new_tag) == 0) { + unset($old_tags[$count]); break; } } } - $tag_str = implode(',',$arr); - if(empty($tag_str)){ - $tag_str = ''; + $tag_str = implode(',',$old_tags); + if(!empty($tag_str)) { + Item::update(['tag' => $tag_str], ['id' => $item_id]); + } + else { + Term::deleteByItemId($item_id); } - - Item::update(['tag' => $tag_str], ['id' => $item_id]); info(L10n::t('Tag(s) removed') . EOL ); } diff --git a/src/Model/Item.php b/src/Model/Item.php index 3df242931..77828273b 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -896,14 +896,9 @@ class Item extends BaseObject } if (!is_null($tags)) { - if ($tags) { - Term::insertFromTagFieldByItemId($item['id'], $tags); - if (!empty($item['tag'])) { - DBA::update('item', ['tag' => ''], ['id' => $item['id']]); - } - } - else { - Term::deleteAllTags($item['id']); + Term::insertFromTagFieldByItemId($item['id'], $tags); + if (!empty($item['tag'])) { + DBA::update('item', ['tag' => ''], ['id' => $item['id']]); } } diff --git a/src/Model/Term.php b/src/Model/Term.php index 75cc10070..f62fced70 100644 --- a/src/Model/Term.php +++ b/src/Model/Term.php @@ -76,7 +76,7 @@ class Term $message['tag'] = $tags; // Clean up all tags - DBA::delete('term', ['otype' => TERM_OBJ_POST, 'oid' => $itemid, 'type' => [TERM_HASHTAG, TERM_MENTION]]); + self::deleteByItemId($itemid); if ($message['deleted']) { return; @@ -294,16 +294,16 @@ class Term /** * Delete all tags from an item * @param int itemid - choose from which item the tags will be removed + * @param array type - items type. default is [TERM_HASHTAG, TERM_MENTION] */ - public static function deleteAllTags($itemid) + public static function deleteByItemId($itemid, $type = [TERM_HASHTAG, TERM_MENTION]) { - $message = Item::selectFirst(['id'], ['id' => $itemid]); - if (!DBA::isResult($message)) { + if (empty($itemid)) { return; } // Clean up all tags - DBA::delete('term', ['otype' => TERM_OBJ_POST, 'oid' => $itemid, 'type' => [TERM_HASHTAG, TERM_MENTION]]); + DBA::delete('term', ['otype' => TERM_OBJ_POST, 'oid' => $itemid, 'type' => $type]); } } diff --git a/view/theme/frio/templates/photo_view.tpl b/view/theme/frio/templates/photo_view.tpl index 939d9f0e9..7dc2db901 100644 --- a/view/theme/frio/templates/photo_view.tpl +++ b/view/theme/frio/templates/photo_view.tpl @@ -55,7 +55,7 @@ {{foreach $tags.tags as $t}} {{$t.name}} - {{if $t.removeurl}} (x) {{/if}} + {{if $t.removeurl}} (X) {{/if}} {{/foreach}}