Projet

Général

Profil

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

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

1
<?php
2

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

    
8
/**
9
 *
10
 */
11
function ldap_servers_edit_index() {
12

    
13
  return ldap_servers_servers_list(NULL, TRUE);
14

    
15
}
16

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

    
30
  $variables = [
31
    'ldap_servers' => $ldap_server = ldap_servers_get_servers($sid, 'all'),
32
    'action' => TRUE,
33
    'type' => 'table',
34
  ];
35

    
36
  $html = theme('ldap_servers_list', $variables);
37

    
38
  return $html;
39
}
40

    
41
/**
42
 * Implements the LDAP server edit page.
43
 *
44
 * @param $form_state
45
 *   A form state array.
46
 * @param $op
47
 *   An operatin - add or edit.
48
 * @param $sid
49
 *   A LDAP server ID.
50
 *
51
 * @return
52
 *   The form structure.
53
 */
54
function ldap_servers_admin_form($form, &$form_state, $op = NULL, $sid = NULL) {
55
  ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServerAdmin.class');
56
  $server = new LdapServerAdmin($sid);
57
  $form = $server->drupalForm($op);
58
  return $form;
59
}
60

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

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

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

    
79
  $form_state['ldap_warnings'] = (boolean) (count($warnings) > 0);
80

    
81
}
82

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

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

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

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

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

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

    
188
/**
189
 * Implements the LDAP server delete page.
190
 *
191
 * @param $form_state
192
 *   A form state array.
193
 * @param $sid
194
 *   A LDAP server ID.
195
 *
196
 * @return
197
 *   The form structure.
198
 */
199
function ldap_servers_admin_enable_disable($form, &$form_state, $action = NULL, $sid = NULL) {
200

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

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

    
231
}
232

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

    
242
    $form_state['redirect'] = LDAP_SERVERS_MENU_BASE_PATH . '/servers';
243
    $ldap_server = new LdapServerAdmin($sid);
244

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

    
252
  }
253

    
254
}