%PDF- %PDF-
| Direktori : /www/varak.net/mail2.varak.net_old/libraries/OAuthClient/ |
| Current File : /www/varak.net/mail2.varak.net_old/libraries/OAuthClient/database_oauth_client.php |
<?php
/*
* database_oauth_client.php
*
* @(#) $Id: database_oauth_client.php,v 1.7 2013/07/02 05:19:31 mlemos Exp $
*
*/
class oauth_session_value_class
{
var $id;
var $session;
var $state;
var $access_token;
var $access_token_secret;
var $authorized;
var $expiry;
var $type;
var $server;
var $creation;
var $refresh_token;
};
class database_oauth_client_class extends oauth_client_class
{
var $service;
var $session = '';
var $user = 0;
var $session_cookie = 'oauth_session';
var $session_path = '/';
var $sessions = array();
Function Query($sql, $parameters, &$results, $result_types = null)
{
return $this->SetError('Database Query is not implemented');
}
Function SetupSession(&$session)
{
if(strlen($this->session)
|| IsSet($_COOKIE[$this->session_cookie]))
{
if($this->debug)
$this->OutputDebug(strlen($this->session) ? 'Checking OAuth session '.$this->session : 'Checking OAuth session from cookie '.$_COOKIE[$this->session_cookie]);
if(!$this->GetOAuthSession(strlen($this->session) ? $this->session : $_COOKIE[$this->session_cookie], $this->server, $session))
return($this->SetError('OAuth session error: '.$this->error));
}
else
{
if($this->debug)
$this->OutputDebug('No OAuth session is set');
$session = null;
}
if(!IsSet($session))
{
if($this->debug)
$this->OutputDebug('Creating a new OAuth session');
if(!$this->CreateOAuthSession($this->server, $session))
return($this->SetError('OAuth session error: '.$this->error));
SetCookie($this->session_cookie, $session->session, 0, $this->session_path);
}
$this->session = $session->session;
return true;
}
Function GetStoredState(&$state)
{
if(!$this->SetupSession($session))
return false;
$state = $session->state;
return true;
}
Function CreateOAuthSession($user, &$session)
{
$session = new oauth_session_value_class;
$session->state = md5(time().rand());
$session->session = md5($session->state.time().rand());
$session->access_token = '';
$session->access_token_secret = '';
$session->authorized = null;
$session->expiry = null;
$session->type = '';
$session->server = $this->server;
$session->creation = gmstrftime("%Y-%m-%d %H:%M:%S");
$session->refresh_token = '';
$parameters = array(
's', $session->session,
's', $session->state,
's', $session->access_token,
's', $session->access_token_secret,
's', $session->expiry,
'b', $session->authorized,
's', $session->type,
's', $session->server,
'ts', $session->creation,
's', $session->refresh_token
);
if(!$this->Query('INSERT INTO oauth_session (session, state, access_token, access_token_secret, expiry, authorized, type, server, creation, refresh_token) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $parameters, $results))
return false;
$session->id = $results['insert_id'];
return true;
}
Function SetOAuthSession(&$oauth_session, $session)
{
$oauth_session = new oauth_session_value_class;
$oauth_session->id = $session[0];
$oauth_session->session = $session[1];
$oauth_session->state = $session[2];
$oauth_session->access_token = $session[3];
$oauth_session->access_token_secret = $session[4];
$oauth_session->expiry = $session[5];
$oauth_session->authorized = $session[6];
$oauth_session->type = $session[7];
$oauth_session->server = $session[8];
$oauth_session->creation = $session[9];
$oauth_session->refresh_token = $session[10];
}
Function GetUserSession($user, &$oauth_session)
{
if($this->debug)
$this->OutputDebug('Getting the OAuth session for user '.$user);
$parameters = array(
'i', $user,
's', $this->server
);
$result_types = array( 'i','s', 's', 's', 's', 'ts', 'b', 's', 's', 'ts', 's');
if(!$this->Query('SELECT id, session, state, access_token, access_token_secret, expiry, authorized, type, server, creation, refresh_token FROM oauth_session WHERE user=? AND server=?', $parameters, $results, $result_types))
return false;
if(count($results['rows']) === 0)
{
$oauth_session = null;
return true;
}
$this->SetOAuthSession($oauth_session, $results['rows'][0]);
$this->sessions[$oauth_session->session][$this->server] = $oauth_session;
$this->session = $oauth_session->session;
return true;
}
Function GetOAuthSession($session, $server, &$oauth_session)
{
if(IsSet($this->sessions[$session][$server]))
{
$oauth_session = $this->sessions[$session][$server];
return true;
}
$parameters = array(
's', $session,
's', $server
);
$result_types = array( 'i','s', 's', 's', 's', 'ts', 'b', 's', 's', 'ts', 's');
if(!$this->Query('SELECT id, session, state, access_token, access_token_secret, expiry, authorized, type, server, creation, refresh_token FROM oauth_session WHERE session=? AND server=?', $parameters, $results, $result_types))
return false;
if(count($results['rows']) === 0)
{
$oauth_session = null;
return true;
}
$this->SetOAuthSession($oauth_session, $results['rows'][0]);
$this->sessions[$session][$server] = $oauth_session;
return true;
}
Function StoreAccessToken($access_token)
{
if(!$this->SetupSession($session))
return false;
$session->access_token = $access_token['value'];
$session->access_token_secret = (IsSet($access_token['secret']) ? $access_token['secret'] : '');
$session->authorized = (IsSet($access_token['authorized']) ? $access_token['authorized'] : null);
$session->expiry = (IsSet($access_token['expiry']) ? $access_token['expiry'] : null);
if(IsSet($access_token['type']))
$session->type = $access_token['type'];
$session->refresh_token = (IsSet($access_token['refresh']) ? $access_token['refresh'] : '');
if(!$this->GetOAuthSession($session->session, $this->server, $oauth_session))
return($this->SetError('OAuth session error: '.$this->error));
if(!IsSet($oauth_session))
{
$this->error = 'the session to store the access token was not found';
return false;
}
$oauth_session->access_token = $session->access_token;
$oauth_session->access_token_secret = $session->access_token_secret;
$oauth_session->authorized = (IsSet($session->authorized) ? $session->authorized : null);
$oauth_session->expiry = (IsSet($session->expiry) ? $session->expiry : null);
$oauth_session->type = (IsSet($session->type) ? $session->type : '');
$oauth_session->refresh_token = $session->refresh_token;
$parameters = array(
's', $oauth_session->session,
's', $oauth_session->state,
's', $oauth_session->access_token,
's', $oauth_session->access_token_secret,
's', $oauth_session->expiry,
'b', $oauth_session->authorized,
's', $oauth_session->type,
's', $oauth_session->server,
'ts', $oauth_session->creation,
's', $oauth_session->refresh_token,
'i', $this->user,
'i', $oauth_session->id
);
return $this->Query('UPDATE oauth_session SET session=?, state=?, access_token=?, access_token_secret=?, expiry=?, authorized=?, type=?, server=?, creation=?, refresh_token=?, user=? WHERE id=?', $parameters, $results);
}
Function GetAccessToken(&$access_token)
{
if($this->user)
{
if(!$this->GetUserSession($this->user, $session))
return false;
if(!IsSet($session))
return $this->SetError('it was not found the OAuth session for user '.$this->user);
}
else
{
if(!$this->SetupSession($session))
return false;
}
if(strlen($session->access_token))
{
$access_token = array(
'value'=>$session->access_token,
'secret'=>$session->access_token_secret
);
if(IsSet($session->authorized))
$access_token['authorized'] = $session->authorized;
if(IsSet($session->expiry))
$access_token['expiry'] = $session->expiry;
if(strlen($session->type))
$access_token['type'] = $session->type;
if(strlen($session->refresh_token))
$access_token['refresh'] = $session->refresh_token;
}
else
$access_token = array();
return true;
}
Function ResetAccessToken()
{
if($this->debug)
$this->OutputDebug('Resetting the access token status for OAuth server located at '.$this->access_token_url);
SetCookie($this->session_cookie, '', 0, $this->session_path);
return true;
}
Function SetUser($user)
{
if(strlen($this->session) === 0)
$this->SetError('it was not yet established an OAuth session');
$parameters = array(
'i', $user,
's', $this->session,
's', $this->server,
);
if(!$this->Query('UPDATE oauth_session SET user=? WHERE session=? AND server=?', $parameters, $results))
return false;
$this->user = $user;
return true;
}
};
?>