Fix: use another method

This commit is contained in:
Regis Houssin 2017-09-21 12:16:01 +02:00
parent 1f59e4f7e9
commit 01f9d59e75
5 changed files with 49 additions and 38 deletions

View File

@ -729,7 +729,15 @@ class Adherent extends CommonObject
// Check parameters // Check parameters
if (empty($rowid)) $rowid=$this->id; 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 // Remove category
$sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_member WHERE fk_member = ".$rowid; $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) if (! $error)
{ {
$this->db->commit(); $this->db->commit();

View File

@ -256,10 +256,9 @@ class AdherentType extends CommonObject
* Fonction qui permet de recuperer le status de l'adherent * Fonction qui permet de recuperer le status de l'adherent
* *
* @param int $rowid Id of member type to load * @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 * @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 = "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"; $sql .= " FROM ".MAIN_DB_PREFIX."adherent_type as d";
@ -282,10 +281,6 @@ class AdherentType extends CommonObject
$this->mail_valid = $obj->mail_valid; $this->mail_valid = $obj->mail_valid;
$this->note = $obj->note; $this->note = $obj->note;
$this->vote = $obj->vote; $this->vote = $obj->vote;
if ($load_members) {
$this->members=$this->listMembersForMemberType();
}
} }
return 1; return 1;
@ -375,6 +370,8 @@ class AdherentType extends CommonObject
$this->db->free($resql); $this->db->free($resql);
$this->members=$ret;
return $ret; return $ret;
} }
else else

View File

@ -154,6 +154,10 @@ if ($action == 'update' && $user->rights->adherent->configurer)
{ {
$object->fetch($rowid); $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->oldcopy = clone $object;
$object->label = trim($label); $object->label = trim($label);

View File

@ -63,6 +63,8 @@ if (empty($reshook))
if ($result > 0) if ($result > 0)
{ {
$object->listMembersForMemberType();
$info = $object->_load_ldap_info(); $info = $object->_load_ldap_info();
$dn = $object->_load_ldap_dn($info); $dn = $object->_load_ldap_dn($info);
$olddn = $dn; // We can say that old dn = dn as we force synchro $olddn = $dn; // We can say that old dn = dn as we force synchro

View File

@ -437,6 +437,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
if ($object->typeid > 0) if ($object->typeid > 0)
{ {
$membertype->fetch($object->typeid); $membertype->fetch($object->typeid);
$membertype->listMembersForMemberType();
$oldinfo=$membertype->_load_ldap_info(); $oldinfo=$membertype->_load_ldap_info();
$olddn=$membertype->_load_ldap_dn($oldinfo); $olddn=$membertype->_load_ldap_dn($oldinfo);
@ -549,36 +550,38 @@ class InterfaceLdapsynchro extends DolibarrTriggers
// For member type // For member type
if (! empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') 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) 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 * Remove member in old member type
*/ */
$oldmembertype=new AdherentType($this->db); $oldmembertype=new AdherentType($this->db);
$oldmembertype->fetch($object->oldcopy->typeid); $oldmembertype->fetch($object->oldcopy->typeid);
$oldmembertype->listMembersForMemberType();
$oldinfo=$oldmembertype->_load_ldap_info(); $oldinfo=$oldmembertype->_load_ldap_info();
$olddn=$oldmembertype->_load_ldap_dn($oldinfo); $olddn=$oldmembertype->_load_ldap_dn($oldinfo);
@ -676,6 +679,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
*/ */
$membertype=new AdherentType($this->db); $membertype=new AdherentType($this->db);
$membertype->fetch($object->typeid); $membertype->fetch($object->typeid);
$membertype->listMembersForMemberType('a.rowid != ' . $object->id); // remove deleted member from the list
$oldinfo=$membertype->_load_ldap_info(); $oldinfo=$membertype->_load_ldap_info();
$olddn=$membertype->_load_ldap_dn($oldinfo); $olddn=$membertype->_load_ldap_dn($oldinfo);
@ -742,6 +746,8 @@ class InterfaceLdapsynchro extends DolibarrTriggers
$object->oldcopy = clone $object; $object->oldcopy = clone $object;
} }
$object->oldcopy->listMembersForMemberType();
$oldinfo=$object->oldcopy->_load_ldap_info(); $oldinfo=$object->oldcopy->_load_ldap_info();
$olddn=$object->oldcopy->_load_ldap_dn($oldinfo); $olddn=$object->oldcopy->_load_ldap_dn($oldinfo);
@ -754,6 +760,8 @@ class InterfaceLdapsynchro extends DolibarrTriggers
$olddn = ''; $olddn = '';
} }
$object->listMembersForMemberType();
$info=$object->_load_ldap_info(); $info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info); $dn=$object->_load_ldap_dn($info);