diff options
Diffstat (limited to 'controllers/controllers.php')
-rw-r--r-- | controllers/controllers.php | 197 |
1 files changed, 137 insertions, 60 deletions
diff --git a/controllers/controllers.php b/controllers/controllers.php index 0917315..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) { @@ -234,6 +233,7 @@ $app->get('/review', function() use($app) { } }); + $app->get('/repost', function() use($app) { if($user=require_login($app)) { $params = $app->request()->params(); @@ -394,6 +394,9 @@ $app->post('/settings/save', function() use($app) { $user->micropub_syndicate_field = $params['syndicate_field']; } + if(array_key_exists('weight_unit', $params) && $params['weight_unit']) + $user->weight_unit = $params['weight_unit']; + $user->save(); $app->response()['Content-type'] = 'application/json'; $app->response()->body(json_encode(array( @@ -422,30 +425,14 @@ $app->get('/settings/html-content', function() use($app) { } }); + 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; @@ -465,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; @@ -679,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.')'); @@ -754,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,'@')); } } @@ -768,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; @@ -898,3 +844,134 @@ $app->get('/airport-info', function() use($app){ $app->response()->body(json_encode($response)); } }); + +$app->get('/map-img', function() use($app) { + + $params = $app->request()->params(); + + $app->response()['Content-type'] = 'image/png'; + + $params = [ + 'marker[]' => 'lat:'.$params['lat'].';lng:'.$params['lng'].';icon:small-blue-cutout', + 'basemap' => 'custom', + 'width' => $params['w'], + 'height' => $params['h'], + 'zoom' => $params['z'], + 'attribution' => 'mapbox', + 'tileurl' => Config::$mapTileURL, + 'token' => Config::$atlasToken, + ]; + + $ch = curl_init('https://atlas.p3k.io/map/img'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); + curl_exec($ch); + +}); + +function create_weight(&$user, $weight_num, $weight_unit, $published) { + $micropub_request = array( + 'type' => ['h-entry'], + 'properties' => [ + 'weight' => [[ + 'type' => ['h-measure'], + 'properties' => [ + 'num' => [$weight_num], + 'unit' => [$weight_unit] + ] + ]] + ] + ); + try { + $date = new DateTime($published); + $micropub_request['properties']['published'] = [$date->format('c')]; + } catch(Exception $e) { + } + $r = micropub_post_for_user($user, $micropub_request, null, true); + + return $r; +} + +$app->get('/weight', function() use($app){ + if($user=require_login($app)) { + render('new-weight', array( + 'title' => 'New Weight', + 'unit' => $user->weight_unit + )); + } +}); + +$app->post('/weight', function() use($app) { + if($user=require_login($app)) { + $params = $app->request()->params(); + + $r = create_weight($user, $params['weight_num'], $user->weight_unit, $params['published']); + $location = $r['location']; + + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode(array( + 'location' => $location, + 'error' => $r['error'] + ))); + } +}); + + +function create_exercise(&$user, $activity, $minutes, $heartrate, $published) { + $micropub_request = array( + 'type' => ['h-entry'], + 'properties' => [ + 'workout' => [[ + 'type' => ['h-workout'], + 'properties' => [ + 'activity' => [$activity], + 'duration' => [[ + 'type' => ['h-measure'], + 'properties' => [ + 'num' => [($minutes*60)], + 'unit' => ['second'] + ], + ]], + 'heartrate' => [[ + 'type' => 'h-measure', + 'properties' => [ + 'num' => [$heartrate], + 'unit' => ['bpm'], + ] + ]] + ] + ]] + ] + ); + try { + $date = new DateTime($published); + $micropub_request['properties']['published'] = [$date->format('c')]; + } catch(Exception $e) { + } + $r = micropub_post_for_user($user, $micropub_request, null, true); + + return $r; +} + +$app->get('/exercise', function() use($app){ + if($user=require_login($app)) { + render('new-exercise', array( + 'title' => 'New Exercise', + )); + } +}); + +$app->post('/exercise', function() use($app) { + if($user=require_login($app)) { + $params = $app->request()->params(); + + $r = create_exercise($user, $params['activity'], $params['minutes'], $params['heartrate'], $params['published']); + $location = $r['location']; + + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode(array( + 'location' => $location, + 'error' => $r['error'] + ))); + } +}); |