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;
}