[ldap-contacts-suggestions] Clarify some more variables

Make it clearer that these variables take several attributes.
This commit is contained in:
David Härdeman 2021-08-22 13:10:40 +02:00
parent f3b6cd08f0
commit 8eec9d4a8f
2 changed files with 28 additions and 26 deletions

View file

@ -35,17 +35,17 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
/** /**
* @var string * @var string
*/ */
private $sUidField = 'uid'; private $sUidAttributes = 'uid';
/** /**
* @var string * @var string
*/ */
private $sNameField = 'displayName,cn,givenName,sn'; private $sNameAttributes = 'displayName,cn,givenName,sn';
/** /**
* @var string * @var string
*/ */
private $sEmailField = 'mailAddress,mail,mailAlternateAddress,mailAlias'; private $sEmailAttributes = 'mailAddress,mail,mailAlternateAddress,mailAlias';
/** /**
* @var \MailSo\Log\Logger * @var \MailSo\Log\Logger
@ -64,13 +64,14 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
* @param string $sBindPassword * @param string $sBindPassword
* @param string $sBaseDn * @param string $sBaseDn
* @param string $sObjectClass * @param string $sObjectClass
* @param string $sNameField * @param string $sNameAttributes
* @param string $sEmailField * @param string $sEmailAttributes
* @param string $sUidAttributes
* @param string $sAllowedEmails * @param string $sAllowedEmails
* *
* @return \LdapContactsSuggestions * @return \LdapContactsSuggestions
*/ */
public function SetConfig($sLdapUri, $bUseStartTLS, $sBindDn, $sBindPassword, $sBaseDn, $sObjectClass, $sUidField, $sNameField, $sEmailField, $sAllowedEmails) public function SetConfig($sLdapUri, $bUseStartTLS, $sBindDn, $sBindPassword, $sBaseDn, $sObjectClass, $sUidAttributes, $sNameAttributes, $sEmailAttributes, $sAllowedEmails)
{ {
$this->sLdapUri = $sLdapUri; $this->sLdapUri = $sLdapUri;
$this->bUseStartTLS = $bUseStartTLS; $this->bUseStartTLS = $bUseStartTLS;
@ -81,9 +82,9 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
} }
$this->sBaseDn = $sBaseDn; $this->sBaseDn = $sBaseDn;
$this->sObjectClass = $sObjectClass; $this->sObjectClass = $sObjectClass;
$this->sUidField = $sUidField; $this->sUidAttributes = $sUidAttributes;
$this->sNameField = $sNameField; $this->sNameAttributes = $sNameAttributes;
$this->sEmailField = $sEmailField; $this->sEmailAttributes = $sEmailAttributes;
$this->sAllowedEmails = $sAllowedEmails; $this->sAllowedEmails = $sAllowedEmails;
return $this; return $this;
@ -122,17 +123,18 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
/** /**
* @param array $aLdapItem * @param array $aLdapItem
* @param array $aEmailFields * @param array $aEmailAttributes
* @param array $aNameFields * @param array $aNameAttributes
* @param array $aUidAttributes
* *
* @return array * @return array
*/ */
private function findNameAndEmail($aLdapItem, $aEmailFields, $aNameFields, $aUidFields) private function findNameAndEmail($aLdapItem, $aEmailAttributes, $aNameAttributes, $aUidAttributes)
{ {
$sEmail = $sName = $sUid = ''; $sEmail = $sName = $sUid = '';
if ($aLdapItem) if ($aLdapItem)
{ {
foreach ($aEmailFields as $sField) foreach ($aEmailAttributes as $sField)
{ {
$sField = \strtolower($sField); $sField = \strtolower($sField);
if (!empty($aLdapItem[$sField][0])) if (!empty($aLdapItem[$sField][0]))
@ -145,7 +147,7 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
} }
} }
foreach ($aNameFields as $sField) foreach ($aNameAttributes as $sField)
{ {
$sField = \strtolower($sField); $sField = \strtolower($sField);
if (!empty($aLdapItem[$sField][0])) if (!empty($aLdapItem[$sField][0]))
@ -158,7 +160,7 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
} }
} }
foreach ($aUidFields as $sField) foreach ($aUidAttributes as $sField)
{ {
$sField = \strtolower($sField); $sField = \strtolower($sField);
if (!empty($aLdapItem[$sField][0])) if (!empty($aLdapItem[$sField][0]))
@ -226,9 +228,9 @@ class LdapContactsSuggestions implements \RainLoop\Providers\Suggestions\ISugges
'{imap:port}' => $oAccount->DomainIncPort() '{imap:port}' => $oAccount->DomainIncPort()
)); ));
$aEmails = empty($this->sEmailField) ? array() : \explode(',', $this->sEmailField); $aEmails = empty($this->sEmailAttributes) ? array() : \explode(',', $this->sEmailAttributes);
$aNames = empty($this->sNameField) ? array() : \explode(',', $this->sNameField); $aNames = empty($this->sNameAttributes) ? array() : \explode(',', $this->sNameAttributes);
$aUIDs = empty($this->sUidField) ? array() : \explode(',', $this->sUidField); $aUIDs = empty($this->sUidAttributes) ? array() : \explode(',', $this->sUidAttributes);
$aEmails = \array_map('trim', $aEmails); $aEmails = \array_map('trim', $aEmails);
$aNames = \array_map('trim', $aNames); $aNames = \array_map('trim', $aNames);

View file

@ -47,17 +47,17 @@ class LdapContactsSuggestionsPlugin extends \RainLoop\Plugins\AbstractPlugin
$sBindPassword = \trim($this->Config()->Get('plugin', 'bind_password', '')); $sBindPassword = \trim($this->Config()->Get('plugin', 'bind_password', ''));
$sBaseDn = \trim($this->Config()->Get('plugin', 'base_dn', '')); $sBaseDn = \trim($this->Config()->Get('plugin', 'base_dn', ''));
$sObjectClass = \trim($this->Config()->Get('plugin', 'object_class', '')); $sObjectClass = \trim($this->Config()->Get('plugin', 'object_class', ''));
$sUidField = \trim($this->Config()->Get('plugin', 'uid_field', '')); $sUidAttributes = \trim($this->Config()->Get('plugin', 'uid_attributes', ''));
$sNameField = \trim($this->Config()->Get('plugin', 'name_field', '')); $sNameAttributes = \trim($this->Config()->Get('plugin', 'name_attributes', ''));
$sEmailField = \trim($this->Config()->Get('plugin', 'mail_field', '')); $sEmailAttributes = \trim($this->Config()->Get('plugin', 'mail_attributes', ''));
$sAllowedEmails = \trim($this->Config()->Get('plugin', 'allowed_emails', '')); $sAllowedEmails = \trim($this->Config()->Get('plugin', 'allowed_emails', ''));
if (0 < \strlen($sLdapUri) && 0 < \strlen($sBaseDn) && 0 < \strlen($sObjectClass) && 0 < \strlen($sEmailField)) if (0 < \strlen($sLdapUri) && 0 < \strlen($sBaseDn) && 0 < \strlen($sObjectClass) && 0 < \strlen($sEmailAttributes))
{ {
include_once __DIR__.'/LdapContactsSuggestions.php'; include_once __DIR__.'/LdapContactsSuggestions.php';
$oProvider = new LdapContactsSuggestions(); $oProvider = new LdapContactsSuggestions();
$oProvider->SetConfig($sLdapUri, $bUseStartTLS, $sBindDn, $sBindPassword, $sBaseDn, $sObjectClass, $sUidField, $sNameField, $sEmailField, $sAllowedEmails); $oProvider->SetConfig($sLdapUri, $bUseStartTLS, $sBindDn, $sBindPassword, $sBaseDn, $sObjectClass, $sUidAttributes, $sNameAttributes, $sEmailAttributes, $sAllowedEmails);
$mResult[] = $oProvider; $mResult[] = $oProvider;
} }
@ -89,13 +89,13 @@ class LdapContactsSuggestionsPlugin extends \RainLoop\Plugins\AbstractPlugin
->SetDefaultValue('ou=People,dc=example,dc=com'), ->SetDefaultValue('ou=People,dc=example,dc=com'),
\RainLoop\Plugins\Property::NewInstance('object_class')->SetLabel('objectClass value') \RainLoop\Plugins\Property::NewInstance('object_class')->SetLabel('objectClass value')
->SetDefaultValue('inetOrgPerson'), ->SetDefaultValue('inetOrgPerson'),
\RainLoop\Plugins\Property::NewInstance('uid_field')->SetLabel('uid attributes') \RainLoop\Plugins\Property::NewInstance('uid_attributes')->SetLabel('uid attributes')
->SetDescription('LDAP attributes for userids, comma separated list in order of preference') ->SetDescription('LDAP attributes for userids, comma separated list in order of preference')
->SetDefaultValue('uid'), ->SetDefaultValue('uid'),
\RainLoop\Plugins\Property::NewInstance('name_field')->SetLabel('Name attributes') \RainLoop\Plugins\Property::NewInstance('name_attributes')->SetLabel('Name attributes')
->SetDescription('LDAP attributes for user names, comma separated list in order of preference') ->SetDescription('LDAP attributes for user names, comma separated list in order of preference')
->SetDefaultValue('displayName,cn,givenName,sn'), ->SetDefaultValue('displayName,cn,givenName,sn'),
\RainLoop\Plugins\Property::NewInstance('mail_field')->SetLabel('Mail attributes') \RainLoop\Plugins\Property::NewInstance('mail_attributes')->SetLabel('Mail attributes')
->SetDescription('LDAP attributes for user email addresses, comma separated list in order of preference') ->SetDescription('LDAP attributes for user email addresses, comma separated list in order of preference')
->SetDefaultValue('mailAddress,mail,mailAlternateAddress,mailAlias'), ->SetDefaultValue('mailAddress,mail,mailAlternateAddress,mailAlias'),
\RainLoop\Plugins\Property::NewInstance('allowed_emails')->SetLabel('Allowed emails') \RainLoop\Plugins\Property::NewInstance('allowed_emails')->SetLabel('Allowed emails')