function tripal_bulk_loader_modify_template_base_form_submit

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

Submit for tripal_bulk_loader_modify_template_base_form

Related topics

File

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

Code

function tripal_bulk_loader_modify_template_base_form_submit($form, &$form_state) {

  $form_state['rebuild'] = TRUE;
  if ($form_state['storage']['template_id']) {
    $sql = "SELECT * FROM {tripal_bulk_loader_template} WHERE template_id=%d";
    $result = db_fetch_object(db_query($sql, $form_state['storage']['template_id']));
    $form_state['storage']['template'] = unserialize($result->template_array);
  }

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

  // part of fix for 1st button set not working on records list (edit record, duplicate record, add field)
  if ($form_state['clicked_button']['#name'] === 'zero') {
    $form_state['clicked_button']['#name'] = '0';
  }

  switch ($op) {
    // Initialize after template is chosen ----------------------------------------
    case 'Edit Template':
      $form_state['storage']['template_id'] = $form_state['values']['template_id'];

      $sql = "SELECT * FROM {tripal_bulk_loader_template} WHERE template_id=%d";
      $result = db_fetch_object(db_query($sql, $form_state['storage']['template_id']));
      $form_state['storage']['template'] = unserialize($result->template_array);
      $form_state['storage']['template_name'] = $result->name;

      $form_state['storage']['record2priority'] = array();
      foreach ($form_state['storage']['template'] as $priority => $record_array) {
        if (!is_array($record_array)) {
          continue;
        }
        $form_state['storage']['record2priority'][$record_array['record_id']] = $priority;
      }
      break;

    case 'Create Template':
      $record = array(
        'name' => $form_state['values']['new_template_name'],
        'template_array' => array(),
      );
      drupal_write_record('tripal_bulk_loader_template', $record);
      $form_state['storage']['template_id'] = $record['template_id'];
      $form_state['storage']['template_name'] = $record['name'];
      $form_state['storage']['template'] = array();
      break;

      // Save Reordered Records -----------------------------------------------------
    case 'Save Order':
      $new_template = $form_state['storage']['template'];
      // unset old elements
      $form_state['storage']['record2priority'] = array();
      foreach ($new_template as $priority => $record_array) {
        if (preg_match('/\d+/', $priority)) {
          unset($new_template[$priority]);
        }
      }
      //set elements in new order
      foreach ($form_state['values']['records-data'] as $item) {
        $new_template[$item['new_priority']] = $form_state['storage']['template'][$item['old_priority']];
        $record_name = $new_template[$item['new_priority']]['record_id'];
        $form_state['storage']['record2priority'][$record_name] = $item['new_priority'];
      }
      ksort($new_template);
      $form_state['storage']['template'] = $new_template;
      break;

    case 'New Record/Field':
      $query = array(
        'template_id' => $form_state['storage']['template_id'],
        'record_id' => 'NEW',
      );
      drupal_goto('admin/tripal/tripal_bulk_loader_template/add_field', $query);
      break;

    case 'Edit Record':
      $query = array(
        'template_id' => $form_state['storage']['template_id'],
        'record_id' => $form_state['clicked_button']['#name'],
      );
      drupal_goto('admin/tripal/tripal_bulk_loader_template/edit_record', $query);
      break;

    case 'Delete Record':
      $form_state['storage']['record2priority'] = array();
      $new_template = tripal_bulk_loader_delete_record($form_state['clicked_button']['#name'], $form_state['storage']['template']);
      if (!empty($new_template)) {
        $form_state['storage']['template'] = $new_template;
      }
      break;

    case 'Add Field':
      $query = array(
        'template_id' => $form_state['storage']['template_id'],
        'record_id' => $form_state['clicked_button']['#name'],
      );
      drupal_goto('admin/tripal/tripal_bulk_loader_template/add_field', $query);
      break;

    case 'Duplicate Record':
      // original record (one to be duplicated)
      $orig_priority = $form_state['clicked_button']['#name'];
      $record = $form_state['storage']['template'][$orig_priority];

      // new record
      $new_priority = sizeof($form_state['storage']['template']) + 1;
      $record['record_id'] = $record['record_id'] . '_' . date('YzHi');
      $form_state['storage']['template'][$new_priority] = $record;
      break;

    case 'Edit Field':
      $field_data_index = $form_state['clicked_button']['#name'];
      $query = array(
        'template_id' => $form_state['storage']['template_id'],
        'record_id' => $form_state['values']['fields-data'][$field_data_index]['priority_hidden'],
        'field_index' => $form_state['values']['fields-data'][$field_data_index]['field_index'],
      );
      drupal_goto('admin/tripal/tripal_bulk_loader_template/edit_field', $query);
      break;

    case 'Delete Field':
      // Delete Field
      $field_data = $form_state['values']['fields-data'][$form_state['clicked_button']['#name']];
      $priority = $field_data['priority_hidden'];
      $field_key = $field_data['field_index'];
      $new_template = tripal_bulk_loader_delete_field($priority, $field_key, $form_state['storage']['template']);
      if (!empty($new_template)) {
        $form_state['storage']['template'] = $new_template;
      }
      drupal_set_message(t('Deleted Field from Template.'));
      break;
  } //end of switch

  // Save Template
  $record = array(
    'template_id' => $form_state['storage']['template_id'],
    'template_array' => serialize($form_state['storage']['template'])
  );
  drupal_write_record('tripal_bulk_loader_template', $record, array('template_id'));
  drupal_set_message(t('Template Saved.'));

}