implémenter reconnect()
This commit is contained in:
parent
eeee4cfffc
commit
9084233540
|
@ -133,6 +133,27 @@ class LdapConn extends Parametrable implements ICloseable {
|
|||
$this->conn = $this->tryConnect($binddn, $password, $controls, $this->conn);
|
||||
}
|
||||
|
||||
/**
|
||||
* se reconnecter, mais seulement s'il y a une erreur sur la connection
|
||||
*
|
||||
* @return true si la reconnexion a effectivement eu lieu
|
||||
*/
|
||||
function reconnect(bool $force=false): bool {
|
||||
if (!$force) {
|
||||
try {
|
||||
$this->_search(null, [
|
||||
"attrs" => ["objectClass"],
|
||||
"scope" => "base",
|
||||
"suffix" => "",
|
||||
])->first();
|
||||
} catch (LdapException $e) {
|
||||
$force = true;
|
||||
}
|
||||
}
|
||||
if ($force) $this->connect();
|
||||
return $force;
|
||||
}
|
||||
|
||||
/** @return resource */
|
||||
protected function conn() {
|
||||
if ($this->conn === null) $this->connect();
|
||||
|
|
|
@ -132,6 +132,7 @@ class LdapSearch extends Parametrable implements IteratorAggregate {
|
|||
/** @var array */
|
||||
protected $ppControls;
|
||||
|
||||
/** @throws LdapException */
|
||||
function getIterator() {
|
||||
$conn = $this->conn;
|
||||
$args = [$conn];
|
||||
|
@ -161,12 +162,12 @@ class LdapSearch extends Parametrable implements IteratorAggregate {
|
|||
$rr = LdapException::check("search", $conn, $rr);
|
||||
|
||||
try {
|
||||
$er = ldap_first_entry($conn, $rr);
|
||||
$er = LdapException::check("first_entry", $conn, ldap_first_entry($conn, $rr));
|
||||
while ($er !== false) {
|
||||
$dn = ldap_get_dn($conn, $er);
|
||||
$entry = ldap_get_attributes($conn, $er);
|
||||
yield $dn => $entry;
|
||||
$er = ldap_next_entry($conn, $er);
|
||||
$er = LdapException::check("next_entry", $conn, ldap_next_entry($conn, $er));
|
||||
}
|
||||
} catch (StopException $e) {
|
||||
} finally {
|
||||
|
@ -177,6 +178,8 @@ class LdapSearch extends Parametrable implements IteratorAggregate {
|
|||
/**
|
||||
* retourner la première entrée du résultat de la recherche ou null si la
|
||||
* recherche ne retourne aucun résultat
|
||||
*
|
||||
* @throws LdapException
|
||||
*/
|
||||
function first(?string &$dn=null): ?array {
|
||||
$it = $this->getIterator();
|
||||
|
|
Loading…
Reference in New Issue