Project

General

Profile

Paste
Download (2.42 KB) Statistics
| Branch: | Revision:

root / drupal7 / sites / all / modules / computed_field / computed_field.install @ ebcc4118

1
<?php
2
/**
3
 * @file
4
 * Install, update and uninstall functions for the computed field module.
5
 */
6

    
7
/**
8
 * Implements hook_field_schema().
9
 */
10
function computed_field_field_schema($field) {
11
  if ($field['type'] == 'computed') {
12
    $settings = $field['settings'];
13

    
14
    if ($settings['store']) {
15
      $columns = array('value' => array());
16

    
17
      // Hardcoded 'longtext' settings.
18
      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
      // 'text' and 'varchar' fields get length settings.
26
      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
      // 'int' and 'float' fields get size settings.
30
      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
      // 'decimal' fields get precision and scale settings.
34
      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
      // Add 'not null' settings.
39
      $columns['value']['not null'] = isset($settings['database']['data_not_NULL']) ? $settings['database']['data_not_NULL'] : TRUE;
40
      // Add default values if set.
41
      if ($settings['database']['data_default'] !== '') {
42
        $columns['value']['default'] = $settings['database']['data_default'];
43
      }
44
      // 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
      }
48
    }
49
  }
50

    
51
  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
  return;
63
}