Exemple #1
0
 /**
  * Executes a search on the ldap
  *
  * @param string  $baseDn     Base distinguished name to search in (Default = configured dn)
  * @param string  $filter     Ldap filter according to RFC4515 (Default = null)
  * @param boolean $inDepth    Whether to search through all subtree depth (Default = true)
  * @param array   $attributes Filter attributes to be retrieved (Default: null)
  *
  * @return SearchResult
  */
 public function search($baseDn = null, $filter = null, $inDepth = true, $attributes = null)
 {
     $this->validateBinding();
     $result = new SearchResult();
     $baseDn = null === $baseDn ? $this->configuration['base_dn'] : $baseDn;
     $filter = null === $filter ? '(objectclass=*)' : $filter;
     $attributes = is_array($attributes) ? $attributes : null;
     $scope = $inDepth ? SearchInterface::SCOPE_ALL : SearchInterface::SCOPE_ONE;
     $pageSize = isset($this->configuration['page_size']) ? (int) $this->configuration['page_size'] : 0;
     $eagerLoad = isset($this->configuration['eager_load']) ? (bool) $this->configuration['eager_load'] : true;
     try {
         $search = $this->connection->search($scope, $baseDn, $filter, $attributes, $pageSize, $eagerLoad);
     } catch (NoResultException $e) {
         return $result;
     }
     $result->setSearch($search);
     return $result;
 }