danielebarchiesi@0
|
1 <?php
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3 /**
|
danielebarchiesi@0
|
4 * @file
|
danielebarchiesi@0
|
5 * Contains install and update functions for ctools.
|
danielebarchiesi@0
|
6 */
|
danielebarchiesi@0
|
7
|
danielebarchiesi@0
|
8 /**
|
danielebarchiesi@0
|
9 * Use requirements to ensure that the CTools CSS cache directory can be
|
danielebarchiesi@0
|
10 * created and that the PHP version requirement is met.
|
danielebarchiesi@0
|
11 */
|
danielebarchiesi@0
|
12 function ctools_requirements($phase) {
|
danielebarchiesi@0
|
13 $requirements = array();
|
danielebarchiesi@0
|
14 if ($phase == 'runtime') {
|
danielebarchiesi@0
|
15 $requirements['ctools_css_cache'] = array(
|
danielebarchiesi@0
|
16 'title' => t('CTools CSS Cache'),
|
danielebarchiesi@0
|
17 'severity' => REQUIREMENT_OK,
|
danielebarchiesi@0
|
18 'value' => t('Exists'),
|
danielebarchiesi@0
|
19 );
|
danielebarchiesi@0
|
20
|
danielebarchiesi@0
|
21 $path = 'public://ctools/css';
|
danielebarchiesi@0
|
22 if (!file_prepare_directory($path, FILE_CREATE_DIRECTORY)) {
|
danielebarchiesi@0
|
23 $requirements['ctools_css_cache']['description'] = t('The CTools CSS cache directory, %path could not be created due to a misconfigured files directory. Please ensure that the files directory is correctly configured and that the webserver has permission to create directories.', array('%path' => file_uri_target($path)));
|
danielebarchiesi@0
|
24 $requirements['ctools_css_cache']['severity'] = REQUIREMENT_ERROR;
|
danielebarchiesi@0
|
25 $requirements['ctools_css_cache']['value'] = t('Unable to create');
|
danielebarchiesi@0
|
26 }
|
danielebarchiesi@0
|
27
|
danielebarchiesi@0
|
28 if (!function_exists('error_get_last')) {
|
danielebarchiesi@0
|
29 $requirements['ctools_php_52']['title'] = t('CTools PHP requirements');
|
danielebarchiesi@0
|
30 $requirements['ctools_php_52']['description'] = t('CTools requires certain features only available in PHP 5.2.0 or higher.');
|
danielebarchiesi@0
|
31 $requirements['ctools_php_52']['severity'] = REQUIREMENT_WARNING;
|
danielebarchiesi@0
|
32 $requirements['ctools_php_52']['value'] = t('PHP !version', array('!version' => phpversion()));
|
danielebarchiesi@0
|
33 }
|
danielebarchiesi@0
|
34 }
|
danielebarchiesi@0
|
35
|
danielebarchiesi@0
|
36 return $requirements;
|
danielebarchiesi@0
|
37 }
|
danielebarchiesi@0
|
38
|
danielebarchiesi@0
|
39 /**
|
danielebarchiesi@0
|
40 * Implements hook_schemea
|
danielebarchiesi@0
|
41 */
|
danielebarchiesi@0
|
42 function ctools_schema() {
|
danielebarchiesi@0
|
43 return ctools_schema_2();
|
danielebarchiesi@0
|
44 }
|
danielebarchiesi@0
|
45
|
danielebarchiesi@0
|
46 /**
|
danielebarchiesi@0
|
47 * Version 2 of the CTools schema.
|
danielebarchiesi@0
|
48 */
|
danielebarchiesi@0
|
49 function ctools_schema_2() {
|
danielebarchiesi@0
|
50 $schema = ctools_schema_1();
|
danielebarchiesi@0
|
51
|
danielebarchiesi@0
|
52 // update the 'name' field to be 128 bytes long:
|
danielebarchiesi@0
|
53 $schema['ctools_object_cache']['fields']['name']['length'] = 128;
|
danielebarchiesi@0
|
54
|
danielebarchiesi@0
|
55 // Update the 'data' field to be type 'blob'.
|
danielebarchiesi@0
|
56 $schema['ctools_object_cache']['fields']['data'] = array(
|
danielebarchiesi@0
|
57 'type' => 'blob',
|
danielebarchiesi@0
|
58 'size' => 'big',
|
danielebarchiesi@0
|
59 'description' => 'Serialized data being stored.',
|
danielebarchiesi@0
|
60 'serialize' => TRUE,
|
danielebarchiesi@0
|
61 );
|
danielebarchiesi@0
|
62
|
danielebarchiesi@0
|
63 // DO NOT MODIFY THIS TABLE -- this definition is used to create the table.
|
danielebarchiesi@0
|
64 // Changes to this table must be made in schema_3 or higher.
|
danielebarchiesi@0
|
65 $schema['ctools_css_cache'] = array(
|
danielebarchiesi@0
|
66 'description' => 'A special cache used to store CSS that must be non-volatile.',
|
danielebarchiesi@0
|
67 'fields' => array(
|
danielebarchiesi@0
|
68 'cid' => array(
|
danielebarchiesi@0
|
69 'type' => 'varchar',
|
danielebarchiesi@0
|
70 'length' => '128',
|
danielebarchiesi@0
|
71 'description' => 'The CSS ID this cache object belongs to.',
|
danielebarchiesi@0
|
72 'not null' => TRUE,
|
danielebarchiesi@0
|
73 ),
|
danielebarchiesi@0
|
74 'filename' => array(
|
danielebarchiesi@0
|
75 'type' => 'varchar',
|
danielebarchiesi@0
|
76 'length' => '255',
|
danielebarchiesi@0
|
77 'description' => 'The filename this CSS is stored in.',
|
danielebarchiesi@0
|
78 ),
|
danielebarchiesi@0
|
79 'css' => array(
|
danielebarchiesi@0
|
80 'type' => 'text',
|
danielebarchiesi@0
|
81 'size' => 'big',
|
danielebarchiesi@0
|
82 'description' => 'CSS being stored.',
|
danielebarchiesi@0
|
83 'serialize' => TRUE,
|
danielebarchiesi@0
|
84 ),
|
danielebarchiesi@0
|
85 'filter' => array(
|
danielebarchiesi@0
|
86 'type' => 'int',
|
danielebarchiesi@0
|
87 'size' => 'tiny',
|
danielebarchiesi@0
|
88 'description' => 'Whether or not this CSS needs to be filtered.',
|
danielebarchiesi@0
|
89 ),
|
danielebarchiesi@0
|
90 ),
|
danielebarchiesi@0
|
91 'primary key' => array('cid'),
|
danielebarchiesi@0
|
92 );
|
danielebarchiesi@0
|
93
|
danielebarchiesi@0
|
94 return $schema;
|
danielebarchiesi@0
|
95 }
|
danielebarchiesi@0
|
96
|
danielebarchiesi@0
|
97 /**
|
danielebarchiesi@0
|
98 * CTools' initial schema; separated for the purposes of updates.
|
danielebarchiesi@0
|
99 *
|
danielebarchiesi@0
|
100 * DO NOT MAKE CHANGES HERE. This schema version is locked.
|
danielebarchiesi@0
|
101 */
|
danielebarchiesi@0
|
102 function ctools_schema_1() {
|
danielebarchiesi@0
|
103 $schema['ctools_object_cache'] = array(
|
danielebarchiesi@0
|
104 'description' => t('A special cache used to store objects that are being edited; it serves to save state in an ordinarily stateless environment.'),
|
danielebarchiesi@0
|
105 'fields' => array(
|
danielebarchiesi@0
|
106 'sid' => array(
|
danielebarchiesi@0
|
107 'type' => 'varchar',
|
danielebarchiesi@0
|
108 'length' => '64',
|
danielebarchiesi@0
|
109 'not null' => TRUE,
|
danielebarchiesi@0
|
110 'description' => 'The session ID this cache object belongs to.',
|
danielebarchiesi@0
|
111 ),
|
danielebarchiesi@0
|
112 'name' => array(
|
danielebarchiesi@0
|
113 'type' => 'varchar',
|
danielebarchiesi@0
|
114 'length' => '32',
|
danielebarchiesi@0
|
115 'not null' => TRUE,
|
danielebarchiesi@0
|
116 'description' => 'The name of the object this cache is attached to.',
|
danielebarchiesi@0
|
117 ),
|
danielebarchiesi@0
|
118 'obj' => array(
|
danielebarchiesi@0
|
119 'type' => 'varchar',
|
danielebarchiesi@0
|
120 'length' => '32',
|
danielebarchiesi@0
|
121 'not null' => TRUE,
|
danielebarchiesi@0
|
122 'description' => 'The type of the object this cache is attached to; this essentially represents the owner so that several sub-systems can use this cache.',
|
danielebarchiesi@0
|
123 ),
|
danielebarchiesi@0
|
124 'updated' => array(
|
danielebarchiesi@0
|
125 'type' => 'int',
|
danielebarchiesi@0
|
126 'unsigned' => TRUE,
|
danielebarchiesi@0
|
127 'not null' => TRUE,
|
danielebarchiesi@0
|
128 'default' => 0,
|
danielebarchiesi@0
|
129 'description' => 'The time this cache was created or updated.',
|
danielebarchiesi@0
|
130 ),
|
danielebarchiesi@0
|
131 'data' => array(
|
danielebarchiesi@0
|
132 'type' => 'text',
|
danielebarchiesi@0
|
133 'size' => 'big',
|
danielebarchiesi@0
|
134 'description' => 'Serialized data being stored.',
|
danielebarchiesi@0
|
135 'serialize' => TRUE,
|
danielebarchiesi@0
|
136 ),
|
danielebarchiesi@0
|
137 ),
|
danielebarchiesi@0
|
138 'primary key' => array('sid', 'obj', 'name'),
|
danielebarchiesi@0
|
139 'indexes' => array('updated' => array('updated')),
|
danielebarchiesi@0
|
140 );
|
danielebarchiesi@0
|
141 return $schema;
|
danielebarchiesi@0
|
142 }
|
danielebarchiesi@0
|
143
|
danielebarchiesi@0
|
144 /**
|
danielebarchiesi@0
|
145 * Enlarge the ctools_object_cache.name column to prevent truncation and weird
|
danielebarchiesi@0
|
146 * errors.
|
danielebarchiesi@0
|
147 */
|
danielebarchiesi@0
|
148 function ctools_update_6001() {
|
danielebarchiesi@0
|
149 // Perform updates like this to reduce code duplication.
|
danielebarchiesi@0
|
150 $schema = ctools_schema_2();
|
danielebarchiesi@0
|
151
|
danielebarchiesi@0
|
152 db_change_field('ctools_object_cache', 'name', 'name', $schema['ctools_object_cache']['fields']['name']);
|
danielebarchiesi@0
|
153 }
|
danielebarchiesi@0
|
154
|
danielebarchiesi@0
|
155 /**
|
danielebarchiesi@0
|
156 * Add the new css cache table.
|
danielebarchiesi@0
|
157 */
|
danielebarchiesi@0
|
158 function ctools_update_6002() {
|
danielebarchiesi@0
|
159 // Schema 2 is locked and should not be changed.
|
danielebarchiesi@0
|
160 $schema = ctools_schema_2();
|
danielebarchiesi@0
|
161
|
danielebarchiesi@0
|
162 db_create_table('ctools_css_cache', $schema['ctools_css_cache']);
|
danielebarchiesi@0
|
163 }
|
danielebarchiesi@0
|
164
|
danielebarchiesi@0
|
165 /**
|
danielebarchiesi@0
|
166 * Take over for the panels_views module if it was on.
|
danielebarchiesi@0
|
167 */
|
danielebarchiesi@0
|
168 function ctools_update_6003() {
|
danielebarchiesi@0
|
169 $result = db_query('SELECT status FROM {system} WHERE name = :name', array(':name' => 'panels_views'))->fetchField();
|
danielebarchiesi@0
|
170 if ($result) {
|
danielebarchiesi@0
|
171 db_delete('system')->condition('name', 'panels_views')->execute();
|
danielebarchiesi@0
|
172 module_enable(array('views_content'), TRUE);
|
danielebarchiesi@0
|
173 }
|
danielebarchiesi@0
|
174 }
|
danielebarchiesi@0
|
175
|
danielebarchiesi@0
|
176 /**
|
danielebarchiesi@0
|
177 * Add primary key to the ctools_object_cache table.
|
danielebarchiesi@0
|
178 */
|
danielebarchiesi@0
|
179 function ctools_update_6004() {
|
danielebarchiesi@0
|
180 db_add_primary_key('ctools_object_cache', array('sid', 'obj', 'name'));
|
danielebarchiesi@0
|
181 db_drop_index('ctools_object_cache', 'sid_obj_name');
|
danielebarchiesi@0
|
182 }
|
danielebarchiesi@0
|
183
|
danielebarchiesi@0
|
184 /**
|
danielebarchiesi@0
|
185 * Removed update.
|
danielebarchiesi@0
|
186 */
|
danielebarchiesi@0
|
187 function ctools_update_6005() {
|
danielebarchiesi@0
|
188 return array();
|
danielebarchiesi@0
|
189 }
|
danielebarchiesi@0
|
190
|
danielebarchiesi@0
|
191 /**
|
danielebarchiesi@0
|
192 * ctools_custom_content table was originally here, but is now moved to
|
danielebarchiesi@0
|
193 * its own module.
|
danielebarchiesi@0
|
194 */
|
danielebarchiesi@0
|
195 function ctools_update_6007() {
|
danielebarchiesi@0
|
196 $ret = array();
|
danielebarchiesi@0
|
197 if (db_table_exists('ctools_custom_content')) {
|
danielebarchiesi@0
|
198 // Enable the module to make everything as seamless as possible.
|
danielebarchiesi@0
|
199 module_enable(array('ctools_custom_content'), TRUE);
|
danielebarchiesi@0
|
200 }
|
danielebarchiesi@0
|
201
|
danielebarchiesi@0
|
202 return $ret;
|
danielebarchiesi@0
|
203 }
|
danielebarchiesi@0
|
204
|
danielebarchiesi@0
|
205 /**
|
danielebarchiesi@0
|
206 * ctools_object_cache needs to be defined as a blob.
|
danielebarchiesi@0
|
207 */
|
danielebarchiesi@0
|
208 function ctools_update_6008() {
|
danielebarchiesi@0
|
209 db_delete('ctools_object_cache')
|
danielebarchiesi@0
|
210 ->execute();
|
danielebarchiesi@0
|
211
|
danielebarchiesi@0
|
212 db_change_field('ctools_object_cache', 'data', 'data', array(
|
danielebarchiesi@0
|
213 'type' => 'blob',
|
danielebarchiesi@0
|
214 'size' => 'big',
|
danielebarchiesi@0
|
215 'description' => 'Serialized data being stored.',
|
danielebarchiesi@0
|
216 'serialize' => TRUE,
|
danielebarchiesi@0
|
217 )
|
danielebarchiesi@0
|
218 );
|
danielebarchiesi@0
|
219 }
|