From: Maxious Date: Sun, 29 Jan 2012 03:46:06 +0000 Subject: KML for trips/routes/stops fixed X-Git-Url: https://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=490aa8fe959767afedc42fb0f70cd2bf7bb86701 --- KML for trips/routes/stops fixed --- --- 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/geo/route.kml.php +++ b/geo/route.kml.php @@ -1,4 +1,5 @@ @@ -14,15 +15,15 @@ '; $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 "\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"; - - $trip = getRouteNextTrip($routeid); - echo getTripShape($trip['trip_id']); +$trip = getRouteNextTrip($routeid); +echo getTripShape($trip['trip_id']); echo "\n\n"; ?> --- a/geo/stops.kml.php +++ b/geo/stops.kml.php @@ -1,11 +1,11 @@ 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 +13,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 = baseURL() . 'stop.php?stopid=' . $stop['stop_id'] . "
"; // 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,31 @@ + +'; +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\n"; +?> + + --- a/include/common-net.inc.php +++ b/include/common-net.inc.php @@ -35,7 +35,11 @@ debug(print_r($page, true), "json"); return $page; } +function baseURL() { + $protocol = $_SERVER['HTTPS'] ? "https" : "http"; + return $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; +} function curPageURL() { $isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on"); $port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] != "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443"))); --- a/include/common-request.inc.php +++ b/include/common-request.inc.php @@ -57,11 +57,14 @@ if (isset($_REQUEST['stopids'])) { $stopids = explode(",", filter_var($_REQUEST['stopids'], FILTER_SANITIZE_STRING)); } -if (isset($_REQUEST['routeids'])) { - $routeids = explode(",", filter_var($_REQUEST['routeids'], FILTER_SANITIZE_STRING)); -} if (isset($_REQUEST['tripid'])) { $tripid = filter_var($_REQUEST['tripid'], FILTER_SANITIZE_STRING); +} +if (isset($_REQUEST['routeid'])) { + $routeid = filter_var($_REQUEST['routeid'], FILTER_SANITIZE_STRING); +} +if (isset($_REQUEST['directionid'])) { + $directionid = filter_var($_REQUEST['directionid'], FILTER_SANITIZE_STRING); } if (isset($_REQUEST['stopid'])) { $stopid = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_NUMBER_INT); --- a/include/common-session.inc.php +++ b/include/common-session.inc.php @@ -61,8 +61,10 @@ } //debug(print_r($_SESSION, true) , "session"); -function current_time() { - return ($_REQUEST['time'] ? $_REQUEST['time'] : date("H:i:s")); +function current_time($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"; --- a/include/common-transit.inc.php +++ b/include/common-transit.inc.php @@ -18,8 +18,7 @@ $service_periods = Array( 'sunday', 'saturday', - 'weekday', - "Christmas2011","EndOfYearHolidays" + 'weekday' ); function service_period($date = "") { @@ -33,48 +32,39 @@ return strtolower($override['service_id']); } $date = ($date != "" ? $date : time()); -// christmas special cases - $ymd = date('Ymd', $date); $dow = date('w', $date); - if ($ymd == "20111225") { - return "Christmas2011"; - } if ($ymd == "20111228" || $ymd == "20111229" || $ymd == "20111230") { - return "EndOfYearHolidays"; - } else if (intval($ymd) < "20120203" && $dow != 0 && $dow != 6) { - return "Weekday-SchoolVacation"; - } else { - 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"); - case "Christmas2011": - return Array("Christmas2011", "Christmas2011"); - case "EndOfYearHolidays": - return Array("Weekday-EndOfYearHolidays", "Weekday-EndOfYearHolidays"); - case "Weekday-SchoolVacation": - return Array("Weekday", "Weekday-SchoolVacation"); default: - //return 'weekday'; - return Array("Weekday", "Weekday"); + $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"); + } } } function valid_service_ids() { - return array_merge(service_ids(""), service_ids('saturday'), service_ids('sunday'), - Array("Christmas2011","Weekday-EndOfYearHolidays","Weekday-SchoolVacation")); + return array_merge(service_ids(""), service_ids('saturday'), service_ids('sunday')); } function midnight_seconds($time = "") { --- 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']; @@ -86,30 +86,6 @@ $query = "Select * from routes order by route_short_name;"; debug($query, "database"); $query = $conn->prepare($query); - $query->execute(); - if (!$query) { - databaseError($conn->errorInfo()); - return Array(); - } - return $query->fetchAll(); -} - -function getRoutesByNumber($routeNumber = "", $directionID = "",$service_period = "") { - global $conn; - if ($routeNumber != "") { - $query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id = -routes.route_id join stop_times on stop_times.trip_id = trips.trip_id -where route_short_name = :routeNumber OR route_short_name LIKE :routeNumber2 order by route_short_name;"; - } else { - $query = "SELECT DISTINCT route_short_name from routes order by route_short_name"; - } - debug($query, "database"); - $query = $conn->prepare($query); - if ($routeNumber != "") { - $query->bindParam(":routeNumber", $routeNumber); - $routeNumber2 = "% " . $routeNumber; - $query->bindParam(":routeNumber2", $routeNumber2); - } $query->execute(); if (!$query) { databaseError($conn->errorInfo()); @@ -141,16 +117,21 @@ return $query->fetchAll(); } -function getRouteNextTrip($routeID) { +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 -join stop_times on stop_times.trip_id = trips.trip_id where arrival_time > :currentTime and routes.route_id = :routeID order by + $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()); + $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(); databaseError($conn->errorInfo()); if (!$query) { @@ -158,15 +139,21 @@ return Array(); } $r = $query->fetch(PDO :: FETCH_ASSOC); - - // past last trip of the day special case - if (sizeof($r) < 16) { - $query = "select * from routes join trips on trips.route_id = routes.route_id -join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID order by + return $r; +} + +function getRouteFirstTrip($routeID,$directionID) { + global $conn; + + $query = "select * from routes join trips on trips.route_id = routes.route_id +join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = :routeID +and trips.direction_id = :directionID order by arrival_time DESC limit 1"; debug($query, "database"); $query = $conn->prepare($query); $query->bindParam(":routeID", $routeID); + + $query->bindParam(":directionID", $directionID); $query->execute(); if (!$query) { databaseError($conn->errorInfo()); @@ -174,12 +161,11 @@ } $r = $query->fetch(PDO :: FETCH_ASSOC); - } - return $r; -} - -function getRouteAtStop($routeID, $stop_id) { - $nextTrip = getRouteNextTrip($routeID); + return $r; +} + +function getRouteAtStop($routeID, $directionID, $stop_id) { + $nextTrip = getRouteNextTrip($routeID, $directionID); if ($nextTrip['trip_id']) { foreach (getTripStopTimes($nextTrip['trip_id']) as $tripStop) { if ($tripStop['stop_id'] == $stop_id) @@ -189,7 +175,7 @@ return Array(); } -function getRoutesTrips($routeIDs, $directionID = "", $service_period = "") { +function getRouteTrips($routeID, $directionID = "", $service_period = "") { global $conn; if ($service_period == "") $service_period = service_period(); @@ -201,12 +187,11 @@ $directionSQL = " and direction_id = :directionID "; $query = "select routes.route_id,trips.trip_id,service_id,arrival_time, stop_id, stop_sequence from routes join trips on trips.route_id = routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where (service_id=:service_periodA OR service_id=:service_periodB) -AND (routes.route_id = :routeIDA OR routes.route_id = :routeIDB) " . $directionSQL . " and stop_sequence = '1' order by +AND (routes.route_id = :routeID) " . $directionSQL . " and stop_sequence = '1' order by arrival_time "; debug($query, "database"); $query = $conn->prepare($query); - $query->bindParam(":routeIDA", $routeIDs[0]); - $query->bindParam(":routeIDB", $routeIDs[1]); + $query->bindParam(":routeID", $routeID); $query->bindParam(":service_periodA", $sidA); $query->bindParam(":service_periodB", $sidB); if ($directionSQL != "") @@ -227,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(); @@ -290,7 +274,7 @@ 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 @@ -298,7 +282,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); --- 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"); --- a/include/db/trip-dao.inc.php +++ b/include/db/trip-dao.inc.php @@ -78,7 +78,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); --- a/index.php +++ b/index.php @@ -37,13 +37,9 @@
  • Routes By Suburb
  • Nearby Routes
  • + Busness R&D + MyWay Balance and Timeliness Survey Results Busness R&D'; - echo ' MyWay Balance and Timeliness Survey Results'; - include_footer(true) ?> --- 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,38 +32,35 @@ } function displayRoutes($routes) { - global $nearby; echo '
      '; - $filteredRoutes = Array(); foreach ($routes as $route) { foreach (getRouteHeadsigns($route['route_id']) as $headsign) { - $start = $headsign['stop_name']; - $serviceday = service_period_day($headsign['service_id']); - $key = $route['route_short_name'] . "." . $headsign['direction_id']; - if (isset($filteredRoutes[$key])) { - $filteredRoutes[$key]['route_ids'][] = $route['route_id']; - $filteredRoutes[$key]['route_ids'] = array_unique($filteredRoutes[$key]['route_ids']); - } else { - $filteredRoutes[$key]['route_short_name'] = $route['route_short_name']; - $filteredRoutes[$key]['route_long_name'] = "starting at " . $start; - $filteredRoutes[$key]['service_id'] = $serviceday; - $filteredRoutes[$key]['trip_headsign'] = $headsign['trip_headsign'].(strstr($headsign['trip_headsign'], "bound") ===false ?"bound":""); - $filteredRoutes[$key]['direction_id'] = $headsign['direction_id']; - if (isset($nearby)) { - $filteredRoutes[$key]['distance'] = $route['distance']; - } - } + + //print_r($route); + echo '
    • ' . $route['route_id'] . "

      + +

      " . $headsign['trip_headsign'] . (strstr($headsign['trip_headsign'], "bound") === false ? "bound" : "") . ", starting at " . $headsign['stop_name'] . " (" . ucwords($headsign['service_id']) . ")

      "; + + echo"
    • \n"; } } - foreach ($filteredRoutes as $key => $route) { - echo '
    • ' . $route['route_short_name'] . "

      +} + +function displayNearbyRoutes($routes) { + echo '
        '; + foreach ($routes as $route) { + $time = getRouteAtStop($route['route_id'], $route['direction_id'], $route['stop_id']); + $start = getTripStartingPoint($time['trip_id']); + $end = getTripDestination($time['trip_id']); + //print_r($route); + echo '
      • ' . $route['route_short_name'] . "

        -

        " . $route['trip_headsign'].", ". $route['route_long_name'] . " (" . ucwords($route['service_id']) . ")

        "; - if (isset($nearby)) { - $time = getRouteAtStop($route['route_id'], $route['stop_id']); - echo '' . ($time['arrival_time'] ? $time['arrival_time'] : "No more trips today") . "
        " . floor($route['distance']) . 'm away
        '; - } - echo"
      • \n"; +

        " . $time['trip_headsign'] . (strstr($time['trip_headsign'], "bound") === false ? "bound" : "") . " from ".$start['stop_name']." to ".$end['stop_name'] . " (" . ucwords($time['service_id']) . ")

        "; + $stop = getStop($route['stop_id']); +echo "

        Board at ".$stop['stop_name']."

        "; + echo '' . ($time['arrival_time'] ? $time['arrival_time'] : "No more trips today") . "
        " . floor($route['distance']) . 'm away
        '; + + echo" \n"; } } @@ -106,7 +103,7 @@ if (sizeof($routes) > 0) { - displayRoutes($routes); + displayNearbyRoutes($routes); } else { echo '
          '; echo "
        • No routes nearby.
        • "; @@ -116,7 +113,7 @@ navbar(); echo '
            '; if (isset($bynumber)) { - $routes = getRoutesByNumber(); + $routes = getRoutes(); $routeSeries = Array(); $seriesRange = Array(); foreach ($routes as $key => $routeNumber) { @@ -160,7 +157,7 @@ displayRoutes(getRoutesByDestination($routeDestination)); } else { foreach (getRoutesByDestination() as $destination) { - echo '
          • ' . $destination['route_long_name'] . "...
          • \n"; + echo '
          • ' . $destination['stop_name'] . "...
          • \n"; } } } --- a/stop.php +++ b/stop.php @@ -73,8 +73,12 @@ //} } } -include_header($stop['stop_name'], "stop"); - +if (sizeof($stops) > 0) { +$stopDescParts = explode("
            ",$stop['stop_desc']); +include_header(trim(str_replace("Street: ","",$stopDescParts[0])), "stop"); +} else { + include_header($stop['stop_name']); +} /* $serviceAlerts = json_decode(getPage(curPageURL() . "/servicealerts_api.php?filter_class=stop&filter_id=".$stopid) , true); foreach($serviceAlerts['entities'] as $serviceAlert) { @@ -106,22 +110,29 @@ } else { $trips = getStopTripsWithTimes($stopid); } + echo "
            "; +// if we have too many trips, cut down to size. +if (sizeof($trips) > 10) { + $trips = array_splice($trips, 0,10); +} + // later/earlier button setup if (sizeof($trips) == 0) { $time = isset($_REQUEST['time']) ? strtotime($_REQUEST['time']) : time(); $earlierTime = $time - (90 * 60); $laterTime = $time + (90 * 60); } else { - $earlierTime = strtotime($trips[0]['arrival_time']) - (90 * 60); - $laterTime = strtotime($trips[sizeof($trips) - 1]['arrival_time']) - 60; + $tripsKeys = array_keys($trips); + $earlierTime = strtotime($trips[$tripsKeys[0]]['arrival_time']) - (90 * 60); + $laterTime = strtotime($trips[$tripsKeys[sizeof($trips) - 1]]['arrival_time']) - 60; } -if (sizeof($stopids) > 0) { +if (isset($stopids) && sizeof($stopids) > 0) { $stopidurl = "stopids=" . implode(",", $stopids); } else { $stopidurl = "stopid=$stopid"; } -if (sizeof($trips) > 10) { +if (sizeof($trips) >= 10) { echo 'Later Trips'; } echo 'Earlier Trips'; @@ -133,7 +144,7 @@ echo '
          • '; $destination = getTripDestination($trip['trip_id']); - echo '

            '. (service_period() == "Christmas2011" ? $trip['route_long_name'] : "") . $trip['route_short_name'] . " towards " . $destination['stop_name'] . "

            "; + echo '

            '. $trip['route_short_name'] . " towards " . $destination['stop_name'] . "

            "; $viaPoints = viaPointNames($trip['trip_id'], $trip['stop_sequence']); if ($viaPoints != "") echo '
            Via: ' . $viaPoints . ''; --- a/stopList.php +++ b/stopList.php @@ -36,8 +36,8 @@ navbar(); echo '

              '; if (!isset($firstLetter)) { - foreach (range('A', 'Z') as $letter) { - echo "
            • $letter...
            • \n"; + foreach (range('A', 'Y') as $letter) { // no suburbs start with J, Q, U, V, X or Z + if ($letter != "J" && $letter != "Q" && $letter != "U" && $letter != "V" && $letter != "X") echo "
            • $letter...
            • \n"; } } else { foreach ($suburbs as $suburb) { @@ -86,17 +86,16 @@ navbar(); } echo '
                '; - if (!isset($firstLetter) && !isset($suburb) && !isset($nearby)) { - foreach (range('A', 'Z') as $letter) { - echo "
              • $letter...
              • \n"; + if (!isset($firstLetter) && !isset($suburb) && !isset($nearby)) { // all stops by letter + foreach (range('A', 'Y') as $letter) { // no streets start with X or Z + if ($letter != "X") echo "
              • $letter...
              • \n"; } } else { //var_dump($stops); $stopsGrouped = Array(); foreach ($stops as $key => $stop) { - if (stopCompare($stops[$key]["stop_name"]) - != stopCompare($stops[$key + 1]["stop_name"]) - || $key + 1 >= sizeof($stops)) { + if ($key + 1 >= sizeof($stops) || + stopCompare($stops[$key]["stop_name"]) != stopCompare($stops[$key + 1]["stop_name"])) { if (sizeof($stopsGrouped) > 0) { // print and empty grouped stops // subsequent duplicates --- a/trip.php +++ b/trip.php @@ -17,22 +17,16 @@ */ include ('include/common.inc.php'); $routetrips = Array(); -if (isset($routeids) && !isset($tripid)) { - foreach ($routeids as $routeid) { - $possibleTrip = getRouteNextTrip($routeid); - if (!isset($trip) || strtotime($possibleTrip['departure_time']) < strtotime($trip['departure_time'])) { - $trip = getRouteNextTrip($routeid); - } +if (isset($routeid) && !isset($tripid)) { + $trip = getRouteNextTrip($routeid,$directionid); + + if (!($trip)) { + $trip = getRouteFirstTrip($routeid,$directionid); } $tripid = $trip['trip_id']; } else { $trip = getTrip($tripid); - $similarRoutes = getRoutesByNumber($trip['route_short_name'], $trip['direction_id'], strtolower($trip["service_id"])); - $routeids = Array(); - foreach ($similarRoutes as $similarRoute) { - $routeids[] = $similarRoute['route_id']; - } - $routeids = array_unique($routeids); + $routeid = $trip['route_id']; } $directionid = $trip['direction_id']; $service_period = strtolower($trip["service_id"]); @@ -40,52 +34,35 @@ include_header("Stops on " . $trip['route_short_name'] . ' ' . $destination['stop_name'], "trip"); trackEvent("Route/Trip View", "View Route", $trip['route_short_name'] . ' ' . $destination['stop_name'], $routeid); echo ''; -echo 'View Original Timetable/Map'; +echo 'View Original Timetable/Map '; +echo 'View Trip in Google Earth '; +echo 'View Route in Google Earth'; echo '

                Via:

                ' . viaPointNames($tripid) . ''; echo '

                Other Trips:

                '; -echo "getRoutesTrips(".print_r($routeids,true).", {$trip['direction_id']}, $service_period) $tripid"; -$routeTrips = getRoutesTrips($routeids, $trip['direction_id'], $service_period); +$routeTrips = getRouteTrips($routeid, $trip['direction_id'], $service_period); foreach ($routeTrips as $key => $othertrip) { - // if ($othertrip['trip_id'] != $tripid) { - echo '' . str_replace(" ", ":00", str_replace(":00", " ", $othertrip['arrival_time'])) . ' '; - // } else { - // skip this trip but look forward/back - if ($key - 1 > 0) - $prevTrip = $routeTrips[$key - 1]['trip_id']; - if ($key + 1 < sizeof($routeTrips)) - $nextTrip = $routeTrips[$key + 1]['trip_id']; - // } + // if ($othertrip['trip_id'] != $tripid) { + echo '' . str_replace(" ", ":00", str_replace(":00", " ", $othertrip['arrival_time'])) . ' '; + // } else { + // skip this trip but look forward/back + if ($key - 1 > 0) + $prevTrip = $routeTrips[$key - 1]['trip_id']; + if ($key + 1 < sizeof($routeTrips)) + $nextTrip = $routeTrips[$key + 1]['trip_id']; + // } } flush(); @ob_flush(); echo '

                Other directions/timing periods:

                '; $otherDir = 0; -$filteredRoutes = Array(); -foreach (getRoutesByNumber($trip['route_short_name']) as $row) { - foreach (getRouteHeadsigns($row['route_id']) as $headsign) { - if ( $headsign['direction_id'] != $directionid || strtolower($headsign['service_id']) != $service_period) { - echo "{$headsign['direction_id']} != $directionid || ".strtolower($headsign['service_id'])." != $service_period
                "; - $start = $headsign['stop_name']; + foreach (getRouteHeadsigns($routeid) as $headsign) { + if ($headsign['direction_id'] != $directionid || strtolower($headsign['service_id']) != $service_period) { - $serviceday = strtolower($headsign['service_id']); - $key = $row['route_short_name'] . "." . $headsign['direction_id']; - if (isset($filteredRoutes[$key])) { - $filteredRoutes[$key]['route_ids'][] = $row['route_id']; - $filteredRoutes[$key]['route_ids'] = array_unique($filteredRoutes[$key]['route_ids']); - } else { - $filteredRoutes[$key]['route_short_name'] = $row['route_short_name']; - $filteredRoutes[$key]['route_long_name'] = "Starting at " . $start; - $filteredRoutes[$key]['service_id'] = $serviceday; - $filteredRoutes[$key]['direction_id'] = $headsign['direction_id']; - } + echo ' Starting at ' . $headsign['stop_name'] . ' (' . $headsign['service_id'] . ') '; + $otherDir++; } } -} -foreach ($filteredRoutes as $key => $row) { - echo '' . $row['route_long_name'] . ' (' . ucwords($row['service_id']) . ') '; - $otherDir++; -} if ($otherDir == 0) { echo "None"; @@ -95,9 +72,9 @@ @ob_flush(); echo "
                "; if ($nextTrip) - echo 'Next Trip'; + echo 'Next Trip'; if ($prevTrip) - echo 'Previous Trip'; + echo 'Previous Trip'; echo "
                "; echo '
                  '; $stopsGrouped = Array();