* @since 2.2.0 */ public function get_html( $atts ) { $defaults = array( 'id' => 0, 'som' => WPStrava::get_instance()->settings->som, 'map_width' => '480', 'map_height' => '320', 'client_id' => WPStrava::get_instance()->settings->get_default_id(), 'markers' => false, 'image_only' => false, ); $atts = wp_parse_args( $atts, $defaults ); /* Make sure boolean values are actually boolean * @see https://wordpress.stackexchange.com/a/119299 */ $atts['markers'] = filter_var( $atts['markers'], FILTER_VALIDATE_BOOLEAN ); $atts['image_only'] = filter_var( $atts['image_only'], FILTER_VALIDATE_BOOLEAN ); $activity = WPStrava::get_instance()->activity; $activity_details = null; try { $activity_details = $activity->get_activity( $atts['client_id'], $atts['id'] ); } catch ( WPStrava_Exception $e ) { return $e->to_html(); } $activity_output = ''; if ( $activity_details ) { $activity_output .= '
'; if ( ! $atts['image_only'] ) { $activity_output .= $this->get_table( $activity_details, $atts['som'] ); } // Sanitize width & height. $map_width = str_replace( '%', '', $atts['map_width'] ); $map_height = str_replace( '%', '', $atts['map_height'] ); $map_width = str_replace( 'px', '', $map_width ); $map_height = str_replace( 'px', '', $map_height ); $activity_output .= $activity->get_activity_link( $activity_details->id, WPStrava_StaticMap::get_map()->get_image_tag( $activity_details, $map_height, $map_width, $atts['markers'], $activity_details->name ), $activity_details->name ); if ( ! empty( $activity_details->description ) ) { $activity_output .= '
' . esc_html( $activity_details->description ) . '
'; } $activity_output .= '
'; } // End if( $activity_details ). return $activity_output; } /** * The the activity details in in HTML table. * * @param stdClass $activity_details Activity details from the activity class. * @param string $som System of measure (english/metric). * @return string HTML Table of activity details. * @author Justin Foell * @author Sebastian Erb * @since 1.7.0 */ private function get_table( $activity_details, $som ) { $strava_som = WPStrava_SOM::get_som( $som ); $strava_activitytype = WPStrava_ActivityType::get_type_group( $activity_details->type ); $avg_title = '' . __( 'Average Speed', 'wp-strava' ) . ''; $max_title = '' . __( 'Max Speed', 'wp-strava' ) . ''; $elevation_title = '' . __( 'Elevation Gain', 'wp-strava' ) . ''; $elevation = '
' . $strava_som->elevation( $activity_details->total_elevation_gain ) . '
' . $strava_som->get_elevation_label() . '
'; $avg_speed = ''; $max_speed = ''; $calories_title = ''; $calories = ''; switch ( $strava_activitytype ) { case WPStrava_ActivityType::TYPE_GROUP_PACE: $avg_speed = '
' . $strava_som->pace( $activity_details->average_speed ) . '
' . $strava_som->get_pace_label() . '
'; $max_speed = '
' . $strava_som->pace( $activity_details->max_speed ) . '
' . $strava_som->get_pace_label() . '
'; break; case WPStrava_ActivityType::TYPE_GROUP_WATER: $avg_speed = '
' . $strava_som->swimpace( $activity_details->average_speed ) . '
' . $strava_som->get_swimpace_label() . '
'; $max_speed = '
' . $strava_som->swimpace( $activity_details->max_speed ) . '
' . $strava_som->get_swimpace_label() . '
'; break; case WPStrava_ActivityType::TYPE_GROUP_SPEED: default: $avg_speed = '
' . $strava_som->speed( $activity_details->average_speed ) . '
' . $strava_som->get_speed_label() . '
'; $max_speed = '
' . $strava_som->speed( $activity_details->max_speed ) . '
' . $strava_som->get_speed_label() . '
'; break; } if ( WPStrava::get_instance()->settings->hide_elevation ) { $elevation_title = ''; $elevation = ''; } if ( $activity_details->calories ) { $calories_title = '' . __( 'Calories Burned', 'wp-strava' ) . ''; $calories = '
' . $strava_som->calories( $activity_details->calories ) . '
' . $strava_som->get_calories_label() . '
'; } return ' ' . $avg_title . ' ' . $max_title . ' ' . $elevation_title . ' ' . $calories_title . ' ' . $avg_speed . ' ' . $max_speed . ' ' . $elevation . ' ' . $calories . '
' . __( 'Elapsed Time', 'wp-strava' ) . ' ' . __( 'Moving Time', 'wp-strava' ) . ' ' . __( 'Distance', 'wp-strava' ) . '
' . $strava_som->time( $activity_details->elapsed_time ) . '
' . $strava_som->get_time_label() . '
' . $strava_som->time( $activity_details->moving_time ) . '
' . $strava_som->get_time_label() . '
' . $strava_som->distance( $activity_details->distance ) . '
' . $strava_som->get_distance_label() . '
'; } }