|  | @@ -61,193 +61,183 @@ function tripal_core_views_description_page() {
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @ingroup tripal_views_integration
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -function tripal_core_views_integration_admin_form(){
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $form = array();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $form['#theme'] = 'tripal';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $query_results = db_query('SELECT * FROM public.tripal_views_integration;');
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $header = array('Setup ID', 'Name', 'Materialized View ID', 'Base Table Name', 'Description');
 | 
	
		
			
				|  |  | -  $rows = array();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $results = array();
 | 
	
		
			
				|  |  | -  while($result = db_fetch_object($query_results)){
 | 
	
		
			
				|  |  | -    $rows[] = array($result->setup_id, $result->name, $result->mview_id, $result->base_table_name, $result->description,);
 | 
	
		
			
				|  |  | -    $results[] = $result;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $options = array();
 | 
	
		
			
				|  |  | -  foreach ($results as $key => $value) {
 | 
	
		
			
				|  |  | -    if(!empty($value))
 | 
	
		
			
				|  |  | -    $options[] = $value->setup_id;// . ' | ' . $value->name . ' | ' . $value->mview_id . ' | ' . $value->base_table_name;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $form['existing_rows'] = array(
 | 
	
		
			
				|  |  | -    '#type' => 'select',
 | 
	
		
			
				|  |  | -    '#options' => $options,
 | 
	
		
			
				|  |  | -    '#description' => '<strong>Select a View Setup to delete from the database.</strong>',
 | 
	
		
			
				|  |  | -    '#prefix' => theme('table', $header, $rows),
 | 
	
		
			
				|  |  | -  );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $form['button']['submit'] = array(
 | 
	
		
			
				|  |  | -    '#type' => 'submit',
 | 
	
		
			
				|  |  | -    '#value' => t('Remove'),
 | 
	
		
			
				|  |  | -  	'#submit' => array('tripal_core_views_integration_admin_form_submit'),
 | 
	
		
			
				|  |  | -  );
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  $form['button']['edit_form'] = array(
 | 
	
		
			
				|  |  | -    '#type' => 'submit',
 | 
	
		
			
				|  |  | -    '#value' => t('Edit'),
 | 
	
		
			
				|  |  | -    '#submit' => array('tripal_core_views_integration_admin_edit_form_submit'),
 | 
	
		
			
				|  |  | -  );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $form['new'] = array(
 | 
	
		
			
				|  |  | -    '#type' => 'markup',
 | 
	
		
			
				|  |  | -    '#value' => l(t(' Add a New MView'), 'admin/tripal/views/integration/mviews/new'),
 | 
	
		
			
				|  |  | -  );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  return $form;
 | 
	
		
			
				|  |  | +function tripal_core_views_integration_setup_list(){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   $header = array('', 'Drupal Views Type Name', 'Table Name', 'Is Mview', 'Comment','');
 | 
	
		
			
				|  |  | +   $rows = array();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   // get the list of materialized views
 | 
	
		
			
				|  |  | +   $tviews = db_query('SELECT * FROM {tripal_views}');
 | 
	
		
			
				|  |  | +   while($tview = db_fetch_object($tviews)){
 | 
	
		
			
				|  |  | +      if($tview->mview_id){
 | 
	
		
			
				|  |  | +         // get the materialized view
 | 
	
		
			
				|  |  | +         $sql = "SELECT * FROM {tripal_mviews} WHERE mview_id = %d";
 | 
	
		
			
				|  |  | +         $mview = db_fetch_object(db_query($sql,$tview->mview_id));
 | 
	
		
			
				|  |  | +         $rows[] = array(
 | 
	
		
			
				|  |  | +            l('Edit',"admin/tripal/views/integration/edit/".$tview->setup_id) ,
 | 
	
		
			
				|  |  | +            $tview->name, 
 | 
	
		
			
				|  |  | +            $mview->mv_table, 
 | 
	
		
			
				|  |  | +            'Yes', 
 | 
	
		
			
				|  |  | +            $tview->comment,
 | 
	
		
			
				|  |  | +            l('Delete',"admin/tripal/views/integration/delete/".$tview->setup_id),
 | 
	
		
			
				|  |  | +         );
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +         // TODO: customize for Chado tables
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +   }
 | 
	
		
			
				|  |  | +   $rows[] = array(
 | 
	
		
			
				|  |  | +      'data' => array( 
 | 
	
		
			
				|  |  | +         array('data' => l('Add a new entry',"admin/tripal/views/integration/new") . " | " .
 | 
	
		
			
				|  |  | +                         l("Create View",'admin/build/views/add'), 
 | 
	
		
			
				|  |  | +               'colspan' => 6),
 | 
	
		
			
				|  |  | +         )
 | 
	
		
			
				|  |  | +   );
 | 
	
		
			
				|  |  | +   return theme('table', $header, $rows);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -function tripal_core_views_integration_admin_edit_form_submit($form, &$form_state) {
 | 
	
		
			
				|  |  | -	$form_state['rebuild'] = FALSE;
 | 
	
		
			
				|  |  | -	unset($form_state['storage']);
 | 
	
		
			
				|  |  | -	$form_state['redirect'] = 'admin/tripal/views/integration/mviews/edit/'. $form['existing_rows']['#options'][$form_state['values']['existing_rows']];
 | 
	
		
			
				|  |  | -// 	$form_state['redirect'] = 'admin';
 | 
	
		
			
				|  |  | -	return $form_state;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @ingroup tripal_views_integration
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -function tripal_core_views_integration_admin_form_submit($form, &$form_state){
 | 
	
		
			
				|  |  | -  $value = $form['existing_rows']['#options'][$form_state['values']['existing_rows']];
 | 
	
		
			
				|  |  | -  tripal_core_delete_mview_int_by_id($value);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  | -*
 | 
	
		
			
				|  |  | -* @ingroup tripal_views_integration
 | 
	
		
			
				|  |  | -*/
 | 
	
		
			
				|  |  | -function tripal_core_delete_mview_int_by_id($setup_id){
 | 
	
		
			
				|  |  | -  dpm($setup_id);
 | 
	
		
			
				|  |  | -  db_query("DELETE FROM public.tripal_views_integration WHERE setup_id = '$setup_id';");
 | 
	
		
			
				|  |  | -  db_query("DELETE FROM public.tripal_views_handlers WHERE setup_id = '$setup_id';");
 | 
	
		
			
				|  |  | -  db_query("DELETE FROM public.tripal_mviews_join WHERE setup_id = '$setup_id';");
 | 
	
		
			
				|  |  | +function tripal_core_views_integration_delete($setup_id){
 | 
	
		
			
				|  |  | +  db_query("DELETE FROM {tripal_views} WHERE setup_id = %d",$setup_id);
 | 
	
		
			
				|  |  | +  db_query("DELETE FROM {tripal_views_handlers} WHERE setup_id = %d",$setup_id);
 | 
	
		
			
				|  |  | +  db_query("DELETE FROM {tripal_views_join} WHERE setup_id = %d",$setup_id);
 | 
	
		
			
				|  |  | +  drupal_set_message("Record Deleted");
 | 
	
		
			
				|  |  | +  drupal_goto('admin/tripal/views/integration');
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @ingroup tripal_views_integration
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -function tripal_core_views_integration_new_setup_form(&$form_state, $setup_id = NULL){
 | 
	
		
			
				|  |  | +function tripal_core_views_integration_form(&$form_state, $setup_id = NULL){
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  | -  $form = array();
 | 
	
		
			
				|  |  | +   $form = array();
 | 
	
		
			
				|  |  | +   $data = array();
 | 
	
		
			
				|  |  | +   $form['#cache'] = TRUE;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   // ahah_helper requires us to register the form with it's module
 | 
	
		
			
				|  |  | +   ahah_helper_register($form, $form_state);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   // if a setup_id is provided then we want to get the form defaults
 | 
	
		
			
				|  |  | +   $setup_obj = array();
 | 
	
		
			
				|  |  | +   if(isset($setup_id)){
 | 
	
		
			
				|  |  | +      // get the deafult setup values
 | 
	
		
			
				|  |  | +      $sql = "SELECT * FROM {tripal_views} WHERE setup_id = %d";
 | 
	
		
			
				|  |  | +      $setup_obj = db_fetch_object(db_query($sql,$setup_id));
 | 
	
		
			
				|  |  | +      $mview_id = $setup_obj->mview_id;
 | 
	
		
			
				|  |  | +      $table_name = $setup_obj->table_name;
 | 
	
		
			
				|  |  | +      $form_state['storage']['mview_id'] = $mview_id;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // get the default join settings and handlers
 | 
	
		
			
				|  |  | +      $sql = "SELECT * FROM {tripal_views_join} WHERE setup_id = %d";
 | 
	
		
			
				|  |  | +      $query = db_query($sql,$setup_id);
 | 
	
		
			
				|  |  | +      $default_joins = array();
 | 
	
		
			
				|  |  | +      while ($join = db_fetch_object($query)){
 | 
	
		
			
				|  |  | +         $default_joins[$join->base_field]['left_table'] = $join->left_table;
 | 
	
		
			
				|  |  | +         $default_joins[$join->base_field]['left_field'] = $join->left_field;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      // get the default handlers
 | 
	
		
			
				|  |  | +      $sql = "SELECT * FROM {tripal_views_handlers} WHERE setup_id = %d";
 | 
	
		
			
				|  |  | +      $query = db_query($sql,$setup_id);
 | 
	
		
			
				|  |  | +      $default_handlers = array();
 | 
	
		
			
				|  |  | +      while ($handler = db_fetch_object($query)){
 | 
	
		
			
				|  |  | +         $default_handlers[$handler->column_name][$handler->handler_type]['handler_name'] = $handler->handler_name;
 | 
	
		
			
				|  |  | +         $default_handlers[$handler->column_name][$handler->handler_type]['arguments'] = $handler->arguments;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      // add in the setup_id for the form so we know this is an update not an insert
 | 
	
		
			
				|  |  | +      $form['setup_id'] = array(
 | 
	
		
			
				|  |  | +         '#type' => 'hidden',
 | 
	
		
			
				|  |  | +         '#value' => $setup_id,
 | 
	
		
			
				|  |  | +      );    
 | 
	
		
			
				|  |  | +   }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  $data = array();
 | 
	
		
			
				|  |  | +  // add a fieldset for the MView & Chado table selectors
 | 
	
		
			
				|  |  | +  $form['base_table_type'] = array(
 | 
	
		
			
				|  |  | +     '#type' => 'fieldset',
 | 
	
		
			
				|  |  | +     '#title' => 'Base Table',
 | 
	
		
			
				|  |  | +     '#description' => 'Please select either a materialized view or a Chado table for integration with '.
 | 
	
		
			
				|  |  | +                       'Drupal Views.  In Drupal Views terminology, the selected table becomes the "base table". '.
 | 
	
		
			
				|  |  | +                       'After you select a table from either list, the fields from that table will appear below '.
 | 
	
		
			
				|  |  | +                       'and you can specify other tables to join with and handlers.',
 | 
	
		
			
				|  |  | +   );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  $form['#cache'] = TRUE;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  //ahah_helper requires this to register the form with it's module
 | 
	
		
			
				|  |  | -  ahah_helper_register($form, $form_state);
 | 
	
		
			
				|  |  | +  // build the form element that lists the materialized views
 | 
	
		
			
				|  |  | +  $query = db_query("SELECT mview_id,name FROM {tripal_mviews} ORDER BY name");
 | 
	
		
			
				|  |  | +  $mview_tables = array();
 | 
	
		
			
				|  |  | +  $mview_tables['0'] = 'Select';
 | 
	
		
			
				|  |  | +  while ($mview = db_fetch_object($query)){
 | 
	
		
			
				|  |  | +    $mview_tables[$mview->mview_id] = $mview->name;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  $form['base_table_type']['mview_id'] = array(
 | 
	
		
			
				|  |  | +    '#title' => t('Materialized View'),
 | 
	
		
			
				|  |  | +    '#type' => 'select',
 | 
	
		
			
				|  |  | +    '#options' => $mview_tables,
 | 
	
		
			
				|  |  | +    '#description' => 'Which materialized view to use.',
 | 
	
		
			
				|  |  | +    '#default_value' => $setup_obj->mview_id,
 | 
	
		
			
				|  |  | +    '#ahah' => array(
 | 
	
		
			
				|  |  | +       'path' => ahah_helper_path(array('view_setup_table')),
 | 
	
		
			
				|  |  | +       'wrapper' => 'table-rows-div',
 | 
	
		
			
				|  |  | +       'effect' => 'fade',
 | 
	
		
			
				|  |  | +       'event' => 'change',
 | 
	
		
			
				|  |  | +       'method' => 'replace',
 | 
	
		
			
				|  |  | +    ),
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  //   $setup_id = $setup_id['0']; //<--- this is not needed for some reason, don't know what changed
 | 
	
		
			
				|  |  | -  if(isset($setup_id)){
 | 
	
		
			
				|  |  | +  // build the form element for the Chado tables
 | 
	
		
			
				|  |  | +  $chado_tables = tripal_core_get_chado_tables();
 | 
	
		
			
				|  |  | +  $chado_tables = array_merge(array('Select',), $chado_tables);
 | 
	
		
			
				|  |  | +  $form['base_table_type']['table_name'] = array(
 | 
	
		
			
				|  |  | +    '#title' => t('Chado Table'),
 | 
	
		
			
				|  |  | +    '#type' => 'select',
 | 
	
		
			
				|  |  | +    '#options' => $chado_tables,
 | 
	
		
			
				|  |  | +    '#description' => 'Which Chado table to use.',
 | 
	
		
			
				|  |  | +    '#default_value' => $setup_obj->table_name,
 | 
	
		
			
				|  |  | +    '#ahah' => array(
 | 
	
		
			
				|  |  | +       'path' => ahah_helper_path(array('view_setup_table')),
 | 
	
		
			
				|  |  | +       'wrapper' => 'table-rows-div',
 | 
	
		
			
				|  |  | +       'effect' => 'fade',
 | 
	
		
			
				|  |  | +       'event' => 'change',
 | 
	
		
			
				|  |  | +       'method' => 'replace',
 | 
	
		
			
				|  |  | +    ),
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    $setup_obj = db_fetch_object(db_query("SELECT * FROM {tripal_views_integration} WHERE setup_id = '$setup_id';"));
 | 
	
		
			
				|  |  | -    $mview_id = $setup_obj->mview_id;
 | 
	
		
			
				|  |  | -    $form_state['storage']['mview_id'] = $mview_id;
 | 
	
		
			
				|  |  | -    $column_query = db_query("SELECT * FROM {tripal_mviews_join} WHERE setup_id = '$setup_id';");
 | 
	
		
			
				|  |  | -    $mview_joins = array();
 | 
	
		
			
				|  |  | -    while ($mviews_join = db_fetch_object($column_query)){
 | 
	
		
			
				|  |  | -      $mview_joins[] = $mviews_join;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -//     dpm($form_state,'formstate');
 | 
	
		
			
				|  |  | -    if(!isset($form_state['storage']['mview_id'])){
 | 
	
		
			
				|  |  | -      $form_state['storage']['mview_id'] = $setup_obj->mview_id;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -    $form['setup_id'] = array(
 | 
	
		
			
				|  |  | -      '#type' => 'hidden',
 | 
	
		
			
				|  |  | -      '#value' => $setup_id,
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -    $form['hidden_edited'] = array(
 | 
	
		
			
				|  |  | -      '#type' => 'hidden',
 | 
	
		
			
				|  |  | -      '#value' => TRUE,
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  else{
 | 
	
		
			
				|  |  | -    $form['hidden_edited'] = array(
 | 
	
		
			
				|  |  | -      '#type' => 'hidden',
 | 
	
		
			
				|  |  | -      '#value' => FALSE,
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +  $form['views_type'] = array(
 | 
	
		
			
				|  |  | +     '#type' => 'fieldset',
 | 
	
		
			
				|  |  | +     '#title' => 'View Type',
 | 
	
		
			
				|  |  | +     '#description' => 'Here you can provide the "type" of View you want to create.',
 | 
	
		
			
				|  |  | +   );
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  |    // field for the name of the
 | 
	
		
			
				|  |  | -  $form['row_name'] = array(
 | 
	
		
			
				|  |  | -    '#title' => t('Name'),
 | 
	
		
			
				|  |  | +  $form['views_type']['row_name'] = array(
 | 
	
		
			
				|  |  | +    '#title' => t('View Type Name'),
 | 
	
		
			
				|  |  |      '#type' => 'textfield',
 | 
	
		
			
				|  |  |      '#default_value' => $setup_obj->name,
 | 
	
		
			
				|  |  |      '#size' => 60,
 | 
	
		
			
				|  |  |      '#maxlength' => 128,
 | 
	
		
			
				|  |  | -    '#description' => 'Name of the Views Setup',
 | 
	
		
			
				|  |  | -    '#required' => TRUE,
 | 
	
		
			
				|  |  | +    '#description' => 'Provide the view type name.  This is the name that will appear in '.
 | 
	
		
			
				|  |  | +                      'the Drupal Views interface when adding a new view.  The view type name '.
 | 
	
		
			
				|  |  | +                      'must be unique.  You may use the a materialized view or Chado table '.
 | 
	
		
			
				|  |  | +                      'multiple times as the base table for different type names.  This allows '.
 | 
	
		
			
				|  |  | +                      'for differetn handlers to be '.
 | 
	
		
			
				|  |  | +                      'applied to the same table in different ways.',
 | 
	
		
			
				|  |  | +    '#required' => TRUE,   
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  |    if(isset($setup_id)){
 | 
	
		
			
				|  |  |      $form['row_name']['#attributes'] = array('readonly' => 'readonly');
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  $form['row_description'] = array(
 | 
	
		
			
				|  |  | -    '#title' => t('Description'),
 | 
	
		
			
				|  |  | -    '#type' => 'textfield',
 | 
	
		
			
				|  |  | -  	'#default_value' => $setup_obj->description,
 | 
	
		
			
				|  |  | -    '#size' => 60,
 | 
	
		
			
				|  |  | -    '#maxlength' => 255,
 | 
	
		
			
				|  |  | -    '#description' => 'Briefly describe in which view this will be used',
 | 
	
		
			
				|  |  | -    '#required' => TRUE,
 | 
	
		
			
				|  |  | +  $form['views_type']['row_description'] = array(
 | 
	
		
			
				|  |  | +    '#title' => t('Comment'),
 | 
	
		
			
				|  |  | +    '#type' => 'textarea',
 | 
	
		
			
				|  |  | +    '#description' => '(Optional). Provide any details regarding this setup you would like.',
 | 
	
		
			
				|  |  | +    '#required' => FALSE,
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  $mview_query = db_query("SELECT mview_id,name FROM {tripal_mviews} ORDER BY name;");
 | 
	
		
			
				|  |  | -  $mview_options = array();
 | 
	
		
			
				|  |  | -  $mview_options['0'] = 'Select';
 | 
	
		
			
				|  |  | -  while ($mview_option = db_fetch_array($mview_query)){
 | 
	
		
			
				|  |  | -    $mview_options[$mview_option['mview_id']] = $mview_option['name'];
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $form['mview_id'] = array(
 | 
	
		
			
				|  |  | -    '#title' => t('Materialized View'),
 | 
	
		
			
				|  |  | -    '#type' => 'select',
 | 
	
		
			
				|  |  | -    '#options' => $mview_options,
 | 
	
		
			
				|  |  | -    '#description' => 'Which materialized view to use.',
 | 
	
		
			
				|  |  | -    '#required' => TRUE,
 | 
	
		
			
				|  |  | -//     '#value' => $setup_obj->mview_id,
 | 
	
		
			
				|  |  | -//     '#default_value' => $mview_default_value,
 | 
	
		
			
				|  |  | -  	'#default_value' => $setup_obj->mview_id,
 | 
	
		
			
				|  |  | -    '#ahah' => array(
 | 
	
		
			
				|  |  | -       'path' => ahah_helper_path(array('view_setup_table')),
 | 
	
		
			
				|  |  | -       'wrapper' => 'table-rows-div',
 | 
	
		
			
				|  |  | -       'effect' => 'fade',
 | 
	
		
			
				|  |  | -       'event' => 'change',
 | 
	
		
			
				|  |  | -       'method' => 'replace',
 | 
	
		
			
				|  |  | -  ),
 | 
	
		
			
				|  |  | -  );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  // ignore this for now... we'll come back to it later -- spf
 | 
	
		
			
				|  |  | -  //   $form['row_base_table_name'] = array(
 | 
	
		
			
				|  |  | -  //      '#title' => t('Base Table Name'),
 | 
	
		
			
				|  |  | -  //      '#type' => 'select',
 | 
	
		
			
				|  |  | -  //      // '#options' => array('stub'),
 | 
	
		
			
				|  |  | -  //      '#options' => tripal_core_get_chado_tables(),
 | 
	
		
			
				|  |  | -  //      '#description' => 'Select which chado table to use for this view.',
 | 
	
		
			
				|  |  | -  //      '#required' => TRUE,
 | 
	
		
			
				|  |  | -  //   );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +  // we need a div block where the table fields will get put when the
 | 
	
		
			
				|  |  | +  // AHAH callback is made
 | 
	
		
			
				|  |  |    $form['view_setup_table'] = array(
 | 
	
		
			
				|  |  |       '#type' => 'item',
 | 
	
		
			
				|  |  |         '#prefix' => '<div id="table-rows-div">',
 | 
	
	
		
			
				|  | @@ -255,10 +245,12 @@ function tripal_core_views_integration_new_setup_form(&$form_state, $setup_id =
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if ($form_state['storage']['mview_id']){
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    	$mview_id = $form_state['storage']['mview_id'];
 | 
	
		
			
				|  |  | -  	
 | 
	
		
			
				|  |  | +  // add the fieldset for the table fields, but only if the $mview_id or $table_name
 | 
	
		
			
				|  |  | +  // is set. The only times these values are set is if we're editing an existing
 | 
	
		
			
				|  |  | +  // record or if the AHAH callback is being made.
 | 
	
		
			
				|  |  | +  if ($form_state['storage']['mview_id'] or $form_state['storage']['table_name']){
 | 
	
		
			
				|  |  | +    $mview_id = $form_state['storage']['mview_id'];
 | 
	
		
			
				|  |  | +    $table_name = $form_state['storage']['table_name'];
 | 
	
		
			
				|  |  |      $form['view_setup_table'] = array(
 | 
	
		
			
				|  |  |       '#type' => 'fieldset',
 | 
	
		
			
				|  |  |       '#title' => 'Join Selection',
 | 
	
	
		
			
				|  | @@ -268,132 +260,245 @@ function tripal_core_views_integration_new_setup_form(&$form_state, $setup_id =
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // get the columns in this materialized view.  They are separated by commas
 | 
	
		
			
				|  |  |      // where the first word is the column name and the rest is the type
 | 
	
		
			
				|  |  | -    $sql = "SELECT mv_specs FROM {tripal_mviews} WHERE mview_id = $mview_id";
 | 
	
		
			
				|  |  | -    $mview = db_fetch_object(db_query($sql));
 | 
	
		
			
				|  |  | -    $columns = explode(",",$mview->mv_specs);
 | 
	
		
			
				|  |  | +    if($mview_id){
 | 
	
		
			
				|  |  | +       $sql = "SELECT mv_specs FROM {tripal_mviews} WHERE mview_id = %d";
 | 
	
		
			
				|  |  | +       $mview = db_fetch_object(db_query($sql,$mview_id));
 | 
	
		
			
				|  |  | +       $columns = explode(",",$mview->mv_specs);
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +       // TODO: get chado table columns and add them to the $columns array
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      $i=1;
 | 
	
		
			
				|  |  | -    $chado_tables = tripal_core_get_chado_tables();
 | 
	
		
			
				|  |  | -    $chado_tables = array_merge(array('Select a Join Table',), $chado_tables);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      $form['view_setup_table']["instructions"] = array(
 | 
	
		
			
				|  |  |           '#type' => 'markup',
 | 
	
		
			
				|  |  | -         '#value' => "Select an optional table to which the fields of the materialized view can join.  If a field does not need to join you may leave the selection blank.",
 | 
	
		
			
				|  |  | +         '#value' => "Select an optional table to which the fields of the ".
 | 
	
		
			
				|  |  | +                     "materialized view can join.  If a field does not need to ".
 | 
	
		
			
				|  |  | +                     "join you may leave the selection blank.",
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      $data['field_types'] = array();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // get the list of chado tables to join on
 | 
	
		
			
				|  |  | +    $chado_join_tables = tripal_core_get_chado_tables();
 | 
	
		
			
				|  |  | +    $chado_join_tables = array_merge(array('Select a Join Table',), $chado_join_tables);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // get list of all handlers
 | 
	
		
			
				|  |  |      $all_handlers = tripal_core_views_integration_discover_handlers();
 | 
	
		
			
				|  |  |      $handlers_fields = array();
 | 
	
		
			
				|  |  |      $handlers_filters = array();
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -    $handlers_fields[] = "Select a Field Handler";
 | 
	
		
			
				|  |  | -    $handlers_filters[] = "Select a Filter Handler";
 | 
	
		
			
				|  |  | +    $handlers_sort = array();
 | 
	
		
			
				|  |  | +    $handlers_arguments = array();
 | 
	
		
			
				|  |  | +    $handlers_join = array();
 | 
	
		
			
				|  |  | +    $handlers_rel = array();
 | 
	
		
			
				|  |  | +    $handlers_fields[0] = "Select a field handler"; 
 | 
	
		
			
				|  |  | +    $handlers_filters[0] = "Select a filter handler";
 | 
	
		
			
				|  |  | +    $handlers_sort[0] = "Select a sort handler";
 | 
	
		
			
				|  |  | +    $handlers_argument[0] = "Select an argument handler";
 | 
	
		
			
				|  |  | +    $handlers_join[0] = "Select a join handler";
 | 
	
		
			
				|  |  | +    $handlers_rel[0] = "Select a relationship handler";
 | 
	
		
			
				|  |  |      foreach($all_handlers as $handler){
 | 
	
		
			
				|  |  |         if(preg_match("/views_handler_field/",$handler)){
 | 
	
		
			
				|  |  | -          $handlers_fields[] = $handler;
 | 
	
		
			
				|  |  | +          $handlers_fields[$handler] = $handler;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if(preg_match("/views_handler_filter/",$handler)){
 | 
	
		
			
				|  |  | -          $handlers_filters[] = $handler;
 | 
	
		
			
				|  |  | +          $handlers_filters[$handler] = $handler;
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       if(preg_match("/views_handler_sort/",$handler)){
 | 
	
		
			
				|  |  | +          $handlers_sort[$handler] = $handler;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | +       if(preg_match("/views_handler_argument/",$handler)){
 | 
	
		
			
				|  |  | +          $handlers_argument[$handler] = $handler;
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       if(preg_match("/views_handler_join/",$handler)){
 | 
	
		
			
				|  |  | +          $handlers_join[$handler] = $handler;
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       if(preg_match("/views_handler_relationship/",$handler)){
 | 
	
		
			
				|  |  | +          $handlers_rel[$handler] = $handler;
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // generate a unique $table_id for keeping track of the table
 | 
	
		
			
				|  |  | +    if($mview_id){
 | 
	
		
			
				|  |  | +       $table_id = $mview_id;
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +       $table_id = $table_name;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // now iterate through the columns of the materialized view or 
 | 
	
		
			
				|  |  | +    // chado table and generate the join and handler fields
 | 
	
		
			
				|  |  |      foreach ($columns as $column){
 | 
	
		
			
				|  |  |        $column = trim($column);  // trim trailing and leading spaces
 | 
	
		
			
				|  |  |        preg_match("/^(.*?)\ (.*?)$/",$column,$matches);
 | 
	
		
			
				|  |  |        $column_name = $matches[1];
 | 
	
		
			
				|  |  |        $column_type = $matches[2];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      $form['view_setup_table']["fields_start_$mview_id-$i"] = array(
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_start_$table_id-$i"] = array(
 | 
	
		
			
				|  |  |             '#type' => 'markup',
 | 
	
		
			
				|  |  |             '#value' => "<div class=\"fields-new-row\">",
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      $form['view_setup_table']["fields_name_$mview_id-$i"] = array(
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_name_$table_id-$i"] = array(
 | 
	
		
			
				|  |  |          '#type' => 'markup',
 | 
	
		
			
				|  |  |          '#attributes' => array('class' => 'fields-column-name'),
 | 
	
		
			
				|  |  |          '#value' => "<div class=\"column-id\">".
 | 
	
		
			
				|  |  | -                      "<span class=\"column-name\">$column_name</span>".
 | 
	
		
			
				|  |  | -                      "<br><span class=\"column-type\">$column_type</span>".
 | 
	
		
			
				|  |  | +                    "<span class=\"column-name\">$column_name</span>".
 | 
	
		
			
				|  |  | +                    "<br><span class=\"column-type\">$column_type</span>".
 | 
	
		
			
				|  |  |                      "</div>".
 | 
	
		
			
				|  |  |                      "<div class=\"column-form-fields\"><div class=\"column-one\">",
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |        $data['field_types'][$column_name] = $column_type;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      $table = 0;
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -//       if(isset($setup_id) && $mview_joins["$p"]->chado_table_join == $form_state['storage']["fields_join_$mview_id-$i"]){
 | 
	
		
			
				|  |  | -      if(isset($setup_id) && !isset($form_state['storage']["fields_join_$mview_id-$i"])){
 | 
	
		
			
				|  |  | -      	$p = $i - 1;
 | 
	
		
			
				|  |  | -      	$table = $mview_joins["$p"]->chado_table_join;
 | 
	
		
			
				|  |  | -      	$form_state['storage']["fields_join_$mview_id-$i"] = $table;
 | 
	
		
			
				|  |  | +      // set the default values for the join table and columns
 | 
	
		
			
				|  |  | +      $default_join_table = 0;
 | 
	
		
			
				|  |  | +      $default_join_field = 0;
 | 
	
		
			
				|  |  | +      if(isset($setup_id) && !isset($form_state['storage']["fields_join_$table_id-$i"])){
 | 
	
		
			
				|  |  | +      	$default_join_table = $default_joins[$column_name]['left_table'];
 | 
	
		
			
				|  |  | +      	$default_join_field = $default_joins[$column_name]['left_field'];
 | 
	
		
			
				|  |  | +      	$form_state['storage']["fields_join_$table_id-$i"] = $default_join_table;
 | 
	
		
			
				|  |  | +      	$form_state['storage']["fields_join_column_$table_id-$i"] = $default_join_field;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        else{
 | 
	
		
			
				|  |  | -      	$table = $form_state['storage']["fields_join_$mview_id-$i"];
 | 
	
		
			
				|  |  | +      	$default_join_table = $form_state['storage']["fields_join_$table_id-$i"];
 | 
	
		
			
				|  |  | +      	$default_join_field = $form_state['storage']["fields_join_column_$table_id-$i"];
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -      $form['view_setup_table']["fields_join_$mview_id-$i"] = array(
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_join_$table_id-$i"] = array(
 | 
	
		
			
				|  |  |          '#type' => 'select',
 | 
	
		
			
				|  |  |          '#prefix' => "<div class=\"fields-column-join\">",
 | 
	
		
			
				|  |  |          '#suffix' => "</div>",
 | 
	
		
			
				|  |  | -        '#options' => $chado_tables,
 | 
	
		
			
				|  |  | +        '#options' => $chado_join_tables,
 | 
	
		
			
				|  |  |          '#required' => FALSE,
 | 
	
		
			
				|  |  | -        '#default_value' => $table,
 | 
	
		
			
				|  |  | +        '#default_value' => $default_join_table,
 | 
	
		
			
				|  |  |          '#ahah' => array(
 | 
	
		
			
				|  |  | -           'path' => ahah_helper_path(array("view_setup_table","fields_join_column_$mview_id-$i")),
 | 
	
		
			
				|  |  | -           'wrapper' => "fields-column-join-column-$mview_id-$i",
 | 
	
		
			
				|  |  | +           'path' => ahah_helper_path(array("view_setup_table","fields_join_column_$table_id-$i")),
 | 
	
		
			
				|  |  | +           'wrapper' => "fields-column-join-column-$table_id-$i",
 | 
	
		
			
				|  |  |             'effect' => 'fade',
 | 
	
		
			
				|  |  |             'event' => 'change',
 | 
	
		
			
				|  |  |             'method' => 'replace',
 | 
	
		
			
				|  |  |           ),
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  | -      if($table){
 | 
	
		
			
				|  |  | -        $table_desc = module_invoke_all('chado_'.$table.'_schema');
 | 
	
		
			
				|  |  | -        $columns = array_keys($table_desc['fields']);
 | 
	
		
			
				|  |  | +      $columns = array();
 | 
	
		
			
				|  |  | +      if($default_join_table){
 | 
	
		
			
				|  |  | +        $table_desc = module_invoke_all('chado_'.$default_join_table.'_schema');
 | 
	
		
			
				|  |  | +        foreach ($table_desc['fields'] as $column => $def){
 | 
	
		
			
				|  |  | +           $columns[$column] = $column;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        } else {
 | 
	
		
			
				|  |  |          $columns = array('Select Join Column');
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -      $form['view_setup_table']["fields_join_column_$mview_id-$i"] = array(
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_join_column_$table_id-$i"] = array(
 | 
	
		
			
				|  |  |          '#type' => 'select',
 | 
	
		
			
				|  |  | -        '#prefix' => "  <div id=\"fields-column-join-column-$mview_id-$i\" class=\"fields-column-join-column\">",
 | 
	
		
			
				|  |  | +        '#prefix' => "  <div id=\"fields-column-join-column-$table_id-$i\" class=\"fields-column-join-column\">",
 | 
	
		
			
				|  |  |          '#suffix' => "</div></div>",
 | 
	
		
			
				|  |  |          '#options' => $columns,
 | 
	
		
			
				|  |  |          '#required' => FALSE,
 | 
	
		
			
				|  |  | +        '#default_value' => $default_join_field
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -      $form['view_setup_table']["fields_field_handler_$mview_id-$i"] = array(
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // create the handler fields
 | 
	
		
			
				|  |  | +      $default_field_handler = 0;
 | 
	
		
			
				|  |  | +      if(isset($setup_id) && !isset($form_state['storage']["fields_field_handler_$table_id-$i"])){
 | 
	
		
			
				|  |  | +         $default_field_handler = $default_handlers[$column_name]['field']['handler_name'];
 | 
	
		
			
				|  |  | +         $form_state['storage']["fields_field_handler_$table_id-$i"] = $default_field_handler;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      else {
 | 
	
		
			
				|  |  | +      	$default_field_handler = $form_state['storage']["fields_field_handler_$table_id-$i"];
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_field_handler_$table_id-$i"] = array(
 | 
	
		
			
				|  |  |           '#type' => 'select',
 | 
	
		
			
				|  |  |           '#prefix' => "<div class=\"column-two\">".
 | 
	
		
			
				|  |  |                          "<div class=\"fields-field-handler\">",
 | 
	
		
			
				|  |  |           '#suffix' => "</div>",
 | 
	
		
			
				|  |  |           '#options' => $handlers_fields,
 | 
	
		
			
				|  |  |           '#required' => FALSE,
 | 
	
		
			
				|  |  | +         '#default_value' => $default_field_handler,
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      $form['view_setup_table']["fields_filter_handler_$mview_id-$i"] = array(
 | 
	
		
			
				|  |  | +      $default_filter_handler = 0;
 | 
	
		
			
				|  |  | +      if(isset($setup_id) && !isset($form_state['storage']["fields_filter_handler_$table_id-$i"])){
 | 
	
		
			
				|  |  | +         $default_filter_handler = $default_handlers[$column_name]['filter']['handler_name'];
 | 
	
		
			
				|  |  | +         $form_state['storage']["fields_filter_handler_$table_id-$i"]= $default_filter_handler;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      else {
 | 
	
		
			
				|  |  | +         $default_filter_handler = $form_state['storage']["fields_filter_handler_$table_id-$i"];
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_filter_handler_$table_id-$i"] = array(
 | 
	
		
			
				|  |  |          '#type' => 'select',
 | 
	
		
			
				|  |  |          '#prefix' => "<div class=\"fields-filter-handler\">",
 | 
	
		
			
				|  |  | -        '#suffix' => "</div></div>",
 | 
	
		
			
				|  |  | +        '#suffix' => "</div>",
 | 
	
		
			
				|  |  |          '#options' => $handlers_filters,
 | 
	
		
			
				|  |  |          '#required' => FALSE,
 | 
	
		
			
				|  |  | +         '#default_value' => $default_filter_handler,
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -      if(isset($setup_id)){
 | 
	
		
			
				|  |  | -        $column_name = $mview_joins["$p"]->view_column;
 | 
	
		
			
				|  |  | -        $default_handlers = db_fetch_object(db_query("SELECT handler_filter, handler_field FROM {tripal_views_handlers} WHERE setup_id = '$setup_id' AND column_name = '$column_name';"));
 | 
	
		
			
				|  |  | -        $default_field_handler = array_keys($handlers_fields, $default_handlers->handler_field, TRUE);
 | 
	
		
			
				|  |  | -        $default_field_handler = $default_field_handler[0];
 | 
	
		
			
				|  |  | -        $form['view_setup_table']["fields_field_handler_$mview_id-$i"]['#default_value'] = $default_field_handler;
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        $default_filter_handler = array_keys($handlers_filters, $default_handlers->handler_filter, TRUE);
 | 
	
		
			
				|  |  | -        $default_filter_handler = $default_filter_handler['0'];
 | 
	
		
			
				|  |  | -        $form['view_setup_table']["fields_filter_handler_$mview_id-$i"]['#default_value'] = $default_filter_handler;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      $default_sort_handler = 0;
 | 
	
		
			
				|  |  | +      if(isset($setup_id) && !isset($form_state['storage']["fields_sort_handler_$table_id-$i"])){
 | 
	
		
			
				|  |  | +         $default_sort_handler = $default_handlers[$column_name]['sort']['handler_name'];
 | 
	
		
			
				|  |  | +         $form_state['storage']["fields_sort_handler_$table_id-$i"] = $default_sort_handler;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      else {
 | 
	
		
			
				|  |  | +         $default_sort_handler = $form_state['storage']["fields_sort_handler_$table_id-$i"];
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_sort_handler_$table_id-$i"] = array(
 | 
	
		
			
				|  |  | +        '#type' => 'select',
 | 
	
		
			
				|  |  | +        '#prefix' => "<div class=\"fields-sort-handler\">",
 | 
	
		
			
				|  |  | +        '#suffix' => "</div>",
 | 
	
		
			
				|  |  | +        '#options' => $handlers_sort,
 | 
	
		
			
				|  |  | +        '#required' => FALSE,
 | 
	
		
			
				|  |  | +         '#default_value' => $default_sort_handler,
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      $default_argument_handler = 0;
 | 
	
		
			
				|  |  | +      if(isset($setup_id) && !isset($form_state['storage']["fields_argument_handler_$table_id-$i"])){
 | 
	
		
			
				|  |  | +         $default_argument_handler = $default_handlers[$column_name]['argument']['handler_name'];
 | 
	
		
			
				|  |  | +         $form_state['storage']["fields_argument_handler_$table_id-$i"]=$default_argument_handler ;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      else {
 | 
	
		
			
				|  |  | +         $default_argument_handler = $form_state['storage']["fields_argument_handler_$table_id-$i"];
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_argument_handler_$table_id-$i"] = array(
 | 
	
		
			
				|  |  | +        '#type' => 'select',
 | 
	
		
			
				|  |  | +        '#prefix' => "<div class=\"fields-argument-handler\">",
 | 
	
		
			
				|  |  | +        '#suffix' => "</div>",
 | 
	
		
			
				|  |  | +        '#options' => $handlers_argument,
 | 
	
		
			
				|  |  | +        '#required' => FALSE,
 | 
	
		
			
				|  |  | +         '#default_value' => $default_argument_handler,
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      $default_relationship_handler = 0;
 | 
	
		
			
				|  |  | +      if(isset($setup_id) && !isset($form_state['storage']["fields_relationship_handler_$table_id-$i"])){
 | 
	
		
			
				|  |  | +         $default_relationship_handler = $default_handlers[$column_name]['relationship']['handler_name'];
 | 
	
		
			
				|  |  | +         $form_state['storage']["fields_relationship_handler_$table_id-$i"]=$default_relationship_handler;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      else {
 | 
	
		
			
				|  |  | +         $default_relationship_handler = $form_state['storage']["fields_relationship_handler_$table_id-$i"];
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_relationship_handler_$table_id-$i"] = array(
 | 
	
		
			
				|  |  | +        '#type' => 'select',
 | 
	
		
			
				|  |  | +        '#prefix' => "<div class=\"fields-relationship-handler\">",
 | 
	
		
			
				|  |  | +        '#suffix' => "</div>",
 | 
	
		
			
				|  |  | +        '#options' => $handlers_rel,
 | 
	
		
			
				|  |  | +        '#required' => FALSE,
 | 
	
		
			
				|  |  | +         '#default_value' => $default_relationship_handler,
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      $default_join_handler = 0;
 | 
	
		
			
				|  |  | +      if(isset($setup_id) && !isset($form_state['storage']["fields_join_handler_$table_id-$i"])){
 | 
	
		
			
				|  |  | +         $default_join_handler = $default_handlers[$column_name]['join']['handler_name'];
 | 
	
		
			
				|  |  | +         $form_state['storage']["fields_join_handler_$table_id-$i"]=$default_join_handler;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | +      else {
 | 
	
		
			
				|  |  | +         $default_join_handler = $form_state['storage']["fields_join_handler_$table_id-$i"];
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      $form['view_setup_table']["fields_join_handler_$table_id-$i"] = array(
 | 
	
		
			
				|  |  | +        '#type' => 'select',
 | 
	
		
			
				|  |  | +        '#prefix' => "<div class=\"fields-join-handler\">",
 | 
	
		
			
				|  |  | +        '#suffix' => "</div></div>",
 | 
	
		
			
				|  |  | +        '#options' => $handlers_join,
 | 
	
		
			
				|  |  | +        '#required' => FALSE,
 | 
	
		
			
				|  |  | +         '#default_value' => $default_join_handler,
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  |        $form['view_setup_table']["fields_end_$i"] = array(
 | 
	
		
			
				|  |  |          '#type' => 'markup',
 | 
	
	
		
			
				|  | @@ -410,7 +515,7 @@ function tripal_core_views_integration_new_setup_form(&$form_state, $setup_id =
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    //use this to put values into $form_state['values']
 | 
	
		
			
				|  |  | -  $form['data'] = array();
 | 
	
		
			
				|  |  | +  $form['data'] = array();   
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    //need to find out if storing $form['data'][$key]['#value'] = $value <- is an issue
 | 
	
		
			
				|  |  |    //since it will give me errors if i try to stare an array instead of $value
 | 
	
	
		
			
				|  | @@ -422,6 +527,8 @@ function tripal_core_views_integration_new_setup_form(&$form_state, $setup_id =
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  $form['#redirect'] = 'admin/tripal/views/integration';   
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    return $form;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -430,58 +537,120 @@ function tripal_core_views_integration_new_setup_form(&$form_state, $setup_id =
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @ingroup tripal_views_integration
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -function tripal_core_views_integration_new_setup_form_validate($form, &$form_state){
 | 
	
		
			
				|  |  | +function tripal_core_views_integration_form_validate($form, &$form_state){
 | 
	
		
			
				|  |  |    $name_array = explode(" ", $form_state['values']['row_name']);
 | 
	
		
			
				|  |  | +  $mview_id = $form_state['values']['mview_id'];
 | 
	
		
			
				|  |  | +  $table_name = $form_state['values']['table_name'];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if(count($name_array) > 1){
 | 
	
		
			
				|  |  | -    form_set_error($form_state['values']['row_name'], 'Name must be ONE word only.');
 | 
	
		
			
				|  |  | +    form_set_error($form_state['values']['row_name'], 'The View type name must be a single word only.');
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  if($mview_id and $table_name){
 | 
	
		
			
				|  |  | +    form_set_error($form_state['values']['mview_id'], 'Please select either a materialized view or a Chado table but not both');
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  if(!$mview_id and !$table_name){
 | 
	
		
			
				|  |  | +    form_set_error($form_state['values']['mview_id'], 'Please select either a materialized view or a Chado table');
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  //TODO: write validation function for this new form
 | 
	
		
			
				|  |  | +  // TODO: do we need to require that a handler be set for each field and each type of handler?
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @ingroup tripal_views_integration
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -function tripal_core_views_integration_new_setup_form_submit($form, &$form_state){
 | 
	
		
			
				|  |  | -  dpm($form);
 | 
	
		
			
				|  |  | -  dpm($form_state);
 | 
	
		
			
				|  |  | +function tripal_core_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'];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   if($mview_id){
 | 
	
		
			
				|  |  | +      $table_id = $mview_id;
 | 
	
		
			
				|  |  | +   } else {
 | 
	
		
			
				|  |  | +      $table_id = $table_name;
 | 
	
		
			
				|  |  | +   }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  $name = $form_state['values']['row_name'];
 | 
	
		
			
				|  |  | -  $mview_id = $form_state['values']['mview_id'];
 | 
	
		
			
				|  |  | -  $tripal_views_integration_record = array(
 | 
	
		
			
				|  |  | -    'mview_id' => $mview_id,
 | 
	
		
			
				|  |  | -    'name' => $name,
 | 
	
		
			
				|  |  | -  	 'description' => $form_state['values']['row_description'],
 | 
	
		
			
				|  |  | -  );
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  //delete records by setup id if
 | 
	
		
			
				|  |  | -  if($form_state['values']['hidden_edited']){
 | 
	
		
			
				|  |  | -    tripal_core_delete_mview_int_by_id($form_state['values']['setup_id']);
 | 
	
		
			
				|  |  | -//     $tripal_views_integration_record['setup_id'] = $form_state['values']['setup_id'];
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  drupal_write_record('tripal_views_integration', $tripal_views_integration_record);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $i = 1;
 | 
	
		
			
				|  |  | -  foreach ($form_state['values']['field_types'] as $key => $value){
 | 
	
		
			
				|  |  | -    $mview_join_record = array(
 | 
	
		
			
				|  |  | -        'setup_id' => $tripal_views_integration_record['setup_id'],
 | 
	
		
			
				|  |  | -        'view_table' => $form['mview_id']['#options'][$form_state['values']['mview_id']],
 | 
	
		
			
				|  |  | -        'view_column' => $key,
 | 
	
		
			
				|  |  | -        'chado_table_join' => $form_state['values']["fields_join_$mview_id-$i"],
 | 
	
		
			
				|  |  | -        'chado_column' => $form['view_setup_table']["fields_join_column_$mview_id-$i"]['#options'][$form_state['values']["fields_join_column_$mview_id-$i"]],
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -    drupal_write_record('tripal_mviews_join', $mview_join_record);
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -    $handlers_record = array(
 | 
	
		
			
				|  |  | -      'setup_id' => $tripal_views_integration_record['setup_id'],
 | 
	
		
			
				|  |  | -      'column_name' => $key,//TODO: should we change this to an mview_join_id from tripal_view_join?
 | 
	
		
			
				|  |  | -      'handler_filter' => $form['view_setup_table']["fields_filter_handler_$mview_id-$i"]['#options'][$form_state['values']["fields_filter_handler_$mview_id-$i"]],
 | 
	
		
			
				|  |  | -    	'handler_field' => $form['view_setup_table']["fields_field_handler_$mview_id-$i"]['#options'][$form_state['values']["fields_field_handler_$mview_id-$i"]],
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -    drupal_write_record('tripal_views_handlers', $handlers_record);
 | 
	
		
			
				|  |  | -    $i++;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +   // 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 = $mview_id";
 | 
	
		
			
				|  |  | +      $mview = db_fetch_object(db_query($sql));      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // build the record for insert/update
 | 
	
		
			
				|  |  | +      $tripal_views_record = array(
 | 
	
		
			
				|  |  | +       'mview_id' => $mview_id,
 | 
	
		
			
				|  |  | +       'name' => $name,
 | 
	
		
			
				|  |  | +       'comment' => $form_state['values']['row_description'],
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      if(!$setup_id){  // this is an insert
 | 
	
		
			
				|  |  | +         if(!drupal_write_record('tripal_views', $tripal_views_record)){
 | 
	
		
			
				|  |  | +            drupal_set_message("Failed to add record.");
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +         }
 | 
	
		
			
				|  |  | +      } else {  // this is an update
 | 
	
		
			
				|  |  | +         $tripal_views_record['setup_id'] = $setup_id;
 | 
	
		
			
				|  |  | +         if(!drupal_write_record('tripal_views', $tripal_views_record,array('setup_id'))){
 | 
	
		
			
				|  |  | +            drupal_set_message("Failed to update record.");
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +         }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +   } 
 | 
	
		
			
				|  |  | +   // if a chado table then...
 | 
	
		
			
				|  |  | +   if($table_name){
 | 
	
		
			
				|  |  | +      // TODO: add code to update tables for Chado table
 | 
	
		
			
				|  |  | +   }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  | +   // 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_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 ($form_state['values']['field_types'] as $key => $value){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 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){
 | 
	
		
			
				|  |  | +         $view_join_record = array(
 | 
	
		
			
				|  |  | +           'setup_id' => $tripal_views_record['setup_id'],
 | 
	
		
			
				|  |  | +           'base_table' => $mview->mv_table,
 | 
	
		
			
				|  |  | +           'base_field' => $key,
 | 
	
		
			
				|  |  | +           'left_table' => $left_table,
 | 
	
		
			
				|  |  | +           'left_field' => $left_column,
 | 
	
		
			
				|  |  | +         );
 | 
	
		
			
				|  |  | +         
 | 
	
		
			
				|  |  | +         // 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('Record Updated');
 | 
	
		
			
				|  |  | +   } else {
 | 
	
		
			
				|  |  | +      drupal_set_message('Record Added');
 | 
	
		
			
				|  |  | +   }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 |