function ldap_user_test_form_submit in Lightweight Directory Access Protocol (LDAP) 8.2
Same name and namespace in other branches
- 7.2 ldap_user/ldap_user.test_form.inc \ldap_user_test_form_submit()
Submit hook for the LDAP server form.
File
- ldap_user/
ldap_user.test_form.inc, line 88
Code
function ldap_user_test_form_submit($form, &$form_state) {
$username = $form_state['values']['testing_drupal_username'];
$selected_actions = $form_state['values']['action'];
if ($username && count($selected_actions) > 0) {
$synch_trigger_options = ldap_user_synch_triggers_key_values();
$user_object = user_load_by_name($username);
if ($user_object) {
$user_entities = entity_load('user', array(
$user_object->uid,
));
$user_entity = $user_entities[$user_object->uid];
}
else {
$user_entity = NULL;
}
$ldap_user_conf = ldap_user_conf();
$test_servers = array();
$user_ldap_entry = FALSE;
if ($ldap_user_conf->drupalAcctProvisionServer) {
$test_servers[LDAP_USER_PROV_DIRECTION_TO_DRUPAL_USER] = $ldap_user_conf->drupalAcctProvisionServer;
$user_ldap_entry = ldap_servers_get_user_ldap_data($username, $ldap_user_conf->drupalAcctProvisionServer);
}
if ($ldap_user_conf->ldapEntryProvisionServer) {
$test_servers[LDAP_USER_PROV_DIRECTION_TO_LDAP_ENTRY] = $ldap_user_conf->ldapEntryProvisionServer;
if (!$user_ldap_entry) {
$user_ldap_entry = ldap_servers_get_user_ldap_data($username, $ldap_user_conf->ldapEntryProvisionServer);
}
}
$results = array();
$results['username'] = $username;
$results['user object (before provisioning or synching)'] = $user_object;
$results['user entity (before provisioning or synching)'] = $user_entity;
$results['related ldap entry (before provisioning or synching)'] = $user_ldap_entry;
$results['ldap_user_conf'] = $ldap_user_conf;
if (is_object($user_object)) {
$authmaps = db_query("SELECT aid, uid, module, authname FROM {authmap} WHERE uid = :uid", array(
':uid' => $user_object->uid,
))
->fetchAllAssoc('aid', PDO::FETCH_ASSOC);
}
else {
$authmaps = 'No authmaps available. Authmaps only shown if user account exists beforehand';
$user_object = new stdClass();
// need for testing.
$user_object->name = $username;
}
$results['User Authmap'] = $authmaps;
$results['LDAP User Configuration Object'] = $ldap_user_conf;
$save = $form_state['values']['test_mode'] == 'execute';
$test_query = $form_state['values']['test_mode'] != 'execute';
$user_edit = array(
'name' => $username,
);
foreach (array_filter($selected_actions) as $i => $synch_trigger) {
$synch_trigger_description = $synch_trigger_options[$synch_trigger];
foreach (array(
LDAP_USER_PROV_DIRECTION_TO_DRUPAL_USER,
LDAP_USER_PROV_DIRECTION_TO_LDAP_ENTRY,
) as $direction) {
if ($ldap_user_conf
->provisionEnabled($direction, $synch_trigger)) {
if ($direction == LDAP_USER_PROV_DIRECTION_TO_DRUPAL_USER) {
$discard = $ldap_user_conf
->provisionDrupalAccount(NULL, $user_edit, NULL, $save);
$results['provisionDrupalAccount method results']["context = {$synch_trigger_description}"]['proposed'] = $user_edit;
}
else {
$provision_result = $ldap_user_conf
->provisionLdapEntry($user_object, NULL, $test_query);
$results['provisionLdapEntry method results']["context = {$synch_trigger_description}"] = $provision_result;
}
}
else {
if ($direction == LDAP_USER_PROV_DIRECTION_TO_DRUPAL_USER) {
$results['provisionDrupalAccount method results']["context = {$synch_trigger_description}"] = 'Not enabled.';
}
else {
$results['provisionLdapEntry method results']["context = {$synch_trigger_description}"] = 'Not enabled.';
}
}
}
}
// do all synchs second, in case logic of form changes to allow executing mulitple events
foreach (array_filter($selected_actions) as $i => $synch_trigger) {
$synch_trigger_description = $synch_trigger_options[$synch_trigger];
foreach (array(
LDAP_USER_PROV_DIRECTION_TO_DRUPAL_USER,
LDAP_USER_PROV_DIRECTION_TO_LDAP_ENTRY,
) as $direction) {
if ($ldap_user_conf
->provisionEnabled($direction, $synch_trigger)) {
if ($direction == LDAP_USER_PROV_DIRECTION_TO_DRUPAL_USER) {
$discard = $ldap_user_conf
->synchToDrupalAccount(NULL, $user_edit, NULL, $test_query);
$results['synchToDrupalAccount method results']["context = {$synch_trigger_description}"]['proposed'] = $user_edit;
}
else {
// to ldap
$provision_result = $ldap_user_conf
->synchToLdapEntry($user_object, $user_edit, array(), $test_query);
$results['synchToLdapEntry method results']["context = {$synch_trigger_description}"] = $provision_result;
}
}
else {
if ($direction == LDAP_USER_PROV_DIRECTION_TO_DRUPAL_USER) {
$results['synchToDrupalAccount method results']["context = {$synch_trigger_description}"] = 'Not enabled.';
}
else {
// to ldap
$results['synchToLdapEntry method results']["context = {$synch_trigger_description}"] = 'Not enabled.';
}
}
}
}
if (function_exists('dpm')) {
dpm($results);
}
else {
drupal_set_message(t('This form will not display results unless the devel module is enabled.'), 'warning');
}
}
$_SESSION['ldap_user_test_form']['action'] = $form_state['values']['action'];
$_SESSION['ldap_user_test_form']['test_mode'] = $form_state['values']['test_mode'];
$_SESSION['ldap_user_test_form']['testing_drupal_username'] = $username;
$form_state['redirect'] = LDAP_USER_TEST_FORM_PATH;
}