]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
support id, user timeline
authorEvan Prodromou <evan@prodromou.name>
Thu, 17 Jul 2008 21:19:42 +0000 (17:19 -0400)
committerEvan Prodromou <evan@prodromou.name>
Thu, 17 Jul 2008 21:19:42 +0000 (17:19 -0400)
darcs-hash:20080717211942-84dde-3e8fcffc2c4def3088389ed5c1720919458d6f54.gz

actions/twitapistatuses.php

index 58f313e34a4dea51c2cb9387ff96eb26de667bd7..e6ed49e0f90b4edc571594b62649f7b7db75defb 100644 (file)
@@ -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);
+               }
+       }
 }