]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
PostgreSQL: Make tag cloud query work - also fixes what is surely an ignored error...
authorCiaranG <ciaran@ciarang.com>
Thu, 11 Sep 2008 19:23:48 +0000 (15:23 -0400)
committerCiaranG <ciaran@ciarang.com>
Thu, 11 Sep 2008 19:23:48 +0000 (15:23 -0400)
darcs-hash:20080911192348-f6e2c-b846b777b382386de56ca01d957dc5e55161fced.gz

actions/tag.php

index 1042513d5a1a42faee8b5ddf5e54736e3e583e6e..52d91d724e690c4c80e78043d406186d2cf058cf 100644 (file)
@@ -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');