You are here

private function TokenProcessor::processLdapTokenKey in Lightweight Directory Access Protocol (LDAP) 8.4

Process a single LDAP Token key.

Parameters

\Symfony\Component\Ldap\Entry $entry: Entry.

string $required_token: What was given as replacement pattern. For example 'dn', 'mail:0', 'mail:last', or 'guid:0;tobase64'.

1 call to TokenProcessor::processLdapTokenKey()
TokenProcessor::tokenizeLdapEntry in ldap_servers/src/Processor/TokenProcessor.php
Turn an LDAP entry into a token array suitable for the t() function.

File

ldap_servers/src/Processor/TokenProcessor.php, line 202

Class

TokenProcessor
Helper to manage LDAP tokens and process their content.

Namespace

Drupal\ldap_servers\Processor

Code

private function processLdapTokenKey(Entry $entry, string $required_token) : void {

  // Trailing period to allow for empty value.
  [
    $token_key,
    $conversion,
  ] = explode(';', $required_token . ';');
  $parts = explode(':', $token_key);
  if ($parts === FALSE) {
    return;
  }
  $requested_name = $parts[0];
  $requested_index = $parts[1] ?? 0;
  if (mb_strtolower($requested_name) === 'dn') {
    return;
  }
  $values = $entry
    ->getAttribute($requested_name, FALSE);
  if ($values === NULL || count($values) === 0) {

    // No data.
    return;
  }
  if ($requested_index === 'last') {
    $i = count($values) > 0 ? count($values) - 1 : 0;
    $value = $values[(int) $i];
  }
  else {
    $value = $values[$requested_index] ?? '';
  }
  $value = (string) $value;
  $value = ConversionHelper::convertAttribute($value, $conversion);
  $this->tokens[sprintf('[%s]', $required_token)] = $value;
}