Viewing of grouped stops
--- a/stop.php
+++ b/stop.php
@@ -1,17 +1,48 @@
<?php
include ('common.inc.php');
$stopid = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_NUMBER_INT);
-$stopcode = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_STRING);
+$stopcode = filter_var($_REQUEST['stopcode'], FILTER_SANITIZE_STRING);
$url = $APIurl . "/json/stop?stop_id=" . $stopid;
$stop = json_decode(getPage($url));
-if ($stop[5] != $stopcode) {
+if ($stopcode != "" && $stop[5] != $stopcode) {
$url = $APIurl . "/json/stopcodesearch?q=" . $stopcode;
$stopsearch = json_decode(getPage($url));
$stopid = $stopsearch[0][0];
$url = $APIurl . "/json/stop?stop_id=" . $stopid;
$stop = json_decode(getPage($url));
}
+if (!startsWith($stop[5], "Wj") && strpos($stop[1],"Platform") === false) {
+ // expand out to all platforms
+}
+$stops = Array();
+$stopPositions = Array();
+$tripStopNumbers = Array();
+$allStopsTrips = Array();
+$stopLinks = "";
+if (isset($_REQUEST['stopids'])) {
+ $stopids = explode(",",filter_var($_REQUEST['stopids'], FILTER_SANITIZE_STRING));
+ foreach ($stopids as $sub_stopid) {
+ $url = $APIurl . "/json/stop?stop_id=" . $sub_stopid;
+ $stop = json_decode(getPage($url));
+ $stops[] = $stop;
+ }
+ $stop = $stops[0];
+ $stopid = $stops[0][0];
+ $stopLinks .= "Individual stop pages: ";
+ foreach ($stops as $key => $sub_stop) {
+ $stopLinks .= '<a href="stop.php?stopid='.$sub_stop[0].'&stopcode='.$sub_stop[5].'">'.$sub_stop[1].' Stop #'.($key+1).'</a> ';
+ $stopPositions[$key] = Array($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));
+ foreach ($trips as $trip) {
+ if (!isset($allStopTrips[$row[1][0]])) $allStopTrips[$row[1][0]] = $trip;
+ $tripStopNumbers[$row[1][0]][] = $key;
+ }
+ }
+}
+
include_header($stop[1], "stop");
+
if (isMetricsOn()) {
// Create a new Instance of the tracker
$owa = new owa_php();
@@ -27,12 +58,18 @@
$owa->trackEvent($event);
}
timePlaceSettings();
-echo '<div data-role="content" class="ui-content" role="main"><p>' . staticmap(Array(
+echo '<div data-role="content" class="ui-content" role="main">';
+echo $stopLinks;
+if (sizeof($stops) > 0) {
+ echo '<p>' . staticmap($stopPositions) . '</p>';
+} else {
+ echo '<p>' . staticmap(Array(
0 => Array(
$stop[2],
$stop[3]
)
)) . '</p>';
+}
echo ' <ul data-role="listview" data-inset="true">';
$url = $APIurl . "/json/stoptrips?stop=" . $stopid . "&time=" . midnight_seconds() . "&service_period=" . service_period();
$trips = json_decode(getPage($url));
--- a/stopList.php
+++ b/stopList.php
@@ -72,30 +72,64 @@
$('.noscriptnav').hide();
</script>";
echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
- $contents = json_decode(getPage($url));
- foreach ($contents as $key => $row) {
+ $stops = json_decode(getPage($url));
+ foreach ($stops as $key => $row) {
$stopName[$key] = $row[1];
}
// Sort the stops by name
- array_multisort($stopName, SORT_ASC, $contents);
+ array_multisort($stopName, SORT_ASC, $stops);
$firstletter = "";
- foreach ($contents as $row) {
+ $stopsGrouped = Array();
+ foreach ($stops as $key => $row) {
if (substr($row[1], 0, 1) != $firstletter) {
echo "<a name=$firstletter></a>";
$firstletter = substr($row[1], 0, 1);
}
- echo '<li>';
- if (!startsWith($row[5], "Wj")) echo '<img src="css/images/time.png" alt="Timing Point" class="ui-li-icon">';
- echo '<a href="stop.php?stopid=' . $row[0] . (startsWith($row[5], "Wj") ? '&stopcode=' . $row[5] : "") . '">';
- if (isset($_SESSION['lat']) && isset($_SESSION['lon'])) {
- echo '<span class="ui-li-count">' . floor(distance($row[2], $row[3], $_SESSION['lat'], $_SESSION['lon'])) . 'm away</span>';
+ if (($stops[$key][1] != $stops[$key + 1][1]) || $key + 1 >= sizeof($stops)) {
+ if (sizeof($stopsGrouped) > 0) {
+ // print and empty grouped stops
+ // subsequent duplicates
+ $stopsGrouped["stop_ids"][] = $row[0];
+ echo '<li><a href="stop.php?stopids=' . implode(",", $stopsGrouped['stop_ids']) . '">';
+ if (isset($_SESSION['lat']) && isset($_SESSION['lon'])) {
+ echo '<span class="ui-li-count">' . floor(distance($row[2], $row[3], $_SESSION['lat'], $_SESSION['lon'])) . 'm away</span>';
+ }
+ echo bracketsMeanNewLine($row[1].'('.sizeof($stopsGrouped["stop_ids"]).' stops)');
+ echo "</a></li>\n";
+ $stopsGrouped = Array();
+ }
+ else {
+ // just a normal stop
+ echo '<li>';
+ if (!startsWith($row[5], "Wj")) echo '<img src="css/images/time.png" alt="Timing Point" class="ui-li-icon">';
+
+ if (!startsWith($row[5], "Wj")) echo '<img src="css/images/time.png" alt="Timing Point" class="ui-li-icon">';
+ echo '<a href="stop.php?stopid=' . $row[0] . (startsWith($row[5], "Wj") ? '&stopcode=' . $row[5] : "") . '">';
+ if (isset($_SESSION['lat']) && isset($_SESSION['lon'])) {
+ echo '<span class="ui-li-count">' . floor(distance($row[2], $row[3], $_SESSION['lat'], $_SESSION['lon'])) . 'm away</span>';
+ }
+ echo bracketsMeanNewLine($row[1]);
+ echo "</a></li>\n";
+ }
}
- echo bracketsMeanNewLine($row[1]);
- echo '</a></li>';
+ else {
+ // this is a duplicated line item
+ if ($key - 1 <= 0 || ($stops[$key][1] != $stops[$key - 1][1])) {
+ // first duplicate
+ $stopsGrouped = Array(
+ "name" => $row[1],
+ "stop_ids" => Array(
+ $row[0]
+ )
+ );
+ }
+ else {
+ // subsequent duplicates
+ $stopsGrouped["stop_ids"][] = $row[0];
+ }
+ }
}
echo '</ul>';
}
include_footer();
?>
-
-
--- a/trip.php
+++ b/trip.php
@@ -61,7 +61,7 @@
// subsequent duplicates
$stopsGrouped["stop_ids"][] = $row[0];
$stopsGrouped["endTime"] = $times[$key];
- echo '<a href="stop.php?stopids=' . $stopsGrouped['stop_ids'] . '">';
+ echo '<a href="stop.php?stopids=' . implode(",",$stopsGrouped['stop_ids']) . '">';
echo '<p class="ui-li-aside">' . midnight_seconds_to_time($stopsGrouped['startTime']) . ' to ' . midnight_seconds_to_time($stopsGrouped['endTime']) . '</p>';
echo bracketsMeanNewLine($row[1]);
echo '</a></li>';