56 lines
2.0 KiB
PHP
56 lines
2.0 KiB
PHP
<?php
|
|
|
|
// config
|
|
$row_delimiter = "\n";
|
|
$col_delimiter = ",";
|
|
$date_keyword = "Date";
|
|
|
|
// Matomo API settings
|
|
$site_id = 1;
|
|
$auth_token = "your matomo auth token here";
|
|
$csv_url_prefix = "https://tracking.example.com/index.php";
|
|
$csv_url_suffix = "&filter_limit=-1&format=CSV&format_metrics=0&idSite=".$site_id."&language=en&module=API&token_auth=".$auth_token."&translateColumnNames=1";
|
|
|
|
// init variables
|
|
$csv_url = '';
|
|
$row_counter = 0;
|
|
$date_col_index = -1;
|
|
global $date_col_index;
|
|
|
|
//$csv_date_range = "2020-06-01,2020-06-30";
|
|
$csv_date_range = $_GET['range'];
|
|
|
|
switch ($_GET['type']) {
|
|
case 'events':
|
|
$csv_url = $csv_url_prefix."?date=".$csv_date_range."&method=Events.getAction&period=day&flat=1".$csv_url_suffix;
|
|
break;
|
|
case 'custom_event':
|
|
$csv_url = $csv_url_prefix."?date=".$csv_date_range."&method=Actions.getPageUrls&period=month&flat=1&filter_pattern_recursive=eventname".$csv_url_suffix;
|
|
break;
|
|
case 'visits':
|
|
default:
|
|
$csv_url = $csv_url_prefix."?date=".$csv_date_range."&method=API.get&period=day".$csv_url_suffix;
|
|
break;
|
|
}
|
|
|
|
$csv_string = file_get_contents($csv_url);
|
|
$csv_string = $s = iconv('UTF-16', 'UTF-8', $csv_string); // convert Matomo's UTF-16 to UTF-8
|
|
|
|
$data = str_getcsv($csv_string, $row_delimiter); // parse rows
|
|
foreach($data as &$row) {
|
|
if ($row_counter == 0) { // header row
|
|
$row = str_getcsv($row, $col_delimiter); // parse columns
|
|
$date_col_index = array_search($date_keyword, $row); // find Date column index
|
|
$row = implode($col_delimiter, $row); // combine colums
|
|
} else { // content row
|
|
if ($date_col_index >= 0) { // date column has been found
|
|
$row = str_getcsv($row, $col_delimiter); // parse columns
|
|
$row[$date_col_index] = date("Y-m-d", strtotime($row[$date_col_index])); // modify date format
|
|
$row = implode($col_delimiter, $row); // combine colums
|
|
}
|
|
}
|
|
$row_counter++;
|
|
}
|
|
$data = implode($row_delimiter, $data); // combine rows
|
|
|
|
echo $data |