public function adminHome($req, $res) { if (!$this->app['user']->isAdmin()) { return $res->redirect('/login?redir=' . urlencode($req->basePath() . $req->path())); } $metrics = []; $chartData = []; $chartGranularities = []; $chartLoadedIntervals = []; $start = -7; $end = 0; $dashboard = (array) $this->app['config']->get('statistics.dashboard'); foreach ($dashboard as $section => $metricClasses) { foreach ($metricClasses as $className) { $className = '\\app\\statistics\\metrics\\' . $className . 'Metric'; $metric = new $className($this->app); $k = $metric->key(); U::array_set($metrics, $section . '.' . $k, $metric->toArray()); if ($metric->hasChart()) { $chartData[$k] = $metric->values(); $gName = $metric::$granularityNames[$metric->granularity()]; $chartGranularities[$k] = $gName; $chartLoadedIntervals[$k] = 'last-7-' . $gName . 's'; } } } return new View('admin/index', ['metrics' => $metrics, 'chartNames' => array_keys($chartData), 'chartData' => $chartData, 'chartGranularities' => $chartGranularities, 'chartLoadedIntervals' => $chartLoadedIntervals, 'title' => 'Statistics']); }