From 0e847e3fadba75b5f0b2ca3b826165e9207a2393 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Fri, 14 Feb 2020 10:23:43 +0000 Subject: [PATCH] update user statistics --- src/Controller/UsersController.php | 23 ++++++++++++++++++++- src/Template/Users/statistics.ctp | 32 ++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/Controller/UsersController.php b/src/Controller/UsersController.php index f7918c54a..7837cda91 100644 --- a/src/Controller/UsersController.php +++ b/src/Controller/UsersController.php @@ -2,6 +2,7 @@ namespace App\Controller; use App\Controller\AppController; +use Cake\Datasource\ConnectionManager; use Cake\I18n\Time; /** @@ -27,6 +28,7 @@ class UsersController extends AppController public function statistics() { + $startTime = microtime(true); $this->viewBuilder()->setLayout('frontend_ripple'); $users = $this->Users->find('all')->select(['id']); @@ -42,7 +44,26 @@ class UsersController extends AppController $newUsersLastMonth = $this->Users->find('all') ->select(['id']) ->where(['created >=' => $prevSortDate[0], 'created <' => $prevSortDate[1]]); - $this->set(compact('users', 'newUsersThisMonth', 'newUsersLastMonth')); + + // new user sorted after date + $connection = ConnectionManager::get('loginServer'); + $newAccountsPerDay = $connection->execute('SELECT count(id) as count, created FROM users GROUP BY CAST(created as DATE) ORDER BY created DESC ')->fetchAll('assoc'); + + $newAccountsTree = []; + foreach($newAccountsPerDay as $entry) { + $created = new Time($entry['created']); + if(!isset($newAccountsTree[$created->year])) { + $newAccountsTree[$created->year] = []; + } + if(!isset($newAccountsTree[$created->year][$created->month])) { + $newAccountsTree[$created->year][$created->month] = ['count' => 0, 'days' => []]; + } + array_push($newAccountsTree[$created->year][$created->month]['days'], $entry); + $newAccountsTree[$created->year][$created->month]['count'] += intval($entry['count']); + } + + $timeUsed = microtime(true) - $startTime; + $this->set(compact('users', 'newUsersThisMonth', 'newUsersLastMonth', 'timeUsed', 'newAccountsTree')); } /** diff --git a/src/Template/Users/statistics.ctp b/src/Template/Users/statistics.ctp index c1f1088d5..06359ae39 100644 --- a/src/Template/Users/statistics.ctp +++ b/src/Template/Users/statistics.ctp @@ -56,4 +56,36 @@ if($users->count() > 0 && $newUsersLastMonth->count()) { +
+
+
+
+

+
+
+ + + + + + + + + + $yearEntrys) : ?> + $monthEntrys): ?> + + + + + + + + + +
Tage
+
+
+
+
Html->script(['core', 'vendor.addons']); ?> \ No newline at end of file