comparison modules/rules/rules.install @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
comparison
equal deleted inserted replaced
3:b28be78d8160 4:ce11bbd8f642
1 <?php
2
3 /**
4 * @file Rules - Installation file.
5 */
6
7 /**
8 * Implements hook_install().
9 */
10 function rules_install() {
11 module_load_include('inc', 'rules', 'modules/events');
12 // Set the modules' weight to 20, see
13 // http://drupal.org/node/445084#comment-1533280 for the reasoning.
14 db_query("UPDATE {system} SET weight = 20 WHERE name = 'rules'");
15 }
16
17 /**
18 * Implements hook_uninstall().
19 */
20 function rules_uninstall() {
21 variable_del('rules_event_whitelist');
22 variable_del('rules_debug');
23 }
24
25 /**
26 * Implements hook_schema().
27 */
28 function rules_schema() {
29 $schema['rules_config'] = array(
30 'fields' => array(
31 'id' => array(
32 'type' => 'serial',
33 'not null' => TRUE,
34 'description' => 'The internal identifier for any configuration.',
35 ),
36 'name' => array(
37 'type' => 'varchar',
38 'length' => '64',
39 'not null' => TRUE,
40 'description' => 'The name of the configuration.',
41 ),
42 'label' => array(
43 'type' => 'varchar',
44 'length' => '255',
45 'not null' => TRUE,
46 'description' => 'The label of the configuration.',
47 'default' => 'unlabeled',
48 ),
49 'plugin' => array(
50 'type' => 'varchar',
51 'length' => 127,
52 'not null' => TRUE,
53 'description' => 'The name of the plugin of this configuration.',
54 ),
55 'active' => array(
56 'description' => 'Boolean indicating whether the configuration is active. Usage depends on how the using module makes use of it.',
57 'type' => 'int',
58 'not null' => TRUE,
59 'default' => 1,
60 ),
61 'weight' => array(
62 'type' => 'int',
63 'not null' => TRUE,
64 'default' => 0,
65 'size' => 'tiny',
66 'description' => 'Weight of the configuration. Usage depends on how the using module makes use of it.',
67 ),
68 'status' => array(
69 'type' => 'int',
70 'not null' => TRUE,
71 // Set the default to ENTITY_CUSTOM without using the constant as it is
72 // not safe to use it at this point.
73 'default' => 0x01,
74 'size' => 'tiny',
75 'description' => 'The exportable status of the entity.',
76 ),
77 'dirty' => array(
78 'type' => 'int',
79 'not null' => TRUE,
80 'default' => 0,
81 'size' => 'tiny',
82 'description' => 'Dirty configurations fail the integrity check, e.g. due to missing dependencies.',
83 ),
84 'module' => array(
85 'description' => 'The name of the providing module if the entity has been defined in code.',
86 'type' => 'varchar',
87 'length' => 255,
88 'not null' => FALSE,
89 ),
90 'owner' => array(
91 'description' => 'The name of the module via which the rule has been configured.',
92 'type' => 'varchar',
93 'length' => 255,
94 'not null' => TRUE,
95 'default' => 'rules',
96 ),
97 'access_exposed' => array(
98 'type' => 'int',
99 'not null' => TRUE,
100 'default' => 0,
101 'size' => 'tiny',
102 'description' => 'Whether to use a permission to control access for using components.',
103 ),
104 'data' => array(
105 'type' => 'blob',
106 'size' => 'big',
107 'not null' => FALSE,
108 'serialize' => TRUE,
109 'description' => 'Everything else, serialized.',
110 ),
111 ),
112 'primary key' => array('id'),
113 'unique keys' => array(
114 'name' => array('name'),
115 ),
116 'indexes' => array(
117 'plugin' => array('plugin'),
118 ),
119 );
120 $schema['rules_trigger'] = array(
121 'fields' => array(
122 'id' => array(
123 'type' => 'int',
124 'unsigned' => TRUE,
125 'not null' => TRUE,
126 'description' => 'The primary identifier of the configuration.',
127 ),
128 'event' => array(
129 'type' => 'varchar',
130 'length' => '127',
131 'not null' => TRUE,
132 'default' => '',
133 'description' => 'The name of the event on which the configuration should be triggered.',
134 ),
135 ),
136 'primary key' => array('id', 'event'),
137 'foreign keys' => array(
138 'table' => 'rules_config',
139 'columns' => array('id' => 'id'),
140 ),
141 );
142 $schema['rules_tags'] = array(
143 'fields' => array(
144 'id' => array(
145 'type' => 'int',
146 'unsigned' => TRUE,
147 'not null' => TRUE,
148 'description' => 'The primary identifier of the configuration.',
149 ),
150 'tag' => array(
151 'type' => 'varchar',
152 'length' => '255',
153 'not null' => TRUE,
154 'description' => 'The tag string associated with this configuration',
155 ),
156 ),
157 'primary key' => array('id', 'tag'),
158 'foreign keys' => array(
159 'table' => 'rules_config',
160 'columns' => array('id' => 'id'),
161 ),
162 );
163 $schema['rules_dependencies'] = array(
164 'fields' => array(
165 'id' => array(
166 'type' => 'int',
167 'unsigned' => TRUE,
168 'not null' => TRUE,
169 'description' => 'The primary identifier of the configuration.',
170 ),
171 'module' => array(
172 'type' => 'varchar',
173 'length' => '255',
174 'not null' => TRUE,
175 'description' => 'The name of the module that is required for the configuration.',
176 ),
177 ),
178 'primary key' => array('id', 'module'),
179 'indexes' => array(
180 'module' => array('module'),
181 ),
182 'foreign keys' => array(
183 'table' => 'rules_config',
184 'columns' => array('id' => 'id'),
185 ),
186 );
187 $schema['cache_rules'] = drupal_get_schema_unprocessed('system', 'cache');
188 $schema['cache_rules']['description'] = 'Cache table for the rules engine to store configured items.';
189 return $schema;
190 }
191
192 /**
193 * Upgrade from Rules 6.x-1.x to 7.x.
194 */
195 function rules_update_7200() {
196 // Create the new db tables first.
197 $schema['rules_config'] = array(
198 'fields' => array(
199 'id' => array(
200 'type' => 'serial',
201 'not null' => TRUE,
202 'description' => 'The internal identifier for any configuration.',
203 ),
204 'name' => array(
205 'type' => 'varchar',
206 'length' => '255',
207 'not null' => TRUE,
208 'description' => 'The name of the configuration.',
209 ),
210 'label' => array(
211 'type' => 'varchar',
212 'length' => '255',
213 'not null' => TRUE,
214 'description' => 'The label of the configuration.',
215 'default' => 'unlabeled',
216 ),
217 'plugin' => array(
218 'type' => 'varchar',
219 'length' => 127,
220 'not null' => TRUE,
221 'description' => 'The name of the plugin of this configuration.',
222 ),
223 'active' => array(
224 'description' => 'Boolean indicating whether the configuration is active. Usage depends on how the using module makes use of it.',
225 'type' => 'int',
226 'not null' => TRUE,
227 'default' => 1,
228 ),
229 'weight' => array(
230 'type' => 'int',
231 'not null' => TRUE,
232 'default' => 0,
233 'size' => 'tiny',
234 'description' => 'Weight of the configuration. Usage depends on how the using module makes use of it.',
235 ),
236 'status' => array(
237 'type' => 'int',
238 'not null' => TRUE,
239 // Set the default to ENTITY_CUSTOM without using the constant as it is
240 // not safe to use it at this point.
241 'default' => 0x01,
242 'size' => 'tiny',
243 'description' => 'The exportable status of the entity.',
244 ),
245 'module' => array(
246 'description' => 'The name of the providing module if the entity has been defined in code.',
247 'type' => 'varchar',
248 'length' => 255,
249 'not null' => FALSE,
250 ),
251 'data' => array(
252 'type' => 'blob',
253 'size' => 'big',
254 'not null' => FALSE,
255 'serialize' => TRUE,
256 'description' => 'Everything else, serialized.',
257 ),
258 ),
259 'primary key' => array('id'),
260 'unique keys' => array(
261 'name' => array('name'),
262 ),
263 );
264 $schema['rules_trigger'] = array(
265 'fields' => array(
266 'id' => array(
267 'type' => 'int',
268 'unsigned' => TRUE,
269 'not null' => TRUE,
270 'description' => 'The primary identifier of the configuration.',
271 ),
272 'event' => array(
273 'type' => 'varchar',
274 'length' => '127',
275 'not null' => TRUE,
276 'default' => '',
277 'description' => 'The name of the event on which the configuration should be triggered.',
278 ),
279 ),
280 'primary key' => array('id', 'event'),
281 'foreign keys' => array(
282 'table' => 'rules_config',
283 'columns' => array('id' => 'id'),
284 ),
285 );
286 db_create_table('rules_config', $schema['rules_config']);
287 db_create_table('rules_trigger', $schema['rules_trigger']);
288 // The cache table already exists, but changed. So re-create it.
289 db_drop_table('cache_rules');
290 $schema['cache_rules'] = drupal_get_schema_unprocessed('system', 'cache');
291 $schema['cache_rules']['description'] = 'Cache table for the rules engine to store configured items.';
292 db_create_table('cache_rules', $schema['cache_rules']);
293 // Remove deprecated variables.
294 variable_del('rules_inactive_sets');
295 variable_del('rules_show_fixed');
296 variable_del('rules_hide_token_message');
297 variable_del('rules_counter');
298
299 return t('The database tables for Rules 2.x have been created. The old tables from Rules 1.x are still available and contain your rules, which are not updated yet.');
300 }
301
302 /**
303 * Add in the exportable entity db columns as required by the entity API.
304 */
305 function rules_update_7201() {
306 // Previously this was update 7200, so check whether we need to run it really.
307 // The update has been moved as 7200 needs to be the 6.x-7.x upgrade.
308 if (!db_field_exists('rules_config', 'status')) {
309 db_add_field('rules_config', 'status', array(
310 'type' => 'int',
311 'not null' => TRUE,
312 'default' => ENTITY_CUSTOM,
313 'size' => 'tiny',
314 'description' => 'The exportable status of the entity.',
315 ));
316 // The module column did already exist before.
317 }
318 }
319
320 /**
321 * Add an index for the rules configuration plugin column.
322 */
323 function rules_update_7202() {
324 db_add_index('rules_config', 'plugin', array('plugin'));
325 }
326
327 /**
328 * Fix the length of the rules_config.name column.
329 */
330 function rules_update_7203() {
331 db_drop_unique_key('rules_config', 'name');
332 $keys = array(
333 'unique keys' => array(
334 'name' => array('name'),
335 ),
336 );
337 db_change_field('rules_config', 'name', 'name', array(
338 'type' => 'varchar',
339 'length' => '64',
340 'not null' => TRUE,
341 'description' => 'The name of the configuration.',
342 ), $keys);
343 }
344
345 /**
346 * Add a table for rules-config tags.
347 */
348 function rules_update_7204() {
349 if (!db_table_exists('rules_tags')) {
350 $schema['rules_tags'] = array(
351 'fields' => array(
352 'id' => array(
353 'type' => 'int',
354 'unsigned' => TRUE,
355 'not null' => TRUE,
356 'description' => 'The primary identifier of the configuration.',
357 ),
358 'tag' => array(
359 'type' => 'varchar',
360 'length' => '255',
361 'not null' => TRUE,
362 'description' => 'The tag string associated with this configuration',
363 ),
364 ),
365 'primary key' => array('id', 'tag'),
366 'foreign keys' => array(
367 'table' => 'rules_config',
368 'columns' => array('id' => 'id'),
369 ),
370 );
371 db_create_table('rules_tags', $schema['rules_tags']);
372 }
373 }
374
375 /**
376 * Add the rules_dependencies table and the rules_config.dirty column.
377 */
378 function rules_update_7205() {
379 if (!db_table_exists('rules_dependencies')) {
380 $schema['rules_dependencies'] = array(
381 'fields' => array(
382 'id' => array(
383 'type' => 'int',
384 'unsigned' => TRUE,
385 'not null' => TRUE,
386 'description' => 'The primary identifier of the configuration.',
387 ),
388 'module' => array(
389 'type' => 'varchar',
390 'length' => '255',
391 'not null' => TRUE,
392 'description' => 'The name of the module that is required for the configuration.',
393 ),
394 ),
395 'primary key' => array('id', 'module'),
396 'indexes' => array(
397 'module' => array('module'),
398 ),
399 'foreign keys' => array(
400 'table' => 'rules_config',
401 'columns' => array('id' => 'id'),
402 ),
403 );
404 db_create_table('rules_dependencies', $schema['rules_dependencies']);
405 }
406 if (!db_field_exists('rules_config', 'dirty')) {
407 db_add_field('rules_config', 'dirty', array(
408 'type' => 'int',
409 'not null' => TRUE,
410 'default' => 0,
411 'size' => 'tiny',
412 ));
413 }
414 }
415
416 /**
417 * Flush all caches.
418 */
419 function rules_update_7206() {
420 // The update system is going to flush all caches anyway, so nothing to do.
421 }
422
423 /**
424 * Flush all caches.
425 */
426 function rules_update_7207() {
427 // The update system is going to flush all caches anyway, so nothing to do.
428 }
429
430 /**
431 * Flush all caches to update the data_is_empty condition info.
432 */
433 function rules_update_7208() {
434 // The update system is going to flush all caches anyway, so nothing to do.
435 }
436
437 /**
438 * Creates a flag that enables a permission for using components.
439 */
440 function rules_update_7209() {
441 // Create a access exposed flag column.
442 db_add_field('rules_config', 'access_exposed', array(
443 'type' => 'int',
444 'not null' => TRUE,
445 'default' => 0,
446 'size' => 'tiny',
447 'description' => 'Whether to use a permission to control access for using components.',
448 ));
449 }
450
451 /**
452 * Deletes the unused rules_empty_sets variable.
453 */
454 function rules_update_7210() {
455 variable_del('rules_empty_sets');
456 }
457
458 /**
459 * Creates the "owner" column.
460 */
461 function rules_update_7211() {
462 // Create a owner column.
463 db_add_field('rules_config', 'owner', array(
464 'description' => 'The name of the module via which the rule has been configured.',
465 'type' => 'varchar',
466 'length' => 255,
467 'not null' => TRUE,
468 'default' => 'rules',
469 ));
470 }