diff options
Diffstat (limited to 'controllers')
-rw-r--r-- | controllers/auth.php | 104 | ||||
-rw-r--r-- | controllers/controllers.php | 172 |
2 files changed, 1 insertions, 275 deletions
diff --git a/controllers/auth.php b/controllers/auth.php index 50fd15b..9dcc81d 100644 --- a/controllers/auth.php +++ b/controllers/auth.php @@ -1,5 +1,4 @@ <?php -use Abraham\TwitterOAuth\TwitterOAuth; IndieAuth\Client::$clientID = Config::$base_url; IndieAuth\Client::$redirectURL = Config::$base_url.'auth/callback'; @@ -249,107 +248,4 @@ $app->post('/auth/reset', function() use($app) { $app->redirect('/', 302); }); -$app->post('/auth/twitter', function() use($app) { - if(!Config::$twitterClientID) { - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'result' => 'error' - ))); - return; - } - - if($user=require_login($app, false)) { - $params = $app->request()->params(); - // User just auth'd with twitter, store the access token - $user->twitter_access_token = $params['twitter_token']; - $user->twitter_token_secret = $params['twitter_secret']; - $user->save(); - - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'result' => 'ok' - ))); - } else { - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'result' => 'error' - ))); - } -}); - -function getTwitterLoginURL(&$twitter) { - $request_token = $twitter->oauth('oauth/request_token', [ - 'oauth_callback' => Config::$base_url . 'auth/twitter/callback' - ]); - $_SESSION['twitter_auth'] = $request_token; - return $twitter->url('oauth/authorize', ['oauth_token' => $request_token['oauth_token']]); -} - -$app->get('/auth/twitter', function() use($app) { - if(!Config::$twitterClientID) { - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'result' => 'error' - ))); - return; - } - - $params = $app->request()->params(); - if($user=require_login($app, false)) { - - // If there is an existing Twitter token, check if it is valid - // Otherwise, generate a Twitter login link - $twitter_login_url = false; - if(array_key_exists('login', $params)) { - $twitter = new TwitterOAuth(Config::$twitterClientID, Config::$twitterClientSecret); - $twitter_login_url = getTwitterLoginURL($twitter); - } else { - $twitter = new TwitterOAuth(Config::$twitterClientID, Config::$twitterClientSecret, - $user->twitter_access_token, $user->twitter_token_secret); - - if($user->twitter_access_token) { - if($twitter->get('account/verify_credentials')) { - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'result' => 'ok' - ))); - return; - } else { - // If the existing twitter token is not valid, generate a login link - $twitter_login_url = getTwitterLoginURL($twitter); - } - } else { - $twitter_login_url = getTwitterLoginURL($twitter); - } - } - - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'url' => $twitter_login_url - ))); - - } else { - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode(array( - 'result' => 'error' - ))); - } -}); - -$app->get('/auth/twitter/callback', function() use($app) { - if($user=require_login($app)) { - $params = $app->request()->params(); - - $twitter = new TwitterOAuth(Config::$twitterClientID, Config::$twitterClientSecret, - $_SESSION['twitter_auth']['oauth_token'], $_SESSION['twitter_auth']['oauth_token_secret']); - $credentials = $twitter->oauth('oauth/access_token', ['oauth_verifier' => $params['oauth_verifier']]); - - $user->twitter_access_token = $credentials['oauth_token']; - $user->twitter_token_secret = $credentials['oauth_token_secret']; - $user->twitter_username = $credentials['screen_name']; - $user->save(); - - $app->redirect('/settings'); - } -}); diff --git a/controllers/controllers.php b/controllers/controllers.php index 4feba3f..153c9e2 100644 --- a/controllers/controllers.php +++ b/controllers/controllers.php @@ -1,5 +1,4 @@ <?php -use Abraham\TwitterOAuth\TwitterOAuth; use IndieWeb\DateFormatter; function require_login(&$app, $redirect=true) { @@ -235,23 +234,6 @@ $app->get('/review', function() use($app) { }); -$app->get('/twitter', function() use($app) { - if($user=require_login($app)) { - $params = $app->request()->params(); - - $tweet_url = ''; - - if(array_key_exists('tweet_url', $params)) - $tweet_url = $params['tweet_url']; - - render('twitter', array( - 'title' => 'Import Tweet', - 'tweet_url' => $tweet_url, - 'authorizing' => false - )); - } -}); - $app->get('/repost', function() use($app) { if($user=require_login($app)) { $params = $app->request()->params(); @@ -443,125 +425,14 @@ $app->get('/settings/html-content', function() use($app) { } }); -$app->post('/twitter/preview', function() use($app) { - if($user=require_login($app)) { - $params = $app->request()->params(); - - if($user->twitter_access_token) { - $xray_opts['twitter_api_key'] = Config::$twitterClientID; - $xray_opts['twitter_api_secret'] = Config::$twitterClientSecret; - $xray_opts['twitter_access_token'] = $user->twitter_access_token; - $xray_opts['twitter_access_token_secret'] = $user->twitter_token_secret; - } - - $tweet_url = $params['tweet_url']; - - // Pass to X-Ray to download all the twitter data in a useful format - $xray = new p3k\XRay(); - $xray->http = new p3k\HTTP('Quill ('.Config::$base_url.')'); - $data = $xray->parse($tweet_url, $xray_opts); - - $postdata = tweet_to_micropub_request($data['data']); - - $response = [ - 'json' => json_encode($postdata, JSON_PRETTY_PRINT+JSON_UNESCAPED_SLASHES) - ]; - - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode($response)); - } -}); - -$app->post('/twitter', function() use($app) { - if($user=require_login($app)) { - $params = $app->request()->params(); - - if($user->twitter_access_token) { - $xray_opts['twitter_api_key'] = Config::$twitterClientID; - $xray_opts['twitter_api_secret'] = Config::$twitterClientSecret; - $xray_opts['twitter_access_token'] = $user->twitter_access_token; - $xray_opts['twitter_access_token_secret'] = $user->twitter_token_secret; - } - - $tweet_url = $params['tweet_url']; - - // Pass to X-Ray to download all the twitter data in a useful format - $xray = new p3k\XRay(); - $xray->http = new p3k\HTTP('Quill ('.Config::$base_url.')'); - $data = $xray->parse($tweet_url, $xray_opts); - - $location = null; - - if(isset($data['data']) && $data['data']['type'] == 'entry') { - $tweet = $data['data']; - - $postdata = tweet_to_micropub_request($tweet); - - $r = micropub_post_for_user($user, $postdata, null, true); - - $app->response()['Content-type'] = 'application/json'; - $app->response()->body(json_encode([ - 'location' => (isset($r['location']) && $r['location'] ? Mf2\resolveUrl($user->micropub_endpoint, $r['location']) : null), - 'error' => $r['error'], - 'response' => $r['response'] - ])); - } else { - $app->response()['Content-type'] = 'application/json'; - - $app->response()->body(json_encode([ - 'location' => null, - 'error' => 'Error fetching tweet', - ])); - } - } -}); - -function tweet_to_micropub_request($tweet) { - // Convert to a micropub post - $postdata = [ - 'type' => ['h-entry'], - 'properties' => [ - 'content' => [$tweet['content']['text']], - 'published' => [$tweet['published']], - 'syndication' => [$tweet['url']], - ] - ]; - if(isset($tweet['in-reply-to'])) - $postdata['properties']['in-reply-to'] = $tweet['in-reply-to']; - if(isset($tweet['category'])) - $postdata['properties']['category'] = $tweet['category']; - if(isset($tweet['photo'])) - $postdata['properties']['photo'] = $tweet['photo']; - if(isset($tweet['video'])) - $postdata['properties']['video'] = $tweet['video']; - - return $postdata; -} function create_favorite(&$user, $url) { $tweet_id = false; - $twitter_syndication = false; - - // POSSE favorites to Twitter - if($user->twitter_access_token && preg_match('/https?:\/\/(?:www\.)?twitter\.com\/[^\/]+\/status(?:es)?\/(\d+)/', $url, $match)) { - $tweet_id = $match[1]; - $twitter = new TwitterOAuth(Config::$twitterClientID, Config::$twitterClientSecret, - $user->twitter_access_token, $user->twitter_token_secret); - $result = $twitter->post('favorites/create', array( - 'id' => $tweet_id - )); - if(property_exists($result, 'id_str')) { - $twitter_syndication = 'https://twitter.com/'.$user->twitter_username.'/status/'.$result->id_str; - } - } $micropub_request = array( 'like-of' => $url ); - if($twitter_syndication) { - $micropub_request['syndication'] = $twitter_syndication; - } $r = micropub_post_for_user($user, $micropub_request); return $r; @@ -581,25 +452,9 @@ function edit_favorite(&$user, $post_url, $like_of) { function create_repost(&$user, $url) { - $tweet_id = false; - $twitter_syndication = false; - - if($user->twitter_access_token && preg_match('/https?:\/\/(?:www\.)?twitter\.com\/[^\/]+\/status(?:es)?\/(\d+)/', $url, $match)) { - $tweet_id = $match[1]; - $twitter = new TwitterOAuth(Config::$twitterClientID, Config::$twitterClientSecret, - $user->twitter_access_token, $user->twitter_token_secret); - $result = $twitter->post('statuses/retweet/'.$tweet_id); - if(property_exists($result, 'id_str')) { - $twitter_syndication = 'https://twitter.com/'.$user->twitter_username.'/status/'.$result->id_str; - } - } - $micropub_request = array( 'repost-of' => $url ); - if($twitter_syndication) { - $micropub_request['syndication'] = $twitter_syndication; - } $r = micropub_post_for_user($user, $micropub_request); return $r; @@ -795,29 +650,10 @@ $app->get('/reply/preview', function() use($app) { $reply_url = trim($params['url']); - if(preg_match('/twtr\.io\/([0-9a-z]+)/i', $reply_url, $match)) { - $twtr = 'https://twitter.com/_/status/' . sxg_to_num($match[1]); - $ch = curl_init($twtr); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - curl_exec($ch); - $expanded_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); - if($expanded_url) $reply_url = $expanded_url; - } - $entry = false; $xray_opts = []; - if(preg_match('/twitter\.com\/(?:[^\/]+)\/statuse?s?\/(.+)/', $reply_url, $match)) { - if($user->twitter_access_token) { - $xray_opts['twitter_api_key'] = Config::$twitterClientID; - $xray_opts['twitter_api_secret'] = Config::$twitterClientSecret; - $xray_opts['twitter_access_token'] = $user->twitter_access_token; - $xray_opts['twitter_access_token_secret'] = $user->twitter_token_secret; - } - } - // Pass to X-Ray to see if it can expand the entry $xray = new p3k\XRay(); $xray->http = new p3k\HTTP('Quill ('.Config::$base_url.')'); @@ -870,7 +706,7 @@ $app->get('/reply/preview', function() use($app) { if(isset($entry['content']) && $entry['content'] && isset($entry['content']['text'])) { if(preg_match_all('/(^|(?<=[\s\/]))@([a-z0-9_]+([a-z0-9_\.]*)?)/i', $entry['content']['text'], $matches)) { foreach($matches[0] as $nick) { - if(trim($nick,'@') != $user->twitter_username && trim($nick,'@') != display_url($user->url)) + if(trim($nick,'@') != display_url($user->url)) $mentions[] = strtolower(trim($nick,'@')); } } @@ -884,12 +720,6 @@ $app->get('/reply/preview', function() use($app) { foreach($entry['syndication'] as $s) { $host = parse_url($s, PHP_URL_HOST); switch($host) { - case 'twitter.com': - case 'www.twitter.com': - $icon = 'twitter.ico'; break; - case 'facebook.com': - case 'www.facebook.com': - $icon = 'facebook.ico'; break; case 'github.com': case 'www.github.com': $icon = 'github.ico'; break; |