function tripal_bulk_loader_add_template_field_form_submit

1.x tripal_bulk_loader.admin.templates.inc tripal_bulk_loader_add_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 1611
All functions in this file pertain to administrative management of bulk loader templates

Code

function tripal_bulk_loader_add_template_field_form_submit($form, &$form_state) {

  $op = $form_state['values'][$form_state['clicked_button']['#name']];

  if (!$form_state['ahah_submission']) {
    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;

      }
      else {
        $priority = $form_state['values']['field_group'];
        $record_name = $record2priority[$priority];
      }

      // 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'],
        );
      }

      // Deal with any additional options
      if ($form_state['storage']['regex']) {
        $field['regex'] = $form_state['storage']['regex'];
      }

      // Save Template
      $template[$priority]['fields'][] = $field;
      $form_state['storage']['template']->template_array = serialize($template);
      $success = drupal_write_record('tripal_bulk_loader_template', $form_state['storage']['template'], array('template_id'));

      if ($success) {
        drupal_set_message(t('Successfully Added Field to Template'));
        drupal_set_message(t('Template Saved.'));

        $path = explode('?', $form_state['storage']['referring URL']);
        parse_str($path[1], $query);
        $query['template_id'] = $form_state['storage']['template']->template_id;
        drupal_goto($path[0], $query);
      }
      else {
        drupal_set_message(t('Unable to Save Template!'), 'error');
        watchdog('T_bulk_loader', 
        'Unable to save bulk loader template: %template', 
        array('%template' => print_r($form_state['storage']['template'], TRUE)), 
        WATCHDOG_ERROR
        );
      }
    }
    elseif ($op == 'Cancel') {
      $path = explode('?', $form_state['storage']['referring URL']);
      parse_str($path[1], $query);
      $query['template_id'] = $form_state['storage']['template']->template_id;
      drupal_goto($path[0], $query);
    }
    elseif ($op == 'Add Transformation') {

      // Add transformation rule to original field
      $form_state['storage']['regex']['pattern'][] = '/' . $form_state['values']['pattern'] . '/';
      $form_state['storage']['regex']['replace'][] = $form_state['values']['replace'];
      drupal_set_message(t('Successfully Added Transformation Rule'));

    }
    elseif ($op == 'Save Transformation Rule Order') {

      // Generate new regex array
      $new_regex = array();
      $old_regex = $form_state['storage']['regex'];
      foreach ($form_state['values']['regex-data'] as $key => $element) {
        $new_regex['pattern'][$element['new_index']] = $old_regex['pattern'][$element['old_index']];
        $new_regex['replace'][$element['new_index']] = $old_regex['replace'][$element['old_index']];
      }

      // sort new regex arrays
      ksort($new_regex['pattern']);
      ksort($new_regex['replace']);

      $form_state['storage']['regex'] = $new_regex;
    }
    elseif ($op == 'Delete Transformation') {

      // Unset regex rule
      $index = $form_state['clicked_button']['#name'];
      unset($form_state['storage']['regex']['pattern'][$index]);
      unset($form_state['storage']['regex']['replace'][$index]);

    }
    elseif ($op == 'Test Transformation Rules') {

      $patterns = $form_state['storage']['regex']['pattern'];
      $replaces = $form_state['storage']['regex']['replace'];
      $test_string = $form_state['values']['test_string'];
      $form_state['storage']['test_regex_result'] = preg_replace($patterns, $replaces, $test_string);
      $form_state['storage']['test_regex_test'] = $test_string;
    }
  }

}