X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fnoticestreamaction.php;h=e668a27daf23830788c4a7d4e2c0f8e3a5eb1a78;hb=586fb5a5175d7a10f5f78dd026434e48202e5451;hp=39c19d551f0500110f8c8d1520eb1a6233694d12;hpb=9054bb69e9cc9cf0c3788a1dad4a75e8b9a9ce7e;p=quix0rs-gnu-social.git diff --git a/lib/noticestreamaction.php b/lib/noticestreamaction.php index 39c19d551f..e668a27daf 100644 --- a/lib/noticestreamaction.php +++ b/lib/noticestreamaction.php @@ -4,13 +4,22 @@ 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 - $stream = $this->getStream(); - $this->notice = $stream->getNotices(($this->page-1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); + 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). @@ -20,6 +29,23 @@ abstract class NoticestreamAction extends ProfileAction return true; } + protected function doStreamPreparation() + { + // pass by default + } + + public function extraHeaders() + { + parent::extraHeaders(); + foreach ($this->getFeeds() as $feed) { + header('Link: <'.htmlspecialchars($feed->getUrl()).'>;' . + ' rel="'.htmlspecialchars($feed->rel()).'";' . + ' type="'.htmlspecialchars($feed->mimeType()).'"', + false // don't overwrite previous headers of this sort + ); + } + } + // this fetches the NoticeStream abstract public function getStream(); }