You are here

public function LdapServer::userUserEntityFromPuid in Lightweight Directory Access Protocol (LDAP) 7.2

Same name and namespace in other branches
  1. 8.2 ldap_servers/LdapServer.class.php \LdapServer::userUserEntityFromPuid()

UserUserEntityFromPuid.

Parameters

string $puid: Binary or string as returned from ldap_read or other ldap function.

Return value

mixed

File

ldap_servers/LdapServer.class.php, line 1062
Defines server classes and related functions.

Class

LdapServer
LDAP Server Class.

Code

public function userUserEntityFromPuid($puid) {
  $query = new EntityFieldQuery();
  $query
    ->entityCondition('entity_type', 'user')
    ->fieldCondition('ldap_user_puid_sid', 'value', $this->sid, '=')
    ->fieldCondition('ldap_user_puid', 'value', $puid, '=')
    ->fieldCondition('ldap_user_puid_property', 'value', $this->unique_persistent_attr, '=')
    ->addMetaData('account', user_load(1));
  $result = $query
    ->execute();
  if (isset($result['user'])) {
    $uids = array_keys($result['user']);
    if (count($uids) == 1) {
      $user = entity_load('user', array_keys($result['user']));
      return $user[$uids[0]];
    }
    else {
      $uids = join(',', $uids);
      $tokens = [
        '%uids' => $uids,
        '%puid' => $puid,
        '%sid' => $this->sid,
        '%ldap_user_puid_property' => $this->unique_persistent_attr,
      ];
      watchdog('ldap_servers', 'multiple users (uids: %uids) with same puid (puid=%puid, sid=%sid, ldap_user_puid_property=%ldap_user_puid_property)', $tokens, WATCHDOG_ERROR);
      return FALSE;
    }
  }
  else {
    return FALSE;
  }
}