som = WPStrava_SOM::get_som(); parent::__construct( false, 'Strava Latest Map', // Name array( 'description' => __( 'Strava latest ride using static google map image', 'wp-strava' ), ) // Args ); } public function form( $instance ) { // outputs the options form on admin $distance_min = isset( $instance['distance_min'] ) ? esc_attr( $instance['distance_min'] ) : ''; $ride_index_params = isset( $instance['ride_index_params'] ) ? esc_attr( $instance['ride_index_params'] ) : ''; //provide some defaults //$ride_index_params = $ride_index_params ? $ride_index_params : 'athleteId=21'; ?>
athlete->id}"; } */ //$instance['athlete_hash'] = strip_tags( $new_instance['athlete_hash'] ); return $instance; } public function widget( $args, $instance ) { extract( $args ); $ride_index_params = $instance['ride_index_params']; $distance_min = $instance['distance_min']; $rides = $this->getRides( $ride_index_params ); if ( ! empty( $rides ) ): if ( ! empty( $distance_min ) ) $rides = $this->getRidesLongerThan( $rides, $distance_min ); $ride = current( $rides ); $map_deets = $this->getMapDetails( $ride->id ); echo $before_widget; $max = 50; $count = count( $map_deets->latlng ); $mod = (int) ( $count / $max ); $points = array(); for ( $i = 0; $i < $count; $i += $mod ) { $point = $map_deets->latlng[$i]; $points[] = number_format( $point[0],4 ) . ',' . number_format( $point[1],4 ); } $url_points = join( '|', $points ); echo "
'; print_r($map_deets); echo ''; */ echo $after_widget; endif; } private function getRides( $params ) { $data = WPStrava::get_instance()->api->get( 'rides?' . implode( '&', explode( "\n", $params ) ), 1 ); //version 1 if ( isset( $data->rides ) ) return $data->rides; return array(); } private function getRideInfo( $ride_id ) { return WPStrava::get_instance()->api->get( "rides/{$ride_id}" ); } private function getRidesLongerThan( $rides, $dist ) { $meters = $this->som->distance_inverse( $dist ); $long_rides = array(); foreach ( $rides as $ride ) { $ride_info = $this->getRideInfo( $ride->id ); if ( $ride_info->ride->distance > $meters ) { $long_rides[] = $ride_info; } } return $long_rides; } private function getMapDetails( $ride_id ) { $token = WPStrava::get_instance()->settings->token; return WPStrava::get_instance()->api->get( "rides/{$ride_id}/map_details?token={$token}" ); } }