diff --git a/mod/photos.php b/mod/photos.php index 50210d6869..8f968d0c08 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -425,13 +425,11 @@ function photos_post(App $a) $item = Item::selectFirst(['tag', 'inform', 'uri-id'], ['id' => $item_id, 'uid' => $page_owner_uid]); if (DBA::isResult($item)) { - $old_tag = $item['tag']; $old_inform = $item['inform']; } } if (strlen($rawtags)) { - $str_tags = ''; $inform = ''; // if the new tag doesn't have a namespace specifier (@foo or #foo) give it a hashtag @@ -513,15 +511,10 @@ function photos_post(App $a) if (!empty($contact)) { $taginfo[] = [$newname, $profile, $notify, $contact, '@[url=' . str_replace(',', '%2c', $profile) . ']' . $newname . '[/url]']; } else { - $taginfo[] = [$newname, $profile, $notify, null, $str_tags .= '@[url=' . $profile . ']' . $newname . '[/url]']; - } - - if (strlen($str_tags)) { - $str_tags .= ','; + $taginfo[] = [$newname, $profile, $notify, null, '@[url=' . $profile . ']' . $newname . '[/url]']; } $profile = str_replace(',', '%2c', $profile); - $str_tags .= '@[url=' . $profile . ']' . $newname . '[/url]'; if (!empty($item['uri-id'])) { Tag::store($item['uri-id'], Tag::MENTION, $newname, $profile); @@ -529,7 +522,6 @@ function photos_post(App $a) } } elseif (strpos($tag, '#') === 0) { $tagname = substr($tag, 1); - $str_tags .= '#[url=' . DI::baseUrl() . "/search?tag=" . $tagname . ']' . $tagname . '[/url],'; if (!empty($item['uri-id'])) { Tag::store($item['uri-id'], Tag::HASHTAG, $tagname); } @@ -537,19 +529,13 @@ function photos_post(App $a) } } - $newtag = $old_tag ?? ''; - if (strlen($newtag) && strlen($str_tags)) { - $newtag .= ','; - } - $newtag .= $str_tags; - $newinform = $old_inform ?? ''; if (strlen($newinform) && strlen($inform)) { $newinform .= ','; } $newinform .= $inform; - $fields = ['tag' => $newtag, 'inform' => $newinform, 'edited' => DateTimeFormat::utcNow(), 'changed' => DateTimeFormat::utcNow()]; + $fields = ['inform' => $newinform, 'edited' => DateTimeFormat::utcNow(), 'changed' => DateTimeFormat::utcNow()]; $condition = ['id' => $item_id]; Item::update($fields, $condition); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index becc80c0c3..0d321189ff 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -847,7 +847,7 @@ class Contact $item['body'] = ''; $item['title'] = ''; $item['guid'] = ''; - $item['tag'] = ''; + $item['uri-id'] = 0; $item['attach'] = ''; $slap = OStatus::salmon($item, $user); @@ -2457,7 +2457,7 @@ class Contact $item['body'] = ''; $item['title'] = ''; $item['guid'] = ''; - $item['tag'] = ''; + $item['uri-id'] = 0; $item['attach'] = ''; $slap = OStatus::salmon($item, $owner); diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 479d8d55c7..197fb2baa3 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -79,35 +79,6 @@ class Processor return $body; } - /** - * Constructs a string with tags for a given tag array - * - * @param array $tags - * @param boolean $sensitive - * @return string with tags - */ - private static function constructTagString(array $tags = null, $sensitive = false) - { - if (empty($tags)) { - return ''; - } - - $tag_text = ''; - foreach ($tags as $tag) { - if (in_array($tag['type'] ?? '', ['Mention', 'Hashtag'])) { - if (!empty($tag_text)) { - $tag_text .= ','; - } - - $tag_text .= substr($tag['name'], 0, 1) . '[url=' . $tag['href'] . ']' . substr($tag['name'], 1) . '[/url]'; - } - } - - /// @todo add nsfw for $sensitive - - return $tag_text; - } - /** * Add attachment data to the item array * @@ -263,16 +234,7 @@ class Processor } Tag::store($item['uri-id'], Tag::HASHTAG, $activity['object_content'], $activity['object_id']); - - // To-Do: - // - Check if "blocktag" is set - // - Check if actor is a contact - - if (!stristr($item['tag'], trim($activity['object_content']))) { - $tag = $item['tag'] . (strlen($item['tag']) ? ',' : '') . '#[url=' . $activity['object_id'] . ']'. $activity['object_content'] . '[/url]'; - Item::update(['tag' => $tag], ['id' => $item['id']]); - Logger::info('Tagged item', ['id' => $item['id'], 'tag' => $activity['object_content'], 'uri' => $activity['target_id'], 'actor' => $activity['actor']]); - } + Logger::info('Tagged item', ['id' => $item['id'], 'tag' => $activity['object_content'], 'uri' => $activity['target_id'], 'actor' => $activity['actor']]); } } @@ -405,8 +367,6 @@ class Processor $item['body'] = $content; } - $item['tag'] = self::constructTagString($activity['tags'], $activity['sensitive']); - self::storeFromBody($item); self::storeTags($item['uri-id'], $activity['tags']); diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 5060a7d563..74352906de 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -2001,7 +2001,7 @@ class DFRN } $fields = ['title' => $item['title'] ?? '', 'body' => $item['body'] ?? '', - 'tag' => $item['tag'] ?? '', 'changed' => DateTimeFormat::utcNow(), + 'changed' => DateTimeFormat::utcNow(), 'edited' => DateTimeFormat::utc($item["edited"])]; $condition = ["`uri` = ? AND `uid` IN (0, ?)", $item["uri"], $importer["importer_uid"]]; diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 8ab14c0781..6eeadb46c3 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -655,17 +655,8 @@ class OStatus foreach ($categories as $category) { foreach ($category->attributes as $attributes) { if ($attributes->name == 'term') { - $term = $attributes->textContent; - if (!empty($item['tag'])) { - $item['tag'] .= ','; - } else { - $item['tag'] = ''; - } - - $item['tag'] .= '#[url=' . DI::baseUrl() . '/search?tag=' . $term . ']' . $term . '[/url]'; - // Store the hashtag - Tag::store($item['uri-id'], Tag::HASHTAG, $term); + Tag::store($item['uri-id'], Tag::HASHTAG, $attributes->textContent); } } } diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index 35a228fce1..09470c3185 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -34,6 +34,7 @@ use Friendica\Model\Group; use Friendica\Model\Item; use Friendica\Model\ItemDeliveryData; use Friendica\Model\PushSubscriber; +use Friendica\Model\Tag; use Friendica\Model\User; use Friendica\Network\Probe; use Friendica\Protocol\ActivityPub; @@ -367,16 +368,11 @@ class Notifier } // Send a salmon notification to every person we mentioned in the post - $arr = explode(',',$target_item['tag']); - foreach ($arr as $x) { - //Logger::log('Checking tag '.$x, Logger::DEBUG); - $matches = null; - if (preg_match('/@\[url=([^\]]*)\]/',$x,$matches)) { - $probed_contact = Probe::uri($matches[1]); - if ($probed_contact["notify"] != "") { - Logger::log('Notify mentioned user '.$probed_contact["url"].': '.$probed_contact["notify"]); - $url_recipients[$probed_contact["notify"]] = $probed_contact["notify"]; - } + foreach (Tag::getByURIId($target_item['uri-id'], [Tag::MENTION, Tag::EXCLUSIVE_MENTION, Tag::IMPLICIT_MENTION]) as $tag) { + $probed_contact = Probe::uri($tag['url']); + if ($probed_contact["notify"] != "") { + Logger::log('Notify mentioned user '.$probed_contact["url"].': '.$probed_contact["notify"]); + $url_recipients[$probed_contact["notify"]] = $probed_contact["notify"]; } }