You are here

public function GAFeed::queryReportFeed in Google Analytics Reports 7

Same name and namespace in other branches
  1. 6 GAFeed.lib.inc \GAFeed::queryReportFeed()

Query and sanitize report data

File

./GAFeed.lib.inc, line 292
Provides the GAFeed object type and associated methods.

Class

GAFeed
GAFeed class to authorize access to and request data from the Google Analytics Data Export 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 ($params['start_date'] == NULL) {

    /* 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 ($params['end_date'] == NULL) {
    $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('analytics/v2.4/data');
  if ($this
    ->query($this->queryPath, $parameters, 'GET', $cache_options)) {
    $this
      ->sanitizeReport();
  }
}