| 
					
				 | 
			
			
				@@ -13,310 +13,187 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Purpose: Return a given stock node using the nid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param $nid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   The node ID of the stock you want to load 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Retrieves a chado stock object 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $identifier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   An array with the key stating what the identifier is. Supported keys (only one of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   following unique keys is required): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *    - stock_id: the chado stock.stock_id primary key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *    - nid: the drupal nid of the stock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   There are also some specially handled keys. They are: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *    - property: An array/object describing the property to select records for. It 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *      should at least have either a type_name (if unique across cvs) or type_id. Other 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *      supported keys include: cv_id/cv_name (of the type), value and rank 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   An array of options. Supported keys include: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     - Any keys supported by chado_generate_var(). See that function definition for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *       additional details. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * NOTE: the $identifier parameter can really be any array similar to $values passed into 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   chado_select_record(). It should fully specify the stock record to be returned. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   stock node with the passed in node ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   If unique values were passed in as an identifier then an object describing the stock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   will be returned (will be a chado variable from chado_generate_var()). Otherwise, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   FALSE will be returned. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @ingroup tripal_stock_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_stock_get_stock_by_nid($nid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return node_load($nid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Purpose: Return a given stock object using the stock id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   Stock object created by node load 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @ingroup tripal_stock_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_stock_get_stock_by_stock_id($stock_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $sql = "SELECT nid FROM {chado_stock} WHERE stock_id = :stock_id"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $r = db_query($sql, array(':stock_id' => $stock_id))->fetchObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!empty($r->nid)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return node_load($r->nid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function chado_get_stock($identifiers, $options = array()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Error Checking of parameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!is_array($identifiers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tripal_report_error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'tripal_stock_api', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      TRIPAL_ERROR, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "chado_get_stock: The identifier passed in is expected to be an array with the key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        matching a column name in the stock table (ie: stock_id or name). You passed in %identifier.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '%identifier'=> print_r($identifiers, TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    tripal_report_error('tripal_stock', TRIPAL_WARNING, 'tripal_stock_get_stock_by_stock_id(!stock_id): no stock with that stock_id is sync\'d with drupal', array('!stock_id' => $stock_id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  elseif (empty($identifiers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tripal_report_error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'tripal_stock_api', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      TRIPAL_ERROR, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "chado_get_stock: You did not pass in anything to identify the stock you want. The identifier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        is expected to be an array with the key matching a column name in the stock table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (ie: stock_id or name). You passed in %identifier.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '%identifier'=> print_r($identifiers, TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Returns all stocks currently sync'd with drupal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   An array of node objects keyed by stock_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @ingroup tripal_stock_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_stock_get_all_stocks() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $sql = "SELECT stock_id, nid from {chado_stock}"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $resource = db_query($sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stocks = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  while ($r = $resource->fetchObject()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $node = node_load($r->nid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ($node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $stocks[$r->stock_id] = $node; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // If one of the identifiers is property then use chado_get_record_with_property() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (isset($identifiers['property'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $property = $identifiers['property']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    unset($identifiers['property']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $stock = chado_get_record_with_property('stock', $property, $identifiers, $options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return $stocks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Purpose: Return all stocks that match a given criteria 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param $values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   An associative array containing the values for filtering the results. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   An array of matching stock objects (produced using node_load) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   matching the given criteria 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Example usage: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   $values =  array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *     'organism_id' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'genus' => 'Lens', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'species' => 'culinaris', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *     'name' => 'CDC Redberry', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *     'type_id' => array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'cv_id' => array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *            'name' => 'germplasm', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'name' => 'registered_cultivar', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'is_obsolete' => 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   $result = tripal_stock_get_stocks($values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @endcode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * The above code selects a record from the chado stock table using three fields with values which 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * identify a stock or multiple stocks. Then the node for each stock identified is returned, if it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * exists. The $values array is nested such that the organism is identified by way of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * organism_id foreign key constraint by specifying the genus and species.  The cvterm is also 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * specified using its foreign key and the cv_id for the cvterm is nested as well. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @ingroup tripal_stock_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_stock_get_stocks($values) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stock_ids = chado_select_record('stock', array('stock_id'), $values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Change from stock_ids to nodes----------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stock_ids = array_filter($stock_ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stock_ids = array_unique($stock_ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Else we have a simple case and we can just use chado_generate_var to get the stock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stocks = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  foreach ($stock_ids as $stock_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $node = tripal_stock_get_stock_by_stock_id($stock_id->stock_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ($node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $stocks[] = $node; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Try to get the stock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $stock = chado_generate_var( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'stock', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $identifiers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return $stocks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Retrieve stocks based on associated stock properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param $stockprop_values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   An array of column_name => value where column_name is any column in the stockprop table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   and value is the value you want that column to be. This is used as a tripal_core_chado_select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   values array so nesting is allowed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param $stock_values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   An array of column_name => value where column_name is any column in the stock table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   and value is the value you want that column to be. This is used as a tripal_core_chado_select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   values array so nesting is allowed. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   An array of stock node objects 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Example usage: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   $stockprop_values =  array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *     'value' => 'CDC Redberry', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *     'type_id' => array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'cv_id' => array ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *            'name' => 'stock_properties', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'name' => 'synonym', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'is_obsolete' => 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   $stock_values =  array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *     'organism_id' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'genus' => 'Lens', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *         'species' => 'culinaris', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   $result = tripal_stock_get_stocks_by_stockprop($stockprop_values, $stock_values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @endcode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * The above code selects all Lens culinaris stocks with the synonym (stock property) CDC Redberry. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * The nodes for each stock selected are loaded and returned in an array. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @ingroup tripal_stock_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_stock_get_stocks_by_stockprop($stockprop_values, $stock_values) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //add stock values to stockprop values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!empty($stock_values)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $stockprop_values['stock_id'] = $stock_values; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Ensure the stock is singular. If it's an array then it is not singular 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (is_array($stock)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tripal_report_error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'tripal_stock_api', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      TRIPAL_ERROR, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "chado_get_stock: The identifiers you passed in were not unique. You passed in %identifier.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '%identifier'=> print_r($identifiers, TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //get stock_ids from stockprop table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stock_ids = chado_select_record('stockprop', array('stock_id'), $stockprop_values); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Change from stock_ids to nodes----------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stock_ids = array_filter($stock_ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stock_ids = array_unique($stock_ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stocks = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  foreach ($stock_ids as $stock_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $node = tripal_stock_get_stock_by_stock_id($stock_id->stock_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ($node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $stocks[] = $node; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Report an error if $stock is FALSE since then chado_generate_var has failed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  elseif ($stock === FALSE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tripal_report_error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'tripal_stock_api', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      TRIPAL_ERROR, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "chado_get_stock: chado_generate_var() failed to return a stock based on the identifiers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        you passed in. You should check that your identifiers are correct, as well as, look 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for a chado_generate_var error for additional clues. You passed in %identifier.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '%identifier'=> print_r($identifiers, TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return $stocks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Else, as far we know, everything is fine so give them their stock :) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $stock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * Return all stocks with a given name identifier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *  which might match stock.name, stock.uniquename, dbxref.accession, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *  stockprop.value where stockprop.type='synonym' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Retrieves a chado stock object 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param $name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   The name identfier to be used 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param $organism_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   The stock.organism_id of the stock to be selected 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $identifier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   An array with the key stating what the identifier is. Supported keys include any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   field in the stock table. See the chado_select_record() $values parameter for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   additional details including an example. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param $options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   An array of options. Supported keys include: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *     - Any keys supported by chado_generate_var(). See that function definition for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *       additional details. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   An array of stock node objects 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   An array of stock objects matching the criteria. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @ingroup tripal_stock_api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function tripal_stock_get_stock_by_name_identifier($name, $organism_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stock_ids = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $options = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'case_insensitive_columns' => array('name', 'uniquename', 'accession', 'value') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // where name_identifier = stock.name------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $current_stocks = chado_select_record('stock', array('stock_id'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'name' => $name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'organism_id' => $organism_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'case_insensitive_columns' => array('name'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!empty($current_stocks)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    foreach ($current_stocks as $c) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $stock_ids[] = $c->stock_id; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function chado_get_multiple_stocks($identifiers, $options = array()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Error Checking of parameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!is_array($identifiers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tripal_report_error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'tripal_stock_api', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      TRIPAL_ERROR, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "chado_get_stock: The identifier passed in is expected to be an array with the key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        matching a column name in the stock table (ie: stock_id or name). You passed in %identifier.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '%identifier'=> print_r($identifiers, TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // where name_identifier = stock.uniquename------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $current_stocks = chado_select_record('stock', array('stock_id'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'uniquename' => $name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'organism_id' => $organism_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'case_insensitive_columns' => array('uniquename'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!empty($current_stocks)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    foreach ($current_stocks as $c) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $stock_ids[] = $c->stock_id; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  elseif (empty($identifiers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tripal_report_error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'tripal_stock_api', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      TRIPAL_ERROR, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "chado_get_stock: You did not pass in anything to identify the stock you want. The identifier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        is expected to be an array with the key matching a column name in the stock table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (ie: stock_id or name). You passed in %identifier.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '%identifier'=> print_r($identifiers, TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // where name_identifier = dbxref.accession------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // linked to stock through stock.dbxref 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $current_stocks = chado_select_record('stock', array('stock_id'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'dbxref_id' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'accession' => $name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'organism_id' => $organism_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'case_insensitive_columns' => array('accession'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!empty($current_stocks)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    foreach ($current_stocks as $c) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $stock_ids[] = $c->stock_id; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // If one of the identifiers is property then use chado_get_record_with_property() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (isset($identifiers['property'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $property = $identifiers['property']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    unset($identifiers['property']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $stock = chado_get_record_with_property('stock', $property, $identifiers, $options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // linked to stock through stock_dbxref? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $current_stocks = chado_select_record('stock_dbxref', array('stock_id'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'dbxref_id' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'accession' => $name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'stock_id' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'organism_id' => $organism_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'case_insensitive_columns' => array('accession'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!empty($current_stocks)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    foreach ($current_stocks as $c) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $stock_ids[] = $c->stock_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Else we have a simple case and we can just use chado_generate_var to get the stock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // where name_identifier = stockprop.value------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // where type='synonym' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $current_stocks = chado_select_record('stockprop', array('stock_id'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'stock_id' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'organism_id' => $organism_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'type_id' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'cv_id' => variable_get('chado_stock_prop_types_cv', 'null'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'name' => 'synonym', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'value' => $name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      'case_insensitive_columns' => array('value'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!empty($current_stocks)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    foreach ($current_stocks as $c) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $stock_ids[] = $c->stock_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Try to get the stock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $stock = chado_generate_var( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'stock', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $identifiers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Change from stock_ids to nodes----------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stock_ids = array_filter($stock_ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stock_ids = array_unique($stock_ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $stocks = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  foreach ($stock_ids as $stock_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $node = tripal_stock_get_stock_by_stock_id($stock_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ($node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $stocks[] = $node; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Report an error if $stock is FALSE since then chado_generate_var has failed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if ($stock === FALSE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tripal_report_error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'tripal_stock_api', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      TRIPAL_ERROR, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "chado_get_stock: chado_generate_var() failed to return a stock based on the identifiers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        you passed in. You should check that your identifiers are correct, as well as, look 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for a chado_generate_var error for additional clues. You passed in %identifier.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '%identifier'=> print_r($identifiers, TRUE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return $stocks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Else, as far we know, everything is fine so give them their stock :) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $stock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |