Projet

Général

Profil

Paste
Télécharger (6,89 ko) Statistiques
| Branche: | Révision:

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

1
<?php
2

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

    
8
/**
9
 * @return string
10
 *   Index of ldap queries
11
 */
12
function ldap_query_index() {
13

    
14
  return ldap_query_list(NULL, TRUE);
15

    
16
}
17

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

    
31
  $ldap_queries = ldap_query_get_queries($qid, 'all');
32
  $variables = [
33
    'ldap_queries' => $ldap_queries,
34
    'action' => TRUE,
35
    'type' => 'table',
36
  ];
37

    
38
  $html = theme('ldap_query_list', $variables);
39

    
40
  return $html;
41
}
42

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

    
63
/**
64
 * Validate hook for the LDAP server form.
65
 */
66
function ldap_query_admin_form_validate($form, &$form_state) {
67
  $op = drupal_strtolower($form_state['clicked_button']['#value']);
68
  ldap_servers_module_load_include('php', 'ldap_query', 'LdapQueryAdmin.class');
69
  $server = new LdapQueryAdmin($form_state['values']['qid']);
70

    
71
  $errors = $server->drupalFormValidate($op, $form_state['values']);
72
  foreach ($errors as $error_name => $error_text) {
73
    form_set_error($error_name, t($error_text));
74
  }
75
}
76

    
77
/**
78
 * Submit hook for the LDAP server form.
79
 */
80
function ldap_query_admin_form_submit($form, &$form_state) {
81
  $button = drupal_strtolower($form_state['clicked_button']['#value']);
82
  $op = ($button == 'add') ? 'add' : 'edit';
83
  $verb = ($op == 'edit') ? 'edited' : $op . 'ed';
84
  ldap_servers_module_load_include('php', 'ldap_query', 'LdapQueryAdmin.class');
85
  $query = new LdapQueryAdmin($form_state['values']['qid']);
86
  // Add form data to object and save or create.
87
  $query->drupalFormSubmit($op, $form_state['values']);
88

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

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

    
120
  if ($qid && ($ldap_query = ldap_query_get_queries($qid, 'all', TRUE))) {
121
    // array()
122
    $variables = [
123
      'ldap_query' => $ldap_query,
124
      'actions' => FALSE,
125
      'type' => 'detail',
126
    ];
127
    $form['#prefix'] = '<div>' . theme('ldap_query', $variables) . '</div>';
128
    $form['qid'] = [
129
      '#type' => 'hidden',
130
      '#value' => $qid,
131
    ];
132
    $form['name'] = [
133
      '#type' => 'hidden',
134
      '#value' => $ldap_query->name,
135
    ];
136
    return confirm_form(
137
      $form,
138
      'Delete Confirmation Form',
139
      LDAP_QUERY_MENU_BASE_PATH . '/query/list',
140
        '<p>' . t('Are you sure you want to delete the LDAP query named <em><strong>%name</strong></em> ?', ['%name' => $ldap_query->name]) . '</p><p>' .
141
        t('This action cannot be undone.') . '</p>',
142
      t('Delete'),
143
      t('Cancel')
144
    );
145
  }
146
  drupal_goto(LDAP_QUERY_MENU_BASE_PATH . '/query/list');
147
}
148

    
149
/**
150
 * Submit handler for the LDAP server delete page.
151
 */
152
function ldap_query_admin_delete_submit($form, &$form_state) {
153
  $values = $form_state['values'];
154
  $qid = $values['qid'];
155
  ldap_servers_module_load_include('php', 'ldap_query', 'LdapQueryAdmin.class');
156
  $ldap_query = new LdapQueryAdmin($qid);
157
  if ($values['confirm'] && $qid) {
158
    if ($result = $ldap_query->delete($qid)) {
159
      $tokens = ['%name' => $ldap_query->name, '!qid' => $qid];
160
      drupal_set_message(t('LDAP Server %name (query id = !qid) has been deleted.', $tokens), 'status');
161
      watchdog('ldap_query', 'LDAP Query deleted: %name (qid = !qid) ', $tokens);
162
    }
163
    else {
164
      drupal_set_message(t('LDAP Query delete failed.'), 'warning');
165
    }
166
  }
167
  else {
168
    drupal_set_message(t('LDAP Query delete cancelled.'), 'status');
169
  }
170
  ldap_query_cache_clear();
171
  drupal_goto(LDAP_QUERY_MENU_BASE_PATH . '/query/list');
172
}
173

    
174
/**
175
 * Implements the LDAP query disable.
176
 *
177
 * @param $form_state
178
 *   A form state array.
179
 * @param $qid
180
 *   A LDAP query ID.
181
 *
182
 * @return
183
 *   The form structure.
184
 */
185
function ldap_query_admin_enable_disable($form, &$form_state, $action = NULL, $qid = NULL) {
186

    
187
  if ($ldap_query = ldap_query_get_queries($qid, 'all', TRUE)) {
188
    $variables = [
189
      'ldap_query' => $ldap_query,
190
      'actions' => FALSE,
191
      'type' => 'detail',
192
    ];
193
    $form['#prefix'] = "<div>" . theme('ldap_query', $variables) . "</div>";
194

    
195
    $form['qid'] = [
196
      '#type' => 'hidden',
197
      '#value' => $qid,
198
    ];
199
    $form['name'] = [
200
      '#type' => 'hidden',
201
      '#value' => $ldap_query->name,
202
    ];
203
    $form['action'] = [
204
      '#type' => 'hidden',
205
      '#value' => $action,
206
    ];
207
    return confirm_form(
208
      $form,
209
      t('Are you sure you want to') . t($action) . ' ' . t('the LDAP query named <em><strong>%name</strong></em>?', ['%name' => $ldap_query->name]),
210
      LDAP_QUERY_MENU_BASE_PATH . '/query/list',
211
      t('<p></p>'),
212
      t($action),
213
      t('Cancel')
214
    );
215
  }
216

    
217
}
218

    
219
/**
220
 * Submit hook for the LDAP server delete page.
221
 */
222
function ldap_query_admin_enable_disable_submit($form, &$form_state) {
223
  $values = $form_state['values'];
224
  $qid = $values['qid'];
225
  $status = ($values['action'] == 'enable') ? 1 : 0;
226
  if ($values['confirm'] && $qid) {
227

    
228
    $form_state['redirect'] = LDAP_QUERY_MENU_BASE_PATH . '/query';
229
    $ldap_query = new LdapQueryAdmin($qid);
230

    
231
    $ldap_query->status = $status;
232
    $ldap_query->save('edit');
233
    $tokens = ['%name' => $values['name'], '!qid' => $qid, '!action' => t($values['action']) . 'd'];
234
    drupal_set_message(t('LDAP Query Configuration %name (query id = !qid) has been !action.', $tokens));
235
    $message = t('LDAP Query !action: %name (qid = !qid) ', $tokens);
236
    watchdog('ldap_query', $message);
237

    
238
  }
239

    
240
}
241

    
242
/**
243
 *
244
 */
245
function ldap_query_test($qid) {
246

    
247
  $ldap_query = ldap_query_get_queries($qid, 'all', TRUE);
248
  $results = $ldap_query->query();
249
  $display = theme('ldap_query_results', ['results' => $results, 'ldap_query' => $ldap_query, 'show_query' => TRUE]);
250

    
251
  return $display;
252

    
253
}