Files
wp-strava/lib/Rides.class.php
T

120 lines
4.3 KiB
PHP
Raw Normal View History

2011-08-23 09:34:28 -05:00
<?php
/*
2013-02-03 20:38:55 -06:00
* Rides is a class wrapper for the Strava REST API functions.
2011-08-23 09:34:28 -05:00
*/
2013-02-03 20:38:55 -06:00
class WPStrava_Rides {
2011-08-23 09:34:28 -05:00
public $stravaRides;
public $feedback;
2013-03-31 21:28:49 -05:00
2011-08-23 09:34:28 -05:00
public function getRideDetails($rideId, $systemOfMeasurement) {
2012-06-12 19:48:07 -05:00
$url = preg_replace('/:id/', $rideId, $this->rideUrl);
2011-08-23 09:34:28 -05:00
$json = file_get_contents($url);
2012-06-12 17:36:49 -05:00
2011-08-23 09:34:28 -05:00
if($json) {
$strava_ride = json_decode($json);
//Transform data to a ready to be displayed format
2012-06-12 19:48:07 -05:00
$startDate = date("F j, Y - H:i a", strtotime($strava_ride->ride->startDateLocal));
$elapsedTime = date("H:i:s", mktime(0, 0, $strava_ride->ride->elapsedTime));
$movingTime = date("H:i:s", mktime(0, 0, $strava_ride->ride->movingTime));
2011-08-23 09:34:28 -05:00
if ($systemOfMeasurement == "metric") {
//To km
$distance = number_format($strava_ride->ride->distance/1000, 2);
//To km/h
2012-06-12 19:48:07 -05:00
$averageSpeed = number_format($strava_ride->ride->averageSpeed * 3.6, 2);
2011-08-23 09:34:28 -05:00
//To km/h
2012-06-12 17:36:49 -05:00
// Removed on version 2 of the Strava API
//$maximumSpeed = number_format($strava_ride->ride->maximumSpeed/1000, 2);
2011-08-23 09:34:28 -05:00
//It is already in meters
2012-06-12 19:48:07 -05:00
$elevationGain = number_format($strava_ride->ride->elevationGain, 2);
2011-08-23 09:34:28 -05:00
} elseif ($systemOfMeasurement == "english") {
//To miles
$distance = number_format($strava_ride->ride->distance/1609.34, 2);
//To miles/h
2012-06-12 19:48:07 -05:00
$averageSpeed = number_format($strava_ride->ride->averageSpeed * 2.2369, 2);
2011-08-23 09:34:28 -05:00
//To miles/h
2012-06-12 17:36:49 -05:00
// Removed on version 2 of the Strava API
//$maximumSpeed = number_format($strava_ride->ride->maximumSpeed/1609.34, 2);
2011-08-23 09:34:28 -05:00
//To foot
2012-06-12 19:48:07 -05:00
$elevationGain = number_format($strava_ride->ride->elevationGain/0.3048, 2);
2011-08-23 09:34:28 -05:00
}
$ride_details = array(
'id' => $rideId,
'name' => $strava_ride->ride->name,
2012-06-12 19:48:07 -05:00
'athleteId' => $strava_ride->ride->athlete->id,
'athleteName' => $strava_ride->ride->athlete->name,
'athleteUserName' => $strava_ride->ride->athlete->username,
2011-08-23 09:34:28 -05:00
'startDate' => $startDate,
'elapsedTime' => $elapsedTime,
'movingTime' => $movingTime,
'distance' => $distance,
'averageSpeed' => $averageSpeed,
2012-06-12 17:36:49 -05:00
//'maximumSpeed' => $maximumSpeed,
2011-08-23 09:34:28 -05:00
'elevationGain' => $elevationGain
);
return $ride_details;
} else {
$this->feedback .= _e("Could not get information from strava.com for the ride id: ") . $stravaRide->id;
return false;
}
} // getRideDetails
public function getRidesDetails($systemOfMeasurement) {
if($this->stravaRides) {
$rides_details = array();
foreach($this->stravaRides as $stravaRide) {
$rides_details[] = $this->getRideDetails($stravaRide->id, $systemOfMeasurement);
}
return $rides_details;
} else {
$this->feedback .= _e("Please provide the rides array to be processed.", "wp-strava");
return false;
}
} // getRidesDetails
public function getLatestRides($searchOption, $searchId, $quantity) {
$url = $this->ridesUrl;
//Get the json results using the constructor specified values.
if($searchOption == "athlete") {
if(is_numeric($searchId)) {
$json = file_get_contents($url . '?athleteId=' . urlencode($searchId));
} else {
$json = file_get_contents($url . '?athleteName=' . urlencode($searchId));
}
2012-06-12 17:36:49 -05:00
} elseif ($searchOption == "club" AND is_numeric($searchId)) {
2011-08-23 09:34:28 -05:00
$json = file_get_contents($url . '?clubId=' . urlencode($searchId));
} else {
$this->feedback .= _e("There's an error on the widget options combination.", "wp-strava");
}
if($json) {
$strava_rides = json_decode($json);
$this->stravaRides = array_slice($strava_rides->rides, 0, $quantity);
} else {
$this->feedback .= _e("There was an error pulling data of strava.com.", "wp-strava");
return false;
}
} // getLatestRides
2013-03-31 21:28:49 -05:00
2011-08-23 09:34:28 -05:00
public function getRideMap($rideId, $token, $efforts, $threshold) {
if($rideId != 0 AND $token != "") {
2012-06-12 17:36:49 -05:00
$url = preg_replace('/:id/', $rideId, $this->rideMapDetailsUrlV2);
2011-08-23 09:34:28 -05:00
$json = file_get_contents($url . '?token=' . $token . '&threshold=' . $threshold);
if($json) {
//$map_details = json_decode($json);
//return $map_details;
return $json;
} else {
$this->feedback .= _e("There was an error pulling data of strava.com.", "wp-strava");
return false;
}
} else {
$this->feedback .= _e("You need to provide both parameters to complete the call.", "wp-strava");
return false;
}
} // getRideDetails
} // class Rides
2012-03-15 08:57:10 -06:00
?>