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

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 932
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) {
  //dpm($form_state, 'form state -start submit');

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

        $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 ($form_state['values']['op'] == 'Cancel') {
      $path = explode('?', $form_state['storage']['referring URL']);
      parse_str($path[1], $query);
      $query['template_id'] = $form_state['storage']['template']->template_id;
      //dpm('Redirecting to: '.$path[0].'?'.print_r($query,TRUE).' where the referring URL:'.$form_state['storage']['referring URL']);
      drupal_goto($path[0], $query);
    }
  }

}