f3->get('REQUEST'); $mode = $request['mode']; $modelMap = \Utils\Constants::get('CHART_MODEL_MAP'); $model = array_key_exists($mode, $modelMap) ? new $modelMap[$mode]() : null; return $model ? $model->getData($apiKey) : [[], []]; } public function getStat(int $apiKey): array { $request = $this->f3->get('REQUEST'); $dateRange = $this->getDatesRange($request); $mode = $request['mode']; $model = new \Models\Dashboard(); $result = [ 'total' => null, 'allTimeTotal' => null, ]; switch ($mode) { case 'totalEvents': $result['total'] = $model->getTotalEvents($dateRange, $apiKey); $result['allTimeTotal'] = $model->getTotalEvents(null, $apiKey); break; case 'totalUsers': $result['total'] = $model->getTotalUsers($dateRange, $apiKey); $result['allTimeTotal'] = $model->getTotalUsers(null, $apiKey); break; case 'totalIps': $result['total'] = $model->getTotalIps($dateRange, $apiKey); $result['allTimeTotal'] = $model->getTotalIps(null, $apiKey); break; case 'totalCountries': $result['total'] = $model->getTotalCountries($dateRange, $apiKey); $result['allTimeTotal'] = $model->getTotalCountries(null, $apiKey); break; case 'totalUrls': $result['total'] = $model->getTotalResources($dateRange, $apiKey); $result['allTimeTotal'] = $model->getTotalResources(null, $apiKey); break; case 'totalUsersForReview': $result['total'] = $model->getTotalUsersForReview($dateRange, $apiKey); $result['allTimeTotal'] = $model->getTotalUsersForReview(null, $apiKey); break; case 'totalBlockedUsers': $result['total'] = $model->getTotalBlockedUsers($dateRange, $apiKey); $result['allTimeTotal'] = $model->getTotalBlockedUsers(null, $apiKey); break; } return $result; } public function getTopTen(int $apiKey): array { $params = $this->f3->get('GET'); $dateRange = $this->getDatesRange($params); $mode = $params['mode']; $modelMap = \Utils\Constants::get('TOP_TEN_MODELS_MAP'); $model = array_key_exists($mode, $modelMap) ? new $modelMap[$mode]() : null; $data = $model ? $model->getList($apiKey, $dateRange) : []; $total = count($data); return [ 'draw' => $params['draw'] ?? 1, 'recordsTotal' => $total, 'recordsFiltered' => $total, 'data' => $data, ]; } }