You are here

private function TokenProcessor::processSingleLdapEntryToken in Lightweight Directory Access Protocol (LDAP) 8.3

Process a single ldap_entry token.

Parameters

array $ldap_entry: LDAP entry.

string $pre: Preamble.

string $post: Postamble.

string $attribute_name: Actual data.

Return value

array Tokens.

1 call to TokenProcessor::processSingleLdapEntryToken()
TokenProcessor::compileLdapTokenEntries in ldap_servers/src/Processor/TokenProcessor.php
Compile LDAP token entries.

File

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

Class

TokenProcessor
Helper to manage LDAP tokens and process their content.

Namespace

Drupal\ldap_servers\Processor

Code

private function processSingleLdapEntryToken(array $ldap_entry, $pre, $post, $attribute_name) {
  $tokens = [];
  $attribute_value = $ldap_entry[$attribute_name];
  if (is_array($attribute_value) && is_scalar($attribute_value[0]) && $attribute_value['count'] == 1) {

    // Only one entry, example output: ['cn', 'cn:0', 'cn:last'].
    $tokens[$pre . mb_strtolower($attribute_name) . $post] = $attribute_value[0];
    $tokens[$pre . mb_strtolower($attribute_name) . self::DELIMITER . '0' . $post] = $attribute_value[0];
    $tokens[$pre . mb_strtolower($attribute_name) . self::DELIMITER . 'last' . $post] = $attribute_value[0];
  }
  elseif (is_array($attribute_value) && $attribute_value['count'] > 1) {

    // Multiple entries, example: ['cn:last', 'cn:0', 'cn:1'].
    $tokens[$pre . mb_strtolower($attribute_name) . self::DELIMITER . 'last' . $post] = $attribute_value[$attribute_value['count'] - 1];
    for ($i = 0; $i < $attribute_value['count']; $i++) {
      $tokens[$pre . mb_strtolower($attribute_name) . self::DELIMITER . $i . $post] = $attribute_value[$i];
    }
  }
  elseif (is_scalar($attribute_value)) {

    // Only one entry (as string), example output: ['cn', 'cn:0', 'cn:last'].
    $tokens[$pre . mb_strtolower($attribute_name) . $post] = $attribute_value;
    $tokens[$pre . mb_strtolower($attribute_name) . self::DELIMITER . '0' . $post] = $attribute_value;
    $tokens[$pre . mb_strtolower($attribute_name) . self::DELIMITER . 'last' . $post] = $attribute_value;
  }
  return $tokens;
}