|  | @@ -211,7 +211,7 @@ function tripal_core_chado_insert($table, $values, $options = array()) {
 | 
	
		
			
				|  |  |            if (!array_key_exists($field, $insert_values)) {
 | 
	
		
			
				|  |  |            	if (array_key_exists('default', $table_desc['fields'][$field])) {
 | 
	
		
			
				|  |  |                $ukselect_vals[$field] = $table_desc['fields'][$field]['default'];
 | 
	
		
			
				|  |  | -          	}          	
 | 
	
		
			
				|  |  | +          	}
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            else {
 | 
	
		
			
				|  |  |              $ukselect_vals[$field] = $insert_values[$field];
 | 
	
	
		
			
				|  | @@ -1055,7 +1055,7 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          else {
 | 
	
		
			
				|  |  |            $where[$field] = $results;
 | 
	
		
			
				|  |  | -        } 
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      else {
 | 
	
	
		
			
				|  | @@ -1178,13 +1178,13 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) {
 | 
	
		
			
				|  |  |      $psql =  "PREPARE " . $options['statement_name'] . " (" . implode(', ', $idatatypes) . ") AS " . $psql;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    } // end if(empty($where)){ } else {
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // if the caller has requested the SQL rather than the results...
 | 
	
		
			
				|  |  |    // which happens in the case of wanting to use the Drupal pager, then do so
 | 
	
		
			
				|  |  |    if ($options['return_sql'] == TRUE) {
 | 
	
		
			
				|  |  |      return array('sql' => $sql, 'args' => $args);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // prepare the statement
 | 
	
		
			
				|  |  |    if ($prepared) {
 | 
	
		
			
				|  |  |      // if this is the first time we've run this query
 | 
	
	
		
			
				|  | @@ -1199,12 +1199,12 @@ function tripal_core_chado_select($table, $columns, $values, $options = NULL) {
 | 
	
		
			
				|  |  |      $sql = "EXECUTE " . $options['statement_name'] . "(" . implode(", ", $itypes) . ")";
 | 
	
		
			
				|  |  |      // WARNING: This call creates a memory leak:  if you remove the $pvalues it doesn't
 | 
	
		
			
				|  |  |      // do this. Got to find out what's causing this.
 | 
	
		
			
				|  |  | -    $resource = tripal_core_chado_execute_prepared($options['statement_name'], $sql, $pvalues);    
 | 
	
		
			
				|  |  | +    $resource = tripal_core_chado_execute_prepared($options['statement_name'], $sql, $pvalues);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    else {
 | 
	
		
			
				|  |  |      $resource = chado_query($sql, $args);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // format results into an array
 | 
	
		
			
				|  |  |    $results = array();
 | 
	
		
			
				|  |  |    while ($r = db_fetch_object($resource)) {
 | 
	
	
		
			
				|  | @@ -1299,7 +1299,7 @@ function tripal_core_chado_get_foreign_key($table_desc, $field, $values, $option
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        $table = $def['table'];
 | 
	
		
			
				|  |  |        $columns = $def['columns'];
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        // iterate through the columns of the foreign key relationship
 | 
	
		
			
				|  |  |        foreach ($columns as $left => $right) {
 | 
	
		
			
				|  |  |          // does the left column in the relationship match our field?
 | 
	
	
		
			
				|  | @@ -1314,8 +1314,8 @@ function tripal_core_chado_get_foreign_key($table_desc, $field, $values, $option
 | 
	
		
			
				|  |  |                $fields[] = $obj->$right;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              return $fields;
 | 
	
		
			
				|  |  | -          } 
 | 
	
		
			
				|  |  | -        } 
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -1869,9 +1869,9 @@ function tripal_core_exclude_field_from_feature_by_default() {
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @param $sql
 | 
	
		
			
				|  |  |   *   The sql statement to execute
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @returns
 | 
	
		
			
				|  |  | - *   A database query result resource or FALSE if the query was not 
 | 
	
		
			
				|  |  | + *   A database query result resource or FALSE if the query was not
 | 
	
		
			
				|  |  |   *   executed correctly
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function chado_query($sql) {
 | 
	
	
		
			
				|  | @@ -2358,22 +2358,22 @@ function tripal_db_set_active($dbname) {
 | 
	
		
			
				|  |  |      // set it as normal.
 | 
	
		
			
				|  |  |      else {
 | 
	
		
			
				|  |  |  //      if (tripal_db_set_chado_search_path($dbname)) {
 | 
	
		
			
				|  |  | -         return $dbname; 
 | 
	
		
			
				|  |  | -//      }  
 | 
	
		
			
				|  |  | +         return $dbname;
 | 
	
		
			
				|  |  | +//      }
 | 
	
		
			
				|  |  |  //      else {
 | 
	
		
			
				|  |  |  //        return db_set_active($dbname);
 | 
	
		
			
				|  |  | -//      } 
 | 
	
		
			
				|  |  | +//      }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    else {
 | 
	
		
			
				|  |  | -    return db_set_active($dbname);  
 | 
	
		
			
				|  |  | +    return db_set_active($dbname);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Set the chado search_path for PostgreSQL
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - * Sets the database search_path for postgreSQL to the 
 | 
	
		
			
				|  |  | + * Sets the database search_path for postgreSQL to the
 | 
	
		
			
				|  |  |   * chado schema.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @ingroup tripal_chado_api
 | 
	
	
		
			
				|  | @@ -2385,14 +2385,14 @@ function tripal_db_set_chado_search_path($dbname) {
 | 
	
		
			
				|  |  |    if(!$chado_exists){
 | 
	
		
			
				|  |  |      $chado_exists = tripal_core_chado_schema_exists();
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // here we make the assumption that the default database schema is
 | 
	
		
			
				|  |  |    // 'public'.  This will most likely always be the case but if not,
 | 
	
		
			
				|  |  |    // then this code will break
 | 
	
		
			
				|  |  |    if ($chado_exists) {
 | 
	
		
			
				|  |  |      db_query('set search_path to %s', "$dbname,public");
 | 
	
		
			
				|  |  |      return TRUE;
 | 
	
		
			
				|  |  | -  } 
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    else {
 | 
	
		
			
				|  |  |      return FALSE;
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -2401,7 +2401,7 @@ function tripal_db_set_chado_search_path($dbname) {
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Set the default search_path for PostgreSQL
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | - * Sets the database search_path for postgreSQL to the 
 | 
	
		
			
				|  |  | + * Sets the database search_path for postgreSQL to the
 | 
	
		
			
				|  |  |   * default schema.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @ingroup tripal_chado_api
 | 
	
	
		
			
				|  | @@ -2528,7 +2528,7 @@ function tripal_core_chado_execute_prepared($statement_name, $sql, $values) {
 | 
	
		
			
				|  |  |            case 'text':
 | 
	
		
			
				|  |  |              $check = is_string($v);
 | 
	
		
			
				|  |  |              if (!$check) {
 | 
	
		
			
				|  |  | -              watchdog('tripal_core', "chado_execute_prepared: wrong argument type supplied for '%name' statement. Expected %required but recieved '%value'", 
 | 
	
		
			
				|  |  | +              watchdog('tripal_core', "chado_execute_prepared: wrong argument type supplied for '%name' statement. Expected %required but recieved '%value'",
 | 
	
		
			
				|  |  |                  array('%name' => $statement_name, '%required' => $required_values[$k], '%value' => print_r($v,TRUE)), WATCHDOG_ERROR);
 | 
	
		
			
				|  |  |                return FALSE;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -2536,14 +2536,14 @@ function tripal_core_chado_execute_prepared($statement_name, $sql, $values) {
 | 
	
		
			
				|  |  |            case 'int':
 | 
	
		
			
				|  |  |              $check = is_numeric($v);
 | 
	
		
			
				|  |  |              if (!$check) {
 | 
	
		
			
				|  |  | -              watchdog('tripal_core', "chado_execute_prepared: wrong argument type supplied for '%name' statement. Expected %required but recieved '%value'", 
 | 
	
		
			
				|  |  | +              watchdog('tripal_core', "chado_execute_prepared: wrong argument type supplied for '%name' statement. Expected %required but recieved '%value'",
 | 
	
		
			
				|  |  |                  array('%name' => $statement_name, '%required' => $required_values[$k], '%value' => print_r($v,TRUE)), WATCHDOG_ERROR);
 | 
	
		
			
				|  |  |                return FALSE;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            case 'bool':
 | 
	
		
			
				|  |  |              if($v != 'TRUE' and $v != 'FALSE'){
 | 
	
		
			
				|  |  | -              watchdog('tripal_core', "chado_execute_prepared: wrong argument type supplied for '%name' statement. Expected %required but recieved '%value'", 
 | 
	
		
			
				|  |  | +              watchdog('tripal_core', "chado_execute_prepared: wrong argument type supplied for '%name' statement. Expected %required but recieved '%value'",
 | 
	
		
			
				|  |  |                  array('%name' => $statement_name, '%required' => $required_values[$k], '%value' => print_r($v,TRUE)), WATCHDOG_ERROR);
 | 
	
		
			
				|  |  |                return FALSE;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -2551,20 +2551,20 @@ function tripal_core_chado_execute_prepared($statement_name, $sql, $values) {
 | 
	
		
			
				|  |  |            case 'numeric':
 | 
	
		
			
				|  |  |              $check = is_numeric($v);
 | 
	
		
			
				|  |  |              if (!$check) {
 | 
	
		
			
				|  |  | -              watchdog('tripal_core', "chado_execute_prepared: wrong argument type supplied for '%name' statement. Expected %required but recieved '%value'", 
 | 
	
		
			
				|  |  | +              watchdog('tripal_core', "chado_execute_prepared: wrong argument type supplied for '%name' statement. Expected %required but recieved '%value'",
 | 
	
		
			
				|  |  |                  array('%name' => $statement_name, '%required' => $required_values[$k], '%value' => print_r($v,TRUE)), WATCHDOG_ERROR);
 | 
	
		
			
				|  |  |                return FALSE;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |            default:
 | 
	
		
			
				|  |  | -            watchdog('tripal_core', "chado_execute_prepared: unsupported argument type (supplied for '%name' statement %type)", 
 | 
	
		
			
				|  |  | +            watchdog('tripal_core', "chado_execute_prepared: unsupported argument type (supplied for '%name' statement %type)",
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              array('%name' => $statement_name, '%type' => $required_values[$k]), WATCHDOG_WARNING);
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        else {
 | 
	
		
			
				|  |  | -        watchdog('tripal_core', "chado_execute_prepared: wrong number of arguments supplied for '%name' statement. Expected %required but recieved %values", 
 | 
	
		
			
				|  |  | +        watchdog('tripal_core', "chado_execute_prepared: wrong number of arguments supplied for '%name' statement. Expected %required but recieved %values",
 | 
	
		
			
				|  |  |            array('%name' => $statement_name, '%required' => print_r($required_values,TRUE), '%values' => print_r($values,TRUE)), WATCHDOG_ERROR);
 | 
	
		
			
				|  |  |          return FALSE;
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -2575,7 +2575,7 @@ function tripal_core_chado_execute_prepared($statement_name, $sql, $values) {
 | 
	
		
			
				|  |  |      return $resource;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    else {
 | 
	
		
			
				|  |  | -    watchdog('tripal_core', "chado_execute_prepared: wrong number of arguments supplied for '%name' statement. Expected %required but recieved %values", 
 | 
	
		
			
				|  |  | +    watchdog('tripal_core', "chado_execute_prepared: wrong number of arguments supplied for '%name' statement. Expected %required but recieved %values",
 | 
	
		
			
				|  |  |        array('%name' => $statement_name, '%required' => print_r($required_values,TRUE), '%values' => print_r($values,TRUE)), WATCHDOG_ERROR);
 | 
	
		
			
				|  |  |      return FALSE;
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -2834,11 +2834,18 @@ function tripal_core_get_chado_tables($include_custom = NULL) {
 | 
	
		
			
				|  |  |   * @ingroup tripal_core_api
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function tripal_core_set_chado_version() {
 | 
	
		
			
				|  |  | +  global $db_url;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // check that Chado is installed if not return 'uninstalled as the version'
 | 
	
		
			
				|  |  |    $chado_exists = tripal_core_chado_schema_exists();
 | 
	
		
			
				|  |  |    if (!$chado_exists) {
 | 
	
		
			
				|  |  | -    return 'not installed';
 | 
	
		
			
				|  |  | +    // if it's not in the drupal database check to see if it's specified in the $db_url
 | 
	
		
			
				|  |  | +    // in the settings.php
 | 
	
		
			
				|  |  | +    if (!array_key_exists('chado', $db_url)) {
 | 
	
		
			
				|  |  | +      // if it's not in the drupal database or specified in the $db_url then
 | 
	
		
			
				|  |  | +      // return uninstalled as the version
 | 
	
		
			
				|  |  | +      return 'not installed';
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // if the table doesn't exist then we don't know what version but we know
 | 
	
	
		
			
				|  | @@ -2947,7 +2954,7 @@ function tripal_core_get_chado_table_schema($table) {
 | 
	
		
			
				|  |  |    // get the table array from the proper chado schema
 | 
	
		
			
				|  |  |    $v = preg_replace("/\./", "_", $v); // reformat version for hook name
 | 
	
		
			
				|  |  |    $table_arr = module_invoke_all("chado_schema_v" . $v . "_" . $table);
 | 
	
		
			
				|  |  | -   
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // if the table_arr is empty then maybe this is a custom table
 | 
	
		
			
				|  |  |    if(!is_array($table_arr) or count($table_arr) == 0){
 | 
	
		
			
				|  |  |      $table_arr = tripal_get_chado_custom_schema($table);
 | 
	
	
		
			
				|  | @@ -3027,7 +3034,7 @@ function tripal_core_clean_orphaned_nodes($table, $job_id) {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      $i++;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -   
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // iterate through all of the nodes and delete those that don't
 | 
	
		
			
				|  |  |    // have a corresponding entry in chado_$table
 | 
	
		
			
				|  |  |    foreach ($nodes as $node) {
 |