function tripal_bulk_loader_edit_template_record_form_submit

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

Edit Record Form Submit

D7 @todo: Needs to be debugged

Parameters

$form: The form that was submitted

$form_state: Contains the values and storage for the form

Related topics

File

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

Code

function tripal_bulk_loader_edit_template_record_form_submit($form, &$form_state) {

  if ($form_state['values']['op'] == 'Save Record') {

    $template = $form_state['storage']['template_array'];
    $original_record_name = $template[$form_state['storage']['original_priority']]['record_id'];

    // Edit Record
    $record = $template[$form_state['storage']['original_priority']];
    $record['record_id'] = $form_state['values']['record_name'];
    $record['mode'] = $form_state['values']['mode'];
    $record['table'] = $form_state['values']['chado_table'];
    $record['select_if_duplicate'] = $form_state['values']['select_if_duplicate'];
    $record['update_if_duplicate'] = $form_state['values']['update_if_duplicate'];
    $record['select_optional'] = $form_state['values']['select_optional'];
    $record['disable'] = $form_state['values']['disable'];
    $record['optional'] = $form_state['values']['optional'];

    if ($form_state['storage']['original_priority'] != $form_state['values']['field_group']) {
      $record['fields'] = array_merge($record['fields'], $template[$form_state['values']['field_group']]['fields']);
      $template[$form_state['values']['field_group']] = $record;
      unset($template[$form_state['storage']['original_priority']]);
    }
    else {
      $template[$form_state['storage']['original_priority']] = $record;
    }

    // Go through all records and update this record name where it was used for a foreign key
    // Foreach field in each record that is of type: foreign key
    foreach ($template as $priority => $record) {
      foreach ($record['fields'] as $field_index => $field) {
        if ($field['type'] === 'foreign key') {
          // Check if this points to the old record name and if so, update it
          if ($field['foreign key'] === $original_record_name) {
            $template[$priority]['fields'][$field_index]['foreign key'] = $form_state['values']['record_name'];
          }
        }
      }
    }

    // Save Template
    $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('Successfully Updated Template Record'));
      drupal_set_message(t('Template Saved.'));

      $form_state['rebuild'] = FALSE;
      $form_state['redirect'] = 'admin/tripal/loaders/bulk/template/' . $form_state['storage']['template']->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 ($form_state['values']['op'] == 'Cancel') {
    $form_state['rebuild'] = FALSE;
    $form_state['redirect'] = 'admin/tripal/loaders/bulk/template/' . $form_state['storage']['template']->template_id . '/edit';
  }

}