Subscription stream functions
Made two new functions, Subscription::bySubscriber() and Subscription::bySubscribed(), to get streams of Subscription objects. Converted Profile::getSubscribers() and Profile::getSubscriptions() to use these functions.
This commit is contained in:
parent
baae319aef
commit
7285bbc93b
@ -380,54 +380,32 @@ class Profile extends Memcached_DataObject
|
||||
|
||||
function getSubscriptions($offset=0, $limit=null)
|
||||
{
|
||||
$qry =
|
||||
'SELECT profile.* ' .
|
||||
'FROM profile JOIN subscription ' .
|
||||
'ON profile.id = subscription.subscribed ' .
|
||||
'WHERE subscription.subscriber = %d ' .
|
||||
'AND subscription.subscribed != subscription.subscriber ' .
|
||||
'ORDER BY subscription.created DESC ';
|
||||
$subs = Subscription::bySubscriber($this->id,
|
||||
$offset,
|
||||
$limit);
|
||||
|
||||
if ($offset>0 && !is_null($limit)){
|
||||
if (common_config('db','type') == 'pgsql') {
|
||||
$qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
|
||||
} else {
|
||||
$qry .= ' LIMIT ' . $offset . ', ' . $limit;
|
||||
}
|
||||
$profiles = array();
|
||||
|
||||
while ($subs->fetch()) {
|
||||
$profiles[] = Profile::staticGet($subs->subscribed);
|
||||
}
|
||||
|
||||
$profile = new Profile();
|
||||
|
||||
$profile->query(sprintf($qry, $this->id));
|
||||
|
||||
return $profile;
|
||||
return new ArrayWrapper($profiles);
|
||||
}
|
||||
|
||||
function getSubscribers($offset=0, $limit=null)
|
||||
{
|
||||
$qry =
|
||||
'SELECT profile.* ' .
|
||||
'FROM profile JOIN subscription ' .
|
||||
'ON profile.id = subscription.subscriber ' .
|
||||
'WHERE subscription.subscribed = %d ' .
|
||||
'AND subscription.subscribed != subscription.subscriber ' .
|
||||
'ORDER BY subscription.created DESC ';
|
||||
$subs = Subscription::bySubscribed($this->id,
|
||||
$offset,
|
||||
$limit);
|
||||
|
||||
if ($offset>0 && !is_null($limit)){
|
||||
if ($offset) {
|
||||
if (common_config('db','type') == 'pgsql') {
|
||||
$qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
|
||||
} else {
|
||||
$qry .= ' LIMIT ' . $offset . ', ' . $limit;
|
||||
}
|
||||
}
|
||||
$profiles = array();
|
||||
|
||||
while ($subs->fetch()) {
|
||||
$profiles[] = Profile::staticGet($subs->subscriber);
|
||||
}
|
||||
|
||||
$profile = new Profile();
|
||||
|
||||
$cnt = $profile->query(sprintf($qry, $this->id));
|
||||
|
||||
return $profile;
|
||||
return new ArrayWrapper($profiles);
|
||||
}
|
||||
|
||||
function getConnectedApps($offset = 0, $limit = null)
|
||||
|
@ -264,4 +264,68 @@ class Subscription extends Memcached_DataObject
|
||||
|
||||
return $act;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stream of subscriptions with the same subscriber
|
||||
*
|
||||
* Useful for showing pages that list subscriptions in reverse
|
||||
* chronological order. Has offset & limit to make paging
|
||||
* easy.
|
||||
*
|
||||
* @param integer $subscriberId Profile ID of the subscriber
|
||||
* @param integer $offset Offset from latest
|
||||
* @param integer $limit Maximum number to fetch
|
||||
*
|
||||
* @return Subscription stream of subscriptions; use fetch() to iterate
|
||||
*/
|
||||
|
||||
static function bySubscriber($subscriberId,
|
||||
$offset = 0,
|
||||
$limit = PROFILES_PER_PAGE)
|
||||
{
|
||||
$sub = new Subscription();
|
||||
|
||||
$sub->subscriber = $subscriberId;
|
||||
|
||||
$sub->whereAdd('subscribed != ' . $subscriberId);
|
||||
|
||||
$sub->orderBy('created DESC');
|
||||
$sub->limit($offset, $limit);
|
||||
|
||||
$sub->find();
|
||||
|
||||
return $sub;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stream of subscriptions with the same subscribed profile
|
||||
*
|
||||
* Useful for showing pages that list subscribers in reverse
|
||||
* chronological order. Has offset & limit to make paging
|
||||
* easy.
|
||||
*
|
||||
* @param integer $subscribedId Profile ID of the subscribed
|
||||
* @param integer $offset Offset from latest
|
||||
* @param integer $limit Maximum number to fetch
|
||||
*
|
||||
* @return Subscription stream of subscriptions; use fetch() to iterate
|
||||
*/
|
||||
|
||||
static function bySubscribed($subscribedId,
|
||||
$offset = 0,
|
||||
$limit = PROFILES_PER_PAGE)
|
||||
{
|
||||
$sub = new Subscription();
|
||||
|
||||
$sub->subscribed = $subscribedId;
|
||||
|
||||
$sub->whereAdd('subscriber != ' . $subscribedId);
|
||||
|
||||
$sub->orderBy('created DESC');
|
||||
$sub->limit($offset, $limit);
|
||||
|
||||
$sub->find();
|
||||
|
||||
return $sub;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user