From 01f9d59e759d6daef533521f08a0508877169467 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 21 Sep 2017 12:16:01 +0200 Subject: [PATCH] Fix: use another method --- htdocs/adherents/class/adherent.class.php | 18 +++---- .../adherents/class/adherent_type.class.php | 9 ++-- htdocs/adherents/type.php | 4 ++ htdocs/adherents/type_ldap.php | 2 + ...interface_50_modLdap_Ldapsynchro.class.php | 54 +++++++++++-------- 5 files changed, 49 insertions(+), 38 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 47bf219216c..ffeb68c9445 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -729,7 +729,15 @@ class Adherent extends CommonObject // Check parameters if (empty($rowid)) $rowid=$this->id; - $this->db->begin(); + $this->db->begin(); + + if (! $error && ! $notrigger) + { + // Call trigger + $result=$this->call_trigger('MEMBER_DELETE',$user); + if ($result < 0) $error++; + // End call triggers + } // Remove category $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_member WHERE fk_member = ".$rowid; @@ -797,14 +805,6 @@ class Adherent extends CommonObject } } - if (! $error && ! $notrigger) - { - // Call trigger - $result=$this->call_trigger('MEMBER_DELETE',$user); - if ($result < 0) $error++; - // End call triggers - } - if (! $error) { $this->db->commit(); diff --git a/htdocs/adherents/class/adherent_type.class.php b/htdocs/adherents/class/adherent_type.class.php index 7293fd10e90..30c85618bfa 100644 --- a/htdocs/adherents/class/adherent_type.class.php +++ b/htdocs/adherents/class/adherent_type.class.php @@ -256,10 +256,9 @@ class AdherentType extends CommonObject * Fonction qui permet de recuperer le status de l'adherent * * @param int $rowid Id of member type to load - * @param bool $load_members Load members or not * @return int <0 if KO, >0 if OK */ - function fetch($rowid, $load_members = true) + function fetch($rowid) { $sql = "SELECT d.rowid, d.libelle as label, d.statut, d.subscription, d.mail_valid, d.note, d.vote"; $sql .= " FROM ".MAIN_DB_PREFIX."adherent_type as d"; @@ -282,10 +281,6 @@ class AdherentType extends CommonObject $this->mail_valid = $obj->mail_valid; $this->note = $obj->note; $this->vote = $obj->vote; - - if ($load_members) { - $this->members=$this->listMembersForMemberType(); - } } return 1; @@ -375,6 +370,8 @@ class AdherentType extends CommonObject $this->db->free($resql); + $this->members=$ret; + return $ret; } else diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index b59d8b7530d..ee9f9b2f3c8 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -154,6 +154,10 @@ if ($action == 'update' && $user->rights->adherent->configurer) { $object->fetch($rowid); + if (! empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') { + $object->listMembersForMemberType(); + } + $object->oldcopy = clone $object; $object->label = trim($label); diff --git a/htdocs/adherents/type_ldap.php b/htdocs/adherents/type_ldap.php index e610f651df5..d4de1a2afdb 100644 --- a/htdocs/adherents/type_ldap.php +++ b/htdocs/adherents/type_ldap.php @@ -63,6 +63,8 @@ if (empty($reshook)) if ($result > 0) { + $object->listMembersForMemberType(); + $info = $object->_load_ldap_info(); $dn = $object->_load_ldap_dn($info); $olddn = $dn; // We can say that old dn = dn as we force synchro diff --git a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php index 05a9a5a1b20..a906ec821ed 100644 --- a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php +++ b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php @@ -437,6 +437,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers if ($object->typeid > 0) { $membertype->fetch($object->typeid); + $membertype->listMembersForMemberType(); $oldinfo=$membertype->_load_ldap_info(); $olddn=$membertype->_load_ldap_dn($oldinfo); @@ -549,36 +550,38 @@ class InterfaceLdapsynchro extends DolibarrTriggers // For member type if (! empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') { + /* + * Change member info + */ + $newmembertype=new AdherentType($this->db); + $newmembertype->fetch($object->typeid); + $newmembertype->listMembersForMemberType(); + + $oldinfo=$newmembertype->_load_ldap_info(); + $olddn=$newmembertype->_load_ldap_dn($oldinfo); + + // Verify if entry exist + $container=$newmembertype->_load_ldap_dn($oldinfo,1); + $search = "(".$newmembertype->_load_ldap_dn($oldinfo,2).")"; + $records=$ldap->search($container,$search); + if (count($records) && $records['count'] == 0) + { + $olddn = ''; + } + + $info=$newmembertype->_load_ldap_info(); // Contains all members, included the new one (insert already done before trigger call) + $dn=$newmembertype->_load_ldap_dn($info); + + $result=$ldap->update($dn,$info,$user,$olddn); + if ($object->oldcopy->typeid != $object->typeid) { - /* - * Add member in new member type - */ - $newmembertype=new AdherentType($this->db); - $newmembertype->fetch($object->typeid); - - $oldinfo=$newmembertype->_load_ldap_info(); - $olddn=$newmembertype->_load_ldap_dn($oldinfo); - - // Verify if entry exist - $container=$newmembertype->_load_ldap_dn($oldinfo,1); - $search = "(".$newmembertype->_load_ldap_dn($oldinfo,2).")"; - $records=$ldap->search($container,$search); - if (count($records) && $records['count'] == 0) - { - $olddn = ''; - } - - $info=$newmembertype->_load_ldap_info(); // Contains all members, included the new one (insert already done before trigger call) - $dn=$newmembertype->_load_ldap_dn($info); - - $result=$ldap->update($dn,$info,$user,$olddn); - /* * Remove member in old member type */ $oldmembertype=new AdherentType($this->db); $oldmembertype->fetch($object->oldcopy->typeid); + $oldmembertype->listMembersForMemberType(); $oldinfo=$oldmembertype->_load_ldap_info(); $olddn=$oldmembertype->_load_ldap_dn($oldinfo); @@ -676,6 +679,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers */ $membertype=new AdherentType($this->db); $membertype->fetch($object->typeid); + $membertype->listMembersForMemberType('a.rowid != ' . $object->id); // remove deleted member from the list $oldinfo=$membertype->_load_ldap_info(); $olddn=$membertype->_load_ldap_dn($oldinfo); @@ -742,6 +746,8 @@ class InterfaceLdapsynchro extends DolibarrTriggers $object->oldcopy = clone $object; } + $object->oldcopy->listMembersForMemberType(); + $oldinfo=$object->oldcopy->_load_ldap_info(); $olddn=$object->oldcopy->_load_ldap_dn($oldinfo); @@ -754,6 +760,8 @@ class InterfaceLdapsynchro extends DolibarrTriggers $olddn = ''; } + $object->listMembersForMemberType(); + $info=$object->_load_ldap_info(); $dn=$object->_load_ldap_dn($info);