Merge pull request #8468 from hregis/develop_ldap

NEW Better performance with openldap
This commit is contained in:
Laurent Destailleur 2018-03-29 13:37:34 +02:00 committed by GitHub
commit d6dd7f87cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 19 deletions

View File

@ -1053,9 +1053,11 @@ class Adherent extends CommonObject
* @param string $ref To load member from its ref * @param string $ref To load member from its ref
* @param int $fk_soc To load member from its link to third party * @param int $fk_soc To load member from its link to third party
* @param string $ref_ext External reference * @param string $ref_ext External reference
* @param bool $fetch_optionals To load optionals (extrafields)
* @param bool $fetch_subscriptions To load member subscriptions
* @return int >0 if OK, 0 if not found, <0 if KO * @return int >0 if OK, 0 if not found, <0 if KO
*/ */
function fetch($rowid,$ref='',$fk_soc='',$ref_ext='') function fetch($rowid,$ref='',$fk_soc='',$ref_ext='',$fetch_optionals=true,$fetch_subscriptions=true)
{ {
global $langs; global $langs;
@ -1160,10 +1162,14 @@ class Adherent extends CommonObject
// Retreive all extrafield // Retreive all extrafield
// fetch optionals attributes and labels // fetch optionals attributes and labels
if ($fetch_optionals) {
$this->fetch_optionals(); $this->fetch_optionals();
}
// Load other properties // Load other properties
if ($fetch_subscriptions) {
$result=$this->fetch_subscriptions(); $result=$this->fetch_subscriptions();
}
return $this->id; return $this->id;
} }

View File

@ -332,7 +332,9 @@ class AdherentType extends CommonObject
* Return array of Member objects for member type this->id (or all if this->id not defined) * Return array of Member objects for member type this->id (or all if this->id not defined)
* *
* @param string $excludefilter Filter to exclude * @param string $excludefilter Filter to exclude
* @param int $mode 0=Return array of member instance, 1=Return array of members id only * @param int $mode 0=Return array of member instance
* 1=Return array of member instance without extra data
* 2=Return array of members id only
* @return mixed Array of members or -1 on error * @return mixed Array of members or -1 on error
*/ */
function listMembersForMemberType($excludefilter='', $mode=0) function listMembersForMemberType($excludefilter='', $mode=0)
@ -355,10 +357,14 @@ class AdherentType extends CommonObject
{ {
if (! array_key_exists($obj->rowid, $ret)) if (! array_key_exists($obj->rowid, $ret))
{ {
if ($mode != 1) if ($mode < 2)
{ {
$memberstatic=new Adherent($this->db); $memberstatic=new Adherent($this->db);
if ($mode == 1) {
$memberstatic->fetch($obj->rowid,'','','',false, false);
} else {
$memberstatic->fetch($obj->rowid); $memberstatic->fetch($obj->rowid);
}
$ret[$obj->rowid]=$memberstatic; $ret[$obj->rowid]=$memberstatic;
} }
else $ret[$obj->rowid]=$obj->rowid; else $ret[$obj->rowid]=$obj->rowid;
@ -457,7 +463,7 @@ class AdherentType extends CommonObject
foreach($this->members as $key=>$val) // This is array of users for group into dolibarr database. foreach($this->members as $key=>$val) // This is array of users for group into dolibarr database.
{ {
$member=new Adherent($this->db); $member=new Adherent($this->db);
$member->fetch($val->id); $member->fetch($val->id,'','','',false,false);
$info2 = $member->_load_ldap_info(); $info2 = $member->_load_ldap_info();
$valueofldapfield[] = $member->_load_ldap_dn($info2); $valueofldapfield[] = $member->_load_ldap_dn($info2);
} }

View File

@ -63,7 +63,7 @@ if (empty($reshook))
if ($result > 0) if ($result > 0)
{ {
$object->listMembersForMemberType(); $object->listMembersForMemberType('', 1);
$info = $object->_load_ldap_info(); $info = $object->_load_ldap_info();
$dn = $object->_load_ldap_dn($info); $dn = $object->_load_ldap_dn($info);

View File

@ -440,7 +440,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
if ($object->typeid > 0) if ($object->typeid > 0)
{ {
$membertype->fetch($object->typeid); $membertype->fetch($object->typeid);
$membertype->listMembersForMemberType(); $membertype->listMembersForMemberType('', 1);
$oldinfo=$membertype->_load_ldap_info(); $oldinfo=$membertype->_load_ldap_info();
$olddn=$membertype->_load_ldap_dn($oldinfo); $olddn=$membertype->_load_ldap_dn($oldinfo);
@ -560,7 +560,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
*/ */
$newmembertype=new AdherentType($this->db); $newmembertype=new AdherentType($this->db);
$newmembertype->fetch($object->typeid); $newmembertype->fetch($object->typeid);
$newmembertype->listMembersForMemberType(); $newmembertype->listMembersForMemberType('', 1);
$oldinfo=$newmembertype->_load_ldap_info(); $oldinfo=$newmembertype->_load_ldap_info();
$olddn=$newmembertype->_load_ldap_dn($oldinfo); $olddn=$newmembertype->_load_ldap_dn($oldinfo);
@ -586,7 +586,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
*/ */
$oldmembertype=new AdherentType($this->db); $oldmembertype=new AdherentType($this->db);
$oldmembertype->fetch($object->oldcopy->typeid); $oldmembertype->fetch($object->oldcopy->typeid);
$oldmembertype->listMembersForMemberType(); $oldmembertype->listMembersForMemberType('', 1);
$oldinfo=$oldmembertype->_load_ldap_info(); $oldinfo=$oldmembertype->_load_ldap_info();
$olddn=$oldmembertype->_load_ldap_dn($oldinfo); $olddn=$oldmembertype->_load_ldap_dn($oldinfo);
@ -684,7 +684,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 $membertype->listMembersForMemberType('a.rowid != ' . $object->id, 1); // 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);
@ -751,7 +751,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
$object->oldcopy = clone $object; $object->oldcopy = clone $object;
} }
$object->oldcopy->listMembersForMemberType(); $object->oldcopy->listMembersForMemberType('', 1);
$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);
@ -765,7 +765,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers
$olddn = ''; $olddn = '';
} }
$object->listMembersForMemberType(); $object->listMembersForMemberType('', 1);
$info=$object->_load_ldap_info(); $info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info); $dn=$object->_load_ldap_dn($info);