You are here

public function GoogleAnalyticsReportsApiFeed::queryReportFeed in Google Analytics Reports 7.3

Query and sanitize report data.

File

google_analytics_reports_api/google_analytics_reports_api.lib.inc, line 406
Provides the Google Analytics Reports API Feed object type and associated methods.

Class

GoogleAnalyticsReportsApiFeed
GoogleAnalyticsReportsApiFeed class to authorize access to and request data from the Google Analytics Core Reporting API.

Code

public function queryReportFeed($params = array(), $cache_options = array()) {

  // Provide defaults if the developer did not override them.
  $params += array(
    '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 = array(
    '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;
}