10REM / php-garmin-connect

A PHP adapter for interrogating the Garmin Connect "API"
MIT License
84 stars 41 forks source link

Feat/api/filter activities #58

Open laurent-bientz opened 3 years ago

laurent-bientz commented 3 years ago

Hello @dawguk,

Thanks for your great library, it helped me a lot to build some useful analytics.

This PR allows to pass additional filters to the getActivityList() method because I needed to search for specific distances, between dates, sort by a column, [...], it's possible on Garmin Connect:

image

Rather than adding X new parameters to your method, I just decided to add an optional array and merging it with the existing params:

public function getActivityList($intStart = 0, $intLimit = 10, $strActivityType = null, $filters = array())

Full example:

$response = $client->getActivityList(0, 1, 'running', [
    'minDistance' => 4902,
    'maxDistance' => 5100,
    'startDate' => '2021-01-01',
    'endDate' => '2021-08-13',
    'sortBy' => 'elapsedDuration',
    'sortOrder' => 'asc',
]);

Note that getActivityList($filters = array()) would have been enough (because we can define start, limit & activityType in the same array) but to preserve backward compatibility, I decided to let the legacy params even if we can override them in that array.