Skip to content

Commit

Permalink
Merge pull request #8468 from hregis/develop_ldap
Browse files Browse the repository at this point in the history
NEW Better performance with openldap
  • Loading branch information
eldy committed Mar 29, 2018
2 parents 6ccdb52 + 6e616e1 commit d6dd7f8
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 19 deletions.
22 changes: 14 additions & 8 deletions htdocs/adherents/class/adherent.class.php
Expand Up @@ -1049,13 +1049,15 @@ function fetch_name($firstname,$lastname)
/**
* Load member from database
*
* @param int $rowid Id of object to load
* @param string $ref To load member from its ref
* @param int $fk_soc To load member from its link to third party
* @param string $ref_ext External reference
* @return int >0 if OK, 0 if not found, <0 if KO
* @param int $rowid Id of object to load
* @param string $ref To load member from its ref
* @param int $fk_soc To load member from its link to third party
* @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
*/
function fetch($rowid,$ref='',$fk_soc='',$ref_ext='')
function fetch($rowid,$ref='',$fk_soc='',$ref_ext='',$fetch_optionals=true,$fetch_subscriptions=true)
{
global $langs;

Expand Down Expand Up @@ -1160,10 +1162,14 @@ function fetch($rowid,$ref='',$fk_soc='',$ref_ext='')

// Retreive all extrafield
// fetch optionals attributes and labels
$this->fetch_optionals();
if ($fetch_optionals) {
$this->fetch_optionals();
}

// Load other properties
$result=$this->fetch_subscriptions();
if ($fetch_subscriptions) {
$result=$this->fetch_subscriptions();
}

return $this->id;
}
Expand Down
14 changes: 10 additions & 4 deletions htdocs/adherents/class/adherent_type.class.php
Expand Up @@ -332,7 +332,9 @@ function liste_array()
* Return array of Member objects for member type this->id (or all if this->id not defined)
*
* @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
*/
function listMembersForMemberType($excludefilter='', $mode=0)
Expand All @@ -355,10 +357,14 @@ function listMembersForMemberType($excludefilter='', $mode=0)
{
if (! array_key_exists($obj->rowid, $ret))
{
if ($mode != 1)
if ($mode < 2)
{
$memberstatic=new Adherent($this->db);
$memberstatic->fetch($obj->rowid);
if ($mode == 1) {
$memberstatic->fetch($obj->rowid,'','','',false, false);
} else {
$memberstatic->fetch($obj->rowid);
}
$ret[$obj->rowid]=$memberstatic;
}
else $ret[$obj->rowid]=$obj->rowid;
Expand Down Expand Up @@ -457,7 +463,7 @@ function _load_ldap_info()
foreach($this->members as $key=>$val) // This is array of users for group into dolibarr database.
{
$member=new Adherent($this->db);
$member->fetch($val->id);
$member->fetch($val->id,'','','',false,false);
$info2 = $member->_load_ldap_info();
$valueofldapfield[] = $member->_load_ldap_dn($info2);
}
Expand Down
2 changes: 1 addition & 1 deletion htdocs/adherents/type_ldap.php
Expand Up @@ -63,7 +63,7 @@

if ($result > 0)
{
$object->listMembersForMemberType();
$object->listMembersForMemberType('', 1);

$info = $object->_load_ldap_info();
$dn = $object->_load_ldap_dn($info);
Expand Down
12 changes: 6 additions & 6 deletions htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php
Expand Up @@ -440,7 +440,7 @@ public function runTrigger($action, $object, User $user, Translate $langs, Conf
if ($object->typeid > 0)
{
$membertype->fetch($object->typeid);
$membertype->listMembersForMemberType();
$membertype->listMembersForMemberType('', 1);

$oldinfo=$membertype->_load_ldap_info();
$olddn=$membertype->_load_ldap_dn($oldinfo);
Expand Down Expand Up @@ -560,7 +560,7 @@ public function runTrigger($action, $object, User $user, Translate $langs, Conf
*/
$newmembertype=new AdherentType($this->db);
$newmembertype->fetch($object->typeid);
$newmembertype->listMembersForMemberType();
$newmembertype->listMembersForMemberType('', 1);

$oldinfo=$newmembertype->_load_ldap_info();
$olddn=$newmembertype->_load_ldap_dn($oldinfo);
Expand All @@ -586,7 +586,7 @@ public function runTrigger($action, $object, User $user, Translate $langs, Conf
*/
$oldmembertype=new AdherentType($this->db);
$oldmembertype->fetch($object->oldcopy->typeid);
$oldmembertype->listMembersForMemberType();
$oldmembertype->listMembersForMemberType('', 1);

$oldinfo=$oldmembertype->_load_ldap_info();
$olddn=$oldmembertype->_load_ldap_dn($oldinfo);
Expand Down Expand Up @@ -684,7 +684,7 @@ public function runTrigger($action, $object, User $user, Translate $langs, Conf
*/
$membertype=new AdherentType($this->db);
$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();
$olddn=$membertype->_load_ldap_dn($oldinfo);
Expand Down Expand Up @@ -751,7 +751,7 @@ public function runTrigger($action, $object, User $user, Translate $langs, Conf
$object->oldcopy = clone $object;
}

$object->oldcopy->listMembersForMemberType();
$object->oldcopy->listMembersForMemberType('', 1);

$oldinfo=$object->oldcopy->_load_ldap_info();
$olddn=$object->oldcopy->_load_ldap_dn($oldinfo);
Expand All @@ -765,7 +765,7 @@ public function runTrigger($action, $object, User $user, Translate $langs, Conf
$olddn = '';
}

$object->listMembersForMemberType();
$object->listMembersForMemberType('', 1);

$info=$object->_load_ldap_info();
$dn=$object->_load_ldap_dn($info);
Expand Down

0 comments on commit d6dd7f8

Please sign in to comment.