function tripal_stock_add_ONE_relationship_form_validate

1.x tripal_stock-relationships.inc tripal_stock_add_ONE_relationship_form_validate($form, &$form_state)

Related topics

File

tripal_stock/includes/tripal_stock-relationships.inc, line 107
@todo Add file header description

Code

function tripal_stock_add_ONE_relationship_form_validate($form, &$form_state) {

  //Require Validation if adding
  if ($form_state['clicked_button']['#value'] == t('Add a Relationship')) {
    // check valid stock selected for subject
    $subject_results = tripal_stock_get_stock_by_name_identifier($form_state['values']['subject_id'], $_SESSION['organism']);
    if (sizeof($subject_results) > 1) {
      $links = array();
      for ($i = 0; $i < sizeof($subject_results); $i++) {
        $links[] = l($i + 1, "node/" . $subject_results[$i]->nid);
      }
      $message = "Too many stocks match '" . $form_state['values']['subject_id'] . "'! "
        . " Please refine your input to match ONLY ONE stock. <br />"
        . "To aid in this process, here are the stocks that match your initial input: "
        . join(', ', $links);
      form_set_error('subject_id', $message);
    }
    elseif (sizeof($subject_results) < 1) {
      form_set_error('subject_id', t("There are no stocks matching your input. Please check your input for typos and/or lookup the stock <a href='!url'>here</a>", array('!url' => url('stocks'))));
    }
    elseif (sizeof($subject_results) == 1) {
      $form_state['values']['subject_id'] = $subject_results[0]->stock->stock_id;
    }

    // check valid stock selected for object
    $object_results = tripal_stock_get_stock_by_name_identifier($form_state['values']['object_id'], $_SESSION['organism']);
    if (sizeof($object_results) > 1) {
      $links = array();
      for ($i = 0; $i < sizeof($object_results); $i++) {
        $links[] = l($i + 1, "node/" . $object_results[$i]->nid);
      }
      $message = t("Too many stocks match '%object'!  Please refine your input to match
        ONLY ONE stock. <br /> To aid in this process, here are the stocks that match your
        initial input: %stocks.", 
      array('%object' => $form_state['values']['object_id'],
        '%stocks' => join(', ', $links)
      )
      );
      form_set_error('object_id', $message);
    }
    elseif (sizeof($object_results) < 1) {
      form_set_error('object_id', t("There are no stocks matching your input. Please check your input for typos and/or lookup the stock <a href='!url'>here</a>", array('!url' => url('stocks'))));
    }
    elseif (sizeof($object_results) == 1) {
      $form_state['values']['object_id'] = $object_results[0]->stock->stock_id;
    }

    // check valid type selected
    if ($form_state['values']['type_id'] == 0) {
      form_set_error('type_id', 'Please select a type of relationship.');
    }
    else {
      $tmp_obj = db_fetch_object(chado_query("SELECT count(*) as count FROM {cvterm} WHERE cvterm_id=%d", $form_state['values']['type_id']));

      if ($tmp_obj->count != 1) {
        form_set_error('type_id', 'The type you selected is not valid. Please choose another one.');
      }
    }

    // check either subject or object is the current stock
    if ($subject_results[0]->nid != $form_state['values']['rel_nid']) {
      if ($object_results[0]->nid != $form_state['values']['rel_nid']) {
        form_set_error('subject_id', 'Either Subject or Object must be the current stock (' . $form_state['values']['r_stock_uniquename'] . ').');
      }
    }
  } //end of require validation if adding relationship
}