forked from GNUsocial/gnu-social
		
	Ticket #1568 - API should return full user objects
This commit is contained in:
		@@ -37,6 +37,10 @@ class TwitapiusersAction extends TwitterapiAction
 | 
			
		||||
        $email = $this->arg('email');
 | 
			
		||||
        $user_id = $this->arg('user_id');
 | 
			
		||||
 | 
			
		||||
        // XXX: email field deprecated in Twitter's API
 | 
			
		||||
 | 
			
		||||
        // XXX: Also: need to add screen_name param
 | 
			
		||||
 | 
			
		||||
        if ($email) {
 | 
			
		||||
            $user = User::staticGet('email', $email);
 | 
			
		||||
        } elseif ($user_id) {
 | 
			
		||||
@@ -48,7 +52,6 @@ class TwitapiusersAction extends TwitterapiAction
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!$user) {
 | 
			
		||||
			// XXX: Twitter returns a random(?) user instead of throwing and err! -- Zach
 | 
			
		||||
            $this->client_error(_('Not found.'), 404, $apidata['content-type']);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
@@ -62,58 +65,6 @@ class TwitapiusersAction extends TwitterapiAction
 | 
			
		||||
 | 
			
		||||
        $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_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'])) {
 | 
			
		||||
 | 
			
		||||
			$twitter_user['following'] = $apidata['user']->isSubscribed($profile);
 | 
			
		||||
            
 | 
			
		||||
			// Notifications on?
 | 
			
		||||
			$sub = Subscription::pkeyGet(array('subscriber' =>
 | 
			
		||||
				$apidata['user']->id, 'subscribed' => $profile->id));
 | 
			
		||||
            
 | 
			
		||||
			if ($sub) {
 | 
			
		||||
				$twitter_user['notifications'] = ($sub->jabber || $sub->sms);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
        
 | 
			
		||||
        if ($apidata['content-type'] == 'xml') {
 | 
			
		||||
            $this->init_document('xml');
 | 
			
		||||
            $this->show_twitter_xml_user($twitter_user);
 | 
			
		||||
 
 | 
			
		||||
@@ -73,21 +73,82 @@ class TwitterapiAction extends Action
 | 
			
		||||
 | 
			
		||||
    function twitter_user_array($profile, $get_notice=false)
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        $twitter_user = array();
 | 
			
		||||
 | 
			
		||||
        $twitter_user['name'] = $profile->getBestName();
 | 
			
		||||
        $twitter_user['followers_count'] = $this->count_subscriptions($profile);
 | 
			
		||||
        $twitter_user['screen_name'] = $profile->nickname;
 | 
			
		||||
        $twitter_user['description'] = ($profile->bio) ? $profile->bio : null;
 | 
			
		||||
        $twitter_user['location'] = ($profile->location) ? $profile->location : null;
 | 
			
		||||
        $twitter_user['id'] = intval($profile->id);
 | 
			
		||||
        $twitter_user['name'] = $profile->getBestName();
 | 
			
		||||
        $twitter_user['screen_name'] = $profile->nickname;
 | 
			
		||||
        $twitter_user['location'] = ($profile->location) ? $profile->location : null;
 | 
			
		||||
        $twitter_user['description'] = ($profile->bio) ? $profile->bio : null;
 | 
			
		||||
 | 
			
		||||
        $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
 | 
			
		||||
        $twitter_user['profile_image_url'] = ($avatar) ? $avatar->displayUrl() :
 | 
			
		||||
            Avatar::defaultImage(AVATAR_STREAM_SIZE);
 | 
			
		||||
 | 
			
		||||
        $twitter_user['profile_image_url'] = ($avatar) ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE);
 | 
			
		||||
        $twitter_user['protected'] = false; # not supported by Laconica yet
 | 
			
		||||
        $twitter_user['url'] = ($profile->homepage) ? $profile->homepage : null;
 | 
			
		||||
        $twitter_user['protected'] = false; # not supported by Laconica yet
 | 
			
		||||
        $twitter_user['followers_count'] = $this->count_subscriptions($profile);
 | 
			
		||||
 | 
			
		||||
        // To be supported soon...
 | 
			
		||||
        $twitter_user['profile_background_color'] = '';
 | 
			
		||||
        $twitter_user['profile_text_color'] = '';
 | 
			
		||||
        $twitter_user['profile_link_color'] = '';
 | 
			
		||||
        $twitter_user['profile_sidebar_fill_color'] = '';
 | 
			
		||||
        $twitter_user['profile_sidebar_border_color'] = '';
 | 
			
		||||
 | 
			
		||||
        $subbed = DB_DataObject::factory('subscription');
 | 
			
		||||
        $subbed->subscriber = $profile->id;
 | 
			
		||||
        $subbed_count = (int) $subbed->count() - 1;
 | 
			
		||||
        $twitter_user['friends_count'] = (is_int($subbed_count)) ? $subbed_count : 0;
 | 
			
		||||
 | 
			
		||||
        $twitter_user['created_at'] = $this->date_twitter($profile->created);
 | 
			
		||||
 | 
			
		||||
        $faves = DB_DataObject::factory('fave');
 | 
			
		||||
        $faves->user_id = $user->id;
 | 
			
		||||
        $faves_count = (int) $faves->count();
 | 
			
		||||
        $twitter_user['favourites_count'] = $faves_count; // British spelling!
 | 
			
		||||
 | 
			
		||||
        // Need to pull up the user for some of this
 | 
			
		||||
        $user = User::staticGet($profile->id);
 | 
			
		||||
 | 
			
		||||
        $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;
 | 
			
		||||
 | 
			
		||||
        // To be supported some day, perhaps
 | 
			
		||||
        $twitter_user['profile_background_image_url'] = '';
 | 
			
		||||
        $twitter_user['profile_background_tile'] = false;
 | 
			
		||||
 | 
			
		||||
        $notices = DB_DataObject::factory('notice');
 | 
			
		||||
        $notices->profile_id = $profile->id;
 | 
			
		||||
        $notice_count = (int) $notices->count();
 | 
			
		||||
 | 
			
		||||
        $twitter_user['statuses_count'] = (is_int($notice_count)) ? $notice_count : 0;
 | 
			
		||||
 | 
			
		||||
        // Is the requesting user following this user?
 | 
			
		||||
        $twitter_user['following'] = false;
 | 
			
		||||
        $twitter_user['notifications'] = false;
 | 
			
		||||
 | 
			
		||||
        if (isset($apidata['user'])) {
 | 
			
		||||
 | 
			
		||||
            $twitter_user['following'] = $apidata['user']->isSubscribed($profile);
 | 
			
		||||
 | 
			
		||||
            // Notifications on?
 | 
			
		||||
            $sub = Subscription::pkeyGet(array('subscriber' =>
 | 
			
		||||
                $apidata['user']->id, 'subscribed' => $profile->id));
 | 
			
		||||
 | 
			
		||||
            if ($sub) {
 | 
			
		||||
                $twitter_user['notifications'] = ($sub->jabber || $sub->sms);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($get_notice) {
 | 
			
		||||
            $notice = $profile->getCurrentNotice();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user