Shorter names for combined stops and fix sorting bug
[busui.git] / stop.php
blob:a/stop.php -> blob:b/stop.php
--- a/stop.php
+++ b/stop.php
@@ -20,6 +20,7 @@
 $stopNames = Array();
 $tripStopNumbers = Array();
 $allStopsTrips = Array();
+$fetchedTripSequences = Array();
 $stopLinks = "";
 if (isset($_REQUEST['stopids'])) {
 	$stopids = explode(",", filter_var($_REQUEST['stopids'], FILTER_SANITIZE_STRING));
@@ -45,12 +46,25 @@
 			$sub_stop[2],
 			$sub_stop[3]
 		);
-		$url = $APIurl . "/json/stoptrips?stop=" . $sub_stop[0] . "&time=" . midnight_seconds() . "&service_period=" . service_period();
-		$trips = json_decode(getPage($url));
+                
+                $url = $APIurl . "/json/stopalltrips?stop=" . $sub_stop[0];		$trips = json_decode(getPage($url));
+                $tripSequence = "";
 		foreach ($trips as $trip) {
-			if (!isset($allStopsTrips[$trip[1][0]])) $allStopsTrips[$trip[1][0]] = $trip;
-			$tripStopNumbers[$trip[1][0]][] = $key;
+                        $tripSequence .= "$trip[0],";
+			$tripStopNumbers[$trip[0]][] = $key;
 		}
+                
+                if (!in_array($tripSequence,$fetchedTripSequences)) {
+                    // only fetch new trip sequences
+                    $fetchedTripSequences[] = $tripSequence;
+                    $url = $APIurl . "/json/stoptrips?stop=" . $sub_stop[0] . "&time=" . midnight_seconds() . "&service_period=" . service_period();
+                    $trips = json_decode(getPage($url));
+                    foreach ($trips as $trip) {
+                            if (!isset($allStopsTrips[$trip[1][0]])) $allStopsTrips[$trip[1][0]] = $trip;
+                    }
+                } else {
+                    echo "skipped sequence $tripSequence";
+                }
 	}
 }
 include_header($stop[1], "stop");
@@ -82,7 +96,7 @@
 }
 foreach ($trips as $row) {
 	echo '<li>';
-	echo '<h3><a href="trip.php?stopid=' . $stopid . '&tripid=' . $row[1][0] . '">' . $row[1][1];
+	echo '<a href="trip.php?stopid=' . $stopid . '&tripid=' . $row[1][0] . '"><h3>' . $row[1][1]."</h3><p>";
         $viaPoints = viaPointNames($row[1][0], $stopid);
         if ($viaPoints != "") echo '<br><span class="viaPoints">Via: ' . $viaPoints . '</span>';
 	if (sizeof($tripStopNumbers) > 0) {
@@ -92,9 +106,10 @@
             }
             echo '</small>';
         }
-	echo '</a></h3>';
+	echo '</p>';
 	echo '<p class="ui-li-aside"><strong>' . midnight_seconds_to_time($row[0]) . '</strong></p>';
-	echo '</li>';
+	echo '</a></li>';
+        flush(); @ob_flush();
 }
 if (sizeof($trips) == 0) echo "<li> <center>No trips in the near future.</center> </li>";
 echo '</ul></div>';