]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fix problems in joinAdd with xampp
authorShashi Gowda <connect2shashi@gmail.com>
Fri, 8 Jul 2011 06:12:28 +0000 (11:42 +0530)
committerShashi Gowda <connect2shashi@gmail.com>
Sat, 9 Jul 2011 00:56:46 +0000 (06:26 +0530)
Xampp ships with a different version of DB_DataObject PEAR package that
cannot do joins using objects correctly. This patch fixes the problem

classes/Profile_list.php
classes/Profile_tag.php
lib/peopletagnoticestream.php

index 2395a369f3b0d2f9059abb17ec7e021afe47de9b..0586a8688c9d20fbe9bd10d6652dd0ce978924ac 100644 (file)
@@ -185,10 +185,12 @@ class Profile_list extends Memcached_DataObject
     function getSubscribers($offset=0, $limit=null, $since=0, $upto=0)
     {
         $subs = new Profile();
-        $sub = new Profile_tag_subscription();
-        $sub->profile_tag_id = $this->id;
 
-        $subs->joinAdd($sub);
+        $subs->joinAdd(
+            array('id', 'profile_tag_subscription:profile_id')
+        );
+        $subs->whereAdd('profile_tag_subscription.profile_tag_id = ' . $this->id);
+
         $subs->selectAdd('unix_timestamp(profile_tag_subscription.' .
                          'created) as "cursor"');
 
index 9e475e83ec16e9db00dc58d02336157e41e61da6..72dc9c756016d9c3791c981dc14c7a62cf3b6a8e 100644 (file)
@@ -55,20 +55,17 @@ class Profile_tag extends Memcached_DataObject
             return $tags;
         }
 
-        $profile_tag = new Profile_tag();
-        $profile_list->tagger = $tagger;
-        $profile_tag->tagged = $tagged;
-
-        $profile_list->selectAdd();
-
-        // only fetch id, tag, mainpage and
-        // private hoping this will be faster
-        $profile_list->selectAdd('profile_list.id, ' .
-                                 'profile_list.tag, ' .
-                                 'profile_list.mainpage, ' .
-                                 'profile_list.private');
-        $profile_list->joinAdd($profile_tag);
-        $profile_list->find();
+        $qry = 'select profile_list.* from profile_list left join '.
+               'profile_tag on (profile_list.tag = profile_tag.tag and '.
+               'profile_list.tagger = profile_tag.tagger) where '.
+               'profile_tag.tagger = %d and profile_tag.tagged = %d ';
+        $qry = sprintf($qry, $tagger, $tagged);
+
+        if (!$include_priv) {
+            $qry .= 'profile_list.private = 0';
+        }
+
+        $profile_list->query($qry);
 
         Profile_list::setCache($key, $profile_list);
 
index 9477ca8ea6dfc5f0cf52d06131c2461f01866d3b..4422261ae9a6950881d7823ea1c1190b1123a894 100644 (file)
@@ -99,7 +99,9 @@ class RawPeopletagNoticeStream extends NoticeStream
         $ptag = new Profile_tag();
         $ptag->tag    = $this->profile_list->tag;
         $ptag->tagger = $this->profile_list->tagger;
-        $notice->joinAdd($ptag);
+        $notice->joinAdd(array('profile_id', 'profile_tag:tagged'));
+        $notice->whereAdd('profile_tag.tagger = ' . $this->profile_list->tagger);
+        $notice->whereAdd(sprintf('profile_tag.tag = "%s"', $this->profile_list->tag));
 
         if ($since_id != 0) {
             $notice->whereAdd('notice.id > ' . $since_id);