$arr) { $schema[$table] = $arr; } return $schema; } /** * Tripal Views Update for 6.x-0.4 * - Add priority field to tripal_views * - Add handler field to tripal_views_join * - Add tripal_views_field table to keep track of fields for views integration */ function tripal_views_update_6040() { $ret = array(); // Add Priority to tripal_views db_add_field($ret, 'tripal_views', 'priority', array('type' => 'int')); db_add_unique_key($ret, 'tripal_views', 'priority', array('table_name', 'priority')); db_add_index($ret, 'tripal_views', 'priority', array('table_name', 'priority')); // Add handler to tripal_views_join db_add_field($ret, 'tripal_views_join', 'handler', array('type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '')); // Add tripal_views_field to keep track of fields for views integration $schema = tripal_views_views_schema(); db_create_table($ret, 'tripal_views_field', $schema['tripal_views_field']); // Add base_table TRUE/FALSE to tripal_views db_add_field($ret, 'tripal_views', 'base_table', array('type' => 'int', 'not null ' => TRUE, 'default' => 1)); // Add arguments to joins db_add_field( $ret, 'tripal_views_join', 'arguments', array( 'description' => 'arguments that may get passed to the handler', 'type' => 'text', 'size' => 'normal' ) ); return $ret; } /** * Describe the Tripal Views Schema * * Tables include: * - tripal_views: main table for views integration setups * - tripal_views_field: keeps track of all fields related to a given views integration setup * - tripal_views_join: keeps track of joins between the current views integration setup * and other tables. * - tripal_views_handlers: keeps track of which handlers to use for a given field * * @ingroup tripal_views */ function tripal_views_views_schema() { $schema = array(); $schema['tripal_views'] = array( 'description' => 'contains the setups, their materialized view id and base table name that was used.', 'fields' => array( 'setup_id' => array( 'description' => 'the id of the setup', 'type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE, ), 'mview_id' => array( 'description' => 'the materialized view used for this setup', 'type' => 'int', 'unsigned' => TRUE, ), 'base_table' => array( 'description' => 'either TRUE (1) or FALSE (0) depending on whether the current table should be a bast table of a View', 'type' => 'int', 'not null ' => TRUE, 'default' => 1 ), 'table_name' => array( 'description' => 'the table name being integrated.', 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'priority' => array( 'description' => 'when there are 2+ entries for the same table, the entry with the lightest (drupal-style) priority is used.', 'type' => 'int', ), 'name' => array( 'description' => 'Human readable name of this setup', 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'comment' => array( 'description' => 'add notes about this views setup', 'type' => 'text', 'size' => 'normal', 'not null' => FALSE, 'default' => '', ), ), 'unique_keys' => array( 'setup_id' => array('setup_id'), 'priority' => array('table_name', 'priority'), ), 'indexes' => array( 'priority' => array('table_name', 'priority'), ), 'primary key' => array('setup_id'), ); $schema['tripal_views_field'] = array( 'description' => 'keep track of fields available for a given table', 'fields' => array( 'setup_id' => array( 'description' => 'the id of the setup', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, ), 'column_name' => array( 'description' => 'the name of the field in the database', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, ), 'name' => array( 'description' => 'the human-readable name of the field', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, ), 'description' => array( 'description' => 'A short description of the field -seen under the field in the views UI', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, ), 'type' => array( 'description' => 'the database type of this field (ie: int, varchar)', 'type' => 'varchar', 'length' => '50', 'not null' => TRUE, ), ), 'primary key' => array('setup_id', 'column_name') ); $schema['tripal_views_join'] = array( 'description' => 'coordinate the joining of tables', 'fields' => array( 'view_join_id' => array( 'description' => 'the id of the join', 'type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE, ), 'setup_id' => array( 'description' => 'setup id from tripal_views table', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, ), 'base_table' => array( 'description' => 'the name of the base table', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '', ), 'base_field' => array( 'description' => 'the name of the base table column that will be joined', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '', ), 'left_table' => array( 'description' => 'the table on which to perform a left join', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '', ), 'left_field' => array( 'description' => 'the column on which to perform a left join', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '', ), 'handler' => array( 'description' => 'the name of the handler', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '', ), 'arguments' => array( 'description' => 'arguments that may get passed to the handler', 'type' => 'text', 'size' => 'normal', ), ), 'unique_keys' => array( 'setup_id' => array('view_join_id'), ), 'primary key' => array('view_join_id'), ); $schema['tripal_views_handlers'] = array( 'description' => 'in formation for views: column and views handler name', 'fields' => array( 'handler_id' => array( 'description' => 'the id of the handler', 'type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE, ), 'setup_id' => array( 'description' => 'setup id from the tripal_views table', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, ), 'column_name' => array( 'description' => '', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '', ), 'handler_type' => array( 'description' => 'identifies the type of hander (e.g. field, filter, sort, argument, relationship, etc.)', 'type' => 'varchar', 'length' => '50', 'not null' => TRUE, 'default' => '', ), 'handler_name' => array( 'description' => 'the name of the handler', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '', ), 'arguments' => array( 'description' => 'arguments that may get passed to the handler', 'type' => 'text', 'size' => 'normal', 'not null' => FALSE, 'default' => '', ), ), 'unique_keys' => array( 'setup_id' => array('handler_id'), ), 'primary key' => array('handler_id'), ); return $schema; } /** * Implementation of hook_requirements(). * */ function tripal_views_requirements($phase) { $requirements = array(); if ($phase == 'install') { // make sure chado is installed $version = tripal_core_set_chado_version(); if ($version == 'not installed') { $requirements ['tripal_views'] = array( 'title' => "tripal_views", 'value' => "ERROR: Chado most be installed before this module can be enabled", 'severity' => REQUIREMENT_ERROR, ); } } return $requirements; }