diff --git a/VERSIONS_HOTLINE/107991 b/VERSIONS_HOTLINE/107991 new file mode 100644 index 0000000000000000000000000000000000000000..d7bbd82747b23bc9c22b918bd99fd6659407003d --- /dev/null +++ b/VERSIONS_HOTLINE/107991 @@ -0,0 +1 @@ + - ticket #107991 : Groupes d'utilisateurs : correction du calcul de l'appartenance pouvant apparaître sur le critère "âge". \ No newline at end of file diff --git a/library/Class/User/SearchCriteria/Age.php b/library/Class/User/SearchCriteria/Age.php index d83a2b80adaf9151775c43787ded41b253b764a6..557bc18f84e03f5547934ac49f81cc3d4db34c87 100644 --- a/library/Class/User/SearchCriteria/Age.php +++ b/library/Class/User/SearchCriteria/Age.php @@ -79,7 +79,7 @@ class Class_User_SearchCriteria_Age extends Class_SearchCriteria_Abstract { if ($this->_hasFrom() && ($date = $this->substractYearsToCurrentDate((int)$this->_from)) - && $user->getNaissance() < $date) { + && $user->getNaissance() > $date) { return false; } @@ -87,7 +87,7 @@ class Class_User_SearchCriteria_Age extends Class_SearchCriteria_Abstract { return true; $date = $this->substractYearsToCurrentDate((int)$this->_to); - return $user->getNaissance() <= $date; + return $user->getNaissance() >= $date; } diff --git a/library/Class/UserGroup.php b/library/Class/UserGroup.php index 82eba663a208cd513aa03bd153c5724be8ecc782..43172fc8bc595ec8088c48b6cd9459b27b99d580 100644 --- a/library/Class/UserGroup.php +++ b/library/Class/UserGroup.php @@ -28,7 +28,7 @@ class UserGroupLoader extends Storm_Model_Loader { public function save($model) { $result = parent::save($model); if ($model->isDynamic()) - $this->_dynamics_of_user_cache = []; + $this->resetDynamicsOfUserCache(); return $result; } @@ -123,9 +123,18 @@ class UserGroupLoader extends Storm_Model_Loader { } + public function resetDynamicsOfUserCache() { + $this->_dynamics_of_user_cache = []; + return $this; + } + + protected function _realFindAllDynamicsOf($user) { return array_filter(Class_UserGroup::findAllDynamics(), - function($group) use($user) { return $group->hasUser($user); }); + function($group) use($user) + { + return $group->hasUser($user); + }); } } diff --git a/tests/library/Class/DynamicUserGroupTest.php b/tests/library/Class/DynamicUserGroupTest.php index 34968292163fc2851f78364b2bf9e299cee75414..9b6c510df7f9f15505e82703b053e63ae86437ee 100644 --- a/tests/library/Class/DynamicUserGroupTest.php +++ b/tests/library/Class/DynamicUserGroupTest.php @@ -109,6 +109,8 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase { public function setUp() { parent::setUp(); + Class_AdminVar::set('ENABLED_SEARCH_USER_AGE', 1); + $this->_marseillais = $this ->fixture('Class_UserGroup', ['id' => 3, @@ -136,7 +138,9 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase { ->beModoBib() ->assertSave(); - Class_User_ILSSubscription::setTimeSource(new TimeSourceForTest('2020-01-15 15:00')); + $time_source = new TimeSourceForTest('2020-01-15 15:00'); + Class_User_ILSSubscription::setTimeSource($time_source); + Class_User_SearchCriteria_Age::setTimeSource($time_source); $this->_gontran = $this->fixture('Class_Users', ['id' => 22, 'login' => 'gontran', @@ -144,6 +148,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase { 'id_site' => 1, 'idabon' => '111', 'statut' => 1, + 'naissance' => '2000-01-01', 'role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB, 'date_fin' => '2050-01-01' ]); @@ -232,6 +237,35 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase { 'search_role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB, 'search_end_subscription_days'=> 10 ])]); + + $this->_minors = $this + ->fixture('Class_UserGroup', + ['id' => 20, + 'libelle' => 'Mineurs', + 'group_type' => Class_UserGroup::TYPE_DYNAMIC, + 'filters' => json_encode([ + 'search_age_debut' => 0, + 'search_age_fin'=> 17 + ])]); + + + $this->_adults = $this + ->fixture('Class_UserGroup', + ['id' => 21, + 'libelle' => 'Adultes', + 'group_type' => Class_UserGroup::TYPE_DYNAMIC, + 'filters' => json_encode([ + 'search_age_debut' => 18 + ])]); + + Class_UserGroup::resetDynamicsOfUserCache(); + } + + + public function tearDown() { + Class_User_ILSSubscription::setTimeSource(null); + Class_User_SearchCriteria_Age::setTimeSource(null); + parent::tearDown(); } @@ -246,6 +280,8 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase { ['_baptiste', '_basketers'], ['_gontran', '_searchers'], ['_shella', '_subscription_ended'], + ['_shella', '_minors'], + ['_gontran', '_adults'], ]; } @@ -273,6 +309,8 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase { ['_baptiste', '_marseillais'], ['_xavier', '_anneciens'], ['_gontran', '_subscription_ended'], + ['_shella', '_adults'], + ['_gontran', '_minors'], ]; }