From 8250006fbfdc120a4766f85ff5d6ee79798d626d Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Thu, 9 Jul 2009 18:42:19 -0400 Subject: When a notice is posted with an attachment, the facebook stream update has media displayed inline, or as links. http://laconi.ca/trac/ticket/1685 --- actions/facebookhome.php | 4 ++-- actions/facebooklogin.php | 4 ++-- actions/facebooksettings.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'actions') diff --git a/actions/facebookhome.php b/actions/facebookhome.php index 34989c978..6d8d0745d 100644 --- a/actions/facebookhome.php +++ b/actions/facebookhome.php @@ -57,7 +57,7 @@ class FacebookhomeAction extends FacebookAction // If this is the first time the user has started the app // prompt for Facebook status update permission - if (!$this->facebook->api_client->users_hasAppPermission('status_update')) { + if (!$this->facebook->api_client->users_hasAppPermission('publish_stream')) { if ($this->facebook->api_client->data_getUserPreference( FACEBOOK_PROMPTED_UPDATE_PREF) != 'true') { @@ -203,7 +203,7 @@ class FacebookhomeAction extends FacebookAction $api_key = common_config('facebook', 'apikey'); $auth_url = 'http://www.facebook.com/authorize.php?api_key=' . - $api_key . '&v=1.0&ext_perm=status_update&next=' . $next . + $api_key . '&v=1.0&ext_perm=publish_stream&next=' . $next . '&next_cancel=' . $next . '&submit=skip'; $this->elementStart('span', array('class' => 'facebook-button')); diff --git a/actions/facebooklogin.php b/actions/facebooklogin.php index 22007da4f..aa86cfbc0 100644 --- a/actions/facebooklogin.php +++ b/actions/facebooklogin.php @@ -31,7 +31,7 @@ class FacebookinviteAction extends FacebookAction $this->error = $error; if ($this->flink) { - if (!$this->facebook->api_client->users_hasAppPermission('status_update') && + if (!$this->facebook->api_client->users_hasAppPermission('publish_stream') && $this->facebook->api_client->data_getUserPreference( FACEBOOK_PROMPTED_UPDATE_PREF) == 'true') { @@ -60,7 +60,7 @@ class FacebookinviteAction extends FacebookAction // If this is the first time the user has started the app // prompt for Facebook status update permission - if (!$this->facebook->api_client->users_hasAppPermission('status_update')) { + if (!$this->facebook->api_client->users_hasAppPermission('publish_stream')) { if ($this->facebook->api_client->data_getUserPreference( FACEBOOK_PROMPTED_UPDATE_PREF) != 'true') { diff --git a/actions/facebooksettings.php b/actions/facebooksettings.php index ee2c279ab..c3b364743 100644 --- a/actions/facebooksettings.php +++ b/actions/facebooksettings.php @@ -78,7 +78,7 @@ class FacebooksettingsAction extends FacebookAction } } - if ($this->facebook->api_client->users_hasAppPermission('status_update')) { + if ($this->facebook->api_client->users_hasAppPermission('publish_stream')) { $this->elementStart('form', array('method' => 'post', 'id' => 'facebook_settings')); @@ -131,7 +131,7 @@ class FacebooksettingsAction extends FacebookAction $this->elementStart('ul', array('id' => 'fb-permissions-list')); $this->elementStart('li', array('id' => 'fb-permissions-item')); - $this->elementStart('fb:prompt-permission', array('perms' => 'status_update', + $this->elementStart('fb:prompt-permission', array('perms' => 'publish_stream', 'next_fbjs' => 'document.setLocation(\'' . "$this->app_uri/settings.php" . '\')')); $this->element('span', array('class' => 'facebook-button'), sprintf(_('Allow %s to update my Facebook status'), common_config('site', 'name'))); -- cgit v1.2.3-54-g00ecf From 08d50655f3a220b1fe970b0917a6ecbcae019b04 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Fri, 10 Jul 2009 17:00:27 -0400 Subject: added group status api, located at /api/statuses/group_timeline/ID.rss http://laconi.ca/trac/ticket/1702 --- actions/showgroup.php | 23 +++++++++++++++--- actions/twitapistatuses.php | 58 +++++++++++++++++++++++++++++++++++++++++++++ lib/router.php | 2 +- lib/twitterapi.php | 28 ++++++++++++++++++++++ 4 files changed, 107 insertions(+), 4 deletions(-) (limited to 'actions') 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); diff --git a/lib/router.php b/lib/router.php index 75e72f932..bc063038f 100644 --- a/lib/router.php +++ b/lib/router.php @@ -266,7 +266,7 @@ class Router $m->connect('api/statuses/:method/:argument', array('action' => 'api', 'apiaction' => 'statuses'), - array('method' => '(user_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)')); + array('method' => '(group_timeline|user_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)')); // users diff --git a/lib/twitterapi.php b/lib/twitterapi.php index f48513e67..d2515070d 100644 --- a/lib/twitterapi.php +++ b/lib/twitterapi.php @@ -774,6 +774,34 @@ class TwitterapiAction extends Action } } + function get_group($id, $apidata=null) + { + if (empty($id)) { + + if (is_numeric($this->arg('id'))) { + return User::staticGet($this->arg('id')); + } else if ($this->arg('id')) { + $nickname = common_canonical_nickname($this->arg('id')); + return User_group::staticGet('nickname', $nickname); + } else if ($this->arg('user_id')) { + // This is to ensure that a non-numeric user_id still + // overrides screen_name even if it doesn't get used + if (is_numeric($this->arg('user_id'))) { + return User_group::staticGet('id', $this->arg('user_id')); + } + } else if ($this->arg('screen_name')) { + $nickname = common_canonical_nickname($this->arg('screen_name')); + return User::staticGet('nickname', $nickname); + } + + } else if (is_numeric($id)) { + return User_group::staticGet($id); + } else { + $nickname = common_canonical_nickname($id); + return User_group::staticGet('nickname', $nickname); + } + } + function get_profile($id) { if (is_numeric($id)) { -- cgit v1.2.3-54-g00ecf From 544a14d290cc6c08950b2d4a6faf324704e90c6c Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 10 Jul 2009 17:56:01 -0700 Subject: Move groups timeline API method into groups API action --- actions/twitapigroups.php | 114 ++++++++++++++++++++++++++++++++++++++++++++ actions/twitapistatuses.php | 58 ---------------------- lib/router.php | 7 ++- 3 files changed, 120 insertions(+), 59 deletions(-) create mode 100644 actions/twitapigroups.php (limited to 'actions') diff --git a/actions/twitapigroups.php b/actions/twitapigroups.php new file mode 100644 index 000000000..c8aae173f --- /dev/null +++ b/actions/twitapigroups.php @@ -0,0 +1,114 @@ +. + * + * @category Twitter + * @package Laconica + * @author Craig Andrews + * @author Zach Copley + * @copyright 2009 Control Yourself, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + +if (!defined('LACONICA')) { + exit(1); +} + +require_once INSTALLDIR.'/lib/twitterapi.php'; + +/** + * Group-specific API methods + * + * This class handles Laconica group API methods. + * + * @category Twitter + * @package Laconica + * @author Craig Andrews + * @author Zach Copley + * @copyright 2009 Control Yourself, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + + class TwitapigroupsAction extends TwitterapiAction + { + + function timeline($args, $apidata) + { + parent::handle($args); + + common_debug("in groups api action"); + + $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); + } + } + +} \ No newline at end of file diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php index ec5d378f0..c9943698d 100644 --- a/actions/twitapistatuses.php +++ b/actions/twitapistatuses.php @@ -136,64 +136,6 @@ 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); diff --git a/lib/router.php b/lib/router.php index bc063038f..cd2143d13 100644 --- a/lib/router.php +++ b/lib/router.php @@ -266,7 +266,7 @@ class Router $m->connect('api/statuses/:method/:argument', array('action' => 'api', 'apiaction' => 'statuses'), - array('method' => '(group_timeline|user_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)')); + array('method' => '(|user_timeline|friends_timeline|replies|mentions|show|destroy|friends|followers)')); // users @@ -394,6 +394,11 @@ class Router array('action' => 'api', 'apiaction' => 'laconica')); + // Groups + $m->connect('api/laconica/groups/:method/:argument', + array('action' => 'api', + 'apiaction' => 'groups')); + // search $m->connect('api/search.atom', array('action' => 'twitapisearchatom')); $m->connect('api/search.json', array('action' => 'twitapisearchjson')); -- cgit v1.2.3-54-g00ecf From c13dd856c8c11f13129a45e25356678f5ae76971 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 10 Jul 2009 18:08:10 -0700 Subject: Fix alternate link for groups API feed --- actions/twitapigroups.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'actions') diff --git a/actions/twitapigroups.php b/actions/twitapigroups.php index c8aae173f..db15b2cd3 100644 --- a/actions/twitapigroups.php +++ b/actions/twitapigroups.php @@ -69,7 +69,7 @@ require_once INSTALLDIR.'/lib/twitterapi.php'; $title = sprintf(_("%s timeline"), $group->nickname); $taguribase = common_config('integration', 'taguri'); $id = "tag:$taguribase:GroupTimeline:".$group->id; - $link = common_local_url('showstream', + $link = common_local_url('showgroup', array('nickname' => $group->nickname)); $subtitle = sprintf(_('Updates from %1$s on %2$s!'), $group->nickname, $sitename); @@ -94,11 +94,11 @@ require_once INSTALLDIR.'/lib/twitterapi.php'; case 'atom': if (isset($apidata['api_arg'])) { $selfuri = common_root_url() . - 'api/statuses/group_timeline/' . + 'api/statuses/groups/timeline/' . $apidata['api_arg'] . '.atom'; } else { $selfuri = common_root_url() . - 'api/statuses/group_timeline.atom'; + 'api/statuses/groups/timeline.atom'; } $this->show_atom_timeline($notice, $title, $id, $link, $subtitle, $suplink, $selfuri); -- cgit v1.2.3-54-g00ecf From 7308203065e595dee947702682620f64b6d8ea1f Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 10 Jul 2009 18:11:54 -0700 Subject: Update showgroup action RSS 2.0 feed link --- actions/showgroup.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'actions') diff --git a/actions/showgroup.php b/actions/showgroup.php index f803840ff..5d9ee26a2 100644 --- a/actions/showgroup.php +++ b/actions/showgroup.php @@ -324,8 +324,8 @@ class ShowgroupAction extends GroupDesignAction $this->group->nickname)), new Feed(Feed::RSS2, common_local_url('api', - array('apiaction' => 'statuses', - 'method' => 'group_timeline', + array('apiaction' => 'groups', + 'method' => 'timeline', 'argument' => $this->group->nickname.'.rss')), sprintf(_('Notice feed for %s group (RSS 2.0)'), $this->group->nickname)), -- cgit v1.2.3-54-g00ecf From 6b0468358bd1148adfcf11a18cbb19ab4e80a799 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 10 Jul 2009 18:15:18 -0700 Subject: Group timeline API method doesn't require auth --- actions/api.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'actions') diff --git a/actions/api.php b/actions/api.php index 18c3b68d4..4a00b77e8 100644 --- a/actions/api.php +++ b/actions/api.php @@ -127,7 +127,8 @@ class ApiAction extends Action 'help/downtime_schedule', 'laconica/version', 'laconica/config', - 'laconica/wadl'); + 'laconica/wadl', + 'groups/timeline'); static $bareauth = array('statuses/user_timeline', 'statuses/friends_timeline', -- cgit v1.2.3-54-g00ecf From 7621e0e38467349a89f71e814941932fbacecfa1 Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 10 Jul 2009 20:13:12 -0700 Subject: Fix link for atom feed in showgroup action --- actions/showgroup.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'actions') diff --git a/actions/showgroup.php b/actions/showgroup.php index 5d9ee26a2..32ec674a9 100644 --- a/actions/showgroup.php +++ b/actions/showgroup.php @@ -331,8 +331,8 @@ class ShowgroupAction extends GroupDesignAction $this->group->nickname)), new Feed(Feed::ATOM, common_local_url('api', - array('apiaction' => 'statuses', - 'method' => 'group_timeline', + array('apiaction' => 'groups', + 'method' => 'timeline', 'argument' => $this->group->nickname.'.atom')), sprintf(_('Notice feed for %s group (Atom)'), $this->group->nickname))); -- cgit v1.2.3-54-g00ecf From 7654d690223f63c5af608da0981213b8f500deb9 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sun, 12 Jul 2009 15:06:37 -0400 Subject: Fix atom self reference in the groups api --- actions/twitapigroups.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'actions') diff --git a/actions/twitapigroups.php b/actions/twitapigroups.php index db15b2cd3..71a0776f4 100644 --- a/actions/twitapigroups.php +++ b/actions/twitapigroups.php @@ -94,11 +94,11 @@ require_once INSTALLDIR.'/lib/twitterapi.php'; case 'atom': if (isset($apidata['api_arg'])) { $selfuri = common_root_url() . - 'api/statuses/groups/timeline/' . + 'api/laconica/groups/timeline/' . $apidata['api_arg'] . '.atom'; } else { $selfuri = common_root_url() . - 'api/statuses/groups/timeline.atom'; + 'api/laconica/groups/timeline.atom'; } $this->show_atom_timeline($notice, $title, $id, $link, $subtitle, $suplink, $selfuri); @@ -111,4 +111,4 @@ require_once INSTALLDIR.'/lib/twitterapi.php'; } } -} \ No newline at end of file +} -- cgit v1.2.3-54-g00ecf From 91324890ae130a6f4280c9f6d82151793611de1f Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Sun, 12 Jul 2009 15:07:54 -0400 Subject: Add timeline tags API (RSS 2.0 and Atom feeds) --- actions/api.php | 1 + actions/tag.php | 20 ++++++++- actions/twitapitags.php | 114 ++++++++++++++++++++++++++++++++++++++++++++++++ lib/router.php | 9 ++++ 4 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 actions/twitapitags.php (limited to 'actions') diff --git a/actions/api.php b/actions/api.php index 4a00b77e8..452ed8e82 100644 --- a/actions/api.php +++ b/actions/api.php @@ -128,6 +128,7 @@ class ApiAction extends Action 'laconica/version', 'laconica/config', 'laconica/wadl', + 'tags/timeline', 'groups/timeline'); static $bareauth = array('statuses/user_timeline', diff --git a/actions/tag.php b/actions/tag.php index 888aba062..020399d9e 100644 --- a/actions/tag.php +++ b/actions/tag.php @@ -72,8 +72,24 @@ class TagAction extends Action function getFeeds() { return array(new Feed(Feed::RSS1, - common_local_url('tagrss', array('tag' => $this->tag)), - sprintf(_('Feed for tag %s'), $this->tag))); + common_local_url('tagrss', + array('tag' => $this->tag)), + sprintf(_('Notice feed for tag %s (RSS 1.0)'), + $this->tag)), + new Feed(Feed::RSS2, + common_local_url('api', + array('apiaction' => 'tags', + 'method' => 'timeline', + 'argument' => $this->tag.'.rss')), + sprintf(_('Notice feed for %s group (RSS 2.0)'), + $this->tag)), + new Feed(Feed::ATOM, + common_local_url('api', + array('apiaction' => 'tags', + 'method' => 'timeline', + 'argument' => $this->tag.'.atom')), + sprintf(_('Notice feed for tag %s (Atom)'), + $this->tag))); } function showContent() diff --git a/actions/twitapitags.php b/actions/twitapitags.php new file mode 100644 index 000000000..5c8527530 --- /dev/null +++ b/actions/twitapitags.php @@ -0,0 +1,114 @@ +. + * + * @category Twitter + * @package Laconica + * @author Craig Andrews + * @author Zach Copley + * @copyright 2009 Control Yourself, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + +if (!defined('LACONICA')) { + exit(1); +} + +require_once INSTALLDIR.'/lib/twitterapi.php'; + +/** + * Group-specific API methods + * + * This class handles Laconica group API methods. + * + * @category Twitter + * @package Laconica + * @author Craig Andrews + * @author Zach Copley + * @copyright 2009 Control Yourself, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + + class TwitapitagsAction extends TwitterapiAction + { + + function timeline($args, $apidata) + { + parent::handle($args); + + common_debug("in tags api action"); + + $this->auth_user = $apidata['user']; + $tag = $apidata['api_arg']; + + if (empty($tag)) { + $this->clientError('Not Found', 404, $apidata['content-type']); + return; + } + + $sitename = common_config('site', 'name'); + $title = sprintf(_("Notices tagged with %s"), $tag); + $taguribase = common_config('integration', 'taguri'); + $id = "tag:$taguribase:TagTimeline:".$tag; + $link = common_local_url('tag', + array('tag' => $tag)); + $subtitle = sprintf(_('Updates tagged with %1$s on %2$s!'), + $tag, $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'); + + # XXX: support max_id, since_id, and since arguments + $notice = Notice_tag::getStream($tag, ($page-1)*$count, $count + 1); + + 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/laconica/tags/timeline/' . + $apidata['api_arg'] . '.atom'; + } else { + $selfuri = common_root_url() . + 'api/laconica/tags/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); + } + } + +} diff --git a/lib/router.php b/lib/router.php index 8104d7818..e12138637 100644 --- a/lib/router.php +++ b/lib/router.php @@ -403,6 +403,15 @@ class Router array('action' => 'api', 'apiaction' => 'groups')); + // Tags + $m->connect('api/laconica/tags/:method/:argument', + array('action' => 'api', + 'apiaction' => 'tags')); + + $m->connect('api/laconica/tags/:method', + array('action' => 'api', + 'apiaction' => 'tags')); + // search $m->connect('api/search.atom', array('action' => 'twitapisearchatom')); $m->connect('api/search.json', array('action' => 'twitapisearchjson')); -- cgit v1.2.3-54-g00ecf From eb22f06ac6ca30b850be71cbb8358c0715eca7f9 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 15 Jul 2009 16:57:39 -0400 Subject: conversation action is readonly --- actions/conversation.php | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'actions') diff --git a/actions/conversation.php b/actions/conversation.php index 0eb0d86d6..c8755ba6e 100644 --- a/actions/conversation.php +++ b/actions/conversation.php @@ -116,6 +116,11 @@ class ConversationAction extends Action $cnt = $ct->show(); } + + function isReadOnly() + { + return true; + } } /** -- cgit v1.2.3-54-g00ecf