]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/conversationnoticestream.php
Break up stream code to use separate notice stream classes
[quix0rs-gnu-social.git] / lib / conversationnoticestream.php
diff --git a/lib/conversationnoticestream.php b/lib/conversationnoticestream.php
new file mode 100644 (file)
index 0000000..b26e898
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+
+class ConversationNoticeStream extends CachingNoticeStream
+{
+    function __construct($id)
+    {
+        parent::__construct(new RawConversationNoticeStream($id),
+                            'notice:conversation_ids:'.$id);
+    }
+}
+
+class RawConversationNoticeStream extends NoticeStream
+{
+    protected $id;
+
+    function __construct($id)
+    {
+        $this->id = $id;
+    }
+
+    function getNoticeIds($offset=0, $limit=20, $since_id=0, $max_id=0)
+    {
+        $notice = new Notice();
+
+        $notice->selectAdd(); // clears it
+        $notice->selectAdd('id');
+
+        $notice->conversation = $this->id;
+
+        $notice->orderBy('created DESC, id DESC');
+
+        if (!is_null($offset)) {
+            $notice->limit($offset, $limit);
+        }
+
+        Notice::addWhereSinceId($notice, $since_id);
+        Notice::addWhereMaxId($notice, $max_id);
+
+        $ids = array();
+
+        if ($notice->find()) {
+            while ($notice->fetch()) {
+                $ids[] = $notice->id;
+            }
+        }
+
+        $notice->free();
+        $notice = NULL;
+
+        return $ids;
+    }
+}
\ No newline at end of file