diff options
author | Craig Andrews <candrews@integralblue.com> | 2009-07-10 17:00:27 -0400 |
---|---|---|
committer | Craig Andrews <candrews@integralblue.com> | 2009-07-10 17:00:27 -0400 |
commit | 08d50655f3a220b1fe970b0917a6ecbcae019b04 (patch) | |
tree | 27bdaa7bdfd9274a2983bcc2b2d9796c92f1bff7 /actions | |
parent | bafa1ab1c532118e2230df50ed18a1b4573692b7 (diff) |
added group status api, located at /api/statuses/group_timeline/ID.rss
http://laconi.ca/trac/ticket/1702
Diffstat (limited to 'actions')
-rw-r--r-- | actions/showgroup.php | 23 | ||||
-rw-r--r-- | actions/twitapistatuses.php | 58 |
2 files changed, 78 insertions, 3 deletions
diff --git a/actions/showgroup.php b/actions/showgroup.php index ce11d574e..f803840ff 100644 --- a/actions/showgroup.php +++ b/actions/showgroup.php @@ -317,8 +317,25 @@ class ShowgroupAction extends GroupDesignAction common_local_url('grouprss', array('nickname' => $this->group->nickname)); - return array(new Feed(Feed::RSS1, $url, sprintf(_('Notice feed for %s group'), - $this->group->nickname))); + return array(new Feed(Feed::RSS1, + common_local_url('grouprss', + array('nickname' => $this->group->nickname)), + sprintf(_('Notice feed for %s group (RSS 1.0)'), + $this->group->nickname)), + new Feed(Feed::RSS2, + common_local_url('api', + array('apiaction' => 'statuses', + 'method' => 'group_timeline', + 'argument' => $this->group->nickname.'.rss')), + sprintf(_('Notice feed for %s group (RSS 2.0)'), + $this->group->nickname)), + new Feed(Feed::ATOM, + common_local_url('api', + array('apiaction' => 'statuses', + 'method' => 'group_timeline', + 'argument' => $this->group->nickname.'.atom')), + sprintf(_('Notice feed for %s group (Atom)'), + $this->group->nickname))); } /** @@ -466,4 +483,4 @@ class GroupAdminSection extends ProfileSection { return null; } -}
\ No newline at end of file +} diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php index c9943698d..ec5d378f0 100644 --- a/actions/twitapistatuses.php +++ b/actions/twitapistatuses.php @@ -136,6 +136,64 @@ class TwitapistatusesAction extends TwitterapiAction } + function group_timeline($args, $apidata) + { + parent::handle($args); + + $this->auth_user = $apidata['user']; + $group = $this->get_group($apidata['api_arg'], $apidata); + + if (empty($group)) { + $this->clientError('Not Found', 404, $apidata['content-type']); + return; + } + + $sitename = common_config('site', 'name'); + $title = sprintf(_("%s timeline"), $group->nickname); + $taguribase = common_config('integration', 'taguri'); + $id = "tag:$taguribase:GroupTimeline:".$group->id; + $link = common_local_url('showstream', + array('nickname' => $group->nickname)); + $subtitle = sprintf(_('Updates from %1$s on %2$s!'), + $group->nickname, $sitename); + + $page = (int)$this->arg('page', 1); + $count = (int)$this->arg('count', 20); + $max_id = (int)$this->arg('max_id', 0); + $since_id = (int)$this->arg('since_id', 0); + $since = $this->arg('since'); + + $notice = $group->getNotices(($page-1)*$count, + $count, $since_id, $max_id, $since); + + switch($apidata['content-type']) { + case 'xml': + $this->show_xml_timeline($notice); + break; + case 'rss': + $this->show_rss_timeline($notice, $title, $link, + $subtitle, $suplink); + break; + case 'atom': + if (isset($apidata['api_arg'])) { + $selfuri = common_root_url() . + 'api/statuses/group_timeline/' . + $apidata['api_arg'] . '.atom'; + } else { + $selfuri = common_root_url() . + 'api/statuses/group_timeline.atom'; + } + $this->show_atom_timeline($notice, $title, $id, $link, + $subtitle, $suplink, $selfuri); + break; + case 'json': + $this->show_json_timeline($notice); + break; + default: + $this->clientError(_('API method not found!'), $code = 404); + } + } + function user_timeline($args, $apidata) { parent::handle($args); |