diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-02-03 17:30:13 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-02-03 17:30:13 +0000 |
commit | 607e9626d5af265b18e8319b156bb0fda3445cd4 (patch) | |
tree | ece98d14e826d14a711c9b572e3f43a428b9a365 /modules/field/field.install | |
parent | d4867346f578906751f8ea0bd799c3fc1bfcbf48 (diff) | |
download | brdo-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.install | 154 |
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; +} |