summaryrefslogtreecommitdiff
path: root/actions
diff options
context:
space:
mode:
authorEvan Prodromou <evan@prodromou.name>2008-07-17 17:19:42 -0400
committerEvan Prodromou <evan@prodromou.name>2008-07-17 17:19:42 -0400
commit83040ee747e209c7b3907c35a8fe505c2526c4ab (patch)
tree758d715deda39f3b33d7881559092fd3a76bfb64 /actions
parentbbc1b747f8a1e60db00cf2cf121c7fd6873144fd (diff)
support id, user timeline
darcs-hash:20080717211942-84dde-3e8fcffc2c4def3088389ed5c1720919458d6f54.gz
Diffstat (limited to 'actions')
-rw-r--r--actions/twitapistatuses.php71
1 files changed, 66 insertions, 5 deletions
diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php
index 58f313e34..e6ed49e0f 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']);
+
+ if (!$user) {
+ $this->client_error(_('No such user'), 404);
+ return;
+ }
- exit();
+ $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);
+ }
+ }
}