<?php
/**
- * Laconica, the distributed open-source microblogging tool
+ * StatusNet, the distributed open-source microblogging tool
*
* Base class for sections showing tag clouds
*
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category Widget
- * @package Laconica
- * @author Evan Prodromou <evan@controlyourself.ca>
- * @copyright 2009 Control Yourself, Inc.
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 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')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
exit(1);
}
-define('TAGS_PER_SECTION', 20);
+define('TAGS_PER_SECTION', 10);
/**
* Base class for sections
* group, or site.
*
* @category Widget
- * @package Laconica
- * @author Evan Prodromou <evan@controlyourself.ca>
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
* @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/
*/
-
class TagCloudSection extends Section
{
function showContent()
{
- $tags = $this->getAllTags();
+ $tags = $this->getTags();
if (!$tags) {
- $this->out->element('p', null, _('None'));
+ // TRANS: Content displayed in a tag cloud section if there are no tags.
+ $this->out->element('p', null, _m('NOTAGS','None'));
return false;
}
- $cnt = count($tags);
+ $cnt = 0;
+
+ $tw = array();
+ $sum = 0;
+
+ while ($tags->fetch() && ++$cnt <= TAGS_PER_SECTION) {
+ $tw[$tags->tag] = $tags->weight;
+ $sum += $tags->weight;
+ }
if ($cnt == 0) {
- $this->out->element('p', null, _('(None)'));
+ // TRANS: Content displayed in a tag cloud section if there are no tags.
+ $this->out->element('p', null, _m('NOTAGS','None'));
return false;
}
- ksort($tags);
+ ksort($tw);
$this->out->elementStart('ul', 'tags xoxo tag-cloud');
- foreach ($tags as $tag => $weight) {
+ foreach ($tw as $tag => $weight) {
$this->showTag($tag, $weight, ($sum == 0) ? 0 : $weight/$sum);
}
$this->out->elementEnd('ul');
return ($cnt > TAGS_PER_SECTION);
}
- function getTags($lst, $usr)
+ function getTags()
{
- $profile_tag = new Profile_tag;
- $profile_tag->selectAdd();
- $profile_tag->selectAdd('tag');
- $profile_tag->selectAdd('count(tag) as weight');
- $profile_tag->groupBy('tag');
- $profile_tag->orderBy('weight DESC');
- $cnt = $profile_tag->find();
-
- $profile_tag->query("
-SELECT tag, count(tag) as weight from profile_tag, (SELECT subscriber, subscribed from subscription where subscriber=$usr and subscribed != subscriber) as t where tagger=subscriber and tagged=subscribed group by tag order by weight dest");
-
- $tags = array();
- while ($profile_tag->fetch()) {
-// var_dump($profile_tag);
- $tags[$profile_tag->tag] = $profile_tag->weight;
- }
- $profile_tag->free();
- if (0) {
- echo 'tags: <pre>';
- var_dump($tags);
- echo '</pre>';
- }
- return $tags;
- }
-
- function getAllTags() {
return null;
}
function tagUrl($tag)
{
+ if ($this->out instanceof ShowstreamAction) {
+ return common_local_url('showstream', array('nickname' => $this->out->getTarget()->getNickname(), 'tag' => $tag));
+ }
return common_local_url('tag', array('tag' => $tag));
}