]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/twitapiusers.php
Merge branch 'master' of evan@dev.controlyourself.ca:/var/www/trunk
[quix0rs-gnu-social.git] / actions / twitapiusers.php
index 409986985c2302fdb5028f973ed99c37e3d8fef6..8f16e56131e87f3ec2f2173fa4bd275d8dda0980 100644 (file)
@@ -29,26 +29,92 @@ class TwitapiusersAction extends TwitterapiAction
         parent::handle($args);
 
         if (!in_array($apidata['content-type'], array('xml', 'json'))) {
-            common_user_error(_('API method not found!'), $code = 404);
+            $this->clientError(_('API method not found!'), $code = 404);
             return;
         }
 
-        $user = null;
-        $email = $this->arg('email');
+ $this->auth_user = $apidata['user'];
+               $user = null;
+               $email = $this->arg('email');
 
-        if ($email) {
-            $user = User::staticGet('email', $email);
-        } elseif (isset($apidata['api_arg'])) {
-            $user = $this->get_user($apidata['api_arg']);
-        }
+               if ($email) {
+                       $user = User::staticGet('email', $email);
+               } elseif (isset($apidata['api_arg'])) {
+                       $user = $this->get_user($apidata['api_arg']);
+               }
 
-        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 (!$user) {
+                       // XXX: Twitter returns a random(?) user instead of throwing and err! -- Zach
+                       $this->client_error(_('Not found.'), 404, $apidata['content-type']);
+                       return;
+               }
+
+               $profile = $user->getProfile();
+
+               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;
+
+               // Other fields Twitter sends...
+               $twitter_user['profile_background_color'] = '';
+               $twitter_user['profile_text_color'] = '';
+               $twitter_user['profile_link_color'] = '';
+               $twitter_user['profile_sidebar_fill_color'] = '';
+
+               $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($this->auth_user)) {
+
+                       if ($this->auth_user->isSubscribed($profile)) {
+                               $twitter_user['following'] = 'true';
+                       } else {
+                               $twitter_user['following'] = 'false';
+                       }
+
+                       // Not implemented yet
+                       $twitter_user['notifications'] = 'false';
+               }
 
-        $this->show_extended_profile($user, $apidata);
-    }
+               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');
+               }
 
+       }
 }