function biblio_schema in Bibliography Module 7.2
Same name and namespace in other branches
- 6.2 biblio.install \biblio_schema()
- 6 biblio.install \biblio_schema()
- 7.3 biblio.install \biblio_schema()
- 7 biblio.install \biblio_schema()
Implements hook_schema().
4 calls to biblio_schema()
File
- ./
biblio.install, line 304
Code
function biblio_schema() {
// @todo: remove unnecessary tables
$schema['biblio'] = array(
'fields' => array(
'bid' => array(
'type' => 'serial',
'not null' => TRUE,
'description' => '',
'unsigned' => TRUE,
),
// 'vid' => array(
// 'type' => 'int',
// 'not null' => TRUE,
// 'default' => 0,
// 'description' => '',
// ),
'publication_type' => array(
'description' => 'The publication type of the biblio',
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
),
'uid' => array(
'description' => 'The Drupal user ID who created this biblio.',
'type' => 'int',
'not null' => TRUE,
'default' => 0,
),
'biblio_md5' => array(
'type' => 'varchar',
'not null' => FALSE,
'length' => '32',
'description' => '',
),
// @todo: take this out and stick it into a field
'biblio_sort_title' => array(
'type' => 'varchar',
'not null' => FALSE,
'length' => '64',
'description' => 'A normalized version of the title, used for sorting on titles. (only first 64 characters saved)',
),
'biblio_formats' => array(
'type' => 'blob',
'not null' => FALSE,
'description' => '',
'serialize' => TRUE,
),
'created' => array(
'type' => 'int',
'not null' => TRUE,
'description' => '',
),
'changed' => array(
'type' => 'int',
'not null' => TRUE,
'description' => '',
),
),
'foreign keys' => array(
'biblio_revision' => array(
'table' => 'biblio_revision',
'columns' => array(
'vid' => 'vid',
),
),
),
'primary key' => array(
'bid',
),
'indexes' => array(
'bid' => array(
'bid',
),
'md5' => array(
'biblio_md5',
),
'title_sort' => array(
'biblio_sort_title',
),
),
);
// Entity API doesn't support revisions yet...
// $schema['biblio_revision'] = array(
// 'description' => 'Stores information about each saved version of a {biblio}.',
// 'fields' => array(
// 'bid' => array(
// 'description' => 'The {biblio} this version belongs to.',
// 'type' => 'int',
// 'unsigned' => TRUE,
// 'not null' => TRUE,
// 'default' => 0,
// ),
// 'vid' => array(
// 'description' => 'The primary identifier for this version.',
// 'type' => 'serial',
// 'unsigned' => TRUE,
// 'not null' => TRUE,
// ),
// 'biblio_type' => array(
// 'type' => 'int',
// 'not null' => TRUE,
// 'default' => 0,
// 'description' => '',
// ),
// 'biblio_md5' => array(
// 'type' => 'varchar',
// 'not null' => FALSE,
// 'length' => '32',
// 'description' => '',
// ),
// 'biblio_sort_title' => array(
// 'type' => 'varchar',
// 'not null' => FALSE,
// 'length' => '64',
// 'description' => 'A normalized version of the title, used for sorting on titles. (only first 64 characters saved)',
// ),
// 'biblio_formats' => array(
// 'type' => 'blob',
// 'not null' => FALSE,
// 'description' => '',
// 'serialize' => TRUE,
// ),
// 'created' => array(
// 'type' => 'int',
// 'not null' => TRUE,
// 'description' => '',
// 'default' => 0,
// ),
// ),
// 'indexes' => array(
// 'bid' => array('bid'),
// ),
// 'primary key' => array('vid'),
// 'foreign keys' => array(
// 'biblio_vid' => array(
// 'table' => 'biblio',
// 'columns' => array(
// 'vid' => 'vid',
// ),
// ),
// ),
// );
$schema['biblio_fields'] = array(
'fields' => array(
'fid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '{biblio_fields}.fid of the node',
),
'name' => array(
'type' => 'varchar',
'length' => '128',
'not null' => TRUE,
'default' => '',
),
'type' => array(
'type' => 'varchar',
'length' => '128',
'not null' => TRUE,
'default' => 'textfield',
),
'size' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 60,
),
'maxsize' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 255,
),
),
'primary key' => array(
'fid',
),
);
$schema['biblio_field_type'] = array(
'description' => 'Relational table linking {biblio_fields} with {biblio_field_type_data}',
'fields' => array(
'tid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '{biblio_types}.tid of the node',
),
'fid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '{biblio_fields}.fid of the node',
),
'ftdid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '{biblio_field_type_data}.ftdid of the node, points to the current data, default or custom',
),
'cust_tdid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'This always points to the custom data for this field. Stored so we can switch back an forth between default and custom',
),
'common' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
),
'vtab' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
),
'autocomplete' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
),
'required' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Is input required for this field',
),
'weight' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => 'The weight (location) of the field on the input form',
),
'visible' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Determines if the field is visible on the input form',
),
),
'primary key' => array(
'tid',
'fid',
),
'indexes' => array(
'tid' => array(
'tid',
),
),
);
$schema['biblio_field_type_data'] = array(
'description' => 'Data used to build the form elements on the input form',
'fields' => array(
'ftdid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '{biblio_field_type_data}.ftdid of the node',
),
'title' => array(
'type' => 'varchar',
'length' => '128',
'not null' => TRUE,
'default' => '',
'description' => 'The title, which will be displayed on the form, for a given field',
),
'hint' => array(
'type' => 'varchar',
'length' => '255',
'not null' => FALSE,
'description' => 'The hint text printed below the input widget',
),
),
'primary key' => array(
'ftdid',
),
);
$schema['biblio_types'] = array(
'fields' => array(
'tid' => array(
'type' => 'serial',
'not null' => TRUE,
'description' => '{biblio_types}.tid of the type',
),
'name' => array(
'type' => 'varchar',
'length' => '64',
'not null' => TRUE,
'default' => '',
'description' => 'The name of the type',
),
'description' => array(
'type' => 'varchar',
'not null' => FALSE,
'length' => '255',
'description' => 'Description of the type',
),
'weight' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => 'Controls the order the types are listed in',
),
'visible' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 1,
'description' => 'Determines if the type is visible in the list',
),
'entity' => array(
'type' => 'varchar',
'length' => '64',
'not null' => TRUE,
'default' => '',
),
),
'primary key' => array(
'tid',
),
);
$schema['biblio_contributor'] = array(
'description' => 'Relational table linking authors to biblio entries',
'fields' => array(
'cid' => array(
'type' => 'serial',
'not null' => TRUE,
'unsigned' => TRUE,
'description' => 'Biblio Contributor ID. Unique ID for the contributor entity type.',
),
// versions not supported with entity api
// 'vid' => array(
// 'type' => 'int',
// 'not null' => TRUE,
// 'unsigned' => TRUE,
// 'default' => 0,
// 'description' => '{biblio}.vid of the biblio',
// ),
'title' => array(
'description' => 'The title (label) of the entity',
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
'type' => array(
'description' => 'The bundle name of the contributor entity',
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
),
'created' => array(
'type' => 'int',
'not null' => TRUE,
'description' => '',
),
'changed' => array(
'type' => 'int',
'not null' => TRUE,
'description' => '',
),
'md5' => array(
'type' => 'varchar',
'length' => '32',
'not null' => FALSE,
'description' => '',
),
),
'foreign keys' => array(
'biblio_revision' => array(
'table' => 'biblio_revision',
'columns' => array(
'vid' => 'vid',
),
),
'biblio' => array(
'table' => 'biblio',
'columns' => array(
'bid' => 'bid',
),
),
'biblio_contributor_data' => array(
'table' => 'biblio_contributor_data',
'columns' => array(
'cid' => 'cid',
),
),
'biblio_contributor_type' => array(
'table' => 'biblio_contributor_type',
'columns' => array(
'auth_type' => 'auth_type',
),
),
'biblio_contributor_category' => array(
'table' => 'biblio_contributor_type',
'columns' => array(
'auth_category' => 'auth_category',
),
),
),
'primary key' => array(
'cid',
),
);
$schema['biblio_contributor_data'] = array(
'description' => 'Contains Author information for each publication',
'fields' => array(
'cid' => array(
'type' => 'serial',
'not null' => TRUE,
'unsigned' => TRUE,
'description' => 'Primary Key: Author ID',
),
'aka' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'unsigned' => TRUE,
'description' => 'Also known as, links this author entry with others so you can have variation on the name, but listing by cid will find all other (aka) author entries',
),
'drupal_uid' => array(
'type' => 'int',
'not null' => FALSE,
'unsigned' => TRUE,
'description' => 'Drupal User ID',
),
'name' => array(
'type' => 'varchar',
'length' => '255',
'not null' => TRUE,
'default' => '',
'description' => 'Full name',
),
'lastname' => array(
'type' => 'varchar',
'length' => '255',
'not null' => TRUE,
'default' => '',
'description' => 'Author last name',
),
'firstname' => array(
'type' => 'varchar',
'length' => '128',
'not null' => FALSE,
'default' => '',
'description' => 'Author first name',
),
'prefix' => array(
'type' => 'varchar',
'length' => '128',
'not null' => FALSE,
'default' => '',
'description' => 'Author name prefix',
),
'suffix' => array(
'type' => 'varchar',
'length' => '128',
'not null' => FALSE,
'default' => '',
'description' => 'Author name suffix',
),
'initials' => array(
'type' => 'varchar',
'length' => '10',
'not null' => FALSE,
'default' => '',
'description' => 'Author initials (including first name initial)',
),
'affiliation' => array(
'type' => 'varchar',
'length' => '255',
'not null' => FALSE,
'default' => '',
'description' => 'Author affiliation or address',
),
'literal' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'unsigned' => TRUE,
'description' => 'Determines if the author name is allowed to be reformated by the variaous styles or should be used literally.',
),
'md5' => array(
'type' => 'varchar',
'length' => '32',
'not null' => FALSE,
'description' => '',
),
),
'foreign keys' => array(
'biblio_contributor' => array(
'table' => 'biblio_contributor',
'columns' => array(
'cid' => 'cid',
),
),
'biblio_author' => array(
'table' => 'users',
'columns' => array(
'drupal_uid' => 'uid',
),
),
),
'primary key' => array(
'cid',
'aka',
),
'indexes' => array(
'lastname' => array(
'lastname',
),
'firstname' => array(
'firstname',
),
'initials' => array(
'initials',
),
),
);
$schema['biblio_contributor_type'] = array(
'description' => 'Contains definitions of the contributor types',
'fields' => array(
'auth_category' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'There are 5 catagoies of author: Primary, Secondary, Tertiery, Subsidary and Corporate ',
),
'biblio_type' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '',
),
'auth_type' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'This is the pulication type specific verion of a particular catagory',
),
),
'foreign keys' => array(
'biblio' => array(
'table' => 'biblio',
'columns' => array(
'biblio_type' => 'biblio_type',
),
),
'biblio_contributor_type' => array(
'table' => 'biblio_contributor',
'columns' => array(
'auth_type' => 'auth_type',
),
),
'biblio_contributor_category' => array(
'table' => 'biblio_contributor',
'columns' => array(
'auth_category' => 'auth_category',
),
),
),
'primary key' => array(
'auth_category',
'biblio_type',
'auth_type',
),
);
$schema['biblio_contributor_type_data'] = array(
'description' => 'Data used to build the form elements on the input form',
'fields' => array(
'auth_type' => array(
'type' => 'serial',
'not null' => TRUE,
'unsigned' => TRUE,
'description' => '{biblio_contributor_type_data} ctdid of the node',
),
'title' => array(
'type' => 'varchar',
'length' => '128',
'not null' => TRUE,
'default' => '',
'description' => 'The title, which will be displayed on the form, for a given field',
),
'hint' => array(
'type' => 'varchar',
'length' => '255',
'not null' => FALSE,
'description' => 'The hint text printed below the input widget',
),
),
'primary key' => array(
'auth_type',
),
);
$schema['biblio_keyword'] = array(
'description' => t('Relational table linking keywords to biblio nodes'),
'fields' => array(
'kid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('Primary Key: The {biblio_keyword_data}.kid of the keyword of the node.'),
),
'bid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('The {biblio}.bid of the node.'),
),
'vid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('Primary Key: The {biblio}.vid of the node.'),
),
),
'foreign keys' => array(
'biblio_revision' => array(
'table' => 'biblio_revision',
'columns' => array(
'vid' => 'vid',
),
),
'biblio' => array(
'table' => 'biblio',
'columns' => array(
'bid' => 'bid',
),
),
'keyword' => array(
'table' => 'biblio_keyword_data',
'columns' => array(
'kid' => 'kid',
),
),
),
'primary key' => array(
'kid',
'vid',
),
'indexes' => array(
'vid' => array(
'vid',
),
'bid' => array(
'bid',
),
),
);
$schema['biblio_keyword_data'] = array(
'description' => t('Stores the keywords related to nodes.'),
'fields' => array(
'kid' => array(
'type' => 'serial',
'not null' => TRUE,
'unsigned' => TRUE,
'description' => t('Primary Key: The id of the keyword assigned to the node'),
),
'word' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => t('The keyword'),
),
),
'primary key' => array(
'kid',
),
'indexes' => array(
'kword' => array(
'word',
),
),
);
$schema['biblio_collection'] = array(
'description' => t('Relational table grouping biblio nodes into collections'),
'fields' => array(
'cid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('Primary Key: The {biblio_collection_data}.cid of the collection'),
),
'vid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('Primary Key: The {biblio}.vid of the node.'),
),
'pid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('The parent id of the collection'),
),
'bid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('The {biblio}.bid of the node.'),
),
),
'primary key' => array(
'cid',
'vid',
),
'indexes' => array(
'pid' => array(
'pid',
),
'bid' => array(
'bid',
),
),
);
$schema['biblio_collection_type'] = array(
'description' => t('Descriptions of the collections.'),
'fields' => array(
'cid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('Primary Key: The id of the collection'),
),
'name' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => t('The name of the collection'),
),
'description' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => t('The description of the collection'),
),
),
'primary key' => array(
'cid',
),
'indexes' => array(
'name' => array(
'name',
),
),
);
$schema['biblio_duplicates'] = array(
'description' => t('Relational table linking possible duplicate biblio nodes'),
'fields' => array(
'vid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('Primary Key: The {biblio}.nid of the original node'),
),
'did' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('The {biblio}.nid of the newly imported node which may be a duplicate.'),
),
'type' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => t('The type of duplicate 0=biblio, 1=author.'),
),
),
'primary key' => array(
'vid',
'did',
),
'indexes' => array(
'did' => array(
'vid',
),
),
);
$schema['biblio_import_cache'] = array(
'description' => 'tables used for caching data imported from file and then batch processed',
'fields' => array(
'id' => array(
'type' => 'serial',
'not null' => TRUE,
'unsigned' => TRUE,
),
'session_id' => array(
'type' => 'varchar',
'length' => 45,
'not null' => TRUE,
),
'data' => array(
'description' => t('A collection of data to cache.'),
'type' => 'blob',
'not null' => FALSE,
'size' => 'big',
),
),
'primary key' => array(
'id',
),
);
$schema['biblio_type_maps'] = array(
'description' => 'Table used to store the mapping information between various file formats and the biblio schema',
'fields' => array(
'format' => array(
'description' => 'The import/export file format',
'type' => 'varchar',
'length' => 128,
'not null' => TRUE,
),
'type_map' => array(
'description' => 'The mapping between the publication types in the file format and biblio',
'type' => 'blob',
'not null' => FALSE,
'size' => 'big',
),
'type_names' => array(
'description' => 'The human readable names of the publication types',
'type' => 'blob',
'not null' => FALSE,
'size' => 'big',
),
'field_map' => array(
'description' => 'The mapping between the fields in the file format and biblio',
'type' => 'blob',
'not null' => FALSE,
'size' => 'big',
),
'export_map' => array(
'description' => 'which fields are exported',
'type' => 'blob',
'not null' => FALSE,
'size' => 'big',
),
),
'primary key' => array(
'format',
),
);
return $schema;
}