You are here

public function GoogleAnalyticsCounterFeed::queryReportFeed in Google Analytics Counter 7.3

Query and sanitize report data.

File

./google_analytics_counter_oauth2.lib.inc, line 392
Provides the Google Analytics Counter Feed object type and associated methods. Most of the Google Analytics authentication process is taken over from http://drupal.org/project/google_analytics_reports because all we need here is its Google Analytics…

Class

GoogleAnalyticsCounterFeed
GoogleAnalyticsCounterFeed 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:visits',
    '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;
}