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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user