You are here

public function GoogleAnalyticsReportsApiFeed::queryReportFeed in Google Analytics Reports 8.3

Query and sanitize report data.

File

google_analytics_reports_api/src/GoogleAnalyticsReportsApiFeed.php, line 613

Class

GoogleAnalyticsReportsApiFeed
Class GoogleAnalyticsReportsApiFeed.

Namespace

Drupal\google_analytics_reports_api

Code

public function queryReportFeed($params = [], $cache_options = []) {

  // Provide defaults if the developer did not override them.
  $params += [
    'profile_id' => 0,
    'dimensions' => NULL,
    'metrics' => 'ga:sessions',
    'sort_metric' => NULL,
    'filters' => NULL,
    'segment' => NULL,
    'start_date' => NULL,
    'end_date' => NULL,
    'start_index' => 1,
    'max_results' => 10000,
  ];
  $parameters = [
    'ids' => $params['profile_id'],
  ];
  if (is_array($params['dimensions'])) {
    $parameters['dimensions'] = implode(',', $params['dimensions']);
  }
  elseif ($params['dimensions'] !== NULL) {
    $parameters['dimensions'] = $params['dimensions'];
  }
  if (is_array($params['metrics'])) {
    $parameters['metrics'] = implode(',', $params['metrics']);
  }
  else {
    $parameters['metrics'] = $params['metrics'];
  }
  if ($params['sort_metric'] == NULL && isset($parameters['metrics'])) {
    $parameters['sort'] = $parameters['metrics'];
  }
  elseif (is_array($params['sort_metric'])) {
    $parameters['sort'] = implode(',', $params['sort_metric']);
  }
  else {
    $parameters['sort'] = $params['sort_metric'];
  }
  if (empty($params['start_date']) || !is_int($params['start_date'])) {

    // Use the day that Google Analytics was released (1 Jan 2005).
    $start_date = '2005-01-01';
  }
  elseif (is_int($params['start_date'])) {

    // Assume a Unix timestamp.
    $start_date = date('Y-m-d', $params['start_date']);
  }
  $parameters['start-date'] = $start_date;
  if (empty($params['end_date']) || !is_int($params['end_date'])) {
    $end_date = date('Y-m-d');
  }
  elseif (is_int($params['end_date'])) {

    // Assume a Unix timestamp.
    $end_date = date('Y-m-d', $params['end_date']);
  }
  $parameters['end-date'] = $end_date;

  // Accept only strings, not arrays, for the following parameters.
  if (!empty($params['filters'])) {
    $parameters['filters'] = $params['filters'];
  }
  if (!empty($params['segment'])) {
    $parameters['segment'] = $params['segment'];
  }
  $parameters['start-index'] = $params['start_index'];
  $parameters['max-results'] = $params['max_results'];
  $this
    ->setQueryPath('data/ga');
  if ($this
    ->query($this->queryPath, $parameters, 'GET', $this
    ->generateAuthHeader(), $cache_options)) {
    $this
      ->sanitizeReport();
  }
  return $this;
}