public function actionDisconnect()
 {
     Craft::log(__METHOD__, LogLevel::Info, true);
     // redirect url
     $redirect = craft()->httpSession->get('oauth.referer');
     if (!$redirect) {
         $redirect = $_SERVER['HTTP_REFERER'];
     }
     // get request params
     $providerHandle = craft()->request->getParam('provider');
     $namespace = craft()->request->getParam('namespace');
     if ($namespace) {
         $userMode = false;
     } else {
         if (craft()->userSession->user) {
             $userMode = true;
         } else {
             $this->_redirect($redirect);
         }
     }
     // remove cache
     if ($namespace) {
         $token = craft()->oauth->getSystemToken($providerHandle, $namespace);
         if ($token) {
             $token = $token->getRealToken();
         }
     }
     // criteria conditions & params
     $conditions = 'provider=:provider';
     $params = array(':provider' => $providerHandle);
     if ($namespace) {
         $conditions .= ' AND namespace=:namespace';
         $params[':namespace'] = $namespace;
     }
     if ($userMode) {
         $conditions .= ' AND userId=:userId';
         $params[':userId'] = craft()->userSession->user->id;
     }
     // delete all matching records
     Oauth_TokenRecord::model()->deleteAll($conditions, $params);
     // redirect
     $this->_redirect($redirect);
 }
 public function deleteSocialUserByUserId($userId)
 {
     $conditions = 'userId=:userId';
     $params = array(':userId' => $userId);
     $socialUserRecords = Social_UserRecord::model()->findAll($conditions, $params);
     foreach ($socialUserRecords as $socialUserRecord) {
         if ($socialUserRecord->tokenId) {
             $tokenRecord = Oauth_TokenRecord::model()->findByPk($socialUserRecord->tokenId);
             if ($tokenRecord) {
                 $tokenRecord->delete();
             }
         }
         $socialUserRecord->delete();
     }
     return true;
 }
 /**
  * Delete login account by ID
  *
  * @param int $id
  *
  * @return bool
  */
 public function deleteLoginAccountById($id)
 {
     $record = Social_LoginAccountRecord::model()->findByPk($id);
     if ($record) {
         $tokenId = $record->tokenId;
         if ($tokenId) {
             $tokenRecord = Oauth_TokenRecord::model()->findByPk($tokenId);
             if ($tokenRecord) {
                 $tokenRecord->delete();
             }
         }
         return $record->delete();
     } else {
         return false;
     }
 }