function tripal_mviews_form
2.x tripal_core.mviews.inc | tripal_mviews_form($form, &$form_state = NULL, $mview_id = NULL) |
3.x tripal_chado.mviews.inc | tripal_mviews_form( |
1.x mviews.inc | tripal_mviews_form(&$form_state = NULL, $mview_id = NULL) |
A Form to Create/Edit a Materialized View
Parameters
$form_state: The current state of the form (Form API)
$mview_id: The unique ID of the Materialized View to Edit or NULL if creating a new materialized view
Return value
A form array (Form API)
Related topics
1 string reference to 'tripal_mviews_form'
- tripal_core_menu in tripal_core/
tripal_core.module - Implements hook_menu(). Defines all menu items needed by Tripal Core
File
- tripal_core/
includes/ mviews.inc, line 142 - Contains functions for viewing and editing of Materialized Views on a Tripal website.
Code
function tripal_mviews_form(&$form_state = NULL, $mview_id = NULL) {
if (!$mview_id) {
$action = 'Add';
}
else {
$action = 'Edit';
}
// set defaults for collapsed fieldsets
$schema_collapsed = 0;
$traditional_collapsed = 1;
// get this requested view
if (strcmp($action, 'Edit') == 0) {
$sql = "SELECT * FROM {tripal_mviews} WHERE mview_id = %d ";
$mview = db_fetch_object(db_query($sql, $mview_id));
// set the default values. If there is a value set in the
// form_state then let's use that, otherwise, we'll pull
// the values from the database
$default_name = $form_state['values']['name'];
$default_mv_table = $form_state['values']['mv_table'];
$default_mv_specs = $form_state['values']['mv_specs'];
$default_indexed = $form_state['values']['indexed'];
$default_mvquery = $form_state['values']['mvquery'];
$default_special_index = $form_state['values']['special_index'];
$default_comment = $form_state['values']['comment'];
$default_modulename = $form_state['values']['modulename'];
if (!$default_name) {
$default_name = $mview->name;
}
if (!$default_mv_table) {
$default_mv_table = $mview->mv_table;
}
if (!$default_mv_specs) {
$default_mv_specs = $mview->mv_specs;
}
if (!$default_indexed) {
$default_indexed = $mview->indexed;
}
if (!$default_mvquery) {
$default_mvquery = $mview->query;
}
if (!$default_special_index) {
$default_special_index = $mview->special_index;
}
if (!$default_comment) {
$default_comment = $mview->comment;
}
if (!$default_schema) {
$default_schema = $mview->mv_schema;
}
if (!$default_modulename) {
$default_modulename = $mview->modulename ? $mview->modulename : 'tripal_core';
}
// the mv_table column of the tripal_mviews table always has the table
// name even if it is a custom table. However, for the sake of the form,
// we do not want this to show up as the mv_table is needed for the
// traditional style input. We'll blank it out if we have a custom
// table and it will get reset in the submit function using the
// 'table' value from the schema array
if ($default_schema) {
$default_mv_table = '';
}
// set which fieldset is collapsed
if (!$default_schema) {
$schema_collapsed = 1;
$traditional_collapsed = 0;
}
}
// Build the form
$form['action'] = array(
'#type' => 'value',
'#value' => $action
);
$form['mview_id'] = array(
'#type' => 'value',
'#value' => $mview_id
);
$form['modulename'] = array(
'#type' => 'value',
'#value' => $default_modulename,
);
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('View Name'),
'#description' => t('Please enter the name for this materialized view.'),
'#required' => TRUE,
'#default_value' => $default_name,
);
$form['comment'] = array(
'#type' => 'textarea',
'#title' => t('MView Description'),
'#description' => t('Optional. Please provide a description of the purpose for this materialized vieww.'),
'#required' => FALSE,
'#default_value' => $default_comment,
);
// add a fieldset for the Drupal Schema API
$form['schema'] = array(
'#type' => 'fieldset',
'#title' => 'Drupal Schema API Setup',
'#description' => t('Use the Drupal Schema API array to describe a table. The benefit is that it ' .
'can be fully integrated with Tripal Views. Tripal supports an extended ' .
'array format to allow for descriptoin of foreign key relationships.'),
'#collapsible' => 1,
'#collapsed' => $schema_collapsed,
);
$form['schema']['schema'] = array(
'#type' => 'textarea',
'#title' => t('Schema Array'),
'#description' => t('Please enter the Drupal Schema API compatible array that defines the table.'),
'#required' => FALSE,
'#default_value' => $default_schema,
'#rows' => 25,
);
// add a fieldset for the Original Table Description fields
$form['traditional'] = array(
'#type' => 'fieldset',
'#title' => 'Legacy MViews Setup',
'#description' => t('Traditionally MViews were created by specifying PostgreSQL style ' .
'column types. This method can be used but is deprecated in favor of the ' .
'newer Drupal schema API method provided above. In rare cases where the Drupal Schema API ' .
'does not support a desired data type the Legacy Mviews should be used'),
'#collapsible' => 1,
'#collapsed' => $traditional_collapsed,
);
$form['traditional']['mv_table'] = array(
'#type' => 'textfield',
'#title' => t('Table Name'),
'#description' => t('Please enter the table name that this view will generate in the database. You can use the schema and table name for querying the view'),
'#required' => FALSE,
'#default_value' => $default_mv_table,
);
$form['traditional']['mv_specs'] = array(
'#type' => 'textarea',
'#title' => t('Table Definition'),
'#description' => t('Please enter the field definitions for this view. Each field should be separated by a comma or enter each field definition on each line.'),
'#required' => FALSE,
'#default_value' => $default_mv_specs,
);
$form['traditional']['indexed'] = array(
'#type' => 'textarea',
'#title' => t('Indexed Fields'),
'#description' => t('Please enter the field names (as provided in the table definition above) that will be indexed for this view. Separate by a comma or enter each field on a new line.'),
'#required' => FALSE,
'#default_value' => $default_indexed,
);
/**
$form['traditional']['special_index']= array(
'#type' => 'textarea',
'#title' => t('View Name'),
'#description' => t('Please enter the name for this materialized view.'),
'#required' => TRUE,
'#default_value' => $default_special_index,
);
*/
$form['mvquery'] = array(
'#type' => 'textarea',
'#title' => t('Query'),
'#description' => t('Please enter the SQL statement used to populate the table.'),
'#required' => TRUE,
'#default_value' => $default_mvquery,
'#rows' => 25,
);
if ($action == 'Edit') {
$value = 'Save';
}
if ($action == 'Add') {
$value = 'Add';
}
$form['submit'] = array(
'#type' => 'submit',
'#value' => t($value),
'#weight' => 9,
'#executes_submit_callback' => TRUE,
);
$form['#redirect'] = 'admin/tripal/mviews';
return $form;
}