From 4d3e9c8c02cdc882e9fe1c29625695b6f83c820a Mon Sep 17 00:00:00 2001
From: Benjamin Bellamy <ben@podlibre.org>
Date: Thu, 8 Oct 2020 19:42:57 +0200
Subject: [PATCH] fix: correct chart data

---
 app/Models/AnalyticsPodcastByCountryModel.php   |  4 ++--
 app/Models/AnalyticsPodcastModel.php            |  8 ++------
 app/Models/AnalyticsWebsiteByBrowserModel.php   |  4 ++--
 app/Models/AnalyticsWebsiteByEntryPageModel.php |  5 ++---
 app/Models/AnalyticsWebsiteByRefererModel.php   | 10 ++++------
 5 files changed, 12 insertions(+), 19 deletions(-)

diff --git a/app/Models/AnalyticsPodcastByCountryModel.php b/app/Models/AnalyticsPodcastByCountryModel.php
index d8e8c9b550..753dd7835e 100644
--- a/app/Models/AnalyticsPodcastByCountryModel.php
+++ b/app/Models/AnalyticsPodcastByCountryModel.php
@@ -35,13 +35,13 @@ class AnalyticsPodcastByCountryModel extends Model
         if (!($found = cache("{$podcastId}_analytics_podcast_by_country"))) {
             $found = $this->select('`country_code` as `labels`')
                 ->selectSum('`hits`', '`values`')
-                ->groupBy('`country_code`')
                 ->where([
                     '`podcast_id`' => $podcastId,
                     '`date` >' => date('Y-m-d', strtotime('-1 week')),
                 ])
+                ->groupBy('`labels`')
                 ->orderBy('`values`', 'DESC')
-                ->findAll();
+                ->findAll(10);
 
             cache()->save(
                 "{$podcastId}_analytics_podcast_by_country",
diff --git a/app/Models/AnalyticsPodcastModel.php b/app/Models/AnalyticsPodcastModel.php
index 680ca78d00..6bd1cb56cc 100644
--- a/app/Models/AnalyticsPodcastModel.php
+++ b/app/Models/AnalyticsPodcastModel.php
@@ -56,9 +56,7 @@ class AnalyticsPodcastModel extends Model
     public function getDataByMonth(int $podcastId): array
     {
         if (!($found = cache("{$podcastId}_analytics_podcast_by_month"))) {
-            $found = $this->select(
-                'concat(year(`date`),"-",month(`date`),"-01") as `labels`'
-            )
+            $found = $this->select('DATE_FORMAT(`date`,"%Y-%m-01") as `labels`')
                 ->selectSum('`hits`', '`values`')
                 ->where([
                     '`podcast_id`' => $podcastId,
@@ -124,9 +122,7 @@ class AnalyticsPodcastModel extends Model
                 "{$podcastId}_analytics_podcast_unique_listeners_by_month"
             ))
         ) {
-            $found = $this->select(
-                'concat(year(`date`),"-",month(`date`),"-01") as `labels`'
-            )
+            $found = $this->select('DATE_FORMAT(`date`,"%Y-%m-01") as `labels`')
                 ->selectSum('`unique_listeners`', '`values`')
                 ->where([
                     '`podcast_id`' => $podcastId,
diff --git a/app/Models/AnalyticsWebsiteByBrowserModel.php b/app/Models/AnalyticsWebsiteByBrowserModel.php
index 3e3fdce579..701818e090 100644
--- a/app/Models/AnalyticsWebsiteByBrowserModel.php
+++ b/app/Models/AnalyticsWebsiteByBrowserModel.php
@@ -35,13 +35,13 @@ class AnalyticsWebsiteByBrowserModel extends Model
         if (!($found = cache("{$podcastId}_analytics_website_by_browser"))) {
             $found = $this->select('`browser` as `labels`')
                 ->selectSum('`hits`', '`values`')
-                ->groupBy('`browser`')
                 ->where([
                     '`podcast_id`' => $podcastId,
                     '`date` >' => date('Y-m-d', strtotime('-1 week')),
                 ])
+                ->groupBy('`labels`')
                 ->orderBy('`values`', 'DESC')
-                ->findAll();
+                ->findAll(10);
 
             cache()->save(
                 "{$podcastId}_analytics_website_by_browser",
diff --git a/app/Models/AnalyticsWebsiteByEntryPageModel.php b/app/Models/AnalyticsWebsiteByEntryPageModel.php
index 352017f2b0..308beb5cc4 100644
--- a/app/Models/AnalyticsWebsiteByEntryPageModel.php
+++ b/app/Models/AnalyticsWebsiteByEntryPageModel.php
@@ -35,14 +35,13 @@ class AnalyticsWebsiteByEntryPageModel extends Model
         if (!($found = cache("{$podcastId}_analytics_website_by_entry_page"))) {
             $found = $this->select('`entry_page` as `labels`')
                 ->selectSum('`hits`', '`values`')
-                ->groupBy('`entry_page`')
                 ->where([
                     '`podcast_id`' => $podcastId,
                     '`date` >' => date('Y-m-d', strtotime('-1 week')),
                 ])
+                ->groupBy('`labels`')
                 ->orderBy('`values`', 'DESC')
-                ->limit(10)
-                ->findAll();
+                ->findAll(10);
 
             cache()->save(
                 "{$podcastId}_analytics_website_by_entry_page",
diff --git a/app/Models/AnalyticsWebsiteByRefererModel.php b/app/Models/AnalyticsWebsiteByRefererModel.php
index 9f414bcf40..dd4cb0afee 100644
--- a/app/Models/AnalyticsWebsiteByRefererModel.php
+++ b/app/Models/AnalyticsWebsiteByRefererModel.php
@@ -35,14 +35,13 @@ class AnalyticsWebsiteByRefererModel extends Model
         if (!($found = cache("{$podcastId}_analytics_website_by_referer"))) {
             $found = $this->select('`referer` as `labels`')
                 ->selectSum('`hits`', '`values`')
-                ->groupBy('`referer`')
                 ->where([
                     '`podcast_id`' => $podcastId,
                     '`date` >' => date('Y-m-d', strtotime('-1 week')),
                 ])
+                ->groupBy('`labels`')
                 ->orderBy('`values`', 'DESC')
-                ->limit(10)
-                ->findAll();
+                ->findAll(10);
 
             cache()->save(
                 "{$podcastId}_analytics_website_by_referer",
@@ -65,14 +64,13 @@ class AnalyticsWebsiteByRefererModel extends Model
         if (!($found = cache("{$podcastId}_analytics_website_by_domain"))) {
             $found = $this->select('`domain` as `labels`')
                 ->selectSum('`hits`', '`values`')
-                ->groupBy('`domain`')
                 ->where([
                     '`podcast_id`' => $podcastId,
                     '`date` >' => date('Y-m-d', strtotime('-1 week')),
                 ])
+                ->groupBy('`labels`')
                 ->orderBy('`values`', 'DESC')
-                ->limit(10)
-                ->findAll();
+                ->findAll(10);
 
             cache()->save(
                 "{$podcastId}_analytics_website_by_domain",
-- 
GitLab