]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/twitapiusers.php
fix case of OAuthUtil method
[quix0rs-gnu-social.git] / actions / twitapiusers.php
index ed2417561157241e8af434dc9b427f68ee68c7f5..2894b7486dd31372fe63ca76ca41ed99821922b4 100644 (file)
@@ -25,30 +25,118 @@ class TwitapiusersAction extends TwitterapiAction
 {
 
     function show($args, $apidata)
-    {
+    {        
         parent::handle($args);
 
-        if (!in_array($apidata['content-type'], array('xml', 'json'))) {
+        if (!in_array($apidata['content-type'], array('xml', 'json'))) {            
             $this->clientError(_('API method not found!'), $code = 404);
             return;
         }
+                
+               $user = null;
+               $email = $this->arg('email');
+               $user_id = $this->arg('user_id');
 
-        $user = null;
-        $email = $this->arg('email');
+               if ($email) {
+                       $user = User::staticGet('email', $email);
+               } elseif ($user_id) {
+                       $user = $this->get_user($user_id);  
+               } elseif (isset($apidata['api_arg'])) {
+                       $user = $this->get_user($apidata['api_arg']);
+           } elseif (isset($apidata['user'])) {
+               $user = $apidata['user'];
+           }
+       
+               if (!$user) {               
+                       // XXX: Twitter returns a random(?) user instead of throwing and err! -- Zach
+                       $this->client_error(_('Not found.'), 404, $apidata['content-type']);
+                       return;
+               }
 
-        if ($email) {
-            $user = User::staticGet('email', $email);
-        } elseif (isset($apidata['api_arg'])) {
-            $user = $this->get_user($apidata['api_arg']);
-        }
+               $profile = $user->getProfile();
 
-        if (!$user) {
-            // XXX: Twitter returns a random(?) user instead of throwing and err! -- Zach
-            $this->clientError(_('Not found.'), 404, $apidata['content-type']);
-            return;
-        }
+               if (!$profile) {
+                       common_server_error(_('User has no profile.'));
+                       return;
+               }
+
+               $twitter_user = $this->twitter_user_array($profile, true);
+
+               // Add in extended user fields offered up by this method
+               $twitter_user['created_at'] = $this->date_twitter($profile->created);
+
+               $subbed = DB_DataObject::factory('subscription');
+               $subbed->subscriber = $profile->id;
+               $subbed_count = (int) $subbed->count() - 1;
+
+               $notices = DB_DataObject::factory('notice');
+               $notices->profile_id = $profile->id;
+               $notice_count = (int) $notices->count();
+
+               $twitter_user['friends_count'] = (is_int($subbed_count)) ? $subbed_count : 0;
+               $twitter_user['statuses_count'] = (is_int($notice_count)) ? $notice_count : 0;
 
-        $this->show_extended_profile($user, $apidata);
-    }
+               // Other fields Twitter sends...
+               $twitter_user['profile_background_color'] = '';
+               $twitter_user['profile_background_image_url'] = '';
+               $twitter_user['profile_text_color'] = '';
+               $twitter_user['profile_link_color'] = '';
+               $twitter_user['profile_sidebar_fill_color'] = '';
+        $twitter_user['profile_sidebar_border_color'] = '';
+        $twitter_user['profile_background_tile'] = 'false';
+
+               $faves = DB_DataObject::factory('fave');
+               $faves->user_id = $user->id;
+               $faves_count = (int) $faves->count();
+               $twitter_user['favourites_count'] = $faves_count;
+
+               $timezone = 'UTC';
+
+               if ($user->timezone) {
+                       $timezone = $user->timezone;
+               }
+
+               $t = new DateTime;
+               $t->setTimezone(new DateTimeZone($timezone));
+               $twitter_user['utc_offset'] = $t->format('Z');
+               $twitter_user['time_zone'] = $timezone;
+
+               if (isset($apidata['user'])) {
+
+                       if ($apidata['user']->isSubscribed($profile)) {
+                               $twitter_user['following'] = 'true';
+                       } else {
+                               $twitter_user['following'] = 'false';
+                       }
+            
+            // Notifications on?
+                   $sub = Subscription::pkeyGet(array('subscriber' =>
+                       $apidata['user']->id, 'subscribed' => $profile->id));
+            
+            if ($sub) {
+                if ($sub->jabber || $sub->sms) {
+                    $twitter_user['notifications'] = 'true';
+                } else {
+                    $twitter_user['notifications'] = 'false';
+                }
+            }
+        }
+        
+               if ($apidata['content-type'] == 'xml') {
+                       $this->init_document('xml');
+                       $this->show_twitter_xml_user($twitter_user);
+                       $this->end_document('xml');
+               } elseif ($apidata['content-type'] == 'json') {
+                       $this->init_document('json');
+                       $this->show_json_objects($twitter_user);
+                       $this->end_document('json');
+               } else {
+                   
+                   // This is in case 'show' was called via /account/verify_credentials
+                   // without a format (xml or json).
+            header('Content-Type: text/html; charset=utf-8');
+            print 'Authorized';
+        }
 
+       }
 }