From 83040ee747e209c7b3907c35a8fe505c2526c4ab Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 17 Jul 2008 17:19:42 -0400 Subject: [PATCH] support id, user timeline darcs-hash:20080717211942-84dde-3e8fcffc2c4def3088389ed5c1720919458d6f54.gz --- actions/twitapistatuses.php | 71 ++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 5 deletions(-) diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php index 58f313e34a..e6ed49e0f9 100644 --- a/actions/twitapistatuses.php +++ b/actions/twitapistatuses.php @@ -184,7 +184,7 @@ class TwitapistatusesAction extends TwitterapiAction { $count = 20; } - $user = $apidata['user']; + $user = $this->get_user($id, $apidata); $profile = $user->getProfile(); $sitename = common_config('site', 'name'); @@ -264,10 +264,62 @@ class TwitapistatusesAction extends TwitterapiAction { $since = $this->arg('since'); $since_id = $this->arg('since_id'); - print "User Timeline! requested content-type: " . $apidata['content-type'] . "\n"; - print "id: $id since: $since, since_id: $since_id, count: $count\n"; + if (!$page) { + $page = 1; + } + + if (!$count) { + $count = 20; + } + + $user = $this->get_user($id, $apidata['user']); - exit(); + if (!$user) { + $this->client_error(_('No such user'), 404); + return; + } + + $profile = $user->getProfile(); + + $sitename = common_config('site', 'name'); + $siteserver = common_config('site', 'server'); + + $title = sprintf(_("%s timeline"), $user->nickname); + $id = "tag:$siteserver:user:".$user->id; + $link = common_local_url('showstream', array('nickname' => $user->nickname)); + $subtitle = sprintf(_("Updates from %s on %s!"), $user->nickname, $sitename); + + $notice = new Notice(); + + $notice->profile_id = $user->id; + + # XXX: since + # XXX: since_id + + $notice->orderBy('created DESC, notice.id DESC'); + + $notice->limit((($page-1)*20), $count); + + $cnt = $notice->find(); + + switch($apidata['content-type']) { + case 'xml': + $this->show_xml_timeline($notice); + break; + case 'rss': + $this->show_rss_timeline($notice, $title, $id, $link, $subtitle); + break; + case 'atom': + $this->show_atom_timeline($notice, $title, $id, $link, $subtitle); + break; + case 'json': + $this->show_json_timeline($notice); + break; + default: + common_user_error("API method not found!", $code = 404); + } + + exit(); } function show($args, $apidata) { @@ -469,7 +521,16 @@ class TwitapistatusesAction extends TwitterapiAction { parent::handle($args); common_server_error("API method under construction.", $code=501); } - + + function get_user($id, $apidata) { + if (!$id) { + return $apidata['user']; + } else if (is_numeric($id)) { + return User::staticGet($id); + } else { + return User::staticGet('nickname', $id); + } + } }