From 226054a6346a2ee0cfc8422491f4c81cbf05a8ba Mon Sep 17 00:00:00 2001 From: Kalle Fagerberg Date: Sun, 17 Jul 2022 12:33:43 +0200 Subject: [PATCH] Moved personal metrics to API endpoint --- appinfo/routes.php | 1 + lib/Controller/PersonalSettingsController.php | 70 +++++++++++++++++++ lib/Settings/GPodderSyncPersonal.php | 51 +------------- 3 files changed, 74 insertions(+), 48 deletions(-) create mode 100644 lib/Controller/PersonalSettingsController.php diff --git a/appinfo/routes.php b/appinfo/routes.php index cad5639..731a7d1 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -14,5 +14,6 @@ return [ ['name' => 'subscription_change#list', 'url' => '/subscriptions', 'verb' => 'GET'], ['name' => 'subscription_change#create', 'url' => '/subscription_change/create', 'verb' => 'POST'], + ['name' => 'personal_settings#metrics', 'url' => '/personal_settings/metrics', 'verb' => 'GET'], ] ]; diff --git a/lib/Controller/PersonalSettingsController.php b/lib/Controller/PersonalSettingsController.php new file mode 100644 index 0000000..4cb07f4 --- /dev/null +++ b/lib/Controller/PersonalSettingsController.php @@ -0,0 +1,70 @@ +l = $l; + $this->subscriptionChangeRepository = $subscriptionChangeRepository; + $this->episodeActionRepository = $episodeActionRepository; + $this->userId = $UserId ?? ''; + } + + /** + * + * @NoAdminRequired + * @NoCSRFRequired + * + * @return JSONResponse + */ + public function metrics(): JSONResponse { + $sinceDatetime = (new DateTime)->setTimestamp(0); + $subscriptions = $this->extractUrlList($this->subscriptionChangeRepository->findAllSubscribed($sinceDatetime, $this->userId)); + $episodeActions = $this->episodeActionRepository->findAll(0, $this->userId); + $subStats = array(); + foreach ($episodeActions as $action) { + $pod = $action->getPodcast(); + $sub = $subStats[$pod] ?? array(); + $sub['started']++; + $subStats[$pod] = $sub; + } + return new JSONResponse([ + 'subscriptions' => $subscriptions, + 'subStats' => $subStats, + ]); + } + + /** + * @param array $allSubscribed + * @return mixed + */ + private function extractUrlList(array $allSubscribed): array { + return array_map(static function (SubscriptionChangeEntity $subscription) { + return $subscription->getUrl(); + }, $allSubscribed); + } +} diff --git a/lib/Settings/GPodderSyncPersonal.php b/lib/Settings/GPodderSyncPersonal.php index 3b23fdb..72452aa 100644 --- a/lib/Settings/GPodderSyncPersonal.php +++ b/lib/Settings/GPodderSyncPersonal.php @@ -1,52 +1,17 @@ config = $config; - $this->l = $l; - $this->subscriptionChangeRepository = $subscriptionChangeRepository; - $this->episodeActionRepository = $episodeActionRepository; - $this->userId = $UserId ?? ''; - } public function getForm(): TemplateResponse { - $sinceDatetime = (new DateTime)->setTimestamp(0); - $subscriptions = $this->extractUrlList($this->subscriptionChangeRepository->findAllSubscribed($sinceDatetime, $this->userId)); - $episodeActions = $this->episodeActionRepository->findAll(0, $this->userId); - $subStats = array(); - foreach ($episodeActions as $action) { - $pod = $action->getPodcast(); - $sub = $subStats[$pod] ?? array(); - $sub['started']++; - $subStats[$pod] = $sub; - } - $params = array( - 'subscriptions' => $subscriptions, - 'subStats' => $subStats, - ); - return new TemplateResponse('gpoddersync', 'settings/personal', $params); + return new TemplateResponse('gpoddersync', 'settings/personal', []); } public function getSection(): string { @@ -56,14 +21,4 @@ class GPodderSyncPersonal implements ISettings { public function getPriority(): int { return 198; } - - /** - * @param array $allSubscribed - * @return mixed - */ - private function extractUrlList(array $allSubscribed): array { - return array_map(static function (SubscriptionChangeEntity $subscription) { - return $subscription->getUrl(); - }, $allSubscribed); - } }