|  | @@ -290,6 +290,50 @@ function chado_stock_form($node, $form_state) {
 | 
	
		
			
				|  |  |      '#default_value' => $dbxref_database
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  // PROPERTIES FORM
 | 
	
		
			
				|  |  | +  //---------------------------------------------
 | 
	
		
			
				|  |  | +  $ontology = variable_get('chado_stock_prop_types_cv', FALSE);
 | 
	
		
			
				|  |  | +  if (!$ontology) {
 | 
	
		
			
				|  |  | +    tripal_core_report_error(
 | 
	
		
			
				|  |  | +      'chado_stock',
 | 
	
		
			
				|  |  | +      TRIPAL_ERROR,
 | 
	
		
			
				|  |  | +      'Stock property type controlled vocabulary is not set. please set it in the Stock configuration form.'
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +    tripal_core_report_error(
 | 
	
		
			
				|  |  | +      'chado_stock',
 | 
	
		
			
				|  |  | +      TRIPAL_ERROR,
 | 
	
		
			
				|  |  | +      'Unable to add properties form to the node form because stock property type controlled vocabulary is not set'
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  else {
 | 
	
		
			
				|  |  | +    // ontology name needed for properties api
 | 
	
		
			
				|  |  | +    $cv = tripal_core_chado_select('cv',array('name'),array('cv_id' => $ontology));
 | 
	
		
			
				|  |  | +    $ontology_name = $cv[0]->name;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // get the stockprop types for the property drop-down
 | 
	
		
			
				|  |  | +    $properties = array();
 | 
	
		
			
				|  |  | +    $properties[] = 'Select a Property';
 | 
	
		
			
				|  |  | +    $sql = "
 | 
	
		
			
				|  |  | +      SELECT DISTINCT CVT.cvterm_id, CVT.name, CVT.definition
 | 
	
		
			
				|  |  | +      FROM  {cvterm} CVT
 | 
	
		
			
				|  |  | +        INNER JOIN {cv} CV ON CVT.cv_id = CV.cv_id
 | 
	
		
			
				|  |  | +      WHERE
 | 
	
		
			
				|  |  | +        CV.name = :ontology AND
 | 
	
		
			
				|  |  | +        NOT CVT.is_obsolete = 1
 | 
	
		
			
				|  |  | +      ORDER BY CVT.name ASC
 | 
	
		
			
				|  |  | +    ";
 | 
	
		
			
				|  |  | +    $prop_types = chado_query($sql, array(':ontology' => $ontology_name));
 | 
	
		
			
				|  |  | +    while ($prop = $prop_types->fetchObject()) {
 | 
	
		
			
				|  |  | +      $properties[$prop->cvterm_id] = $prop->name;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $exclude = array();
 | 
	
		
			
				|  |  | +    $include = array();
 | 
	
		
			
				|  |  | +    $instructions = t('To add additional properties to the drop down. ' . l("Add terms to the ".$ontology_name." vocabulary", "admin/tripal/chado/tripal_cv/cvterm/add") . ".");
 | 
	
		
			
				|  |  | +    tripal_core_properties_form($form, $form_state, 'stockprop', 'stock_id', $ontology_name,
 | 
	
		
			
				|  |  | +      $properties, $stock_id, $exclude, $include, $instructions, 'Properties');
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    return $form;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -303,7 +347,7 @@ function chado_stock_form($node, $form_state) {
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @ingroup tripal_stock
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -function chado_stock_validate($node, $form, &$form_state) {
 | 
	
		
			
				|  |  | +function chado_stock_validate(&$node, $form, &$form_state) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // remove surrounding whitespace
 | 
	
		
			
				|  |  |    $node->uniquename = trim($node->uniquename);
 | 
	
	
		
			
				|  | @@ -507,6 +551,35 @@ function chado_stock_insert($node) {
 | 
	
		
			
				|  |  |      else {
 | 
	
		
			
				|  |  |        $stock_added = FALSE;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // Now add properties
 | 
	
		
			
				|  |  | +    if ($stock_added) {
 | 
	
		
			
				|  |  | +      $ontology = variable_get('chado_stock_prop_types_cv', FALSE);
 | 
	
		
			
				|  |  | +      $cv = tripal_core_chado_select('cv',array('name'),array('cv_id' => $ontology));
 | 
	
		
			
				|  |  | +      $ontology_name = $cv[0]->name;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      $properties = tripal_core_properties_form_retreive($node, $ontology_name);
 | 
	
		
			
				|  |  | +      foreach ($properties as $property => $elements) {
 | 
	
		
			
				|  |  | +        foreach ($elements as $rank => $value) {
 | 
	
		
			
				|  |  | +          $success = tripal_core_insert_property(
 | 
	
		
			
				|  |  | +            'stock',
 | 
	
		
			
				|  |  | +            $stock_id,
 | 
	
		
			
				|  |  | +            $property,
 | 
	
		
			
				|  |  | +            $ontology_name,
 | 
	
		
			
				|  |  | +            $value
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if (!$success) {
 | 
	
		
			
				|  |  | +            watchdog(
 | 
	
		
			
				|  |  | +              'tripal_stock',
 | 
	
		
			
				|  |  | +              'Stock Insert: Unable to insert property %cvterm %value.',
 | 
	
		
			
				|  |  | +              array('%cvterm' => $property, '%value' => $value),
 | 
	
		
			
				|  |  | +              WATCHDOG_ERROR
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    } //end of adding stock to chado
 | 
	
		
			
				|  |  |    else {
 | 
	
		
			
				|  |  |      // stock already exists since this is a sync
 | 
	
	
		
			
				|  | @@ -650,6 +723,40 @@ function chado_stock_update($node) {
 | 
	
		
			
				|  |  |      $values = array('stock_id' => $node->stock_id);
 | 
	
		
			
				|  |  |      $stock = tripal_core_chado_select('stock', array('*'), $values);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // now update the properties
 | 
	
		
			
				|  |  | +  if ($node->stock_id > 0) {
 | 
	
		
			
				|  |  | +    $stock_id = $node->stock_id;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $ontology = variable_get('chado_stock_prop_types_cv', FALSE);
 | 
	
		
			
				|  |  | +    $cv = tripal_core_chado_select('cv',array('name'),array('cv_id' => $ontology));
 | 
	
		
			
				|  |  | +    $ontology_name = $cv[0]->name;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // now add in the properties by first removing any the stock
 | 
	
		
			
				|  |  | +    // already has and adding the ones we have
 | 
	
		
			
				|  |  | +    tripal_core_chado_delete('stockprop', array('stock_id' => $stock_id));
 | 
	
		
			
				|  |  | +    $properties = tripal_core_properties_form_retreive($node, $ontology_name);
 | 
	
		
			
				|  |  | +    foreach ($properties as $property => $elements) {
 | 
	
		
			
				|  |  | +      foreach ($elements as $rank => $value) {
 | 
	
		
			
				|  |  | +        $success = tripal_core_insert_property(
 | 
	
		
			
				|  |  | +          'stock',
 | 
	
		
			
				|  |  | +          $stock_id,
 | 
	
		
			
				|  |  | +          $property,
 | 
	
		
			
				|  |  | +          $ontology_name,
 | 
	
		
			
				|  |  | +          $value
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (!$success) {
 | 
	
		
			
				|  |  | +          watchdog(
 | 
	
		
			
				|  |  | +            'tripal_stock',
 | 
	
		
			
				|  |  | +            'Stock Update: Unable to insert property %cvterm %value.',
 | 
	
		
			
				|  |  | +            array('%cvterm' => $property, '%value' => $value),
 | 
	
		
			
				|  |  | +            WATCHDOG_ERROR
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 |