. * * @category Twitter * @package StatusNet * @author Craig Andrews * @author Zach Copley * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } require_once INSTALLDIR.'/lib/twitterapi.php'; /** * Group-specific API methods * * This class handles StatusNet group API methods. * * @category Twitter * @package StatusNet * @author Craig Andrews * @author Zach Copley * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ 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); break; case 'atom': if (isset($apidata['api_arg'])) { $selfuri = common_root_url() . 'api/statusnet/tags/timeline/' . $apidata['api_arg'] . '.atom'; } else { $selfuri = common_root_url() . 'api/statusnet/tags/timeline.atom'; } $this->show_atom_timeline($notice, $title, $id, $link, $subtitle, null, $selfuri); break; case 'json': $this->show_json_timeline($notice); break; default: $this->clientError(_('API method not found!'), $code = 404); } } }