Index: core/relationship_api.php
===================================================================
RCS file: /cvs/TPS/mantis/core/relationship_api.php,v
retrieving revision 1.1.1.7
diff -u -r1.1.1.7 relationship_api.php
--- core/relationship_api.php	28 Jun 2005 11:04:06 -0000	1.1.1.7
+++ core/relationship_api.php	14 Dec 2006 11:22:26 -0000
@@ -242,13 +242,13 @@
 		$t_mantis_bug_relationship_table = config_get( 'mantis_bug_relationship_table' );
 		$t_mantis_bug_table = config_get( 'mantis_bug_table' );
 
+		# ording will be done later
 		$query = "SELECT $t_mantis_bug_relationship_table.id, $t_mantis_bug_relationship_table.relationship_type,
 				$t_mantis_bug_relationship_table.source_bug_id, $t_mantis_bug_relationship_table.destination_bug_id,
 				$t_mantis_bug_table.project_id
 				FROM $t_mantis_bug_relationship_table
 				INNER JOIN $t_mantis_bug_table ON $t_mantis_bug_relationship_table.destination_bug_id = $t_mantis_bug_table.id
-				WHERE source_bug_id='$c_src_bug_id'
-				ORDER BY relationship_type, $t_mantis_bug_relationship_table.id";
+				WHERE source_bug_id='$c_src_bug_id'";
 		$result = db_query( $query );
 
 		$t_src_project_id = bug_get_field( $p_src_bug_id, 'project_id' );
@@ -257,14 +257,15 @@
 		$t_relationship_count = db_num_rows( $result );
 		for ( $i = 0 ; $i < $t_relationship_count ; $i++ ) {
 			$row = db_fetch_array( $result );
-			$t_bug_relationship_data[$i]->id = $row['id'];
-			$t_bug_relationship_data[$i]->src_bug_id = $row['source_bug_id'];
-			$t_bug_relationship_data[$i]->src_project_id = $t_src_project_id;
-			$t_bug_relationship_data[$i]->dest_bug_id = $row['destination_bug_id'];
-			$t_bug_relationship_data[$i]->dest_project_id = $row['project_id'];
-			$t_bug_relationship_data[$i]->type = $row['relationship_type'];
+			$key = $row['relationship_type'] * 2000000 +  $row['destination_bug_id'];
+			$t_bug_relationship_data[$key]->id = $row['id'];
+			$t_bug_relationship_data[$key]->src_bug_id = $row['source_bug_id'];
+			$t_bug_relationship_data[$key]->src_project_id = $row['project_id'];
+			$t_bug_relationship_data[$key]->dest_bug_id = $row['destination_bug_id'];
+			$t_bug_relationship_data[$key]->dest_project_id = $t_dest_project_id;
+			$t_bug_relationship_data[$key]->type = $row['relationship_type'];
 		}
-		unset( $t_bug_relationship_data[$t_relationship_count] );
+		unset( $t_bug_relationship_data[0] );
 
 		return $t_bug_relationship_data;
 	}
@@ -276,13 +277,13 @@
 		$t_mantis_bug_relationship_table = config_get( 'mantis_bug_relationship_table' );
 		$t_mantis_bug_table = config_get( 'mantis_bug_table' );
 
+		# ording will be done later
 		$query = "SELECT $t_mantis_bug_relationship_table.id, $t_mantis_bug_relationship_table.relationship_type,
 				$t_mantis_bug_relationship_table.source_bug_id, $t_mantis_bug_relationship_table.destination_bug_id,
 				$t_mantis_bug_table.project_id
 				FROM $t_mantis_bug_relationship_table
 				INNER JOIN $t_mantis_bug_table ON $t_mantis_bug_relationship_table.source_bug_id = $t_mantis_bug_table.id
-				WHERE destination_bug_id='$c_dest_bug_id'
-				ORDER BY relationship_type, $t_mantis_bug_relationship_table.id";
+				WHERE destination_bug_id='$c_dest_bug_id'";
 		$result = db_query( $query );
 
 		$t_dest_project_id = bug_get_field( $p_dest_bug_id, 'project_id' );
@@ -291,14 +292,16 @@
 		$t_relationship_count = db_num_rows( $result );
 		for ( $i = 0 ; $i < $t_relationship_count ; $i++ ) {
 			$row = db_fetch_array( $result );
-			$t_bug_relationship_data[$i]->id = $row['id'];
-			$t_bug_relationship_data[$i]->src_bug_id = $row['source_bug_id'];
-			$t_bug_relationship_data[$i]->src_project_id = $row['project_id'];
-			$t_bug_relationship_data[$i]->dest_bug_id = $row['destination_bug_id'];
-			$t_bug_relationship_data[$i]->dest_project_id = $t_dest_project_id;
-			$t_bug_relationship_data[$i]->type = $row['relationship_type'];
+			$key = $row['relationship_type'] * 2000000 + 
+				   ( $row['relationship_type'] != BUG_RELATED ? 1000000 : 0	 ) +				   $row['source_bug_id'];
+			$t_bug_relationship_data[$key]->id = $row['id'];
+			$t_bug_relationship_data[$key]->src_bug_id = $row['source_bug_id'];
+			$t_bug_relationship_data[$key]->src_project_id = $row['project_id'];
+			$t_bug_relationship_data[$key]->dest_bug_id = $row['destination_bug_id'];
+			$t_bug_relationship_data[$key]->dest_project_id = $t_dest_project_id;
+			$t_bug_relationship_data[$key]->type = $row['relationship_type'];
 		}
-		unset( $t_bug_relationship_data[$t_relationship_count] );
+		unset( $t_bug_relationship_data[0] );
 
 		return $t_bug_relationship_data;
 	}
@@ -307,7 +310,13 @@
 	function relationship_get_all( $p_bug_id, &$p_is_different_projects ) {
 		$t_src = relationship_get_all_src( $p_bug_id );
 		$t_dest = relationship_get_all_dest( $p_bug_id );
-		$t_all = array_merge( $t_src, $t_dest );
+		# merge
+		$t_all = $t_src + $t_dest;
+		# sort keys
+		ksort( $t_all );
+		# throw away keys
+		$t_all = array_merge( $t_all );
+		
 
 		$p_is_different_projects = false;
 		for ( $i = 0 ; $i < count( $t_all ) ; $i++ ) {
