· 7 years ago · Jun 15, 2018, 12:26 PM
1<?php
2/**
3 * @author YAY!Scripting
4 * @package files
5 */
6
7/**
8 * Include Twitter lib
9 */
10require_once 'system/external/twitteroauth/twitteroauth.php';
11
12/** Twitter helper
13 *
14 * This helper can be used for the Twitter REST API
15 *
16 * @name twitter
17 * @package helpers
18 * @subpackage twitter
19 */
20class YSH_Twitter extends YS_Helper
21{
22
23 private $consumer_key;
24 private $consumer_secret;
25 private $callback;
26
27 private $hasSetup = false;
28
29 public function setup($consumer_key, $consumer_secret, $callback)
30 {
31
32 $this->consumer_key = $consumer_key;
33 $this->consumer_secret = $consumer_secret;
34 $this->callback = $callback;
35
36 $this->hasSetup = true;
37
38 }
39
40 public function connectUser($oauth_token, $oauth_token_secret)
41 {
42
43 // check setup
44 if(!$this->hasSetup)
45 throw new HelperException(3, 'oAuth setup required!');
46
47 // create object
48 $object = new TwitterOAuth($this->consumer_key, $this->consumer_secret, $oauth_token, $oauth_token_secret);
49
50 // get creds
51 $object->credentials = $object->get('account/verify_credentials');
52
53 // return
54 return $object;
55
56 }
57
58 public function goToAuth()
59 {
60 // check setup
61 if(!$this->hasSetup)
62 throw new HelperException(3, 'oAuth setup required!');
63
64 // connect
65 $connection = new TwitterOAuth($this->consumer_key, $this->consumer_secret);
66
67 // get request token_get_all
68 $request_token = $connection->getRequestToken($this->callback);
69
70 // check
71 if(!empty($request_token['oauth_token']) && !empty($request_token['oauth_token_secret'])){
72
73 // save tokens for session
74 $_SESSION['oauth_token'] = $token = $request_token['oauth_token'];
75 $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
76
77 $url = $connection->getAuthorizeURL($token);
78
79 // redirect
80 header("Location: ".$url);
81
82 }else{
83
84 throw new HelperException(1, 'RequestToken failed');
85
86 }
87
88 }
89
90 public function registerCallback($oauth_token, $oauth_verifier)
91 {
92
93 // check setup
94 if(!$this->hasSetup)
95 throw new HelperException(3, 'oAuth setup required!');
96
97 // check valid token
98 if($_SESSION['oauth_token'] == $oauth_token){
99
100 // connect
101 $connection = new TwitterOAuth($this->consumer_key, $this->consumer_secret, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
102
103 // delete session
104 $_SESSION['oauth_token'] = null;
105 $_SESSION['oauth_token_secret'] = null;
106
107 // get access token
108 return $connection->getAccessToken($oauth_verifier);
109
110 }else{
111
112 throw new HelperException(2, 'Auth token outdated');
113
114 }
115
116 return false;
117
118 }
119
120}