/** * add identifier * * @author Matthias Pfefferle * @param User $pUser * @param AuthToken $pAuthToken * @return OnlineIdentity */ public function addIdentifier($pUser, $pOAuthToken) { $lAccessToken = $this->getAccessToken($pOAuthToken); // get params $lParams = $lAccessToken->params; $lParamsArray = array(); // extract params parse_str($lParams, $lParamsArray); $lXml = OAuthClient::get($this->getConsumer(), $lParamsArray['oauth_token'], $lParamsArray['oauth_token_secret'], "http://api.linkedin.com/v1/people/~:(id,site-standard-profile-request,summary,picture-url,first-name,last-name,date-of-birth,location)"); $lProfileArray = XmlUtils::XML2Array($lXml); //var_dump($lProfileArray);die(); // identifier $lLinkedInId = $lProfileArray['id']; $lProfileUri = "http://www.linkedin.com/profile/view?id=" . $lLinkedInId; // ask for online identity $lOnlineIdentity = OnlineIdentityTable::retrieveByAuthIdentifier($lProfileUri); // check if user already exists if ($lOnlineIdentity) { if ($lOnlineIdentity->getUserId() && $pUser->getId() == $lOnlineIdentity->getUserId()) { if (!$lOnlineIdentity->getActive()) { $lOnlineIdentity->setActive(true); } else { throw new sfException("online identity already added", 1); } } elseif ($lOnlineIdentity->getUserId() && $pUser->getId() != $lOnlineIdentity->getUserId()) { throw new sfException("online identity already added by someone else", 2); } } else { // new online identity if no exist $lOnlineIdentity = OnlineIdentityTable::addOnlineIdentity($lProfileUri, $lLinkedInId, $this->aCommunityId, $lProfileUri); } $this->completeOnlineIdentity($lOnlineIdentity, $lProfileArray, $pUser); AuthTokenTable::saveToken($pUser->getId(), $lOnlineIdentity->getId(), $lParamsArray['oauth_token'], $lParamsArray['oauth_token_secret'], true); return $lOnlineIdentity; }
/** * import twitter contacts * * @author Matthias Pfefferle * @author Karina Mies */ public static function importContacts($pOnlineIdentity) { $lToken = AuthTokenTable::getByUserAndOnlineIdentity($pOnlineIdentity->getUserId(), $pOnlineIdentity->getId()); // get api informations if (!$lToken) { $pOnlineIdentity->deactivate(); throw new Exception('damn theres no token!', '666'); } $lConsumer = new OAuthConsumer(sfConfig::get("app_linkedin_oauth_token"), sfConfig::get("app_linkedin_oauth_secret")); $lXml = OAuthClient::get($lConsumer, $lToken->getTokenKey(), $lToken->getTokenSecret(), "http://api.linkedin.com/v1/people/~/connections:(id)"); $lFriendObject = simplexml_load_string($lXml); $lXml = OAuthClient::get($lConsumer, $lToken->getTokenKey(), $lToken->getTokenSecret(), "http://api.linkedin.com/v1/people/~:(id,site-standard-profile-request,summary,picture-url,first-name,last-name,date-of-birth,location)"); $lProfileArray = XmlUtils::XML2Array($lXml); @self::importFriends($pOnlineIdentity, $lFriendObject); @self::updateIdentity($pOnlineIdentity, $lProfileArray); }