You are here

public function GoogleAnalyticsReportsApiFeed::query in Google Analytics Reports 8.3

Public query method for all Core Reporting API features.

6 calls to GoogleAnalyticsReportsApiFeed::query()
GoogleAnalyticsReportsApiFeed::queryAccounts in google_analytics_reports_api/src/GoogleAnalyticsReportsApiFeed.php
Query Management API - Accounts.
GoogleAnalyticsReportsApiFeed::queryGoals in google_analytics_reports_api/src/GoogleAnalyticsReportsApiFeed.php
Query Management API - Goals.
GoogleAnalyticsReportsApiFeed::queryProfiles in google_analytics_reports_api/src/GoogleAnalyticsReportsApiFeed.php
Query Management API - Profiles.
GoogleAnalyticsReportsApiFeed::queryReportFeed in google_analytics_reports_api/src/GoogleAnalyticsReportsApiFeed.php
Query and sanitize report data.
GoogleAnalyticsReportsApiFeed::querySegments in google_analytics_reports_api/src/GoogleAnalyticsReportsApiFeed.php
Query Management API - Segments.

... See full list

File

google_analytics_reports_api/src/GoogleAnalyticsReportsApiFeed.php, line 458

Class

GoogleAnalyticsReportsApiFeed
Class GoogleAnalyticsReportsApiFeed.

Namespace

Drupal\google_analytics_reports_api

Code

public function query($url, $params = [], $method = 'GET', $headers = [], $cache_options = []) {
  $params_defaults = [
    'start-index' => 1,
    'max-results' => 1000,
  ];
  $params += $params_defaults;

  // Provide cache defaults if a developer did not override them.
  $cache_defaults = [
    'cid' => NULL,
    'bin' => 'default',
    'expire' => google_analytics_reports_api_cache_time(),
    'refresh' => FALSE,
  ];
  $cache_options += $cache_defaults;

  // Provide a query MD5 for the cid if the developer did not provide one.
  if (empty($cache_options['cid'])) {
    $cache_options['cid'] = 'google_analytics_reports_data:' . md5(serialize(array_merge($params, [
      $url,
      $method,
    ])));
  }
  $cache = $this->cacheFactory
    ->get($cache_options['bin'])
    ->get($cache_options['cid']);
  if (!$cache_options['refresh'] && isset($cache) && !empty($cache->data) && $cache->expire > $this->time
    ->getRequestTime()) {
    $this->response = $cache->data;
    $this->results = json_decode($this->response);
    $this->fromCache = TRUE;
  }
  else {
    $this
      ->request($url, $params, $headers);
  }
  if (empty($this->error)) {
    $this->cacheFactory
      ->get($cache_options['bin'])
      ->set($cache_options['cid'], $this->response, $cache_options['expire']);
  }
  return empty($this->error);
}