public function Api::getStatsBrowser in SendGrid Integration 8.2
Same name and namespace in other branches
- 8 modules/sendgrid_integration_reports/src/Api.php \Drupal\sendgrid_integration_reports\Api::getStatsBrowser()
Returns browser stats.
File
- modules/
sendgrid_integration_reports/ src/ Api.php, line 270
Class
- Api
- Class SendGridReportsController.
Namespace
Drupal\sendgrid_integration_reportsCode
public function getStatsBrowser($subuser = '') {
$cid = 'sendgrid_reports_browsers:' . ($subuser ? $subuser : 'global');
if ($cache = $this->cacheFactory
->get($this->bin)
->get($cid)) {
return $cache->data;
}
// Load key from variables and throw errors if not there.
if (empty($this->apiKey)) {
return [];
}
// Set start date and end date for global stats - default 30 days back.
$start_date = empty($config['start_date']) ? date('Y-m-d', strtotime('today - 30 days')) : $config['start_date'];
$end_date = empty($config['end_date']) ? date('Y-m-d', strtotime('today')) : $config['end_date'];
// Set aggregation of stats - default day.
$aggregated_by = isset($config['aggregated_by']) ? $config['aggregated_by'] : 'day';
$path = 'browsers/stats';
$query = [
'start_date' => $start_date,
'end_date' => $end_date,
'aggregated_by' => $aggregated_by,
];
// Lets try and retrieve the browser statistics.
$statsdata = $this
->getResponse($path, $query);
if (!$stats_data) {
return [];
}
$data = [];
// Determine all browsers. Nested foreach to
// iterate over all data returned per aggregation.
foreach ($statsdata as $item) {
foreach ($item->stats as $inneritem) {
if (array_key_exists($inneritem->name, $data)) {
$data[$inneritem->name] += $inneritem->metrics->clicks;
}
else {
$data[$inneritem->name] = $inneritem->metrics->clicks;
}
}
}
// Save data to cache.
$this
->setCache($cid, $data);
return $data;
}