/** * 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; }