visualappeal / piwik-php-api
API wrapper for matomo
Installs: 31 497
Dependents: 0
Suggesters: 0
Security: 0
Stars: 85
Watchers: 11
Forks: 32
Open Issues: 1
Requires
- php: >=8.2
- ext-curl: *
- ext-json: *
- php-http/guzzle7-adapter: ^1.0
Requires (Dev)
- phpunit/phpunit: ^10.1
- roave/security-advisories: dev-latest
README
A PHP wrapper class for the Matomo API.
Requirements
- PHP >= 8.0 (for php 7.3/7.4 use version 1.6.1)
- cUrl (php-curl)
- JSON (php-json)
Install
This library can be installed via composer: composer require visualappeal/matomo-php-api
Usage
Create an instance of matomo
require(__DIR__ . '/vendor/autoload.php'); use VisualAppeal\Matomo; $matomo = new Matomo('http://stats.example.org', 'my_access_token', 'siteId');
There are some basic parameters (period, date, range) which you can define at the beginning. They do not change until you reset them with
$matomo->reset();
So you can execute multiple requests without specifying the parameters again.
siteId
The ID of your website, single number, list separated through comma "1,4,7"
, or "all"
.
period
The period you request the statistics for
Matomo::PERIOD_DAY Matomo::PERIOD_WEEK Matomo::PERIOD_MONTH Matomo::PERIOD_YEAR Matomo::PERIOD_RANGE
If you set the period to Matomo::PERIOD_RANGE
you can specify the range via
$matomo->setRange('2012-01-14', '2012-04-30'); //All data from the first to the last date $matomo->setRange('2012-01-14', Matomo::DATE_YESTERDAY); //All data from the first date until yesterday $matomo->setRange('2012-01-14'); //All data from the first date until now
If you set it to something other than Matomo::PERIOD_RANGE
you can specify the date via:
$matomo->setPeriod(x); $matomo->setDate('2012-03-03'); Case x of PERIOD_DAY the report is created for the third of march, 2012 Case x of PERIOD_WEEK the report is created for the first week of march, 2012 Case x of PERIOD_MONTH the report is created for march, 2012 Case x of PERIOD_YEAR the report is created for 2012
date
Set the date via
$matomo->setDate('YYYY-mm-dd');
Or use the constants
$matomo->setDate(Matomo::DATE_TODAY); $matomo->setDate(Matomo::DATE_YESTERDAY);
Report for the last seven weeks including the current week
$matomo->setPeriod(Matomo::PERIOD_WEEK); $matomo->setDate('last7');
Report for the last 2 years without the current year
$matomo->setPeriod(Matomo::PERIOD_YEAR);
$matomo->setDate('previous2');
segment, idSubtable, expanded
For some functions you can specify segment
, idSubtable
and expanded
. Please refer to the matomo segment documentation and to the api reference for more information about these parameters.
format
Specify a output format via
$matomo->setFormat(Matomo::FORMAT_JSON);
JSON is converted with json_decode
before returning the request.
All available formats
Matomo::FORMAT_XML Matomo::FORMAT_JSON Matomo::FORMAT_CSV Matomo::FORMAT_TSV Matomo::FORMAT_HTML Matomo::FORMAT_RSS Matomo::FORMAT_PHP
Example
Get all the unique visitors from yesterday:
require(__DIR__ . '/vendor/autoload.php'); use VisualAppeal\Matomo; $matomo = new Matomo('http://stats.example.org', 'my_access_token', 1, Matomo::FORMAT_JSON); $matomo->setPeriod(Matomo::PERIOD_DAY); $matomo->setDate(Matomo::DATE_YESTERDAY); echo 'Unique visitors yesterday: ' . $matomo->getUniqueVisitors();