$modx->getCacheManager(); $analytics = $modx->cacheManager->get($days . '-analytics'); if (empty($analytics)) { //Retrieve all the data as xml $toplandingspagesxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/data?ids=' . $settings['profileId'] . '&start-date=' . $settings['start_date'] . '&end-date=' . $settings['end_date'] . '&dimensions=ga%3ApagePath&metrics=ga%3Aentrances%2Cga%3Abounces%2Cga%3AentranceBounceRate%2Cga%3Aexits&sort=-ga:entrances'); $topexitpagesxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/data?ids=' . $settings['profileId'] . '&start-date=' . $settings['start_date'] . '&end-date=' . $settings['end_date'] . '&dimensions=ga%3ApagePath&metrics=ga%3Aexits%2Cga%3Apageviews%2Cga%3AexitRate&sort=-ga:exits'); $keywordsxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/data?ids=' . $settings['profileId'] . '&start-date=' . $settings['start_date'] . '&end-date=' . $settings['end_date'] . '&dimensions=ga%3Akeyword&metrics=ga%3Avisits%2Cga%3ApageviewsPerVisit%2Cga%3AavgTimeOnSite%2Cga%3ApercentNewVisits%2Cga%3AvisitBounceRate&sort=-ga:visits'); $sitesearchxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/data?ids=' . $settings['profileId'] . '&start-date=' . $settings['start_date'] . '&end-date=' . $settings['end_date'] . '&dimensions=ga%3AsearchKeyword&metrics=ga%3AsearchUniques%2Cga%3AsearchResultViews%2Cga%3AsearchExitRate%2Cga%3AsearchDuration%2Cga%3AsearchDepth&sort=-ga:searchUniques'); $trafficsourcesxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/data?ids=' . $settings['profileId'] . '&start-date=' . $settings['start_date'] . '&end-date=' . $settings['end_date'] . '&dimensions=ga%3Asource&metrics=ga%3Avisits%2Cga%3Avisitors%2Cga%3ApageviewsPerVisit%2Cga%3AavgTimeOnSite%2Cga%3ApercentNewVisits%2Cga%3AvisitBounceRate&sort=-ga:visits'); $generalxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/data?ids=' . $settings['profileId'] . '&start-date=' . $settings['start_date'] . '&end-date=' . $settings['end_date'] . '&dimensions=ga%3Ayear&metrics=ga%3Avisits%2Cga%3Avisitors%2Cga%3Apageviews%2Cga%3ApageviewsPerVisit%2Cga%3AavgTimeOnSite%2Cga%3ApercentNewVisits%2Cga%3AvisitBounceRate&sort=-ga:visits'); $visitscharxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/data?ids=' . $settings['profileId'] . '&start-date=' . $settings['start_date'] . '&end-date=' . $settings['end_date'] . '&dimensions=ga%3Adate&metrics=ga%3Avisits%2Cga%3Avisitors%2Cga%3Apageviews%2Cga%3ApageviewsPerVisit%2Cga%3AavgTimeOnSite%2Cga%3ApercentNewVisits%2Cga%3AvisitBounceRate&sort=ga:date'); $devicescharxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/data?ids=' . $settings['profileId'] . '&start-date=' . $settings['start_date'] . '&end-date=' . $settings['end_date'] . '&dimensions=ga%3AoperatingSystem&metrics=ga%3Avisits&sort=ga:visits'); $mobilecharxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/data?ids=' . $settings['profileId'] . '&start-date=' . $settings['start_date'] . '&end-date=' . $settings['end_date'] . '&dimensions=ga%3AisMobile&metrics=ga%3Avisits&sort=ga:visits'); $goalnamesxml = $ga->callApi($settings['sessionToken'], 'https://www.google.com/analytics/feeds/datasources/ga/accounts/' . $settings['accountId'] . '/webproperties/' . $settings['webPropertyId'] . '/profiles/~all/goals'); //xml data to array $toplandingspages = $ga->parseData($toplandingspagesxml); $topexitpages = $ga->parseData($topexitpagesxml); $keywords = $ga->parseData($keywordsxml); $sitesearch = $ga->parseData($sitesearchxml); $trafficsourceschar = $ga->parseData($trafficsourcesxml); $general = $ga->parseData($generalxml); $visits = $ga->parseData($visitscharxml); $goalnames = $ga->parseDataGoals($goalnamesxml); $deviceschar = $ga->parseData($devicescharxml); $mobilechar = $ga->parseData($mobilecharxml); //generate the goals api call foreach ($goalnames as $goalname) { $goalMetrics .= 'ga%3Agoal' . $goalname['id'] . 'Completions%2C'; } $goalMetrics .= 'ga%3AgoalCompletionsAll'; //retrieve goals as xml