blob: 39ddc0e24e971c03987033905b558dca33ba3180 [file] [log] [blame]
<?php
namespace Adldap\Connections;
/**
* The Connection interface used for making connections. Implementing
* this interface on connection classes helps unit and functional
* test classes that require a connection.
*
* Interface ConnectionInterface
*/
interface ConnectionInterface
{
/**
* The SSL LDAP protocol string.
*
* @var string
*/
const PROTOCOL_SSL = 'ldaps://';
/**
* The standard LDAP protocol string.
*
* @var string
*/
const PROTOCOL = 'ldap://';
/**
* The LDAP SSL port number.
*
* @var string
*/
const PORT_SSL = 636;
/**
* The standard LDAP port number.
*
* @var string
*/
const PORT = 389;
/**
* Constructor.
*
* @param string|null $name The connection name.
*/
public function __construct($name = null);
/**
* Returns true / false if the current connection instance is using SSL.
*
* @return bool
*/
public function isUsingSSL();
/**
* Returns true / false if the current connection instance is using TLS.
*
* @return bool
*/
public function isUsingTLS();
/**
* Returns true / false if the current connection is able to modify passwords.
*
* @return bool
*/
public function canChangePasswords();
/**
* Returns true / false if the current connection is bound.
*
* @return bool
*/
public function isBound();
/**
* Sets the current connection to use SSL.
*
* @param bool $enabled
*
* @return ConnectionInterface
*/
public function ssl($enabled = true);
/**
* Sets the current connection to use TLS.
*
* @param bool $enabled
*
* @return ConnectionInterface
*/
public function tls($enabled = true);
/**
* Returns the full LDAP host URL.
*
* Ex: ldap://192.168.1.1:386
*
* @return string|null
*/
public function getHost();
/**
* Returns the connections name.
*
* @return string|null
*/
public function getName();
/**
* Get the current connection.
*
* @return mixed
*/
public function getConnection();
/**
* Retrieve the entries from a search result.
*
* @link http://php.net/manual/en/function.ldap-get-entries.php
*
* @param $searchResult
*
* @return mixed
*/
public function getEntries($searchResult);
/**
* Returns the number of entries from a search result.
*
* @link http://php.net/manual/en/function.ldap-count-entries.php
*
* @param $searchResult
*
* @return int
*/
public function countEntries($searchResult);
/**
* Compare value of attribute found in entry specified with DN.
*
* @link http://php.net/manual/en/function.ldap-compare.php
*
* @param string $dn
* @param string $attribute
* @param string $value
*
* @return mixed
*/
public function compare($dn, $attribute, $value);
/**
* Retrieves the first entry from a search result.
*
* @link http://php.net/manual/en/function.ldap-first-entry.php
*
* @param $searchResult
*
* @return mixed
*/
public function getFirstEntry($searchResult);
/**
* Retrieves the next entry from a search result.
*
* @link http://php.net/manual/en/function.ldap-next-entry.php
*
* @param $entry
*
* @return mixed
*/
public function getNextEntry($entry);
/**
* Retrieves the ldap entry's attributes.
*
* @link http://php.net/manual/en/function.ldap-get-attributes.php
*
* @param $entry
*
* @return mixed
*/
public function getAttributes($entry);
/**
* Retrieve the last error on the current connection.
*
* @link http://php.net/manual/en/function.ldap-error.php
*
* @return string
*/
public function getLastError();
/**
* Return detailed information about an error.
*
* Returns false when there was a successful last request.
*
* Returns DetailedError when there was an error.
*
* @return DetailedError|null
*/
public function getDetailedError();
/**
* Get all binary values from the specified result entry.
*
* @link http://php.net/manual/en/function.ldap-get-values-len.php
*
* @param $entry
* @param $attribute
*
* @return array
*/
public function getValuesLen($entry, $attribute);
/**
* Sets an option on the current connection.
*
* @link http://php.net/manual/en/function.ldap-set-option.php
*
* @param int $option
* @param mixed $value
*
* @return mixed
*/
public function setOption($option, $value);
/**
* Sets options on the current connection.
*
* @param array $options
*
* @return mixed
*/
public function setOptions(array $options = []);
/**
* Set a callback function to do re-binds on referral chasing.
*
* @link http://php.net/manual/en/function.ldap-set-rebind-proc.php
*
* @param callable $callback
*
* @return bool
*/
public function setRebindCallback(callable $callback);
/**
* Connects to the specified hostname using the specified port.
*
* @link http://php.net/manual/en/function.ldap-start-tls.php
*
* @param string|array $hostname
* @param int $port
*
* @return mixed
*/
public function connect($hostname = [], $port = 389);
/**
* Starts a connection using TLS.
*
* @link http://php.net/manual/en/function.ldap-start-tls.php
*
* @throws ConnectionException If starting TLS fails.
*
* @return mixed
*/
public function startTLS();
/**
* Binds to the current connection using the specified username and password.
* If sasl is true, the current connection is bound using SASL.
*
* @link http://php.net/manual/en/function.ldap-bind.php
*
* @param string $username
* @param string $password
* @param bool $sasl
*
* @throws ConnectionException If starting TLS fails.
*
* @return bool
*/
public function bind($username, $password, $sasl = false);
/**
* Closes the current connection.
*
* Returns false if no connection is present.
*
* @link http://php.net/manual/en/function.ldap-close.php
*
* @return bool
*/
public function close();
/**
* Performs a search on the current connection.
*
* @link http://php.net/manual/en/function.ldap-search.php
*
* @param string $dn
* @param string $filter
* @param array $fields
* @param bool $onlyAttributes
* @param int $size
* @param int $time
*
* @return mixed
*/
public function search($dn, $filter, array $fields, $onlyAttributes = false, $size = 0, $time = 0);
/**
* Reads an entry on the current connection.
*
* @link http://php.net/manual/en/function.ldap-read.php
*
* @param string $dn
* @param $filter
* @param array $fields
* @param bool $onlyAttributes
* @param int $size
* @param int $time
*
* @return mixed
*/
public function read($dn, $filter, array $fields, $onlyAttributes = false, $size = 0, $time = 0);
/**
* Performs a single level search on the current connection.
*
* @link http://php.net/manual/en/function.ldap-list.php
*
* @param string $dn
* @param string $filter
* @param array $attributes
* @param bool $onlyAttributes
* @param int $size
* @param int $time
*
* @return mixed
*/
public function listing($dn, $filter, array $attributes, $onlyAttributes = false, $size = 0, $time = 0);
/**
* Adds an entry to the current connection.
*
* @link http://php.net/manual/en/function.ldap-add.php
*
* @param string $dn
* @param array $entry
*
* @return bool
*/
public function add($dn, array $entry);
/**
* Deletes an entry on the current connection.
*
* @link http://php.net/manual/en/function.ldap-delete.php
*
* @param string $dn
*
* @return bool
*/
public function delete($dn);
/**
* Modify the name of an entry on the current connection.
*
* @link http://php.net/manual/en/function.ldap-rename.php
*
* @param string $dn
* @param string $newRdn
* @param string $newParent
* @param bool $deleteOldRdn
*
* @return bool
*/
public function rename($dn, $newRdn, $newParent, $deleteOldRdn = false);
/**
* Modifies an existing entry on the current connection.
*
* @link http://php.net/manual/en/function.ldap-modify.php
*
* @param string $dn
* @param array $entry
*
* @return bool
*/
public function modify($dn, array $entry);
/**
* Batch modifies an existing entry on the current connection.
*
* @link http://php.net/manual/en/function.ldap-modify-batch.php
*
* @param string $dn
* @param array $values
*
* @return mixed
*/
public function modifyBatch($dn, array $values);
/**
* Add attribute values to current attributes.
*
* @link http://php.net/manual/en/function.ldap-mod-add.php
*
* @param string $dn
* @param array $entry
*
* @return mixed
*/
public function modAdd($dn, array $entry);
/**
* Replaces attribute values with new ones.
*
* @link http://php.net/manual/en/function.ldap-mod-replace.php
*
* @param string $dn
* @param array $entry
*
* @return mixed
*/
public function modReplace($dn, array $entry);
/**
* Delete attribute values from current attributes.
*
* @link http://php.net/manual/en/function.ldap-mod-del.php
*
* @param string $dn
* @param array $entry
*
* @return mixed
*/
public function modDelete($dn, array $entry);
/**
* Send LDAP pagination control.
*
* @link http://php.net/manual/en/function.ldap-control-paged-result.php
*
* @param int $pageSize
* @param bool $isCritical
* @param string $cookie
*
* @return mixed
*/
public function controlPagedResult($pageSize = 1000, $isCritical = false, $cookie = '');
/**
* Retrieve the LDAP pagination cookie.
*
* @link http://php.net/manual/en/function.ldap-control-paged-result-response.php
*
* @param $result
* @param string $cookie
*
* @return mixed
*/
public function controlPagedResultResponse($result, &$cookie);
/**
* Frees up the memory allocated internally to store the result.
*
* @link https://www.php.net/manual/en/function.ldap-free-result.php
*
* @param resource $result
*
* @return bool
*/
public function freeResult($result);
/**
* Returns the error number of the last command
* executed on the current connection.
*
* @link http://php.net/manual/en/function.ldap-errno.php
*
* @return int
*/
public function errNo();
/**
* Returns the extended error string of the last command.
*
* @return string
*/
public function getExtendedError();
/**
* Returns the extended error hex code of the last command.
*
* @return string|null
*/
public function getExtendedErrorHex();
/**
* Returns the extended error code of the last command.
*
* @return string
*/
public function getExtendedErrorCode();
/**
* Returns the error string of the specified
* error number.
*
* @link http://php.net/manual/en/function.ldap-err2str.php
*
* @param int $number
*
* @return string
*/
public function err2Str($number);
/**
* Return the diagnostic Message.
*
* @return string
*/
public function getDiagnosticMessage();
/**
* Extract the diagnostic code from the message.
*
* @param string $message
*
* @return string|bool
*/
public function extractDiagnosticCode($message);
}