function tripal_views_integration_form_submit
2.x tripal_views_integration_UI.inc | tripal_views_integration_form_submit($form, &$form_state) |
1.x tripal_views_integration.inc | tripal_views_integration_form_submit($form, &$form_state) |
Purpose: inserts or updates the record in the tripal views integration tables. This function is only called if validation is passed.
Parameters
$form: The form object which is passed automatically by drupal
$form_state: The form state pbject which is passed automatically by drupal
File
- tripal_views/
includes/ tripal_views_integration.inc, line 836 - Functions related to the UI for integrating tables with views
Code
function tripal_views_integration_form_submit($form, &$form_state) {
$name = $form_state['values']['row_name'];
$mview_id = $form_state['values']['mview_id'];
$table_name = $form_state['values']['table_name'];
$setup_id = $form_state['values']['setup_id'];
$priority = $form_state['values']['row_priority'];
$comment = $form_state['values']['row_description'];
// get details about this mview
if ($mview_id) {
$sql = "SELECT * FROM {tripal_mviews} WHERE mview_id = %d";
$mview = db_fetch_object(db_query($sql, $mview_id));
$table_name = $mview->mv_table;
$table_id = $mview_id;
$type = 'mview';
}
else {
$type = 'chado';
$table_id = $table_name;
}
// If this is for a materialized view then we want to add/update that record
$tripal_views_record = array();
if ($mview_id) {
// get details about this mview
$sql = "SELECT * FROM {tripal_mviews} WHERE mview_id = %d";
$mview = db_fetch_object(db_query($sql, $mview_id));
// build the record for insert/update
$tripal_views_record = array(
'mview_id' => $mview_id,
'table_name' => $mview->mv_table,
'name' => $name,
'priority' => $priority,
'comment' => $comment,
'base_table' => $form_state['values']['base_table']
);
}
// if a chado table then...
else {
// build the record for insert/update
$tripal_views_record = array(
'table_name' => $table_name,
'name' => $name,
'priority' => $priority,
'comment' => $comment,
'base_table' => $form_state['values']['base_table']
);
}
// perform the insert or update
if (!$setup_id) { // this is an insert
if (!drupal_write_record('tripal_views', $tripal_views_record)) {
drupal_set_message(t("Failed to add record."), 'error');
return;
}
}
else { // this is an update
// check to see if it was specified to create a new integration
if ($form_state['values']['new_integration']) {
if (!drupal_write_record('tripal_views', $tripal_views_record)) {
drupal_set_message(t("Failed to add record."), 'error');
return;
}
}
else {
$tripal_views_record['setup_id'] = $setup_id;
if (!drupal_write_record('tripal_views', $tripal_views_record, array('setup_id'))) {
drupal_set_message(t("Failed to update record."), 'error');
return;
}
}
}
// if this is an update then clean out the existing joins and handlers so we can add new ones
if ($setup_id) {
db_query("DELETE FROM {tripal_views_field} WHERE setup_id = %d", $setup_id);
db_query("DELETE FROM {tripal_views_join} WHERE setup_id = %d", $setup_id);
db_query("DELETE FROM {tripal_views_handlers} WHERE setup_id = %d", $setup_id);
}
// iterate through the columns of the form and add
// the joins if provided, and the handlers
$i = 1;
foreach (unserialize($form_state['values']['field_types']) as $key => $value) {
// add the field definition
$view_field_record = array(
'setup_id' => $tripal_views_record['setup_id'],
'column_name' => $key,
'name' => $form_state['values']["fields_readable_name_$table_id-$i"],
'description' => $form_state['values']["fields_description_$table_id-$i"],
'type' => $value,
);
drupal_write_record('tripal_views_field', $view_field_record);
// first add the join if it exists
$left_table = $form_state['values']["fields_join_$table_id-$i"];
$left_column = $form_state['values']["fields_join_column_$table_id-$i"];
if ($left_column) {
if ($mview_id) {
$base_table = $mview->mv_table;
}
else {
$base_table = $table_name;
}
$view_join_record = array(
'setup_id' => $tripal_views_record['setup_id'],
'base_table' => $base_table,
'base_field' => $key,
'left_table' => $left_table,
'left_field' => $left_column,
'handler' => $form_state['values']["fields_join_handler_$table_id-$i"],
);
// write the new joins to the database
drupal_write_record('tripal_views_join', $view_join_record);
}
// add the hanlders
$handlers = array('filter', 'field', 'sort', 'argument', 'join', 'relationship');
foreach ($handlers as $handler) {
$handler_name = $form_state['values']["fields_" . $handler . "_handler_$table_id-$i"];
if ($handler_name) {
$handler_record = array(
'setup_id' => $tripal_views_record['setup_id'],
'column_name' => $key,
'handler_type' => $handler,
'handler_name' => $handler_name,
);
drupal_write_record('tripal_views_handlers', $handler_record);
}
}
$i++;
}
if ($setup_id) {
drupal_set_message(t('Record Updated'));
}
else {
drupal_set_message(t('Record Added'));
}
// now clear all the caches so that Drupal views picks up our chages
views_invalidate_cache();
}