You are here

ldap_servers.admin.inc in Lightweight Directory Access Protocol (LDAP) 7.2

Defines functions for administrative interface for servers.

File

ldap_servers/ldap_servers.admin.inc
View source
<?php

/**
 * @file
 * Defines functions for administrative interface for servers.
 */

/**
 *
 */
function ldap_servers_edit_index() {
  return ldap_servers_servers_list(NULL, TRUE);
}

/**
 * LDAP servers list.
 *
 * @param $sid
 *   server id.  if empty list all servers
 * @param $actions
 *   True or False indicating if server edit, delete, enable, disable, etc links should show
 *
 * @return
 *   The HTML table with the servers list.
 */
function ldap_servers_servers_list($sid = NULL, $actions = FALSE) {
  $variables = [
    'ldap_servers' => $ldap_server = ldap_servers_get_servers($sid, 'all'),
    'action' => TRUE,
    'type' => 'table',
  ];
  $html = theme('ldap_servers_list', $variables);
  return $html;
}

/**
 * Implements the LDAP server edit page.
 *
 * @param $form_state
 *   A form state array.
 * @param $op
 *   An operatin - add or edit.
 * @param $sid
 *   A LDAP server ID.
 *
 * @return
 *   The form structure.
 */
function ldap_servers_admin_form($form, &$form_state, $op = NULL, $sid = NULL) {
  ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServerAdmin.class');
  $server = new LdapServerAdmin($sid);
  $form = $server
    ->drupalForm($op);
  return $form;
}

/**
 * Validate hook for the LDAP server form.
 */
function ldap_servers_admin_form_validate($form, &$form_state) {
  $op = drupal_strtolower($form_state['clicked_button']['#value']);
  ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServerAdmin.class');
  $server = new LdapServerAdmin($form_state['values']['sid']);
  $errors = $server
    ->drupalFormValidate($op, $form_state['values']);
  foreach ($errors as $error_name => $error_text) {
    form_set_error($error_name, t($error_text));
  }
  $warnings = $server
    ->drupalFormWarnings($op, $form_state['values'], (bool) (count($errors) > 0));
  foreach ($warnings as $warning_name => $warning_text) {
    drupal_set_message($warning_text, 'warning');
  }
  $form_state['ldap_warnings'] = (bool) (count($warnings) > 0);
}

/**
 * Submit hook for the LDAP server form.
 */
function ldap_servers_admin_form_submit($form, &$form_state) {
  $button = drupal_strtolower($form_state['clicked_button']['#value']);
  $op = $button == 'add' ? 'add' : 'edit';
  $verb = $op == 'edit' ? 'edited' : $op . 'ed';
  ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServerAdmin.class');
  $server = new LdapServerAdmin($form_state['values']['sid']);

  // Add form data to object and save or create.
  $server
    ->drupalFormSubmit($op, $form_state['values']);
  if ($server
    ->hasError() == FALSE) {
    drupal_set_message(t('LDAP Server %name !verb.', [
      '!verb' => $verb,
      '%name' => $server->name,
    ]), 'status');
    ldap_servers_cache_clear();
    if ($form_state['ldap_warnings'] && $op != 'add') {

      // Do nothing, but don't redirect away from form.
      // if there are warnings, want them to see form even if its been saved.
    }
    else {
      drupal_goto(LDAP_SERVERS_MENU_BASE_PATH . '/servers');
    }
  }
  else {
    form_set_error($server
      ->errorName(), $server
      ->errorMsg());
    $server
      ->clearError();
  }
  ldap_servers_cache_clear();
}

/**
 * Implements the LDAP server delete page.
 *
 * @param $form_state
 *   A form state array.
 * @param $sid
 *   A LDAP server ID.
 *
 * @return
 *   The form structure.
 */
function ldap_servers_admin_delete($form, &$form_state, $op = NULL, $sid = NULL) {
  if ($sid && ($ldap_server = ldap_servers_get_servers($sid, 'all', TRUE))) {

    // array()
    $variables = [
      'ldap_server' => $ldap_server,
      'actions' => FALSE,
      'type' => 'detail',
    ];
    $form['#prefix'] = '<div>' . theme('ldap_servers_server', $variables) . '</div>';
    $form['sid'] = [
      '#type' => 'hidden',
      '#value' => $sid,
    ];
    $form['name'] = [
      '#type' => 'hidden',
      '#value' => $ldap_server->name,
    ];
    $warnings = module_invoke_all('ldap_server_in_use', $sid, $ldap_server->name);
    if (count($warnings)) {
      drupal_set_message(join("<br/>", array_values($warnings)), 'error');
      drupal_goto(LDAP_SERVERS_MENU_BASE_PATH . '/servers/list');
    }
    else {
      return confirm_form($form, 'Delete Confirmation Form', LDAP_SERVERS_MENU_BASE_PATH . '/servers/list', '<p>' . t('Are you sure you want to delete the LDAP server named <em><strong>%name</strong></em> ?', [
        '%name' => $ldap_server->name,
      ]) . '</p><p>' . t('This action cannot be undone.') . '</p>', t('Delete'), t('Cancel'));
    }
  }
  drupal_goto(LDAP_SERVERS_MENU_BASE_PATH . '/servers/list');
}

/**
 * Submit handler for the LDAP server delete page.
 */
function ldap_servers_admin_delete_submit($form, &$form_state) {
  $values = $form_state['values'];
  $sid = $values['sid'];
  ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServerAdmin.class');
  $ldap_server = new LdapServerAdmin($sid);
  if ($values['confirm'] && $sid) {
    if ($result = $ldap_server
      ->delete($sid)) {
      $tokens = [
        '%name' => $ldap_server->name,
        '!sid' => $sid,
      ];
      drupal_set_message(t('LDAP Server %name (server id = !sid) has been deleted.', $tokens), 'status');
      watchdog('ldap_servers', 'LDAP Server deleted: %name (sid = !sid) ', $tokens);
    }
    else {
      drupal_set_message(t('LDAP Server delete failed.'), 'warning');
    }
  }
  else {
    drupal_set_message(t('LDAP Server delete cancelled.'), 'status');
  }
  ldap_servers_cache_clear();
  drupal_goto(LDAP_SERVERS_MENU_BASE_PATH . '/servers/list');
}

/**
 * Implements the LDAP server delete page.
 *
 * @param $form_state
 *   A form state array.
 * @param $sid
 *   A LDAP server ID.
 *
 * @return
 *   The form structure.
 */
function ldap_servers_admin_enable_disable($form, &$form_state, $action = NULL, $sid = NULL) {
  if ($ldap_server = ldap_servers_get_servers($sid, 'all', TRUE)) {
    $variables = [
      'ldap_server' => $ldap_server,
      'actions' => FALSE,
      'type' => 'detail',
    ];
    $form['#prefix'] = "<div>" . theme('ldap_servers_server', $variables) . "</div>";
    $form['sid'] = [
      '#type' => 'hidden',
      '#value' => $sid,
    ];
    $form['name'] = [
      '#type' => 'hidden',
      '#value' => $ldap_server->name,
    ];
    $form['action'] = [
      '#type' => 'hidden',
      '#value' => $action,
    ];
    return confirm_form($form, t('Are you sure you want to') . t($action) . ' ' . t('the LDAP server named <em><strong>%name</strong></em>?', [
      '%name' => $ldap_server->name,
    ]), LDAP_SERVERS_MENU_BASE_PATH . '/servers/list', t('<p></p>'), t($action), t('Cancel'));
  }
}

/**
 * Submit hook for the LDAP server delete page.
 */
function ldap_servers_admin_enable_disable_submit($form, &$form_state) {
  $values = $form_state['values'];
  $sid = $values['sid'];
  $status = $values['action'] == 'enable' ? 1 : 0;
  if ($values['confirm'] && $sid) {
    $form_state['redirect'] = LDAP_SERVERS_MENU_BASE_PATH . '/servers';
    $ldap_server = new LdapServerAdmin($sid);
    $ldap_server->status = $status;
    $ldap_server
      ->save('edit');
    $tokens = [
      '%name' => $values['name'],
      '!sid' => $sid,
      '!action' => t($values['action']) . 'd',
    ];
    drupal_set_message(t('LDAP Server Configuration %name (server id = !sid) has been !action.', $tokens));
    $message = t('LDAP Server !action: %name (sid = !sid) ', $tokens);
    watchdog('ldap_servers', $message);
  }
}

Functions

Namesort descending Description
ldap_servers_admin_delete Implements the LDAP server delete page.
ldap_servers_admin_delete_submit Submit handler for the LDAP server delete page.
ldap_servers_admin_enable_disable Implements the LDAP server delete page.
ldap_servers_admin_enable_disable_submit Submit hook for the LDAP server delete page.
ldap_servers_admin_form Implements the LDAP server edit page.
ldap_servers_admin_form_submit Submit hook for the LDAP server form.
ldap_servers_admin_form_validate Validate hook for the LDAP server form.
ldap_servers_edit_index
ldap_servers_servers_list LDAP servers list.