You are here

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

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

Parameters

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

File

ldap_servers/LdapServer.class.php, line 901
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));

  // run the query as user 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 = array(
        '%uids' => $uids,
        '%puid' => $puid,
        '%sid' => $this->sid,
        '%ldap_user_puid_property' => $this->unique_persistent_attr,
      );
      watchdog('ldap_server', '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;
  }
}