From 56ac879c92c20482d67a05541884dd2b08126ea6 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 6 Nov 2022 05:43:34 +0000 Subject: [PATCH] Issue 2657: Mentions will now be recognized by clients --- src/Content/Text/BBCode.php | 9 +++++++- src/Module/Api/Mastodon/Accounts/Search.php | 22 +++++-------------- src/Module/Api/Mastodon/Search.php | 24 ++++++--------------- 3 files changed, 19 insertions(+), 36 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 2ed4e57b3c..a9c137b6a0 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1971,13 +1971,20 @@ class BBCode $text = preg_replace("/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism", '', $text); - } elseif (in_array($simple_html, [self::INTERNAL, self::EXTERNAL, self::API])) { + } elseif (in_array($simple_html, [self::INTERNAL, self::EXTERNAL])) { $text = preg_replace("/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", '$1$3', $text); $text = preg_replace("/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism", '', $text); + } elseif ($simple_html == self::API) { + $text = preg_replace("/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", + '$1$3', + $text); + $text = preg_replace("/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism", + '', + $text); } else { $text = preg_replace("/([#@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", '$1$3', $text); } diff --git a/src/Module/Api/Mastodon/Accounts/Search.php b/src/Module/Api/Mastodon/Accounts/Search.php index 71f6f82dab..5e8e647ea5 100644 --- a/src/Module/Api/Mastodon/Accounts/Search.php +++ b/src/Module/Api/Mastodon/Accounts/Search.php @@ -52,27 +52,15 @@ class Search extends BaseApi $accounts = []; - if ($request['resolve']) { - if ((strrpos($request['q'], '@') > 0) || Network::isValidHttpUrl($request['q'])) { - $results = CoreSearch::getContactsFromProbe($request['q']); - } + if ((strrpos($request['q'], '@') > 0) || Network::isValidHttpUrl($request['q'])) { + $id = Contact::getIdForURL($request['q'], 0, $request['resolve'] ? null : false); - if (!empty($results)) { - $counter = 0; - foreach ($results->getResults() as $result) { - if (++$counter > $request['limit']) { - continue; - } - if ($result instanceof ContactResult) { - $id = Contact::getIdForURL($result->getUrl(), 0, false); - - $accounts[] = DI::mstdnAccount()->createFromContactId($id, $uid); - } - } + if (!empty($id)) { + $accounts[] = DI::mstdnAccount()->createFromContactId($id, $uid); } } - if (count($accounts) < $request['limit']) { + if (empty($accounts)) { $contacts = Contact::searchByName($request['q'], '', $request['following'] ? $uid : 0, $request['limit']); foreach ($contacts as $contact) { $accounts[] = DI::mstdnAccount()->createFromContactId($contact['id'], $uid); diff --git a/src/Module/Api/Mastodon/Search.php b/src/Module/Api/Mastodon/Search.php index b21ff50f29..3a4999242e 100644 --- a/src/Module/Api/Mastodon/Search.php +++ b/src/Module/Api/Mastodon/Search.php @@ -84,28 +84,16 @@ class Search extends BaseApi { $accounts = []; - if ($resolve) { - if ((strrpos($q, '@') > 0) || Network::isValidHttpUrl($q)) { - $results = CoreSearch::getContactsFromProbe($q); - } + if ((strrpos($q, '@') > 0) || Network::isValidHttpUrl($q)) { + $id = Contact::getIdForURL($q, 0, $resolve ? null : false); - if (!empty($results)) { - $counter = 0; - foreach ($results->getResults() as $result) { - if (++$counter > $limit) { - continue; - } - if ($result instanceof ContactResult) { - $id = Contact::getIdForURL($result->getUrl(), 0, false); - - $accounts[] = DI::mstdnAccount()->createFromContactId($id, $uid); - } - } + if (!empty($id)) { + $accounts[] = DI::mstdnAccount()->createFromContactId($id, $uid); } } - if (count($accounts) < $limit) { - $contacts = Contact::searchByName($q, '', $following ? $uid : 0, $limit - count($accounts), $offset); + if (empty($accounts)) { + $contacts = Contact::searchByName($q, '', $following ? $uid : 0, $limit, $offset); foreach ($contacts as $contact) { $accounts[] = DI::mstdnAccount()->createFromContactId($contact['id'], $uid); }