blob: a1773addfbd6cd1fd4f56030d87d7d7864e05233 [file] [log] [blame]
<?php
namespace LdapRecord;
interface LdapInterface
{
/**
* 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;
/**
* Various useful server control OID's.
*
* @see https://ldap.com/ldap-oid-reference-guide/
* @see http://msdn.microsoft.com/en-us/library/cc223359.aspx
*/
const OID_SERVER_START_TLS = '1.3.6.1.4.1.1466.20037';
const OID_SERVER_PAGED_RESULTS = '1.2.840.113556.1.4.319';
const OID_SERVER_SHOW_DELETED = '1.2.840.113556.1.4.417';
const OID_SERVER_SORT = '1.2.840.113556.1.4.473';
const OID_SERVER_CROSSDOM_MOVE_TARGET = '1.2.840.113556.1.4.521';
const OID_SERVER_NOTIFICATION = '1.2.840.113556.1.4.528';
const OID_SERVER_EXTENDED_DN = '1.2.840.113556.1.4.529';
const OID_SERVER_LAZY_COMMIT = '1.2.840.113556.1.4.619';
const OID_SERVER_SD_FLAGS = '1.2.840.113556.1.4.801';
const OID_SERVER_TREE_DELETE = '1.2.840.113556.1.4.805';
const OID_SERVER_DIRSYNC = '1.2.840.113556.1.4.841';
const OID_SERVER_VERIFY_NAME = '1.2.840.113556.1.4.1338';
const OID_SERVER_DOMAIN_SCOPE = '1.2.840.113556.1.4.1339';
const OID_SERVER_SEARCH_OPTIONS = '1.2.840.113556.1.4.1340';
const OID_SERVER_PERMISSIVE_MODIFY = '1.2.840.113556.1.4.1413';
const OID_SERVER_ASQ = '1.2.840.113556.1.4.1504';
const OID_SERVER_FAST_BIND = '1.2.840.113556.1.4.1781';
const OID_SERVER_CONTROL_VLVREQUEST = '2.16.840.1.113730.3.4.9';
/**
* Query OID's.
*
* @see https://ldapwiki.com/wiki/LDAP_MATCHING_RULE_IN_CHAIN
*/
const OID_MATCHING_RULE_IN_CHAIN = '1.2.840.113556.1.4.1941';
/**
* Set the current connection to use SSL.
*
* @param bool $enabled
*
* @return $this
*/
public function ssl();
/**
* Determine if the current connection instance is using SSL.
*
* @return bool
*/
public function isUsingSSL();
/**
* Set the current connection to use TLS.
*
* @param bool $enabled
*
* @return $this
*/
public function tls();
/**
* Determine if the current connection instance is using TLS.
*
* @return bool
*/
public function isUsingTLS();
/**
* Determine if the connection is bound.
*
* @return bool
*/
public function isBound();
/**
* Determine if the connection has been created.
*
* @return bool
*/
public function isConnected();
/**
* Determine the connection is able to modify passwords.
*
* @return bool
*/
public function canChangePasswords();
/**
* Returns the full LDAP host URL.
*
* Ex: ldap://192.168.1.1:386
*
* @return string|null
*/
public function getHost();
/**
* Get the underlying connection resource.
*
* @return resource|null
*/
public function getConnection();
/**
* Retrieve the entries from a search result.
*
* @see http://php.net/manual/en/function.ldap-get-entries.php
*
* @param resource $searchResults
*
* @return array
*/
public function getEntries($searchResults);
/**
* Retrieve the last error on the current connection.
*
* @see http://php.net/manual/en/function.ldap-error.php
*
* @return string|null
*/
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();
/**
* Set an option on the current connection.
*
* @see http://php.net/manual/en/function.ldap-set-option.php
*
* @param int $option
* @param mixed $value
*
* @return bool
*/
public function setOption($option, $value);
/**
* Set options on the current connection.
*
* @param array $options
*
* @return void
*/
public function setOptions(array $options = []);
/**
* Get the value for the LDAP option.
*
* @see https://www.php.net/manual/en/function.ldap-get-option.php
*
* @param int $option
* @param mixed $value
*
* @return mixed
*/
public function getOption($option, &$value = null);
/**
* Starts a connection using TLS.
*
* @see http://php.net/manual/en/function.ldap-start-tls.php
*
* @throws LdapRecordException
*
* @return bool
*/
public function startTLS();
/**
* Connects to the specified hostname using the specified port.
*
* @see http://php.net/manual/en/function.ldap-start-tls.php
*
* @param string|array $hosts
* @param int $port
*
* @return resource|false
*/
public function connect($hosts = [], $port = 389);
/**
* Closes the current connection.
*
* Returns false if no connection is present.
*
* @see http://php.net/manual/en/function.ldap-close.php
*
* @return bool
*/
public function close();
/**
* Performs a search on the current connection.
*
* @see 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
* @param int $deref
* @param array $serverControls
*
* @return resource
*/
public function search($dn, $filter, array $fields, $onlyAttributes = false, $size = 0, $time = 0, $deref = null, $serverControls = []);
/**
* Performs a single level search on the current connection.
*
* @see http://php.net/manual/en/function.ldap-list.php
*
* @param string $dn
* @param string $filter
* @param array $fields
* @param bool $onlyAttributes
* @param int $size
* @param int $time
* @param int $deref
* @param array $serverControls
*
* @return resource
*/
public function listing($dn, $filter, array $fields, $onlyAttributes = false, $size = 0, $time = 0, $deref = null, $serverControls = []);
/**
* Reads an entry on the current connection.
*
* @see http://php.net/manual/en/function.ldap-read.php
*
* @param string $dn
* @param string $filter
* @param array $fields
* @param bool $onlyAttributes
* @param int $size
* @param int $time
* @param int $deref
* @param array $serverControls
*
* @return resource
*/
public function read($dn, $filter, array $fields, $onlyAttributes = false, $size = 0, $time = 0, $deref = null, $serverControls = []);
/**
* Extract information from an LDAP result.
*
* @see https://www.php.net/manual/en/function.ldap-parse-result.php
*
* @param resource $result
* @param int $errorCode
* @param string $dn
* @param string $errorMessage
* @param array $referrals
* @param array $serverControls
*
* @return bool
*/
public function parseResult($result, &$errorCode, &$dn, &$errorMessage, &$referrals, &$serverControls = []);
/**
* Binds to the current connection using the specified username and password.
* If sasl is true, the current connection is bound using SASL.
*
* @see http://php.net/manual/en/function.ldap-bind.php
*
* @param string $username
* @param string $password
*
* @throws LdapRecordException
*
* @return bool
*/
public function bind($username, $password);
/**
* Adds an entry to the current connection.
*
* @see http://php.net/manual/en/function.ldap-add.php
*
* @param string $dn
* @param array $entry
*
* @throws LdapRecordException
*
* @return bool
*/
public function add($dn, array $entry);
/**
* Deletes an entry on the current connection.
*
* @see http://php.net/manual/en/function.ldap-delete.php
*
* @param string $dn
*
* @throws LdapRecordException
*
* @return bool
*/
public function delete($dn);
/**
* Modify the name of an entry on the current connection.
*
* @see http://php.net/manual/en/function.ldap-rename.php
*
* @param string $dn
* @param string $newRdn
* @param string $newParent
* @param bool $deleteOldRdn
*
* @throws LdapRecordException
*
* @return bool
*/
public function rename($dn, $newRdn, $newParent, $deleteOldRdn = false);
/**
* Modifies an existing entry on the current connection.
*
* @see http://php.net/manual/en/function.ldap-modify.php
*
* @param string $dn
* @param array $entry
*
* @throws LdapRecordException
*
* @return bool
*/
public function modify($dn, array $entry);
/**
* Batch modifies an existing entry on the current connection.
*
* @see http://php.net/manual/en/function.ldap-modify-batch.php
*
* @param string $dn
* @param array $values
*
* @throws LdapRecordException
*
* @return bool
*/
public function modifyBatch($dn, array $values);
/**
* Add attribute values to current attributes.
*
* @see http://php.net/manual/en/function.ldap-mod-add.php
*
* @param string $dn
* @param array $entry
*
* @throws LdapRecordException
*
* @return bool
*/
public function modAdd($dn, array $entry);
/**
* Replaces attribute values with new ones.
*
* @see http://php.net/manual/en/function.ldap-mod-replace.php
*
* @param string $dn
* @param array $entry
*
* @throws LdapRecordException
*
* @return bool
*/
public function modReplace($dn, array $entry);
/**
* Delete attribute values from current attributes.
*
* @see http://php.net/manual/en/function.ldap-mod-del.php
*
* @param string $dn
* @param array $entry
*
* @throws LdapRecordException
*
* @return bool
*/
public function modDelete($dn, array $entry);
/**
* Send LDAP pagination control.
*
* @see http://php.net/manual/en/function.ldap-control-paged-result.php
*
* @param int $pageSize
* @param bool $isCritical
* @param string $cookie
*
* @return bool
*/
public function controlPagedResult($pageSize = 1000, $isCritical = false, $cookie = '');
/**
* Retrieve the LDAP pagination cookie.
*
* @see http://php.net/manual/en/function.ldap-control-paged-result-response.php
*
* @param resource $result
* @param string $cookie
*
* @return bool
*/
public function controlPagedResultResponse($result, &$cookie);
/**
* Frees up the memory allocated internally to store the result.
*
* @see 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.
*
* @see http://php.net/manual/en/function.ldap-errno.php
*
* @return int|null
*/
public function errNo();
/**
* Returns the error string of the specified error number.
*
* @see http://php.net/manual/en/function.ldap-err2str.php
*
* @param int $number
*
* @return string
*/
public function err2Str($number);
/**
* Returns the LDAP protocol to utilize for the current connection.
*
* @return string
*/
public function getProtocol();
/**
* Returns the extended error code of the last command.
*
* @return string
*/
public function getExtendedError();
/**
* Return the diagnostic Message.
*
* @return string
*/
public function getDiagnosticMessage();
/**
* Determine if the current PHP version supports server controls.
*
* @deprecated since v2.5.0
*
* @return bool
*/
public function supportsServerControlsInMethods();
}