1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?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
- }
- public function extraHeaders()
- {
- parent::extraHeaders();
- foreach ($this->getFeeds() as $feed) {
- $heads = [];
- if ($feed->getUrl() !== null) $heads[] = "Link: <".htmlspecialchars($feed->getUrl()).">;";
- if ($feed->rel() !== null) $heads[] = "rel=\"".htmlspecialchars($feed->rel())."\"";
- if ($feed->rel() !== null) $heads[] = "type=\"".htmlspecialchars($feed->mimeType())."\"";
- if (!empty($heads)) {
- $head = implode(" ", $heads);
- header($head, false);
- }
- }
- }
- // this fetches the NoticeStream
- abstract public function getStream();
- }
|