summaryrefslogtreecommitdiff
path: root/modules/field/field.install
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-02-03 17:30:13 +0000
committerDries Buytaert <dries@buytaert.net>2009-02-03 17:30:13 +0000
commit607e9626d5af265b18e8319b156bb0fda3445cd4 (patch)
treeece98d14e826d14a711c9b572e3f43a428b9a365 /modules/field/field.install
parentd4867346f578906751f8ea0bd799c3fc1bfcbf48 (diff)
downloadbrdo-607e9626d5af265b18e8319b156bb0fda3445cd4.tar.gz
brdo-607e9626d5af265b18e8319b156bb0fda3445cd4.tar.bz2
- Patch #361683by Barry, Yves, Karen, Moshe Weitzman, David Strauss, floriant, chx, David Rothstein: initial field API patch. More work to be done, but ... oh my!
Diffstat (limited to 'modules/field/field.install')
-rw-r--r--modules/field/field.install154
1 files changed, 154 insertions, 0 deletions
diff --git a/modules/field/field.install b/modules/field/field.install
new file mode 100644
index 000000000..d693c2ee8
--- /dev/null
+++ b/modules/field/field.install
@@ -0,0 +1,154 @@
+<?php
+// $Id$
+/**
+ * Implementation of hook_install().
+ */
+function field_install() {
+ drupal_install_schema('field');
+}
+
+
+/**
+ * Implementation of hook_uninstall().
+ */
+function field_uninstall() {
+ drupal_uninstall_schema('field');
+}
+
+/**
+ * Implementation of hook_enable().
+ */
+function field_enable() {
+ // Make sure old data is emptied out of the caches, since it
+ // may no longer be valid since the module was last enabled,
+ // especially if not all the same field modules are enabled
+ // as before. Especially needed during updates.
+ module_load_include('inc', 'field', 'field.crud');
+ module_load_include('inc', 'field', 'field.info');
+ cache_clear_all('*', 'cache_field', TRUE);
+ field_cache_clear(TRUE);
+}
+
+/**
+ * Implementation of hook_disable().
+ */
+function field_disable() {
+ // Make sure old data is emptied out of the caches, since it
+ // may no longer be valid when the module is re-enabled.
+ module_load_include('inc', 'field', 'field.crud');
+ cache_clear_all('*', 'cache_field', TRUE);
+ field_cache_clear(TRUE);
+}
+
+/**
+ * Implementation of hook_schema.
+ */
+function field_schema() {
+ // Static (meta) tables.
+ $schema['field_config'] = array(
+ 'fields' => array(
+ 'field_name' => array(
+ 'type' => 'varchar',
+ 'length' => 32,
+ 'not null' => TRUE,
+ 'description' => 'The name of this field',
+ ),
+ 'type' => array(
+ 'type' => 'varchar',
+ 'length' => 128,
+ 'not null' => TRUE,
+ 'description' => 'The type of this field, coming from a field module',
+ ),
+ 'locked' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'not null' => TRUE,
+ 'default' => 0,
+ 'description' => '@TODO',
+ ),
+ 'settings' => array(
+ 'type' => 'text',
+ 'size' => 'medium',
+ 'not null' => TRUE,
+ 'serialize' => TRUE,
+ 'description' => 'Field specific settings, for example maximum length',
+ ),
+ 'module' => array(
+ 'type' => 'varchar',
+ 'length' => 128,
+ 'not null' => TRUE,
+ 'default' => '',
+ ),
+ 'cardinality' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'not null' => TRUE,
+ 'default' => 0,
+ ),
+ 'active' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'not null' => TRUE,
+ 'default' => 0,
+ ),
+ 'deleted' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'not null' => TRUE,
+ 'default' => 0,
+ ),
+ ),
+ 'primary key' => array('field_name'),
+ 'indexes' => array(
+ // used by field_read_fields
+ 'active_deleted' => array('active', 'deleted'),
+ // used by field_modules_disabled
+ 'module' => array('module'),
+ // used by field_associate_fields
+ 'type' => array('type'),
+ ),
+ );
+ $schema['field_config_instance'] = array(
+ 'fields' => array(
+ 'field_name' => array('type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => ''),
+ 'bundle' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
+ 'widget_type' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
+ 'widget_module' => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
+ 'widget_active' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'not null' => TRUE,
+ 'default' => 0,
+ ),
+ 'data' => array(
+ 'type' => 'text',
+ 'size' => 'medium',
+ 'not null' => TRUE,
+ 'serialize' => TRUE,
+ ),
+ 'weight' => array(
+ 'type' => 'int',
+ 'not null' => TRUE,
+ 'default' => 0,
+ ),
+ 'deleted' => array(
+ 'type' => 'int',
+ 'size' => 'tiny',
+ 'not null' => TRUE,
+ 'default' => 0,
+ ),
+ ),
+ 'primary key' => array('field_name', 'bundle'),
+ 'indexes' => array(
+ // used by field_read_instances
+ 'widget_active_deleted' => array('widget_active', 'deleted'),
+ // used by field_modules_disabled
+ 'widget_module' => array('widget_module'),
+ // used by field_associate_fields
+ 'widget_type' => array('widget_type'),
+ ),
+ );
+ $schema['cache_field'] = drupal_get_schema_unprocessed('system', 'cache');
+
+ return $schema;
+}