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 481
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) {
  $save = TRUE;
  $form_state['rebuild'] = TRUE;

  if ($form_state['storage']['template_id']) {
    $sql = "SELECT * FROM {tripal_bulk_loader_template} WHERE template_id=:template";
    $result = db_query($sql, array(':template' => $form_state['storage']['template_id']))->fetchObject();
    $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=:template";
      $result = db_query($sql, array(':template' => $form_state['storage']['template_id']))->fetchObject();
      $form_state['storage']['template'] = unserialize($result->template_array);
      $form_state['storage']['template_name'] = $result->name;

      // rebuild the record2priority for the $form_state['storage'] array
      $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;
      }

      $form_state['rebuild'] = FALSE;
      $form_state['redirect'] = 'admin/tripal/loaders/bulk/template/' . $form_state['storage']['template_id'] . '/edit';
      break;

    case 'Create Template':
      $record = array(
        'name' => $form_state['values']['new_template_name'],
        'template_array' => serialize(array()),
        'created' => time(),
        'changed' => time()
      );
      $result = 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();
      $form_state['rebuild'] = FALSE;
      $form_state['redirect'] = 'admin/tripal/loaders/bulk/template/' . $record['template_id'] . '/edit';
      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':
      $template_id = $form_state['storage']['template_id'] ? $form_state['storage']['template_id'] : 'O';
      $form_state['rebuild'] = FALSE;
      $form_state['redirect'] = "admin/tripal/loaders/bulk/template/$template_id/add_record";
      $save = FALSE;
      break;

  } //end of switch

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

}