*/ class LSeegroup extends LSldapObject { var $userObjectType = 'LSeepeople'; /** * Constructeur * * Cette methode construit l'objet et définis la configuration. * * @author Benjamin Renard * * @param[in] $config array La configuration de l'objet * * @retval boolean true si l'objet a été construit, false sinon. * * @see LSldapObject::LSldapObject() */ function LSeegroup ($config='auto') { $this -> LSldapObject('LSeegroup',$config); } /** * Retourne la liste des groupes d'un utilisateur * * Retourne un tableau de LSeegroup correspondant aux groupes * auxquels appartient un utilisateur * * @param[in] $userObject Un object user (type : $this -> userObjectType) * * @retval Array of LSeegroup Les groupes de l'utilisateur **/ function listUserGroups($userObject) { $dn = $userObject -> getDn(); $filter = $this -> getObjectFilter(); $filter = '(&'.$filter.'(uniqueMember='.$dn.'))'; return $this -> listObjects($filter,$GLOBALS['LSsession'] -> ldapServer['ldap_config']['basedn'],array('scope' => 'sub')); } /** * Ajoute un utilisateur au groupe * * @param[in] $object Un object user ($this -> userObjectType) : l'utilisateur à ajouter * * @retval boolean true si l'utilisateur à été ajouté, False sinon **/ function addOneMember($object) { if ($object instanceof $this -> userObjectType) { if ($this -> attrs['uniqueMember'] instanceof LSattribute) { $dn = $object -> getDn(); $values = $this -> attrs['uniqueMember'] -> getValue(); if (!is_array($values)) { $updateData = array($dn); } else if (!in_array($dn,$values)) { $values[]=$dn; $updateData = $values; } if (isset($updateData)) { return $GLOBALS['LSldap'] -> update($this -> getType(),$this -> getDn(), array('uniqueMember' => $updateData)); } return true; } } return; } /** * Supprime un utilisateur du groupe * * @param[in] $object Un object (type : $this -> userObjectType) : l'utilisateur à supprimer * * @retval boolean true si l'utilisateur à été supprimé, False sinon **/ function deleteOneMember($object) { if ($object instanceof $this -> userObjectType) { if ($this -> attrs['uniqueMember'] instanceof LSattribute) { $dn = $object -> getDn(); $values = $this -> attrs['uniqueMember'] -> getValue(); if ((!is_array($values)) && (!empty($values))) { $values = array($values); } if (is_array($values)) { $updateData=array(); foreach($values as $value) { if ($value!=$dn) { $updateData[]=$value; } } return $GLOBALS['LSldap'] -> update($this -> getType(),$this -> getDn(), array('uniqueMember' => $updateData)); } } } return; } /** * Renome un utilisateur * * @param[in] $object Un object (type : $this -> userObjectType) : l'utilisateur à renomer * @param[in] $oldDn string L'ancien DN de l'utilisateur * * @retval boolean True en cas de succès, False sinon */ function renameOneMember($object,$oldDn) { if ($object instanceof $this -> userObjectType) { if ($this -> attrs['uniqueMember'] instanceof LSattribute) { $values = $this -> attrs['uniqueMember'] -> getValue(); if ((!is_array($values)) && (!empty($values))) { $values = array($values); } if (is_array($values)) { $updateData=array(); foreach($values as $value) { if ($value!=$oldDn) { $updateData[] = $value; } else { $updateData[] = $object-> getDn(); } } return $GLOBALS['LSldap'] -> update($this -> getType(),$this -> getDn(), array('uniqueMember' => $updateData)); } } } return; } /** * Met à jour les groupes d'un utilisateur * * @param[in] $userObject Mixed Un object (type : $this -> userObjectType) : l'utilisateur * @param[in] $listDns Array(string) Un tableau des DNs des groupes de l'utilisateur * * @retval boolean true si tout c'est bien passé, False sinon **/ function updateUserGroups($userObject,$listDns) { $currentGroups = $this -> listUserGroups($userObject); $type=$this -> getType(); if(is_array($currentGroups)) { if (is_array($listDns)) { $dontDelete=array(); $dontAdd=array(); for ($i=0;$i getDn(); if (in_array($dn, $listDns)) { $dontDelete[$i]=true; $dontAdd[]=$dn; } } for($i=0;$i deleteOneMember($userObject)) { return; } } } foreach($listDns as $dn) { if (in_array($dn,$dontAdd)) { continue; } else { $object = new $type(); if ($object -> loadData($dn)) { if (!$object -> addOneMember($userObject)) { return; } } else { return; } } } return true; } } else { if(!is_array($listDns)) { return true; } foreach($listDns as $dn) { $object = new $type(); if ($object -> loadData($dn)) { if (!$object -> addOneMember($userObject)) { return; } } else { return; } } } } } ?>