annotate modules/image/image.install @ 2:b74b41bb73f0

-- Google analytics module
author danieleb <danielebarchiesi@me.com>
date Thu, 22 Aug 2013 17:22:54 +0100
parents ff03f76ab3fe
children
rev   line source
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 }