You are here

data.install in Data 6

Same filename and directory in other branches
  1. 8 data.install
  2. 7 data.install

Install hooks for Data module.

File

data.install
View source
<?php

/**
 * @file
 * Install hooks for Data module.
 */

/**
 * Implementation of hook_schema().
 */
function data_schema() {
  $schema['data_tables'] = array(
    'description' => 'Tables managed by Data module.',
    'export' => array(
      'key' => 'name',
      'identifier' => 'data_table',
      'default hook' => 'data_default',
      // Function hook name.
      'api' => array(
        'owner' => 'data',
        'api' => 'data_default',
        // Base name for api include files.
        'minimum_version' => 1,
        'current_version' => 1,
      ),
    ),
    'fields' => array(
      'title' => array(
        'type' => 'varchar',
        'length' => '255',
        'not null' => TRUE,
        'default' => '',
        'description' => 'Natural name of the table.',
      ),
      'name' => array(
        'type' => 'varchar',
        'length' => '128',
        'not null' => TRUE,
        'default' => '',
        'description' => 'Table name.',
      ),
      'table_schema' => array(
        'type' => 'text',
        'not null' => FALSE,
        'description' => 'Table schema.',
        'serialize' => TRUE,
      ),
      'meta' => array(
        'type' => 'text',
        'not null' => FALSE,
        'description' => 'Meta information about the table and its fields.',
        'serialize' => TRUE,
      ),
    ),
    'primary key' => array(
      'name',
    ),
  );
  return $schema;
}

/**
 * Implementation of hook_install().
 */
function data_install() {

  // Create tables.
  drupal_install_schema('data');
}

/**
 * Implementation of hook_uninstall().
 */
function data_uninstall() {

  // Remove tables.
  drupal_uninstall_schema('data');
}

/**
 * Move join information into meta fields.
 */
function data_update_6001() {
  $ret = array();
  $result = db_query('SELECT * FROM {data_join}');
  while ($row = db_fetch_object($result)) {
    if ($table = data_get_table($row->right_table)) {
      $table
        ->link($row->left_table, $row->left_field, $row->right_field, $row->inner_join ? TRUE : FALSE);
    }
  }
  db_drop_table($ret, 'data_join');
  return $ret;
}

/**
 * Add a primary key, required by CTools. Shorten name key to 128 char max.
 */
function data_update_6002() {
  $ret = array();
  db_drop_index($ret, 'data_tables', 'name');
  $spec = array(
    'type' => 'varchar',
    'length' => '128',
    'not null' => TRUE,
    'default' => '',
    'description' => 'Table name.',
  );
  db_change_field($ret, 'data_tables', 'name', 'name', $spec);
  db_add_primary_key($ret, 'data_tables', array(
    'name',
  ));

  // reset cTools static cache of this table; otherwise it throws an error about
  // lacking a primary key, which just adds insult to injury as we're trying to fix that!
  drupal_get_schema('data_tables', TRUE);
  if (function_exists('ctools_static_reset')) {
    ctools_static_reset('ctools_export_get_schema');
  }
  return $ret;
}

Functions

Namesort descending Description
data_install Implementation of hook_install().
data_schema Implementation of hook_schema().
data_uninstall Implementation of hook_uninstall().
data_update_6001 Move join information into meta fields.
data_update_6002 Add a primary key, required by CTools. Shorten name key to 128 char max.