You are here

iframe.install in Iframe 7

Same filename and directory in other branches
  1. 8.2 iframe.install
  2. 8 iframe.install
  3. 6 iframe.install

Install, update and uninstall functions for the text module.

File

iframe.install
View source
<?php

/**
 * @file
 * Install, update and uninstall functions for the text module.
 */

/**
 * Implements hook_field_schema().
 */
function iframe_field_schema($field) {
  if ('iframe' == $field['type']) {
    $schema = array();
    $columns = array(
      'url' => array(
        'type' => 'varchar',
        'length' => 1024,
        'not null' => FALSE,
        'sortable' => TRUE,
      ),
      'title' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'sortable' => TRUE,
      ),
      'class' => array(
        'type' => 'varchar',
        'length' => '255',
        'not null' => FALSE,
      ),
      'width' => array(
        'type' => 'varchar',
        'length' => 4,
        'not null' => FALSE,
      ),
      'height' => array(
        'type' => 'varchar',
        'length' => 4,
        'not null' => FALSE,
      ),
      'frameborder' => array(
        'type' => 'int',
        'size' => 'tiny',
        'not null' => TRUE,
        'default' => 0,
      ),
      'scrolling' => array(
        'type' => 'varchar',
        'length' => 4,
        'not null' => TRUE,
        'default' => 'auto',
      ),
      'transparency' => array(
        'type' => 'int',
        'size' => 'tiny',
        'not null' => TRUE,
        'default' => 0,
      ),
      'tokensupport' => array(
        'type' => 'int',
        'size' => 'tiny',
        'not null' => TRUE,
        'default' => 0,
      ),
    );
    $schema['columns'] = $columns;
    return $schema;
  }
}

/**
 * Helper: Returns all fields created on the system of the type defined in mymodule.
 */
function iframe_get_mymodule_fields() {
  module_load_include('module', 'iframe', 'iframe');
  $types = array_keys(iframe_field_info());

  // field types defined in mymodule
  $fields = array();
  foreach (field_info_fields() as $field) {
    if (in_array($field['type'], $types)) {
      $fields[] = $field;
    }
  }
  return $fields;
}

/**
 * Helper: add or change one column
 */
function iframe_addorchange_column($field_suffix, $spec) {
  if (empty($field_suffix) || !is_array($spec) || !isset($spec['type'])) {
    die('Cannot add or change column!');
  }
  $fields = iframe_get_mymodule_fields();
  foreach ($fields as $field) {
    if (isset($field['storage']) && isset($field['storage']['type']) && 0 !== strcmp($field['storage']['type'], 'field_sql_storage')) {
      $message = t('Iframe: Cannot change field name @name because of different storage_type: @type.', array(
        '@name' => $field['field_name'],
        '@type' => $field['storage']['type'],
      ));
      drupal_set_message($message, 'warning');
      continue;
    }
    $table_prefixes = array(
      _field_sql_storage_tablename($field),
      _field_sql_storage_revision_tablename($field),
    );
    foreach ($table_prefixes as $table_prefix) {
      $field_name = $field['field_name'];

      // eg 'field_dimensions' ;
      $column = $field_name . '_' . $field_suffix;
      if (db_field_exists($table_prefix, $column)) {
        db_change_field($table_prefix, $column, $column, $spec);
      }
      else {
        db_add_field($table_prefix, $column, $spec);
      }
    }
  }
}

/**
 * Update 7100 : add new column "tokensupport"
 */
function iframe_update_7100() {
  $spec = array(
    'type' => 'int',
    'size' => 'tiny',
    'not null' => TRUE,
    'default' => 0,
  );
  iframe_addorchange_column('tokensupport', $spec);
}

/**
 * Update 7101 : adjust or synchronize length of "url" field for all users
 */
function iframe_update_7101() {
  $spec = array(
    'type' => 'varchar',
    'length' => 1024,
    'not null' => FALSE,
    'sortable' => TRUE,
  );
  iframe_addorchange_column('url', $spec);
}

Functions

Namesort descending Description
iframe_addorchange_column Helper: add or change one column
iframe_field_schema Implements hook_field_schema().
iframe_get_mymodule_fields Helper: Returns all fields created on the system of the type defined in mymodule.
iframe_update_7100 Update 7100 : add new column "tokensupport"
iframe_update_7101 Update 7101 : adjust or synchronize length of "url" field for all users