Projet

Général

Profil

Paste
Télécharger (7,3 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / ldap / ldap_servers / ldap_servers.admin.inc @ bc175c27

1
<?php
2

    
3
/**
4
 * @file
5
 * Defines functions for administrative interface for servers
6
 *
7
 */
8

    
9
function ldap_servers_edit_index() {
10

    
11
  return ldap_servers_servers_list(NULL, TRUE);
12

    
13
}
14
/**
15
 * LDAP servers list.
16
 *
17
 * @param $sid
18
 *   server id.  if empty list all servers
19
 * @param $actions
20
 *   True or False indicating if server edit, delete, enable, disable, etc links should show
21
 * @return
22
 *   The HTML table with the servers list.
23
 */
24
function ldap_servers_servers_list($sid = NULL, $actions = FALSE) {
25

    
26
  $variables = array(
27
    'ldap_servers' => $ldap_server = ldap_servers_get_servers($sid, 'all'),
28
    'action' => TRUE,
29
    'type' => 'table',
30
    );
31

    
32
  $html = theme('ldap_servers_list', $variables);
33

    
34
  return $html;
35
}
36

    
37

    
38
/**
39
 * Implements the LDAP server edit page.
40
 *
41
 * @param $form_state
42
 *   A form state array.
43
 * @param $op
44
 *   An operatin - add or edit.
45
 * @param $sid
46
 *   A LDAP server ID.
47
 *
48
 * @return
49
 *   The form structure.
50
 */
51

    
52
function ldap_servers_admin_form($form, &$form_state, $op = NULL, $sid = NULL) {
53
  ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServerAdmin.class');
54
  $server = new LdapServerAdmin($sid);
55
  $form = $server->drupalForm($op);
56
  return $form;
57
}
58

    
59
/**
60
 * Validate hook for the LDAP server form.
61
 */
62
function ldap_servers_admin_form_validate($form, &$form_state) {
63

    
64
  $op = drupal_strtolower($form_state['clicked_button']['#value']);
65
  ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServerAdmin.class');
66
  $server = new LdapServerAdmin($form_state['values']['sid']);
67

    
68
  $errors = $server->drupalFormValidate($op, $form_state['values']);
69
  foreach ($errors as $error_name => $error_text) {
70
    form_set_error($error_name, t($error_text));
71
  }
72
  $warnings = $server->drupalFormWarnings($op, $form_state['values'], (boolean)(count($errors) > 0));
73
  foreach ($warnings as $warning_name => $warning_text) {
74
    drupal_set_message($warning_text, 'warning');
75
  }
76

    
77
  $form_state['ldap_warnings'] = (boolean)(count($warnings) > 0);
78

    
79
}
80

    
81
/**
82
 * Submit hook for the LDAP server form.
83
 */
84
function ldap_servers_admin_form_submit($form, &$form_state) {
85
  $button = drupal_strtolower($form_state['clicked_button']['#value']);
86
  $op = ($button == 'add') ? 'add' : 'edit';
87
  $verb = ($op == 'edit') ? 'edited' : $op . 'ed';
88
  ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServerAdmin.class');
89
  $server = new LdapServerAdmin($form_state['values']['sid']);
90
  $server->drupalFormSubmit($op, $form_state['values']);  // add form data to object and save or create
91

    
92
  if ($server->hasError() == FALSE) {
93
    drupal_set_message(t('LDAP Server %name !verb.', array('!verb' => $verb, '%name' => $server->name)), 'status');
94
    ldap_servers_cache_clear();
95
    if ($form_state['ldap_warnings'] && $op != 'add') {
96
      // do nothing, but don't redirect away from form.
97
      // if there are warnings, want them to see form even if its been saved
98
    }
99
    else {
100
      drupal_goto(LDAP_SERVERS_MENU_BASE_PATH . '/servers');
101
    }
102
  }
103
  else {
104
    form_set_error($server->errorName(), $server->errorMsg());
105
    $server->clearError();
106
  }
107
  ldap_servers_cache_clear();
108
}
109

    
110
/**
111
 * Implements the LDAP server delete page.
112
 *
113
 * @param $form_state
114
 *   A form state array.
115
 * @param $sid
116
 *   A LDAP server ID.
117
 *
118
 * @return
119
 *   The form structure.
120
 */
121
function ldap_servers_admin_delete($form, &$form_state, $op = NULL, $sid = NULL) {
122

    
123
  if ($sid && ($ldap_server = ldap_servers_get_servers($sid, 'all', TRUE))) {
124
    // array()
125

    
126
    $variables = array(
127
      'ldap_server' => $ldap_server, 'actions' => FALSE, 'type' => 'detail'
128
    );
129
    $form['#prefix'] = '<div>' . theme('ldap_servers_server', $variables) . '</div>';
130
    $form['sid'] = array(
131
      '#type' => 'hidden',
132
      '#value' => $sid,
133
    );
134
    $form['name'] = array(
135
      '#type' => 'hidden',
136
      '#value' => $ldap_server->name,
137
    );
138

    
139
    $warnings = module_invoke_all('ldap_server_in_use', $sid, $ldap_server->name);
140
    if (count($warnings)) {
141
      drupal_set_message(join("<br/>", array_values($warnings)), 'error');
142
      drupal_goto(LDAP_SERVERS_MENU_BASE_PATH . '/servers/list');
143
    }
144
    else {
145
      return confirm_form(
146
        $form,
147
        'Delete Confirmation Form',
148
        LDAP_SERVERS_MENU_BASE_PATH . '/servers/list',
149
          '<p>' . t('Are you sure you want to delete the LDAP server named <em><strong>%name</strong></em> ?', array('%name' => $ldap_server->name)) . '</p><p>' .
150
          t('This action cannot be undone.') . '</p>',
151
        t('Delete'),
152
        t('Cancel')
153
      );
154
    }
155
  }
156
  drupal_goto(LDAP_SERVERS_MENU_BASE_PATH . '/servers/list');
157
}
158

    
159
/**
160
 * Submit handler for the LDAP server delete page.
161
 */
162
function ldap_servers_admin_delete_submit($form, &$form_state) {
163
  $values = $form_state['values'];
164
  $sid = $values['sid'];
165
  ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServerAdmin.class');
166
  $ldap_server = new LdapServerAdmin($sid);
167
  if ($values['confirm'] && $sid) {
168
    if ($result = $ldap_server->delete($sid)) {
169
      $tokens = array('%name' => $ldap_server->name, '!sid' => $sid);
170
      drupal_set_message(t('LDAP Server %name (server id = !sid) has been deleted.', $tokens), 'status');
171
      watchdog('ldap_servers', 'LDAP Server deleted: %name (sid = !sid) ', $tokens);
172
    }
173
    else {
174
      drupal_set_message(t('LDAP Server delete failed.'), 'warning');
175
    }
176
  }
177
  else {
178
    drupal_set_message(t('LDAP Server delete cancelled.'), 'status');
179
  }
180
  ldap_servers_cache_clear();
181
  drupal_goto(LDAP_SERVERS_MENU_BASE_PATH . '/servers/list');
182
}
183

    
184

    
185
/**
186
 * Implements the LDAP server delete page.
187
 *
188
 * @param $form_state
189
 *   A form state array.
190
 * @param $sid
191
 *   A LDAP server ID.
192
 *
193
 * @return
194
 *   The form structure.
195
 */
196

    
197

    
198
function ldap_servers_admin_enable_disable($form, &$form_state, $action = NULL, $sid = NULL) {
199

    
200
  if ($ldap_server = ldap_servers_get_servers($sid, 'all', TRUE)) {
201
    $variables = array(
202
      'ldap_server' => $ldap_server, 'actions' => FALSE, 'type' => 'detail'
203
    );
204
    $form['#prefix'] = "<div>" . theme('ldap_servers_server', $variables) . "</div>";
205

    
206
    $form['sid'] = array(
207
      '#type' => 'hidden',
208
      '#value' => $sid,
209
    );
210
    $form['name'] = array(
211
      '#type' => 'hidden',
212
      '#value' => $ldap_server->name,
213
    );
214
    $form['action'] = array(
215
      '#type' => 'hidden',
216
      '#value' => $action,
217
    );
218
    return confirm_form(
219
      $form,
220
      t('Are you sure you want to') . t($action) . ' ' . t('the LDAP server named <em><strong>%name</strong></em>?', array('%name' => $ldap_server->name)),
221
      LDAP_SERVERS_MENU_BASE_PATH . '/servers/list',
222
      t('<p></p>'),
223
      t($action),
224
      t('Cancel')
225
    );
226
  }
227

    
228
}
229

    
230
/**
231
 * Submit hook for the LDAP server delete page.
232
 */
233
function ldap_servers_admin_enable_disable_submit($form, &$form_state) {
234
  $values = $form_state['values'];
235
  $sid = $values['sid'];
236
  $status = ($values['action'] == 'enable') ? 1 : 0;
237
  if ($values['confirm'] && $sid) {
238

    
239
    $form_state['redirect'] = LDAP_SERVERS_MENU_BASE_PATH . '/servers';
240
    $ldap_server = new LdapServerAdmin($sid);
241

    
242
    $ldap_server->status = $status;
243
    $ldap_server->save('edit');
244
    $tokens = array('%name' => $values['name'], '!sid' => $sid, '!action' => t($values['action']) . 'd');
245
    drupal_set_message(t('LDAP Server Configuration %name (server id = !sid) has been !action.', $tokens));
246
    $message = t('LDAP Server !action: %name (sid = !sid) ', $tokens);
247
    watchdog('ldap_servers', $message);
248

    
249
  }
250

    
251
}