/** * @Route("/report", name="report") * @Template() */ public function reportAction(Request $request) { $reportingService = $this->get('intracto_secret_santa.reporting'); $pools = $reportingService->getPools(); $options = new AnalyticsOptions(); $options->loadFromRequest($request); $data = array('pools' => $pools, 'options' => $options); try { $data['analytics'] = $reportingService->getAnalytics($options); } catch (\Exception $e) { $translator = $this->get('translator'); $this->addFlash('error', $translator->trans('flashes.analytics.invalid_data')); } return $data; }
public function getAnalytics(AnalyticsOptions $options) { $cachingId = $options->uniqueCachingString(); if ($this->cache->contains($cachingId)) { return unserialize($this->cache->fetch($cachingId)); } $ga = new GApi($this->ga_email, $this->ga_password); $ga->requestReportData($this->ga_profile_id, $options->getDimensions(), $options->getMetrics(), $options->getSortMetric(), $options->getFilter(), $options->getStartDate(), $options->getEndDate(), $options->getStartIndex(), $options->getMaxResults()); $results = array('totals' => $ga->getVisits()); foreach ($ga->getResults() as $item) { $results[$options->getDimension()][(string) $item] = $item->getVisits(); } $this->cache->save($cachingId, serialize($results), 3600); return $results; }