diff --git a/lib/Settings.class.php b/lib/Settings.class.php index 7a4fb34..c1811f4 100644 --- a/lib/Settings.class.php +++ b/lib/Settings.class.php @@ -35,21 +35,25 @@ class WPStrava_Settings { * This runs after options are saved */ public function maybe_oauth( $value ) { - //redirect only if all the right options are in place - if ( isset( $value[0]['type'] ) && $value[0]['type'] == 'updated' ) { //make sure there were no settings errors - if ( isset( $_POST['option_page'] ) && $_POST['option_page'] == $this->option_page ) { //make sure we're on our settings page - //user is clearing to start-over, don't oauth + // Redirect only if all the right options are in place. + if ( isset( $value[0]['type'] ) && $value[0]['type'] == 'updated' ) { // Make sure there were no settings errors. + if ( isset( $_POST['option_page'] ) && $_POST['option_page'] == $this->option_page ) { // Make sure we're on our settings page. + + // User is clearing to start-over, don't oauth. if ( isset( $_POST['strava_token'] ) && empty( $_POST['strava_token'] ) ) return; - $client_id = get_option( 'strava_client_id' ); - $client_secret = get_option( 'strava_client_secret' ); + // Only re-auth if client ID and secret were shown. + if ( ! empty( $_POST['strava_client_id'] ) && ! empty( $_POST['strava_client_secret'] ) ) { + $client_id = get_option( 'strava_client_id' ); + $client_secret = get_option( 'strava_client_secret' ); - if ( $client_id && $client_secret ) { - $redirect = admin_url( "options-general.php?page={$this->page_name}" ); - $url = "https://www.strava.com/oauth/authorize?client_id={$client_id}&response_type=code&redirect_uri={$redirect}&approval_prompt=force"; - wp_redirect( $url ); - exit(); + if ( $client_id && $client_secret ) { + $redirect = admin_url( "options-general.php?page={$this->page_name}" ); + $url = "https://www.strava.com/oauth/authorize?client_id={$client_id}&response_type=code&redirect_uri={$redirect}&approval_prompt=force"; + wp_redirect( $url ); + exit(); + } } } } @@ -86,7 +90,7 @@ class WPStrava_Settings { public function register_strava_settings() { $this->init(); - add_settings_section( 'strava_api', __( 'Strava API', 'wp-strava' ), array( $this, 'print_api_instructions' ), 'wp-strava' ); //NULL / NULL no section label needed + add_settings_section( 'strava_api', __( 'Strava API', 'wp-strava' ), array( $this, 'print_api_instructions' ), 'wp-strava' ); if ( ! $this->token ) { register_setting( $this->option_page, 'strava_client_id', array( $this, 'sanitize_client_id' ) ); @@ -99,10 +103,14 @@ class WPStrava_Settings { add_settings_field( 'strava_token', __( 'Strava Token', 'wp-strava' ), array( $this, 'print_token_input' ), 'wp-strava', 'strava_api' ); } - register_setting( $this->option_page, 'strava_som', array( $this, 'sanitize_som' ) ); - - add_settings_section( 'strava_options', __( 'Options', 'wp-strava' ), NULL, 'wp-strava' ); + // Google Maps API. + register_setting( $this->option_page, 'strava_gmaps_key', array( $this, 'sanitize_gmaps_key' ) ); + add_settings_section( 'strava_gmaps', __( 'Google Maps', 'wp-strava' ), array( $this, 'print_gmaps_instructions' ), 'wp-strava' ); + add_settings_field( 'strava_gmaps_key', __( 'Static Maps Key', 'wp-strava' ), array( $this, 'print_gmaps_key_input' ), 'wp-strava', 'strava_gmaps' ); + // System of Measurement. + register_setting( $this->option_page, 'strava_som', array( $this, 'sanitize_som' ) ); + add_settings_section( 'strava_options', __( 'Options', 'wp-strava' ), null, 'wp-strava' ); add_settings_field( 'strava_som', __( 'System of Measurement', 'wp-strava' ), array( $this, 'print_som_input' ), 'wp-strava', 'strava_options' ); } @@ -115,7 +123,7 @@ class WPStrava_Settings { $description = 'WP-Strava for ' . $blog_name; printf( __( "

Steps:

    -
  1. Create your API Application/Connection here: %s using the following information:
  2. +
  3. Create your free API Application/Connection here: %s using the following information:
", 'wp-strava' ), $settings_url, $settings_url, $app_name, $site_url, $description, $site_url ); } + public function print_gmaps_instructions() { + $maps_url = 'https://developers.google.com/maps/documentation/static-maps/'; + printf( __( "

Steps:

+
    +
  1. To use Google map images, you must create a Static Maps API Key. Create a free key by going here: %s and clicking Get a Key
  2. +
  3. Once you've created your Google Static Maps API Key, enter the key below. +
", 'wp-strava' ), $maps_url, $maps_url ); + + } + public function print_strava_options() { ?>
@@ -202,6 +220,14 @@ class WPStrava_Settings { } } + public function print_gmaps_key_input() { + ?> diff --git a/lib/StaticMap.class.php b/lib/StaticMap.class.php index 8a3be0b..bb214c9 100644 --- a/lib/StaticMap.class.php +++ b/lib/StaticMap.class.php @@ -1,18 +1,37 @@ settings->gmaps_key; + + // Short circuit if missing key or ride object doesn't have the data we need. + if ( empty( $key ) || empty( $ride->map ) ) { + return ''; + } + + $url = "https://maps.googleapis.com/maps/api/staticmap?maptype=terrain&size={$width}x{$height}&sensor=false&key={$key}&path=color:0xFF0000BF|weight:2|enc:"; $url_len = strlen( $url ); $max_chars = 1865; - if ( $url_len + strlen( $ride->map->polyline ) < $max_chars ) + if ( ! empty( $ride->map->polyline ) && ( $url_len + strlen( $ride->map->polyline ) < $max_chars ) ) { $url .= $ride->map->polyline; - else + } else { $url .= $ride->map->summary_polyline; - - return ""; + } + + return ""; } -} \ No newline at end of file +}