Commit 323feb7bf264523098edf2eee200bedad651d638
1 parent
03760d20
Exists in
master
and in
1 other branch
Nouvelle simplification de la logique des stats
=> (on utilise AppController.afterFilter() au lieu de config/bootstrap.php et src/Routing/Filter/SessionTimeoutFilter.php) => par contre, ça gère pas bien le logout, mais c'est pas grave car c'est rattrappé par le login suivant (qui fait memes stats que logout) v4.106.7-3.7.9
Showing
6 changed files
with
50 additions
and
12 deletions
Show diff stats
CHANGES.txt
... | ... | @@ -134,6 +134,12 @@ Outre ces changements, voici d'autres changements importants : |
134 | 134 | ======= CHANGES ======= |
135 | 135 | |
136 | 136 | ------- |
137 | +26/10/2020 v4.106.7-3.7.9 | |
138 | + - (i) Nouvelle simplification de la logique des stats | |
139 | + => (on utilise AppController.afterFilter() au lieu de config/bootstrap.php et src/Routing/Filter/SessionTimeoutFilter.php) | |
140 | + => par contre, ça gère pas bien le logout, mais c'est pas grave car c'est rattrappé par le login suivant (qui fait memes stats que logout) | |
141 | + | |
142 | +------- | |
137 | 143 | 24/10/2020 v4.106.6-3.7.9 |
138 | 144 | - (i) Grosse refactorisation et simplification de la logique des stats (UsersController => StatsTable) |
139 | 145 | ... | ... |
README.md
... | ... | @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : |
42 | 42 | |
43 | 43 | -------------------------------------------------------------------------------------------- |
44 | 44 | |
45 | -Date: 24/10/2020 | |
46 | -Version: 4.106.6-3.7.9 | |
45 | +Date: 26/10/2020 | |
46 | +Version: 4.106.7-3.7.9 | |
47 | 47 | |
48 | 48 | |
49 | 49 | HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) | ... | ... |
config/bootstrap.php
... | ... | @@ -281,6 +281,11 @@ Type::build('datetime') |
281 | 281 | //Plugin::load('BootstrapUI'); |
282 | 282 | Plugin::load('BootstrapUI', ['autoload' => true]); |
283 | 283 | |
284 | +// Activer Stats via src/Routing/Filter/SessionTimeoutFilter.php | |
285 | +$SessionTimeoutON = false; | |
286 | +//$SessionTimeoutON = true; | |
287 | + | |
284 | 288 | // (EP20201022) Pour gérer le timeout auto |
289 | +if ($SessionTimeoutON) | |
285 | 290 | DispatcherFactory::add('SessionTimeout'); |
286 | 291 | ... | ... |
src/Controller/AppController.php
... | ... | @@ -2750,6 +2750,22 @@ class AppController extends Controller |
2750 | 2750 | // si l'user n'est pas loggé, on ne va pas plus loin |
2751 | 2751 | if ( ! isset($_SESSION['Auth']['User']) ) return true; |
2752 | 2752 | |
2753 | + // STATS | |
2754 | + // - LOGIN | |
2755 | + //debug($this->a); | |
2756 | + if ($this->a == 'login') { | |
2757 | + $this->statsUpdateForCurrentUserWhen(null, 'sur login'); | |
2758 | + } | |
2759 | + // - LOGOUT (marche pas, why ?...) | |
2760 | + elseif ($this->a == 'logout') { | |
2761 | + //debug("logout"); | |
2762 | + $this->statsUpdateForCurrentUserWhen(null,'sur logout'); | |
2763 | + //exit; | |
2764 | + } | |
2765 | + // - Toute autre action | |
2766 | + else | |
2767 | + (new UsersController())->statsUpdateForCurrentUserWhen(null, 'durant la session'); | |
2768 | + | |
2753 | 2769 | // pb avec QrCode : pas de $this->e, donc on évite |
2754 | 2770 | ////if ($this instanceof QrCodesController) return true; |
2755 | 2771 | ... | ... |
src/Controller/UsersController.php
... | ... | @@ -8,13 +8,17 @@ use Cake\I18n\FrozenDate; |
8 | 8 | use Cake\I18n\FrozenTime; |
9 | 9 | use Cake\ORM\Entity; |
10 | 10 | |
11 | +// Activer Stats via src/Routing/Filter/SessionTimeoutFilter.php | |
12 | +const SessionTimeoutON = false; | |
13 | +//const SessionTimeoutON = true; | |
14 | + | |
11 | 15 | /** |
12 | 16 | * Users Controller |
13 | 17 | * |
14 | 18 | * @property \App\Model\Table\UsersTable $Users |
15 | 19 | */ |
16 | -class UsersController extends AppController | |
17 | -{ | |
20 | +class UsersController extends AppController { | |
21 | + | |
18 | 22 | |
19 | 23 | |
20 | 24 | /* |
... | ... | @@ -208,6 +212,7 @@ class UsersController extends AppController |
208 | 212 | ] |
209 | 213 | */ |
210 | 214 | |
215 | + if (SessionTimeoutON) | |
211 | 216 | $this->statsUpdateForCurrentUserWhen(null, 'sur login'); |
212 | 217 | //$this->statsUpdateForCurrentUserOnLogin(); |
213 | 218 | //exit; |
... | ... | @@ -224,6 +229,7 @@ class UsersController extends AppController |
224 | 229 | public function logout() { |
225 | 230 | //debug("LOGOUT !"); |
226 | 231 | //debug($this->u); |
232 | + if (SessionTimeoutON) | |
227 | 233 | $this->statsUpdateForCurrentUserWhen(null,'sur logout'); |
228 | 234 | //$this->statsUpdateForCurrentUserOnLogout(); |
229 | 235 | //$this->Flash->success('You are now logged out.'); |
... | ... | @@ -277,6 +283,7 @@ class UsersController extends AppController |
277 | 283 | * au moment de l'événement $event_name |
278 | 284 | */ |
279 | 285 | public function statsUpdateForCurrentUserWhen($session_user=null, $event_name) { |
286 | + //debug("ici"); | |
280 | 287 | $user_id = ($event_name=='sur logout') ? $this->u->id : $this->_getCurrentUserEntityFromSession($session_user)->id; |
281 | 288 | //debug($user); |
282 | 289 | $this->Users->Stats->updateForUserWhen($user_id, $event_name); | ... | ... |
src/Model/Table/StatsTable.php
... | ... | @@ -194,18 +194,25 @@ class StatsTable extends Table |
194 | 194 | $current_user_stat->connex_nb++; |
195 | 195 | } |
196 | 196 | |
197 | + else { // Pendant la session OU BIEN au logout | |
198 | + $last_login_time = $current_user_stat->last_login_time; | |
199 | + // - on calcule le temps de connexion | |
200 | + $connex_duration = $now->diff($last_login_time); | |
201 | + $connex_duration = $connex_duration->h*3600 + $connex_duration->i*60 + $connex_duration->s; | |
202 | + $current_user_stat->last_connex_dur = $connex_duration; | |
197 | 203 | /* |
198 | 204 | * - PENDANT la session (à chaque action) ( == 'durant la session') |
199 | 205 | * |
200 | - * => on met à jour son temps de connexion | |
206 | + * => on met à jour son temps de connexion last_connex_dur | |
201 | 207 | * |
202 | 208 | */ |
203 | - elseif ($event_name == 'durant la session') { | |
209 | + if ($event_name == 'durant la session') { | |
204 | 210 | // On met à jour le temps de connexion |
205 | - $connex_duration = $now->diff($current_user_stat->last_login_time); | |
211 | + ///$connex_duration = $now->diff($last_login_time); | |
206 | 212 | //debug($connex_duration); |
207 | 213 | //exit; |
208 | - $current_user_stat->last_connex_dur = $connex_duration->h*3600 + $connex_duration->i*60 + $connex_duration->s; | |
214 | + ///$current_user_stat->last_connex_dur = $connex_duration->h*3600 + $connex_duration->i*60 + $connex_duration->s; | |
215 | + ///$current_user_stat->last_connex_dur = $connex_duration; | |
209 | 216 | //debug($current_user_stat->last_connex_dur); |
210 | 217 | } |
211 | 218 | |
... | ... | @@ -217,13 +224,9 @@ class StatsTable extends Table |
217 | 224 | * |
218 | 225 | */ |
219 | 226 | else { |
220 | - $last_login_time = $current_user_stat->last_login_time; | |
221 | 227 | // 1) On met à jour le champ last_logout_time |
222 | 228 | $current_user_stat->last_logout_time = $now; |
223 | 229 | // 2) On met à jour le temps de connexion total (cumulé) |
224 | - // - on calcule le temps de connexion | |
225 | - $connex_duration = $now->diff($last_login_time); | |
226 | - $connex_duration = $connex_duration->h*3600 + $connex_duration->i*60 + $connex_duration->s; | |
227 | 230 | //debug($last_login_time); |
228 | 231 | //debug($last_logout_time); |
229 | 232 | //debug($connex_dur_totation); |
... | ... | @@ -233,6 +236,7 @@ class StatsTable extends Table |
233 | 236 | $current_user_stat->connex_dur_tot += $connex_duration; |
234 | 237 | //debug($current_user_stat->connex_dur_tot); |
235 | 238 | } |
239 | + } // Pendant la session OU BIEN au logout | |
236 | 240 | |
237 | 241 | // 3) On sauvegarde en table |
238 | 242 | $this->saveStat($current_user_stat, $event_name); | ... | ... |