parent::prepare($args);
$this->group = $this->getTargetGroup($this->arg('id'));
- $this->notices = $this->getNotices();
return true;
}
function handle($args)
{
parent::handle($args);
+
+ if (empty($this->group)) {
+ $this->clientError(_('Group not found!'), 404, $this->format);
+ return false;
+ }
+
+ $this->notices = $this->getNotices();
$this->showTimeline();
}
function showTimeline()
{
- $sitename = common_config('site', 'name');
- $title = sprintf(_("%s timeline"), $this->group->nickname);
- $taguribase = common_config('integration', 'taguri');
- $id = "tag:$taguribase:GroupTimeline:" . $this->group->id;
- $link = common_local_url(
- 'showgroup',
- array('nickname' => $this->group->nickname)
- );
- $subtitle = sprintf(
- _('Updates from %1$s on %2$s!'),
- $this->group->nickname,
- $sitename
- );
+ // We'll pull common formatting out of this for other formats
+ $atom = new AtomGroupNoticeFeed($this->group);
+
+ $self = $this->getSelfUri();
switch($this->format) {
case 'xml':
$this->showXmlTimeline($this->notices);
break;
case 'rss':
- $this->showRssTimeline($this->notices, $title, $link, $subtitle);
- break;
- case 'atom':
- $selfuri = common_root_url() .
- 'api/statusnet/groups/timeline/' .
- $this->group->nickname . '.atom';
- $this->showAtomTimeline(
+ $this->showRssTimeline(
$this->notices,
- $title,
- $id,
- $link,
- $subtitle,
+ $atom->title,
+ $this->group->homeUrl(),
+ $atom->subtitle,
null,
- $selfuri
+ $atom->logo,
+ $self
);
+ break;
+ case 'atom':
+
+ header('Content-Type: application/atom+xml; charset=utf-8');
+
+ try {
+ $atom->addAuthorRaw($this->group->asAtomAuthor());
+ $atom->setActivitySubject($this->group->asActivitySubject());
+ $atom->setId($self);
+ $atom->setSelfLink($self);
+ $atom->addEntryFromNotices($this->notices);
+ $this->raw($atom->getString());
+ } catch (Atom10FeedException $e) {
+ $this->serverError(
+ 'Could not generate feed for group - ' . $e->getMessage()
+ );
+ return;
+ }
+
break;
case 'json':
$this->showJsonTimeline($this->notices);
break;
default:
$this->clientError(
- _('API method not found!'),
+ _('API method not found.'),
404,
$this->format
);
($this->page-1) * $this->count,
$this->count,
$this->since_id,
- $this->max_id,
- $this->since
+ $this->max_id
);
while ($notice->fetch()) {