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"');
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);
$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);