21
21
* along with this program; if not, write to the Free Software
22
22
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24
* @author Chris Slamar
25
* @copyright 2001 - 2011 Ampache.org
26
* @license http://opensource.org/licenses/gpl-2.0 GPLv2
27
* @link http://www.ampache.org/
30
require_once '../../lib/init.php';
31
require_once( Config::get('prefix') . "/modules/twitter/twitteroauth/twitteroauth.php");
35
if(!empty($_SESSION['twitterusername'])) {
36
header('Location: ' . Config::Get('web_path') . '/modules/twitter/twitter_update.php');
37
debug_event("Twitter", "Twitter user has logged in this session.", "5");
40
if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret'])){
41
debug_event("Twitter", "Got all 3 pieces for auth", "5");
43
if( $_SESSION['twitterCount'] < 4 ) {
44
debug_event("Twitter", "Didn't get all 3 auth pieces, going to try again. Try #" . $_SESSION['twitterCount'], "5");
45
$_SESSION['twitterCount']++;
46
header('Location: ' . Config::Get('web_path') . '/modules/twitter/twitter_login.php');
48
debug_event("Twitter", "Failed to auth too many times. Giving up.", "5");
49
header('Location: ' . Config::Get('web_path') );
53
// TwitterOAuth instance, with two new parameters we got in twitter_login.php
54
$twitteroauth = new TwitterOAuth( Config::get('twitter_consumer_key'), Config::get('twitter_consumer_secret'), $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
55
if( !isset($twitteroauth) ) {
56
debug_event("Twitter", "Couldn't create OAuth object.", "5");
57
header('Location: ' . Config::get('web_path'));
59
// Let's request the access token
60
$access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']);
61
if( !isset($access_token) ) {
62
debug_event("Twitter", "Couldn't get access token", "5");
63
header('Location: ' . Config::get('web_path'));
65
// Save it in a session var
66
$_SESSION['access_token'] = $access_token;
69
// Let's get the user's info
70
$user_info = $twitteroauth->get('account/verify_credentials');
72
debug_event("Twttier", "User ID:{$user_info->id}. ScreenName:{$user_info->screen_name}.", "5");
73
debug_event("Twitter", "access token:" . $access_token['oauth_token'], "5");
74
debug_event("Twitter", "access token secret:" . $access_token['oauth_token_secret'], "5");
76
if( isset($user_info->error)) {
77
debug_event("Twitter", "Error verifying credentials", "5");
79
header('Location: ' . Config::get('web_path'));
82
// Let's find the user by its twitterid and ampacheid
83
$idselectquery = "SELECT * FROM twitter_users WHERE oauth_provider = 'twitter' AND oauth_uid = ". $user_info->id . " AND ampache_id = " . $_SESSION['userdata']['uid'];
84
debug_event("Twitter", "Id query: " . $idselectquery, "6");
86
$idselectrun = Dba::read($idselectquery);
87
$result = Dba::fetch_assoc($idselectrun);
89
debug_event("Twitter", "ampache_id: {$_SESSION['userdata']['uid']}", "5");
90
debug_event("Twitter", "oauth_uid: {$user_info->id}", "5");
91
debug_event("Twitter", "oauth_token: {$access_token['oauth_token']}", "5");
92
debug_event("Twitter", "oauth_secret: {$access_token['oauth_token_secret']}", "5");
93
debug_event("Twitter", "username: {$user_info->screen_name}", "5");
95
// If not, let's add it to the database
97
debug_event("Twitter", "First time user. Add them to the DB.", "5");
98
$insert_query ="INSERT INTO twitter_users (ampache_id, oauth_provider, oauth_uid, oauth_token, oauth_secret, username) VALUES ( '{$_SESSION['userdata']['uid']}', 'twitter', '{$user_info->id}', '{$access_token['oauth_token']}', '{$access_token['oauth_token_secret']}', '{$user_info->screen_name}')";
100
debug_event("Twitter", "Insert query: " . $insert_query, "6");
101
$insert_run = Dba::write($insert_query);
103
$select_query = "SELECT * FROM twitter_users WHERE username = '" . $user_info->screen_name . "' AND ampache_id = " . $_SESSION['userdata']['uid'];
104
debug_event("Twitter", "Select query: {$query}", "6");
105
$select_run = Dba::read( $select_query );
106
$result = Dba::fetch_assoc($select_run);
108
debug_event("Twitter", "Update the DB to hold current tokens", "5");
110
$update_query = "UPDATE twitter_users SET oauth_token = '{$access_token['oauth_token']}', oauth_secret = '{$access_token['oauth_token_secret']}' WHERE oauth_provider = 'twitter' AND oauth_uid = {$user_info->id} AND ampache_id = {$_SESSION['userdata']['uid']}";
111
debug_event("Twitter", "update query: " . $update_query, "6");
113
$update_run = Dba::write($update_query);
115
$select_query = "SELECT * FROM twitter_users WHERE username = '" . $user_info->screen_name . "'";
116
debug_event("Twitter", "select query: " . $select_query, "6");
118
$select_run = Dba::read($select_query);
119
$result = Dba::fetch_assoc($select_run);
122
$_SESSION['id'] = $result['id'];
123
$_SESSION['twitterusername'] = $result['username'];
124
$_SESSION['oauth_uid'] = $result['oauth_uid'];
125
$_SESSION['oauth_provider'] = $result['oauth_provider'];
126
$_SESSION['oauth_token'] = $result['oauth_token'];
127
$_SESSION['oauth_secret'] = $result['oauth_secret'];
129
header('Location: ' . Config::get('web_path') . '/modules/twitter/twitter_update.php');
26
require_once '../../lib/init.php';
27
require_once( Config::get('prefix') . "/modules/twitter/twitteroauth/twitteroauth.php");
31
if(!empty($_SESSION['twitterusername'])) {
32
header('Location: ' . Config::Get('web_path') . '/modules/twitter/twitter_update.php');
33
debug_event("Twitter", "Twitter user has logged in this session.", "5");
36
if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret'])){
37
debug_event("Twitter", "Got all 3 pieces for auth", "5");
39
if( $_SESSION['twitterCount'] < 4 ) {
40
debug_event("Twitter", "Didn't get all 3 auth pieces, going to try again. Try #" . $_SESSION['twitterCount'], "5");
41
$_SESSION['twitterCount']++;
42
header('Location: ' . Config::Get('web_path') . '/modules/twitter/twitter_login.php');
44
debug_event("Twitter", "Failed to auth too many times. Giving up.", "5");
45
header('Location: ' . Config::Get('web_path') );
49
// TwitterOAuth instance, with two new parameters we got in twitter_login.php
50
$twitteroauth = new TwitterOAuth( Config::get('twitter_consumer_key'), Config::get('twitter_consumer_secret'), $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
51
if( !isset($twitteroauth) ) {
52
debug_event("Twitter", "Couldn't create OAuth object.", "5");
53
header('Location: ' . Config::get('web_path'));
55
// Let's request the access token
56
$access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']);
57
if( !isset($access_token) ) {
58
debug_event("Twitter", "Couldn't get access token", "5");
59
header('Location: ' . Config::get('web_path'));
61
// Save it in a session var
62
$_SESSION['access_token'] = $access_token;
65
// Let's get the user's info
66
$user_info = $twitteroauth->get('account/verify_credentials');
68
debug_event("Twttier", "User ID:{$user_info->id}. ScreenName:{$user_info->screen_name}.", "5");
69
debug_event("Twitter", "access token:" . $access_token['oauth_token'], "5");
70
debug_event("Twitter", "access token secret:" . $access_token['oauth_token_secret'], "5");
72
if( isset($user_info->error)) {
73
debug_event("Twitter", "Error verifying credentials", "5");
75
header('Location: ' . Config::get('web_path'));
79
// Let's find the user by its twitterid and ampacheid
80
$idselectquery = "SELECT * FROM twitter_users WHERE oauth_provider = 'twitter' AND oauth_uid = ". $user_info->id . " AND ampache_id = " . $_SESSION['userdata']['uid'];
81
debug_event("Twitter", "Id query: " . $idselectquery, "6");
83
$idselectrun = Dba::read($idselectquery);
84
$result = Dba::fetch_assoc($idselectrun);
86
debug_event("Twitter", "ampache_id: {$_SESSION['userdata']['uid']}", "5");
87
debug_event("Twitter", "oauth_uid: {$user_info->id}", "5");
88
debug_event("Twitter", "oauth_token: {$access_token['oauth_token']}", "5");
89
debug_event("Twitter", "oauth_secret: {$access_token['oauth_token_secret']}", "5");
90
debug_event("Twitter", "username: {$user_info->screen_name}", "5");
92
// If not, let's add it to the database
94
debug_event("Twitter", "First time user. Add them to the DB.", "5");
95
$insert_query ="INSERT INTO twitter_users (ampache_id, oauth_provider, oauth_uid, oauth_token, oauth_secret, username) VALUES ( '{$_SESSION['userdata']['uid']}', 'twitter', '{$user_info->id}', '{$access_token['oauth_token']}', '{$access_token['oauth_token_secret']}', '{$user_info->screen_name}')";
97
debug_event("Twitter", "Insert query: " . $insert_query, "6");
98
$insert_run = Dba::write($insert_query);
100
$select_query = "SELECT * FROM twitter_users WHERE username = '" . $user_info->screen_name . "' AND ampache_id = " . $_SESSION['userdata']['uid'];
101
debug_event("Twitter", "Select query: {$query}", "6");
102
$select_run = Dba::read( $select_query );
103
$result = Dba::fetch_assoc($select_run);
106
debug_event("Twitter", "Update the DB to hold current tokens", "5");
108
$update_query = "UPDATE twitter_users SET oauth_token = '{$access_token['oauth_token']}', oauth_secret = '{$access_token['oauth_token_secret']}' WHERE oauth_provider = 'twitter' AND oauth_uid = {$user_info->id} AND ampache_id = {$_SESSION['userdata']['uid']}";
109
debug_event("Twitter", "update query: " . $update_query, "6");
111
$update_run = Dba::write($update_query);
113
$select_query = "SELECT * FROM twitter_users WHERE username = '" . $user_info->screen_name . "'";
114
debug_event("Twitter", "select query: " . $select_query, "6");
116
$select_run = Dba::read($select_query);
117
$result = Dba::fetch_assoc($select_run);
120
$_SESSION['id'] = $result['id'];
121
$_SESSION['twitterusername'] = $result['username'];
122
$_SESSION['oauth_uid'] = $result['oauth_uid'];
123
$_SESSION['oauth_provider'] = $result['oauth_provider'];
124
$_SESSION['oauth_token'] = $result['oauth_token'];
125
$_SESSION['oauth_secret'] = $result['oauth_secret'];
127
header('Location: ' . Config::get('web_path') . '/modules/twitter/twitter_update.php');