summaryrefslogtreecommitdiff
path: root/twitter.php
blob: 869cb08a99f43ae40f129810b9549364f05b610f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
	require_once "functions.php";
	require_once "sessions.php";
	require_once "sanity_check.php";
	require_once "config.php";
	require_once "db.php";
	require_once "lib/twitteroauth/twitteroauth.php";
	
	$link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);	

	init_connection($link);	
	login_sequence($link);
	
	$owner_uid = $_SESSION["uid"];
	$op = $_REQUEST['op'];

	if (!SINGLE_USER_MODE && !$_SESSION['uid']) { 
		render_login_form($link);
		exit;
	}

	$callback_url = get_self_url_prefix() . "/twitter.php?op=callback";

	if ($op == 'clear') {
		/* Remove no longer needed request tokens */
		unset($_SESSION['oauth_token']);
		unset($_SESSION['oauth_token_secret']);
		unset($_SESSION['access_token']);

		header("Location: twitter.php");
		return;
	}

	if ($op == 'callback') {
		/* If the oauth_token is old redirect to the connect page. */
		if (isset($_REQUEST['oauth_token']) && 
				$_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) {

		  $_SESSION['oauth_status'] = 'oldtoken';
		  header('Location: twitter.php?op=clear');
		  return;
		}

		/* Create TwitteroAuth object with app key/secret and token key/secret from default phase */
		$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);

		/* Request access tokens from twitter */
		$access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);

		/* If HTTP response is 200 continue otherwise send to connect page to retry */
		if ($connection->http_code == 200) {
			$access_token = db_escape_string(json_encode($access_token));

			db_query($link, "UPDATE ttrss_users SET twitter_oauth = '$access_token'
				WHERE id = ".$_SESSION['uid']);

		} else {
			header('Location: twitter.php?op=clear');
			return;
		}

	}

	if ($op == 'register') {

		/* Build TwitterOAuth object with client credentials. */
		$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);

		/* Get temporary credentials. */
		$request_token = $connection->getRequestToken($callback_url);
		
		/* Save temporary credentials to session. */
		$_SESSION['oauth_token'] = $token = $request_token['oauth_token'];
		$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

		if ($connection->http_code == 200) {
		    $url = $connection->getAuthorizeURL($token);
			 header('Location: ' . $url); 
			 return;
		}
	}
?>

<html>
<head>
<title>Register with Twitter</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="utility.css">
</head>

<body>

<h1><?php echo __('Register with Twitter') ?></h1>

<?php if ($op == 'register') { ?>

<p><?php print_error(__('Could not connect to Twitter. Refresh the page or try again later.')) ?></p>

<?php } else if ($op == 'callback') { ?>

	<?php print_notice(__('Congratulations! You have successfully registered with Twitter.')) ?>
		</p>

	<form method="GET" action="prefs.php">
		<input type="hidden" name="tab" value="feedConfig">
		<button type="submit"><?php echo __('Return to Tiny Tiny RSS') ?></button>
	</form>

<?php } else { ?>

	<form method="GET" action="twitter.php" style='display : inline'>
		<input type="hidden" name="op" value="register">
		<button type="submit"><?php echo __('Register') ?></button>
	</form>

	<form method="GET" action="prefs.php" style='display : inline'>
		<input type="hidden" name="tab" value="feedConfig">
		<button type="submit"><?php echo __('Return to Tiny Tiny RSS') ?></button>
	</form>

<?php } ?>


</body>
</html>