mirror of
https://github.com/10h30/wp-strava.git
synced 2026-07-12 03:06:34 +09:00
Added Pace support
Added Swimpace support
This commit is contained in:
@@ -74,6 +74,37 @@ class WPStrava_ActivityShortcode {
|
||||
$map_height = str_replace( 'px', '', $map_height );
|
||||
|
||||
if ( $activity_details ) {
|
||||
|
||||
$strava_activitytype = WPStrava_ActivityType::getType( $activity_details->type );
|
||||
$avg_speed = '';
|
||||
$max_speed = '';
|
||||
$speed_label = '';
|
||||
$avg_title = '<th>' . __( 'Average Speed', 'wp-strava' ) . '</th>';
|
||||
$max_title = '<th>' . __( 'Max Speed', 'wp-strava' ) . '</th>';
|
||||
|
||||
switch ($strava_activitytype) {
|
||||
case WPStrava_ActivityType::IS_PACE_TYPE:
|
||||
$avg_speed = '<td>' . $strava_som->pace( $activity_details->average_speed ) . '</td>';
|
||||
$max_speed = '<td>' . $strava_som->pace( $activity_details->max_speed ) . '</td>';
|
||||
$speed_label = '<td>' . $strava_som->get_pace_label() . '</td>';
|
||||
break;
|
||||
case WPStrava_ActivityType::IS_SPEED_TYPE:
|
||||
$avg_speed = '<td>' . $strava_som->speed( $activity_details->average_speed ) . '</td>';
|
||||
$max_speed = '<td>' . $strava_som->speed( $activity_details->max_speed ) . '</td>';
|
||||
$speed_label = '<td>' . $strava_som->get_speed_label() . '</td>';
|
||||
break;
|
||||
case WPStrava_ActivityType::IS_PACE_TYPE:
|
||||
$avg_speed = '<td>' . $strava_som->swimpace( $activity_details->average_speed ) . '</td>';
|
||||
$max_speed = '<td>' . $strava_som->swimpace( $activity_details->max_speed ) . '</td>';
|
||||
$speed_label = '<td>' . $strava_som->get_swimpace_label() . '</td>';
|
||||
break;
|
||||
default:
|
||||
$avg_title = '';
|
||||
$max_title = '';
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
return '
|
||||
<div id="activity-header-' . $atts['id'] . '" class="wp-strava-activity-container">
|
||||
<table id="activity-details-table">
|
||||
@@ -82,8 +113,8 @@ class WPStrava_ActivityShortcode {
|
||||
<th>' . __( 'Elapsed Time', 'wp-strava' ) . '</th>
|
||||
<th>' . __( 'Moving Time', 'wp-strava' ) . '</th>
|
||||
<th>' . __( 'Distance', 'wp-strava' ) . '</th>
|
||||
<th>' . __( 'Average Speed', 'wp-strava' ) . '</th>
|
||||
<th>' . __( 'Max Speed', 'wp-strava' ) . '</th>
|
||||
' . $avg_title . '
|
||||
' . $max_title . '
|
||||
<th>' . __( 'Elevation Gain', 'wp-strava' ) . '</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -92,23 +123,25 @@ class WPStrava_ActivityShortcode {
|
||||
<td>' . $strava_som->time( $activity_details->elapsed_time ) . '</td>
|
||||
<td>' . $strava_som->time( $activity_details->moving_time ) . '</td>
|
||||
<td>' . $strava_som->distance( $activity_details->distance ) . '</td>
|
||||
<td>' . $strava_som->speed( $activity_details->average_speed ) . '</td>
|
||||
<td>' . $strava_som->speed( $activity_details->max_speed ) . '</td>
|
||||
' . $avg_speed . '
|
||||
' . $max_speed . '
|
||||
<td>' . $strava_som->elevation( $activity_details->total_elevation_gain ) . '</td>
|
||||
</tr>
|
||||
<tr class="activity-details-table-units">
|
||||
<td>' . $strava_som->get_time_label() . '</td>
|
||||
<td>' . $strava_som->get_time_label() . '</td>
|
||||
<td>' . $strava_som->get_distance_label() . '</td>
|
||||
<td>' . $strava_som->get_speed_label() . '</td>
|
||||
<td>' . $strava_som->get_speed_label() . '</td>
|
||||
' . $speed_label . '
|
||||
' . $speed_label . '
|
||||
<td>' . $strava_som->get_elevation_label() . '</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<a title="' . $activity_details->name . '" href="' . WPStrava_Activity::ACTIVITIES_URL . $activity_details->id . '">' .
|
||||
WPStrava_StaticMap::get_image_tag( $activity_details, $map_height, $map_width, $atts['markers'] ) .
|
||||
'</a>
|
||||
|
||||
</div>';
|
||||
} // End if( $activity_details ).
|
||||
}
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
/**
|
||||
* ActivityType [activitytype].
|
||||
* @package WPStrava
|
||||
*/
|
||||
|
||||
/**
|
||||
* ActivityType class.
|
||||
*
|
||||
* @author Sebastian Erb <mail@sebastianerb.com>
|
||||
* @since 1.6.1
|
||||
*/
|
||||
|
||||
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_DEFAULT = TYPE_RIDE;
|
||||
|
||||
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 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);
|
||||
|
||||
const IS_WATER_TYPE = "water_type";
|
||||
const IS_PACE_TYPE = "pace_type";
|
||||
const IS_SPEED_TYPE = "speed_type";
|
||||
const IS_OTHER_TYPE = "other_type";
|
||||
|
||||
public static function verifyType( $type ) {
|
||||
|
||||
if($type==null || !in_array($type, WPStrava_ActivityType::ALL_TYPES))
|
||||
return WPStrava_ActivityType::TYPE_DEFAULT;
|
||||
else
|
||||
return $type;
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,6 +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();
|
||||
|
||||
public function time( $seconds ) {
|
||||
return date( 'H:i:s', mktime( 0, 0, $seconds ) );
|
||||
|
||||
@@ -55,6 +55,57 @@ 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 ) {
|
||||
|
||||
$mph = $mps * 2.2369;
|
||||
$s = 3600 / $mph;
|
||||
$ss = $s/60;
|
||||
$ms = floor($ss)*60;
|
||||
$sec = round($s-$ms);
|
||||
$min = floor(60/$ss);
|
||||
|
||||
return "$min:$sec";
|
||||
}
|
||||
|
||||
/**
|
||||
* 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' );
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 ) {
|
||||
|
||||
$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' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Change meters to feet.
|
||||
*
|
||||
|
||||
@@ -55,6 +55,57 @@ 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
|
||||
|
||||
$kmh = $mps * 3.6;
|
||||
$s = 3600 / $kmh;
|
||||
$ss = $s/60;
|
||||
$ms = floor($ss)*60;
|
||||
$sec = round($s-$ms);
|
||||
$min = floor(60/$ss);
|
||||
|
||||
return "$min:$sec";
|
||||
}
|
||||
|
||||
/**
|
||||
* 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' );
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 ) {
|
||||
|
||||
$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' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Change meters to meters };^)
|
||||
*
|
||||
|
||||
Executable → Regular
+5
@@ -78,6 +78,11 @@ WP-Strava caches activity for one hour so your site doesn't hit the Strava API o
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 1.6.1 =
|
||||
|
||||
Added Pace support (min/km) for Activity Shortcode
|
||||
Added Swimpace support (min/100m) for Activity Shortcode
|
||||
|
||||
= 1.6.0 =
|
||||
|
||||
Added class autoloader (removed composer autoloader).
|
||||
|
||||
Reference in New Issue
Block a user