- if ($offset + $limit > self::CACHE_WINDOW) {
- return new ArrayWrapper(self::realBySubscriber($subscriberId,
- $offset,
- $limit));
- } else {
- $key = 'subscription:by-subscriber:'.$subscriberId;
- $window = self::cacheGet($key);
- if ($window === false) {
- $window = self::realBySubscriber($subscriberId,
- 0,
- self::CACHE_WINDOW);
- self::cacheSet($key, $window);
- }
- return new ArrayWrapper(array_slice($window,
- $offset,
- $limit));
- }
- }
-
- private static function realBySubscriber($subscriberId,
- $offset,
- $limit)
- {
- $sub = new Subscription();
-
- $sub->subscriber = $subscriberId;
-
- $sub->whereAdd('subscribed != ' . $subscriberId);
-
- $sub->orderBy('created DESC');
- $sub->limit($offset, $limit);
-
- $sub->find();
-
- $subs = array();
-
- while ($sub->fetch()) {
- $subs[] = clone($sub);
- }
-
- return $subs;
+ // "by subscriber" means it is the list of subscribed users we want
+ $ids = self::getSubscribedIDs($profile_id, $offset, $limit);
+ return Subscription::listFind('subscribed', $ids);