mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Added support to additional search field (defaults to "uid")
This commit is contained in:
parent
f5b92b8b65
commit
075b841b84
2 changed files with 31 additions and 8 deletions
|
|
@ -32,6 +32,11 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
|
|||
*/
|
||||
private $sObjectClass = 'inetOrgPerson';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $sUidField = 'uid';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
|
@ -64,7 +69,7 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
|
|||
*
|
||||
* @return \LdapContactsSuggestions
|
||||
*/
|
||||
public function SetConfig($sHostName, $iHostPort, $sAccessDn, $sAccessPassword, $sUsersDn, $sObjectClass, $sNameField, $sEmailField)
|
||||
public function SetConfig($sHostName, $iHostPort, $sAccessDn, $sAccessPassword, $sUsersDn, $sObjectClass, $sUidField, $sNameField, $sEmailField)
|
||||
{
|
||||
$this->sHostName = $sHostName;
|
||||
$this->iHostPort = $iHostPort;
|
||||
|
|
@ -72,6 +77,7 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
|
|||
$this->sAccessPassword = $sAccessPassword;
|
||||
$this->sUsersDn = $sUsersDn;
|
||||
$this->sObjectClass = $sObjectClass;
|
||||
$this->sUidField = $sUidField;
|
||||
$this->sNameField = $sNameField;
|
||||
$this->sEmailField = $sEmailField;
|
||||
|
||||
|
|
@ -128,9 +134,9 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
|
|||
*
|
||||
* @return array
|
||||
*/
|
||||
private function findNameAndEmail($aLdapItem, $aEmailFields, $aNameFields)
|
||||
private function findNameAndEmail($aLdapItem, $aEmailFields, $aNameFields, $aUidFields)
|
||||
{
|
||||
$sEmail = $sName = '';
|
||||
$sEmail = $sName = $sUid = '';
|
||||
if ($aLdapItem)
|
||||
{
|
||||
foreach ($aEmailFields as $sField)
|
||||
|
|
@ -156,9 +162,21 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($aUidFields as $sField)
|
||||
{
|
||||
if (!empty($aLdapItem[$sField][0]))
|
||||
{
|
||||
$sUid = \trim($aLdapItem[$sField][0]);
|
||||
if (!empty($sUid))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array($sEmail, $sName);
|
||||
return array($sEmail, $sName, $sUid);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -200,11 +218,13 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
|
|||
|
||||
$aEmails = empty($this->sEmailField) ? array() : \explode(',', $this->sEmailField);
|
||||
$aNames = empty($this->sNameField) ? array() : \explode(',', $this->sNameField);
|
||||
$aUIDs = empty($this->sUidField) ? array() : \explode(',', $this->sUidField);
|
||||
|
||||
$aEmails = \array_map('trim', $aEmails);
|
||||
$aNames = \array_map('trim', $aNames);
|
||||
$aUIDs = \array_map('trim', $aUIDs);
|
||||
|
||||
$aFields = \array_merge($aEmails, $aNames);
|
||||
$aFields = \array_merge($aEmails, $aNames, $aUIDs);
|
||||
|
||||
$aItems = array();
|
||||
$sSubFilter = '';
|
||||
|
|
@ -238,7 +258,7 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
|
|||
if ($aItem)
|
||||
{
|
||||
$sName = $sEmail = '';
|
||||
list ($sEmail, $sName) = $this->findNameAndEmail($aItem, $aEmails, $aNames);
|
||||
list ($sEmail, $sName) = $this->findNameAndEmail($aItem, $aEmails, $aNames, $aUIDs);
|
||||
if (!empty($sEmail))
|
||||
{
|
||||
$aResult[] = array($sEmail, $sName);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue