From: Maxious Date: Wed, 08 Feb 2012 06:05:42 +0000 Subject: URL parameter to filter stop trips display by route or another stop on the route X-Git-Url: https://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=af0f899fc4a3ed516edd2f15bb08d2af3cb4be7c --- URL parameter to filter stop trips display by route or another stop on the route --- --- a/about.php +++ b/about.php @@ -34,7 +34,7 @@
Some icons by Joseph Wain / glyphish.com
Native clients also available for iPhone(cbrTimetable by Sandor Kolotenko - , ACT Buses by David Sullivan) + , ACT Buses by David Sullivan, Bus Trips ACT by Molson Chengalath) , Android (MyBus 2.0 by Imagine Team, GetMe2 Canberra by Colin Thompson ) and Windows Phone 7 (TransHub Canberra by Soul Solutions) Other web clients include iTranzit. --- a/aws/busuidb.sh +++ b/aws/busuidb.sh @@ -7,7 +7,8 @@ psql -d transitdata -f /var/www/transitdata.cbrfeed.sql #createuser transitdata -SDRP #password transitdata -#psql -d transitdata -c "GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;" +#psql -d transitdata -c "GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips\ +#,servicealerts_alerts,servicealerts_informed TO transitdata;" #psql -d transitdata -c "GRANT SELECT,INSERT ON TABLE myway_observations,myway_routes,myway_stops,myway_timingdeltas TO transitdata;" #psql -d transitdata -c "GRANT SELECT,INSERT,UPDATE ON TABLE myway_routes,myway_stops TO transitdata;" ##psql -d transitdata -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO transitdata;" @@ -15,3 +16,4 @@ ##SELECT '', 'public', 'shapes', 'shape_pt', ST_CoordDim(shape_pt), ST_SRID(shape_pt), GeometryType(shape_pt) ##FROM shapes LIMIT 1; php /var/www/updatedb.php + --- a/geo/route.kml.php +++ b/geo/route.kml.php @@ -1,30 +1,105 @@ '; echo ' - + + + '; + + + '; $route = getRoute($routeid); - echo "\n\n"; - $link = curPageURL()."/../trip.php?routeid=".htmlspecialchars ($route["route_id"]); - echo "".$route['route_short_name'].""; - echo ''; - echo ''.$route['route_short_name']." ".$route['route_long_name']."]]> "; -echo "#yellowLineGreenPoly"; +echo "\n\n"; +$_REQUEST['time'] = "12:00"; +$trip = getRouteNextTrip($routeid, 0); +$link = curPageURL() . "/../trip.php?routeid=" . htmlspecialchars($route["route_id"]. "&directionid=0&tripid=".$trip['trip_id']) ; +echo "" . $route['route_short_name'] . " Direction 0 "; +echo ''; +echo '' . $route['route_short_name'] . " Direction 0]]> "; +echo "#yellowLineYellowPoly"; - $trip = getRouteNextTrip($routeid); - echo getTripShape($trip['trip_id']); +echo getTripShape($trip['trip_id']); + echo "\n"; +$stops = Array(); +foreach (getTripStops($trip['trip_id']) as $stop) { + $stop['style'] = "#ylw-pushpin"; + $stops[$stop['stop_id']] = $stop; +} -echo "\n\n"; + +echo "\n\n"; +$trip = getRouteNextTrip($routeid, 1); +$link = curPageURL() . "/../trip.php?routeid=" . htmlspecialchars($route["route_id"]. "&directionid=1&tripid=".$trip['trip_id']) ; +echo "" . $route['route_short_name'] . " Direction 1 "; +echo ''; +echo '' . $route['route_short_name'] . " Direction 1]]> "; +echo "#blueLineBluePoly"; + +echo getTripShape($trip['trip_id']); + echo "\n"; +foreach (getTripStops($trip['trip_id']) as $stop) { + if (isset($stops[$stop['stop_id']])) { + $stop['style'] = "#grn-pushpin"; + } else { + $stop['style'] = "#blue-pushpin"; + } + $stops[$stop['stop_id']] = $stop; +} +foreach ($stops as $stop) { + echo "\n\n"; + $link = curPageURL() . '/../stop.php?stopid=' . htmlspecialchars($stop['stop_id']); + echo "" . htmlspecialchars($stop['stop_name']) . ""; + echo ''; + echo '' . htmlspecialchars($stop['stop_name']) . "]]> "; + echo "" . $stop['style'] . ""; + echo $stop['positionkml']; + echo "\n"; +} + +echo "\n"; ?> --- a/geo/stops.kml.php +++ b/geo/stops.kml.php @@ -1,11 +1,13 @@ createElementNS('http://earth.google.com/kml/2.1', 'kml'); +$node = $dom->createElementNS('http://www.opengis.net/kml/2.2', 'kml'); $parNode = $dom->appendChild($node); // Creates a KML Document element and append it to the KML element. $dnode = $dom->createElement('Document'); @@ -13,7 +15,7 @@ if ($suburb != "") $result_stops = getStopsBySuburb($suburb); else $result_stops = getStops(); foreach ($result_stops as $stop) { - $description = 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $stop['stop_id'] . "
"; + $description = 'View stop page
'; // Creates a Placemark and append it to the Document. $node = $dom->createElement('Placemark'); $placeNode = $docNode->appendChild($node); --- /dev/null +++ b/geo/trip.kml.php @@ -1,1 +1,70 @@ + +'; +echo ' + + + + '; +$trip = getTrip($tripid); +echo "\n\n"; +$link = curPageURL() . "/../trip.php?tripid=" . htmlspecialchars($$tripid); +echo "" . $tripid . ""; +echo ''; +echo '' . $tripid . "]]> "; +echo "#yellowLineGreenPoly"; + +echo getTripShape($tripid); + +echo "\n"; +foreach (getTripStopTimes($tripid) as $stop) { + echo "\n\n"; + $link = curPageURL() . '/../trip.php?tripid=' . htmlspecialchars($tripid); + echo "" . $stop['arrival_time'] . " @ " . htmlspecialchars($stop['stop_name']) . ""; + echo ''; + echo '' . htmlspecialchars($stop['stop_name']) . "]]> "; + echo "#blue-pushpin"; + echo "" . $stop['stop_lon'] . "," . $stop['stop_lat'] . ""; + + echo "\n"; +} +echo "\n"; +?> + + --- a/include/common-auth.inc.php +++ b/include/common-auth.inc.php @@ -30,4 +30,4 @@ login(); } } -?> + --- a/include/common-db.inc.php +++ b/include/common-db.inc.php @@ -36,5 +36,4 @@ include ('db/trip-dao.inc.php'); include ('db/stop-dao.inc.php'); include ('db/servicealert-dao.inc.php'); -?> --- a/include/common-geo.inc.php +++ b/include/common-geo.inc.php @@ -168,5 +168,3 @@ return $contents->features[0]->properties->name; } -?> - --- a/include/common-net.inc.php +++ b/include/common-net.inc.php @@ -35,7 +35,6 @@ debug(print_r($page, true), "json"); return $page; } - function curPageURL() { $isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on"); $port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] != "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443"))); @@ -44,5 +43,4 @@ return $url; } -?> --- a/include/common-request.inc.php +++ b/include/common-request.inc.php @@ -57,6 +57,12 @@ if (isset($_REQUEST['stopids'])) { $stopids = explode(",", filter_var($_REQUEST['stopids'], FILTER_SANITIZE_STRING)); } +if (isset($_REQUEST['filterIncludeRoutes'])) { + $filterIncludeRoutes = explode(",", filter_var($_REQUEST['filterIncludeRoutes'], FILTER_SANITIZE_STRING)); +} +if (isset($_REQUEST['filterHasStop'])) { + $filterHasStop = filter_var($_REQUEST['filterHasStop'], FILTER_SANITIZE_STRING); +} if (isset($_REQUEST['tripid'])) { $tripid = filter_var($_REQUEST['tripid'], FILTER_SANITIZE_STRING); } @@ -72,4 +78,4 @@ if (isset($_REQUEST['geolocate'])) { $geolocate = filter_var($_REQUEST['geolocate'], FILTER_SANITIZE_URL); } -?> + --- a/include/common-session.inc.php +++ b/include/common-session.inc.php @@ -62,10 +62,9 @@ //debug(print_r($_SESSION, true) , "session"); function current_time($time = "") { - if ($_REQUEST['time']) return $_REQUEST['time']; + if (isset($_REQUEST['time'])) return $_REQUEST['time']; else if ($time != "") date("H:i:s",$time); else return date("H:i:s"); } -?> --- a/include/common-template.inc.php +++ b/include/common-template.inc.php @@ -54,7 +54,7 @@ '; - $jqmVersion = "1.0"; + $jqmVersion = "1.0.1"; if (isDebugServer()) { $jqmcss = $basePath . "css/jquery.mobile-$jqmVersion.css"; $jqjs = $basePath . "js/jquery-1.6.4.min.js"; @@ -304,5 +304,4 @@ return ""; } } -?> - + --- a/include/common-transit.inc.php +++ b/include/common-transit.inc.php @@ -33,26 +33,33 @@ } $date = ($date != "" ? $date : time()); $dow = date('w', $date); - - switch ($dow) { - case 0: - return 'sunday'; - case 6: - return 'saturday'; - default: - return 'weekday'; - } -} - -function service_ids($service_period) { + + switch ($dow) { + case 0: + return 'sunday'; + case 6: + return 'saturday'; + default: + return 'weekday'; + } +} + +function service_ids($service_period, $date = "") { switch ($service_period) { case 'sunday': return Array("Sunday", "Sunday"); case 'saturday': return Array("Saturday", "Saturday"); default: - //return 'weekday'; - return Array("Weekday", "Weekday-SchoolVacation"); + $date = ($date != "" ? $date : time()); +// school holidays + $ymd = date('Ymd', $date); + $dow = date('w', $date); + if (intval($ymd) < "20120203" && $dow != 0 && $dow != 6) { + return Array("Weekday-SchoolVacation", "Weekday-SchoolVacation"); + } else { + return Array("Weekday", "Weekday"); + } } } @@ -294,5 +301,4 @@ } } -?> - + --- a/include/common.inc.php +++ b/include/common.inc.php @@ -57,7 +57,7 @@ function isDebugServer() { return php_sapi_name() == "cli" || strstr(php_uname('n'),"actbus") || isset($_SERVER['SERVER_NAME']) && ( $_SERVER['SERVER_NAME'] == "azusa" || $_SERVER['SERVER_NAME'] == "vanille" - || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || $_SERVER['SERVER_NAME'] == "192.168.1.8"); + || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || $_SERVER['SERVER_NAME'] == "192.168.1.8" || $_SERVER['SERVER_NAME'] == "192.168.178.24"); } include_once ("common-geo.inc.php"); @@ -201,6 +201,3 @@ return implode($glue, $retVal); } - -?> - --- a/include/db/route-dao.inc.php +++ b/include/db/route-dao.inc.php @@ -61,8 +61,8 @@ } return $query->fetchAll(); } -function getRouteDescription($routeID) { - $trip = getRouteNextTrip($routeID); +function getRouteDescription($routeID, $directionID) { + $trip = getRouteNextTrip($routeID, $directionID); $start = getTripStartingPoint($trip['trip_id']); $end = getTripDestination($trip['trip_id']); return "From ".$start['stop_name']." to ".$end['stop_name']; @@ -120,14 +120,16 @@ function getRouteNextTrip($routeID, $directionID) { global $conn; - $query = "select routes.route_id,direction_id,trips.trip_id,departure_time from routes join trips on trips.route_id = routes.route_id + $query = "select routes.route_id,direction_id,trips.trip_id,trip_headsign,departure_time from routes join trips on trips.route_id = routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where arrival_time between :currentTime and :futureTime and routes.route_id = :routeID and trips.direction_id = :directionID order by arrival_time limit 1"; debug($query, "database"); $query = $conn->prepare($query); $query->bindParam(":currentTime", current_time()); - $query->bindParam(":futureTime", current_time(strtotime(current_time() ." +2h"))); + $futureTime = current_time(strtotime(current_time() ." +2h")); + if (date("h",strtotime(current_time()) > 22)) $futureTime = "23:59:59"; + $query->bindParam(":futureTime", $futureTime); $query->bindParam(":routeID", $routeID); $query->bindParam(":directionID", $directionID); $query->execute(); @@ -210,23 +212,22 @@ $sidA = $service_ids[0]; $sidB = $service_ids[1]; if ($destination != "") { - $query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id + /* $query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id FROM stop_times join trips on trips.trip_id = stop_times.trip_id join routes on trips.route_id = routes.route_id WHERE route_long_name = :destination AND (service_id=:service_periodA OR service_id=:service_periodB) - order by route_short_name"; + order by route_short_name";*/ + $query = "select route_id, direction_id, stop_name, b.trip_id, b.stop_sequence from (select route_id, direction_id, max(stop_sequence) as stop_sequence, max(a.trip_id) as trip_id from stop_times inner join (SELECT route_id, direction_id, max(trip_id) as trip_id + from trips group by route_id,direction_id) as a on stop_times.trip_id = a.trip_id group by route_id, direction_id) as b inner join stop_times on b.trip_id = stop_times.trip_id inner join stops on stop_times.stop_id = stops.stop_id where stop_times.stop_sequence = b.stop_sequence and stop_name = :destination order by route_id;"; } else { - $query = "SELECT DISTINCT route_long_name -FROM stop_times join trips on trips.trip_id = -stop_times.trip_id join routes on trips.route_id = routes.route_id -WHERE (service_id=:service_periodA OR service_id=:service_periodB) - order by route_long_name"; - } - debug($query, "database"); - $query = $conn->prepare($query); - - $query->bindParam(":service_periodA", $sidA); - $query->bindParam(":service_periodB", $sidB); + $query = "select stop_name from (select route_id, direction_id, max(stop_sequence) as stop_sequence, max(a.trip_id) as trip_id from stop_times inner join (SELECT route_id, direction_id, max(trip_id) as trip_id + from trips group by route_id,direction_id) as a on stop_times.trip_id = a.trip_id group by route_id, direction_id) as b inner join stop_times on b.trip_id = stop_times.trip_id inner join stops on stop_times.stop_id = stops.stop_id where stop_times.stop_sequence = b.stop_sequence group by stop_name order by stop_name;"; + } + debug($query, "database"); + $query = $conn->prepare($query); + + //$query->bindParam(":service_periodA", $sidA); + //$query->bindParam(":service_periodB", $sidB); if ($destination != "") $query->bindParam(":destination", $destination); $query->execute(); @@ -265,15 +266,16 @@ } function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) { - if ($service_period == "") + // if ($service_period == "") $service_period = service_period(); $service_ids = service_ids($service_period); $sidA = $service_ids[0]; $sidB = $service_ids[1]; - if ($limit != "") + $limitSQL = ""; + if ($limit != "") $limitSQL = " LIMIT :limit "; global $conn; - $query = "SELECT service_id,trips.route_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id, + $query = "SELECT service_id,trips.route_id,trips.direction_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id, min(ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE)) as distance FROM stop_times join trips on trips.trip_id = stop_times.trip_id @@ -281,7 +283,7 @@ join stops on stops.stop_id = stop_times.stop_id WHERE (service_id=:service_periodA OR service_id=:service_periodB) AND ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), :distance, FALSE) - group by service_id,trips.route_id,route_short_name,route_long_name + group by service_id,trips.route_id,trips.direction_id,route_short_name,route_long_name order by distance $limitSQL"; debug($query, "database"); $query = $conn->prepare($query); @@ -298,4 +300,3 @@ return $query->fetchAll(); } -?> --- a/include/db/servicealert-dao.inc.php +++ b/include/db/servicealert-dao.inc.php @@ -174,4 +174,3 @@ return null; } -?> --- a/include/db/stop-dao.inc.php +++ b/include/db/stop-dao.inc.php @@ -46,7 +46,7 @@ } } $query .= " order by stop_name;"; - debug($query,"database"); + debug($query, "database"); $query = $conn->prepare($query); if ($firstLetter != "") $query->bindParam(":firstLetter", $firstLetter); @@ -167,16 +167,16 @@ if ($service_period == "") { $service_period = service_period(); } - $service_ids = service_ids($service_period); + $service_ids = service_ids($service_period); $sidA = $service_ids[0]; $sidB = $service_ids[1]; $limitSQL = ""; if ($limit != "") $limitSQL .= " LIMIT :limit "; - + global $conn; if ($afterTime != "") { - $query = " SELECT stop_times.trip_id,stop_times.arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,trips.direction_id,route_short_name,route_long_name,end_times.arrival_time as end_time + $query = " SELECT stop_times.trip_id,stop_times.arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,trips.direction_id,trips.trip_headsign,route_short_name,route_long_name,end_times.arrival_time as end_time FROM stop_times join trips on trips.trip_id = stop_times.trip_id @@ -184,7 +184,7 @@ WHERE stop_times.arrival_time IS NOT NULL group by trip_id) as end_times WHERE stop_times.stop_id = :stopID AND stop_times.trip_id = end_times.trip_id -AND (service_id=:service_periodA OR service_id=:service_periodB) ".($route_short_name != "" ? " AND route_short_name = :route_short_name ":"")." +AND (service_id=:service_periodA OR service_id=:service_periodB) " . ($route_short_name != "" ? " AND route_short_name = :route_short_name " : "") . " AND end_times.arrival_time > :afterTime ORDER BY end_time $limitSQL"; } else { @@ -194,7 +194,7 @@ stop_times.trip_id join routes on trips.route_id = routes.route_id WHERE stop_times.stop_id = :stopID -AND (service_id=:service_periodA OR service_id=:service_periodB) ".($route_short_name != "" ? " AND route_short_name = :route_short_name ":"")." +AND (service_id=:service_periodA OR service_id=:service_periodB) " . ($route_short_name != "" ? " AND route_short_name = :route_short_name " : "") . " ORDER BY arrival_time $limitSQL"; } debug($query, "database"); @@ -247,4 +247,3 @@ return $timedTrips; } -?> --- a/include/db/trip-dao.inc.php +++ b/include/db/trip-dao.inc.php @@ -35,7 +35,7 @@ } function getTripStops($tripID) { global $conn; - $query = "SELECT stop_id, stop_name, ST_AsKML(position) as positionkml, + $query = "SELECT stops.stop_id, stop_name, ST_AsKML(position) as positionkml, stop_sequence, trips.trip_id FROM stop_times join trips on trips.trip_id = stop_times.trip_id @@ -49,8 +49,27 @@ databaseError($conn->errorInfo()); return Array(); } - return $query->fetchColumn(0); -} + return $query->fetchAll(); +} + +function getTripHasStop($tripID, $stopID) { + global $conn; + $query = "SELECT stop_id +FROM stop_times +join trips on trips.trip_id = stop_times.trip_id +WHERE trips.trip_id = :tripID and stop_times.stop_id = :stopID"; + debug($query, "database"); + $query = $conn->prepare($query); + $query->bindParam(":tripID", $tripID); + $query->bindParam(":stopID", $stopID); + $query->execute(); + if (!$query) { + databaseError($conn->errorInfo()); + return Array(); + } + return ($query->fetchColumn() > 0); +} + function getTripShape($tripID) { // todo, use shapes table if shape_id specified global $conn; @@ -78,7 +97,7 @@ join trips on trips.trip_id = stop_times.trip_id join routes on trips.route_id = routes.route_id join stops on stops.stop_id = stop_times.stop_id -WHERE trips.trip_id = :tripID $range ORDER BY stop_sequence"; +WHERE trips.trip_id = :tripID ORDER BY stop_sequence"; debug($query, "database"); $query = $conn->prepare($query); $query->bindParam(":tripID", $tripID); @@ -203,6 +222,3 @@ } return $query->fetchAll(); } - - -?> --- a/labs/busstopdensity.tile.php +++ b/labs/busstopdensity.tile.php @@ -1,6 +1,6 @@ "; $trips = getStopTripsWithTimes($stop['stop_id'], "", "", "", 3); --- a/myway/myway_api.json.php +++ b/myway/myway_api.json.php @@ -84,6 +84,9 @@ curl_setopt($ch, CURLOPT_REFERER, "https://www.transport.act.gov.au/ARTS/getbalance.asp"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); + // ssl ignore + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //execute post $pageHTML = curl_exec($ch); if (curl_errno($ch)) --- a/myway/myway_timeliness.php +++ b/myway/myway_timeliness.php @@ -41,8 +41,18 @@ $labels = Array(); $lastRoute = ""; foreach ($query->fetchAll() as $delta) { + /*$routeIDParts = explode(" ",$delta['route_name']); + $routeNumber = $routeIDParts[0]; + $routeDirection = $routeIDParts[1]; + if (preg_match('/31./',$routeName)) { + $routeName = "312-319"." ".$routeDirection; + } else { + $routeName = $delta['route_name']; + }*/ + $routeName = $delta['route_name']; - if (preg_match('/z/',$routeName)) { + + if (preg_match('/31./',$routeName)) { $routeName = "312-319"; } else { $routeName = preg_replace('/\D/', '', $routeName); --- a/myway/myway_timeliness_calculate.php +++ b/myway/myway_timeliness_calculate.php @@ -58,10 +58,18 @@ $search_time = date("H:i:s", strtotime($obsv['time']) - (60 * 60)); // 30 minutes margin $date = date("c", strtotime($obsv['time'])); $timing_period = service_period(strtotime($date)); + + // little hack for public holidays nolonger active; weekdays and 900+ route numbers don't make sense + if ($timing_period == "weekday" && preg_match('/9../',$obsv["route_short_name"])) { + echo "Potential public holiday detected, trying Sunday timetable.
"; + + $timing_period = "sunday"; + } + if (isset($obsv["stop_id"]) && $obsv["stop_id"] != "" && $obsv["stop_id"] != "*") { $potentialStops = Array(getStop($obsv["stop_id"])); } else { - echo "Potential stops are a bus station
"; + echo "No stop_id recorded for this stop_name, potential stops are a bus station
"; $potentialStops = getStops("", trim(str_replace(Array("Arrival","Arrivals","Arrive Platform 3 Set down only.","Arrive","Set Down Only"), "", $obsv["myway_stop"]))); } //:get myway_stops records @@ -87,7 +95,7 @@ } $timeDeltas = Array(); foreach ($potentialRoutes as $potentialRoute) { - echo "Matched route: {$potentialRoute['route_id']} {$potentialRoute['route_short_name']}{$potentialRoute['route_long_name']} {$timing_period}
"; + echo "Matched route: {$potentialRoute['route_id']} {$potentialRoute['route_short_name']} {$timing_period}
"; foreach ($potentialStops as $potentialStop) { $stopRoutes = getStopRoutes($potentialStop['stop_id'], $timing_period); $foundRoute = Array(); @@ -110,7 +118,7 @@ "timeDiff" => $timeDiff, "stop_id" => $potentialStop['stop_id'], "stop_sequence" => $trip['stop_sequence'], - "route_name" => "{$trip['route_short_name']} {$trip['route_long_name']} {$trip['direction']}", + "route_name" => "{$trip['route_short_name']} {$trip['trip_headsign']}", "route_id" => $trip['route_id'] ); echo "Found trip {$trip['trip_id']} at stop {$potentialStop['stop_id']} (#{$potentialStop['stop_name']}, sequence #{$trip['stop_sequence']})
"; --- a/routeList.php +++ b/routeList.php @@ -32,23 +32,36 @@ } function displayRoutes($routes) { - global $nearby; echo '