$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
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);
}
} 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);
}
}
}
- $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);
$item['body'] = '';
$item['title'] = '';
$item['guid'] = '';
- $item['tag'] = '';
+ $item['uri-id'] = 0;
$item['attach'] = '';
$slap = OStatus::salmon($item, $user);
$item['body'] = '';
$item['title'] = '';
$item['guid'] = '';
- $item['tag'] = '';
+ $item['uri-id'] = 0;
$item['attach'] = '';
$slap = OStatus::salmon($item, $owner);
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
*
}
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']]);
}
}
$item['body'] = $content;
}
- $item['tag'] = self::constructTagString($activity['tags'], $activity['sensitive']);
-
self::storeFromBody($item);
self::storeTags($item['uri-id'], $activity['tags']);
}
$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"]];
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);
}
}
}
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;
}
// 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"];
}
}