/wp-content/plugins/socialauth-wp/hybridauth/Hybrid/Providers/Twitter.php
https://bitbucket.org/mshmsh5000/wp-demo · PHP · 165 lines · 100 code · 30 blank · 35 comment · 19 complexity · c0897567efc98836da60757c7a768066 MD5 · raw file
- <?php
- /*!
- * HybridAuth
- * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
- * (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
- */
-
- /**
- * Hybrid_Providers_Twitter provider adapter based on OAuth1 protocol
- */
- class Hybrid_Providers_Twitter extends Hybrid_Provider_Model_OAuth1
- {
- /**
- * IDp wrappers initializer
- */
- function initialize()
- {
- parent::initialize();
-
- // Provider api end-points
- $this->api->api_base_url = "https://api.twitter.com/1/";
- $this->api->authorize_url = "https://api.twitter.com/oauth/authenticate";
- $this->api->request_token_url = "https://api.twitter.com/oauth/request_token";
- $this->api->access_token_url = "https://api.twitter.com/oauth/access_token";
-
- $this->api->curl_auth_header = false;
- }
-
- /**
- * load the user profile from the IDp api client
- */
- function getUserProfile()
- {
- $response = $this->api->get( 'account/verify_credentials.json' );
-
- // check the last HTTP status code returned
- if ( $this->api->http_code != 200 ){
- throw new Exception( "User profile request failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ), 6 );
- }
-
- if ( ! is_object( $response ) || ! isset( $response->id ) ){
- throw new Exception( "User profile request failed! {$this->providerId} api returned an invalid response.", 6 );
- }
-
- # store the user profile.
- $this->user->profile->identifier = (property_exists($response,'id'))?$response->id:"";
- $this->user->profile->displayName = (property_exists($response,'screen_name'))?$response->screen_name:"";
- $this->user->profile->description = (property_exists($response,'description'))?$response->description:"";
- $this->user->profile->firstName = (property_exists($response,'name'))?$response->name:"";
- $this->user->profile->photoURL = (property_exists($response,'profile_image_url'))?$response->profile_image_url:"";
- $this->user->profile->profileURL = (property_exists($response,'screen_name'))?("http://twitter.com/".$response->screen_name):"";
- $this->user->profile->webSiteURL = (property_exists($response,'url'))?$response->url:"";
- $this->user->profile->region = (property_exists($response,'location'))?$response->location:"";
-
- return $this->user->profile;
- }
-
- /**
- * load the user contacts
- */
- function getUserContacts()
- {
- $parameters = array( 'cursor' => '-1' );
- $response = $this->api->get( 'friends/ids.json', $parameters );
-
- // check the last HTTP status code returned
- if ( $this->api->http_code != 200 ){
- throw new Exception( "User contacts request failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ) );
- }
-
- if( ! $response || ! count( $response->ids ) ){
- return ARRAY();
- }
-
- // 75 id per time should be okey
- $contactsids = array_chunk ( $response->ids, 75 );
-
- $contacts = ARRAY();
-
- foreach( $contactsids as $chunk ){
- $parameters = array( 'user_id' => implode( ",", $chunk ) );
- $response = $this->api->get( 'users/lookup.json', $parameters );
-
- // check the last HTTP status code returned
- if ( $this->api->http_code != 200 ){
- throw new Exception( "User contacts request failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ) );
- }
-
- if( $response && count( $response ) ){
- foreach( $response as $item ){
- $uc = new Hybrid_User_Contact();
-
- $uc->identifier = (property_exists($item,'id'))?$item->id:"";
- $uc->displayName = (property_exists($item,'name'))?$item->name:"";
- $uc->profileURL = (property_exists($item,'screen_name'))?("http://twitter.com/".$item->screen_name):"";
- $uc->photoURL = (property_exists($item,'profile_image_url'))?$item->profile_image_url:"";
- $uc->description = (property_exists($item,'description'))?$item->description:"";
-
- $contacts[] = $uc;
- }
- }
- }
-
- return $contacts;
- }
-
- /**
- * update user status
- */
- function setUserStatus( $status )
- {
- $parameters = array( 'status' => $status );
- $response = $this->api->post( 'statuses/update.json', $parameters );
-
- // check the last HTTP status code returned
- if ( $this->api->http_code != 200 ){
- throw new Exception( "Update user status failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ) );
- }
- }
-
- /**
- * load the user latest activity
- * - timeline : all the stream
- * - me : the user activity only
- *
- * by default return the timeline
- */
- function getUserActivity( $stream )
- {
- if( $stream == "me" ){
- $response = $this->api->get( 'statuses/user_timeline.json' );
- }
- else{
- $response = $this->api->get( 'statuses/home_timeline.json' );
- }
-
- // check the last HTTP status code returned
- if ( $this->api->http_code != 200 ){
- throw new Exception( "User activity stream request failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus( $this->api->http_code ) );
- }
-
- if( ! $response ){
- return ARRAY();
- }
-
- $activities = ARRAY();
-
- foreach( $response as $item ){
- $ua = new Hybrid_User_Activity();
-
- $ua->id = (property_exists($item,'id'))?$item->id:"";
- $ua->date = (property_exists($item,'created_at'))?strtotime($item->created_at):"";
- $ua->text = (property_exists($item,'text'))?$item->text:"";
-
- $ua->user->identifier = (property_exists($item->user,'id'))?$item->user->id:"";
- $ua->user->displayName = (property_exists($item->user,'name'))?$item->user->name:"";
- $ua->user->profileURL = (property_exists($item->user,'screen_name'))?("http://twitter.com/".$item->user->screen_name):"";
- $ua->user->photoURL = (property_exists($item->user,'profile_image_url'))?$item->user->profile_image_url:"";
-
- $activities[] = $ua;
- }
-
- return $activities;
- }
- }