diff options
author | CiaranG <ciaran@ciarang.com> | 2008-09-11 15:23:48 -0400 |
---|---|---|
committer | CiaranG <ciaran@ciarang.com> | 2008-09-11 15:23:48 -0400 |
commit | b13233fed40ee132779906cfa29e00f8c28631df (patch) | |
tree | b5b0730c9392f7101198650831b956c7aa832934 | |
parent | ce2eaf84aac790a647cda202d6e361ffb1fdff3b (diff) |
PostgreSQL: Make tag cloud query work - also fixes what is surely an ignored error in the mysql query
darcs-hash:20080911192348-f6e2c-b846b777b382386de56ca01d957dc5e55161fced.gz
-rw-r--r-- | actions/tag.php | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/actions/tag.php b/actions/tag.php index 1042513d5..52d91d724 100644 --- a/actions/tag.php +++ b/actions/tag.php @@ -88,8 +88,21 @@ class TagAction extends StreamAction { { # This should probably be cached rather than recalculated $tags = DB_DataObject::factory('Notice_tag'); + + #Need to clear the selection and then only re-add the field + #we are grouping by, otherwise it's not a valid 'group by' + #even though MySQL seems to let it slide... + $tags->selectAdd(); + $tags->selectAdd('tag'); + + #Add the aggregated columns... $tags->selectAdd('max(notice_id) as last_notice_id'); - $tags->selectAdd(sprintf('sum(exp(-(now() - created)/%f)) as weight', common_config('tag', 'dropoff'))); + if(common_config('db','type')=='pgsql') { + $calc='sum(exp(-extract(epoch from (now()-created))/%f)) as weight'; + } else { + $calc='sum(exp(-(now() - created)/%f)) as weight'; + } + $tags->selectAdd(sprintf($calc, common_config('tag', 'dropoff'))); $tags->groupBy('tag'); $tags->orderBy('weight DESC'); |