]> git.mxchange.org Git - friendica.git/commitdiff
Add Model\Term::populateTagsFromItem method
authorHypolite Petovan <mrpetovan@gmail.com>
Sat, 14 Apr 2018 21:54:16 +0000 (17:54 -0400)
committerHypolite Petovan <mrpetovan@gmail.com>
Tue, 17 Apr 2018 02:22:58 +0000 (22:22 -0400)
src/Model/Term.php

index d950d1d5fbff9cd7693b0b0acffc701745336cff..03f19197a361705910867c8400e6c6d24f119713 100644 (file)
@@ -9,6 +9,7 @@ use Friendica\Database\DBM;
 use dba;
 
 require_once 'boot.php';
+require_once 'include/conversation.php';
 require_once 'include/dba.php';
 
 class Term
@@ -168,4 +169,56 @@ class Term
                        }
                }
        }
+
+       /**
+        * Sorts an item's tags into mentions, hashtags and other tags. Generate personalized URLs by user and modify the
+        * provided item's body with them.
+        *
+        * @param array $item
+        * @return array
+        */
+       public static function populateTagsFromItem(&$item)
+       {
+               $return = [
+                       'tags' => [],
+                       'hashtags' => [],
+                       'mentions' => [],
+               ];
+
+               $searchpath = System::baseUrl() . "/search?tag=";
+
+               $taglist = dba::select(
+                       'term',
+                       ['type', 'term', 'url'],
+                       ["`otype` = ? AND `oid` = ? AND `type` IN (?, ?)", TERM_OBJ_POST, $item['id'], TERM_HASHTAG, TERM_MENTION],
+                       ['order' => ['tid']]
+               );
+
+               while ($tag = dba::fetch($taglist)) {
+                       if ($tag["url"] == "") {
+                               $tag["url"] = $searchpath . strtolower($tag["term"]);
+                       }
+
+                       $orig_tag = $tag["url"];
+
+                       $tag["url"] = best_link_url($item, $sp, $tag["url"]);
+
+                       if ($tag["type"] == TERM_HASHTAG) {
+                               if ($orig_tag != $tag["url"]) {
+                                       $item['body'] = str_replace($orig_tag, $tag["url"], $item['body']);
+                               }
+
+                               $return['hashtags'][] = "#<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
+                               $prefix = "#";
+                       } elseif ($tag["type"] == TERM_MENTION) {
+                               $return['mentions'][] = "@<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
+                               $prefix = "@";
+                       }
+
+                       $return['tags'][] = $prefix . "<a href=\"" . $tag["url"] . "\" target=\"_blank\">" . $tag["term"] . "</a>";
+               }
+               dba::close($taglist);
+
+               return $return;
+       }
 }