$text = preg_replace("/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<a href="$2" class="mention hashtag" rel="tag">$1<span>$3</span></a>',
$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",
'<bdi>$1<a href="$2" class="userinfo mention" title="$3">$3</a></bdi>',
$text);
$text = preg_replace("/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<a class="mention hashtag status-link" href="$2" rel="tag">$1<span>$3</span></a>',
$text);
+ } elseif ($simple_html == self::API) {
+ $text = preg_replace("/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
+ '<a class="u-url mention status-link" href="$2" rel="nofollow noopener noreferrer" target="_blank" title="$3">$1<span>$3</span></a>',
+ $text);
+ $text = preg_replace("/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism",
+ '<a class="mention hashtag status-link" href="$2" rel="tag">$1<span>$3</span></a>',
+ $text);
} else {
$text = preg_replace("/([#@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", '$1$3', $text);
}
$accounts = [];
- if ($request['resolve']) {
- if ((strrpos($request['q'], '@') > 0) || Network::isValidHttpUrl($request['q'])) {
- $results = CoreSearch::getContactsFromProbe($request['q']);
- }
-
- 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);
+ if ((strrpos($request['q'], '@') > 0) || Network::isValidHttpUrl($request['q'])) {
+ $id = Contact::getIdForURL($request['q'], 0, $request['resolve'] ? null : 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);
{
$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);
}