danielebarchiesi@0
|
1 <?php
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3 /**
|
danielebarchiesi@0
|
4 * @file
|
danielebarchiesi@0
|
5 * Install, update and uninstall functions for the image module.
|
danielebarchiesi@0
|
6 */
|
danielebarchiesi@0
|
7
|
danielebarchiesi@0
|
8 /**
|
danielebarchiesi@0
|
9 * Implements hook_install().
|
danielebarchiesi@0
|
10 */
|
danielebarchiesi@0
|
11 function image_install() {
|
danielebarchiesi@0
|
12 // Create the styles directory and ensure it's writable.
|
danielebarchiesi@0
|
13 $directory = file_default_scheme() . '://styles';
|
danielebarchiesi@0
|
14 file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
|
danielebarchiesi@0
|
15 }
|
danielebarchiesi@0
|
16
|
danielebarchiesi@0
|
17 /**
|
danielebarchiesi@0
|
18 * Implements hook_uninstall().
|
danielebarchiesi@0
|
19 */
|
danielebarchiesi@0
|
20 function image_uninstall() {
|
danielebarchiesi@0
|
21 // Remove the styles directory and generated images.
|
danielebarchiesi@0
|
22 file_unmanaged_delete_recursive(file_default_scheme() . '://styles');
|
danielebarchiesi@0
|
23 }
|
danielebarchiesi@0
|
24
|
danielebarchiesi@0
|
25 /**
|
danielebarchiesi@0
|
26 * Implements hook_schema().
|
danielebarchiesi@0
|
27 */
|
danielebarchiesi@0
|
28 function image_schema() {
|
danielebarchiesi@0
|
29 $schema = array();
|
danielebarchiesi@0
|
30
|
danielebarchiesi@0
|
31 $schema['cache_image'] = drupal_get_schema_unprocessed('system', 'cache');
|
danielebarchiesi@0
|
32 $schema['cache_image']['description'] = 'Cache table used to store information about image manipulations that are in-progress.';
|
danielebarchiesi@0
|
33
|
danielebarchiesi@0
|
34 $schema['image_styles'] = array(
|
danielebarchiesi@0
|
35 'description' => 'Stores configuration options for image styles.',
|
danielebarchiesi@0
|
36 'fields' => array(
|
danielebarchiesi@0
|
37 'isid' => array(
|
danielebarchiesi@0
|
38 'description' => 'The primary identifier for an image style.',
|
danielebarchiesi@0
|
39 'type' => 'serial',
|
danielebarchiesi@0
|
40 'unsigned' => TRUE,
|
danielebarchiesi@0
|
41 'not null' => TRUE,
|
danielebarchiesi@0
|
42 ),
|
danielebarchiesi@0
|
43 'name' => array(
|
danielebarchiesi@0
|
44 'description' => 'The style machine name.',
|
danielebarchiesi@0
|
45 'type' => 'varchar',
|
danielebarchiesi@0
|
46 'length' => 255,
|
danielebarchiesi@0
|
47 'not null' => TRUE,
|
danielebarchiesi@0
|
48 ),
|
danielebarchiesi@0
|
49 'label' => array(
|
danielebarchiesi@0
|
50 'description' => 'The style administrative name.',
|
danielebarchiesi@0
|
51 'type' => 'varchar',
|
danielebarchiesi@0
|
52 'length' => 255,
|
danielebarchiesi@0
|
53 'not null' => TRUE,
|
danielebarchiesi@0
|
54 'default' => '',
|
danielebarchiesi@0
|
55 ),
|
danielebarchiesi@0
|
56 ),
|
danielebarchiesi@0
|
57 'primary key' => array('isid'),
|
danielebarchiesi@0
|
58 'unique keys' => array(
|
danielebarchiesi@0
|
59 'name' => array('name'),
|
danielebarchiesi@0
|
60 ),
|
danielebarchiesi@0
|
61 );
|
danielebarchiesi@0
|
62
|
danielebarchiesi@0
|
63 $schema['image_effects'] = array(
|
danielebarchiesi@0
|
64 'description' => 'Stores configuration options for image effects.',
|
danielebarchiesi@0
|
65 'fields' => array(
|
danielebarchiesi@0
|
66 'ieid' => array(
|
danielebarchiesi@0
|
67 'description' => 'The primary identifier for an image effect.',
|
danielebarchiesi@0
|
68 'type' => 'serial',
|
danielebarchiesi@0
|
69 'unsigned' => TRUE,
|
danielebarchiesi@0
|
70 'not null' => TRUE,
|
danielebarchiesi@0
|
71 ),
|
danielebarchiesi@0
|
72 'isid' => array(
|
danielebarchiesi@0
|
73 'description' => 'The {image_styles}.isid for an image style.',
|
danielebarchiesi@0
|
74 'type' => 'int',
|
danielebarchiesi@0
|
75 'unsigned' => TRUE,
|
danielebarchiesi@0
|
76 'not null' => TRUE,
|
danielebarchiesi@0
|
77 'default' => 0,
|
danielebarchiesi@0
|
78 ),
|
danielebarchiesi@0
|
79 'weight' => array(
|
danielebarchiesi@0
|
80 'description' => 'The weight of the effect in the style.',
|
danielebarchiesi@0
|
81 'type' => 'int',
|
danielebarchiesi@0
|
82 'unsigned' => FALSE,
|
danielebarchiesi@0
|
83 'not null' => TRUE,
|
danielebarchiesi@0
|
84 'default' => 0,
|
danielebarchiesi@0
|
85 ),
|
danielebarchiesi@0
|
86 'name' => array(
|
danielebarchiesi@0
|
87 'description' => 'The unique name of the effect to be executed.',
|
danielebarchiesi@0
|
88 'type' => 'varchar',
|
danielebarchiesi@0
|
89 'length' => 255,
|
danielebarchiesi@0
|
90 'not null' => TRUE,
|
danielebarchiesi@0
|
91 ),
|
danielebarchiesi@0
|
92 'data' => array(
|
danielebarchiesi@0
|
93 'description' => 'The configuration data for the effect.',
|
danielebarchiesi@0
|
94 'type' => 'blob',
|
danielebarchiesi@0
|
95 'not null' => TRUE,
|
danielebarchiesi@0
|
96 'size' => 'big',
|
danielebarchiesi@0
|
97 'serialize' => TRUE,
|
danielebarchiesi@0
|
98 ),
|
danielebarchiesi@0
|
99 ),
|
danielebarchiesi@0
|
100 'primary key' => array('ieid'),
|
danielebarchiesi@0
|
101 'indexes' => array(
|
danielebarchiesi@0
|
102 'isid' => array('isid'),
|
danielebarchiesi@0
|
103 'weight' => array('weight'),
|
danielebarchiesi@0
|
104 ),
|
danielebarchiesi@0
|
105 'foreign keys' => array(
|
danielebarchiesi@0
|
106 'image_style' => array(
|
danielebarchiesi@0
|
107 'table' => 'image_styles',
|
danielebarchiesi@0
|
108 'columns' => array('isid' => 'isid'),
|
danielebarchiesi@0
|
109 ),
|
danielebarchiesi@0
|
110 ),
|
danielebarchiesi@0
|
111 );
|
danielebarchiesi@0
|
112
|
danielebarchiesi@0
|
113 return $schema;
|
danielebarchiesi@0
|
114 }
|
danielebarchiesi@0
|
115
|
danielebarchiesi@0
|
116 /**
|
danielebarchiesi@0
|
117 * Implements hook_field_schema().
|
danielebarchiesi@0
|
118 */
|
danielebarchiesi@0
|
119 function image_field_schema($field) {
|
danielebarchiesi@0
|
120 return array(
|
danielebarchiesi@0
|
121 'columns' => array(
|
danielebarchiesi@0
|
122 'fid' => array(
|
danielebarchiesi@0
|
123 'description' => 'The {file_managed}.fid being referenced in this field.',
|
danielebarchiesi@0
|
124 'type' => 'int',
|
danielebarchiesi@0
|
125 'not null' => FALSE,
|
danielebarchiesi@0
|
126 'unsigned' => TRUE,
|
danielebarchiesi@0
|
127 ),
|
danielebarchiesi@0
|
128 'alt' => array(
|
danielebarchiesi@0
|
129 'description' => "Alternative image text, for the image's 'alt' attribute.",
|
danielebarchiesi@0
|
130 'type' => 'varchar',
|
danielebarchiesi@0
|
131 'length' => 512,
|
danielebarchiesi@0
|
132 'not null' => FALSE,
|
danielebarchiesi@0
|
133 ),
|
danielebarchiesi@0
|
134 'title' => array(
|
danielebarchiesi@0
|
135 'description' => "Image title text, for the image's 'title' attribute.",
|
danielebarchiesi@0
|
136 'type' => 'varchar',
|
danielebarchiesi@0
|
137 'length' => 1024,
|
danielebarchiesi@0
|
138 'not null' => FALSE,
|
danielebarchiesi@0
|
139 ),
|
danielebarchiesi@0
|
140 'width' => array(
|
danielebarchiesi@0
|
141 'description' => 'The width of the image in pixels.',
|
danielebarchiesi@0
|
142 'type' => 'int',
|
danielebarchiesi@0
|
143 'unsigned' => TRUE,
|
danielebarchiesi@0
|
144 ),
|
danielebarchiesi@0
|
145 'height' => array(
|
danielebarchiesi@0
|
146 'description' => 'The height of the image in pixels.',
|
danielebarchiesi@0
|
147 'type' => 'int',
|
danielebarchiesi@0
|
148 'unsigned' => TRUE,
|
danielebarchiesi@0
|
149 ),
|
danielebarchiesi@0
|
150 ),
|
danielebarchiesi@0
|
151 'indexes' => array(
|
danielebarchiesi@0
|
152 'fid' => array('fid'),
|
danielebarchiesi@0
|
153 ),
|
danielebarchiesi@0
|
154 'foreign keys' => array(
|
danielebarchiesi@0
|
155 'fid' => array(
|
danielebarchiesi@0
|
156 'table' => 'file_managed',
|
danielebarchiesi@0
|
157 'columns' => array('fid' => 'fid'),
|
danielebarchiesi@0
|
158 ),
|
danielebarchiesi@0
|
159 ),
|
danielebarchiesi@0
|
160 );
|
danielebarchiesi@0
|
161 }
|
danielebarchiesi@0
|
162
|
danielebarchiesi@0
|
163 /**
|
danielebarchiesi@0
|
164 * Implements hook_update_dependencies().
|
danielebarchiesi@0
|
165 */
|
danielebarchiesi@0
|
166 function image_update_dependencies() {
|
danielebarchiesi@0
|
167 $dependencies['image'][7002] = array(
|
danielebarchiesi@0
|
168 // Image update 7002 uses field API functions, so must run after
|
danielebarchiesi@0
|
169 // Field API has been enabled.
|
danielebarchiesi@0
|
170 'system' => 7020,
|
danielebarchiesi@0
|
171 );
|
danielebarchiesi@0
|
172 return $dependencies;
|
danielebarchiesi@0
|
173 }
|
danielebarchiesi@0
|
174
|
danielebarchiesi@0
|
175 /**
|
danielebarchiesi@0
|
176 * Install the schema for users upgrading from the contributed module.
|
danielebarchiesi@0
|
177 */
|
danielebarchiesi@0
|
178 function image_update_7000() {
|
danielebarchiesi@0
|
179 if (!db_table_exists('image_styles')) {
|
danielebarchiesi@0
|
180 $schema = array();
|
danielebarchiesi@0
|
181
|
danielebarchiesi@0
|
182 $schema['cache_image'] = system_schema_cache_7054();
|
danielebarchiesi@0
|
183 $schema['cache_image']['description'] = 'Cache table used to store information about image manipulations that are in-progress.';
|
danielebarchiesi@0
|
184
|
danielebarchiesi@0
|
185 $schema['image_styles'] = array(
|
danielebarchiesi@0
|
186 'description' => 'Stores configuration options for image styles.',
|
danielebarchiesi@0
|
187 'fields' => array(
|
danielebarchiesi@0
|
188 'isid' => array(
|
danielebarchiesi@0
|
189 'description' => 'The primary identifier for an image style.',
|
danielebarchiesi@0
|
190 'type' => 'serial',
|
danielebarchiesi@0
|
191 'unsigned' => TRUE,
|
danielebarchiesi@0
|
192 'not null' => TRUE,
|
danielebarchiesi@0
|
193 ),
|
danielebarchiesi@0
|
194 'name' => array(
|
danielebarchiesi@0
|
195 'description' => 'The style name.',
|
danielebarchiesi@0
|
196 'type' => 'varchar',
|
danielebarchiesi@0
|
197 'length' => 255,
|
danielebarchiesi@0
|
198 'not null' => TRUE,
|
danielebarchiesi@0
|
199 ),
|
danielebarchiesi@0
|
200 ),
|
danielebarchiesi@0
|
201 'primary key' => array('isid'),
|
danielebarchiesi@0
|
202 'unique keys' => array(
|
danielebarchiesi@0
|
203 'name' => array('name'),
|
danielebarchiesi@0
|
204 ),
|
danielebarchiesi@0
|
205 );
|
danielebarchiesi@0
|
206
|
danielebarchiesi@0
|
207 $schema['image_effects'] = array(
|
danielebarchiesi@0
|
208 'description' => 'Stores configuration options for image effects.',
|
danielebarchiesi@0
|
209 'fields' => array(
|
danielebarchiesi@0
|
210 'ieid' => array(
|
danielebarchiesi@0
|
211 'description' => 'The primary identifier for an image effect.',
|
danielebarchiesi@0
|
212 'type' => 'serial',
|
danielebarchiesi@0
|
213 'unsigned' => TRUE,
|
danielebarchiesi@0
|
214 'not null' => TRUE,
|
danielebarchiesi@0
|
215 ),
|
danielebarchiesi@0
|
216 'isid' => array(
|
danielebarchiesi@0
|
217 'description' => 'The {image_styles}.isid for an image style.',
|
danielebarchiesi@0
|
218 'type' => 'int',
|
danielebarchiesi@0
|
219 'unsigned' => TRUE,
|
danielebarchiesi@0
|
220 'not null' => TRUE,
|
danielebarchiesi@0
|
221 'default' => 0,
|
danielebarchiesi@0
|
222 ),
|
danielebarchiesi@0
|
223 'weight' => array(
|
danielebarchiesi@0
|
224 'description' => 'The weight of the effect in the style.',
|
danielebarchiesi@0
|
225 'type' => 'int',
|
danielebarchiesi@0
|
226 'unsigned' => FALSE,
|
danielebarchiesi@0
|
227 'not null' => TRUE,
|
danielebarchiesi@0
|
228 'default' => 0,
|
danielebarchiesi@0
|
229 ),
|
danielebarchiesi@0
|
230 'name' => array(
|
danielebarchiesi@0
|
231 'description' => 'The unique name of the effect to be executed.',
|
danielebarchiesi@0
|
232 'type' => 'varchar',
|
danielebarchiesi@0
|
233 'length' => 255,
|
danielebarchiesi@0
|
234 'not null' => TRUE,
|
danielebarchiesi@0
|
235 ),
|
danielebarchiesi@0
|
236 'data' => array(
|
danielebarchiesi@0
|
237 'description' => 'The configuration data for the effect.',
|
danielebarchiesi@0
|
238 'type' => 'blob',
|
danielebarchiesi@0
|
239 'not null' => TRUE,
|
danielebarchiesi@0
|
240 'size' => 'big',
|
danielebarchiesi@0
|
241 'serialize' => TRUE,
|
danielebarchiesi@0
|
242 ),
|
danielebarchiesi@0
|
243 ),
|
danielebarchiesi@0
|
244 'primary key' => array('ieid'),
|
danielebarchiesi@0
|
245 'indexes' => array(
|
danielebarchiesi@0
|
246 'isid' => array('isid'),
|
danielebarchiesi@0
|
247 'weight' => array('weight'),
|
danielebarchiesi@0
|
248 ),
|
danielebarchiesi@0
|
249 'foreign keys' => array(
|
danielebarchiesi@0
|
250 'image_style' => array(
|
danielebarchiesi@0
|
251 'table' => 'image_styles',
|
danielebarchiesi@0
|
252 'columns' => array('isid' => 'isid'),
|
danielebarchiesi@0
|
253 ),
|
danielebarchiesi@0
|
254 ),
|
danielebarchiesi@0
|
255 );
|
danielebarchiesi@0
|
256
|
danielebarchiesi@0
|
257 db_create_table('cache_image', $schema['cache_image']);
|
danielebarchiesi@0
|
258 db_create_table('image_styles', $schema['image_styles']);
|
danielebarchiesi@0
|
259 db_create_table('image_effects', $schema['image_effects']);
|
danielebarchiesi@0
|
260 }
|
danielebarchiesi@0
|
261 }
|
danielebarchiesi@0
|
262
|
danielebarchiesi@0
|
263 /**
|
danielebarchiesi@0
|
264 * @addtogroup updates-7.x-extra
|
danielebarchiesi@0
|
265 * @{
|
danielebarchiesi@0
|
266 */
|
danielebarchiesi@0
|
267
|
danielebarchiesi@0
|
268 /**
|
danielebarchiesi@0
|
269 * Rename possibly misnamed {image_effect} table to {image_effects}.
|
danielebarchiesi@0
|
270 */
|
danielebarchiesi@0
|
271 function image_update_7001() {
|
danielebarchiesi@0
|
272 // Due to a bug in earlier versions of image_update_7000() it is possible
|
danielebarchiesi@0
|
273 // to end up with an {image_effect} table where there should be an
|
danielebarchiesi@0
|
274 // {image_effects} table.
|
danielebarchiesi@0
|
275 if (!db_table_exists('image_effects') && db_table_exists('image_effect')) {
|
danielebarchiesi@0
|
276 db_rename_table('image_effect', 'image_effects');
|
danielebarchiesi@0
|
277 }
|
danielebarchiesi@0
|
278 }
|
danielebarchiesi@0
|
279
|
danielebarchiesi@0
|
280 /**
|
danielebarchiesi@0
|
281 * Add width and height columns to a specific table.
|
danielebarchiesi@0
|
282 *
|
danielebarchiesi@0
|
283 * @param $table
|
danielebarchiesi@0
|
284 * The name of the database table to be updated.
|
danielebarchiesi@0
|
285 * @param $columns
|
danielebarchiesi@0
|
286 * Keyed array of columns this table is supposed to have.
|
danielebarchiesi@0
|
287 */
|
danielebarchiesi@0
|
288 function _image_update_7002_add_columns($table, $field_name) {
|
danielebarchiesi@0
|
289 $spec = array(
|
danielebarchiesi@0
|
290 'type' => 'int',
|
danielebarchiesi@0
|
291 'unsigned' => TRUE,
|
danielebarchiesi@0
|
292 );
|
danielebarchiesi@0
|
293
|
danielebarchiesi@0
|
294 $spec['description'] = 'The width of the image in pixels.';
|
danielebarchiesi@0
|
295 db_add_field($table, $field_name . '_width', $spec);
|
danielebarchiesi@0
|
296
|
danielebarchiesi@0
|
297 $spec['description'] = 'The height of the image in pixels.';
|
danielebarchiesi@0
|
298 db_add_field($table, $field_name . '_height', $spec);
|
danielebarchiesi@0
|
299 }
|
danielebarchiesi@0
|
300
|
danielebarchiesi@0
|
301 /**
|
danielebarchiesi@0
|
302 * Populate image dimensions in a specific table.
|
danielebarchiesi@0
|
303 *
|
danielebarchiesi@0
|
304 * @param $table
|
danielebarchiesi@0
|
305 * The name of the database table to be updated.
|
danielebarchiesi@0
|
306 * @param $columns
|
danielebarchiesi@0
|
307 * Keyed array of columns this table is supposed to have.
|
danielebarchiesi@0
|
308 * @param $last_fid
|
danielebarchiesi@0
|
309 * The fid of the last image to have been processed.
|
danielebarchiesi@0
|
310 *
|
danielebarchiesi@0
|
311 * @return
|
danielebarchiesi@0
|
312 * The number of images that were processed.
|
danielebarchiesi@0
|
313 */
|
danielebarchiesi@0
|
314 function _image_update_7002_populate_dimensions($table, $field_name, &$last_fid) {
|
danielebarchiesi@0
|
315 // Define how many images to process per pass.
|
danielebarchiesi@0
|
316 $images_per_pass = 100;
|
danielebarchiesi@0
|
317
|
danielebarchiesi@0
|
318 // Query the database for fid / URI pairs.
|
danielebarchiesi@0
|
319 $query = db_select($table, NULL, array('fetch' => PDO::FETCH_ASSOC));
|
danielebarchiesi@0
|
320 $query->join('file_managed', NULL, $table . '.' . $field_name . '_fid = file_managed.fid');
|
danielebarchiesi@0
|
321
|
danielebarchiesi@0
|
322 if ($last_fid) {
|
danielebarchiesi@0
|
323 $query->condition('file_managed.fid', $last_fid, '>');
|
danielebarchiesi@0
|
324 }
|
danielebarchiesi@0
|
325
|
danielebarchiesi@0
|
326 $result = $query->fields('file_managed', array('fid', 'uri'))
|
danielebarchiesi@0
|
327 ->orderBy('file_managed.fid')
|
danielebarchiesi@0
|
328 ->range(0, $images_per_pass)
|
danielebarchiesi@0
|
329 ->execute();
|
danielebarchiesi@0
|
330
|
danielebarchiesi@0
|
331 $count = 0;
|
danielebarchiesi@0
|
332 foreach ($result as $file) {
|
danielebarchiesi@0
|
333 $count++;
|
danielebarchiesi@0
|
334 $info = image_get_info($file['uri']);
|
danielebarchiesi@0
|
335
|
danielebarchiesi@0
|
336 if (is_array($info)) {
|
danielebarchiesi@0
|
337 db_update($table)
|
danielebarchiesi@0
|
338 ->fields(array(
|
danielebarchiesi@0
|
339 $field_name . '_width' => $info['width'],
|
danielebarchiesi@0
|
340 $field_name . '_height' => $info['height'],
|
danielebarchiesi@0
|
341 ))
|
danielebarchiesi@0
|
342 ->condition($field_name . '_fid', $file['fid'])
|
danielebarchiesi@0
|
343 ->execute();
|
danielebarchiesi@0
|
344 }
|
danielebarchiesi@0
|
345 }
|
danielebarchiesi@0
|
346
|
danielebarchiesi@0
|
347 // If less than the requested number of rows were returned then this table
|
danielebarchiesi@0
|
348 // has been fully processed.
|
danielebarchiesi@0
|
349 $last_fid = ($count < $images_per_pass) ? NULL : $file['fid'];
|
danielebarchiesi@0
|
350 return $count;
|
danielebarchiesi@0
|
351 }
|
danielebarchiesi@0
|
352
|
danielebarchiesi@0
|
353 /**
|
danielebarchiesi@0
|
354 * Add width and height columns to image field schema and populate.
|
danielebarchiesi@0
|
355 */
|
danielebarchiesi@0
|
356 function image_update_7002(array &$sandbox) {
|
danielebarchiesi@0
|
357 if (empty($sandbox)) {
|
danielebarchiesi@0
|
358 // Setup the sandbox.
|
danielebarchiesi@0
|
359 $sandbox = array(
|
danielebarchiesi@0
|
360 'tables' => array(),
|
danielebarchiesi@0
|
361 'total' => 0,
|
danielebarchiesi@0
|
362 'processed' => 0,
|
danielebarchiesi@0
|
363 'last_fid' => NULL,
|
danielebarchiesi@0
|
364 );
|
danielebarchiesi@0
|
365
|
danielebarchiesi@0
|
366 $fields = _update_7000_field_read_fields(array(
|
danielebarchiesi@0
|
367 'module' => 'image',
|
danielebarchiesi@0
|
368 'storage_type' => 'field_sql_storage',
|
danielebarchiesi@0
|
369 'deleted' => 0,
|
danielebarchiesi@0
|
370 ));
|
danielebarchiesi@0
|
371
|
danielebarchiesi@0
|
372 foreach ($fields as $field) {
|
danielebarchiesi@0
|
373 $tables = array(
|
danielebarchiesi@0
|
374 _field_sql_storage_tablename($field),
|
danielebarchiesi@0
|
375 _field_sql_storage_revision_tablename($field),
|
danielebarchiesi@0
|
376 );
|
danielebarchiesi@0
|
377 foreach ($tables as $table) {
|
danielebarchiesi@0
|
378 // Add the width and height columns to the table.
|
danielebarchiesi@0
|
379 _image_update_7002_add_columns($table, $field['field_name']);
|
danielebarchiesi@0
|
380
|
danielebarchiesi@0
|
381 // How many rows need dimensions populated?
|
danielebarchiesi@0
|
382 $count = db_select($table)->countQuery()->execute()->fetchField();
|
danielebarchiesi@0
|
383
|
danielebarchiesi@0
|
384 if (!$count) {
|
danielebarchiesi@0
|
385 continue;
|
danielebarchiesi@0
|
386 }
|
danielebarchiesi@0
|
387
|
danielebarchiesi@0
|
388 $sandbox['total'] += $count;
|
danielebarchiesi@0
|
389 $sandbox['tables'][$table] = $field['field_name'];
|
danielebarchiesi@0
|
390 }
|
danielebarchiesi@0
|
391 }
|
danielebarchiesi@0
|
392
|
danielebarchiesi@0
|
393 // If no tables need rows populated with dimensions then we are done.
|
danielebarchiesi@0
|
394 if (empty($sandbox['tables'])) {
|
danielebarchiesi@0
|
395 $sandbox = array();
|
danielebarchiesi@0
|
396 return;
|
danielebarchiesi@0
|
397 }
|
danielebarchiesi@0
|
398 }
|
danielebarchiesi@0
|
399
|
danielebarchiesi@0
|
400 // Process the table at the top of the list.
|
danielebarchiesi@0
|
401 $keys = array_keys($sandbox['tables']);
|
danielebarchiesi@0
|
402 $table = reset($keys);
|
danielebarchiesi@0
|
403 $sandbox['processed'] += _image_update_7002_populate_dimensions($table, $sandbox['tables'][$table], $sandbox['last_fid']);
|
danielebarchiesi@0
|
404
|
danielebarchiesi@0
|
405 // Has the table been fully processed?
|
danielebarchiesi@0
|
406 if (!$sandbox['last_fid']) {
|
danielebarchiesi@0
|
407 unset($sandbox['tables'][$table]);
|
danielebarchiesi@0
|
408 }
|
danielebarchiesi@0
|
409
|
danielebarchiesi@0
|
410 $sandbox['#finished'] = count($sandbox['tables']) ? ($sandbox['processed'] / $sandbox['total']) : 1;
|
danielebarchiesi@0
|
411 }
|
danielebarchiesi@0
|
412
|
danielebarchiesi@0
|
413 /**
|
danielebarchiesi@0
|
414 * Remove the variables that set alt and title length since they were not
|
danielebarchiesi@0
|
415 * used for database column size and could cause PDO exceptions.
|
danielebarchiesi@0
|
416 */
|
danielebarchiesi@0
|
417 function image_update_7003() {
|
danielebarchiesi@0
|
418 variable_del('image_alt_length');
|
danielebarchiesi@0
|
419 variable_del('image_title_length');
|
danielebarchiesi@0
|
420 }
|
danielebarchiesi@0
|
421
|
danielebarchiesi@0
|
422 /**
|
danielebarchiesi@0
|
423 * Use a large setting (512 and 1024 characters) for the length of the image alt
|
danielebarchiesi@0
|
424 * and title fields.
|
danielebarchiesi@0
|
425 */
|
danielebarchiesi@0
|
426 function image_update_7004() {
|
danielebarchiesi@0
|
427 $alt_spec = array(
|
danielebarchiesi@0
|
428 'type' => 'varchar',
|
danielebarchiesi@0
|
429 'length' => 512,
|
danielebarchiesi@0
|
430 'not null' => FALSE,
|
danielebarchiesi@0
|
431 );
|
danielebarchiesi@0
|
432
|
danielebarchiesi@0
|
433 $title_spec = array(
|
danielebarchiesi@0
|
434 'type' => 'varchar',
|
danielebarchiesi@0
|
435 'length' => 1024,
|
danielebarchiesi@0
|
436 'not null' => FALSE,
|
danielebarchiesi@0
|
437 );
|
danielebarchiesi@0
|
438
|
danielebarchiesi@0
|
439 $fields = _update_7000_field_read_fields(array(
|
danielebarchiesi@0
|
440 'module' => 'image',
|
danielebarchiesi@0
|
441 'storage_type' => 'field_sql_storage',
|
danielebarchiesi@0
|
442 ));
|
danielebarchiesi@0
|
443
|
danielebarchiesi@0
|
444 foreach ($fields as $field_name => $field) {
|
danielebarchiesi@0
|
445 $tables = array(
|
danielebarchiesi@0
|
446 _field_sql_storage_tablename($field),
|
danielebarchiesi@0
|
447 _field_sql_storage_revision_tablename($field),
|
danielebarchiesi@0
|
448 );
|
danielebarchiesi@0
|
449 $alt_column = $field['field_name'] . '_alt';
|
danielebarchiesi@0
|
450 $title_column = $field['field_name'] . '_title';
|
danielebarchiesi@0
|
451 foreach ($tables as $table) {
|
danielebarchiesi@0
|
452 db_change_field($table, $alt_column, $alt_column, $alt_spec);
|
danielebarchiesi@0
|
453 db_change_field($table, $title_column, $title_column, $title_spec);
|
danielebarchiesi@0
|
454 }
|
danielebarchiesi@0
|
455 }
|
danielebarchiesi@0
|
456 }
|
danielebarchiesi@0
|
457
|
danielebarchiesi@0
|
458 /**
|
danielebarchiesi@0
|
459 * Add a column to the 'image_style' table to store administrative labels.
|
danielebarchiesi@0
|
460 */
|
danielebarchiesi@0
|
461 function image_update_7005() {
|
danielebarchiesi@0
|
462 $field = array(
|
danielebarchiesi@0
|
463 'type' => 'varchar',
|
danielebarchiesi@0
|
464 'length' => 255,
|
danielebarchiesi@0
|
465 'not null' => TRUE,
|
danielebarchiesi@0
|
466 'default' => '',
|
danielebarchiesi@0
|
467 'description' => 'The style administrative name.',
|
danielebarchiesi@0
|
468 );
|
danielebarchiesi@0
|
469 db_add_field('image_styles', 'label', $field);
|
danielebarchiesi@0
|
470
|
danielebarchiesi@0
|
471 // Do a direct query here, rather than calling image_styles(),
|
danielebarchiesi@0
|
472 // in case Image module is disabled.
|
danielebarchiesi@0
|
473 $styles = db_query('SELECT name FROM {image_styles}')->fetchCol();
|
danielebarchiesi@0
|
474 foreach ($styles as $style) {
|
danielebarchiesi@0
|
475 db_update('image_styles')
|
danielebarchiesi@0
|
476 ->fields(array('label' => $style))
|
danielebarchiesi@0
|
477 ->condition('name', $style)
|
danielebarchiesi@0
|
478 ->execute();
|
danielebarchiesi@0
|
479 }
|
danielebarchiesi@0
|
480 }
|
danielebarchiesi@0
|
481
|
danielebarchiesi@0
|
482 /**
|
danielebarchiesi@0
|
483 * @} End of "addtogroup updates-7.x-extra".
|
danielebarchiesi@0
|
484 */
|
danielebarchiesi@0
|
485
|
danielebarchiesi@0
|
486 /**
|
danielebarchiesi@0
|
487 * Implements hook_requirements() to check the PHP GD Library.
|
danielebarchiesi@0
|
488 *
|
danielebarchiesi@0
|
489 * @param $phase
|
danielebarchiesi@0
|
490 */
|
danielebarchiesi@0
|
491 function image_requirements($phase) {
|
danielebarchiesi@0
|
492 $requirements = array();
|
danielebarchiesi@0
|
493
|
danielebarchiesi@0
|
494 if ($phase == 'runtime') {
|
danielebarchiesi@0
|
495 // Check for the PHP GD library.
|
danielebarchiesi@0
|
496 if (function_exists('imagegd2')) {
|
danielebarchiesi@0
|
497 $info = gd_info();
|
danielebarchiesi@0
|
498 $requirements['image_gd'] = array(
|
danielebarchiesi@0
|
499 'value' => $info['GD Version'],
|
danielebarchiesi@0
|
500 );
|
danielebarchiesi@0
|
501
|
danielebarchiesi@0
|
502 // Check for filter and rotate support.
|
danielebarchiesi@0
|
503 if (function_exists('imagefilter') && function_exists('imagerotate')) {
|
danielebarchiesi@0
|
504 $requirements['image_gd']['severity'] = REQUIREMENT_OK;
|
danielebarchiesi@0
|
505 }
|
danielebarchiesi@0
|
506 else {
|
danielebarchiesi@0
|
507 $requirements['image_gd']['severity'] = REQUIREMENT_WARNING;
|
danielebarchiesi@0
|
508 $requirements['image_gd']['description'] = t('The GD Library for PHP is enabled, but was compiled without support for functions used by the rotate and desaturate effects. It was probably compiled using the official GD libraries from http://www.libgd.org instead of the GD library bundled with PHP. You should recompile PHP --with-gd using the bundled GD library. See <a href="http://www.php.net/manual/book.image.php">the PHP manual</a>.');
|
danielebarchiesi@0
|
509 }
|
danielebarchiesi@0
|
510 }
|
danielebarchiesi@0
|
511 else {
|
danielebarchiesi@0
|
512 $requirements['image_gd'] = array(
|
danielebarchiesi@0
|
513 'value' => t('Not installed'),
|
danielebarchiesi@0
|
514 'severity' => REQUIREMENT_ERROR,
|
danielebarchiesi@0
|
515 'description' => t('The GD library for PHP is missing or outdated. Check the <a href="@url">PHP image documentation</a> for information on how to correct this.', array('@url' => 'http://www.php.net/manual/book.image.php')),
|
danielebarchiesi@0
|
516 );
|
danielebarchiesi@0
|
517 }
|
danielebarchiesi@0
|
518 $requirements['image_gd']['title'] = t('GD library rotate and desaturate effects');
|
danielebarchiesi@0
|
519 }
|
danielebarchiesi@0
|
520
|
danielebarchiesi@0
|
521 return $requirements;
|
danielebarchiesi@0
|
522 }
|