Projet

Général

Profil

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

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

1
<?php
2

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

    
9
/**
10
 * @return index of ldap queries
11
 */
12

    
13
function ldap_query_index() {
14

    
15
  return ldap_query_list(NULL, TRUE);
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
 * @return
26
 *   The HTML table with the servers list.
27
 */
28
function ldap_query_list($qid = NULL, $actions = FALSE) {
29

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

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

    
39
  return $html;
40
}
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

    
57
function ldap_query_admin_form($form, &$form_state, $op = NULL, $qid = NULL) {
58
  ldap_servers_module_load_include('php', 'ldap_query', 'LdapQueryAdmin.class');
59
  $server = new LdapQueryAdmin($qid);
60
  $form = $server->drupalForm($op);
61
  return $form;
62
}
63

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

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

    
81
  //$form_state['ldap_warnings'] = (boolean)(count($warnings) > 0);
82

    
83
}
84

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

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

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

    
127

    
128
  if ($qid && ($ldap_query = ldap_query_get_queries($qid, 'all', TRUE))) {
129
    // array()
130

    
131
    $variables = array(
132
      'ldap_query' => $ldap_query, 'actions' => FALSE, 'type' => 'detail'
133
    );
134
    $form['#prefix'] = '<div>' . theme('ldap_query', $variables) . '</div>';
135
    $form['qid'] = array(
136
      '#type' => 'hidden',
137
      '#value' => $qid,
138
    );
139
    $form['name'] = array(
140
      '#type' => 'hidden',
141
      '#value' => $ldap_query->name,
142
    );
143
    return confirm_form(
144
      $form,
145
      'Delete Confirmation Form',
146
      LDAP_QUERY_MENU_BASE_PATH . '/query/list',
147
        '<p>' . t('Are you sure you want to delete the LDAP query named <em><strong>%name</strong></em> ?', array('%name' => $ldap_query->name)) . '</p><p>' .
148
        t('This action cannot be undone.') . '</p>',
149
      t('Delete'),
150
      t('Cancel')
151
    );
152
  }
153
  drupal_goto(LDAP_QUERY_MENU_BASE_PATH . '/query/list');
154
}
155

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

    
181

    
182
/**
183
 * Implements the LDAP query disable
184
 *
185
 * @param $form_state
186
 *   A form state array.
187
 * @param $qid
188
 *   A LDAP query ID.
189
 *
190
 * @return
191
 *   The form structure.
192
 */
193

    
194

    
195
function ldap_query_admin_enable_disable($form, &$form_state, $action = NULL, $qid = NULL) {
196

    
197
  if ($ldap_query = ldap_query_get_queries($qid, 'all', TRUE)) {
198
    $variables = array(
199
      'ldap_query' => $ldap_query, 'actions' => FALSE, 'type' => 'detail'
200
    );
201
    $form['#prefix'] = "<div>" . theme('ldap_query', $variables) . "</div>";
202

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

    
225
}
226

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

    
236
    $form_state['redirect'] = LDAP_QUERY_MENU_BASE_PATH . '/query';
237
    $ldap_query = new LdapQueryAdmin($qid);
238

    
239
    $ldap_query->status = $status;
240
    $ldap_query->save('edit');
241
    $tokens = array('%name' => $values['name'], '!qid' => $qid, '!action' => t($values['action']) . 'd');
242
    drupal_set_message(t('LDAP Query Configuration %name (query id = !qid) has been !action.', $tokens));
243
    $message = t('LDAP Query !action: %name (qid = !qid) ', $tokens);
244
    watchdog('ldap', $message);
245

    
246
  }
247

    
248
}
249

    
250

    
251
function ldap_query_test($qid) {
252

    
253
  $ldap_query = ldap_query_get_queries($qid, 'all', TRUE);
254
  $results = $ldap_query->query();
255
  $display = theme('ldap_query_results', array('results' => $results, 'ldap_query' => $ldap_query, 'show_query' => TRUE));
256

    
257
  return $display;
258

    
259

    
260
}