|  | @@ -841,41 +841,56 @@ class chado_linker__relationship extends TripalField {
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    public function instanceSettingsFormValidate($form, &$form_state) {
 | 
	
		
			
				|  |  |      //dpm($form);dpm($form_state);
 | 
	
		
			
				|  |  | -     $settings = $form_state['values']['instance']['settings']['relationships'];
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -     // Make sure the supplied types are valid cvterms
 | 
	
		
			
				|  |  | -     if (isset($settings['relationship_types'])) {
 | 
	
		
			
				|  |  | -       $rel_types = explode(PHP_EOL, $settings['relationship_types']);
 | 
	
		
			
				|  |  | -       foreach($rel_types AS $type) {
 | 
	
		
			
				|  |  | -         // Ignore empty lines
 | 
	
		
			
				|  |  | -         if (trim($type) == '') {
 | 
	
		
			
				|  |  | -           continue;
 | 
	
		
			
				|  |  | -         }
 | 
	
		
			
				|  |  | -         $term = tripal_get_cvterm(array('name' => trim($type)));
 | 
	
		
			
				|  |  | -         // Don't save the form  if a term can not be found or it matches more than one cvterm
 | 
	
		
			
				|  |  | -         if (!isset($term->cvterm_id)) {
 | 
	
		
			
				|  |  | -           form_set_error(
 | 
	
		
			
				|  |  | -             "instance][settings][relationships][relationship_types",
 | 
	
		
			
				|  |  | -             t("The term '@type' can not be found or matches more than one term.", array('@type' => $type))
 | 
	
		
			
				|  |  | +    $settings = $form_state['values']['instance']['settings']['relationships'];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // Make sure only one option is selected
 | 
	
		
			
				|  |  | +    $option1 = isset($settings['option1_vocabs']) && (!key_exists(0, $settings['option1_vocabs']) || count($settings['option1_vocabs']) > 1);
 | 
	
		
			
				|  |  | +    $option2 = isset($settings['option2_vocab']) && $settings['option2_vocab'];
 | 
	
		
			
				|  |  | +    $option3 = isset($settings['relationship_types']) && trim($settings['relationship_types']);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +     if ($option1 && ($option2 || $option3) == 1 ||
 | 
	
		
			
				|  |  | +          $option2 && ($option1 || $option3) == 1 ||
 | 
	
		
			
				|  |  | +          $option3 && ($option1 || $option2) == 1
 | 
	
		
			
				|  |  | +         ) {
 | 
	
		
			
				|  |  | +       form_set_error(
 | 
	
		
			
				|  |  | +           "instance][settings][relationships",
 | 
	
		
			
				|  |  | +           t("Only one option is allowed")
 | 
	
		
			
				|  |  |             );
 | 
	
		
			
				|  |  | -         }
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -     }
 | 
	
		
			
				|  |  | -     // Make sure child relationship types are using a valid cvterm
 | 
	
		
			
				|  |  | -     if (isset($settings['option2_parent']) && $settings['option2_parent']) {
 | 
	
		
			
				|  |  | -       $cv_id = $settings['option2_vocab'];
 | 
	
		
			
				|  |  | -       $supertype = $settings['option2_parent'];
 | 
	
		
			
				|  |  | -       $term = tripal_get_cvterm(array(
 | 
	
		
			
				|  |  | -         'name' => trim($supertype),
 | 
	
		
			
				|  |  | -         'cv_id' => $cv_id
 | 
	
		
			
				|  |  | -       ));
 | 
	
		
			
				|  |  | -       if (!isset($term->cvterm_id)) {
 | 
	
		
			
				|  |  | -         form_set_error(
 | 
	
		
			
				|  |  | -           "instance][settings][relationships][option2_parent",
 | 
	
		
			
				|  |  | -           t("The term '@type' is not a valid term for the vocabulary selected.", array('@type' => $supertype))
 | 
	
		
			
				|  |  | -         );
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  |       }
 | 
	
		
			
				|  |  | +     
 | 
	
		
			
				|  |  | +    // Make sure the supplied types are valid cvterms
 | 
	
		
			
				|  |  | +    if (isset($settings['relationship_types'])) {
 | 
	
		
			
				|  |  | +      $rel_types = explode(PHP_EOL, $settings['relationship_types']);
 | 
	
		
			
				|  |  | +      foreach($rel_types AS $type) {
 | 
	
		
			
				|  |  | +        // Ignore empty lines
 | 
	
		
			
				|  |  | +        if (trim($type) == '') {
 | 
	
		
			
				|  |  | +          continue;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $term = tripal_get_cvterm(array('name' => trim($type)));
 | 
	
		
			
				|  |  | +        // Don't save the form  if a term can not be found or it matches more than one cvterm
 | 
	
		
			
				|  |  | +        if (!isset($term->cvterm_id)) {
 | 
	
		
			
				|  |  | +          form_set_error(
 | 
	
		
			
				|  |  | +            "instance][settings][relationships][relationship_types",
 | 
	
		
			
				|  |  | +            t("The term '@type' can not be found or matches more than one term.", array('@type' => $type))
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    // Make sure child relationship types are using a valid cvterm
 | 
	
		
			
				|  |  | +    if (isset($settings['option2_parent']) && $settings['option2_parent']) {
 | 
	
		
			
				|  |  | +      $cv_id = $settings['option2_vocab'];
 | 
	
		
			
				|  |  | +      $supertype = $settings['option2_parent'];
 | 
	
		
			
				|  |  | +      $term = tripal_get_cvterm(array(
 | 
	
		
			
				|  |  | +        'name' => trim($supertype),
 | 
	
		
			
				|  |  | +        'cv_id' => $cv_id
 | 
	
		
			
				|  |  | +      ));
 | 
	
		
			
				|  |  | +      if (!isset($term->cvterm_id)) {
 | 
	
		
			
				|  |  | +        form_set_error(
 | 
	
		
			
				|  |  | +          "instance][settings][relationships][option2_parent",
 | 
	
		
			
				|  |  | +          t("The term '@type' is not a valid term for the vocabulary selected.", array('@type' => $supertype))
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |