diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e52d9f0df75c5be1ea4ea3603b8a530bcdf0a58..4d373fb10e4dd4ea756161cdd088b2dfb751a9a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,24 @@ CHANGELOG - PHP 8 requis. +5.0.5 (07/11/2024) +------------------ + +- Modification de l'entité "Groupe" + - gestion de l'attribut gidNumber et utilisation de la class d'objet "extensibleObject" + - gestion de l'utilisateur uid=nobody,ou=system lorsqu'un groupe ne possède aucun membre alors que l'attribut "member" est obligatoire +- Ajout d'une fonction qui teste l'existance d'une entité dans Ldap directement au niveau de l'entité + +5.0.4 (29/02/2024) +------------------ + +- Capture des erreurs renvoyées par la fonction ldap_search + +5.0.3 (22/11/2023) +------------------ + +- Ajout de l'option "useStartTls" pour utiliser une connexion TLS qui est recommandé + 4.0.2 (01/04/2022) ------------------ diff --git a/src/UnicaenLdap/Entity/Base/Group.php b/src/UnicaenLdap/Entity/Base/Group.php index cff93408931b7dbd94206a7466958b610768ebe1..e130a8f021bf1d12f1feedaf6d6a7a399b2b83ec 100644 --- a/src/UnicaenLdap/Entity/Base/Group.php +++ b/src/UnicaenLdap/Entity/Base/Group.php @@ -3,6 +3,7 @@ namespace UnicaenLdap\Entity\Base; use UnicaenLdap\Entity\Entity; +use UnicaenLdap\Entity\Group as GroupEntity; use UnicaenLdap\Entity\People as PeopleEntity; use UnicaenLdap\Entity\Structure as StructureEntity; use UnicaenLdap\Entity\System as SystemEntity; @@ -36,6 +37,7 @@ class Group extends Entity 'top', 'groupOfNames', 'supannGroupe', + 'extensibleObject' // attribut gidNumber ]; /** @@ -54,6 +56,7 @@ class Group extends Entity 'supannGroupeLecteurDN', 'supannGroupeAdminDN', 'supannRefId', + 'gidNumber' ]; /** @@ -127,7 +130,10 @@ class Group extends Entity } }, $value); - $this->appendOrNot('member', array_filter($value), $append); + $value = array_filter($value); + $members = !$append ? (!empty($value) ? $value : [$this->getMemberNobody()]) : $value; + + $this->appendOrNot('member', $members, $append); return $this; } @@ -151,7 +157,9 @@ class Group extends Entity return $val->toString(); } elseif ($val instanceof PeopleEntity) { return $val->getDn(); - } else { + } elseif ($val instanceof GroupEntity) { + return $val->getDn(); + }else { return null; } }, $value); @@ -204,7 +212,7 @@ class Group extends Entity return $val->toString(); } elseif ($val instanceof PeopleEntity) { return $val->getDn(); - } elseif ($val instanceof SystemEntity) { + } elseif ($val instanceof GroupEntity) { return $val->getDn(); } else { @@ -236,7 +244,7 @@ class Group extends Entity return $val->toString(); } elseif ($val instanceof PeopleEntity) { return $val->getDn(); - } elseif ($val instanceof SystemEntity) { + } elseif ($val instanceof GroupEntity) { return $val->getDn(); } else { @@ -269,4 +277,24 @@ class Group extends Entity return $this; } + + /** + * Attribut Ldap "gidNumber" + * + * @param array|string|null $value + * @param bool $append + * @return self + * @throws Exception + * @throws LdapException + */ + public function setGidNumber($value = null, $append = false) + { + $value = $this->preFormat($value); + $value = array_filter($value, function ($v) { + return preg_match('/^\d+$/', $v); + }); + $this->appendOrNot('gidNumber', $value, $append); + + return $this; + } } \ No newline at end of file diff --git a/src/UnicaenLdap/Entity/Entity.php b/src/UnicaenLdap/Entity/Entity.php index 4be6734f57adb1434023e1925327e9e18521e5ec..7e1963b585aa7ab7c39de3bb15140bd79c920d8b 100644 --- a/src/UnicaenLdap/Entity/Entity.php +++ b/src/UnicaenLdap/Entity/Entity.php @@ -466,6 +466,17 @@ abstract class Entity } } + /** + * Teste si l'entité existe + * + * @return bool + * @throws LdapException + */ + public function exists() + { + return $this->attach()->getNode()->exists(); + } + /** * Déplacement de l'entité dans un autre OU (Organizational Unit) *