function tripal_bulk_loader_template_field_form_submit

2.x tripal_bulk_loader.admin.templates.inc tripal_bulk_loader_template_field_form_submit($form, &$form_state)
3.x tripal_bulk_loader.admin.templates.inc tripal_bulk_loader_template_field_form_submit($form, &$form_state)

Add Field Submit

Parameters

$form: The form that was submitted

$form_state: The values and storage for the form

Related topics

File

tripal_bulk_loader/includes/tripal_bulk_loader.admin.templates.inc, line 2249
All functions in this file pertain to administrative management of bulk loader templates

Code

function tripal_bulk_loader_template_field_form_submit($form, &$form_state) {

  $op = $form_state['values'][$form_state['clicked_button']['#name']];
  if ($op == 'Save Changes') {

    $template = $form_state['storage']['template_array'];

    // If new record
    if (preg_match('/NEW/', $form_state['values']['field_group'])) {
      $record_name = $form_state['values']['record_name'];
      $priority = sizeof($form_state['storage']['template_array']) + 1;
      $record2priority[$record_name] = $priority;
      $template[$priority]['table'] = $form_state['values']['chado_table'];
      $template[$priority]['record_id'] = $record_name;
      $template[$priority]['mode'] = $form_state['values']['record_mode'];
    }
    else {
      $priority = $form_state['storage']['record_id'];
    }

    // Add field to template array
    if ($form_state['values']['field_type'] == 'table field') {
      $field = array(
        'type' => 'table field',
        'title' => $form_state['values']['field_title'],
        'field' => $form_state['values']['chado_field'],
        'required' => $form_state['values']['required'],
        //'allowed values' => empty by default,
        'spreadsheet column' => $form_state['values']['column_number'],
        'exposed' => $form_state['values']['column_exposed'],
        'exposed_description' => $form_state['values']['column_exposed_desc'],
      );
    }
    elseif ($form_state['values']['field_type'] == 'constant') {
      $field = array(
        'type' => 'constant',
        'title' => $form_state['values']['field_title'],
        'field' => $form_state['values']['chado_field'],
        'required' => $form_state['values']['required'],
        //'allowed values' => empty by default,
        'constant value' => $form_state['values']['constant_value'],
        'exposed' => $form_state['values']['constant_exposed'],
        'exposed_validate' => $form_state['values']['constant_validate'],
      );
    }
    elseif ($form_state['values']['field_type'] == 'foreign key') {
      $field = array(
        'type' => 'foreign key',
        'title' => $form_state['values']['field_title'],
        'field' => $form_state['values']['chado_field'],
        'show_all_records' => $form_state['values']['show_all_records'],
        'foreign key' => $form_state['values']['foreign_record'],
        'foreign field' => $form_state['values']['foreign_field'],
        'required' => $form_state['values']['required'],
      );
    }

    // Save old transformation rules if they exist.
    if (isset($form_state['values']['old_rules'])) {
      $field['regex'] = unserialize($form_state['values']['old_rules']);
    }
    // Deal with any additional options
    if (!empty($form_state['values']['regex_pattern']) AND !empty($form_state['values']['regex_replace'])) {
      if (!preg_match('/^\/.*\/$/', $form_state['values']['regex_pattern'])) {
        $form_state['values']['regex_pattern'] = '/' . $form_state['values']['regex_pattern'] . '/';
      }
      $field['regex']['pattern'] = array($form_state['values']['regex_pattern']);
      $field['regex']['replace'] = array($form_state['values']['regex_replace']);
    }


    // Save Template
    if ($form_state['storage']['mode'] == 'create') {
      $template[$priority]['fields'][] = $field;
      $success_msg = 'Successfully Added Field to Template';
    }
    else {
      $template[$priority]['fields'][$form_state['storage']['field_index']] = $field;
      $success_msg = 'Successfully Updated Field';
    }
    $form_state['storage']['template']->template_array = serialize($template);
    $form_state['storage']['template']->changed = time();
    $success = drupal_write_record('tripal_bulk_loader_template', $form_state['storage']['template'], array('template_id'));

    if ($success) {
      drupal_set_message(t($success_msg));
      drupal_set_message(t('Template Saved.'));

      $form_state['rebuild'] = FALSE;
      $form_state['redirect'] = 'admin/tripal/loaders/bulk/template/' . $form_state['storage']['template_id'] . '/edit';
    }
    else {
      drupal_set_message(t('Unable to Save Template!'), 'error');
      tripal_report_error('T_bulk_loader', 
      TRIPAL_ERROR, 
      'Unable to save bulk loader template: %template', 
      array('%template' => print_r($form_state['storage']['template'], TRUE))
      );
    }
  }
  elseif ($op == 'Cancel') {
    $form_state['rebuild'] = FALSE;
    $form_state['redirect'] = 'admin/tripal/loaders/bulk/template/' . $form_state['storage']['template_id'] . '/edit';
  }

}