require_once(INSTALLDIR.'/actions/showstream.php');
define('TAGS_PER_PAGE', 100);
-define('AGE_FACTOR', 864000.0);
class TagAction extends StreamAction {
# This should probably be cached rather than recalculated
$tags = DB_DataObject::factory('Notice_tag');
$tags->selectAdd('max(notice_id) as last_notice_id');
- $tags->selectAdd(sprintf('sum(exp(-(now() - created)/%f)) as weight', AGE_FACTOR));
+ $tags->selectAdd(sprintf('sum(exp(-(now() - created)/%f)) as weight', common_config('tag', 'dropoff')));
$tags->groupBy('tag');
$tags->orderBy('weight DESC');
$tw[$tags->tag] = $tags->weight;
$sum += $tags->weight;
}
+
+ ksort($tw);
foreach ($tw as $tag => $weight) {
$this->show_tag($tag, $weight, $weight/$sum);
}
-
+
common_element_end('p');
}
}
function show_tag($tag, $weight, $relative) {
-
+
# XXX: these should probably tune to the size of the site
if ($relative > 0.1) {
$cls = 'largest';
} else {
$cls = 'smallest';
}
-
+
common_element('a', array('class' => "$cls weight-$weight relative-$relative",
'href' => common_local_url('tag', array('tag' => $tag))),
$tag);
common_text(' ');
}
-
+
function show_notices($tag) {
$tags = DB_DataObject::factory('Notice_tag');