$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') {
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\Model\Item;
+use Friendica\Model\Term;
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);
$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 );
}
}
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']]);
}
}
$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;
/**
* 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]);
}
}
{{foreach $tags.tags as $t}}
<span class="category label btn-success sm">
<span class="p-category">{{$t.name}}</span>
- {{if $t.removeurl}} (<a href="{{$t.removeurl}}">x</a>) {{/if}}
+ {{if $t.removeurl}} <a href="{{$t.removeurl}}">(X)</a> {{/if}}
</span>
{{/foreach}}
</div>