]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Widget/TagCloud.php
Merge pull request #13238 from annando/issue-13221
[friendica.git] / src / Content / Widget / TagCloud.php
index 49157a5bddd4cad0c0778a3ee4694869f9dd7ba9..6cee7e719050ab04b1d11277287195131ea88d95 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -26,7 +26,6 @@ use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Item;
 use Friendica\Model\Tag;
-use Friendica\Model\Term;
 
 /**
  * TagCloud widget
@@ -47,7 +46,7 @@ class TagCloud
         * @return string       HTML formatted output.
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function getHTML($uid, $count = 0, $owner_id = 0, $flags = '', $type = Tag::HASHTAG)
+       public static function getHTML(int $uid, int $count = 0, int $owner_id = 0, string $flags = '', int $type = Tag::HASHTAG): string
        {
                $o = '';
                $r = self::tagadelic($uid, $count, $owner_id, $flags, $type);
@@ -57,17 +56,17 @@ class TagCloud
 
                        $tags = [];
                        foreach ($r as $rr) {
-                               $tag['level'] = $rr[2];
-                               $tag['url'] = $url . '?tag=' . urlencode($rr[0]);
-                               $tag['name'] = $rr[0];
-
-                               $tags[] = $tag;
+                               $tags[] = [
+                                       'level' => $rr[2],
+                                       'url'   => $url . '/conversations?tag=' . urlencode($rr[0]),
+                                       'name'  => $rr[0],
+                               ];
                        }
 
                        $tpl = Renderer::getMarkupTemplate('widget/tagcloud.tpl');
                        $o = Renderer::replaceMacros($tpl, [
                                '$title' => DI::l10n()->t('Tags'),
-                               '$tags' => $tags
+                               '$tags'  => $tags
                        ]);
                }
                return $o;
@@ -88,24 +87,24 @@ class TagCloud
         */
        private static function tagadelic($uid, $count = 0, $owner_id = 0, $flags = '', $type = Tag::HASHTAG)
        {
-               $sql_options = Item::getPermissionsSQLByUserId($uid);
+               $sql_options = Item::getPermissionsSQLByUserId($uid, 'post-user-view');
                $limit = $count ? sprintf('LIMIT %d', intval($count)) : '';
 
                if ($flags) {
                        if ($flags === 'wall') {
-                               $sql_options .= ' AND `item`.`wall` ';
+                               $sql_options .= ' AND `post-user-view`.`wall` ';
                        }
                }
 
                if ($owner_id) {
-                       $sql_options .= ' AND `item`.`owner-id` = ' . intval($owner_id) . ' ';
+                       $sql_options .= ' AND `post-user-view`.`owner-id` = ' . intval($owner_id) . ' ';
                }
 
                // Fetch tags
                $tag_stmt = DBA::p("SELECT `name`, COUNT(`name`) AS `total` FROM `tag-search-view`
-                       LEFT JOIN `item` ON `tag-search-view`.`uri-id` = `item`.`uri-id`
+                       LEFT JOIN `post-user-view` ON `tag-search-view`.`uri-id` = `post-user-view`.`uri-id` AND `tag-search-view`.`uid` = `post-user-view`.`uid`
                        WHERE `tag-search-view`.`uid` = ?
-                       AND `item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`
+                       AND `post-user-view`.`visible` AND NOT `post-user-view`.`deleted`
                        $sql_options
                        GROUP BY `name` ORDER BY `total` DESC $limit",
                        $uid
@@ -128,8 +127,8 @@ class TagCloud
        private static function tagCalc(array $arr)
        {
                $tags = [];
-               $min = 1e9;
-               $max = -1e9;
+               $min = 1000000000.0;
+               $max = -1000000000.0;
                $x = 0;
 
                if (!$arr) {
@@ -145,8 +144,8 @@ class TagCloud
                        $x ++;
                }
 
-               usort($tags, 'self::tagsSort');
-               $range = max(.01, $max - $min) * 1.0001;
+               usort($tags, [self::class, 'tagsSort']);
+               $range = max(0.01, $max - $min) * 1.0001;
 
                for ($x = 0; $x < count($tags); $x ++) {
                        $tags[$x][2] = 1 + floor(9 * ($tags[$x][1] - $min) / $range);