annotate sites/all/modules/custom/solrsearch/solrsearch.install @ 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 * Install and related hooks for solrsearch_search.
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 * Implements hook_requirements().
015d06b10d37 initial
dwinter
parents:
diff changeset
10 */
015d06b10d37 initial
dwinter
parents:
diff changeset
11 function solrsearch_requirements($phase) {
015d06b10d37 initial
dwinter
parents:
diff changeset
12 $requirements = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
13 if ($phase != 'runtime') {
015d06b10d37 initial
dwinter
parents:
diff changeset
14 return $requirements;
015d06b10d37 initial
dwinter
parents:
diff changeset
15 }
015d06b10d37 initial
dwinter
parents:
diff changeset
16 // Ensure translations don't break at install time
015d06b10d37 initial
dwinter
parents:
diff changeset
17 $t = get_t();
015d06b10d37 initial
dwinter
parents:
diff changeset
18 $has_settings = FALSE;
015d06b10d37 initial
dwinter
parents:
diff changeset
19 $id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
20 $environment = solrsearch_environment_load($id);
015d06b10d37 initial
dwinter
parents:
diff changeset
21 if (!$environment || empty($environment['url'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
22 $requirements['solrsearch'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
23 'title' => $t('Solr search'),
015d06b10d37 initial
dwinter
parents:
diff changeset
24 'value' => $t('Missing environment configuration'),
015d06b10d37 initial
dwinter
parents:
diff changeset
25 'description' => $t('Missing or invalid Solr environment record for the default environment ID %id.', array('%id' => $id)),
015d06b10d37 initial
dwinter
parents:
diff changeset
26 'severity' => REQUIREMENT_ERROR,
015d06b10d37 initial
dwinter
parents:
diff changeset
27 );
015d06b10d37 initial
dwinter
parents:
diff changeset
28 }
015d06b10d37 initial
dwinter
parents:
diff changeset
29 else {
015d06b10d37 initial
dwinter
parents:
diff changeset
30 $has_settings = TRUE;
015d06b10d37 initial
dwinter
parents:
diff changeset
31 }
015d06b10d37 initial
dwinter
parents:
diff changeset
32
015d06b10d37 initial
dwinter
parents:
diff changeset
33 if ($has_settings) {
015d06b10d37 initial
dwinter
parents:
diff changeset
34 $ping = FALSE;
015d06b10d37 initial
dwinter
parents:
diff changeset
35 try {
015d06b10d37 initial
dwinter
parents:
diff changeset
36 $solr = solrsearch_get_solr($id);
015d06b10d37 initial
dwinter
parents:
diff changeset
37 $ping = @$solr->ping(variable_get('solrsearch_ping_timeout', 4));
015d06b10d37 initial
dwinter
parents:
diff changeset
38 // If there is no $solr object, there is no instance available, so don't continue.
015d06b10d37 initial
dwinter
parents:
diff changeset
39 if (!$ping) {
015d06b10d37 initial
dwinter
parents:
diff changeset
40 throw new Exception(t('No Solr instance available when checking requirements.'));
015d06b10d37 initial
dwinter
parents:
diff changeset
41 }
015d06b10d37 initial
dwinter
parents:
diff changeset
42 }
015d06b10d37 initial
dwinter
parents:
diff changeset
43 catch (Exception $e) {
015d06b10d37 initial
dwinter
parents:
diff changeset
44 watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
015d06b10d37 initial
dwinter
parents:
diff changeset
45 }
015d06b10d37 initial
dwinter
parents:
diff changeset
46 $value = $ping ? $t('Your site has contacted the Apache Solr server.') : $t('Your site was unable to contact the Apache Solr server.');
015d06b10d37 initial
dwinter
parents:
diff changeset
47 $severity = $ping ? REQUIREMENT_OK : REQUIREMENT_ERROR;
015d06b10d37 initial
dwinter
parents:
diff changeset
48 $requirements['solrsearch'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
49 'title' => $t('Apache Solr'),
015d06b10d37 initial
dwinter
parents:
diff changeset
50 'value' => $value,
015d06b10d37 initial
dwinter
parents:
diff changeset
51 'description' => $t('Default environment url: <br/> %url', array('%url' => $environment['url'])),
015d06b10d37 initial
dwinter
parents:
diff changeset
52 'severity' => $severity,
015d06b10d37 initial
dwinter
parents:
diff changeset
53 );
015d06b10d37 initial
dwinter
parents:
diff changeset
54 }
015d06b10d37 initial
dwinter
parents:
diff changeset
55
015d06b10d37 initial
dwinter
parents:
diff changeset
56 return $requirements;
015d06b10d37 initial
dwinter
parents:
diff changeset
57 }
015d06b10d37 initial
dwinter
parents:
diff changeset
58
015d06b10d37 initial
dwinter
parents:
diff changeset
59 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
60 * Implements hook_install().
015d06b10d37 initial
dwinter
parents:
diff changeset
61 */
015d06b10d37 initial
dwinter
parents:
diff changeset
62 function solrsearch_install() {
015d06b10d37 initial
dwinter
parents:
diff changeset
63 module_load_include('inc', 'solrsearch', 'solrsearch_search.admin');
015d06b10d37 initial
dwinter
parents:
diff changeset
64 /*module_load_include('inc', 'solrsearch', 'solrsearch.index');*/
015d06b10d37 initial
dwinter
parents:
diff changeset
65 // Create one MLT block.
015d06b10d37 initial
dwinter
parents:
diff changeset
66 solrsearch_search_mlt_save_block(array('name' => st('More like this')));
015d06b10d37 initial
dwinter
parents:
diff changeset
67 db_insert('solrsearch_environment')->fields(array('env_id' => 'echosearch', 'name' => 'localhost server', 'url' => 'http://localhost:8983/solr'))->execute();
015d06b10d37 initial
dwinter
parents:
diff changeset
68
015d06b10d37 initial
dwinter
parents:
diff changeset
69 // Initialize the entities to index. We enable all node types by default
015d06b10d37 initial
dwinter
parents:
diff changeset
70 $info = entity_get_info('node');
015d06b10d37 initial
dwinter
parents:
diff changeset
71 $bundles = array_keys($info['bundles']);
015d06b10d37 initial
dwinter
parents:
diff changeset
72 $env_id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
73 /*solrsearch_index_set_bundles($env_id, 'node', $bundles);*/
015d06b10d37 initial
dwinter
parents:
diff changeset
74
015d06b10d37 initial
dwinter
parents:
diff changeset
75 drupal_set_message(st('Apache Solr is enabled. Visit the <a href="@settings_link">settings page</a>.', array('@settings_link' => url('admin/config/search/solrsearch'))));
015d06b10d37 initial
dwinter
parents:
diff changeset
76 }
015d06b10d37 initial
dwinter
parents:
diff changeset
77
015d06b10d37 initial
dwinter
parents:
diff changeset
78 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
79 * Implements hook_enable().
015d06b10d37 initial
dwinter
parents:
diff changeset
80 */
015d06b10d37 initial
dwinter
parents:
diff changeset
81 function solrsearch_enable() {
015d06b10d37 initial
dwinter
parents:
diff changeset
82 // Completely build the index table.
015d06b10d37 initial
dwinter
parents:
diff changeset
83 module_load_include('inc', 'solrsearch', 'solrsearch.index');
015d06b10d37 initial
dwinter
parents:
diff changeset
84 $env_id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
85 /*solrsearch_index_mark_for_reindex($env_id);*/
015d06b10d37 initial
dwinter
parents:
diff changeset
86 }
015d06b10d37 initial
dwinter
parents:
diff changeset
87
015d06b10d37 initial
dwinter
parents:
diff changeset
88 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
89 * Implements hook_schema().
015d06b10d37 initial
dwinter
parents:
diff changeset
90 */
015d06b10d37 initial
dwinter
parents:
diff changeset
91 function solrsearch_schema() {
015d06b10d37 initial
dwinter
parents:
diff changeset
92
015d06b10d37 initial
dwinter
parents:
diff changeset
93 $table = drupal_get_schema_unprocessed('system', 'cache');
015d06b10d37 initial
dwinter
parents:
diff changeset
94 $table['description'] = 'Cache table for solrsearch to store Luke data and indexing information.';
015d06b10d37 initial
dwinter
parents:
diff changeset
95 $schema['cache_solrsearch'] = $table;
015d06b10d37 initial
dwinter
parents:
diff changeset
96
015d06b10d37 initial
dwinter
parents:
diff changeset
97 $schema['solrsearch_environment'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
98 'description' => 'The Solr search environment table.',
015d06b10d37 initial
dwinter
parents:
diff changeset
99 // Enable CTools exportables based on this table.
015d06b10d37 initial
dwinter
parents:
diff changeset
100 'export' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
101 // Environment machine name.
015d06b10d37 initial
dwinter
parents:
diff changeset
102 'key' => 'env_id',
015d06b10d37 initial
dwinter
parents:
diff changeset
103 // Description of key.
015d06b10d37 initial
dwinter
parents:
diff changeset
104 'key name' => 'Environment machine name',
015d06b10d37 initial
dwinter
parents:
diff changeset
105 // Apache Solr doesn't allow disabling environments.
015d06b10d37 initial
dwinter
parents:
diff changeset
106 'can disable' => FALSE,
015d06b10d37 initial
dwinter
parents:
diff changeset
107 // Variable name to use in exported code.
015d06b10d37 initial
dwinter
parents:
diff changeset
108 'identifier' => 'environment',
015d06b10d37 initial
dwinter
parents:
diff changeset
109 // Thin wrapper for the environment save callback.
015d06b10d37 initial
dwinter
parents:
diff changeset
110 'save callback' => 'solrsearch_ctools_environment_save',
015d06b10d37 initial
dwinter
parents:
diff changeset
111 // Thin wrapper for the environment delete callback.
015d06b10d37 initial
dwinter
parents:
diff changeset
112 'delete callback' => 'solrsearch_ctools_environment_delete',
015d06b10d37 initial
dwinter
parents:
diff changeset
113 // Includes the environment variables in 'conf' as well as the fields in this table.
015d06b10d37 initial
dwinter
parents:
diff changeset
114 'export callback' => 'solrsearch_ctools_environment_export',
015d06b10d37 initial
dwinter
parents:
diff changeset
115 // Use the same hook as the API name below.
015d06b10d37 initial
dwinter
parents:
diff changeset
116 'default hook' => 'solrsearch_environments',
015d06b10d37 initial
dwinter
parents:
diff changeset
117 // CTools API implementation.
015d06b10d37 initial
dwinter
parents:
diff changeset
118 'api' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
119 'owner' => 'solrsearch',
015d06b10d37 initial
dwinter
parents:
diff changeset
120 'api' => 'solrsearch_environments',
015d06b10d37 initial
dwinter
parents:
diff changeset
121 'minimum_version' => 1,
015d06b10d37 initial
dwinter
parents:
diff changeset
122 'current_version' => 1,
015d06b10d37 initial
dwinter
parents:
diff changeset
123 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
124 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
125 'fields' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
126 'env_id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
127 'description' => 'Unique identifier for the environment',
015d06b10d37 initial
dwinter
parents:
diff changeset
128 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
129 'length' => 64,
015d06b10d37 initial
dwinter
parents:
diff changeset
130 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
131 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
132 'name' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
133 'description' => 'Human-readable name for the server',
015d06b10d37 initial
dwinter
parents:
diff changeset
134 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
135 'length' => 255,
015d06b10d37 initial
dwinter
parents:
diff changeset
136 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
137 'default' => ''
015d06b10d37 initial
dwinter
parents:
diff changeset
138 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
139 'url' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
140 'description' => 'Full url for the server',
015d06b10d37 initial
dwinter
parents:
diff changeset
141 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
142 'length' => 1000,
015d06b10d37 initial
dwinter
parents:
diff changeset
143 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
144 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
145 'service_class' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
146 'description' => 'Optional class name to use for connection',
015d06b10d37 initial
dwinter
parents:
diff changeset
147 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
148 'length' => 255,
015d06b10d37 initial
dwinter
parents:
diff changeset
149 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
150 'default' => ''
015d06b10d37 initial
dwinter
parents:
diff changeset
151 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
152 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
153 'primary key' => array('env_id'),
015d06b10d37 initial
dwinter
parents:
diff changeset
154 );
015d06b10d37 initial
dwinter
parents:
diff changeset
155 $schema['solrsearch_environment_variable'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
156 'description' => 'Variable values for each Solr search environment.',
015d06b10d37 initial
dwinter
parents:
diff changeset
157 'fields' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
158 'env_id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
159 'description' => 'Unique identifier for the environment',
015d06b10d37 initial
dwinter
parents:
diff changeset
160 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
161 'length' => 64,
015d06b10d37 initial
dwinter
parents:
diff changeset
162 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
163 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
164 'name' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
165 'description' => 'The name of the variable.',
015d06b10d37 initial
dwinter
parents:
diff changeset
166 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
167 'length' => 128,
015d06b10d37 initial
dwinter
parents:
diff changeset
168 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
169 'default' => '',
015d06b10d37 initial
dwinter
parents:
diff changeset
170 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
171 'value' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
172 'description' => 'The value of the variable.',
015d06b10d37 initial
dwinter
parents:
diff changeset
173 'type' => 'blob',
015d06b10d37 initial
dwinter
parents:
diff changeset
174 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
175 'size' => 'big',
015d06b10d37 initial
dwinter
parents:
diff changeset
176 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
177 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
178 'primary key' => array('env_id', 'name'),
015d06b10d37 initial
dwinter
parents:
diff changeset
179 );
015d06b10d37 initial
dwinter
parents:
diff changeset
180
015d06b10d37 initial
dwinter
parents:
diff changeset
181 // Technically the entity system does not require an integer ID.
015d06b10d37 initial
dwinter
parents:
diff changeset
182 // However, documentation mentions :
015d06b10d37 initial
dwinter
parents:
diff changeset
183 // id: The name of the property that contains the primary id of the
015d06b10d37 initial
dwinter
parents:
diff changeset
184 // entity. Every entity object passed to the Field API must have this
015d06b10d37 initial
dwinter
parents:
diff changeset
185 // property and its value must be numeric.
015d06b10d37 initial
dwinter
parents:
diff changeset
186
015d06b10d37 initial
dwinter
parents:
diff changeset
187 //Predefine an amount of types that get their own table
015d06b10d37 initial
dwinter
parents:
diff changeset
188 $types = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
189 'other' => 'solrsearch_index_entities',
015d06b10d37 initial
dwinter
parents:
diff changeset
190 'node' => 'solrsearch_index_entities_node',
015d06b10d37 initial
dwinter
parents:
diff changeset
191 );
015d06b10d37 initial
dwinter
parents:
diff changeset
192 foreach ($types as $type => $table) {
015d06b10d37 initial
dwinter
parents:
diff changeset
193 $schema[$table] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
194 'description' => 'Stores a record of when an entity changed to determine if it needs indexing by Solr.',
015d06b10d37 initial
dwinter
parents:
diff changeset
195 'fields' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
196 'entity_type' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
197 'description' => 'The type of entity.',
015d06b10d37 initial
dwinter
parents:
diff changeset
198 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
199 'length' => 32,
015d06b10d37 initial
dwinter
parents:
diff changeset
200 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
201 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
202 'entity_id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
203 'description' => 'The primary identifier for an entity.',
015d06b10d37 initial
dwinter
parents:
diff changeset
204 'type' => 'int',
015d06b10d37 initial
dwinter
parents:
diff changeset
205 'unsigned' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
206 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
207 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
208 'bundle' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
209 'description' => 'The bundle to which this entity belongs.',
015d06b10d37 initial
dwinter
parents:
diff changeset
210 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
211 'length' => 128,
015d06b10d37 initial
dwinter
parents:
diff changeset
212 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
213 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
214 'status' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
215 'description' => 'Boolean indicating whether the entity should be in the index.',
015d06b10d37 initial
dwinter
parents:
diff changeset
216 'type' => 'int',
015d06b10d37 initial
dwinter
parents:
diff changeset
217 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
218 'default' => 1,
015d06b10d37 initial
dwinter
parents:
diff changeset
219 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
220 'changed' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
221 'description' => 'The Unix timestamp when an entity was changed.',
015d06b10d37 initial
dwinter
parents:
diff changeset
222 'type' => 'int',
015d06b10d37 initial
dwinter
parents:
diff changeset
223 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
224 'default' => 0,
015d06b10d37 initial
dwinter
parents:
diff changeset
225 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
226 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
227 'indexes' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
228 'bundle_changed' => array('bundle', 'changed'),
015d06b10d37 initial
dwinter
parents:
diff changeset
229 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
230 'primary key' => array('entity_id'),
015d06b10d37 initial
dwinter
parents:
diff changeset
231 );
015d06b10d37 initial
dwinter
parents:
diff changeset
232 if ($type == 'other') {
015d06b10d37 initial
dwinter
parents:
diff changeset
233 // Need the entity type also in the pkey for multiple entities in one table.
015d06b10d37 initial
dwinter
parents:
diff changeset
234 $schema[$table]['primary key'][] = 'entity_type';
015d06b10d37 initial
dwinter
parents:
diff changeset
235 }
015d06b10d37 initial
dwinter
parents:
diff changeset
236 }
015d06b10d37 initial
dwinter
parents:
diff changeset
237
015d06b10d37 initial
dwinter
parents:
diff changeset
238 $schema['solrsearch_index_bundles'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
239 'description' => 'Records what bundles we should be indexing for a given environment.',
015d06b10d37 initial
dwinter
parents:
diff changeset
240 'fields' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
241 'env_id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
242 'description' => 'The name of the environment.',
015d06b10d37 initial
dwinter
parents:
diff changeset
243 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
244 'length' => 64,
015d06b10d37 initial
dwinter
parents:
diff changeset
245 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
246 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
247 'entity_type' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
248 'description' => 'The type of entity.',
015d06b10d37 initial
dwinter
parents:
diff changeset
249 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
250 'length' => 32,
015d06b10d37 initial
dwinter
parents:
diff changeset
251 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
252 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
253 'bundle' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
254 'description' => 'The bundle to index.',
015d06b10d37 initial
dwinter
parents:
diff changeset
255 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
256 'length' => 128,
015d06b10d37 initial
dwinter
parents:
diff changeset
257 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
258 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
259 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
260 'primary key' => array('env_id', 'entity_type', 'bundle'),
015d06b10d37 initial
dwinter
parents:
diff changeset
261 );
015d06b10d37 initial
dwinter
parents:
diff changeset
262 return $schema;
015d06b10d37 initial
dwinter
parents:
diff changeset
263 }
015d06b10d37 initial
dwinter
parents:
diff changeset
264
015d06b10d37 initial
dwinter
parents:
diff changeset
265 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
266 * Implements hook_uninstall().
015d06b10d37 initial
dwinter
parents:
diff changeset
267 */
015d06b10d37 initial
dwinter
parents:
diff changeset
268 function solrsearch_uninstall() {
015d06b10d37 initial
dwinter
parents:
diff changeset
269 // Remove variables.
015d06b10d37 initial
dwinter
parents:
diff changeset
270 variable_del('solrsearch_default_environment');
015d06b10d37 initial
dwinter
parents:
diff changeset
271 variable_del('solrsearch_rows');
015d06b10d37 initial
dwinter
parents:
diff changeset
272 variable_del('solrsearch_site_hash');
015d06b10d37 initial
dwinter
parents:
diff changeset
273 variable_del('solrsearch_index_last');
015d06b10d37 initial
dwinter
parents:
diff changeset
274 variable_del('solrsearch_search_mlt_blocks');
015d06b10d37 initial
dwinter
parents:
diff changeset
275 variable_del('solrsearch_cron_limit');
015d06b10d37 initial
dwinter
parents:
diff changeset
276 variable_del('solrsearch_exclude_nodeapi_types');
015d06b10d37 initial
dwinter
parents:
diff changeset
277 variable_del('solrsearch_failure');
015d06b10d37 initial
dwinter
parents:
diff changeset
278 variable_del('solrsearch_index_updated');
015d06b10d37 initial
dwinter
parents:
diff changeset
279 variable_del('solrsearch_read_only');
015d06b10d37 initial
dwinter
parents:
diff changeset
280 variable_del('solrsearch_set_nodeapi_messages');
015d06b10d37 initial
dwinter
parents:
diff changeset
281 variable_del('solrsearch_last_optimize');
015d06b10d37 initial
dwinter
parents:
diff changeset
282 variable_del('solrsearch_update_from_6303');
015d06b10d37 initial
dwinter
parents:
diff changeset
283 // Remove blocks.
015d06b10d37 initial
dwinter
parents:
diff changeset
284 db_delete('block')->condition('module', 'solrsearch')->execute();
015d06b10d37 initial
dwinter
parents:
diff changeset
285 }
015d06b10d37 initial
dwinter
parents:
diff changeset
286
015d06b10d37 initial
dwinter
parents:
diff changeset
287 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
288 * Add a table to track Solr servers.
015d06b10d37 initial
dwinter
parents:
diff changeset
289 */
015d06b10d37 initial
dwinter
parents:
diff changeset
290 function solrsearch_update_7000() {
015d06b10d37 initial
dwinter
parents:
diff changeset
291 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
292 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
293 }
015d06b10d37 initial
dwinter
parents:
diff changeset
294
015d06b10d37 initial
dwinter
parents:
diff changeset
295 $schema['solrsearch_server'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
296 'description' => 'The Solr server table.',
015d06b10d37 initial
dwinter
parents:
diff changeset
297 'fields' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
298 'server_id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
299 'description' => 'Unique identifier for the server',
015d06b10d37 initial
dwinter
parents:
diff changeset
300 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
301 'length' => 64,
015d06b10d37 initial
dwinter
parents:
diff changeset
302 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
303 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
304 'name' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
305 'description' => 'Human-readable name for the server',
015d06b10d37 initial
dwinter
parents:
diff changeset
306 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
307 'length' => 255,
015d06b10d37 initial
dwinter
parents:
diff changeset
308 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
309 'default' => ''
015d06b10d37 initial
dwinter
parents:
diff changeset
310 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
311 'scheme' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
312 'description' => 'Preferred scheme for the registered server',
015d06b10d37 initial
dwinter
parents:
diff changeset
313 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
314 'length' => 10,
015d06b10d37 initial
dwinter
parents:
diff changeset
315 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
316 'default' => 'http'
015d06b10d37 initial
dwinter
parents:
diff changeset
317 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
318 'host' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
319 'description' => 'Host name for the registered server',
015d06b10d37 initial
dwinter
parents:
diff changeset
320 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
321 'length' => 255,
015d06b10d37 initial
dwinter
parents:
diff changeset
322 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
323 'default' => ''
015d06b10d37 initial
dwinter
parents:
diff changeset
324 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
325 'port' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
326 'description' => 'Port number for the registered server',
015d06b10d37 initial
dwinter
parents:
diff changeset
327 'type' => 'int',
015d06b10d37 initial
dwinter
parents:
diff changeset
328 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
329 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
330 'path' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
331 'description' => 'Path to the registered server',
015d06b10d37 initial
dwinter
parents:
diff changeset
332 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
333 'length' => 255,
015d06b10d37 initial
dwinter
parents:
diff changeset
334 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
335 'default' => ''
015d06b10d37 initial
dwinter
parents:
diff changeset
336 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
337 'service_class' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
338 'description' => 'Optional class name to use for connection',
015d06b10d37 initial
dwinter
parents:
diff changeset
339 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
340 'length' => 255,
015d06b10d37 initial
dwinter
parents:
diff changeset
341 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
342 'default' => ''
015d06b10d37 initial
dwinter
parents:
diff changeset
343 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
344 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
345 'primary key' => array('server_id'),
015d06b10d37 initial
dwinter
parents:
diff changeset
346 );
015d06b10d37 initial
dwinter
parents:
diff changeset
347 db_create_table('solrsearch_server', $schema['solrsearch_server']);
015d06b10d37 initial
dwinter
parents:
diff changeset
348 // Insert into the table the current single server record.
015d06b10d37 initial
dwinter
parents:
diff changeset
349 $host = variable_get('solrsearch_host', 'localhost');
015d06b10d37 initial
dwinter
parents:
diff changeset
350 $port = variable_get('solrsearch_port', '8983');
015d06b10d37 initial
dwinter
parents:
diff changeset
351 $path = variable_get('solrsearch_path', '/solr');
015d06b10d37 initial
dwinter
parents:
diff changeset
352 db_insert('solrsearch_server')->fields(array('server_id' => 'solr', 'name' => 'Apache Solr server', 'host' => $host, 'port' => $port, 'path' => $path))->execute();
015d06b10d37 initial
dwinter
parents:
diff changeset
353 variable_set('solrsearch_default_server', 'solr');
015d06b10d37 initial
dwinter
parents:
diff changeset
354 variable_del('solrsearch_host');
015d06b10d37 initial
dwinter
parents:
diff changeset
355 variable_del('solrsearch_port');
015d06b10d37 initial
dwinter
parents:
diff changeset
356 variable_del('solrsearch_path');
015d06b10d37 initial
dwinter
parents:
diff changeset
357 $value = variable_get('solrsearch_service_class', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
358 if (is_array($value)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
359 list($module, $filepath, $class) = $value;
015d06b10d37 initial
dwinter
parents:
diff changeset
360 variable_set('solrsearch_service_class', $class);
015d06b10d37 initial
dwinter
parents:
diff changeset
361 }
015d06b10d37 initial
dwinter
parents:
diff changeset
362 variable_del('solrsearch_logging');
015d06b10d37 initial
dwinter
parents:
diff changeset
363 }
015d06b10d37 initial
dwinter
parents:
diff changeset
364
015d06b10d37 initial
dwinter
parents:
diff changeset
365
015d06b10d37 initial
dwinter
parents:
diff changeset
366 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
367 * Re-jigger the schema to use fewer, shorter keys.
015d06b10d37 initial
dwinter
parents:
diff changeset
368 */
015d06b10d37 initial
dwinter
parents:
diff changeset
369 function solrsearch_update_7001() {
015d06b10d37 initial
dwinter
parents:
diff changeset
370 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
371 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
372 }
015d06b10d37 initial
dwinter
parents:
diff changeset
373
015d06b10d37 initial
dwinter
parents:
diff changeset
374 if (db_field_exists('solrsearch_server', 'asid')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
375 // You installed the beta1 and need to be fixed up.
015d06b10d37 initial
dwinter
parents:
diff changeset
376 db_drop_field('solrsearch_server', 'asid');
015d06b10d37 initial
dwinter
parents:
diff changeset
377 db_drop_unique_key('solrsearch_server', 'server_id');
015d06b10d37 initial
dwinter
parents:
diff changeset
378 db_add_primary_key('solrsearch_server', array('server_id'));
015d06b10d37 initial
dwinter
parents:
diff changeset
379 db_drop_unique_key('solrsearch_server', 'host_post_path');
015d06b10d37 initial
dwinter
parents:
diff changeset
380 db_change_field('solrsearch_server', 'port', 'port',
015d06b10d37 initial
dwinter
parents:
diff changeset
381 array(
015d06b10d37 initial
dwinter
parents:
diff changeset
382 'description' => 'Port number for the registered server',
015d06b10d37 initial
dwinter
parents:
diff changeset
383 'type' => 'int',
015d06b10d37 initial
dwinter
parents:
diff changeset
384 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
385 )
015d06b10d37 initial
dwinter
parents:
diff changeset
386 );
015d06b10d37 initial
dwinter
parents:
diff changeset
387 }
015d06b10d37 initial
dwinter
parents:
diff changeset
388 }
015d06b10d37 initial
dwinter
parents:
diff changeset
389
015d06b10d37 initial
dwinter
parents:
diff changeset
390 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
391 * Create the per-server variable table.
015d06b10d37 initial
dwinter
parents:
diff changeset
392 */
015d06b10d37 initial
dwinter
parents:
diff changeset
393 function solrsearch_update_7002() {
015d06b10d37 initial
dwinter
parents:
diff changeset
394 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
395 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
396 }
015d06b10d37 initial
dwinter
parents:
diff changeset
397
015d06b10d37 initial
dwinter
parents:
diff changeset
398 $schema['solrsearch_server_variable'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
399 'description' => 'Variable values for each Solr server.',
015d06b10d37 initial
dwinter
parents:
diff changeset
400 'fields' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
401 'server_id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
402 'description' => 'Unique identifier for the server',
015d06b10d37 initial
dwinter
parents:
diff changeset
403 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
404 'length' => 64,
015d06b10d37 initial
dwinter
parents:
diff changeset
405 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
406 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
407 'name' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
408 'description' => 'The name of the variable.',
015d06b10d37 initial
dwinter
parents:
diff changeset
409 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
410 'length' => 128,
015d06b10d37 initial
dwinter
parents:
diff changeset
411 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
412 'default' => '',
015d06b10d37 initial
dwinter
parents:
diff changeset
413 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
414 'value' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
415 'description' => 'The value of the variable.',
015d06b10d37 initial
dwinter
parents:
diff changeset
416 'type' => 'blob',
015d06b10d37 initial
dwinter
parents:
diff changeset
417 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
418 'size' => 'big',
015d06b10d37 initial
dwinter
parents:
diff changeset
419 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
420 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
421 'primary key' => array('server_id', 'name'),
015d06b10d37 initial
dwinter
parents:
diff changeset
422 );
015d06b10d37 initial
dwinter
parents:
diff changeset
423 db_create_table('solrsearch_server_variable', $schema['solrsearch_server_variable']);
015d06b10d37 initial
dwinter
parents:
diff changeset
424 $server_id = variable_get('solrsearch_default_server', 'solr');
015d06b10d37 initial
dwinter
parents:
diff changeset
425 // Variables to be migrated:
015d06b10d37 initial
dwinter
parents:
diff changeset
426 $conf['solrsearch_enabled_facets'] = variable_get('solrsearch_enabled_facets', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
427 $conf['solrsearch_search_query_fields'] = variable_get('solrsearch_search_query_fields', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
428 $conf['solrsearch_search_type_boosts'] = variable_get('solrsearch_search_type_boosts', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
429 $conf['solrsearch_search_comment_boost'] = variable_get('solrsearch_search_comment_boost', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
430 $conf['solrsearch_search_changed_boost'] = variable_get('solrsearch_search_changed_boost', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
431 $conf['solrsearch_search_sticky_boost'] = variable_get('solrsearch_search_sticky_boost', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
432 $conf['solrsearch_search_promote_boost'] = variable_get('solrsearch_search_promote_boost', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
433 $conf['solrsearch_search_excluded_types'] = variable_get('solrsearch_search_excluded_types', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
434 foreach ($conf as $name => $value) {
015d06b10d37 initial
dwinter
parents:
diff changeset
435 if ($value !== NULL) {
015d06b10d37 initial
dwinter
parents:
diff changeset
436 db_merge('solrsearch_server_variable')
015d06b10d37 initial
dwinter
parents:
diff changeset
437 ->key(array('server_id' => $server_id, 'name' => $name))
015d06b10d37 initial
dwinter
parents:
diff changeset
438 ->fields(array('value' => serialize($value)))
015d06b10d37 initial
dwinter
parents:
diff changeset
439 ->execute();
015d06b10d37 initial
dwinter
parents:
diff changeset
440 }
015d06b10d37 initial
dwinter
parents:
diff changeset
441 variable_del($name);
015d06b10d37 initial
dwinter
parents:
diff changeset
442 }
015d06b10d37 initial
dwinter
parents:
diff changeset
443 }
015d06b10d37 initial
dwinter
parents:
diff changeset
444
015d06b10d37 initial
dwinter
parents:
diff changeset
445 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
446 * Move excluded comment types into a new variable.
015d06b10d37 initial
dwinter
parents:
diff changeset
447 */
015d06b10d37 initial
dwinter
parents:
diff changeset
448 function solrsearch_update_7003() {
015d06b10d37 initial
dwinter
parents:
diff changeset
449 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
450 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
451 }
015d06b10d37 initial
dwinter
parents:
diff changeset
452
015d06b10d37 initial
dwinter
parents:
diff changeset
453 // Same as solrsearch_update_6006()
015d06b10d37 initial
dwinter
parents:
diff changeset
454 $exclude_comment_types = variable_get('solrsearch_exclude_comments_types', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
455 if (is_array($exclude_comment_types)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
456 $exclude = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
457 foreach ($exclude_comment_types as $type) {
015d06b10d37 initial
dwinter
parents:
diff changeset
458 $exclude[$type]['comment'] = TRUE;
015d06b10d37 initial
dwinter
parents:
diff changeset
459 }
015d06b10d37 initial
dwinter
parents:
diff changeset
460 variable_set('solrsearch_exclude_nodeapi_types', $exclude);
015d06b10d37 initial
dwinter
parents:
diff changeset
461 }
015d06b10d37 initial
dwinter
parents:
diff changeset
462 variable_del('solrsearch_exclude_comments_types');
015d06b10d37 initial
dwinter
parents:
diff changeset
463 }
015d06b10d37 initial
dwinter
parents:
diff changeset
464
015d06b10d37 initial
dwinter
parents:
diff changeset
465 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
466 * Update solrsearch_failure variable.
015d06b10d37 initial
dwinter
parents:
diff changeset
467 */
015d06b10d37 initial
dwinter
parents:
diff changeset
468 function solrsearch_update_7004() {
015d06b10d37 initial
dwinter
parents:
diff changeset
469 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
470 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
471 }
015d06b10d37 initial
dwinter
parents:
diff changeset
472
015d06b10d37 initial
dwinter
parents:
diff changeset
473 $failure = variable_get('solrsearch_failure', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
474 switch ($failure) {
015d06b10d37 initial
dwinter
parents:
diff changeset
475 case 'show_error':
015d06b10d37 initial
dwinter
parents:
diff changeset
476 variable_set('solrsearch_failure', 'solrsearch:show_error');
015d06b10d37 initial
dwinter
parents:
diff changeset
477 break;
015d06b10d37 initial
dwinter
parents:
diff changeset
478 case 'show_drupal_results':
015d06b10d37 initial
dwinter
parents:
diff changeset
479 variable_set('solrsearch_failure', 'node');
015d06b10d37 initial
dwinter
parents:
diff changeset
480 break;
015d06b10d37 initial
dwinter
parents:
diff changeset
481 case 'show_no_results':
015d06b10d37 initial
dwinter
parents:
diff changeset
482 variable_set('solrsearch_failure', 'solrsearch:show_no_results');
015d06b10d37 initial
dwinter
parents:
diff changeset
483 break;
015d06b10d37 initial
dwinter
parents:
diff changeset
484 }
015d06b10d37 initial
dwinter
parents:
diff changeset
485 }
015d06b10d37 initial
dwinter
parents:
diff changeset
486
015d06b10d37 initial
dwinter
parents:
diff changeset
487 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
488 * Re-jigger the schema to use just a url column.
015d06b10d37 initial
dwinter
parents:
diff changeset
489 */
015d06b10d37 initial
dwinter
parents:
diff changeset
490 function solrsearch_update_7005() {
015d06b10d37 initial
dwinter
parents:
diff changeset
491 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
492 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
493 }
015d06b10d37 initial
dwinter
parents:
diff changeset
494
015d06b10d37 initial
dwinter
parents:
diff changeset
495 if (db_field_exists('solrsearch_server', 'port')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
496 // You installed the beta3 and need to be fixed up.
015d06b10d37 initial
dwinter
parents:
diff changeset
497 $servers = db_query('SELECT * FROM {solrsearch_server}')->fetchAllAssoc('server_id', PDO::FETCH_ASSOC);
015d06b10d37 initial
dwinter
parents:
diff changeset
498 db_drop_field('solrsearch_server', 'scheme');
015d06b10d37 initial
dwinter
parents:
diff changeset
499 db_drop_field('solrsearch_server', 'port');
015d06b10d37 initial
dwinter
parents:
diff changeset
500 db_drop_field('solrsearch_server', 'path');
015d06b10d37 initial
dwinter
parents:
diff changeset
501 db_change_field('solrsearch_server', 'host', 'url',
015d06b10d37 initial
dwinter
parents:
diff changeset
502 array(
015d06b10d37 initial
dwinter
parents:
diff changeset
503 'description' => 'Full url for the server',
015d06b10d37 initial
dwinter
parents:
diff changeset
504 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
505 'length' => 1000,
015d06b10d37 initial
dwinter
parents:
diff changeset
506 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
507 )
015d06b10d37 initial
dwinter
parents:
diff changeset
508 );
015d06b10d37 initial
dwinter
parents:
diff changeset
509 foreach ($servers as $id => $server) {
015d06b10d37 initial
dwinter
parents:
diff changeset
510 $port = $server['port'] ? ':' . $server['port'] : '';
015d06b10d37 initial
dwinter
parents:
diff changeset
511 $url = $server['scheme'] . '://' . $server['host'] . $port . $server['path'];
015d06b10d37 initial
dwinter
parents:
diff changeset
512 db_update('solrsearch_server')
015d06b10d37 initial
dwinter
parents:
diff changeset
513 ->fields(array('url' => $url))
015d06b10d37 initial
dwinter
parents:
diff changeset
514 ->condition('server_id', $id)
015d06b10d37 initial
dwinter
parents:
diff changeset
515 ->execute();
015d06b10d37 initial
dwinter
parents:
diff changeset
516 }
015d06b10d37 initial
dwinter
parents:
diff changeset
517 }
015d06b10d37 initial
dwinter
parents:
diff changeset
518 }
015d06b10d37 initial
dwinter
parents:
diff changeset
519
015d06b10d37 initial
dwinter
parents:
diff changeset
520 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
521 * Remove facet-related variable deprecated by the Facet API integration.
015d06b10d37 initial
dwinter
parents:
diff changeset
522 */
015d06b10d37 initial
dwinter
parents:
diff changeset
523 function solrsearch_update_7006() {
015d06b10d37 initial
dwinter
parents:
diff changeset
524 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
525 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
526 }
015d06b10d37 initial
dwinter
parents:
diff changeset
527
015d06b10d37 initial
dwinter
parents:
diff changeset
528 variable_del('solrsearch_facetstyle');
015d06b10d37 initial
dwinter
parents:
diff changeset
529 variable_del('solrsearch_facet_show_children');
015d06b10d37 initial
dwinter
parents:
diff changeset
530 variable_del('solrsearch_facet_query_limits');
015d06b10d37 initial
dwinter
parents:
diff changeset
531 variable_del('solrsearch_facet_query_limit_default');
015d06b10d37 initial
dwinter
parents:
diff changeset
532 }
015d06b10d37 initial
dwinter
parents:
diff changeset
533
015d06b10d37 initial
dwinter
parents:
diff changeset
534 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
535 * Rename tables to make them more generic.
015d06b10d37 initial
dwinter
parents:
diff changeset
536 */
015d06b10d37 initial
dwinter
parents:
diff changeset
537 function solrsearch_update_7007() {
015d06b10d37 initial
dwinter
parents:
diff changeset
538 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
539 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
540 }
015d06b10d37 initial
dwinter
parents:
diff changeset
541
015d06b10d37 initial
dwinter
parents:
diff changeset
542 db_drop_primary_key('solrsearch_server');
015d06b10d37 initial
dwinter
parents:
diff changeset
543 db_drop_primary_key('solrsearch_server_variable');
015d06b10d37 initial
dwinter
parents:
diff changeset
544 db_rename_table('solrsearch_server', 'solrsearch_environment');
015d06b10d37 initial
dwinter
parents:
diff changeset
545 db_rename_table('solrsearch_server_variable', 'solrsearch_environment_variable');
015d06b10d37 initial
dwinter
parents:
diff changeset
546 db_change_field('solrsearch_environment', 'server_id', 'env_id', array(
015d06b10d37 initial
dwinter
parents:
diff changeset
547 'description' => 'Unique identifier for the environment',
015d06b10d37 initial
dwinter
parents:
diff changeset
548 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
549 'length' => 64,
015d06b10d37 initial
dwinter
parents:
diff changeset
550 'not null' => TRUE)
015d06b10d37 initial
dwinter
parents:
diff changeset
551 );
015d06b10d37 initial
dwinter
parents:
diff changeset
552 db_change_field('solrsearch_environment_variable', 'server_id', 'env_id', array(
015d06b10d37 initial
dwinter
parents:
diff changeset
553 'description' => 'Unique identifier for the environment',
015d06b10d37 initial
dwinter
parents:
diff changeset
554 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
555 'length' => 64,
015d06b10d37 initial
dwinter
parents:
diff changeset
556 'not null' => TRUE)
015d06b10d37 initial
dwinter
parents:
diff changeset
557 );
015d06b10d37 initial
dwinter
parents:
diff changeset
558 db_add_primary_key('solrsearch_environment', array('env_id'));
015d06b10d37 initial
dwinter
parents:
diff changeset
559 db_add_primary_key('solrsearch_environment_variable', array('env_id', 'name'));
015d06b10d37 initial
dwinter
parents:
diff changeset
560 $id = variable_get('solrsearch_default_server', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
561 if (isset($id)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
562 variable_set('solrsearch_default_environment', $id);
015d06b10d37 initial
dwinter
parents:
diff changeset
563 }
015d06b10d37 initial
dwinter
parents:
diff changeset
564 variable_del('solrsearch_default_server');
015d06b10d37 initial
dwinter
parents:
diff changeset
565 }
015d06b10d37 initial
dwinter
parents:
diff changeset
566
015d06b10d37 initial
dwinter
parents:
diff changeset
567 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
568 * Remove more facet-related variable deprecated by the Facet API integration.
015d06b10d37 initial
dwinter
parents:
diff changeset
569 */
015d06b10d37 initial
dwinter
parents:
diff changeset
570 function solrsearch_update_7008() {
015d06b10d37 initial
dwinter
parents:
diff changeset
571 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
572 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
573 }
015d06b10d37 initial
dwinter
parents:
diff changeset
574
015d06b10d37 initial
dwinter
parents:
diff changeset
575 variable_del('solrsearch_facet_missing');
015d06b10d37 initial
dwinter
parents:
diff changeset
576 variable_del('solrsearch_facet_query_initial_limits');
015d06b10d37 initial
dwinter
parents:
diff changeset
577 variable_del('solrsearch_facet_query_sorts');
015d06b10d37 initial
dwinter
parents:
diff changeset
578 variable_del('solrsearch_facet_sort_active');
015d06b10d37 initial
dwinter
parents:
diff changeset
579 variable_del('solrsearch_operator');
015d06b10d37 initial
dwinter
parents:
diff changeset
580 }
015d06b10d37 initial
dwinter
parents:
diff changeset
581
015d06b10d37 initial
dwinter
parents:
diff changeset
582 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
583 * Update Facet API block deltas to account for removal of numeric ID from field names.
015d06b10d37 initial
dwinter
parents:
diff changeset
584 */
015d06b10d37 initial
dwinter
parents:
diff changeset
585 function solrsearch_update_7009() {
015d06b10d37 initial
dwinter
parents:
diff changeset
586 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
587 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
588 }
015d06b10d37 initial
dwinter
parents:
diff changeset
589
015d06b10d37 initial
dwinter
parents:
diff changeset
590 // Only run when facetapi is available and/or installed
015d06b10d37 initial
dwinter
parents:
diff changeset
591 if (module_exists('facetapi')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
592 module_load_include('inc', 'facetapi', 'facetapi.block');
015d06b10d37 initial
dwinter
parents:
diff changeset
593 // Get all searchers
015d06b10d37 initial
dwinter
parents:
diff changeset
594 $searchers = facetapi_get_searcher_info();
015d06b10d37 initial
dwinter
parents:
diff changeset
595 $realms = facetapi_get_realm_info();
015d06b10d37 initial
dwinter
parents:
diff changeset
596 foreach ($searchers as $searcher_id => $searcher) {
015d06b10d37 initial
dwinter
parents:
diff changeset
597 foreach ($realms as $realm_id => $realm) {
015d06b10d37 initial
dwinter
parents:
diff changeset
598 foreach (field_info_fields() as $field_name => $field) {
015d06b10d37 initial
dwinter
parents:
diff changeset
599 // Generate the old delta
015d06b10d37 initial
dwinter
parents:
diff changeset
600 $facet_name_old = $field['id'] . '_' . $field['field_name'];
015d06b10d37 initial
dwinter
parents:
diff changeset
601 $delta_old = facetapi_build_delta($searcher['name'], $realm['name'], $facet_name_old);
015d06b10d37 initial
dwinter
parents:
diff changeset
602 $delta_old = substr(drupal_hash_base64($delta_old), 0, 32);
015d06b10d37 initial
dwinter
parents:
diff changeset
603 // Generate the new delta
015d06b10d37 initial
dwinter
parents:
diff changeset
604 $facet_name = $field['field_name'];
015d06b10d37 initial
dwinter
parents:
diff changeset
605 $delta = facetapi_build_delta($searcher['name'], $realm['name'], $facet_name);
015d06b10d37 initial
dwinter
parents:
diff changeset
606 $delta = substr(drupal_hash_base64($delta), 0, 32);
015d06b10d37 initial
dwinter
parents:
diff changeset
607 db_update('block')
015d06b10d37 initial
dwinter
parents:
diff changeset
608 ->fields(array('delta' => $delta))
015d06b10d37 initial
dwinter
parents:
diff changeset
609 ->condition('module', 'facetapi')
015d06b10d37 initial
dwinter
parents:
diff changeset
610 ->condition('delta', $delta_old)
015d06b10d37 initial
dwinter
parents:
diff changeset
611 ->execute();
015d06b10d37 initial
dwinter
parents:
diff changeset
612 }
015d06b10d37 initial
dwinter
parents:
diff changeset
613 }
015d06b10d37 initial
dwinter
parents:
diff changeset
614 }
015d06b10d37 initial
dwinter
parents:
diff changeset
615 }
015d06b10d37 initial
dwinter
parents:
diff changeset
616 }
015d06b10d37 initial
dwinter
parents:
diff changeset
617
015d06b10d37 initial
dwinter
parents:
diff changeset
618 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
619 * Update cache table schema for Drupal 7.
015d06b10d37 initial
dwinter
parents:
diff changeset
620 */
015d06b10d37 initial
dwinter
parents:
diff changeset
621 function solrsearch_update_7010() {
015d06b10d37 initial
dwinter
parents:
diff changeset
622 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
623 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
624 }
015d06b10d37 initial
dwinter
parents:
diff changeset
625
015d06b10d37 initial
dwinter
parents:
diff changeset
626 db_drop_field('cache_solrsearch', 'headers');
015d06b10d37 initial
dwinter
parents:
diff changeset
627 return 'Updated cache table schema for Drupal 7.';
015d06b10d37 initial
dwinter
parents:
diff changeset
628 }
015d06b10d37 initial
dwinter
parents:
diff changeset
629
015d06b10d37 initial
dwinter
parents:
diff changeset
630 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
631 * Change the namespace for the indexer from solrsearch_search to solrsearch
015d06b10d37 initial
dwinter
parents:
diff changeset
632 */
015d06b10d37 initial
dwinter
parents:
diff changeset
633 function solrsearch_update_7011() {
015d06b10d37 initial
dwinter
parents:
diff changeset
634 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
635 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
636 }
015d06b10d37 initial
dwinter
parents:
diff changeset
637
015d06b10d37 initial
dwinter
parents:
diff changeset
638 $stored = variable_get('solrsearch_index_last', array());
015d06b10d37 initial
dwinter
parents:
diff changeset
639 if (isset($stored['solrsearch_search'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
640 $stored['solrsearch'] = $stored['solrsearch_search'];
015d06b10d37 initial
dwinter
parents:
diff changeset
641 unset($stored['solrsearch_search']);
015d06b10d37 initial
dwinter
parents:
diff changeset
642 variable_set('solrsearch_index_last', $stored);
015d06b10d37 initial
dwinter
parents:
diff changeset
643 }
015d06b10d37 initial
dwinter
parents:
diff changeset
644 return 'Updated the namespace variable for the index process.';
015d06b10d37 initial
dwinter
parents:
diff changeset
645 }
015d06b10d37 initial
dwinter
parents:
diff changeset
646
015d06b10d37 initial
dwinter
parents:
diff changeset
647 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
648 * Rename some variables and update the database tables
015d06b10d37 initial
dwinter
parents:
diff changeset
649 */
015d06b10d37 initial
dwinter
parents:
diff changeset
650 function solrsearch_update_7012() {
015d06b10d37 initial
dwinter
parents:
diff changeset
651 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
652 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
653 }
015d06b10d37 initial
dwinter
parents:
diff changeset
654
015d06b10d37 initial
dwinter
parents:
diff changeset
655 // @see: drupal_load()
015d06b10d37 initial
dwinter
parents:
diff changeset
656 if (!function_exists('solrsearch_default_environment')) {
015d06b10d37 initial
dwinter
parents:
diff changeset
657 include_once dirname(__FILE__) . '/solrsearch.module';
015d06b10d37 initial
dwinter
parents:
diff changeset
658 }
015d06b10d37 initial
dwinter
parents:
diff changeset
659
015d06b10d37 initial
dwinter
parents:
diff changeset
660 $env_id = solrsearch_default_environment();
015d06b10d37 initial
dwinter
parents:
diff changeset
661
015d06b10d37 initial
dwinter
parents:
diff changeset
662 // Variable changed from integer to array with environment integers
015d06b10d37 initial
dwinter
parents:
diff changeset
663 $stored = variable_get('solrsearch_index_last', array());
015d06b10d37 initial
dwinter
parents:
diff changeset
664 if (isset($stored['solrsearch'])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
665 $stored[$env_id]['node']['last_entity_id'] = $stored['solrsearch']['last_nid'];
015d06b10d37 initial
dwinter
parents:
diff changeset
666 $stored[$env_id]['node']['last_changed'] = $stored['solrsearch']['last_change'];
015d06b10d37 initial
dwinter
parents:
diff changeset
667 unset($stored['solrsearch']);
015d06b10d37 initial
dwinter
parents:
diff changeset
668 variable_set('solrsearch_index_last', $stored);
015d06b10d37 initial
dwinter
parents:
diff changeset
669 }
015d06b10d37 initial
dwinter
parents:
diff changeset
670 $last = variable_get('solrsearch_index_updated', NULL);
015d06b10d37 initial
dwinter
parents:
diff changeset
671 if (isset($last)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
672 variable_set('solrsearch_index_updated', array($env_id => (int) $last));
015d06b10d37 initial
dwinter
parents:
diff changeset
673 }
015d06b10d37 initial
dwinter
parents:
diff changeset
674
015d06b10d37 initial
dwinter
parents:
diff changeset
675 // Change namespace to environment id
015d06b10d37 initial
dwinter
parents:
diff changeset
676 $excluded_types = solrsearch_environment_variable_get('solrsearch', 'solrsearch_search_excluded_types', array());
015d06b10d37 initial
dwinter
parents:
diff changeset
677 if (!empty($excluded_types)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
678 solrsearch_environment_variable_set($env_id, 'solrsearch_search_excluded_types', $excluded_types);
015d06b10d37 initial
dwinter
parents:
diff changeset
679 solrsearch_environment_variable_del('solrsearch', 'solrsearch_search_excluded_types');
015d06b10d37 initial
dwinter
parents:
diff changeset
680 }
015d06b10d37 initial
dwinter
parents:
diff changeset
681
015d06b10d37 initial
dwinter
parents:
diff changeset
682 // Install the new schema
015d06b10d37 initial
dwinter
parents:
diff changeset
683 //Predefine an amount of types that get their own table
015d06b10d37 initial
dwinter
parents:
diff changeset
684 $types = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
685 'other' => 'solrsearch_index_entities',
015d06b10d37 initial
dwinter
parents:
diff changeset
686 'node' => 'solrsearch_index_entities_node',
015d06b10d37 initial
dwinter
parents:
diff changeset
687 );
015d06b10d37 initial
dwinter
parents:
diff changeset
688 foreach ($types as $type => $table) {
015d06b10d37 initial
dwinter
parents:
diff changeset
689 $schema[$table] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
690 'description' => 'Stores a record of when an entity changed to determine if it needs indexing by Solr.',
015d06b10d37 initial
dwinter
parents:
diff changeset
691 'fields' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
692 'entity_type' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
693 'description' => 'The type of entity.',
015d06b10d37 initial
dwinter
parents:
diff changeset
694 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
695 'length' => 32,
015d06b10d37 initial
dwinter
parents:
diff changeset
696 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
697 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
698 'entity_id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
699 'description' => 'The primary identifier for an entity.',
015d06b10d37 initial
dwinter
parents:
diff changeset
700 'type' => 'int',
015d06b10d37 initial
dwinter
parents:
diff changeset
701 'unsigned' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
702 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
703 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
704 'bundle' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
705 'description' => 'The bundle to which this entity belongs.',
015d06b10d37 initial
dwinter
parents:
diff changeset
706 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
707 'length' => 128,
015d06b10d37 initial
dwinter
parents:
diff changeset
708 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
709 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
710 'status' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
711 'description' => 'Boolean indicating whether the entity is visible to non-administrators (eg, published for nodes).',
015d06b10d37 initial
dwinter
parents:
diff changeset
712 'type' => 'int',
015d06b10d37 initial
dwinter
parents:
diff changeset
713 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
714 'default' => 1,
015d06b10d37 initial
dwinter
parents:
diff changeset
715 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
716 'changed' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
717 'description' => 'The Unix timestamp when an entity was changed.',
015d06b10d37 initial
dwinter
parents:
diff changeset
718 'type' => 'int',
015d06b10d37 initial
dwinter
parents:
diff changeset
719 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
720 'default' => 0,
015d06b10d37 initial
dwinter
parents:
diff changeset
721 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
722 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
723 'indexes' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
724 'changed' => array('bundle', 'status', 'changed'),
015d06b10d37 initial
dwinter
parents:
diff changeset
725 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
726 'primary key' => array('entity_id'),
015d06b10d37 initial
dwinter
parents:
diff changeset
727 );
015d06b10d37 initial
dwinter
parents:
diff changeset
728 if ($type == 'other') {
015d06b10d37 initial
dwinter
parents:
diff changeset
729 // Need the entity type also in the pkey for multiple entities in one table.
015d06b10d37 initial
dwinter
parents:
diff changeset
730 $schema[$table]['primary key'][] = 'entity_type';
015d06b10d37 initial
dwinter
parents:
diff changeset
731 }
015d06b10d37 initial
dwinter
parents:
diff changeset
732 // Create the table
015d06b10d37 initial
dwinter
parents:
diff changeset
733 db_create_table($table, $schema[$table]);
015d06b10d37 initial
dwinter
parents:
diff changeset
734 }
015d06b10d37 initial
dwinter
parents:
diff changeset
735
015d06b10d37 initial
dwinter
parents:
diff changeset
736 $schema['solrsearch_index_bundles'] = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
737 'description' => 'Records what bundles we should be indexing for a given environment.',
015d06b10d37 initial
dwinter
parents:
diff changeset
738 'fields' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
739 'env_id' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
740 'description' => 'The name of the environment.',
015d06b10d37 initial
dwinter
parents:
diff changeset
741 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
742 'length' => 64,
015d06b10d37 initial
dwinter
parents:
diff changeset
743 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
744 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
745 'entity_type' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
746 'description' => 'The type of entity.',
015d06b10d37 initial
dwinter
parents:
diff changeset
747 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
748 'length' => 32,
015d06b10d37 initial
dwinter
parents:
diff changeset
749 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
750 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
751 'bundle' => array(
015d06b10d37 initial
dwinter
parents:
diff changeset
752 'description' => 'The bundle to index.',
015d06b10d37 initial
dwinter
parents:
diff changeset
753 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
754 'length' => 128,
015d06b10d37 initial
dwinter
parents:
diff changeset
755 'not null' => TRUE,
015d06b10d37 initial
dwinter
parents:
diff changeset
756 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
757 ),
015d06b10d37 initial
dwinter
parents:
diff changeset
758 'primary key' => array('env_id', 'entity_type', 'bundle'),
015d06b10d37 initial
dwinter
parents:
diff changeset
759 );
015d06b10d37 initial
dwinter
parents:
diff changeset
760 db_create_table('solrsearch_index_bundles', $schema['solrsearch_index_bundles']);
015d06b10d37 initial
dwinter
parents:
diff changeset
761
015d06b10d37 initial
dwinter
parents:
diff changeset
762
015d06b10d37 initial
dwinter
parents:
diff changeset
763 // Move the data from solrsearch_search_node to solrsearch_index_entities_node
015d06b10d37 initial
dwinter
parents:
diff changeset
764 $select = db_select('solrsearch_search_node', 'asn');
015d06b10d37 initial
dwinter
parents:
diff changeset
765 $select->join('node', 'n', 'asn.nid = n.nid');
015d06b10d37 initial
dwinter
parents:
diff changeset
766 $select->addField('n', 'nid', 'entity_id');
015d06b10d37 initial
dwinter
parents:
diff changeset
767 $select->addField('n', 'type', 'bundle');
015d06b10d37 initial
dwinter
parents:
diff changeset
768 $select->addField('asn', 'status', 'status');
015d06b10d37 initial
dwinter
parents:
diff changeset
769 $select->addField('asn', 'changed', 'changed');
015d06b10d37 initial
dwinter
parents:
diff changeset
770 $select->addExpression("'node'", 'entity_type');
015d06b10d37 initial
dwinter
parents:
diff changeset
771 $return_value = db_insert('solrsearch_index_entities_node')
015d06b10d37 initial
dwinter
parents:
diff changeset
772 ->fields(array('entity_id', 'bundle', 'status', 'changed', 'entity_type'))
015d06b10d37 initial
dwinter
parents:
diff changeset
773 ->from($select)
015d06b10d37 initial
dwinter
parents:
diff changeset
774 ->execute();
015d06b10d37 initial
dwinter
parents:
diff changeset
775 // Drop the table solrsearch_search_node
015d06b10d37 initial
dwinter
parents:
diff changeset
776 db_drop_table('solrsearch_search_node');
015d06b10d37 initial
dwinter
parents:
diff changeset
777
015d06b10d37 initial
dwinter
parents:
diff changeset
778 $environments = solrsearch_load_all_environments();
015d06b10d37 initial
dwinter
parents:
diff changeset
779 foreach ($environments as $env_id => $environment) {
015d06b10d37 initial
dwinter
parents:
diff changeset
780 $excluded_types = solrsearch_environment_variable_get($env_id, 'solrsearch_search_excluded_types', array());
015d06b10d37 initial
dwinter
parents:
diff changeset
781 // Get indexable entity types
015d06b10d37 initial
dwinter
parents:
diff changeset
782 $options = array();
015d06b10d37 initial
dwinter
parents:
diff changeset
783 foreach (entity_get_info() as $entity_type => $entity_info) {
015d06b10d37 initial
dwinter
parents:
diff changeset
784 if ($entity_type == 'node') {
015d06b10d37 initial
dwinter
parents:
diff changeset
785 foreach ($entity_info['bundles'] as $key => $info) {
015d06b10d37 initial
dwinter
parents:
diff changeset
786 // See if it was excluded & only of entity node. We will not enable
015d06b10d37 initial
dwinter
parents:
diff changeset
787 // other entity types by default
015d06b10d37 initial
dwinter
parents:
diff changeset
788 if (empty($excluded_types[$key])) {
015d06b10d37 initial
dwinter
parents:
diff changeset
789 $options[$entity_type][$key] = $key;
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 // Set all except the excluded types
015d06b10d37 initial
dwinter
parents:
diff changeset
795 // @see solrsearch_index_set_bundles()
015d06b10d37 initial
dwinter
parents:
diff changeset
796 foreach ($options as $entity_type => $bundles) {
015d06b10d37 initial
dwinter
parents:
diff changeset
797 db_delete('solrsearch_index_bundles')
015d06b10d37 initial
dwinter
parents:
diff changeset
798 ->condition('env_id', $env_id)
015d06b10d37 initial
dwinter
parents:
diff changeset
799 ->condition('entity_type', $entity_type)
015d06b10d37 initial
dwinter
parents:
diff changeset
800 ->execute();
015d06b10d37 initial
dwinter
parents:
diff changeset
801
015d06b10d37 initial
dwinter
parents:
diff changeset
802 if ($bundles) {
015d06b10d37 initial
dwinter
parents:
diff changeset
803 $insert = db_insert('solrsearch_index_bundles')
015d06b10d37 initial
dwinter
parents:
diff changeset
804 ->fields(array('env_id', 'entity_type', 'bundle'));
015d06b10d37 initial
dwinter
parents:
diff changeset
805
015d06b10d37 initial
dwinter
parents:
diff changeset
806 foreach ($bundles as $bundle) {
015d06b10d37 initial
dwinter
parents:
diff changeset
807 $insert->values(array(
015d06b10d37 initial
dwinter
parents:
diff changeset
808 'env_id' => $env_id,
015d06b10d37 initial
dwinter
parents:
diff changeset
809 'entity_type' => $entity_type,
015d06b10d37 initial
dwinter
parents:
diff changeset
810 'bundle' => $bundle,
015d06b10d37 initial
dwinter
parents:
diff changeset
811 ));
015d06b10d37 initial
dwinter
parents:
diff changeset
812 }
015d06b10d37 initial
dwinter
parents:
diff changeset
813 $insert->execute();
015d06b10d37 initial
dwinter
parents:
diff changeset
814 }
015d06b10d37 initial
dwinter
parents:
diff changeset
815 }
015d06b10d37 initial
dwinter
parents:
diff changeset
816 // Remove the excluded types
015d06b10d37 initial
dwinter
parents:
diff changeset
817 solrsearch_environment_variable_del($env_id, 'solrsearch_search_excluded_types');
015d06b10d37 initial
dwinter
parents:
diff changeset
818 }
015d06b10d37 initial
dwinter
parents:
diff changeset
819 }
015d06b10d37 initial
dwinter
parents:
diff changeset
820
015d06b10d37 initial
dwinter
parents:
diff changeset
821 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
822 * Make consistent (and reduce) field lengths which cause excess pkey length.
015d06b10d37 initial
dwinter
parents:
diff changeset
823 */
015d06b10d37 initial
dwinter
parents:
diff changeset
824 function solrsearch_update_7013() {
015d06b10d37 initial
dwinter
parents:
diff changeset
825 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
826 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
827 }
015d06b10d37 initial
dwinter
parents:
diff changeset
828
015d06b10d37 initial
dwinter
parents:
diff changeset
829 db_drop_primary_key('solrsearch_index_entities');
015d06b10d37 initial
dwinter
parents:
diff changeset
830 db_change_field('solrsearch_index_entities', 'entity_type', 'entity_type', array(
015d06b10d37 initial
dwinter
parents:
diff changeset
831 'description' => 'The type of entity.',
015d06b10d37 initial
dwinter
parents:
diff changeset
832 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
833 'length' => 32,
015d06b10d37 initial
dwinter
parents:
diff changeset
834 'not null' => TRUE)
015d06b10d37 initial
dwinter
parents:
diff changeset
835 );
015d06b10d37 initial
dwinter
parents:
diff changeset
836 db_add_primary_key('solrsearch_index_entities', array('entity_id', 'entity_type'));
015d06b10d37 initial
dwinter
parents:
diff changeset
837 db_change_field('solrsearch_index_entities_node', 'entity_type', 'entity_type', array(
015d06b10d37 initial
dwinter
parents:
diff changeset
838 'description' => 'The type of entity.',
015d06b10d37 initial
dwinter
parents:
diff changeset
839 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
840 'length' => 32,
015d06b10d37 initial
dwinter
parents:
diff changeset
841 'not null' => TRUE)
015d06b10d37 initial
dwinter
parents:
diff changeset
842 );
015d06b10d37 initial
dwinter
parents:
diff changeset
843 db_drop_primary_key('solrsearch_index_bundles');
015d06b10d37 initial
dwinter
parents:
diff changeset
844 db_change_field('solrsearch_index_bundles', 'env_id', 'env_id', array(
015d06b10d37 initial
dwinter
parents:
diff changeset
845 'description' => 'Unique identifier for the environment',
015d06b10d37 initial
dwinter
parents:
diff changeset
846 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
847 'length' => 64,
015d06b10d37 initial
dwinter
parents:
diff changeset
848 'not null' => TRUE)
015d06b10d37 initial
dwinter
parents:
diff changeset
849 );
015d06b10d37 initial
dwinter
parents:
diff changeset
850 db_change_field('solrsearch_index_bundles', 'entity_type', 'entity_type', array(
015d06b10d37 initial
dwinter
parents:
diff changeset
851 'description' => 'The type of entity.',
015d06b10d37 initial
dwinter
parents:
diff changeset
852 'type' => 'varchar',
015d06b10d37 initial
dwinter
parents:
diff changeset
853 'length' => 32,
015d06b10d37 initial
dwinter
parents:
diff changeset
854 'not null' => TRUE)
015d06b10d37 initial
dwinter
parents:
diff changeset
855 );
015d06b10d37 initial
dwinter
parents:
diff changeset
856 db_add_primary_key('solrsearch_index_bundles', array('env_id', 'entity_type', 'bundle'));
015d06b10d37 initial
dwinter
parents:
diff changeset
857 }
015d06b10d37 initial
dwinter
parents:
diff changeset
858
015d06b10d37 initial
dwinter
parents:
diff changeset
859 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
860 * Remove status from the key.
015d06b10d37 initial
dwinter
parents:
diff changeset
861 */
015d06b10d37 initial
dwinter
parents:
diff changeset
862 function solrsearch_update_7014() {
015d06b10d37 initial
dwinter
parents:
diff changeset
863 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
864 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
865 }
015d06b10d37 initial
dwinter
parents:
diff changeset
866
015d06b10d37 initial
dwinter
parents:
diff changeset
867 $types = array(
015d06b10d37 initial
dwinter
parents:
diff changeset
868 'other' => 'solrsearch_index_entities',
015d06b10d37 initial
dwinter
parents:
diff changeset
869 'node' => 'solrsearch_index_entities_node',
015d06b10d37 initial
dwinter
parents:
diff changeset
870 );
015d06b10d37 initial
dwinter
parents:
diff changeset
871 foreach ($types as $type => $table) {
015d06b10d37 initial
dwinter
parents:
diff changeset
872 db_drop_index($table, 'changed');
015d06b10d37 initial
dwinter
parents:
diff changeset
873 db_add_index($table, 'bundle_changed', array('bundle', 'changed'));
015d06b10d37 initial
dwinter
parents:
diff changeset
874 }
015d06b10d37 initial
dwinter
parents:
diff changeset
875 }
015d06b10d37 initial
dwinter
parents:
diff changeset
876
015d06b10d37 initial
dwinter
parents:
diff changeset
877
015d06b10d37 initial
dwinter
parents:
diff changeset
878 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
879 * Fix primary key schema mismatch for those who cleanly installed with beta16.
015d06b10d37 initial
dwinter
parents:
diff changeset
880 */
015d06b10d37 initial
dwinter
parents:
diff changeset
881 function solrsearch_update_7015() {
015d06b10d37 initial
dwinter
parents:
diff changeset
882 if (variable_get('solrsearch_update_from_6303', FALSE)) {
015d06b10d37 initial
dwinter
parents:
diff changeset
883 return NULL;
015d06b10d37 initial
dwinter
parents:
diff changeset
884 }
015d06b10d37 initial
dwinter
parents:
diff changeset
885
015d06b10d37 initial
dwinter
parents:
diff changeset
886 // Brand new installations since update_7013 have the wrong primary key.
015d06b10d37 initial
dwinter
parents:
diff changeset
887 db_drop_primary_key('solrsearch_index_entities');
015d06b10d37 initial
dwinter
parents:
diff changeset
888 db_add_primary_key('solrsearch_index_entities', array('entity_id', 'entity_type'));
015d06b10d37 initial
dwinter
parents:
diff changeset
889 }
015d06b10d37 initial
dwinter
parents:
diff changeset
890
015d06b10d37 initial
dwinter
parents:
diff changeset
891 /**
015d06b10d37 initial
dwinter
parents:
diff changeset
892 * Clean up solrsearch_update_from_6303.
015d06b10d37 initial
dwinter
parents:
diff changeset
893 *
015d06b10d37 initial
dwinter
parents:
diff changeset
894 * This variable had been used to bypass 7.x-1.x updates which are redundant
015d06b10d37 initial
dwinter
parents:
diff changeset
895 * with 6.x-3.x.
015d06b10d37 initial
dwinter
parents:
diff changeset
896 */
015d06b10d37 initial
dwinter
parents:
diff changeset
897 function solrsearch_update_7016() {
015d06b10d37 initial
dwinter
parents:
diff changeset
898 variable_del('solrsearch_update_from_6303');
015d06b10d37 initial
dwinter
parents:
diff changeset
899 }