X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fpublictagcloud.php;h=9e4478dbb13165e1e908e9dbc02114f137e496ee;hb=3b007934e49db8b9950171680d0360cae7ab4fdb;hp=4ff41d2a6d875b4c8d84d10ec7efae024c7319d3;hpb=a6e950b7a1ca7654613dd7f5cefcdae6a3a0f579;p=quix0rs-gnu-social.git diff --git a/actions/publictagcloud.php b/actions/publictagcloud.php index 4ff41d2a6d..9e4478dbb1 100644 --- a/actions/publictagcloud.php +++ b/actions/publictagcloud.php @@ -1,6 +1,6 @@ . * * @category Public - * @package Laconica + * @package StatusNet * @author Mike Cochrane - * @author Evan Prodromou + * @author Evan Prodromou * @copyright 2008 Mike Cochrane - * @copyright 2008-2009 Control Yourself, Inc. + * @copyright 2008-2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://laconi.ca/ + * @link http://status.net/ */ -if (!defined('LACONICA')) { exit(1); } +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } define('TAGS_PER_PAGE', 100); @@ -37,17 +37,17 @@ define('TAGS_PER_PAGE', 100); * Public tag cloud for notices * * @category Personal - * @package Laconica + * @package StatusNet * @author Mike Cochrane - * @author Evan Prodromou + * @author Evan Prodromou * @copyright 2008 Mike Cochrane - * @copyright 2008-2009 Control Yourself, Inc. - * @link http://laconi.ca/ + * @copyright 2008-2009 StatusNet, Inc. + * @link http://status.net/ */ class PublictagcloudAction extends Action { - function isReadOnly() + function isReadOnly($args) { return true; } @@ -62,13 +62,11 @@ class PublictagcloudAction extends Action $this->element('p', 'instructions', sprintf(_('These are most popular recent tags on %s '), common_config('site', 'name'))); + } - $tags = new Notice_tag; - if ($tags->count()) { - return; - } - - $message = _('Noone has posted a notice with a [hashtag](%%doc.tags%%) yet.') . ' '; + function showEmptyList() + { + $message = _('No one has posted a notice with a [hashtag](%%doc.tags%%) yet.') . ' '; if (common_logged_in()) { $message .= _('Be the first to post one!'); @@ -107,12 +105,8 @@ class PublictagcloudAction extends Action #Add the aggregated columns... $tags->selectAdd('max(notice_id) as last_notice_id'); - if(common_config('db','type')=='pgsql') { - $calc='sum(exp(-extract(epoch from (now()-created))/%s)) as weight'; - } else { - $calc='sum(exp(-(now() - created)/%s)) as weight'; - } - $tags->selectAdd(sprintf($calc, common_config('tag', 'dropoff'))); + $calc = common_sql_weight('created', common_config('tag', 'dropoff')); + $tags->selectAdd($calc . ' as weight'); $tags->groupBy('tag'); $tags->orderBy('weight DESC'); @@ -138,12 +132,19 @@ class PublictagcloudAction extends Action $this->elementStart('dd'); $this->elementStart('ul', 'tags xoxo tag-cloud'); foreach ($tw as $tag => $weight) { - $this->showTag($tag, $weight, $weight/$sum); + if ($sum) { + $weightedSum = $weight/$sum; + } else { + $weightedSum = 0.5; + } + $this->showTag($tag, $weight, $weightedSum); } $this->elementEnd('ul'); $this->elementEnd('dd'); $this->elementEnd('dl'); $this->elementEnd('div'); + } else { + $this->showEmptyList(); } }