52 lines
1.5 KiB
PHP
52 lines
1.5 KiB
PHP
<?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) {
|
|
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();
|
|
}
|