annotate sites/all/modules/custom/solrsearch/solrsearch.admin.inc @ 0:015d06b10d37 default tip

initial
author dwinter
date Wed, 31 Jul 2013 13:49:13 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
015d06b10d37 initial
dwinter
parents:
diff changeset
1 <?php
015d06b10d37 initial
dwinter
parents:
diff changeset
2
015d06b10d37 initial
dwinter
parents:
diff changeset
3 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
4 * @file
015d06b10d37 initial
dwinter
parents:
diff changeset
5 * Administrative pages for the Apache Solr framework.
015d06b10d37 initial
dwinter
parents:
diff changeset
6 */
015d06b10d37 initial
dwinter
parents:
diff changeset
7
015d06b10d37 initial
dwinter
parents:
diff changeset
8 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
9 * Form to delete a search environment
015d06b10d37 initial
dwinter
parents:
diff changeset
10 *
015d06b10d37 initial
dwinter
parents:
diff changeset
11 * @param array $form
015d06b10d37 initial
dwinter
parents:
diff changeset
12 * @param array $form_state
015d06b10d37 initial
dwinter
parents:
diff changeset
13 * @param array $environment
015d06b10d37 initial
dwinter
parents:
diff changeset
14 *
015d06b10d37 initial
dwinter
parents:
diff changeset
15 * @return array output of confirm_form()
015d06b10d37 initial
dwinter
parents:
diff changeset
16 */
015d06b10d37 initial
dwinter
parents:
diff changeset
17 function solrsearch_environment_delete_form(array $form, array &$form_state, array $environment) {
015d06b10d37 initial
dwinter
parents:
diff changeset
18 $form['env_id'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
19 '#type' => 'value',
015d06b10d37 initial
dwinter
parents:
diff changeset
20 '#value' => $environment['env_id'],
015d06b10d37 initial
dwinter
parents:
diff changeset
21 );
015d06b10d37 initial
dwinter
parents:
diff changeset
22 if (isset($environment['export_type']) && $environment['export_type'] == 3) {
015d06b10d37 initial
dwinter
parents:
diff changeset
23 $verb = t('Revert');
015d06b10d37 initial
dwinter
parents:
diff changeset
24 }
015d06b10d37 initial
dwinter
parents:
diff changeset
25 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
26 $verb = t('Delete');
015d06b10d37 initial
dwinter
parents:
diff changeset
27 }
015d06b10d37 initial
dwinter
parents:
diff changeset
28 return confirm_form(
015d06b10d37 initial
dwinter
parents:
diff changeset
29 $form,
015d06b10d37 initial
dwinter
parents:
diff changeset
30 t('Are you sure you want to !verb search environment %name?', array('%name' => $environment['name'], '!verb' => strtolower($verb))),
015d06b10d37 initial
dwinter
parents:
diff changeset
31 'admin/config/search/solrsearch',
015d06b10d37 initial
dwinter
parents:
diff changeset
32 t('This action cannot be undone.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
33 $verb,
015d06b10d37 initial
dwinter
parents:
diff changeset
34 t('Cancel')
015d06b10d37 initial
dwinter
parents:
diff changeset
35 );
015d06b10d37 initial
dwinter
parents:
diff changeset
36 }
015d06b10d37 initial
dwinter
parents:
diff changeset
37
015d06b10d37 initial
dwinter
parents:
diff changeset
38 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
39 * Submit handler for the delete form
015d06b10d37 initial
dwinter
parents:
diff changeset
40 *
015d06b10d37 initial
dwinter
parents:
diff changeset
41 * @param array $form
015d06b10d37 initial
dwinter
parents:
diff changeset
42 * @param array $form_state
015d06b10d37 initial
dwinter
parents:
diff changeset
43 */
015d06b10d37 initial
dwinter
parents:
diff changeset
44 function solrsearch_environment_delete_form_submit(array $form, array &$form_state) {
015d06b10d37 initial
dwinter
parents:
diff changeset
45 if (solrsearch_environment_delete($form_state['values']['env_id'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
46 drupal_set_message(t('The search environment was deleted'));
015d06b10d37 initial
dwinter
parents:
diff changeset
47 }
015d06b10d37 initial
dwinter
parents:
diff changeset
48 $form_state['redirect'] = 'admin/config/search/solrsearch/settings';
015d06b10d37 initial
dwinter
parents:
diff changeset
49 }
015d06b10d37 initial
dwinter
parents:
diff changeset
50
015d06b10d37 initial
dwinter
parents:
diff changeset
51 function solrsearch_environment_edit_delete_submit($form, &$form_state) {
015d06b10d37 initial
dwinter
parents:
diff changeset
52 $form_state['redirect'] = 'admin/config/search/solrsearch/settings/' . $form_state['values']['env_id'] . '/delete';
015d06b10d37 initial
dwinter
parents:
diff changeset
53
015d06b10d37 initial
dwinter
parents:
diff changeset
54 // Regardlessly of the destination parameter we want to go to another page
015d06b10d37 initial
dwinter
parents:
diff changeset
55 unset($_GET['destination']);
015d06b10d37 initial
dwinter
parents:
diff changeset
56 drupal_static_reset('drupal_get_destination');
015d06b10d37 initial
dwinter
parents:
diff changeset
57 drupal_get_destination();
015d06b10d37 initial
dwinter
parents:
diff changeset
58 }
015d06b10d37 initial
dwinter
parents:
diff changeset
59
015d06b10d37 initial
dwinter
parents:
diff changeset
60 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
61 * Settings page for a specific environment (or default one if not provided)
015d06b10d37 initial
dwinter
parents:
diff changeset
62 *
015d06b10d37 initial
dwinter
parents:
diff changeset
63 * @param array|bool $environment
015d06b10d37 initial
dwinter
parents:
diff changeset
64 *
015d06b10d37 initial
dwinter
parents:
diff changeset
65 * @return array Render array for a settings page
015d06b10d37 initial
dwinter
parents:
diff changeset
66 */
015d06b10d37 initial
dwinter
parents:
diff changeset
67 function solrsearch_environment_settings_page(array $environment = array()) {
015d06b10d37 initial
dwinter
parents:
diff changeset
68 if (empty($environment)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
69 $env_id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
70 $environment = solrsearch_environment_load($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
71 }
015d06b10d37 initial
dwinter
parents:
diff changeset
72 $env_id = $environment['env_id'];
015d06b10d37 initial
dwinter
parents:
diff changeset
73
015d06b10d37 initial
dwinter
parents:
diff changeset
74 // Initializes output with information about which environment's setting we are
015d06b10d37 initial
dwinter
parents:
diff changeset
75 // editing, as it is otherwise not transparent to the end user.
015d06b10d37 initial
dwinter
parents:
diff changeset
76 $output = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
77 'solrsearch_environment' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
78 '#theme' => 'solrsearch_settings_title',
015d06b10d37 initial
dwinter
parents:
diff changeset
79 '#env_id' => $env_id,
015d06b10d37 initial
dwinter
parents:
diff changeset
80 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
81 );
015d06b10d37 initial
dwinter
parents:
diff changeset
82 $output['form'] = drupal_get_form('solrsearch_environment_edit_form', $environment);
015d06b10d37 initial
dwinter
parents:
diff changeset
83 return $output;
015d06b10d37 initial
dwinter
parents:
diff changeset
84 }
015d06b10d37 initial
dwinter
parents:
diff changeset
85
015d06b10d37 initial
dwinter
parents:
diff changeset
86 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
87 * Form to clone a certain environment
015d06b10d37 initial
dwinter
parents:
diff changeset
88 *
015d06b10d37 initial
dwinter
parents:
diff changeset
89 * @param array $form
015d06b10d37 initial
dwinter
parents:
diff changeset
90 * @param array $form_state
015d06b10d37 initial
dwinter
parents:
diff changeset
91 * @param array $environment
015d06b10d37 initial
dwinter
parents:
diff changeset
92 *
015d06b10d37 initial
dwinter
parents:
diff changeset
93 * @return array output of confirm_form()
015d06b10d37 initial
dwinter
parents:
diff changeset
94 */
015d06b10d37 initial
dwinter
parents:
diff changeset
95 function solrsearch_environment_clone_form(array $form, array &$form_state, array $environment) {
015d06b10d37 initial
dwinter
parents:
diff changeset
96 $form['env_id'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
97 '#type' => 'value',
015d06b10d37 initial
dwinter
parents:
diff changeset
98 '#value' => $environment['env_id'],
015d06b10d37 initial
dwinter
parents:
diff changeset
99 );
015d06b10d37 initial
dwinter
parents:
diff changeset
100 return confirm_form(
015d06b10d37 initial
dwinter
parents:
diff changeset
101 $form,
015d06b10d37 initial
dwinter
parents:
diff changeset
102 t('Are you sure you want to clone search environment %name?', array('%name' => $environment['name'])),
015d06b10d37 initial
dwinter
parents:
diff changeset
103 'admin/config/search/solrsearch',
015d06b10d37 initial
dwinter
parents:
diff changeset
104 '',
015d06b10d37 initial
dwinter
parents:
diff changeset
105 t('Clone'),
015d06b10d37 initial
dwinter
parents:
diff changeset
106 t('Cancel')
015d06b10d37 initial
dwinter
parents:
diff changeset
107 );
015d06b10d37 initial
dwinter
parents:
diff changeset
108 }
015d06b10d37 initial
dwinter
parents:
diff changeset
109
015d06b10d37 initial
dwinter
parents:
diff changeset
110 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
111 * Submit handler for the clone form
015d06b10d37 initial
dwinter
parents:
diff changeset
112 *
015d06b10d37 initial
dwinter
parents:
diff changeset
113 * @param array $form
015d06b10d37 initial
dwinter
parents:
diff changeset
114 * @param array $form_state
015d06b10d37 initial
dwinter
parents:
diff changeset
115 */
015d06b10d37 initial
dwinter
parents:
diff changeset
116 function solrsearch_environment_clone_form_submit(array $form, array &$form_state) {
015d06b10d37 initial
dwinter
parents:
diff changeset
117 if (solrsearch_environment_clone($form_state['values']['env_id'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
118 drupal_set_message(t('The search environment was cloned'));
015d06b10d37 initial
dwinter
parents:
diff changeset
119 }
015d06b10d37 initial
dwinter
parents:
diff changeset
120 $form_state['redirect'] = 'admin/config/search/solrsearch/settings';
015d06b10d37 initial
dwinter
parents:
diff changeset
121 }
015d06b10d37 initial
dwinter
parents:
diff changeset
122
015d06b10d37 initial
dwinter
parents:
diff changeset
123 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
124 * Submit handler for the confirmation page of cloning an environment
015d06b10d37 initial
dwinter
parents:
diff changeset
125 *
015d06b10d37 initial
dwinter
parents:
diff changeset
126 * @param array $form
015d06b10d37 initial
dwinter
parents:
diff changeset
127 * @param array $form_state
015d06b10d37 initial
dwinter
parents:
diff changeset
128 */
015d06b10d37 initial
dwinter
parents:
diff changeset
129 function solrsearch_environment_clone_submit(array $form, array &$form_state) {
015d06b10d37 initial
dwinter
parents:
diff changeset
130 $form_state['redirect'] = 'admin/config/search/solrsearch/settings/' . $form_state['values']['env_id'] . '/clone';
015d06b10d37 initial
dwinter
parents:
diff changeset
131 }
015d06b10d37 initial
dwinter
parents:
diff changeset
132
015d06b10d37 initial
dwinter
parents:
diff changeset
133 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
134 * Form builder for adding/editing a Solr environment used as a menu callback.
015d06b10d37 initial
dwinter
parents:
diff changeset
135 */
015d06b10d37 initial
dwinter
parents:
diff changeset
136 function solrsearch_environment_edit_form(array $form, array &$form_state, array $environment = array()) {
015d06b10d37 initial
dwinter
parents:
diff changeset
137 if (empty($environment)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
138 $environment = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
139 }
015d06b10d37 initial
dwinter
parents:
diff changeset
140 $environment += array('env_id' => '', 'name' => '', 'url' => '', 'service_class' => '', 'conf' => array());
015d06b10d37 initial
dwinter
parents:
diff changeset
141
015d06b10d37 initial
dwinter
parents:
diff changeset
142 $form['#environment'] = $environment;
015d06b10d37 initial
dwinter
parents:
diff changeset
143 $form['url'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
144 '#type' => 'textfield',
015d06b10d37 initial
dwinter
parents:
diff changeset
145 '#title' => t('Solr server URL'),
015d06b10d37 initial
dwinter
parents:
diff changeset
146 '#default_value' => $environment['url'],
015d06b10d37 initial
dwinter
parents:
diff changeset
147 '#description' => t('Example: http://localhost:8983/solr'),
015d06b10d37 initial
dwinter
parents:
diff changeset
148 '#required' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
149 );
015d06b10d37 initial
dwinter
parents:
diff changeset
150 $is_default = $environment['env_id'] == solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
151 $form['make_default'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
152 '#type' => 'checkbox',
015d06b10d37 initial
dwinter
parents:
diff changeset
153 '#title' => t('Make this Solr search environment the default'),
015d06b10d37 initial
dwinter
parents:
diff changeset
154 '#default_value' => $is_default,
015d06b10d37 initial
dwinter
parents:
diff changeset
155 '#disabled' => $is_default,
015d06b10d37 initial
dwinter
parents:
diff changeset
156 );
015d06b10d37 initial
dwinter
parents:
diff changeset
157 $form['name'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
158 '#type' => 'textfield',
015d06b10d37 initial
dwinter
parents:
diff changeset
159 '#title' => t('Description'),
015d06b10d37 initial
dwinter
parents:
diff changeset
160 '#default_value' => $environment['name'],
015d06b10d37 initial
dwinter
parents:
diff changeset
161 '#required' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
162 );
015d06b10d37 initial
dwinter
parents:
diff changeset
163 $form['env_id'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
164 '#type' => 'machine_name',
015d06b10d37 initial
dwinter
parents:
diff changeset
165 '#title' => t('Environment id'),
015d06b10d37 initial
dwinter
parents:
diff changeset
166 '#machine_name' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
167 'exists' => 'solrsearch_environment_load',
015d06b10d37 initial
dwinter
parents:
diff changeset
168 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
169 '#default_value' => $environment['env_id'],
015d06b10d37 initial
dwinter
parents:
diff changeset
170 '#disabled' => !empty($environment['env_id']), // Cannot change it once set.
015d06b10d37 initial
dwinter
parents:
diff changeset
171 '#description' => t('Unique, machine-readable identifier for this Solr environment.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
172 '#required' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
173 );
015d06b10d37 initial
dwinter
parents:
diff changeset
174 $form['service_class'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
175 '#type' => 'value',
015d06b10d37 initial
dwinter
parents:
diff changeset
176 '#value' => $environment['service_class'],
015d06b10d37 initial
dwinter
parents:
diff changeset
177 );
015d06b10d37 initial
dwinter
parents:
diff changeset
178 $form['conf'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
179 '#tree' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
180 );
015d06b10d37 initial
dwinter
parents:
diff changeset
181 $form['conf']['solrsearch_read_only'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
182 '#type' => 'radios',
015d06b10d37 initial
dwinter
parents:
diff changeset
183 '#title' => t('Index write access'),
015d06b10d37 initial
dwinter
parents:
diff changeset
184 '#default_value' => isset($environment['conf']['solrsearch_read_only']) ? $environment['conf']['solrsearch_read_only'] : solrsearch_READ_WRITE,
015d06b10d37 initial
dwinter
parents:
diff changeset
185 '#options' => array(solrsearch_READ_WRITE => t('Read and write (normal)'), solrsearch_READ_ONLY => t('Read only')),
015d06b10d37 initial
dwinter
parents:
diff changeset
186 '#description' => t('<em>Read only</em> stops this site from sending updates to this search environment. Useful for development sites.'),
015d06b10d37 initial
dwinter
parents:
diff changeset
187 );
015d06b10d37 initial
dwinter
parents:
diff changeset
188 $form['actions'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
189 '#type' => 'actions',
015d06b10d37 initial
dwinter
parents:
diff changeset
190 );
015d06b10d37 initial
dwinter
parents:
diff changeset
191 $form['actions']['save'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
192 '#type' => 'submit',
015d06b10d37 initial
dwinter
parents:
diff changeset
193 '#validate' => array('solrsearch_environment_edit_validate'),
015d06b10d37 initial
dwinter
parents:
diff changeset
194 '#submit' => array('solrsearch_environment_edit_submit'),
015d06b10d37 initial
dwinter
parents:
diff changeset
195 '#value' => t('Save'),
015d06b10d37 initial
dwinter
parents:
diff changeset
196 );
015d06b10d37 initial
dwinter
parents:
diff changeset
197 $form['actions']['save_edit'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
198 '#type' => 'submit',
015d06b10d37 initial
dwinter
parents:
diff changeset
199 '#validate' => array('solrsearch_environment_edit_validate'),
015d06b10d37 initial
dwinter
parents:
diff changeset
200 '#submit' => array('solrsearch_environment_edit_submit'),
015d06b10d37 initial
dwinter
parents:
diff changeset
201 '#value' => t('Save and edit'),
015d06b10d37 initial
dwinter
parents:
diff changeset
202 );
015d06b10d37 initial
dwinter
parents:
diff changeset
203 $form['actions']['test'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
204 '#type' => 'submit',
015d06b10d37 initial
dwinter
parents:
diff changeset
205 '#validate' => array('solrsearch_environment_edit_validate'),
015d06b10d37 initial
dwinter
parents:
diff changeset
206 '#submit' => array('solrsearch_environment_edit_test_submit'),
015d06b10d37 initial
dwinter
parents:
diff changeset
207 '#value' => t('Test connection'),
015d06b10d37 initial
dwinter
parents:
diff changeset
208 );
015d06b10d37 initial
dwinter
parents:
diff changeset
209 if (!empty($environment['env_id']) && !$is_default) {
015d06b10d37 initial
dwinter
parents:
diff changeset
210 $form['actions']['delete'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
211 '#type' => 'submit',
015d06b10d37 initial
dwinter
parents:
diff changeset
212 '#submit' => array('solrsearch_environment_edit_delete_submit'),
015d06b10d37 initial
dwinter
parents:
diff changeset
213 '#value' => t('Delete'),
015d06b10d37 initial
dwinter
parents:
diff changeset
214 );
015d06b10d37 initial
dwinter
parents:
diff changeset
215 }
015d06b10d37 initial
dwinter
parents:
diff changeset
216
015d06b10d37 initial
dwinter
parents:
diff changeset
217 // Ensures destination is an internal URL, builds "cancel" link.
015d06b10d37 initial
dwinter
parents:
diff changeset
218 if (isset($_GET['destination']) && !url_is_external($_GET['destination'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
219 $destination = $_GET['destination'];
015d06b10d37 initial
dwinter
parents:
diff changeset
220 }
015d06b10d37 initial
dwinter
parents:
diff changeset
221 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
222 $destination = 'admin/config/search/solrsearch/settings';
015d06b10d37 initial
dwinter
parents:
diff changeset
223 }
015d06b10d37 initial
dwinter
parents:
diff changeset
224 $form['actions']['cancel'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
225 '#type' => 'link',
015d06b10d37 initial
dwinter
parents:
diff changeset
226 '#title' => t('Cancel'),
015d06b10d37 initial
dwinter
parents:
diff changeset
227 '#href' => $destination,
015d06b10d37 initial
dwinter
parents:
diff changeset
228 );
015d06b10d37 initial
dwinter
parents:
diff changeset
229
015d06b10d37 initial
dwinter
parents:
diff changeset
230 return $form;
015d06b10d37 initial
dwinter
parents:
diff changeset
231 }
015d06b10d37 initial
dwinter
parents:
diff changeset
232
015d06b10d37 initial
dwinter
parents:
diff changeset
233 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
234 * Submit handler for the test button in the environment edit page
015d06b10d37 initial
dwinter
parents:
diff changeset
235 *
015d06b10d37 initial
dwinter
parents:
diff changeset
236 * @param array $form
015d06b10d37 initial
dwinter
parents:
diff changeset
237 * @param array $form_state
015d06b10d37 initial
dwinter
parents:
diff changeset
238 */
015d06b10d37 initial
dwinter
parents:
diff changeset
239 function solrsearch_environment_edit_test_submit(array $form, array &$form_state) {
015d06b10d37 initial
dwinter
parents:
diff changeset
240 $ping = solrsearch_server_status($form_state['values']['url'], $form_state['values']['service_class']);
015d06b10d37 initial
dwinter
parents:
diff changeset
241 if ($ping) {
015d06b10d37 initial
dwinter
parents:
diff changeset
242 drupal_set_message(t('Your site has contacted the Apache Solr server.'));
015d06b10d37 initial
dwinter
parents:
diff changeset
243 }
015d06b10d37 initial
dwinter
parents:
diff changeset
244 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
245 drupal_set_message(t('Your site was unable to contact the Apache Solr server.'), 'error');
015d06b10d37 initial
dwinter
parents:
diff changeset
246 }
015d06b10d37 initial
dwinter
parents:
diff changeset
247 $form_state['rebuild'] = TRUE;
015d06b10d37 initial
dwinter
parents:
diff changeset
248 }
015d06b10d37 initial
dwinter
parents:
diff changeset
249
015d06b10d37 initial
dwinter
parents:
diff changeset
250 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
251 * Validate handler for the environment edit page
015d06b10d37 initial
dwinter
parents:
diff changeset
252 *
015d06b10d37 initial
dwinter
parents:
diff changeset
253 * @param array $form
015d06b10d37 initial
dwinter
parents:
diff changeset
254 * @param array $form_state
015d06b10d37 initial
dwinter
parents:
diff changeset
255 */
015d06b10d37 initial
dwinter
parents:
diff changeset
256 function solrsearch_environment_edit_validate(array $form, array &$form_state) {
015d06b10d37 initial
dwinter
parents:
diff changeset
257 $parts = parse_url($form_state['values']['url']);
015d06b10d37 initial
dwinter
parents:
diff changeset
258 foreach (array('scheme', 'host', 'path') as $key) {
015d06b10d37 initial
dwinter
parents:
diff changeset
259 if (empty($parts[$key])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
260 form_set_error('url', t('The Solr server URL needs to include a !part', array('!part' => $key)));
015d06b10d37 initial
dwinter
parents:
diff changeset
261 }
015d06b10d37 initial
dwinter
parents:
diff changeset
262 }
015d06b10d37 initial
dwinter
parents:
diff changeset
263 if (isset($parts['port'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
264 // parse_url() should always give an integer for port. Since drupal_http_request()
015d06b10d37 initial
dwinter
parents:
diff changeset
265 // also uses parse_url(), we don't need to validate anything except the range.
015d06b10d37 initial
dwinter
parents:
diff changeset
266 $pattern = empty($parts['user']) ? '@://[^:]+:([^/]+)@' : '#://[^@]+@[^:]+:([^/]+)#';
015d06b10d37 initial
dwinter
parents:
diff changeset
267 preg_match($pattern, $form_state['values']['url'], $m);
015d06b10d37 initial
dwinter
parents:
diff changeset
268 if (empty($m[1]) || !ctype_digit($m[1]) || $m[1] < 1 || $m[1] > 65535) {
015d06b10d37 initial
dwinter
parents:
diff changeset
269 form_set_error('port', t('The port has to be an integer between 1 and 65535.'));
015d06b10d37 initial
dwinter
parents:
diff changeset
270 }
015d06b10d37 initial
dwinter
parents:
diff changeset
271 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
272 // Normalize the url by removing extra slashes and whitespace.
015d06b10d37 initial
dwinter
parents:
diff changeset
273 $form_state['values']['url'] = trim($form_state['values']['url'], "/ \t\r\n\0\x0B");
015d06b10d37 initial
dwinter
parents:
diff changeset
274 }
015d06b10d37 initial
dwinter
parents:
diff changeset
275 }
015d06b10d37 initial
dwinter
parents:
diff changeset
276 }
015d06b10d37 initial
dwinter
parents:
diff changeset
277
015d06b10d37 initial
dwinter
parents:
diff changeset
278 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
279 * Submit handler for the environment edit page
015d06b10d37 initial
dwinter
parents:
diff changeset
280 *
015d06b10d37 initial
dwinter
parents:
diff changeset
281 * @param array $form
015d06b10d37 initial
dwinter
parents:
diff changeset
282 * @param array $form_state
015d06b10d37 initial
dwinter
parents:
diff changeset
283 */
015d06b10d37 initial
dwinter
parents:
diff changeset
284 function solrsearch_environment_edit_submit(array $form, array &$form_state) {
015d06b10d37 initial
dwinter
parents:
diff changeset
285 solrsearch_environment_save($form_state['values']);
015d06b10d37 initial
dwinter
parents:
diff changeset
286 if (!empty($form_state['values']['make_default'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
287 solrsearch_set_default_environment($form_state['values']['env_id']);
015d06b10d37 initial
dwinter
parents:
diff changeset
288 }
015d06b10d37 initial
dwinter
parents:
diff changeset
289 cache_clear_all('solrsearch:environments', 'cache_solrsearch');
015d06b10d37 initial
dwinter
parents:
diff changeset
290 drupal_set_message(t('The %name search environment has been saved.', array('%name' => $form_state['values']['name'])));
015d06b10d37 initial
dwinter
parents:
diff changeset
291 if ($form_state['values']['op'] == t('Save')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
292 $form_state['redirect'] = 'admin/config/search/solrsearch/settings';
015d06b10d37 initial
dwinter
parents:
diff changeset
293 }
015d06b10d37 initial
dwinter
parents:
diff changeset
294 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
295 $form_state['redirect'] = current_path();
015d06b10d37 initial
dwinter
parents:
diff changeset
296 }
015d06b10d37 initial
dwinter
parents:
diff changeset
297 // Regardlessly of the destination parameter we want to go to another page
015d06b10d37 initial
dwinter
parents:
diff changeset
298 unset($_GET['destination']);
015d06b10d37 initial
dwinter
parents:
diff changeset
299 drupal_static_reset('drupal_get_destination');
015d06b10d37 initial
dwinter
parents:
diff changeset
300 drupal_get_destination();
015d06b10d37 initial
dwinter
parents:
diff changeset
301 }
015d06b10d37 initial
dwinter
parents:
diff changeset
302
015d06b10d37 initial
dwinter
parents:
diff changeset
303 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
304 * Check to see if the facetapi module is installed, and if not put up
015d06b10d37 initial
dwinter
parents:
diff changeset
305 * a message.
015d06b10d37 initial
dwinter
parents:
diff changeset
306 *
015d06b10d37 initial
dwinter
parents:
diff changeset
307 * Only call this function if the user is already in a position for this to
015d06b10d37 initial
dwinter
parents:
diff changeset
308 * be useful.
015d06b10d37 initial
dwinter
parents:
diff changeset
309 */
015d06b10d37 initial
dwinter
parents:
diff changeset
310 function solrsearch_check_facetapi() {
015d06b10d37 initial
dwinter
parents:
diff changeset
311 if (!module_exists('facetapi')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
312 $filename = db_query_range("SELECT filename FROM {system} WHERE type = 'module' AND name = 'facetapi'", 0, 1)
015d06b10d37 initial
dwinter
parents:
diff changeset
313 ->fetchField();
015d06b10d37 initial
dwinter
parents:
diff changeset
314 if ($filename && file_exists($filename)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
315 drupal_set_message(t('If you <a href="@modules">enable the facetapi module</a>, Apache Solr Search will provide you with configurable facets.', array('@modules' => url('admin/modules'))));
015d06b10d37 initial
dwinter
parents:
diff changeset
316 }
015d06b10d37 initial
dwinter
parents:
diff changeset
317 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
318 drupal_set_message(t('If you install the facetapi module from !href, Apache Solr Search will provide you with configurable facets.', array('!href' => url('http://drupal.org/project/facetapi'))));
015d06b10d37 initial
dwinter
parents:
diff changeset
319 }
015d06b10d37 initial
dwinter
parents:
diff changeset
320 }
015d06b10d37 initial
dwinter
parents:
diff changeset
321 }
015d06b10d37 initial
dwinter
parents:
diff changeset
322
015d06b10d37 initial
dwinter
parents:
diff changeset
323 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
324 * Form builder for general settings used as a menu callback.
015d06b10d37 initial
dwinter
parents:
diff changeset
325 *
015d06b10d37 initial
dwinter
parents:
diff changeset
326 * @param array $form
015d06b10d37 initial
dwinter
parents:
diff changeset
327 * @param array $form_state
015d06b10d37 initial
dwinter
parents:
diff changeset
328 *
015d06b10d37 initial
dwinter
parents:
diff changeset
329 * @return array Output of the system_settings_form()
015d06b10d37 initial
dwinter
parents:
diff changeset
330 */
015d06b10d37 initial
dwinter
parents:
diff changeset
331 function solrsearch_settings(array $form, array &$form_state) {
015d06b10d37 initial
dwinter
parents:
diff changeset
332 $form = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
333 $rows = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
334
015d06b10d37 initial
dwinter
parents:
diff changeset
335 // Environment settings // Take environment settings form solrsearch
015d06b10d37 initial
dwinter
parents:
diff changeset
336 $id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
337
015d06b10d37 initial
dwinter
parents:
diff changeset
338 $environments = solrsearch_load_all_environments();
015d06b10d37 initial
dwinter
parents:
diff changeset
339 $default_environment = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
340 solrsearch_check_facetapi();
015d06b10d37 initial
dwinter
parents:
diff changeset
341
015d06b10d37 initial
dwinter
parents:
diff changeset
342 // Reserve a row for the default one
015d06b10d37 initial
dwinter
parents:
diff changeset
343 $rows[$default_environment] = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
344
015d06b10d37 initial
dwinter
parents:
diff changeset
345 foreach ($environments as $environment_id => $data) {
015d06b10d37 initial
dwinter
parents:
diff changeset
346 // Define all the Operations
015d06b10d37 initial
dwinter
parents:
diff changeset
347 $confs = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
348 $ops = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
349 // Whenever facetapi is enabled we also enable our operation link
015d06b10d37 initial
dwinter
parents:
diff changeset
350 if (module_exists('facetapi')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
351 $confs['facets'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
352 'class' => 'operation',
015d06b10d37 initial
dwinter
parents:
diff changeset
353 'data' => l(t('Facets'),
015d06b10d37 initial
dwinter
parents:
diff changeset
354 'admin/config/search/solrsearch/settings/' . $data['env_id'] . '/facets',
015d06b10d37 initial
dwinter
parents:
diff changeset
355 array('query' => array('destination' => current_path()))
015d06b10d37 initial
dwinter
parents:
diff changeset
356 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
357 );
015d06b10d37 initial
dwinter
parents:
diff changeset
358 }
015d06b10d37 initial
dwinter
parents:
diff changeset
359 // These are our result and bias settings
015d06b10d37 initial
dwinter
parents:
diff changeset
360 if (module_exists('solrsearch_search')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
361 $confs['result_bias'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
362 'class' => 'operation',
015d06b10d37 initial
dwinter
parents:
diff changeset
363 'data' => l(t('Bias'),
015d06b10d37 initial
dwinter
parents:
diff changeset
364 'admin/config/search/solrsearch/settings/' . $data['env_id'] . '/bias',
015d06b10d37 initial
dwinter
parents:
diff changeset
365 array('query' => array('destination' => current_path()))
015d06b10d37 initial
dwinter
parents:
diff changeset
366 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
367 );
015d06b10d37 initial
dwinter
parents:
diff changeset
368 }
015d06b10d37 initial
dwinter
parents:
diff changeset
369
015d06b10d37 initial
dwinter
parents:
diff changeset
370 $ops['edit'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
371 'class' => 'operation',
015d06b10d37 initial
dwinter
parents:
diff changeset
372 'data' => l(t('Edit'),
015d06b10d37 initial
dwinter
parents:
diff changeset
373 'admin/config/search/solrsearch/settings/' . $data['env_id'] . '/edit',
015d06b10d37 initial
dwinter
parents:
diff changeset
374 array('query' => array('destination' => current_path()))
015d06b10d37 initial
dwinter
parents:
diff changeset
375 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
376 );
015d06b10d37 initial
dwinter
parents:
diff changeset
377
015d06b10d37 initial
dwinter
parents:
diff changeset
378 $ops['clone'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
379 'class' => 'operation',
015d06b10d37 initial
dwinter
parents:
diff changeset
380 'data' => l(t('Clone'),
015d06b10d37 initial
dwinter
parents:
diff changeset
381 'admin/config/search/solrsearch/settings/' . $data['env_id'] . '/clone',
015d06b10d37 initial
dwinter
parents:
diff changeset
382 array('query' => array('destination' => $_GET['q']))
015d06b10d37 initial
dwinter
parents:
diff changeset
383 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
384 );
015d06b10d37 initial
dwinter
parents:
diff changeset
385 $env_name = l($data['name'], 'admin/config/search/solrsearch/settings/' . $data['env_id'] . '/edit', array('query' => array('destination' => $_GET['q'])));
015d06b10d37 initial
dwinter
parents:
diff changeset
386
015d06b10d37 initial
dwinter
parents:
diff changeset
387 // Is this row our default environment?
015d06b10d37 initial
dwinter
parents:
diff changeset
388 if ($environment_id == $default_environment) {
015d06b10d37 initial
dwinter
parents:
diff changeset
389 $env_name = t('!environment <em>(Default)</em>', array('!environment' => $env_name));
015d06b10d37 initial
dwinter
parents:
diff changeset
390 $env_class_row = 'default-environment';
015d06b10d37 initial
dwinter
parents:
diff changeset
391 }
015d06b10d37 initial
dwinter
parents:
diff changeset
392 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
393 $env_class_row = '';
015d06b10d37 initial
dwinter
parents:
diff changeset
394 }
015d06b10d37 initial
dwinter
parents:
diff changeset
395 // For every non-default we add a delete link
015d06b10d37 initial
dwinter
parents:
diff changeset
396 // Allow to revert a search environment or to delete it
015d06b10d37 initial
dwinter
parents:
diff changeset
397 $delete_value = '';
015d06b10d37 initial
dwinter
parents:
diff changeset
398 if (!isset($data['in_code_only'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
399 if ((isset($data['type']) && $data['type'] == 'Overridden')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
400 $delete_value = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
401 'class' => 'operation',
015d06b10d37 initial
dwinter
parents:
diff changeset
402 'data' => l(t('Revert'), 'admin/config/search/solrsearch/settings/' . $data['env_id'] . '/delete'),
015d06b10d37 initial
dwinter
parents:
diff changeset
403 );
015d06b10d37 initial
dwinter
parents:
diff changeset
404 }
015d06b10d37 initial
dwinter
parents:
diff changeset
405 // don't allow the deletion of the default environment
015d06b10d37 initial
dwinter
parents:
diff changeset
406 elseif ($environment_id != $default_environment) {
015d06b10d37 initial
dwinter
parents:
diff changeset
407 $delete_value = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
408 'class' => 'operation',
015d06b10d37 initial
dwinter
parents:
diff changeset
409 'data' => l(t('Delete'), 'admin/config/search/solrsearch/settings/' . $data['env_id'] . '/delete'),
015d06b10d37 initial
dwinter
parents:
diff changeset
410 );
015d06b10d37 initial
dwinter
parents:
diff changeset
411 }
015d06b10d37 initial
dwinter
parents:
diff changeset
412 }
015d06b10d37 initial
dwinter
parents:
diff changeset
413 $ops['delete'] = $delete_value;
015d06b10d37 initial
dwinter
parents:
diff changeset
414
015d06b10d37 initial
dwinter
parents:
diff changeset
415 // When we are receiving a http POST (so the page does not show) we do not
015d06b10d37 initial
dwinter
parents:
diff changeset
416 // want to check the statusses of any environment
015d06b10d37 initial
dwinter
parents:
diff changeset
417 $class = '';
015d06b10d37 initial
dwinter
parents:
diff changeset
418 if (empty($form_state['input'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
419 $class = solrsearch_server_status($data['url'], $data['service_class']) ? 'ok' : 'error';
015d06b10d37 initial
dwinter
parents:
diff changeset
420 }
015d06b10d37 initial
dwinter
parents:
diff changeset
421
015d06b10d37 initial
dwinter
parents:
diff changeset
422 $headers = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
423 array('data' => t('Name'), 'colspan' => 2),
015d06b10d37 initial
dwinter
parents:
diff changeset
424 t('URL'),
015d06b10d37 initial
dwinter
parents:
diff changeset
425 array('data' => t('Configuration'), 'colspan' => count($confs)),
015d06b10d37 initial
dwinter
parents:
diff changeset
426 array('data' => t('Operations'), 'colspan' => count($ops)),
015d06b10d37 initial
dwinter
parents:
diff changeset
427 );
015d06b10d37 initial
dwinter
parents:
diff changeset
428
015d06b10d37 initial
dwinter
parents:
diff changeset
429 $rows[$environment_id] = array('data' =>
015d06b10d37 initial
dwinter
parents:
diff changeset
430 array(
015d06b10d37 initial
dwinter
parents:
diff changeset
431 // Cells
015d06b10d37 initial
dwinter
parents:
diff changeset
432 array(
015d06b10d37 initial
dwinter
parents:
diff changeset
433 'class' => 'status-icon',
015d06b10d37 initial
dwinter
parents:
diff changeset
434 'data' => '<div title="' . $class . '"><span class="element-invisible">' . $class . '</span></div>',
015d06b10d37 initial
dwinter
parents:
diff changeset
435 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
436 array(
015d06b10d37 initial
dwinter
parents:
diff changeset
437 'class' => $env_class_row,
015d06b10d37 initial
dwinter
parents:
diff changeset
438 'data' => $env_name,
015d06b10d37 initial
dwinter
parents:
diff changeset
439 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
440 check_plain($data['url']),
015d06b10d37 initial
dwinter
parents:
diff changeset
441 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
442 'class' => array(drupal_html_class($class)),
015d06b10d37 initial
dwinter
parents:
diff changeset
443 );
015d06b10d37 initial
dwinter
parents:
diff changeset
444 // Add the links to the page
015d06b10d37 initial
dwinter
parents:
diff changeset
445 $rows[$environment_id]['data'] = array_merge($rows[$environment_id]['data'], $confs);
015d06b10d37 initial
dwinter
parents:
diff changeset
446 $rows[$environment_id]['data'] = array_merge($rows[$environment_id]['data'], $ops);
015d06b10d37 initial
dwinter
parents:
diff changeset
447 }
015d06b10d37 initial
dwinter
parents:
diff changeset
448
015d06b10d37 initial
dwinter
parents:
diff changeset
449 $form['solrsearch_host_settings']['actions'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
450 '#markup' => '<ul class="action-links">' . drupal_render($actions) . '</ul>',
015d06b10d37 initial
dwinter
parents:
diff changeset
451 );
015d06b10d37 initial
dwinter
parents:
diff changeset
452 $form['solrsearch_host_settings']['table'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
453 '#theme' => 'table',
015d06b10d37 initial
dwinter
parents:
diff changeset
454 '#header' => $headers,
015d06b10d37 initial
dwinter
parents:
diff changeset
455 '#rows' => array_values($rows),
015d06b10d37 initial
dwinter
parents:
diff changeset
456 '#attributes' => array('class' => array('admin-solrsearch')),
015d06b10d37 initial
dwinter
parents:
diff changeset
457 );
015d06b10d37 initial
dwinter
parents:
diff changeset
458
015d06b10d37 initial
dwinter
parents:
diff changeset
459 $form['advanced'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
460 '#type' => 'fieldset',
015d06b10d37 initial
dwinter
parents:
diff changeset
461 '#title' => t('Advanced configuration'),
015d06b10d37 initial
dwinter
parents:
diff changeset
462 '#collapsed' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
463 '#collapsible' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
464 );
015d06b10d37 initial
dwinter
parents:
diff changeset
465 $form['advanced']['solrsearch_set_nodeapi_messages'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
466 '#type' => 'radios',
015d06b10d37 initial
dwinter
parents:
diff changeset
467 '#title' => t('Extra help messages for administrators'),
015d06b10d37 initial
dwinter
parents:
diff changeset
468 '#description' => t('Adds notices to a page whenever Drupal changed content that needs reindexing'),
015d06b10d37 initial
dwinter
parents:
diff changeset
469 '#default_value' => variable_get('solrsearch_set_nodeapi_messages', 1),
015d06b10d37 initial
dwinter
parents:
diff changeset
470 '#options' => array(0 => t('Disabled'), 1 => t('Enabled')),
015d06b10d37 initial
dwinter
parents:
diff changeset
471 );
015d06b10d37 initial
dwinter
parents:
diff changeset
472
015d06b10d37 initial
dwinter
parents:
diff changeset
473 // Number of Items to index
015d06b10d37 initial
dwinter
parents:
diff changeset
474 $numbers = drupal_map_assoc(array(1, 5, 10, 20, 50, 100, 200));
015d06b10d37 initial
dwinter
parents:
diff changeset
475 $default_cron_limit = variable_get('solrsearch_cron_limit', 50);
015d06b10d37 initial
dwinter
parents:
diff changeset
476
015d06b10d37 initial
dwinter
parents:
diff changeset
477 // solrsearch_cron_limit may be overridden in settings.php. If its current
015d06b10d37 initial
dwinter
parents:
diff changeset
478 // value is not among the default set of options, add it.
015d06b10d37 initial
dwinter
parents:
diff changeset
479 if (!isset($numbers[$default_cron_limit])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
480 $numbers[$default_cron_limit] = $default_cron_limit;
015d06b10d37 initial
dwinter
parents:
diff changeset
481 }
015d06b10d37 initial
dwinter
parents:
diff changeset
482 $form['advanced']['solrsearch_cron_limit'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
483 '#type' => 'select',
015d06b10d37 initial
dwinter
parents:
diff changeset
484 '#title' => t('Number of items to index per cron run'),
015d06b10d37 initial
dwinter
parents:
diff changeset
485 '#default_value' => $default_cron_limit,
015d06b10d37 initial
dwinter
parents:
diff changeset
486 '#options' => $numbers,
015d06b10d37 initial
dwinter
parents:
diff changeset
487 '#description' => t('Reduce the number of items to prevent timeouts and memory errors while indexing.', array('@cron' => url('admin/reports/status')))
015d06b10d37 initial
dwinter
parents:
diff changeset
488 );
015d06b10d37 initial
dwinter
parents:
diff changeset
489
015d06b10d37 initial
dwinter
parents:
diff changeset
490 $options = array('solrsearch:show_error' => t('Show error message'));
015d06b10d37 initial
dwinter
parents:
diff changeset
491 $system_info = system_get_info('module');
015d06b10d37 initial
dwinter
parents:
diff changeset
492 if (module_exists('search')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
493 foreach (search_get_info() as $module => $search_info) {
015d06b10d37 initial
dwinter
parents:
diff changeset
494 // Don't allow solrsearch to return results on failure of solrsearch.
015d06b10d37 initial
dwinter
parents:
diff changeset
495 if ($module == 'solrsearch_search') {
015d06b10d37 initial
dwinter
parents:
diff changeset
496 continue;
015d06b10d37 initial
dwinter
parents:
diff changeset
497 }
015d06b10d37 initial
dwinter
parents:
diff changeset
498 $options[$module] = t('Show @name search results', array('@name' => $system_info[$module]['name']));
015d06b10d37 initial
dwinter
parents:
diff changeset
499 }
015d06b10d37 initial
dwinter
parents:
diff changeset
500 }
015d06b10d37 initial
dwinter
parents:
diff changeset
501
015d06b10d37 initial
dwinter
parents:
diff changeset
502 $options['solrsearch:show_no_results'] = t('Show no results');
015d06b10d37 initial
dwinter
parents:
diff changeset
503 $form['advanced']['solrsearch_failure'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
504 '#type' => 'select',
015d06b10d37 initial
dwinter
parents:
diff changeset
505 '#title' => t('On failure'),
015d06b10d37 initial
dwinter
parents:
diff changeset
506 '#options' => $options,
015d06b10d37 initial
dwinter
parents:
diff changeset
507 '#default_value' => variable_get('solrsearch_failure', 'solrsearch:show_error'),
015d06b10d37 initial
dwinter
parents:
diff changeset
508 );
015d06b10d37 initial
dwinter
parents:
diff changeset
509
015d06b10d37 initial
dwinter
parents:
diff changeset
510 return system_settings_form($form);
015d06b10d37 initial
dwinter
parents:
diff changeset
511 }
015d06b10d37 initial
dwinter
parents:
diff changeset
512
015d06b10d37 initial
dwinter
parents:
diff changeset
513 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
514 * Gets information about the fields already in solr index.
015d06b10d37 initial
dwinter
parents:
diff changeset
515 *
015d06b10d37 initial
dwinter
parents:
diff changeset
516 * @param array $environment
015d06b10d37 initial
dwinter
parents:
diff changeset
517 * The environment for which we need to ask the status from
015d06b10d37 initial
dwinter
parents:
diff changeset
518 *
015d06b10d37 initial
dwinter
parents:
diff changeset
519 * @return array page render array
015d06b10d37 initial
dwinter
parents:
diff changeset
520 */
015d06b10d37 initial
dwinter
parents:
diff changeset
521 function solrsearch_status_page($environment = array()) {
015d06b10d37 initial
dwinter
parents:
diff changeset
522
015d06b10d37 initial
dwinter
parents:
diff changeset
523 if (empty($environment)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
524
015d06b10d37 initial
dwinter
parents:
diff changeset
525 $env_id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
526 $environment = solrsearch_environment_load($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
527 }
015d06b10d37 initial
dwinter
parents:
diff changeset
528 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
529 $env_id = $environment['env_id'];
015d06b10d37 initial
dwinter
parents:
diff changeset
530 }
015d06b10d37 initial
dwinter
parents:
diff changeset
531
015d06b10d37 initial
dwinter
parents:
diff changeset
532 // Check for availability
015d06b10d37 initial
dwinter
parents:
diff changeset
533 if (!solrsearch_server_status($environment['url'], $environment['service_class'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
534
015d06b10d37 initial
dwinter
parents:
diff changeset
535 drupal_set_message(t('The server seems to be unavailable. Please verify the server settings at the <a href="!settings_page">settings page</a>', array('!settings_page' => url("admin/config/search/solrsearch/settings/{$environment['env_id']}/edit", array('query' => drupal_get_destination())))), 'warning');
015d06b10d37 initial
dwinter
parents:
diff changeset
536 return '';
015d06b10d37 initial
dwinter
parents:
diff changeset
537 }
015d06b10d37 initial
dwinter
parents:
diff changeset
538
015d06b10d37 initial
dwinter
parents:
diff changeset
539 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
540 $solr = solrsearch_get_solr($environment["env_id"]);
015d06b10d37 initial
dwinter
parents:
diff changeset
541 $solr->clearCache();
015d06b10d37 initial
dwinter
parents:
diff changeset
542 $data = $solr->getLuke();
015d06b10d37 initial
dwinter
parents:
diff changeset
543 }
015d06b10d37 initial
dwinter
parents:
diff changeset
544 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
545 watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
015d06b10d37 initial
dwinter
parents:
diff changeset
546 drupal_set_message(nl2br(check_plain($e->getMessage())), "warning");
015d06b10d37 initial
dwinter
parents:
diff changeset
547 $data = new stdClass;
015d06b10d37 initial
dwinter
parents:
diff changeset
548 $data->fields = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
549 }
015d06b10d37 initial
dwinter
parents:
diff changeset
550
015d06b10d37 initial
dwinter
parents:
diff changeset
551 $messages = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
552
015d06b10d37 initial
dwinter
parents:
diff changeset
553 // Initializes output with information about which server's setting we are
015d06b10d37 initial
dwinter
parents:
diff changeset
554 // editing, as it is otherwise not transparent to the end user.
015d06b10d37 initial
dwinter
parents:
diff changeset
555 $output['solrsearch_index_action_status'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
556 '#prefix' => '<h3>' . t('@environment: Search Index Content', array('@environment' => $environment['name'])) . '</h3>',
015d06b10d37 initial
dwinter
parents:
diff changeset
557 '#theme' => 'table',
015d06b10d37 initial
dwinter
parents:
diff changeset
558 '#header' => array(t('Type'), t('Value')),
015d06b10d37 initial
dwinter
parents:
diff changeset
559 '#rows' => $messages,
015d06b10d37 initial
dwinter
parents:
diff changeset
560 );
015d06b10d37 initial
dwinter
parents:
diff changeset
561
015d06b10d37 initial
dwinter
parents:
diff changeset
562 $output['viewmore'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
563 '#markup' => l(t('View more details on the search index contents'), 'admin/reports/solrsearch'),
015d06b10d37 initial
dwinter
parents:
diff changeset
564 );
015d06b10d37 initial
dwinter
parents:
diff changeset
565
015d06b10d37 initial
dwinter
parents:
diff changeset
566 $write_status = solrsearch_environment_variable_get($env_id, 'solrsearch_read_only', solrsearch_READ_WRITE);
015d06b10d37 initial
dwinter
parents:
diff changeset
567 if ($write_status == solrsearch_READ_WRITE) {
015d06b10d37 initial
dwinter
parents:
diff changeset
568 /*$output['index_action_form'] = drupal_get_form('solrsearch_index_action_form', $env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
569 $output['index_config_form'] = drupal_get_form('solrsearch_index_config_form', $env_id);*/
015d06b10d37 initial
dwinter
parents:
diff changeset
570 }
015d06b10d37 initial
dwinter
parents:
diff changeset
571 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
572 drupal_set_message(t('Options for deleting and re-indexing are not available because the index is read-only. This can be changed on the <a href="!settings_page">settings page</a>', array('!settings_page' => url('admin/config/search/solrsearch/settings/' . $env_id . '/edit', array('query' => drupal_get_destination())))), 'warning');
015d06b10d37 initial
dwinter
parents:
diff changeset
573 }
015d06b10d37 initial
dwinter
parents:
diff changeset
574
015d06b10d37 initial
dwinter
parents:
diff changeset
575 return $output;
015d06b10d37 initial
dwinter
parents:
diff changeset
576 }
015d06b10d37 initial
dwinter
parents:
diff changeset
577
015d06b10d37 initial
dwinter
parents:
diff changeset
578 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
579 * Get the report, eg.: some statistics and useful data from the Apache Solr index
015d06b10d37 initial
dwinter
parents:
diff changeset
580 *
015d06b10d37 initial
dwinter
parents:
diff changeset
581 * @param array $environment
015d06b10d37 initial
dwinter
parents:
diff changeset
582 *
015d06b10d37 initial
dwinter
parents:
diff changeset
583 * @return array page render array
015d06b10d37 initial
dwinter
parents:
diff changeset
584 */
015d06b10d37 initial
dwinter
parents:
diff changeset
585 function solrsearch_index_report(array $environment = array()) {
015d06b10d37 initial
dwinter
parents:
diff changeset
586 if (empty($environment)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
587 $env_id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
588 drupal_goto('admin/reports/solrsearch/' . $env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
589 }
015d06b10d37 initial
dwinter
parents:
diff changeset
590 $environments = solrsearch_load_all_environments();
015d06b10d37 initial
dwinter
parents:
diff changeset
591 $environments_list = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
592 foreach ($environments as $env) {
015d06b10d37 initial
dwinter
parents:
diff changeset
593 $var_status = array('!name' =>$env['name']);
015d06b10d37 initial
dwinter
parents:
diff changeset
594 $environments_list[] = l(t('Statistics for !name', $var_status), 'admin/reports/solrsearch/' . $env['env_id']);
015d06b10d37 initial
dwinter
parents:
diff changeset
595 }
015d06b10d37 initial
dwinter
parents:
diff changeset
596 $output['environments_list'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
597 '#theme' => 'item_list',
015d06b10d37 initial
dwinter
parents:
diff changeset
598 '#items' => $environments_list,
015d06b10d37 initial
dwinter
parents:
diff changeset
599 );
015d06b10d37 initial
dwinter
parents:
diff changeset
600
015d06b10d37 initial
dwinter
parents:
diff changeset
601 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
602 $solr = solrsearch_get_solr($environment['env_id']);
015d06b10d37 initial
dwinter
parents:
diff changeset
603 $solr->clearCache();
015d06b10d37 initial
dwinter
parents:
diff changeset
604 $data = $solr->getLuke();
015d06b10d37 initial
dwinter
parents:
diff changeset
605 }
015d06b10d37 initial
dwinter
parents:
diff changeset
606 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
607 watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
015d06b10d37 initial
dwinter
parents:
diff changeset
608 drupal_set_message(nl2br(check_plain($e->getMessage())), "warning");
015d06b10d37 initial
dwinter
parents:
diff changeset
609 return $output;
015d06b10d37 initial
dwinter
parents:
diff changeset
610 }
015d06b10d37 initial
dwinter
parents:
diff changeset
611
015d06b10d37 initial
dwinter
parents:
diff changeset
612 $messages = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
613 $messages[] = array(t('Number of documents in index'), $data->index->numDocs);
015d06b10d37 initial
dwinter
parents:
diff changeset
614
015d06b10d37 initial
dwinter
parents:
diff changeset
615 $limit = variable_get('solrsearch_luke_limit', 20000);
015d06b10d37 initial
dwinter
parents:
diff changeset
616 if (isset($data->index->numDocs) && $data->index->numDocs > $limit) {
015d06b10d37 initial
dwinter
parents:
diff changeset
617 $messages[] = array(t('Limit'), t('You have more than @limit documents, so term frequencies are being omitted for performance reasons.', array('@limit' => $limit)));
015d06b10d37 initial
dwinter
parents:
diff changeset
618 $not_found = t('<em>Omitted</em>');
015d06b10d37 initial
dwinter
parents:
diff changeset
619 }
015d06b10d37 initial
dwinter
parents:
diff changeset
620 elseif (isset($data->index->numDocs)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
621 $not_found = t('Not indexed');
015d06b10d37 initial
dwinter
parents:
diff changeset
622 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
623 $solr = solrsearch_get_solr($environment['env_id']);
015d06b10d37 initial
dwinter
parents:
diff changeset
624 // Note: we use 2 since 1 fails on Ubuntu Hardy.
015d06b10d37 initial
dwinter
parents:
diff changeset
625 $data = $solr->getLuke(2);
015d06b10d37 initial
dwinter
parents:
diff changeset
626 if (isset($data->index->numTerms)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
627 $messages[] = array(t('# of terms in index'), $data->index->numTerms);
015d06b10d37 initial
dwinter
parents:
diff changeset
628 }
015d06b10d37 initial
dwinter
parents:
diff changeset
629 }
015d06b10d37 initial
dwinter
parents:
diff changeset
630 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
631 watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
015d06b10d37 initial
dwinter
parents:
diff changeset
632 $data->fields = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
633 }
015d06b10d37 initial
dwinter
parents:
diff changeset
634 }
015d06b10d37 initial
dwinter
parents:
diff changeset
635 // Initializes output with information about which server's setting we are
015d06b10d37 initial
dwinter
parents:
diff changeset
636 // editing, as it is otherwise not transparent to the end user.
015d06b10d37 initial
dwinter
parents:
diff changeset
637 $fields = (array)$data->fields;
015d06b10d37 initial
dwinter
parents:
diff changeset
638 if ($fields) {
015d06b10d37 initial
dwinter
parents:
diff changeset
639 $messages[] = array(t('# of fields in index'), count($fields));
015d06b10d37 initial
dwinter
parents:
diff changeset
640 }
015d06b10d37 initial
dwinter
parents:
diff changeset
641
015d06b10d37 initial
dwinter
parents:
diff changeset
642 // Output the messages we have for this page
015d06b10d37 initial
dwinter
parents:
diff changeset
643 $output['solrsearch_index_report'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
644 '#theme' => 'table',
015d06b10d37 initial
dwinter
parents:
diff changeset
645 '#header' => array('type', 'value'),
015d06b10d37 initial
dwinter
parents:
diff changeset
646 '#rows' => $messages,
015d06b10d37 initial
dwinter
parents:
diff changeset
647 );
015d06b10d37 initial
dwinter
parents:
diff changeset
648
015d06b10d37 initial
dwinter
parents:
diff changeset
649 if ($fields) {
015d06b10d37 initial
dwinter
parents:
diff changeset
650 // Initializes table header.
015d06b10d37 initial
dwinter
parents:
diff changeset
651 $header = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
652 'name' => t('Field name'),
015d06b10d37 initial
dwinter
parents:
diff changeset
653 'type' => t('Index type'),
015d06b10d37 initial
dwinter
parents:
diff changeset
654 'terms' => t('Distinct terms'),
015d06b10d37 initial
dwinter
parents:
diff changeset
655 );
015d06b10d37 initial
dwinter
parents:
diff changeset
656
015d06b10d37 initial
dwinter
parents:
diff changeset
657 // Builds table rows.
015d06b10d37 initial
dwinter
parents:
diff changeset
658 $rows = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
659 foreach ($fields as $name => $field) {
015d06b10d37 initial
dwinter
parents:
diff changeset
660 // TODO: try to map the name to something more meaningful.
015d06b10d37 initial
dwinter
parents:
diff changeset
661 $rows[$name] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
662 'name' => $name,
015d06b10d37 initial
dwinter
parents:
diff changeset
663 'type' => $field->type,
015d06b10d37 initial
dwinter
parents:
diff changeset
664 'terms' => isset($field->distinct) ? $field->distinct : $not_found
015d06b10d37 initial
dwinter
parents:
diff changeset
665 );
015d06b10d37 initial
dwinter
parents:
diff changeset
666 }
015d06b10d37 initial
dwinter
parents:
diff changeset
667 ksort($rows);
015d06b10d37 initial
dwinter
parents:
diff changeset
668 // Output the fields we found for this environment
015d06b10d37 initial
dwinter
parents:
diff changeset
669 $output['field_table'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
670 '#theme' => 'table',
015d06b10d37 initial
dwinter
parents:
diff changeset
671 '#header' => $header,
015d06b10d37 initial
dwinter
parents:
diff changeset
672 '#rows' => $rows,
015d06b10d37 initial
dwinter
parents:
diff changeset
673 );
015d06b10d37 initial
dwinter
parents:
diff changeset
674 }
015d06b10d37 initial
dwinter
parents:
diff changeset
675 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
676 $output['field_table'] = array('#markup' => t('No data on indexed fields.'));
015d06b10d37 initial
dwinter
parents:
diff changeset
677 }
015d06b10d37 initial
dwinter
parents:
diff changeset
678 return $output;
015d06b10d37 initial
dwinter
parents:
diff changeset
679 }
015d06b10d37 initial
dwinter
parents:
diff changeset
680
015d06b10d37 initial
dwinter
parents:
diff changeset
681 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
682 * Page callback to show available conf files.
015d06b10d37 initial
dwinter
parents:
diff changeset
683 *
015d06b10d37 initial
dwinter
parents:
diff changeset
684 * @param array $environment
015d06b10d37 initial
dwinter
parents:
diff changeset
685 *
015d06b10d37 initial
dwinter
parents:
diff changeset
686 * @return string
015d06b10d37 initial
dwinter
parents:
diff changeset
687 * A non-render array but plain theme output for the config files overview. Could be done better probably
015d06b10d37 initial
dwinter
parents:
diff changeset
688 */
015d06b10d37 initial
dwinter
parents:
diff changeset
689 function solrsearch_config_files_overview(array $environment = array()) {
015d06b10d37 initial
dwinter
parents:
diff changeset
690 if (empty($environment)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
691 $env_id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
692 }
015d06b10d37 initial
dwinter
parents:
diff changeset
693 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
694 $env_id = $environment['env_id'];
015d06b10d37 initial
dwinter
parents:
diff changeset
695 }
015d06b10d37 initial
dwinter
parents:
diff changeset
696
015d06b10d37 initial
dwinter
parents:
diff changeset
697 $xml = NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
698 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
699 $solr = solrsearch_get_solr($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
700 $response = $solr->makeServletRequest('admin/file', array('wt' => 'xml'));
015d06b10d37 initial
dwinter
parents:
diff changeset
701 $xml = simplexml_load_string($response->data);
015d06b10d37 initial
dwinter
parents:
diff changeset
702 }
015d06b10d37 initial
dwinter
parents:
diff changeset
703 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
704 watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
015d06b10d37 initial
dwinter
parents:
diff changeset
705 drupal_set_message(nl2br(check_plain($e->getMessage())), "warning");
015d06b10d37 initial
dwinter
parents:
diff changeset
706 }
015d06b10d37 initial
dwinter
parents:
diff changeset
707
015d06b10d37 initial
dwinter
parents:
diff changeset
708 if ($xml) {
015d06b10d37 initial
dwinter
parents:
diff changeset
709 // Retrieve our items from the xml using xpath
015d06b10d37 initial
dwinter
parents:
diff changeset
710 $items = $xml->xpath('//lst[@name="files"]/lst');
015d06b10d37 initial
dwinter
parents:
diff changeset
711
015d06b10d37 initial
dwinter
parents:
diff changeset
712 // Add all the data of the file in a files array
015d06b10d37 initial
dwinter
parents:
diff changeset
713 $files = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
714 foreach ($items as $item_id => $item) {
015d06b10d37 initial
dwinter
parents:
diff changeset
715 // Do not list directories. Always a bool
015d06b10d37 initial
dwinter
parents:
diff changeset
716 if (isset($item->bool)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
717 break;
015d06b10d37 initial
dwinter
parents:
diff changeset
718 }
015d06b10d37 initial
dwinter
parents:
diff changeset
719 // Get data from the files.
015d06b10d37 initial
dwinter
parents:
diff changeset
720 $name = $item->attributes();
015d06b10d37 initial
dwinter
parents:
diff changeset
721 $name = ((string)$item->attributes()) ? (string)$item->attributes() : t('No name found');
015d06b10d37 initial
dwinter
parents:
diff changeset
722 $files[$item_id]['name'] = l($name, 'admin/reports/solrsearch/' . $env_id . '/conf/' . $name);
015d06b10d37 initial
dwinter
parents:
diff changeset
723
015d06b10d37 initial
dwinter
parents:
diff changeset
724 // Retrieve the date attribute
015d06b10d37 initial
dwinter
parents:
diff changeset
725 if (isset($item->date)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
726 $modified = ((string)$item->date->attributes() == 'modified') ? (string) $item->date : t('No date found');
015d06b10d37 initial
dwinter
parents:
diff changeset
727 $files[$item_id]['modified'] = format_date(strtotime($modified));
015d06b10d37 initial
dwinter
parents:
diff changeset
728 }
015d06b10d37 initial
dwinter
parents:
diff changeset
729
015d06b10d37 initial
dwinter
parents:
diff changeset
730 // Retrieve the size attribute
015d06b10d37 initial
dwinter
parents:
diff changeset
731 if (isset($item->long)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
732 $size = ((string)$item->long->attributes() == 'size') ? (string) $item->long : t('No size found');
015d06b10d37 initial
dwinter
parents:
diff changeset
733 $files[$item_id]['size'] = t('Size (bytes): @bytes', array('@bytes' => $size));
015d06b10d37 initial
dwinter
parents:
diff changeset
734 }
015d06b10d37 initial
dwinter
parents:
diff changeset
735 }
015d06b10d37 initial
dwinter
parents:
diff changeset
736 // Sort our files alphabetically
015d06b10d37 initial
dwinter
parents:
diff changeset
737 ksort($files);
015d06b10d37 initial
dwinter
parents:
diff changeset
738
015d06b10d37 initial
dwinter
parents:
diff changeset
739 // Initializes table header.
015d06b10d37 initial
dwinter
parents:
diff changeset
740 $header = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
741 'name' => t('File name'),
015d06b10d37 initial
dwinter
parents:
diff changeset
742 'date' => t('Modified'),
015d06b10d37 initial
dwinter
parents:
diff changeset
743 'size' => t('Size'),
015d06b10d37 initial
dwinter
parents:
diff changeset
744 );
015d06b10d37 initial
dwinter
parents:
diff changeset
745
015d06b10d37 initial
dwinter
parents:
diff changeset
746 // Display the table of field names, index types, and term counts.
015d06b10d37 initial
dwinter
parents:
diff changeset
747 $variables = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
748 'header' => $header,
015d06b10d37 initial
dwinter
parents:
diff changeset
749 'rows' => $files,
015d06b10d37 initial
dwinter
parents:
diff changeset
750 );
015d06b10d37 initial
dwinter
parents:
diff changeset
751 $output = theme('table', $variables);
015d06b10d37 initial
dwinter
parents:
diff changeset
752 }
015d06b10d37 initial
dwinter
parents:
diff changeset
753 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
754 $output = '<p>' . t('No data about any file found.') . "</p>\n";
015d06b10d37 initial
dwinter
parents:
diff changeset
755 }
015d06b10d37 initial
dwinter
parents:
diff changeset
756 return $output;
015d06b10d37 initial
dwinter
parents:
diff changeset
757 }
015d06b10d37 initial
dwinter
parents:
diff changeset
758
015d06b10d37 initial
dwinter
parents:
diff changeset
759 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
760 * Page callback to show one conf file.
015d06b10d37 initial
dwinter
parents:
diff changeset
761 *
015d06b10d37 initial
dwinter
parents:
diff changeset
762 * @param string $name
015d06b10d37 initial
dwinter
parents:
diff changeset
763 * @param array $environment
015d06b10d37 initial
dwinter
parents:
diff changeset
764 *
015d06b10d37 initial
dwinter
parents:
diff changeset
765 * @return string
015d06b10d37 initial
dwinter
parents:
diff changeset
766 * the requested config file
015d06b10d37 initial
dwinter
parents:
diff changeset
767 */
015d06b10d37 initial
dwinter
parents:
diff changeset
768 function solrsearch_config_file($name, array $environment = array()) {
015d06b10d37 initial
dwinter
parents:
diff changeset
769 if (empty($environment)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
770 $env_id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
771 }
015d06b10d37 initial
dwinter
parents:
diff changeset
772 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
773 $env_id = $environment['env_id'];
015d06b10d37 initial
dwinter
parents:
diff changeset
774 }
015d06b10d37 initial
dwinter
parents:
diff changeset
775
015d06b10d37 initial
dwinter
parents:
diff changeset
776 $output = '';
015d06b10d37 initial
dwinter
parents:
diff changeset
777 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
778 $solr = solrsearch_get_solr($env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
779 $response = $solr->makeServletRequest('admin/file', array('file' => $name));
015d06b10d37 initial
dwinter
parents:
diff changeset
780 $raw_file = $response->data;
015d06b10d37 initial
dwinter
parents:
diff changeset
781 $output = '<pre>' . check_plain($raw_file) . '</pre>';
015d06b10d37 initial
dwinter
parents:
diff changeset
782 drupal_set_title(check_plain($name));
015d06b10d37 initial
dwinter
parents:
diff changeset
783 }
015d06b10d37 initial
dwinter
parents:
diff changeset
784 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
785 watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
015d06b10d37 initial
dwinter
parents:
diff changeset
786 drupal_set_message(nl2br(check_plain($e->getMessage())), "warning");
015d06b10d37 initial
dwinter
parents:
diff changeset
787 }
015d06b10d37 initial
dwinter
parents:
diff changeset
788 return $output;
015d06b10d37 initial
dwinter
parents:
diff changeset
789 }
015d06b10d37 initial
dwinter
parents:
diff changeset
790
015d06b10d37 initial
dwinter
parents:
diff changeset
791
015d06b10d37 initial
dwinter
parents:
diff changeset
792
015d06b10d37 initial
dwinter
parents:
diff changeset
793 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
794 * Page callback for node/%node/devel/solrsearch.
015d06b10d37 initial
dwinter
parents:
diff changeset
795 *
015d06b10d37 initial
dwinter
parents:
diff changeset
796 * @param object $node
015d06b10d37 initial
dwinter
parents:
diff changeset
797 * @return string debugging information
015d06b10d37 initial
dwinter
parents:
diff changeset
798 */
015d06b10d37 initial
dwinter
parents:
diff changeset
799 function solrsearch_devel($node) {
015d06b10d37 initial
dwinter
parents:
diff changeset
800 module_load_include('inc', 'solrsearch', 'solrsearch.index');
015d06b10d37 initial
dwinter
parents:
diff changeset
801 $item = new stdClass();
015d06b10d37 initial
dwinter
parents:
diff changeset
802 $item->entity_type = 'node';
015d06b10d37 initial
dwinter
parents:
diff changeset
803 $item->entity_id = $node->nid;
015d06b10d37 initial
dwinter
parents:
diff changeset
804 $output = '';
015d06b10d37 initial
dwinter
parents:
diff changeset
805 foreach (solrsearch_load_all_environments() as $env_id => $environment) {
015d06b10d37 initial
dwinter
parents:
diff changeset
806 $documents = solrsearch_index_entity_to_documents($item, $env_id);
015d06b10d37 initial
dwinter
parents:
diff changeset
807 $output .= '<h1>' . t('Environment %name (%env_id)', array('%name' => $environment['name'], '%env_id' => $env_id)). '</h1>';
015d06b10d37 initial
dwinter
parents:
diff changeset
808 foreach ($documents as $document) {
015d06b10d37 initial
dwinter
parents:
diff changeset
809 $debug_data = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
810 foreach ($document as $key => $value) {
015d06b10d37 initial
dwinter
parents:
diff changeset
811 $debug_data[$key] = $value;
015d06b10d37 initial
dwinter
parents:
diff changeset
812 }
015d06b10d37 initial
dwinter
parents:
diff changeset
813 $output .= kdevel_print_object($debug_data);
015d06b10d37 initial
dwinter
parents:
diff changeset
814 }
015d06b10d37 initial
dwinter
parents:
diff changeset
815 }
015d06b10d37 initial
dwinter
parents:
diff changeset
816 return $output;
015d06b10d37 initial
dwinter
parents:
diff changeset
817 }