summaryrefslogtreecommitdiff
path: root/lib/twitterapi.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/twitterapi.php')
-rw-r--r--lib/twitterapi.php99
1 files changed, 90 insertions, 9 deletions
diff --git a/lib/twitterapi.php b/lib/twitterapi.php
index caf8c0716..ca8b03cdc 100644
--- a/lib/twitterapi.php
+++ b/lib/twitterapi.php
@@ -54,7 +54,7 @@ class TwitterapiAction extends Action
/**
* Overrides XMLOutputter::element to write booleans as strings (true|false).
* See that method's documentation for more info.
- *
+ *
* @param string $tag Element type or tagname
* @param array $attrs Array of element attributes, as
* key-value pairs
@@ -70,24 +70,85 @@ class TwitterapiAction extends Action
return parent::element($tag, $attrs, $content);
}
-
+
function twitter_user_array($profile, $get_notice=false)
{
-
$twitter_user = array();
+ $twitter_user['id'] = intval($profile->id);
$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['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();
@@ -612,7 +673,27 @@ class TwitterapiAction extends Action
function get_user($id, $apidata=null)
{
if (!$id) {
- return $apidata['user'];
+
+ // Twitter supports these other ways of passing the user ID
+ if (is_numeric($this->arg('id'))) {
+ return User::staticGet($this->arg('id'));
+ } else if ($this->arg('id')) {
+ $nickname = common_canonical_nickname($this->arg('id'));
+ return User::staticGet('nickname', $nickname);
+ } else if ($this->arg('user_id')) {
+ // This is to ensure that a non-numeric user_id still
+ // overrides screen_name even if it doesn't get used
+ if (is_numeric($this->arg('user_id'))) {
+ return User::staticGet('id', $this->arg('user_id'));
+ }
+ } else if ($this->arg('screen_name')) {
+ $nickname = common_canonical_nickname($this->arg('screen_name'));
+ return User::staticGet('nickname', $nickname);
+ } else {
+ // Fall back to trying the currently authenticated user
+ return $apidata['user'];
+ }
+
} else if (is_numeric($id)) {
return User::staticGet($id);
} else {