diff options
Diffstat (limited to 'lib/twitter.php')
-rw-r--r-- | lib/twitter.php | 234 |
1 files changed, 120 insertions, 114 deletions
diff --git a/lib/twitter.php b/lib/twitter.php index 7f75a1afd..5eb15005a 100644 --- a/lib/twitter.php +++ b/lib/twitter.php @@ -19,184 +19,190 @@ if (!defined('LACONICA')) { exit(1); } -function get_twitter_data($uri, $screen_name, $password) { - - $options = array( - CURLOPT_USERPWD => sprintf("%s:%s", $screen_name, $password), - CURLOPT_RETURNTRANSFER => true, - CURLOPT_FAILONERROR => true, - CURLOPT_HEADER => false, - CURLOPT_FOLLOWLOCATION => true, - // CURLOPT_USERAGENT => "identi.ca", - CURLOPT_CONNECTTIMEOUT => 120, +function get_twitter_data($uri, $screen_name, $password) +{ + + $options = array( + CURLOPT_USERPWD => sprintf("%s:%s", $screen_name, $password), + CURLOPT_RETURNTRANSFER => true, + CURLOPT_FAILONERROR => true, + CURLOPT_HEADER => false, + CURLOPT_FOLLOWLOCATION => true, + # CURLOPT_USERAGENT => "identi.ca", + CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_TIMEOUT => 120, - # Twitter is strict about accepting invalid "Expect" headers CURLOPT_HTTPHEADER => array('Expect:') - ); + ); - $ch = curl_init($uri); + $ch = curl_init($uri); curl_setopt_array($ch, $options); $data = curl_exec($ch); $errmsg = curl_error($ch); - if ($errmsg) { - common_debug("Twitter bridge - cURL error: $errmsg - trying to load: $uri with user $twit_user.", - __FILE__); - } + if ($errmsg) { + common_debug("Twitter bridge - cURL error: $errmsg - trying to load: $uri with user $twit_user.", + __FILE__); + } - curl_close($ch); + curl_close($ch); - return $data; + return $data; } -function twitter_user_info($screen_name, $password) { +function twitter_user_info($screen_name, $password) +{ - $uri = "http://twitter.com/users/show/$screen_name.json"; - $data = get_twitter_data($uri, $screen_name, $password); + $uri = "http://twitter.com/users/show/$screen_name.json"; + $data = get_twitter_data($uri, $screen_name, $password); - if (!$data) { - return false; - } + if (!$data) { + return false; + } - $twit_user = json_decode($data); + $twit_user = json_decode($data); - if (!$twit_user) { - return false; - } + if (!$twit_user) { + return false; + } - return $twit_user; + return $twit_user; } -function update_twitter_user($fuser, $twitter_id, $screen_name) { +function update_twitter_user($fuser, $twitter_id, $screen_name) +{ - $original = clone($fuser); - $fuser->nickname = $screen_name; - $fuser->uri = 'http://twitter.com/' . $screen_name; - $result = $fuser->updateKeys($original); + $original = clone($fuser); + $fuser->nickname = $screen_name; + $fuser->uri = 'http://twitter.com/' . $screen_name; + $result = $fuser->updateKeys($original); - if (!$result) { - common_log_db_error($fuser, 'UPDATE', __FILE__); - return false; - } + if (!$result) { + common_log_db_error($fuser, 'UPDATE', __FILE__); + return false; + } - return true; + return true; } -function add_twitter_user($twitter_id, $screen_name) { +function add_twitter_user($twitter_id, $screen_name) +{ - // Otherwise, create a new Twitter user - $fuser = DB_DataObject::factory('foreign_user'); + // Otherwise, create a new Twitter user + $fuser = DB_DataObject::factory('foreign_user'); - $fuser->nickname = $screen_name; - $fuser->uri = 'http://twitter.com/' . $screen_name; - $fuser->id = $twitter_id; - $fuser->service = 1; // Twitter - $fuser->created = common_sql_now(); - $result = $fuser->insert(); + $fuser->nickname = $screen_name; + $fuser->uri = 'http://twitter.com/' . $screen_name; + $fuser->id = $twitter_id; + $fuser->service = 1; // Twitter + $fuser->created = common_sql_now(); + $result = $fuser->insert(); - if (!$result) { - common_debug("Twitter bridge - failed to add new Twitter user: $twitter_id - $screen_name."); - common_log_db_error($fuser, 'INSERT', __FILE__); - return false; - } + if (!$result) { + common_debug("Twitter bridge - failed to add new Twitter user: $twitter_id - $screen_name."); + common_log_db_error($fuser, 'INSERT', __FILE__); + return false; + } - common_debug("Twitter bridge - Added new Twitter user: $screen_name ($twitter_id)."); + common_debug("Twitter bridge - Added new Twitter user: $screen_name ($twitter_id)."); - return true; + return true; } // Creates or Updates a Twitter user -function save_twitter_user($twitter_id, $screen_name) { +function save_twitter_user($twitter_id, $screen_name) +{ - // Check to see whether the Twitter user is already in the system, - // and update its screen name and uri if so. - $fuser = Foreign_user::getForeignUser($twitter_id, 1); + // Check to see whether the Twitter user is already in the system, + // and update its screen name and uri if so. + $fuser = Foreign_user::getForeignUser($twitter_id, 1); - if ($fuser) { + if ($fuser) { - // Only update if Twitter screen name has changed - if ($fuser->nickname != $screen_name) { + // Only update if Twitter screen name has changed + if ($fuser->nickname != $screen_name) { - common_debug('Twitter bridge - Updated nickname (and URI) for Twitter user ' . - "$fuser->id to $screen_name, was $fuser->nickname"); + common_debug('Twitter bridge - Updated nickname (and URI) for Twitter user ' . + "$fuser->id to $screen_name, was $fuser->nickname"); - return update_twitter_user($fuser, $twitter_id, $screen_name); - } + return update_twitter_user($fuser, $twitter_id, $screen_name); + } - } else { - return add_twitter_user($twitter_id, $screen_name); - } + } else { + return add_twitter_user($twitter_id, $screen_name); + } - return true; + return true; } -function retreive_twitter_friends($twitter_id, $screen_name, $password) { +function retreive_twitter_friends($twitter_id, $screen_name, $password) +{ - $uri = "http://twitter.com/statuses/friends/$twitter_id.json?page="; - $twitter_user = twitter_user_info($screen_name, $password); + $uri = "http://twitter.com/statuses/friends/$twitter_id.json?page="; + $twitter_user = twitter_user_info($screen_name, $password); - // Calculate how many pages to get... - $pages = ceil($twitter_user->friends_count / 100); + // Calculate how many pages to get... + $pages = ceil($twitter_user->friends_count / 100); - if ($pages == 0) { - common_debug("Twitter bridge - Twitter user $screen_name has no friends! Lame."); - } + if ($pages == 0) { + common_debug("Twitter bridge - Twitter user $screen_name has no friends! Lame."); + } - $friends = array(); + $friends = array(); - for ($i = 1; $i <= $pages; $i++) { + for ($i = 1; $i <= $pages; $i++) { - $data = get_twitter_data($uri . $i, $screen_name, $password); + $data = get_twitter_data($uri . $i, $screen_name, $password); - if (!$data) { - return NULL; - } + if (!$data) { + return null; + } - $more_friends = json_decode($data); + $more_friends = json_decode($data); - if (!$more_friends) { - return NULL; - } + if (!$more_friends) { + return null; + } - $friends = array_merge($friends, $more_friends); - } + $friends = array_merge($friends, $more_friends); + } - return $friends; + return $friends; } -function save_twitter_friends($user, $twitter_id, $screen_name, $password) { +function save_twitter_friends($user, $twitter_id, $screen_name, $password) +{ - $friends = retreive_twitter_friends($twitter_id, $screen_name, $password); + $friends = retreive_twitter_friends($twitter_id, $screen_name, $password); - if (is_null($friends)) { - common_debug("Twitter bridge - Couldn't get friends data from Twitter."); - return false; - } + if (is_null($friends)) { + common_debug("Twitter bridge - Couldn't get friends data from Twitter."); + return false; + } foreach ($friends as $friend) { - $friend_name = $friend->screen_name; - $friend_id = $friend->id; + $friend_name = $friend->screen_name; + $friend_id = $friend->id; - // Update or create the Foreign_user record - if (!save_twitter_user($friend_id, $friend_name)) { - return false; - } + // Update or create the Foreign_user record + if (!save_twitter_user($friend_id, $friend_name)) { + return false; + } - // Check to see if there's a related local user - $flink = Foreign_link::getByForeignID($friend_id, 1); + // Check to see if there's a related local user + $flink = Foreign_link::getByForeignID($friend_id, 1); - if ($flink) { + if ($flink) { - // Get associated user and subscribe her - $friend_user = User::staticGet('id', $flink->user_id); - subs_subscribe_to($user, $friend_user); - common_debug("Twitter bridge - subscribed $friend_user->nickname to $user->nickname."); - } - } + // Get associated user and subscribe her + $friend_user = User::staticGet('id', $flink->user_id); + subs_subscribe_to($user, $friend_user); + common_debug("Twitter bridge - subscribed $friend_user->nickname to $user->nickname."); + } + } - return true; + return true; } |