diff --git a/lib/WPStrava/ActivityShortcode.php b/lib/WPStrava/ActivityShortcode.php
index 8f76cc9..0cd8baf 100644
--- a/lib/WPStrava/ActivityShortcode.php
+++ b/lib/WPStrava/ActivityShortcode.php
@@ -63,7 +63,7 @@ class WPStrava_ActivityShortcode {
try {
$activity_details = $activity->get_activity( $atts['athlete_token'], $atts['id'] );
- } catch( WPStrava_Exception $e ) {
+ } catch ( WPStrava_Exception $e ) {
return $e->to_html();
}
@@ -75,35 +75,35 @@ class WPStrava_ActivityShortcode {
if ( $activity_details ) {
- $strava_activitytype = WPStrava_ActivityType::getType( $activity_details->type );
- $avg_speed = '';
- $max_speed = '';
- $speed_label = '';
- $avg_title = '
' . __( 'Average Speed', 'wp-strava' ) . ' | ';
- $max_title = '' . __( 'Max Speed', 'wp-strava' ) . ' | ';
+ $strava_activitytype = WPStrava_ActivityType::get_type_group( $activity_details->type );
+ $avg_speed = '';
+ $max_speed = '';
+ $speed_label = '';
+ $avg_title = '' . __( 'Average Speed', 'wp-strava' ) . ' | ';
+ $max_title = '' . __( 'Max Speed', 'wp-strava' ) . ' | ';
- switch ($strava_activitytype) {
- case WPStrava_ActivityType::IS_PACE_TYPE:
- $avg_speed = '' . $strava_som->pace( $activity_details->average_speed ) . ' | ';
- $max_speed = '' . $strava_som->pace( $activity_details->max_speed ) . ' | ';
- $speed_label = '' . $strava_som->get_pace_label() . ' | ';
- break;
- case WPStrava_ActivityType::IS_SPEED_TYPE:
- $avg_speed = '' . $strava_som->speed( $activity_details->average_speed ) . ' | ';
- $max_speed = '' . $strava_som->speed( $activity_details->max_speed ) . ' | ';
- $speed_label = '' . $strava_som->get_speed_label() . ' | ';
- break;
- case WPStrava_ActivityType::IS_PACE_TYPE:
- $avg_speed = '' . $strava_som->swimpace( $activity_details->average_speed ) . ' | ';
- $max_speed = '' . $strava_som->swimpace( $activity_details->max_speed ) . ' | ';
- $speed_label = '' . $strava_som->get_swimpace_label() . ' | ';
- break;
- default:
- $avg_title = '';
- $max_title = '';
- break;
+ switch ( $strava_activitytype ) {
+ case WPStrava_ActivityType::TYPE_GROUP_PACE:
+ $avg_speed = '' . $strava_som->pace( $activity_details->average_speed ) . ' | ';
+ $max_speed = '' . $strava_som->pace( $activity_details->max_speed ) . ' | ';
+ $speed_label = '' . $strava_som->get_pace_label() . ' | ';
+ break;
+ case WPStrava_ActivityType::TYPE_GROUP_SPEED:
+ $avg_speed = '' . $strava_som->speed( $activity_details->average_speed ) . ' | ';
+ $max_speed = '' . $strava_som->speed( $activity_details->max_speed ) . ' | ';
+ $speed_label = '' . $strava_som->get_speed_label() . ' | ';
+ break;
+ case WPStrava_ActivityType::TYPE_GROUP_PACE:
+ $avg_speed = '' . $strava_som->swimpace( $activity_details->average_speed ) . ' | ';
+ $max_speed = '' . $strava_som->swimpace( $activity_details->max_speed ) . ' | ';
+ $speed_label = '' . $strava_som->get_swimpace_label() . ' | ';
+ break;
+ default:
+ $avg_title = '';
+ $max_title = '';
+ break;
- }
+ }
return '
';
} // End if( $activity_details ).
}
diff --git a/lib/WPStrava/ActivityType.php b/lib/WPStrava/ActivityType.php
index d3cf4eb..c404b15 100644
--- a/lib/WPStrava/ActivityType.php
+++ b/lib/WPStrava/ActivityType.php
@@ -8,83 +8,77 @@
* ActivityType class.
*
* @author Sebastian Erb
- * @since 1.6.1
+ * @since NEXT
*/
+class WPStrava_ActivityType {
-class WPStrava_ActivityType
-{
+ const TYPE_ALPINESKI = 'AlpineSki';
+ const TYPE_BACKCOUNTRYSKI = 'BackcountrySki';
+ const TYPE_CANOEING = 'Canoeing';
+ const TYPE_CROSSFIT = 'Crossfit';
+ const TYPE_EBIKERIDE = 'EBikeRide';
+ const TYPE_ELLIPTICAL = 'Elliptical';
+ const TYPE_HANDCYCLE = 'Hike';
+ const TYPE_HIKE = 'IceSkate';
+ const TYPE_ICESKATE = 'InlineSkate';
+ const TYPE_INLINESKATE = 'AlpineSki';
+ const TYPE_KAYAKING = 'Kayaking';
+ const TYPE_KITESURF = 'Kitesurf';
+ const TYPE_NORDICSKI = 'NordicSki';
+ const TYPE_RIDE = 'Ride';
+ const TYPE_ROCKCLIMBING = 'RockClimbing';
+ const TYPE_ROLLERSKI = 'RollerSki';
+ const TYPE_ROWING = 'Rowing';
+ const TYPE_RUN = 'Run';
+ const TYPE_SNOWBOARD = 'Snowboard';
+ const TYPE_SNOWSHOE = 'Snowshoe';
+ const TYPE_STAIRSTEPPER = 'StairStepper';
+ const TYPE_STANDUPPADDLING = 'StandUpPaddling';
+ const TYPE_SURFING = 'Surfing';
+ const TYPE_SWIM = 'Swim';
+ const TYPE_VIRTUALRIDE = 'VirtualRide';
+ const TYPE_VIRTUALRUN = 'VirtualRun';
+ const TYPE_WALK = 'Walk';
+ const TYPE_WEIGHTTRAINING = 'WeightTraining';
+ const TYPE_WHEELCHAIR = 'Wheelchair';
+ const TYPE_WINDSURF = 'Windsurf';
+ const TYPE_WORKOUT = 'Workout';
+ const TYPE_YOGA = 'Yoga';
- const TYPE_ALPINESKI = 'AlpineSki';
- const TYPE_BACKCOUNTRYSKI = 'BackcountrySki';
- const TYPE_CANOEING = 'Canoeing';
- const TYPE_CROSSFIT = 'Crossfit';
- const TYPE_EBIKERIDE = 'EBikeRide';
- const TYPE_ELLIPTICAL = 'Elliptical';
- const TYPE_HANDCYCLE = 'Hike';
- const TYPE_HIKE = 'IceSkate';
- const TYPE_ICESKATE = 'InlineSkate';
- const TYPE_INLINESKATE = 'AlpineSki';
- const TYPE_KAYAKING = 'Kayaking';
- const TYPE_KITESURF = 'Kitesurf';
- const TYPE_NORDICSKI = 'NordicSki';
- const TYPE_RIDE = 'Ride';
- const TYPE_ROCKCLIMBING = 'RockClimbing';
- const TYPE_ROLLERSKI = 'RollerSki';
- const TYPE_ROWING = 'Rowing';
- const TYPE_RUN = 'Run';
- const TYPE_SNOWBOARD = 'Snowboard';
- const TYPE_SNOWSHOE = 'Snowshoe';
- const TYPE_STAIRSTEPPER = 'StairStepper';
- const TYPE_STANDUPPADDLING = 'StandUpPaddling';
- const TYPE_SURFING = 'Surfing';
- const TYPE_SWIM = 'Swim';
- const TYPE_VIRTUALRIDE = 'VirtualRide';
- const TYPE_VIRTUALRUN = 'VirtualRun';
- const TYPE_WALK = 'Walk';
- const TYPE_WEIGHTTRAINING = 'WeightTraining';
- const TYPE_WHEELCHAIR = 'Wheelchair';
- const TYPE_WINDSURF = 'Windsurf';
- const TYPE_WORKOUT = 'Workout';
- const TYPE_YOGA = 'Yoga';
+ const TYPE_DEFAULT = self::TYPE_RIDE;
- const TYPE_DEFAULT = TYPE_RIDE;
+ private static $water_types = array( self::TYPE_SWIM );
+ private static $pace_types = array( self::TYPE_CANOEING, self::TYPE_HIKE, self::TYPE_RUN, self::TYPE_SNOWSHOE, self::TYPE_VIRTUALRUN, self::TYPE_WALK );
+ private static $speed_types = array( self::TYPE_ALPINESKI, self::TYPE_BACKCOUNTRYSKI, self::TYPE_EBIKERIDE, self::TYPE_ELLIPTICAL, self::TYPE_HANDCYCLE, self::TYPE_ICESKATE, self::TYPE_INLINESKATE, self::TYPE_KAYAKING, self::TYPE_KITESURF, self::TYPE_NORDICSKI, self::TYPE_RIDE, self::TYPE_ROCKCLIMBING, self::TYPE_ROLLERSKI, self::TYPE_ROWING, self::TYPE_SNOWBOARD, self::TYPE_STAIRSTEPPER, self::TYPE_STANDUPPADDLING, self::TYPE_SURFING, self::TYPE_VIRTUALRIDE, self::TYPE_WHEELCHAIR, self::TYPE_WINDSURF );
- private static $waterTypes = array(WPStrava_ActivityType::TYPE_SWIM);
- private static $paceTypes = array(WPStrava_ActivityType::TYPE_CANOEING, WPStrava_ActivityType::TYPE_HIKE, WPStrava_ActivityType::TYPE_RUN, WPStrava_ActivityType::TYPE_SNOWSHOE, WPStrava_ActivityType::TYPE_VIRTUALRUN, WPStrava_ActivityType::TYPE_WALK);
- private static $speedTypes = array(WPStrava_ActivityType::TYPE_ALPINESKI, WPStrava_ActivityType::TYPE_BACKCOUNTRYSKI, WPStrava_ActivityType::TYPE_EBIKERIDE, WPStrava_ActivityType::TYPE_ELLIPTICAL, WPStrava_ActivityType::TYPE_HANDCYCLE, WPStrava_ActivityType::TYPE_ICESKATE, WPStrava_ActivityType::TYPE_INLINESKATE, WPStrava_ActivityType::TYPE_KAYAKING, WPStrava_ActivityType::TYPE_KITESURF, WPStrava_ActivityType::TYPE_NORDICSKI, WPStrava_ActivityType::TYPE_RIDE, WPStrava_ActivityType::TYPE_ROCKCLIMBING, WPStrava_ActivityType::TYPE_ROLLERSKI, WPStrava_ActivityType::TYPE_ROWING, WPStrava_ActivityType::TYPE_SNOWBOARD, WPStrava_ActivityType::TYPE_STAIRSTEPPER, WPStrava_ActivityType::TYPE_STANDUPPADDLING, WPStrava_ActivityType::TYPE_SURFING, WPStrava_ActivityType::TYPE_VIRTUALRIDE, WPStrava_ActivityType::TYPE_WHEELCHAIR, WPStrava_ActivityType::TYPE_WINDSURF);
+ const TYPE_GROUP_WATER = 'water';
+ const TYPE_GROUP_PACE = 'pace';
+ const TYPE_GROUP_SPEED = 'speed';
+ const TYPE_GROUP_OTHER = 'other';
- const ALL_TYPES = array(WPStrava_ActivityType::TYPE_SWIM, WPStrava_ActivityType::TYPE_CANOEING, WPStrava_ActivityType::TYPE_HIKE, WPStrava_ActivityType::TYPE_RUN, WPStrava_ActivityType::TYPE_SNOWSHOE, WPStrava_ActivityType::TYPE_VIRTUALRUN, WPStrava_ActivityType::TYPE_WALK, WPStrava_ActivityType::TYPE_ALPINESKI, WPStrava_ActivityType::TYPE_BACKCOUNTRYSKI, WPStrava_ActivityType::TYPE_EBIKERIDE, WPStrava_ActivityType::TYPE_ELLIPTICAL, WPStrava_ActivityType::TYPE_HANDCYCLE, WPStrava_ActivityType::TYPE_ICESKATE, WPStrava_ActivityType::TYPE_INLINESKATE, WPStrava_ActivityType::TYPE_KAYAKING, WPStrava_ActivityType::TYPE_KITESURF, WPStrava_ActivityType::TYPE_NORDICSKI, WPStrava_ActivityType::TYPE_RIDE, WPStrava_ActivityType::TYPE_ROCKCLIMBING, WPStrava_ActivityType::TYPE_ROLLERSKI, WPStrava_ActivityType::TYPE_ROWING, WPStrava_ActivityType::TYPE_SNOWBOARD, WPStrava_ActivityType::TYPE_STAIRSTEPPER, WPStrava_ActivityType::TYPE_STANDUPPADDLING, WPStrava_ActivityType::TYPE_SURFING, WPStrava_ActivityType::TYPE_VIRTUALRIDE, WPStrava_ActivityType::TYPE_WHEELCHAIR, WPStrava_ActivityType::TYPE_WINDSURF, WPStrava_ActivityType::TYPE_CROSSFIT, WPStrava_ActivityType::TYPE_WEIGHTTRAINING, WPStrava_ActivityType::TYPE_WORKOUT, WPStrava_ActivityType::TYPE_YOGA);
+ /**
+ * Get the type of activity.
+ *
+ * @param string $type Type provided by Strava.
+ * @return string Type group (water/pace/speed/other).
+ * @author @author Sebastian Erb
+ * @since NEXT
+ */
+ public static function get_type_group( $type ) {
- const IS_WATER_TYPE = "water_type";
- const IS_PACE_TYPE = "pace_type";
- const IS_SPEED_TYPE = "speed_type";
- const IS_OTHER_TYPE = "other_type";
+ if ( in_array( $type, self::$pace_types, true ) ) {
+ return self::TYPE_GROUP_PACE;
+ }
- public static function verifyType( $type ) {
+ if ( in_array( $type, self::$speed_types, true ) ) {
+ return self::TYPE_GROUP_SPEED;
+ }
- if($type==null || !in_array($type, WPStrava_ActivityType::ALL_TYPES))
- return WPStrava_ActivityType::TYPE_DEFAULT;
- else
- return $type;
+ if ( in_array( $type, self::$water_types, true ) ) {
+ return self::TYPE_GROUP_WATER;
+ }
- }
+ return self::TYPE_GROUP_OTHER;
+ }
- public static function getType( $type ){
-
- if(in_array($type, WPStrava_ActivityType::$paceTypes)){
- return WPStrava_ActivityType::IS_PACE_TYPE;
- }
-
- if(in_array($type, WPStrava_ActivityType::$speedTypes)){
- return WPStrava_ActivityType::IS_SPEED_TYPE;
- }
-
- if(in_array($type, WPStrava_ActivityType::$waterTypes)){
- return WPStrava_ActivityType::IS_WATER_TYPE;
- }
-
- return WPStrava_ActivityType::IS_OTHER_TYPE;
-
- }
-
-}
\ No newline at end of file
+}
diff --git a/lib/WPStrava/SOM.php b/lib/WPStrava/SOM.php
index 1cdc465..168a9bf 100644
--- a/lib/WPStrava/SOM.php
+++ b/lib/WPStrava/SOM.php
@@ -26,10 +26,10 @@ abstract class WPStrava_SOM {
abstract public function get_speed_label();
abstract public function elevation( $m );
abstract public function get_elevation_label();
- abstract public function pace( $mps );
- abstract public function get_pace_label();
- abstract public function swimpace( $mps );
- abstract public function get_swimpace_label();
+ abstract public function pace( $mps );
+ abstract public function get_pace_label();
+ abstract public function swimpace( $mps );
+ abstract public function get_swimpace_label();
public function time( $seconds ) {
return date( 'H:i:s', mktime( 0, 0, $seconds ) );
diff --git a/lib/WPStrava/SOMEnglish.php b/lib/WPStrava/SOMEnglish.php
index 290b20c..920ed93 100644
--- a/lib/WPStrava/SOMEnglish.php
+++ b/lib/WPStrava/SOMEnglish.php
@@ -55,56 +55,60 @@ class WPStrava_SOMEnglish extends WPStrava_SOM {
return __( 'mph', 'wp-strava' );
}
- /**
- * Change meters per second to Minutes Per Mile.
- *
- * @param float $mps Meters per second.
- * @return float Minutes Per Mile.
- */
- public function pace( $mps ) {
+ /**
+ * Change meters per second to Minutes Per Mile.
+ *
+ * @param float $mps Meters per second.
+ * @return float Minutes Per Mile.
+ */
+ public function pace( $mps ) {
- $mph = $mps * 2.2369;
- $s = 3600 / $mph;
- $ss = $s/60;
- $ms = floor($ss)*60;
- $sec = round($s-$ms);
- $min = floor($ss);
+ if ( ! $mps ) {
+ return __( 'N/A', 'wp-strava' );
+ }
- return "$min:$sec";
- }
+ $mph = $mps * 2.2369;
+ $s = 3600 / $mph;
+ $ss = $s / 60;
+ $ms = floor( $ss ) * 60;
+ $sec = round( $s - $ms );
+ $min = floor( $ss );
- /**
- * Abbreviated label for this system of measure's pace - Minutes Per Mile: min/mile
- *
- * @return string 'min/mile'
- */
- public function get_pace_label() {
- return __( 'min/mile', 'wp-strava' );
- }
+ return "{$min}:{$sec}";
+ }
- /**
- * Change meters per second to Minutes Per 100 Meters.
- *
- * @param float $mps Meters per second.
- * @return float Minutes Per 100 Meters.
- */
- public function swimpace( $mps ) {
+ /**
+ * Abbreviated label for this system of measure's pace - Minutes Per Mile: min/mile
+ *
+ * @return string 'min/mile'
+ */
+ public function get_pace_label() {
+ return __( 'min/mile', 'wp-strava' );
+ }
- $kmh = $mps * 3.6;
- $min100m = 60/$kmh/10;
+ /**
+ * Change meters per second to Minutes Per 100 Meters.
+ *
+ * @param float $mps Meters per second.
+ * @return float Minutes Per 100 Meters.
+ */
+ public function swimpace( $mps ) {
- return number_format( $min100m, 2 );
+ $kmh = $mps * 3.6;
+ $min100m = 60 / $kmh / 10;
- }
+ return number_format( $min100m, 2 );
- /**
- * Abbreviated label for this system of measure's pace - Minutes Per 100 Meters: min/100m
- *
- * @return string 'min/100m'
- */
- public function get_swimpace_label() {
- return __( 'min/100m', 'wp-strava' );
- }
+ }
+
+ /**
+ * Abbreviated label for this system of measure's pace - Minutes Per 100 Meters: min/100m
+ *
+ * @return string 'min/100m'
+ */
+ public function get_swimpace_label() {
+ return __( 'min/100m', 'wp-strava' );
+ }
/**
* Change meters to feet.
diff --git a/lib/WPStrava/SOMMetric.php b/lib/WPStrava/SOMMetric.php
index 8b99c03..559ee7d 100644
--- a/lib/WPStrava/SOMMetric.php
+++ b/lib/WPStrava/SOMMetric.php
@@ -55,56 +55,60 @@ class WPStrava_SOMMetric extends WPStrava_SOM {
return __( 'km/h', 'wp-strava' );
}
- /**
- * Change meters per second to kilometers per hour.
- *
- * @param float $mps Meters per second.
- * @return float Kilometers per hour.
- */
- public function pace( $mps ) {
- // 4 m/s => 14,4 km/h => 4:10 min/km
+ /**
+ * Change meters per second to kilometers per hour.
+ *
+ * @param float $mps Meters per second.
+ * @return float Kilometers per hour.
+ */
+ public function pace( $mps ) {
- $kmh = $mps * 3.6;
- $s = 3600 / $kmh;
- $ss = $s/60;
- $ms = floor($ss)*60;
- $sec = round($s-$ms);
- $min = floor($ss);
+ if ( ! $mps ) {
+ return __( 'N/A', 'wp-strava' );
+ }
- return "$min:$sec";
- }
+ // 4 m/s => 14,4 km/h => 4:10 min/km
+ $kmh = $mps * 3.6;
+ $s = 3600 / $kmh;
+ $ss = $s / 60;
+ $ms = floor( $ss ) * 60;
+ $sec = round( $s - $ms );
+ $min = floor( $ss );
- /**
- * Abbreviated label for this system of measure's speed - Minutes Per Kilometers: min/km
- *
- * @return string 'min/km'
- */
- public function get_pace_label() {
- return __( 'min/km', 'wp-strava' );
- }
+ return "{$min}:{$sec}";
+ }
- /**
- * Change meters per second to Minutes Per 100 Meters.
- *
- * @param float $mps Meters per second.
- * @return float Minutes Per 100 Meters.
- */
- public function swimpace( $mps ) {
+ /**
+ * Abbreviated label for this system of measure's speed - Minutes Per Kilometers: min/km
+ *
+ * @return string 'min/km'
+ */
+ public function get_pace_label() {
+ return __( 'min/km', 'wp-strava' );
+ }
- $kmh = $mps * 3.6;
- $min100m = 60/$kmh/10;
+ /**
+ * Change meters per second to Minutes Per 100 Meters.
+ *
+ * @param float $mps Meters per second.
+ * @return float Minutes Per 100 Meters.
+ */
+ public function swimpace( $mps ) {
- return number_format( $min100m, 2 );
- }
+ $kmh = $mps * 3.6;
+ $min100m = 60 / $kmh / 10;
- /**
- * Abbreviated label for this system of measure's pace - Minutes Per 100 Meters: min/100m
- *
- * @return string 'min/100m'
- */
- public function get_swimpace_label() {
- return __( 'min/100m', 'wp-strava' );
- }
+ return number_format( $min100m, 2 );
+ }
+
+ /**
+ * Abbreviated label for this system of measure's pace - Minutes Per 100 Meters: min/100m
+ *
+ * @return string 'min/100m'
+ */
+ public function get_swimpace_label() {
+ return __( 'min/100m', 'wp-strava' );
+ }
/**
* Change meters to meters };^)
diff --git a/readme.txt b/readme.txt
index 1495704..1a30e30 100644
--- a/readme.txt
+++ b/readme.txt
@@ -78,7 +78,7 @@ WP-Strava caches activity for one hour so your site doesn't hit the Strava API o
== Changelog ==
-= 1.6.1 =
+= NEXT =
Added Pace support (min/km) for Activity Shortcode
Added Swimpace support (min/100m) for Activity Shortcode