]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Widget/TagCloud.php
Line endings are converted to unix style
[friendica.git] / src / Content / Widget / TagCloud.php
index 6d53ca9951dcd9c0e596006781201cb48027c50d..19ea3eea0485eed8e3f445bda7b3fe94bdc3f0a9 100644 (file)
-<?php\r
-\r
-/*\r
- * @file src/Content/Widget/TagCloud.php\r
- */\r
-\r
-namespace Friendica\Content\Widget;\r
-\r
-use dba;\r
-use Friendica\Core\L10n;\r
-use Friendica\Core\System;\r
-use Friendica\Database\DBM;\r
-\r
-require_once 'include/dba.php';\r
-require_once 'include/security.php';\r
-\r
-/**\r
- * TagCloud widget\r
- *\r
- * @author Rabuzarus\r
- */\r
-class TagCloud\r
-{\r
-       /**\r
-        * Construct a tag/term cloud block for an user.\r
-        *\r
-        * @brief Construct a tag/term cloud block for an user.\r
-        * @param int $uid      The user ID.\r
-        * @param int $count    Max number of displayed tags/terms.\r
-        * @param int $owner_id The contact ID of the owner of the tagged items.\r
-        * @param string $flags Special item flags.\r
-        * @param int $type     The tag/term type.\r
-        *\r
-        * @return string       HTML formatted output.\r
-        */\r
-       public static function getHTML($uid, $count = 0, $owner_id = 0, $flags = '', $type = TERM_HASHTAG)\r
-       {\r
-               $o = '';\r
-               $r = self::tagadelic($uid, $count, $owner_id, $flags, $type);\r
-               if (count($r)) {\r
-                       $contact = dba::selectFirst('contact', ['url'], ['uid' => $uid, 'self' => true]);\r
-                       $url = System::removedBaseUrl($contact['url']);\r
-\r
-                       foreach ($r as $rr) {\r
-                               $tag['level'] = $rr[2];\r
-                               $tag['url'] = $url . '?tag=' . urlencode($rr[0]);\r
-                               $tag['name'] = $rr[0];\r
-\r
-                               $tags[] = $tag;\r
-                       }\r
-\r
-                       $tpl = get_markup_template('tagblock_widget.tpl');\r
-                       $o = replace_macros($tpl, [\r
-                               '$title' => L10n::t('Tags'),\r
-                               '$tags' => $tags\r
-                       ]);\r
-               }\r
-               return $o;\r
-       }\r
-\r
-       /**\r
-        * Get alphabetical sorted array of used tags/terms of an user including\r
-        * a weighting by frequency of use.\r
-        *\r
-        * @brief Get alphabetical sorted array of used tags/terms of an user including\r
-        * a weighting by frequency of use.\r
-        * @param int $uid      The user ID.\r
-        * @param int $count    Max number of displayed tags/terms.\r
-        * @param int $owner_id The contact id of the owner of the tagged items.\r
-        * @param string $flags Special item flags.\r
-        * @param int $type     The tag/term type.\r
-        *\r
-        * @return arr          Alphabetical sorted array of used tags of an user.\r
-        */\r
-       private static function tagadelic($uid, $count = 0, $owner_id = 0, $flags = '', $type = TERM_HASHTAG)\r
-       {\r
-               $item_condition = item_condition();\r
-               $sql_options = item_permissions_sql($uid);\r
-               $limit = $count ? sprintf('LIMIT %d', intval($count)) : '';\r
-\r
-               if ($flags) {\r
-                       if ($flags === 'wall') {\r
-                               $sql_options .= ' AND `item`.`wall` ';\r
-                       }\r
-               }\r
-\r
-               if ($owner_id) {\r
-                       $sql_options .= ' AND `item`.`owner-id` = ' . intval($owner_id) . ' ';\r
-               }\r
-\r
-               // Fetch tags\r
-               $r = dba::p("SELECT `term`, COUNT(`term`) AS `total` FROM `term`\r
-                       LEFT JOIN `item` ON `term`.`oid` = `item`.`id`\r
-                       WHERE `term`.`uid` = ? AND `term`.`type` = ?\r
-                       AND `term`.`otype` = ?\r
-                       AND $item_condition $sql_options\r
-                       GROUP BY `term` ORDER BY `total` DESC $limit",\r
-                       $uid,\r
-                       $type,\r
-                       TERM_OBJ_POST\r
-               );\r
-               if (!DBM::is_result($r)) {\r
-                       return [];\r
-               }\r
-\r
-               return self::tagCalc($r);\r
-       }\r
-\r
-       /**\r
-        * Calculate weighting of tags according to the frequency of use.\r
-        *\r
-        * @brief Calculate weighting of tags according to the frequency of use.\r
-        * @param array $arr Array of tags/terms with tag/term name and total count of use.\r
-        * @return array     Alphabetical sorted array of used tags/terms of an user.\r
-        */\r
-       private static function tagCalc($arr)\r
-       {\r
-               $tags = [];\r
-               $min = 1e9;\r
-               $max = -1e9;\r
-               $x = 0;\r
-\r
-               if (!$arr) {\r
-                       return [];\r
-               }\r
-\r
-               foreach ($arr as $rr) {\r
-                       $tags[$x][0] = $rr['term'];\r
-                       $tags[$x][1] = log($rr['total']);\r
-                       $tags[$x][2] = 0;\r
-                       $min = min($min, $tags[$x][1]);\r
-                       $max = max($max, $tags[$x][1]);\r
-                       $x ++;\r
-               }\r
-\r
-               usort($tags, 'self::tagsSort');\r
-               $range = max(.01, $max - $min) * 1.0001;\r
-\r
-               for ($x = 0; $x < count($tags); $x ++) {\r
-                       $tags[$x][2] = 1 + floor(9 * ($tags[$x][1] - $min) / $range);\r
-               }\r
-\r
-               return $tags;\r
-       }\r
-\r
-       /**\r
-        * Compare function to sort tags/terms alphabetically.\r
-        *\r
-        * @brief Compare function to sort tags/terms alphabetically.\r
-        * @param type $a\r
-        * @param type $b\r
-        *\r
-        * @return int\r
-        */\r
-       private static function tagsSort($a, $b)\r
-       {\r
-               if (strtolower($a[0]) == strtolower($b[0])) {\r
-                       return 0;\r
-               }\r
-               return ((strtolower($a[0]) < strtolower($b[0])) ? -1 : 1);\r
-       }\r
-}\r
+<?php
+
+/*
+ * @file src/Content/Widget/TagCloud.php
+ */
+
+namespace Friendica\Content\Widget;
+
+use dba;
+use Friendica\Core\L10n;
+use Friendica\Core\System;
+use Friendica\Database\DBM;
+
+require_once 'include/dba.php';
+require_once 'include/security.php';
+
+/**
+ * TagCloud widget
+ *
+ * @author Rabuzarus
+ */
+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.
+        * @param string $flags Special item flags.
+        * @param int $type     The tag/term type.
+        *
+        * @return string       HTML formatted output.
+        */
+       public static function getHTML($uid, $count = 0, $owner_id = 0, $flags = '', $type = TERM_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']);
+
+                       foreach ($r as $rr) {
+                               $tag['level'] = $rr[2];
+                               $tag['url'] = $url . '?tag=' . urlencode($rr[0]);
+                               $tag['name'] = $rr[0];
+
+                               $tags[] = $tag;
+                       }
+
+                       $tpl = get_markup_template('tagblock_widget.tpl');
+                       $o = replace_macros($tpl, [
+                               '$title' => L10n::t('Tags'),
+                               '$tags' => $tags
+                       ]);
+               }
+               return $o;
+       }
+
+       /**
+        * 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.
+        * @param string $flags Special item flags.
+        * @param int $type     The tag/term type.
+        *
+        * @return arr          Alphabetical sorted array of used tags of an user.
+        */
+       private static function tagadelic($uid, $count = 0, $owner_id = 0, $flags = '', $type = TERM_HASHTAG)
+       {
+               $item_condition = item_condition();
+               $sql_options = item_permissions_sql($uid);
+               $limit = $count ? sprintf('LIMIT %d', intval($count)) : '';
+
+               if ($flags) {
+                       if ($flags === 'wall') {
+                               $sql_options .= ' AND `item`.`wall` ';
+                       }
+               }
+
+               if ($owner_id) {
+                       $sql_options .= ' AND `item`.`owner-id` = ' . intval($owner_id) . ' ';
+               }
+
+               // Fetch tags
+               $r = 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_condition $sql_options
+                       GROUP BY `term` ORDER BY `total` DESC $limit",
+                       $uid,
+                       $type,
+                       TERM_OBJ_POST
+               );
+               if (!DBM::is_result($r)) {
+                       return [];
+               }
+
+               return self::tagCalc($r);
+       }
+
+       /**
+        * 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($arr)
+       {
+               $tags = [];
+               $min = 1e9;
+               $max = -1e9;
+               $x = 0;
+
+               if (!$arr) {
+                       return [];
+               }
+
+               foreach ($arr as $rr) {
+                       $tags[$x][0] = $rr['term'];
+                       $tags[$x][1] = log($rr['total']);
+                       $tags[$x][2] = 0;
+                       $min = min($min, $tags[$x][1]);
+                       $max = max($max, $tags[$x][1]);
+                       $x ++;
+               }
+
+               usort($tags, 'self::tagsSort');
+               $range = max(.01, $max - $min) * 1.0001;
+
+               for ($x = 0; $x < count($tags); $x ++) {
+                       $tags[$x][2] = 1 + floor(9 * ($tags[$x][1] - $min) / $range);
+               }
+
+               return $tags;
+       }
+
+       /**
+        * Compare function to sort tags/terms alphabetically.
+        *
+        * @brief Compare function to sort tags/terms alphabetically.
+        * @param type $a
+        * @param type $b
+        *
+        * @return int
+        */
+       private static function tagsSort($a, $b)
+       {
+               if (strtolower($a[0]) == strtolower($b[0])) {
+                       return 0;
+               }
+               return ((strtolower($a[0]) < strtolower($b[0])) ? -1 : 1);
+       }
+}