=> array( * 'type' => , * 'value' => , * 'exact' => , * ) * ) * where options should include the id and type for that table to correctly * group a set of records together where the only difference are the value and rank * @return the maximum rank * */ function get_max_chado_rank($tablename, $where_options) { $where= array(); //generate the where clause from supplied options // the key is the column name foreach ($where_options as $key => $val_array) { if (preg_match('/INT/', $val_array['type'])) { $where[] = $key . "=" . $val_array['value']; } else { if ($val_array['exact']) { $operator='='; } else { $operator='~'; } $where[] = $key . $operator . "'" . $val_array['value'] . "'"; } } $result = db_fetch_object(chado_query( "SELECT max(rank) as max_rank, count(rank) as count FROM {%s} WHERE %s", $tablename, implode(' AND ', $where) )); //drupal_set_message("Max Rank Query=SELECT max(rank) as max_rank, count(rank) as count FROM ".$tablename." WHERE ".implode(' AND ',$where)); if ($result->count > 0) { return $result->max_rank; } else { return -1; } }