function __construct() { parent::__construct(); global $photonic_picasa_client_id, $photonic_picasa_client_secret, $photonic_picasa_disable_title_link; $this->client_id = $photonic_picasa_client_id; $this->client_secret = $photonic_picasa_client_secret; $this->provider = 'picasa'; $this->oauth_version = '2.0'; $this->response_type = 'code'; $this->scope = 'https://picasaweb.google.com/data/'; $this->link_lightbox_title = empty($photonic_picasa_disable_title_link); $cookie = Photonic::parse_cookie(); global $photonic_picasa_allow_oauth; $this->oauth_done = false; if ($photonic_picasa_allow_oauth && isset($cookie['picasa']) && isset($cookie['picasa']['oauth_token']) && isset($cookie['picasa']['oauth_refresh_token'])) { // OAuth2, so no Access token secret if ($this->is_token_expired($cookie['picasa'])) { $this->refresh_token($cookie['picasa']['oauth_refresh_token']); $cookie = Photonic::parse_cookie(); // Refresh the cookie object based on the results of the refresh token if ($this->is_token_expired($cookie['picasa'])) { // Tried refreshing, but didn't work $this->oauth_done = false; } else { $this->oauth_done = true; } } else { $this->oauth_done = true; } } else { if (!isset($cookie['picasa']) || !isset($cookie['picasa']['oauth_token']) || !isset($cookie['picasa']['oauth_refresh_token'])) { $this->oauth_done = false; } } }
protected function make_call($query_url, $display_what, $columns, $thumb_size = 75, $auth_required = false) { global $photonic_instagram_client_id; $ret = ''; $query = $query_url; if (substr($query, -1, 1) != '&' && !stripos($query, '?')) { $query .= '?'; } else { if (substr($query, -1, 1) != '&' && stripos($query, '?')) { $query .= '&'; } } if ($auth_required) { $cookie = Photonic::parse_cookie(); if (isset($cookie['instagram']) && !$this->is_token_expired($cookie['instagram'])) { $query .= 'access_token=' . $cookie['instagram']['oauth_token']; } else { return __("Please login to see this content.", 'photonic'); } } else { $query .= 'client_id=' . $photonic_instagram_client_id; } $response = wp_remote_request($query, array('sslverify' => false)); $url = ''; if ($display_what == 'single-media') { $base_url = $this->get_normalized_http_url($query); $parameters = $this->parse_parameters(substr($query, strlen($base_url) + 1)); if (isset($parameters['url'])) { $url = $parameters['url']; } } if (!is_wp_error($response)) { if (isset($response['response']) && isset($response['response']['code'])) { if ($response['response']['code'] == 200) { $body = json_decode($response['body']); if (isset($body->data) && $display_what != 'single-media') { $data = $body->data; $this->gallery_index++; switch ($display_what) { case 'users': $ret .= $this->process_users($data, $columns, $thumb_size); break; case 'media': default: $ret .= $this->process_media($data, $columns, $thumb_size); break; } } else { if ($display_what == 'single-media') { $ret .= $this->process_single_media($body, $url); } else { return __('No data returned. Unknown error', 'photonic'); } } } else { if (isset($response['body'])) { $body = json_decode($response['body']); if (isset($body->meta) && isset($body->meta->error_message)) { return $body->meta->error_message; } else { return __('Unknown error', 'photonic'); } } else { if (isset($response['response']['message'])) { return $response['response']['message']; } else { return __('Unknown error', 'photonic'); } } } } } else { return __('There was a problem connecting. Please try back after some time.', 'photonic'); } return $ret; }
/** * Checks if authentication has been enabled and the user has authenticated. If so, it signs the call, then adds the additional parameters to it. * This method also attaches the oauth_signature to the parameters. * * @param $api_method * @param $method * @param $parameters * @return mixed */ public function sign_call($api_method, $method, $parameters) { $allow_oauth = 'photonic_' . $this->provider . '_allow_oauth'; global ${$allow_oauth}; if (${$allow_oauth}) { $cookie = Photonic::parse_cookie(); if (isset($cookie[$this->provider]) && isset($cookie[$this->provider]['oauth_token']) && isset($cookie[$this->provider]['oauth_token_secret']) && isset($cookie[$this->provider]['oauth_token_type']) && $cookie[$this->provider]['oauth_token_type'] == 'access') { $token = array('oauth_token' => $cookie[$this->provider]['oauth_token'], 'oauth_token_secret' => $cookie[$this->provider]['oauth_token_secret']); $this->nonce = $this->nonce(); $this->oauth_timestamp = time(); $signature = $this->generate_signature($api_method, $parameters, $method, $token); if (isset($this->signature_parameters) && isset($this->signature_parameters['parameters'])) { $this->signature_parameters['parameters']['oauth_signature'] = $signature; return $this->signature_parameters['parameters']; } } } return $parameters; }
/** * Checks if a user has authenticated a particular provider's services. When this is invoked we don't know if the page has * a Flickr / 500px / SmugMug gallery, so we just invoke it and set some global variables. * * @return mixed */ function check_authentication() { if (is_admin()) { return; } global $photonic_flickr_allow_oauth, $photonic_500px_allow_oauth, $photonic_smug_allow_oauth, $photonic_picasa_allow_oauth; if (!$photonic_flickr_allow_oauth && !$photonic_500px_allow_oauth && !$photonic_smug_allow_oauth && !$photonic_picasa_allow_oauth) { return; } global $photonic_flickr_oauth_done, $photonic_500px_oauth_done, $photonic_smug_oauth_done; $photonic_flickr_oauth_done = $photonic_500px_oauth_done = $photonic_smug_oauth_done = false; $cookie = Photonic::parse_cookie(); if ($photonic_flickr_allow_oauth && isset($cookie['flickr']) && isset($cookie['flickr']['oauth_token']) && isset($cookie['flickr']['oauth_token_secret'])) { global $photonic_flickr_gallery; if (!isset($photonic_flickr_gallery)) { $photonic_flickr_gallery = new Photonic_Flickr_Processor(); } $current_token = array('oauth_token' => $cookie['flickr']['oauth_token'], 'oauth_token_secret' => $cookie['flickr']['oauth_token_secret']); if (isset($_REQUEST['oauth_verifier']) && isset($_REQUEST['oauth_token'])) { $current_token['oauth_token'] = $_REQUEST['oauth_token']; $current_token['oauth_verifier'] = $_REQUEST['oauth_verifier']; $new_token = $photonic_flickr_gallery->get_access_token($current_token); if (isset($new_token['oauth_token']) && isset($new_token['oauth_token_secret'])) { $photonic_flickr_oauth_done = true; $redirect = remove_query_arg(array('oauth_token', 'oauth_verifier')); wp_redirect($redirect); exit; } } else { if (isset($cookie['flickr']['oauth_token_type']) && $cookie['flickr']['oauth_token_type'] == 'access') { $access_token_response = $photonic_flickr_gallery->check_access_token($current_token); if (is_wp_error($access_token_response)) { $photonic_flickr_gallery->is_server_down = true; } $photonic_flickr_oauth_done = $photonic_flickr_gallery->is_access_token_valid($access_token_response); } } } if ($photonic_500px_allow_oauth && isset($cookie['500px']) && isset($cookie['500px']['oauth_token']) && isset($cookie['500px']['oauth_token_secret'])) { global $photonic_500px_gallery; if (!isset($photonic_500px_gallery)) { $photonic_500px_gallery = new Photonic_500px_Processor(); } $current_token = array('oauth_token' => $cookie['500px']['oauth_token'], 'oauth_token_secret' => $cookie['500px']['oauth_token_secret']); if (isset($_REQUEST['oauth_verifier']) && isset($_REQUEST['oauth_token'])) { $current_token['oauth_token'] = $_REQUEST['oauth_token']; $current_token['oauth_verifier'] = $_REQUEST['oauth_verifier']; $new_token = $photonic_500px_gallery->get_access_token($current_token); if (isset($new_token['oauth_token']) && isset($new_token['oauth_token_secret'])) { // Strip out the token and the verifier from the callback URL and send the user to the callback URL. $photonic_500px_oauth_done = true; $redirect = remove_query_arg(array('oauth_token', 'oauth_verifier')); wp_redirect($redirect); exit; } } else { if (isset($cookie['500px']['oauth_token_type']) && $cookie['500px']['oauth_token_type'] == 'access') { $access_token_response = $photonic_500px_gallery->check_access_token($current_token); if (is_wp_error($access_token_response)) { $photonic_500px_gallery->is_server_down = true; } $photonic_500px_oauth_done = $photonic_500px_gallery->is_access_token_valid($access_token_response); } } } if ($photonic_smug_allow_oauth && isset($cookie['smug']) && isset($cookie['smug']['oauth_token']) && isset($cookie['smug']['oauth_token_secret'])) { global $photonic_smugmug_gallery; if (!isset($photonic_smugmug_gallery)) { $photonic_smugmug_gallery = new Photonic_SmugMug_Processor(); } $current_token = array('oauth_token' => $cookie['smug']['oauth_token'], 'oauth_token_secret' => $cookie['smug']['oauth_token_secret']); if (!$photonic_smug_oauth_done && (isset($cookie['smug']['oauth_token_type']) && $cookie['smug']['oauth_token_type'] == 'request' || !isset($cookie['smug']['oauth_token_type']))) { $new_token = $photonic_smugmug_gallery->get_access_token($current_token); if (isset($new_token['oauth_token']) && isset($new_token['oauth_token_secret'])) { $access_token_response = $photonic_smugmug_gallery->check_access_token($new_token); if (is_wp_error($access_token_response)) { $photonic_smugmug_gallery->is_server_down = true; } $photonic_smug_oauth_done = $photonic_smugmug_gallery->is_access_token_valid($access_token_response); } } else { if (isset($cookie['smug']['oauth_token_type']) && $cookie['smug']['oauth_token_type'] == 'access') { $access_token_response = $photonic_smugmug_gallery->check_access_token($current_token); if (is_wp_error($access_token_response)) { $photonic_smugmug_gallery->is_server_down = true; } $photonic_smug_oauth_done = $photonic_smugmug_gallery->is_access_token_valid($access_token_response); } } } if (isset($photonic_picasa_allow_oauth)) { global $photonic_picasa_gallery; if (!isset($photonic_picasa_gallery)) { $photonic_picasa_gallery = new Photonic_Picasa_Processor(); } } if (isset($photonic_instagram_allow_oauth)) { global $photonic_instagram_gallery; if (!isset($photonic_instagram_gallery)) { $photonic_instagram_gallery = new Photonic_Instagram_Processor(); } } }