From 17ff8aec3a0d2e0a520849c42c40a154a0831495 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Mon, 22 May 2023 15:37:34 -0500 Subject: initial commit --- index.php | 286 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 286 insertions(+) create mode 100644 index.php (limited to 'index.php') diff --git a/index.php b/index.php new file mode 100644 index 0000000..ec25249 --- /dev/null +++ b/index.php @@ -0,0 +1,286 @@ +getRequestHandler(); + $requestHandler->setBaseUrl('https://www.tumblr.com/'); + // Check if the user has already authenticated + if (not_blank($_SESSION['perm_token']) && not_blank($_SESSION['perm_secret'])) { + $token = $_SESSION['perm_token']; + $token_secret = $_SESSION['perm_secret']; + } // Check if the user was here earlier by checking cookies + else if (not_blank($_COOKIE['perm_token']) && not_blank($_COOKIE['perm_secret'])) { + $token = $_COOKIE['perm_token']; + $token_secret = $_COOKIE['perm_secret']; + } // Check if this is the user's first visit + else if (!isset($_GET['oauth_verifier'])) { + // Grab the oauth token + $resp = $requestHandler->request('POST', 'oauth/request_token', array()); + $out = $result = $resp->body; + $data = array(); + parse_str($out, $data); + // Save temporary tokens to session + $_SESSION['tmp_token'] = $data['oauth_token']; + $_SESSION['tmp_secret'] = $data['oauth_token_secret']; + // Redirect user to Tumblr auth page + session_regenerate_id(true); + $header_url = 'https://www.tumblr.com/oauth/authorize?oauth_token=' . $data['oauth_token']; + header('Location: ' . $header_url); + die(); + } // Check if the user was just sent back from the Tumblr authentication site + else { + $verifier = $_GET['oauth_verifier']; + // Use the stored temporary tokens + $client->setToken($_SESSION['tmp_token'], $_SESSION['tmp_secret']); + // Access the permanent tokens + $resp = $requestHandler->request('POST', 'oauth/access_token', array('oauth_verifier' => $verifier)); + $out = $result = $resp->body; + $data = array(); + parse_str($out, $data); + // Set permanent tokens + $token = $data['oauth_token']; + $token_secret = $data['oauth_token_secret'];; + $_SESSION['perm_token'] = $data['oauth_token']; + $_SESSION['perm_secret'] = $data['oauth_token_secret']; + // Set cookies in case the user comes back later + setcookie("perm_token", $_SESSION['perm_token']); + setcookie("perm_secret", $_SESSION['perm_secret']); + // Redirect user to homepage for a clean URL + session_regenerate_id(true); + $header_url = 'https://michelangelo.example.com'; + header('Location: ' . $header_url); + die(); + } + // Authenticate via OAuth + // Send the client back to the function + return new Tumblr\API\Client( + $consumer_key, + $consumer_secret, + $token, + $token_secret + ); +} + +function get_dashboard_posts($client, $post_start, $limit, $post_type = 'photo'): string +{ + // Call the function for dashboard posts + $dashboard_posts = $client->getDashboardPosts(array('limit' => $limit, 'offset' => $post_start, 'type' => $post_type)); + // Open the row that will hold all photos/videos + $post_row = '
'; + // For each post returned by Tumblr, create the HTML content + foreach ($dashboard_posts->posts as $post) { + if ($post->type == 'photo') { + // Get post variables + $caption = $post->caption; + $id = $post->id_string; + $type = $post->type; + $url = $post->photos[0]->original_size->url; + // Set up post HTML + $post_row .= << +
+ + + +
+
+ EOD; + } else if ($post->type == 'video') { + // Get post variables + $caption = $post->caption; + $id = $post->id_string; + $thumbnail = $post->thumbnail_url; + $type = $post->type; + $url = $post->video_url; + // Set up post HTML + $post_row .= << +
+ + + +
+ + EOD; + } + } + $post_row .= ''; + return $post_row; +} + +function get_tagged_posts($client, $tag): string +{ + // Call the function for posts that match the search query + $tagged_posts = $client->getTaggedPosts($tag); + // Open the row that will hold all photos/videos + $post_row = '
'; + // For each post returned by Tumblr, create the HTML content + foreach ($tagged_posts as $post) { + if ($post->type == 'photo') { + // Get post variables + $caption = $post->caption; + $id = $post->id_string; + $type = $post->type; + $url = $post->photos[0]->original_size->url; + // Set up post HTML + $post_row .= << +
+ + + +
+
+ EOD; + } else if ($post->type == 'video') { + // Get post variables + $caption = $post->caption; + $id = $post->id_string; + $thumbnail = $post->thumbnail_url; + $type = $post->type; + $url = $post->permalink_url; + // Set up post HTML + $post_row .= << +
+ + + +
+ + EOD; + } + } + $post_row .= ''; + return $post_row; +} + +function gallery($params = null) +{ + // Authenticate the current user + $client = authentication(); + + foreach ($client->getUserInfo()->user->blogs as $blog) { + $blog_name = $blog->name; + } + + // Get current page number & calculate posts to request + $page_num = (int)substr($params[0], 0, 2); + if (!is_null($params) && is_numeric($page_num)) { + $page = $page_num; + } else { + $page = 1; + } + $post_start = (($page - 1) * 20) + 1; + $limit = 20; + // Check for specific post type in the URL + if (not_blank($_GET['post_type'])) { + $post_type = $_GET['post_type']; + } else { + $post_type = 'photo'; + } + // Call the get_dashboard_posts function and load some posts! + $posts = get_dashboard_posts($client, $post_start, $limit, $post_type); + // Set page variables + $page_title = 'Michelangelo'; + $header = $blog_name; + // Create page navigation + $page_next = $page + 1; + $page_prev = $page - 1; + $disabled = ''; + if ($page <= 1) { + $disabled = 'disabled'; + } else { + $page_item = << + $page_prev + + EOD; + } + $page_nav = << + + + EOD; + // Feed all these variables to the template + require 'template.php'; +} + +function search($params) +{ + // Authenticate the current user + $client = authentication(); + // Get search query + $query = $params[0]; + // Call the get_dashboard_posts function and load some posts! + $posts = get_tagged_posts($client, $query); + // Set page variables + $page_title = 'Search | Michelangelo'; + $header = 'Search Results for "' . $query . '"'; + // Feed all these variables to the template + require 'template.php'; +} + +function robots() +{ + header('Content-type: text/plain'); + echo 'User-agent: *'; + echo 'Disallow: /search/'; + echo 'Disallow: /page/'; + die(); +} -- cgit v1.2.3-70-g09d2