1 |
85ad3d82
|
Assos Assos
|
<?php
|
2 |
|
|
/**
|
3 |
|
|
* @file
|
4 |
|
|
* Install, update and uninstall functions for the computed field module.
|
5 |
|
|
*/
|
6 |
|
|
|
7 |
|
|
/**
|
8 |
ebcc4118
|
Assos Assos
|
* Implements hook_field_schema().
|
9 |
85ad3d82
|
Assos Assos
|
*/
|
10 |
|
|
function computed_field_field_schema($field) {
|
11 |
|
|
if ($field['type'] == 'computed') {
|
12 |
|
|
$settings = $field['settings'];
|
13 |
ebcc4118
|
Assos Assos
|
|
14 |
85ad3d82
|
Assos Assos
|
if ($settings['store']) {
|
15 |
|
|
$columns = array('value' => array());
|
16 |
ebcc4118
|
Assos Assos
|
|
17 |
|
|
// Hardcoded 'longtext' settings.
|
18 |
85ad3d82
|
Assos Assos
|
if ($settings['database']['data_type'] == 'longtext') {
|
19 |
|
|
$columns['value']['type'] = 'text';
|
20 |
|
|
$columns['value']['size'] = 'big';
|
21 |
|
|
}
|
22 |
|
|
else {
|
23 |
|
|
$columns['value']['type'] = isset($settings['database']['data_type']) ? $settings['database']['data_type'] : 'varchar';
|
24 |
|
|
}
|
25 |
ebcc4118
|
Assos Assos
|
// 'text' and 'varchar' fields get length settings.
|
26 |
85ad3d82
|
Assos Assos
|
if ($settings['database']['data_type'] == 'text' || $settings['database']['data_type'] == 'varchar') {
|
27 |
|
|
$columns['value']['length'] = isset($settings['database']['data_length']) ? $settings['database']['data_length'] : 32;
|
28 |
|
|
}
|
29 |
ebcc4118
|
Assos Assos
|
// 'int' and 'float' fields get size settings.
|
30 |
85ad3d82
|
Assos Assos
|
if ($settings['database']['data_type'] == 'int' || $settings['database']['data_type'] == 'float') {
|
31 |
|
|
$columns['value']['size'] = isset($settings['database']['data_size']) ? $settings['database']['data_size'] : 'normal';
|
32 |
|
|
}
|
33 |
ebcc4118
|
Assos Assos
|
// 'decimal' fields get precision and scale settings.
|
34 |
85ad3d82
|
Assos Assos
|
if ($settings['database']['data_type'] == 'numeric') {
|
35 |
|
|
$columns['value']['precision'] = isset($settings['database']['data_precision']) ? $settings['database']['data_precision'] : 10;
|
36 |
|
|
$columns['value']['scale'] = isset($settings['database']['data_scale']) ? $settings['database']['data_scale'] : 2;
|
37 |
|
|
}
|
38 |
ebcc4118
|
Assos Assos
|
// Add 'not null' settings.
|
39 |
85ad3d82
|
Assos Assos
|
$columns['value']['not null'] = isset($settings['database']['data_not_NULL']) ? $settings['database']['data_not_NULL'] : TRUE;
|
40 |
ebcc4118
|
Assos Assos
|
// Add default values if set.
|
41 |
|
|
if ($settings['database']['data_default'] !== '') {
|
42 |
85ad3d82
|
Assos Assos
|
$columns['value']['default'] = $settings['database']['data_default'];
|
43 |
|
|
}
|
44 |
ebcc4118
|
Assos Assos
|
// Add a simple index on the data if requested (except 'text' fields).
|
45 |
|
|
if ($settings['database']['data_index'] && $columns['value']['type'] != 'text') {
|
46 |
|
|
$indexes = array('value' => array('value'));
|
47 |
85ad3d82
|
Assos Assos
|
}
|
48 |
|
|
}
|
49 |
|
|
}
|
50 |
ebcc4118
|
Assos Assos
|
|
51 |
85ad3d82
|
Assos Assos
|
if (isset($columns) && isset($indexes)) {
|
52 |
|
|
return array(
|
53 |
|
|
'columns' => $columns,
|
54 |
|
|
'indexes' => $indexes,
|
55 |
|
|
);
|
56 |
|
|
}
|
57 |
|
|
elseif (isset($columns)) {
|
58 |
|
|
return array(
|
59 |
|
|
'columns' => $columns,
|
60 |
|
|
);
|
61 |
|
|
}
|
62 |
ebcc4118
|
Assos Assos
|
return;
|
63 |
85ad3d82
|
Assos Assos
|
} |