Campustream 1.0
A social network MQP for WPI
application/controllers/twitter.php
Go to the documentation of this file.
00001 <?
00002 include_once $GLOBALS['APPROOT'] . 'application/lib/twitteroauth/twitteroauth.php';
00003 
00008 class Twitter_Controller extends Controller {
00009         public $enable_session = true;
00010         
00015         public function new_action() {
00016                 if (!$this->session->get('authenticated')) {
00017                         return Hub::redirect('/login');
00018                 }
00019                 
00020                 $twitter = twitter::api();
00021                 $request_token = $twitter->getRequestToken($GLOBALS['TWITTER_CALLBACK']);
00022                 
00023                 $this->session->set('oauth_token', $request_token['oauth_token']);
00024                 $this->session->set('oauth_secret', $request_token['oauth_token_secret']);
00025                 
00026                 switch ($twitter->http_code) {
00027                         case 200:
00028                                 if (isset($_GET['r'])) {
00029                                         $this->session->set('redirect', $_GET['r']);
00030                                 }
00031                                 
00032                                 $url = $twitter->getAuthorizeURL($this->session->get('oauth_token'));
00033                                 Hub::redirect($url);
00034                                 break;
00035                         default:
00036                                 echo "Error connecting with Twitter, please try again! Error code: {$twitter->http_code}";
00037                 }
00038         }
00039         
00044         public function create() {
00045                 if (!$this->session->get('authenticated')) {
00046                         return Hub::redirect('/login');
00047                 }
00048                 
00049                 if (isset($_REQUEST['oauth_token']) && $this->session->get('oauth_token') !== $_REQUEST['oauth_token']) {
00050                         $this->session->set('oauth_token', null);
00051                         $this->session->set('oauth_secret', null);
00052                         
00053                         echo "Old OAuth token, please try signing in again.";
00054                         return false;
00055                 }
00056                 
00057                 $oauth_token = $this->session->get('oauth_token');
00058                 $oauth_secret = $this->session->get('oauth_secret');
00059                 
00060                 $twitter = new TwitterOAuth($GLOBALS['TWITTER_CONSUMER_KEY'], $GLOBALS['TWITTER_CONSUMER_SECRET'], $oauth_token, $oauth_secret);
00061                 $access_token = $twitter->getAccessToken($_REQUEST['oauth_verifier']);
00062                 
00063                 $this->session->set('oauth_token', false);
00064                 $this->session->set('oauth_secret', false);
00065                 
00066                 $user = sess::getUser();
00067                 $tweeter = $twitter->get('account/verify_credentials');
00068                 
00069                 $usertwitter = null;
00070                 if ($user->has_twitter()) {
00071                         $usertwitter = $user->twitter();
00072                 } else {
00073                         $usertwitter = new Usertwitter_Model();
00074                         $usertwitter->user_id = $user->id;
00075                         $usertwitter->twitter_id = $tweeter->id;
00076                 }
00077                 
00078                 $usertwitter->oauth_token = $access_token['oauth_token'];
00079                 $usertwitter->oauth_secret = $access_token['oauth_token_secret'];
00080                 
00081                 $usertwitter->username          = $tweeter->screen_name;
00082                 $usertwitter->name                      = $tweeter->name;
00083                 $usertwitter->website           = $tweeter->url;
00084                 $usertwitter->bio                       = $tweeter->description;
00085                 $usertwitter->location          = $tweeter->location;
00086                 $usertwitter->avatar_url        = $tweeter->profile_image_url;
00087                 $usertwitter->geo_enabled       = $tweeter->geo_enabled;
00088                 $usertwitter->utc_offset        = $tweeter->utc_offset;
00089                 
00090                 $usertwitter->profile_background_color     = $tweeter->profile_background_color;
00091                 $usertwitter->profile_text_color           = $tweeter->profile_text_color;
00092                 $usertwitter->profile_link_color           = $tweeter->profile_link_color;
00093                 $usertwitter->profile_sidebar_fill_color   = $tweeter->profile_sidebar_fill_color;
00094                 $usertwitter->profile_sidebar_border_color = $tweeter->profile_sidebar_border_color;
00095                 $usertwitter->profile_background_image_url = $tweeter->profile_background_image_url;
00096                 $usertwitter->profile_background_tile      = 0;
00097                 if($tweeter->profile_background_tile) { $usertwitter->profile_background_tile = 1; }
00098                 
00099                 $usertwitter->save();
00100                 
00101                 $user->twitter = $usertwitter;
00102                 
00103                 if ($this->session->get('redirect')) {
00104                         $redirect = $this->session->get('redirect');
00105                         $this->session->set('redirect', false);
00106                         
00107                         Hub::redirect($redirect);
00108                 } else {
00109                         Hub::redirect('/');
00110                 }
00111         }
00112         
00116         public function destroy() {
00117                 if (!$this->session->get('authenticated')) {
00118                         return Hub::redirect('/login');
00119                 }
00120                 
00121                 $user = sess::getUser();
00122                 
00123                 if (!isset($_GET['s']) || $_GET['s'] != md5('zOmg4tehcoolz!' . $user->username) || !$user->has_twitter()) {
00124                         return Hub::redirect('/settings/services');
00125                 }
00126 
00127                 $user->twitter()->delete();
00128                 
00129                 Hub::redirect('/settings/services');
00130         }
00131 }