X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FModel%2FTerm.php;h=854861ccb589b022609d48000a7b21f0d2ce286c;hb=947cc98cc43a82cb3e67b51a897009a7bd2629a0;hp=262312532995c1b1b2753fc0c5dcc311e7ef0a20;hpb=834422d52f0b34fb088f79ac2704c3d514802d8e;p=friendica.git diff --git a/src/Model/Term.php b/src/Model/Term.php index 2623125329..854861ccb5 100644 --- a/src/Model/Term.php +++ b/src/Model/Term.php @@ -33,9 +33,9 @@ class Term return $tag_text; } - public static function tagArrayFromItemId($itemid) + public static function tagArrayFromItemId($itemid, $type = [TERM_HASHTAG, TERM_MENTION]) { - $condition = ['otype' => TERM_OBJ_POST, 'oid' => $itemid, 'type' => [TERM_HASHTAG, TERM_MENTION]]; + $condition = ['otype' => TERM_OBJ_POST, 'oid' => $itemid, 'type' => $type]; $tags = DBA::select('term', ['type', 'term', 'url'], $condition); if (!DBA::isResult($tags)) { return []; @@ -110,6 +110,18 @@ class Term $pattern = '/\W([\#@])\[url\=(.*?)\](.*?)\[\/url\]/ism'; if (preg_match_all($pattern, $data, $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { + + if ($match[1] == '@') { + $contact = Contact::getDetailsByURL($match[2], 0); + if (!empty($contact['addr'])) { + $match[3] = $contact['addr']; + } + + if (!empty($contact['url'])) { + $match[2] = $contact['url']; + } + } + $tags[$match[1] . trim($match[3], ',.:;[]/\"?!')] = $match[2]; } } @@ -130,12 +142,22 @@ class Term $term = substr($tag, 1); } elseif (substr(trim($tag), 0, 1) == '@') { $type = TERM_MENTION; - $term = substr($tag, 1); + + $contact = Contact::getDetailsByURL($link, 0); + if (!empty($contact['name'])) { + $term = $contact['name']; + } else { + $term = substr($tag, 1); + } } else { // This shouldn't happen $type = TERM_HASHTAG; $term = $tag; } + if (DBA::exists('term', ['uid' => $message['uid'], 'otype' => TERM_OBJ_POST, 'oid' => $itemid, 'url' => $link])) { + continue; + } + if ($message['uid'] == 0) { $global = true; DBA::update('term', ['global' => true], ['otype' => TERM_OBJ_POST, 'guid' => $message['guid']]);