]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/inboxnoticestream.php
Merge branch 'master' into FeedPoller
[quix0rs-gnu-social.git] / lib / inboxnoticestream.php
index 09c3edb281d76420ba93e9044002f4669447939b..27fec9518b62110b835d13fbe09d0ee84072cdbd 100644 (file)
@@ -20,7 +20,7 @@
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
- * @category  Cache
+ * @category  NoticeStream
  * @package   StatusNet
  * @author    Evan Prodromou <evan@status.net>
  * @copyright 2011 StatusNet, Inc.
@@ -51,10 +51,13 @@ class InboxNoticeStream extends ScopingNoticeStream
      *
      * @param User $user User to get a stream for
      */
-    function __construct($user, $profile = null)
+    function __construct($user, $profile = -1)
     {
+        if (is_int($profile) && $profile == -1) {
+            $profile = Profile::current();
+        }
         // Note: we don't use CachingNoticeStream since RawInboxNoticeStream
-        // uses Inbox::staticGet(), which is cached.
+        // uses Inbox::getKV(), which is cached.
         parent::__construct(new RawInboxNoticeStream($user), $profile);
     }
 }
@@ -82,7 +85,7 @@ class RawInboxNoticeStream extends NoticeStream
     function __construct($user)
     {
         $this->user  = $user;
-        $this->inbox = Inbox::staticGet('user_id', $user->id);
+        $this->inbox = Inbox::getKV('user_id', $user->id);
     }
 
     /**
@@ -132,4 +135,30 @@ class RawInboxNoticeStream extends NoticeStream
 
         return $ids;
     }
+
+    function getNotices($offset, $limit, $sinceId, $maxId)
+    {
+        $all = array();
+
+        do {
+
+            $ids = $this->getNoticeIds($offset, $limit, $sinceId, $maxId);
+
+            $notices = Notice::pivotGet('id', $ids);
+
+            // By default, takes out false values
+
+            $notices = array_filter($notices);
+
+            $all = array_merge($all, $notices);
+
+            if (count($notices < count($ids))) {
+                $offset += $limit;
+                $limit  -= count($notices);
+            }
+
+        } while (count($notices) < count($ids) && count($ids) > 0);
+
+        return new ArrayWrapper($all);
+    }
 }