Mercurial > hg > drupalISMI
comparison openmindattribute/openmindattribute.install @ 0:124ef8f3b22d
initial
author | Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de> |
---|---|
date | Fri, 27 Mar 2015 19:21:42 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:124ef8f3b22d |
---|---|
1 <?php | |
2 | |
3 /** | |
4 * @file | |
5 * Install file for the openmindattribute module. | |
6 */ | |
7 | |
8 /** | |
9 * Upgrade notes: | |
10 * Things we need to make sure work when upgrading from Drupal 6 to Drupal 7: | |
11 */ | |
12 | |
13 /** | |
14 * Implements hook_field_schema(). | |
15 */ | |
16 function openmindattribute_field_schema($field) { | |
17 return array( | |
18 'columns' => array( | |
19 'name' => array( | |
20 'type' => 'varchar', | |
21 // Maximum URLs length. | |
22 'length' => 2048, | |
23 'not null' => FALSE, | |
24 'sortable' => TRUE, | |
25 ), | |
26 'ov' => array( | |
27 'type' => 'text', | |
28 'not null' => FALSE, | |
29 'sortable' => TRUE, | |
30 ), | |
31 'nov' => array( | |
32 'type' => 'text', | |
33 'not null' => FALSE, | |
34 'sortable' => TRUE, | |
35 ), | |
36 'romanization' => array( | |
37 'type' => 'text', | |
38 'not null' => FALSE, | |
39 'sortable' => TRUE, | |
40 ), | |
41 ), | |
42 ); | |
43 } | |
44 | |
45 /** | |
46 * Implements hook_update_last_removed(). | |
47 */ | |
48 function openmindattribute_update_last_removed() { | |
49 return 6001; | |
50 } | |
51 | |
52 | |
53 //* add field romanization *// | |
54 function openmindattribute_update_7230(&$sandbox) { | |
55 $fields = field_info_fields(); | |
56 foreach ($fields as $field_name => $field) { | |
57 dpm($field['type']); | |
58 dpm($field_name); | |
59 dpm("---"); | |
60 if (($field['type'] == 'openmindattribute_fields' || $field['type'] == 'openmindattribute_field') && $field['storage']['type'] == 'field_sql_storage') { | |
61 $schema = openmindattribute_field_schema($field); | |
62 | |
63 foreach ($field['storage']['details']['sql'] as $type => $table_info) { | |
64 foreach ($table_info as $table_name => $columns) { | |
65 try { | |
66 | |
67 $column_name = _field_sql_storage_columnname($field_name, 'romanization'); | |
68 | |
69 dpm($field_name); | |
70 dpm($column_name); | |
71 db_add_field($table_name, $column_name, $schema['columns']['name']); | |
72 db_add_index($table_name, $column_name, array($column_name)); | |
73 } | |
74 catch (Exception $e) | |
75 { | |
76 dpm("error"); | |
77 dpm($table_name); | |
78 } | |
79 } | |
80 } | |
81 } | |
82 } | |
83 field_cache_clear(); | |
84 } | |
85 | |
86 | |
87 /** | |
88 * Handles moving settings data from field_config.data to field_config_instance.data. | |
89 */ | |
90 function openmindattribute_update_7010() { | |
91 | |
92 // For each field that is a openmindattribute field, we need to copy the settings from the general field level down to the instance. | |
93 //$field_data = array(); | |
94 $result = db_query("SELECT id, field_name, data FROM {field_config} WHERE module = 'openmindattribute' AND type = 'openmindattribute_field'"); | |
95 foreach ($result as $field) { | |
96 $field_id = $field->id; | |
97 $name = $field->field_name; | |
98 $field_data = unserialize($field->data); | |
99 | |
100 $instances = db_query("SELECT id, data FROM {field_config_instance} WHERE field_id = :field_id", array(':field_id' => $field_id)); | |
101 foreach ($instances as $instance) { | |
102 // If this field has been updated already, we want to skip it. | |
103 $instance_data = unserialize($instance->data); | |
104 $update_instance = FALSE; | |
105 if (!isset($instance_data['settings']['title'])) { | |
106 foreach ($field_data['settings'] as $key => $value) { | |
107 if (!isset($instance_data['settings'][$key])) { | |
108 $instance_data['settings'][$key] = $value; | |
109 $update_instance = TRUE; | |
110 } | |
111 } | |
112 if ($update_instance) { | |
113 // update the database. | |
114 $num_updated = db_update('field_config_instance') | |
115 ->fields(array('data' => serialize($instance_data))) | |
116 ->condition('id', $instance->id) | |
117 ->execute(); | |
118 } | |
119 } | |
120 } | |
121 } | |
122 | |
123 return t("Instance settings have been set with the data from the field settings."); | |
124 } | |
125 | |
126 /** | |
127 * Renames all displays from foobar to openmindattribute_foobar | |
128 */ | |
129 function openmindattribute_update_7001() { | |
130 // Update the display type for each openmindattribute field type. | |
131 $result = db_query("SELECT id, field_name, data FROM {field_config} WHERE module = 'openmindattribute' AND type = 'openmindattribute_field'"); | |
132 foreach ($result as $field) { | |
133 $field_id = $field->id; | |
134 $name = $field->field_name; | |
135 $field_data = unserialize($field->data); | |
136 | |
137 $instances = db_query("SELECT id, data FROM {field_config_instance} WHERE field_id = :field_id", array(':field_id' => $field_id)); | |
138 foreach ($instances as $instance) { | |
139 // If this field has been updated already, we want to skip it. | |
140 $instance_data = unserialize($instance->data); | |
141 $update_instance = FALSE; | |
142 foreach ($instance_data['display'] as $display_name => $display_data) { | |
143 if ($display_data['type'] && (0 !== strpos($display_data['type'], 'openmindattribute_'))) { | |
144 $instance_data['display'][$display_name]['type'] = 'openmindattribute_' . $display_data['type']; | |
145 $update_instance = TRUE; | |
146 } | |
147 } | |
148 if ($update_instance) { | |
149 db_update('field_config_instance') | |
150 ->fields(array('data' => serialize($instance_data))) | |
151 ->condition('id', $instance->id) | |
152 ->execute(); | |
153 } | |
154 } | |
155 } | |
156 } |