From fe5b208b1798889f4d19273a477e1174461f3dc7 Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT <hdlaurent@afi-sa.fr> Date: Tue, 19 Jul 2022 15:15:31 +0200 Subject: [PATCH] hotline#160253 : Users : Change in NeverLogged search --- VERSIONS_HOTLINE/160253 | 1 + .../Class/User/SearchCriteria/NeverLogged.php | 9 ++-- .../admin/controllers/UsersControllerTest.php | 41 ++++++++++++++++++- 3 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 VERSIONS_HOTLINE/160253 diff --git a/VERSIONS_HOTLINE/160253 b/VERSIONS_HOTLINE/160253 new file mode 100644 index 00000000000..a83539839eb --- /dev/null +++ b/VERSIONS_HOTLINE/160253 @@ -0,0 +1 @@ + - correctif #160253 : Utilisateurs: Les utilisateurs ayant des dates positionnées à 0000-00-00 sont aussi des utilisateurs qui n'ont jamais été connectés \ No newline at end of file diff --git a/library/Class/User/SearchCriteria/NeverLogged.php b/library/Class/User/SearchCriteria/NeverLogged.php index 404072ffcd8..2d6bba571bf 100644 --- a/library/Class/User/SearchCriteria/NeverLogged.php +++ b/library/Class/User/SearchCriteria/NeverLogged.php @@ -21,6 +21,9 @@ class Class_User_SearchCriteria_NeverLogged extends Class_SearchCriteria_Abstract { + const + EMPTY_DATE= "0000-00-00 00:00:00"; + protected $_name = 'never_logged'; @@ -40,14 +43,14 @@ class Class_User_SearchCriteria_NeverLogged extends Class_SearchCriteria_Abstrac if (!$this->_value) return true; - return $model->getLastLogin() == null; + return (!$model->getLastLogin()) + || $model->getLastLogin() == static::EMPTY_DATE; } public function acceptSearchVisitor($visitor) { if (!$this->_value) return; - - $visitor->addWhereParam('last_login is null'); + $visitor->addWhereParam('last_login is null or last_login="'.static::EMPTY_DATE.'"'); } } diff --git a/tests/application/modules/admin/controllers/UsersControllerTest.php b/tests/application/modules/admin/controllers/UsersControllerTest.php index 4fa25af4181..f91a6ab70eb 100644 --- a/tests/application/modules/admin/controllers/UsersControllerTest.php +++ b/tests/application/modules/admin/controllers/UsersControllerTest.php @@ -1602,7 +1602,6 @@ abstract class UsersControllerDoubleTestCase extends Admin_AbstractControllerTes 'role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB, 'id_site' => 1, 'idabon' => '49', - 'last_login' => 0, 'ordreabon' => 2, 'last_login' => '2020-10-04']); @@ -2470,4 +2469,44 @@ class Admin_UsersControllerEditModoBibTest extends Admin_AbstractControllerTestC public function formIdSIteOptionsShouldNotContainsWonderVille() { $this->assertXPathCount('//form//select[@id="id_site"]/option',2); } +} + + + + +class UsersControllerSearchNeverLoggedTest extends AbstractControllerTestCase { + protected $_users_model; + + public function setUp() { + parent::setUp(); + $this->fixture(Class_Bib::class, + ['id' => 1, + 'libelle' => 'Majolieville' + ]); + + $this->fixture(Class_Users::class, + ['id' => 2, + 'login' => 'Ret', + 'password' => 'urn', + 'role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB, + 'id_site' => 1, + 'idabon' => '49', + 'last_login' => '0000-00-00 00:00:00', + 'ordreabon' => 1]); + + $this->OnLoaderOfModel(Class_Users::class); + $this->postDispatch('/admin/users',['search_never_logged'=>1]); + } + + + /** @test */ + public function queryOnUsersShouldSearchOnLastLoginNullOrLastLoginEmptyDate() { + $this->assertEquals([ + 'order' => 'nom asc', + 'where' => '(last_login is null or last_login="0000-00-00 00:00:00") AND (role_level <= 6)', + 'limitPage' => [1, 20] + ], + Class_Users::getFirstAttributeForMethodCallAt('findAllBy',1) + ); + } } \ No newline at end of file -- GitLab