X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FContent%2FWidget%2FTagCloud.php;h=6eac362b4b35793f24ea60bb88325e1758441602;hb=419fe67c6ca23dff0b2ec59d2af0c5e29699a648;hp=8413eccd19c8d13e7a4e57414b7644d9d91ed0d1;hpb=854cc3e47296d4a1b01b893376064cf254d84f79;p=friendica.git diff --git a/src/Content/Widget/TagCloud.php b/src/Content/Widget/TagCloud.php index 8413eccd19..6eac362b4b 100644 --- a/src/Content/Widget/TagCloud.php +++ b/src/Content/Widget/TagCloud.php @@ -1,16 +1,31 @@ . + * */ namespace Friendica\Content\Widget; -use Friendica\Core\L10n; use Friendica\Core\Renderer; -use Friendica\Core\System; use Friendica\Database\DBA; +use Friendica\DI; use Friendica\Model\Item; +use Friendica\Model\Tag; /** * TagCloud widget @@ -22,7 +37,6 @@ class TagCloud /** * Construct a tag/term cloud block for an user. * - * @brief Construct a tag/term cloud block for an user. * @param int $uid The user ID. * @param int $count Max number of displayed tags/terms. * @param int $owner_id The contact ID of the owner of the tagged items. @@ -32,13 +46,13 @@ 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); if (count($r)) { $contact = DBA::selectFirst('contact', ['url'], ['uid' => $uid, 'self' => true]); - $url = System::removedBaseUrl($contact['url']); + $url = DI::baseUrl()->remove($contact['url']); $tags = []; foreach ($r as $rr) { @@ -49,9 +63,9 @@ class TagCloud $tags[] = $tag; } - $tpl = Renderer::getMarkupTemplate('tagblock_widget.tpl'); + $tpl = Renderer::getMarkupTemplate('widget/tagcloud.tpl'); $o = Renderer::replaceMacros($tpl, [ - '$title' => L10n::t('Tags'), + '$title' => DI::l10n()->t('Tags'), '$tags' => $tags ]); } @@ -62,8 +76,6 @@ class TagCloud * Get alphabetical sorted array of used tags/terms of an user including * a weighting by frequency of use. * - * @brief Get alphabetical sorted array of used tags/terms of an user including - * a weighting by frequency of use. * @param int $uid The user ID. * @param int $count Max number of displayed tags/terms. * @param int $owner_id The contact id of the owner of the tagged items. @@ -73,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 []; @@ -112,15 +121,14 @@ class TagCloud /** * Calculate weighting of tags according to the frequency of use. * - * @brief Calculate weighting of tags according to the frequency of use. * @param array $arr Array of tags/terms with tag/term name and total count of use. * @return array Alphabetical sorted array of used tags/terms of an user. */ private static function tagCalc(array $arr) { $tags = []; - $min = 1e9; - $max = -1e9; + $min = 1000000000.0; + $max = -1000000000.0; $x = 0; if (!$arr) { @@ -128,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]); @@ -137,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); @@ -149,7 +157,6 @@ class TagCloud /** * Compare function to sort tags/terms alphabetically. * - * @brief Compare function to sort tags/terms alphabetically. * @param string $a * @param string $b *