X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FTerm.php;h=854861ccb589b022609d48000a7b21f0d2ce286c;hb=947cc98cc43a82cb3e67b51a897009a7bd2629a0;hp=02a3903f648ab930ef6133ae00cfa457a6b2df2f;hpb=0ec44f3e8a73229c3aadea86f61b5571a701c6b7;p=friendica.git diff --git a/src/Model/Term.php b/src/Model/Term.php index 02a3903f64..854861ccb5 100644 --- a/src/Model/Term.php +++ b/src/Model/Term.php @@ -33,6 +33,17 @@ class Term return $tag_text; } + public static function tagArrayFromItemId($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 []; + } + + return DBA::toArray($tags); + } + public static function fileTextFromItemId($itemid) { $file_text = ''; @@ -58,7 +69,7 @@ class Term $fields = ['guid', 'uid', 'id', 'edited', 'deleted', 'created', 'received', 'title', 'body', 'parent']; $message = Item::selectFirst($fields, ['id' => $itemid]); - if (!DBA::is_result($message)) { + if (!DBA::isResult($message)) { return; } @@ -99,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]; } } @@ -119,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']]); @@ -166,7 +199,7 @@ class Term public static function insertFromFileFieldByItemId($itemid, $files) { $message = Item::selectFirst(['uid', 'deleted'], ['id' => $itemid]); - if (!DBA::is_result($message)) { + if (!DBA::isResult($message)) { return; }