From ddc51bd9561690dbec52b2cebdeb3cd482b8c3fc Mon Sep 17 00:00:00 2001 From: efalcy <efalcy@afi-sa.fr> Date: Wed, 26 Oct 2016 17:45:52 +0200 Subject: [PATCH] hotline #47906 : refacto cosmogramme import abonne --- cosmogramme/php/classes/classe_abonne.php | 15 +++-------- library/Class/Users.php | 27 +++++++++++++++++++ library/ZendAfi/Auth/Adapter/CommSigb.php | 15 ++--------- .../ZendAfi/Auth/Adapter/AuthCommSigbTest.php | 2 +- 4 files changed, 33 insertions(+), 26 deletions(-) diff --git a/cosmogramme/php/classes/classe_abonne.php b/cosmogramme/php/classes/classe_abonne.php index bbd292c9ee5..4ed646651f6 100644 --- a/cosmogramme/php/classes/classe_abonne.php +++ b/cosmogramme/php/classes/classe_abonne.php @@ -157,18 +157,9 @@ class abonne protected function findMatchingUserInDB($data) { - if (isset($data['ID_SIGB']) - && ($data['ID_SIGB']) - && ($user = Class_Users::findFirstBy(['id_sigb' => $data['ID_SIGB']]))) - return $user; - - $params_existing_user = ['login'=>$data["LOGIN"], - 'id_site'=>$data['ID_SITE']]; - - if (isset($data['ORDREABON'])) - $params_existing_user['ordreabon'] = $data['ORDREABON']; - - return Class_Users::findFirstBy($params_existing_user); + $user = Class_Users::newInstance($data); + $bib = Class_IntBib::find($data['ID_SITE']); + return Class_Users::findMatchingPatron($user,$bib); } diff --git a/library/Class/Users.php b/library/Class/Users.php index f947c7eb02d..a17aa1ec544 100644 --- a/library/Class/Users.php +++ b/library/Class/Users.php @@ -42,6 +42,33 @@ class UsersLoader extends Storm_Model_Loader { } + public function findMatchingPatron($patron,$bib) { + if (!$bib || !$patron) + return null; + + if ($patron->getOrdreabon() && + $user = Class_Users::findFirstBy(['login' => $patron->getLogin(), + 'ordreabon' => $patron->getOrdreabon(), + 'id_site' => $bib->getIdBib()])) + return $user; + + if ($user = Class_Users::findFirstBy(['login' => $patron->getLogin(), + 'id_sigb' => $patron->getIdSigb(), + 'id_site' => $bib->getIdBib()])) + return $user; + + if ($user = Class_Users::findFirstBy(['login' => $patron->getLogin(), + 'id_site' => $bib->getIdBib()])) + return $user; + + if ($patron->getIdSigb() && + $user = Class_Users::findFirstBy(['id_site' => $bib->getIdBib(), + 'id_sigb' => $patron->getIdSigb()])) + return $user; + + return null; + + } public function findAllLike($search, $by_right = null, $limit = 500) { $sql_template = 'select bib_admin_users.* from bib_admin_users '; diff --git a/library/ZendAfi/Auth/Adapter/CommSigb.php b/library/ZendAfi/Auth/Adapter/CommSigb.php index d3d36114c9a..d05f5ee0c1e 100644 --- a/library/ZendAfi/Auth/Adapter/CommSigb.php +++ b/library/ZendAfi/Auth/Adapter/CommSigb.php @@ -75,18 +75,8 @@ class ZendAfi_Auth_Adapter_CommSigb implements Zend_Auth_Adapter_Interface { if (!$this->_bib) return $new_user; - - if ($user = Class_Users::findFirstBy(['login' => $user_from_sigb->getLogin(), - 'id_sigb' => $user_from_sigb->getIdSigb(), - 'id_site' => $this->_bib->getIdBib()])) - return $user; - - if ($user = Class_Users::findFirstBy(['login' => $user_from_sigb->getLogin(), - 'id_site' => $this->_bib->getIdBib()])) - return $user; - - if ($user = Class_Users::findFirstBy(['id_site' => $this->_bib->getIdBib(), - 'id_sigb' => $user_from_sigb->getIdSigb()])) + xdebug_break(); + if ($user = Class_Users::findMatchingPatron($user_from_sigb, $this->_bib)) return $user; return $new_user; @@ -132,7 +122,6 @@ class ZendAfi_Auth_Adapter_CommSigb implements Zend_Auth_Adapter_Interface { public function authResult($user) { $result = new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $this->_identity); - if(!$user) return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND, $this->_identity); diff --git a/tests/library/ZendAfi/Auth/Adapter/AuthCommSigbTest.php b/tests/library/ZendAfi/Auth/Adapter/AuthCommSigbTest.php index 561c2cf116b..b498932b0eb 100644 --- a/tests/library/ZendAfi/Auth/Adapter/AuthCommSigbTest.php +++ b/tests/library/ZendAfi/Auth/Adapter/AuthCommSigbTest.php @@ -315,7 +315,7 @@ class AuthCommSigbSuccessfullAuthenticationWithExistingFamilleUserTest extends A /** @test */ public function zorkGirlShouldBeAbonneSIGB() { - $this->assertTrue($this->_zork_girl->isAbonne()); + $this->assertTrue(Class_Users::find(85)->isAbonne()); } } -- GitLab