You are here

function ldap_servers_get_user_ldap_data in Lightweight Directory Access Protocol (LDAP) 7.2

Same name and namespace in other branches
  1. 8.2 ldap_servers/ldap_servers.module \ldap_servers_get_user_ldap_data()
  2. 7 ldap_servers/ldap_servers.module \ldap_servers_get_user_ldap_data()

@todo needs caching element. several modules could potentially call this in the same page request.

Parameters

object $drupal_user: is drupal $user object.

string $sid: is a server id.

mixed $ldap_context:

Return value

bool

11 calls to ldap_servers_get_user_ldap_data()
FeedsDrupalUserLdapEntryFetcherResult::getRaw in ldap_feeds/FeedsDrupalUserLdapEntryFetcher.inc
Overrides parent::getRaw();.
LdapUserConf::ldapAssociateDrupalAccount in ldap_user/LdapUserConf.class.php
Set ldap associations of a drupal account by altering user fields.
LdapUserConf::provisionDrupalAccount in ldap_user/LdapUserConf.class.php
Given a drupal account, query ldap and get all user fields and save user account (note: parameters are in odd order to match synchDrupalAccount handle)
LdapUserConf::synchToDrupalAccount in ldap_user/LdapUserConf.class.php
Given a drupal account, query ldap and get all user fields and create user account.
LdapUserUnitTests::testUnitTests in ldap_user/tests/ldap_user.test
Make sure install succeeds and ldap user functions/methods work.

... See full list

1 string reference to 'ldap_servers_get_user_ldap_data'
LdapUserUnitTests::testUnitTests in ldap_user/tests/ldap_user.test
Make sure install succeeds and ldap user functions/methods work.

File

ldap_servers/ldap_servers.module, line 707

Code

function ldap_servers_get_user_ldap_data($drupal_user, $sid = NULL, $ldap_context = NULL) {
  if (is_object($drupal_user) && property_exists($drupal_user, 'uid') && function_exists('ldap_user_get_authname') && ($authname = ldap_user_get_authname($drupal_user))) {
    $drupal_username = $authname;
  }
  else {
    $drupal_username = is_object($drupal_user) ? $drupal_user->name : $drupal_user;
  }

  // Sometimes we have username instead of a drupal user object
  // For example, when using LDAP user test form (admin/config/people/ldap/user/test)
  // But we can still load the user by using $drupal_username  if $drupal_user is not an object.
  if (!is_object($drupal_user)) {
    $user_object = user_load_by_name($drupal_username);
    if (is_object($user_object) && property_exists($user_object, 'uid')) {
      $drupal_user = $user_object;
    }
  }

  // If no explicit $sid, find most appropriate one.
  if (module_exists('ldap_user') && (!$sid || $sid == LDAP_USER_AUTH_SERVER_SID)) {
    if (property_exists($drupal_user, 'ldap_user_puid_sid') && !empty($drupal_user->ldap_user_puid_sid[LANGUAGE_NONE][0]['value'])) {
      $sid = $drupal_user->ldap_user_puid_sid[LANGUAGE_NONE][0]['value'];
    }
    else {
      $ldap_user_conf = ldap_user_conf();
      ldap_user_reset_provision_server($ldap_user_conf, $drupal_user);
      $sid = $ldap_user_conf->drupalAcctProvisionServer;
    }
  }
  elseif (!$sid) {
    $ldap_servers = ldap_servers_get_servers(NULL, 'enabled');
    if (count($ldap_servers) == 1) {
      $sids = array_keys($ldap_servers);
      $sid = $sids[0];
    }
  }
  $ldap_server = $sid ? ldap_servers_get_servers($sid, 'enabled', TRUE) : FALSE;
  if ($ldap_server === FALSE) {
    watchdog('ldap_servers', 'Failed to load server object %sid in _ldap_servers_get_user_ldap_data', [
      '%sid' => $sid,
    ], WATCHDOG_ERROR);
    return FALSE;
  }
  $ldap_user = $ldap_server
    ->userUserNameToExistingLdapEntry($drupal_username, $ldap_context);
  if ($ldap_user) {
    $ldap_user['sid'] = $sid;
  }
  else {
    $ldap_user = FALSE;
  }
  return $ldap_user;
}