]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/noticestreamaction.php
Merge remote-tracking branch 'upstream/master'
[quix0rs-gnu-social.git] / lib / noticestreamaction.php
diff --git a/lib/noticestreamaction.php b/lib/noticestreamaction.php
new file mode 100644 (file)
index 0000000..fb59291
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+abstract class NoticestreamAction extends ProfileAction
+{
+    protected $notice = null;   // holds the stream result
+
+    protected function prepare(array $args=array()) {
+        parent::prepare($args);
+
+        // In case we need more info than ProfileAction->doPreparation() gives us
+        $this->doStreamPreparation();
+
+        // fetch the actual stream stuff
+        try {
+            $stream = $this->getStream();
+            $this->notice = $stream->getNotices(($this->page-1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
+        } catch (PrivateStreamException $e) {
+            $this->notice = new Notice();
+            $this->notice->whereAdd('FALSE');
+        }
+
+        if ($this->page > 1 && $this->notice->N == 0) {
+            // TRANS: Client error when page not found (404).
+            $this->clientError(_('No such page.'), 404);
+        }
+
+        return true;
+    }
+
+    protected function doStreamPreparation()
+    {
+        // pass by default
+    }
+
+    // this fetches the NoticeStream
+    abstract public function getStream();
+}