Same filename in other branches
  1. 3.0.x color_field.install
  2. 7.x-1.x color_field.install
  3. 8.x-2.x color_field.install

Install, update, and uninstall functions.

File

./color_field.install

View source
<?php


/**
 * @file
 *
 * Install, update, and uninstall functions.
 */

/**
 * Implements hook_field_schema().
 *
 * Defines the database schema of the field, using the format used by the
 * Schema API.
 *
 * The data we will store here is just one 7-character element and an alpha int.
 */
function color_field_field_schema($field) {
    $columns = array(
        'rgb' => array(
            'description' => 'The RGB hex values prefix with #',
            'type' => 'varchar',
            'length' => 7,
            'not null' => FALSE,
        ),
        'opacity' => array(
            'description' => 'The opacity/alphavalue property',
            'type' => 'float',
            'size' => 'tiny',
            'not null' => FALSE,
            'default' => 1,
        ),
    );
    $indexes = array(
        'rgb' => array(
            'rgb',
        ),
    );
    return array(
        'columns' => $columns,
        'indexes' => $indexes,
    );
}

/**
 * Implements hook_requirements().
 */
function color_field_requirements($phase) {
    $requirements = array();
    if ($phase == 'runtime') {
        $t = get_t();
        $color_field_library = drupal_get_library('color_field', 'jquery-simple-color');
        foreach ($color_field_library['js'] as $path => $js) {
            if (!file_exists($path)) {
                $requirements['jquery-simple-color'] = array(
                    'severity' => REQUIREMENT_WARNING,
                    'title' => $t('Color Field (jquery simple color)'),
                    'value' => $t('Missing'),
                    'description' => $t('The jquery simple color library isn\'t available so this Color Field Module will not support the jQuery Simple Color widget. Please download the plugin (%version) from !website.', array(
                        '!website' => l($color_field_library['website'], $color_field_library['website']),
                        '%version' => $color_field_library['version'],
                    )),
                );
                break;
            }
        }
        if (!isset($requirements['jquery-simple-color'])) {
            $requirements['jquery-simple-color'] = array(
                'severity' => REQUIREMENT_OK,
                'title' => $color_field_library['title'],
                'value' => $color_field_library['version'],
            );
        }
    }
    return $requirements;
}

/**
 * Add opacity column to color field schema and populate with a default value of 1.
 */
function color_field_update_7000(array &$sandbox) {
    $fields = _update_7000_field_read_fields(array(
        'module' => 'color_field',
        'storage_type' => 'field_sql_storage',
        'deleted' => 0,
    ));
    foreach ($fields as $field) {
        $tables = array(
            _field_sql_storage_tablename($field),
            _field_sql_storage_revision_tablename($field),
        );
        foreach ($tables as $table) {
            // Add the opacity column to the table.
            _color_field_update_7000_add_opacity_column($table, $field['field_name']);
            _color_field_update_7000_populate_opacity($table, $field['field_name']);
        }
    }
}

/**
 * Add opacity column to a specific table.
 *
 * @param string $table
 *   The name of the database table to be updated.
 * @param string $field_name
 *   Keyed array of columns this table is supposed to have.
 */
function _color_field_update_7000_add_opacity_column($table, $field_name) {
    $spec = array(
        'description' => 'The opacity/alphavalue property',
        'type' => 'float',
        'size' => 'tiny',
        'not null' => FALSE,
        'default' => 1,
    );
    $spec['description'] = 'The width of the image in pixels.';
    // Make sure the field does not exist yet.
    if (!db_field_exists($table, $field_name . '_opacity')) {
        db_add_field($table, $field_name . '_opacity', $spec);
    }
}

/**
 * Populate color field opacity in a specific table.
 *
 * @param string $table
 *   The name of the database table to be updated.
 * @param string $field_name
 *   Keyed array of columns this table is supposed to have.
 */
function _color_field_update_7000_populate_opacity($table, $field_name) {
    db_update($table)->fields(array(
        $field_name . '_opacity' => 1,
    ))
        ->isNull($field_name . '_opacity')
        ->execute();
}

Functions

Title Deprecated Summary
color_field_field_schema Implements hook_field_schema().
color_field_requirements Implements hook_requirements().
color_field_update_7000 Add opacity column to color field schema and populate with a default value of 1.
_color_field_update_7000_add_opacity_column Add opacity column to a specific table.
_color_field_update_7000_populate_opacity Populate color field opacity in a specific table.