/** * add identifier * * @author Matthias Pfefferle * @param User $pUser * @param AuthToken $pAuthToken * @return OnlineIdentity */ public function addIdentifier($user, $pOAuthToken) { $lAccessToken = $this->getAccessToken($pOAuthToken); // get params $lParams = $lAccessToken->params; $lParamsArray = array(); // extract params parse_str($lParams, $lParamsArray); $json = OAuthClient::get($this->getConsumer(), $lParamsArray['oauth_token'], $lParamsArray['oauth_token_secret'], "https://api.xing.com/v1/users/me"); $json = json_decode($json, true); $xing_user = $json['users'][0]; $auth_identifier = $xing_user["permalink"]; // ask for online identity $online_identity = OnlineIdentityTable::retrieveByOriginalId($xing_user['id'], $this->getCommunity()->getid()); // check if user already exists if ($online_identity) { if ($online_identity->getUserId() && $user->getId() == $online_identity->getUserId()) { if (!$online_identity->getActive()) { $online_identity->setActive(true); } else { throw new sfException("online identity already added", 1); } } elseif ($online_identity->getUserId() && $user->getId() != $online_identity->getUserId()) { throw new sfException("online identity already added by someone else", 2); } } else { // check online identity $online_identity = OnlineIdentityTable::addOnlineIdentity($auth_identifier, $xing_user['id'], $this->aCommunityId); } $this->completeOnlineIdentity($online_identity, $xing_user, $user, $auth_identifier); // save new token AuthTokenTable::saveToken($user->getId(), $online_identity->getId(), $lParamsArray['oauth_token'], $lParamsArray['oauth_token_secret'], true); return $user; }
/** * add identifier * * @author Matthias Pfefferle * @param User $pUser * @param AuthToken $pAuthToken * @return OnlineIdentity */ public function addIdentifier($pUser, $pOAuthToken) { $lAccessToken = $this->getAccessToken($pOAuthToken); // get api informations $lJson = OAuthClient::get($this->getConsumer(), $lParamsArray['oauth_token'], $lParamsArray['oauth_token_secret'], "http://api.yigg.local/profiles/me"); $lJsonObject = json_decode($lJson); // ask for online identity $lOnlineIdentity = OnlineIdentityTable::retrieveByOriginalId($lJsonObject->id, $this->aCommunityId); // 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 { // get auth identifier foreach ($lJsonObject->urls as $url) { if ($url['type'] == "profile") { $lIdentifier = $url['value']; } } // check online identity $lOnlineIdentity = OnlineIdentityTable::addOnlineIdentity($lIdentifier, $lJsonObject->id, $this->aCommunityId); } $this->completeOnlineIdentity($lOnlineIdentity, $lJsonObject, $pUser, $lIdentifier); AuthTokenTable::saveToken($pUser->getId(), $lOnlineIdentity->getId(), $lParamsArray['oauth_token'], $lParamsArray['oauth_token_secret'], true); return $lOnlineIdentity; }