You are here

public function LdapTestFunctions::populateFakeLdapServerData in Lightweight Directory Access Protocol (LDAP) 7.2

Same name and namespace in other branches
  1. 8.2 ldap_test/LdapTestFunctions.class.php \LdapTestFunctions::populateFakeLdapServerData()

Set variable with fake test data.

@parma string $sid where fake data is stored. e.g. 'default',

Parameters

string $test_ldap_id: eg. 'hogwarts'.

string $test_ldap_type: e.g. openLdap, openLdapTest1, etc.

File

ldap_test/LdapTestFunctions.class.php, line 205

Class

LdapTestFunctions

Code

public function populateFakeLdapServerData($test_ldap_id, $sid = 'default') {

  // Read csvs into key/value array
  // create fake ldap data array.
  $clones = empty($this->data['ldap_servers'][$sid]['clones']) ? FALSE : $this->data['ldap_servers'][$sid]['clones'];
  $server_properties = $this->data['ldap_servers'][$sid]['properties'];
  $this
    ->getCsvLdapData($test_ldap_id);
  foreach ($this->csvTables['users'] as $guid => $user) {
    $dn = 'cn=' . $user['cn'] . ',' . $this->csvTables['conf'][$test_ldap_id]['userbasedn'];
    $this->csvTables['users'][$guid]['dn'] = $dn;
    $attributes = $this
      ->generateUserLDAPAttributes($test_ldap_id, $user);
    $this
      ->addLDAPUserToLDAPArraysFromAttributes($user, $sid, $dn, $attributes, $server_properties['ldap_type'], $server_properties['user_attr']);
  }
  if ($clones) {
    $clonable_user = $this->csvTables['users'][101];
    for ($i = 0; $i < $clones; $i++) {
      $user = $clonable_user;
      $cn = "clone" . $i;
      $dn = 'cn=' . $cn . ',' . $this->csvTables['conf'][$test_ldap_id]['userbasedn'];
      $user['cn'] = $cn;
      $user['dn'] = $dn;
      $user['uid'] = 20 + $i;
      $user['guid'] = 120 + $i;
      $user['lname'] = $user['lname'] . "_{$i}";
      $attributes = $this
        ->generateUserLDAPAttributes($test_ldap_id, $user);
      $this
        ->addLDAPUserToLDAPArraysFromAttributes($user, $sid, $dn, $attributes, $server_properties['ldap_type'], $server_properties['user_attr']);
    }
  }
  foreach ($this->csvTables['groups'] as $guid => $group) {
    $dn = 'cn=' . $group['cn'] . ',' . $this->csvTables['conf'][$test_ldap_id]['groupbasedn'];
    $this->csvTables['groups'][$guid]['dn'] = $dn;
    $attributes = [
      'cn' => [
        0 => $group['cn'],
        'count' => 1,
      ],
      'gid' => [
        0 => $group['gid'],
        'count' => 1,
      ],
      'guid' => [
        0 => $guid,
        'count' => 1,
      ],
    ];
    if ($server_properties['groupMembershipsAttr']) {
      $membershipAttr = $server_properties['groupMembershipsAttr'];
      foreach ($this->csvTables['memberships'] as $membership_id => $membership) {
        if ($membership['gid'] == $group['gid']) {
          $member_guid = $membership['member_guid'];
          if (isset($this->csvTables['users'][$member_guid])) {
            $member = $this->csvTables['users'][$member_guid];
          }
          elseif (isset($this->csvTables['groups'][$member_guid])) {
            $member = $this->csvTables['groups'][$member_guid];
          }
          if ($server_properties['groupMembershipsAttrMatchingUserAttr'] == 'dn') {
            $attributes[$server_properties['groupMembershipsAttr']][] = $member['dn'];
          }
          else {
            $attributes[$server_properties['groupMembershipsAttr']][] = $member['attr'][$membershipAttr][0];
          }
        }
      }
      $attributes[$membershipAttr]['count'] = count($attributes[$membershipAttr]);
    }

    // Need to figure out if memberOf type attribute is desired and populate it.
    $this->data['ldap_servers_by_guid'][$sid][$group['guid']]['attr'] = $attributes;
    $this->data['ldap_servers_by_guid'][$sid][$group['guid']]['dn'] = $dn;
    $this->data['ldap_servers'][$sid]['groups'][$dn]['attr'] = $attributes;
    $this->ldapData['ldap_servers'][$sid][$dn] = $attributes;
  }
  if ($server_properties['groupUserMembershipsAttrExists']) {
    $member_attr = $server_properties['groupUserMembershipsAttr'];
    foreach ($this->csvTables['memberships'] as $gid => $membership) {
      $group_dn = $this->data['ldap_servers_by_guid'][$sid][$membership['group_guid']]['dn'];
      $user_dn = $this->data['ldap_servers_by_guid'][$sid][$membership['member_guid']]['dn'];
      $this->ldapData['ldap_servers'][$sid][$user_dn][$member_attr][] = $group_dn;
      if (isset($this->ldapData['ldap_servers'][$sid][$user_dn][$member_attr]['count'])) {
        unset($this->ldapData['ldap_servers'][$sid][$user_dn][$member_attr]['count']);
      }
      $this->ldapData['ldap_servers'][$sid][$user_dn][$member_attr]['count'] = count($this->ldapData['ldap_servers'][$sid][$user_dn][$member_attr]);
    }
  }
  $this->data['ldap_servers'][$sid]['ldap'] = $this->ldapData['ldap_servers'][$sid];
  $this->data['ldap_servers'][$sid]['csv'] = $this->csvTables;
  variable_set('ldap_test_server__' . $sid, $this->data['ldap_servers'][$sid]);
  $current_sids = variable_get('ldap_test_servers', []);
  $current_sids[] = $sid;
  variable_set('ldap_test_servers', array_unique($current_sids));
}