]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Widget/TagCloud.php
Merge pull request #11265 from k-alin/6606-k-alin-mysql-unix-socket
[friendica.git] / src / Content / Widget / TagCloud.php
index 006aef9161f3169bff0fa9572d7f6465f8e0e796..6eac362b4b35793f24ea60bb88325e1758441602 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -25,6 +25,7 @@ use Friendica\Core\Renderer;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Item;
+use Friendica\Model\Tag;
 
 /**
  * TagCloud widget
@@ -45,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 = TERM_HASHTAG)
+       public static function getHTML($uid, $count = 0, $owner_id = 0, $flags = '', $type = Tag::HASHTAG)
        {
                $o = '';
                $r = self::tagadelic($uid, $count, $owner_id, $flags, $type);
@@ -84,32 +85,29 @@ class TagCloud
         * @return array        Alphabetical sorted array of used tags of an user.
         * @throws \Exception
         */
-       private static function tagadelic($uid, $count = 0, $owner_id = 0, $flags = '', $type = TERM_HASHTAG)
+       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 `term`, COUNT(`term`) AS `total` FROM `term`
-                       LEFT JOIN `item` ON `term`.`oid` = `item`.`id`
-                       WHERE `term`.`uid` = ? AND `term`.`type` = ?
-                       AND `term`.`otype` = ?
-                       AND `item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`
+               $tag_stmt = DBA::p("SELECT `name`, COUNT(`name`) AS `total` FROM `tag-search-view`
+                       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 `post-user-view`.`visible` AND NOT `post-user-view`.`deleted`
                        $sql_options
-                       GROUP BY `term` ORDER BY `total` DESC $limit",
-                       $uid,
-                       $type,
-                       TERM_OBJ_POST
+                       GROUP BY `name` ORDER BY `total` DESC $limit",
+                       $uid
                );
                if (!DBA::isResult($tag_stmt)) {
                        return [];
@@ -129,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) {
@@ -138,7 +136,7 @@ class TagCloud
                }
 
                foreach ($arr as $rr) {
-                       $tags[$x][0] = $rr['term'];
+                       $tags[$x][0] = $rr['name'];
                        $tags[$x][1] = log($rr['total']);
                        $tags[$x][2] = 0;
                        $min = min($min, $tags[$x][1]);
@@ -147,7 +145,7 @@ class TagCloud
                }
 
                usort($tags, 'self::tagsSort');
-               $range = max(.01, $max - $min) * 1.0001;
+               $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);