mirror of
https://github.com/10h30/wp-strava.git
synced 2026-07-12 03:06:34 +09:00
Add routes shortcode functionality
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
class WPStrava_RouteShortcode {
|
||||
private static $add_script;
|
||||
|
||||
public static function init() {
|
||||
add_shortcode( 'route', array( __CLASS__, 'handler' ) );
|
||||
add_action( 'wp_footer', array( __CLASS__, 'print_scripts' ) );
|
||||
}
|
||||
|
||||
// Shortcode handler function
|
||||
// [route id=id som=metric map_width="100%" map_height="400px"]
|
||||
public static function handler( $atts ) {
|
||||
self::$add_script = true;
|
||||
|
||||
$defaults = array(
|
||||
'id' => 0,
|
||||
'som' => WPStrava::get_instance()->settings->som,
|
||||
'map_width' => '480',
|
||||
'map_height' => '320',
|
||||
'athlete_token' => WPStrava::get_instance()->settings->get_default_token(),
|
||||
);
|
||||
|
||||
extract( shortcode_atts( $defaults, $atts ) );
|
||||
|
||||
$strava_som = WPStrava_SOM::get_som( $som );
|
||||
$route = WPStrava::get_instance()->routes;
|
||||
$route_details = $route->getRoute( $id );
|
||||
|
||||
//sanitize width & height
|
||||
$map_width = str_replace( '%', '', $map_width );
|
||||
$map_height = str_replace( '%', '', $map_height );
|
||||
$map_width = str_replace( 'px', '', $map_width );
|
||||
$map_height = str_replace( 'px', '', $map_height );
|
||||
|
||||
if ( $route_details ) {
|
||||
return '
|
||||
<div id="ride-header-' . $id . '" class="wp-strava-ride-container">
|
||||
<table id="ride-details-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>' . __( 'Est. Moving Time', 'wp-strava' ) . '</th>
|
||||
<th>' . __( 'Distance', 'wp-strava' ) . '</th>
|
||||
<th>' . __( 'Elevation Gain', 'wp-strava' ) . '</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="ride-details-table-info">
|
||||
<td>' . $strava_som->time( $route_details->estimated_moving_time ) . '</td>
|
||||
<td>' . $strava_som->distance( $route_details->distance ) . '</td>
|
||||
<td>' . $strava_som->elevation( $route_details->elevation_gain ) . '</td>
|
||||
</tr>
|
||||
<tr class="ride-details-table-units">
|
||||
<td>' . $strava_som->get_time_label() . '</td>
|
||||
<td>' . $strava_som->get_distance_label() . '</td>
|
||||
<td>' . $strava_som->get_elevation_label() . '</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>' .
|
||||
WPStrava_StaticMap::get_image_tag( $route_details, $map_height, $map_width ) .
|
||||
'</div>';
|
||||
} // End if( $route_details ).
|
||||
} // handler
|
||||
|
||||
public static function print_scripts() {
|
||||
if ( self::$add_script ) {
|
||||
wp_enqueue_style( 'wp-strava-style' );
|
||||
|
||||
//wp_print_scripts('google-maps');
|
||||
//wp_print_scripts('wp-strava-script');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize short code
|
||||
WPStrava_RouteShortcode::init();
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/*
|
||||
* Routes is a class wrapper for the Strava REST API functions.
|
||||
*/
|
||||
|
||||
class WPStrava_Routes
|
||||
{
|
||||
const ROUTES_URL = 'http://app.strava.com/routes/';
|
||||
|
||||
/**
|
||||
* Get single route by ID.
|
||||
*
|
||||
* @param int $route_id ID of activity to retrieve.
|
||||
* @return object stdClass representing this route.
|
||||
* @author Daniel Lintott
|
||||
*/
|
||||
public function getRoute($route_id ) {
|
||||
return WPStrava::get_instance()->get_api()->get( "routes/{$route_id}" );
|
||||
} // getRouteDetails
|
||||
}
|
||||
+13
-1
@@ -5,6 +5,7 @@ require_once WPSTRAVA_PLUGIN_DIR . 'lib/SOM.class.php';
|
||||
require_once WPSTRAVA_PLUGIN_DIR . 'lib/LatestRidesWidget.class.php';
|
||||
require_once WPSTRAVA_PLUGIN_DIR . 'lib/LatestMapWidget.class.php';
|
||||
require_once WPSTRAVA_PLUGIN_DIR . 'lib/ActivityShortcode.class.php';
|
||||
require_once WPSTRAVA_PLUGIN_DIR . 'lib/RouteShortcode.class.php';
|
||||
require_once WPSTRAVA_PLUGIN_DIR . 'lib/StaticMap.class.php';
|
||||
|
||||
class WPStrava {
|
||||
@@ -13,6 +14,7 @@ class WPStrava {
|
||||
private $settings = null;
|
||||
private $api = array(); // Holds an array of APIs.
|
||||
private $rides = null;
|
||||
private $routes = null;
|
||||
|
||||
private function __construct() {
|
||||
$this->settings = new WPStrava_Settings();
|
||||
@@ -40,7 +42,9 @@ class WPStrava {
|
||||
// On-demand classes.
|
||||
if ( $name == 'rides' ) {
|
||||
return $this->get_rides();
|
||||
}
|
||||
} elseif ( $name == 'routes' ) {
|
||||
return $this->get_routes();
|
||||
}
|
||||
|
||||
if ( isset( $this->{$name} ) ) {
|
||||
return $this->{$name};
|
||||
@@ -71,6 +75,14 @@ class WPStrava {
|
||||
return $this->rides;
|
||||
}
|
||||
|
||||
public function get_routes() {
|
||||
if ( ! $this->routes ) {
|
||||
require_once WPSTRAVA_PLUGIN_DIR . 'lib/Routes.class.php';
|
||||
$this->routes = new WPStrava_Routes();
|
||||
}
|
||||
return $this->routes;
|
||||
}
|
||||
|
||||
public function register_scripts() {
|
||||
// Register a personalized stylesheet
|
||||
wp_register_style( 'wp-strava-style', WPSTRAVA_PLUGIN_URL . 'css/wp-strava.css' );
|
||||
|
||||
@@ -25,6 +25,10 @@ Also takes the following optional parameters:
|
||||
|
||||
[ride] is an alias for [activity] and will accept the same parameters (kept for backwards compatibility).
|
||||
|
||||
[route id=NUMBER] - add to any page or post. Shows a summary of the activity plus a map if a google maps key has been added.
|
||||
|
||||
This also takes the same optional parameters as the activity shortcode above.
|
||||
|
||||
= Widgets =
|
||||
|
||||
Strava Latest Activity List - shows a list of the last few activities.
|
||||
|
||||
Reference in New Issue
Block a user