Fix nearest routes/trips
--- a/about.php
+++ b/about.php
@@ -35,7 +35,8 @@
Some icons by Joseph Wain / glyphish.com<br />
Native clients also available for iPhone(<a href="http://itunes.apple.com/au/app/cbrtimetable/id444287349?mt=8">cbrTimetable by Sandor Kolotenko</a>
, <a href="http://itunes.apple.com/au/app/act-buses/id376634797?mt=8">ACT Buses by David Sullivan</a>)
- , Android (<a href="https://market.android.com/details?id=com.action">MyBus 2.0 by Imagine Team</a>)
+ , Android (<a href="https://market.android.com/details?id=com.action">MyBus 2.0 by Imagine Team</a>, <A href="https://market.android.com/details?id=GetMe2CanberraFree.source">GetMe2 Canberra by
+Colin Thompson </a>)
and Windows Phone 7 (<a href="http://www.windowsphone.com/en-AU/apps/d840375e-429c-4aa4-a358-80eec6ea9e66">TransHub Canberra by Soul Solutions</a>) Other web clients include <a href="http://canberra.itranzit.com/option.html">iTranzit</a>.
<br />
GTFS-realtime API:
--- 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 ($_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
@@ -175,7 +175,7 @@
<div data-role="content"> ';
if ($GTFSREnabled) {
$overrides = getServiceOverride();
- if ($overrides['service_id']) {
+ if (isset($overrides['service_id'])) {
if ($overrides['service_id'] == "noservice") {
echo '<div id="servicewarning">Buses are <strong>not running today</strong> due to industrial action/public holiday. See <a
href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>';
--- a/include/common-transit.inc.php
+++ b/include/common-transit.inc.php
@@ -20,41 +20,44 @@
'saturday',
'weekday'
);
-function service_period_day ($spid) {
- $idParts = explode("-",$spid);
- return strtolower($idParts[2]);
-}
+
function service_period($date = "") {
- if (isset($_REQUEST['service_period']))
+ if (isset($_REQUEST['service_period'])) {
return $_REQUEST['service_period'];
+ }
+
$override = getServiceOverride($date);
- if ($override['service_id']) {
- return service_period_day ($override['service_id']);
- }
-
- switch (date('w', ($date != "" ? $date : time()))) {
- case 0:
- return 'sunday';
- case 6:
- return 'saturday';
- default:
- return 'weekday';
- }
-}
+ if (isset($override['service_id'])) {
+ return strtolower($override['service_id']);
+ }
+ $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 ($service_period) {
case 'sunday':
- return Array("2010-TUGGSUN-Sunday-20","2010-BELCSUN-Sunday-19");
+ return Array("Sunday", "Sunday");
case 'saturday':
- return Array("2010-BELCSAT-Saturday-19","2010-TUGGSAT-Saturday-19");
+ return Array("Saturday", "Saturday");
default:
//return 'weekday';
- return Array("2010-BELCMAST-Weekday-15","2010-TUGGMAST-Weekday-14");
- }
-}
+ return Array("Weekday", "Weekday-SchoolVacation");
+ }
+}
+
function valid_service_ids() {
- return array_merge(service_ids(""),service_ids('saturday'),service_ids('sunday'));
+ 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 != "")
@@ -290,7 +275,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 +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);
--- a/index.php
+++ b/index.php
@@ -20,7 +20,7 @@
<div data-role="page">
<div data-role="content">
<div id="jqm-homeheader">
- <h1>busness time</h1><br><small>Canberra Bus Timetables and Trip Planner</small>
+ <h1>busness time</h1><br><small>Canberra Bus Timetables and Trip Planner</small>
</div>
<a name="maincontent" id="maincontent"></a>
<a href="tripPlanner.php" data-role="button" data-icon="navigation">Launch Trip Planner...</a>
@@ -37,9 +37,9 @@
<li><a href="routeList.php?bysuburbs=yes">Routes By Suburb</a></li>
<li><a class="nearby" href="routeList.php?nearby=yes">Nearby Routes</a></li>
</ul>
+ <a href="labs/index.php" data-role="button" data-icon="beaker">Busness R&D</a>
+ <a href="myway/index.php" data-role="button">MyWay Balance and Timeliness Survey Results</a>
<?php
- echo ' <a href="labs/index.php" data-role="button" data-icon="beaker">Busness R&D</a>';
- echo ' <a href="myway/index.php" data-role="button">MyWay Balance and Timeliness Survey Results</a>';
include_footer(true)
?>
--- a/routeList.php
+++ b/routeList.php
@@ -32,38 +32,35 @@
}
function displayRoutes($routes) {
- global $nearby;
echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
- $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 '<li> <a href="trip.php?routeid=' . $route['route_id'] . '&directionid=' . $headsign['direction_id'] . '"><h3>' . $route['route_short_name'] . "</h3>
+
+ <p>" . $headsign['trip_headsign'] . (strstr($headsign['trip_headsign'], "bound") === false ? "bound" : "") . ", starting at " . $headsign['stop_name'] . " (" . ucwords($headsign['service_id']) . ")</p>";
+
+ echo" </a></li>\n";
}
}
- foreach ($filteredRoutes as $key => $route) {
- echo '<li> <a href="trip.php?routeids=' . implode(",", $route['route_ids']) . '&directionid=' . $route['direction_id'] . '"><h3>' . $route['route_short_name'] . "</h3>
+}
+
+function displayNearbyRoutes($routes) {
+ echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
+ 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 '<li> <a href="trip.php?routeid=' . $route['route_id'] . '&directionid=' . $route['direction_id'] . '"><h3>' . $route['route_short_name'] . "</h3>
- <p>" . $route['trip_headsign'].", ". $route['route_long_name'] . " (" . ucwords($route['service_id']) . ")</p>";
- if (isset($nearby)) {
- $time = getRouteAtStop($route['route_id'], $route['stop_id']);
- echo '<span class="ui-li-count">' . ($time['arrival_time'] ? $time['arrival_time'] : "No more trips today") . "<br>" . floor($route['distance']) . 'm away</span>';
- }
- echo" </a></li>\n";
+ <p>" . $time['trip_headsign'] . (strstr($time['trip_headsign'], "bound") === false ? "bound" : "") . " from ".$start['stop_name']." to ".$end['stop_name'] . " (" . ucwords($time['service_id']) . ")</p>";
+ $stop = getStop($route['stop_id']);
+echo "<p>Board at ".$stop['stop_name']."</p>";
+ echo '<span class="ui-li-count">' . ($time['arrival_time'] ? $time['arrival_time'] : "No more trips today") . "<br>" . floor($route['distance']) . 'm away</span>';
+
+ echo" </a></li>\n";
}
}
@@ -106,7 +103,7 @@
if (sizeof($routes) > 0) {
- displayRoutes($routes);
+ displayNearbyRoutes($routes);
} else {
echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
echo "<li style='text-align: center;'> No routes nearby.</li>";
@@ -116,7 +113,7 @@
navbar();
echo ' <ul data-role="listview" data-inset="true">';
if (isset($bynumber)) {
- $routes = getRoutesByNumber();
+ $routes = getRoutes();
$routeSeries = Array();
$seriesRange = Array();
foreach ($routes as $key => $routeNumber) {
--- a/stop.php
+++ b/stop.php
@@ -106,22 +106,29 @@
} else {
$trips = getStopTripsWithTimes($stopid);
}
+
echo "<div class='ui-header' style='overflow: visible; height: 2.5em'>";
+// 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) {
$stopidurl = "stopids=" . implode(",", $stopids);
} else {
$stopidurl = "stopid=$stopid";
}
-if (sizeof($trips) > 10) {
+if (sizeof($trips) >= 10) {
echo '<a href="stop.php?' . $stopidurl . '&service_period=' . service_period() . '&time=' . date("H:i", $laterTime) . '" data-icon="arrow-r" class="ui-btn-right">Later Trips</a>';
}
echo '<a href="stop.php?' . $stopidurl . '&service_period=' . service_period() . '&time=' . date("H:i", $earlierTime) . '" data-icon="arrow-l" class="ui-btn-left">Earlier Trips</a>';
@@ -133,7 +140,7 @@
echo '<li>';
$destination = getTripDestination($trip['trip_id']);
- echo '<a href="trip.php?stopid=' . $stopid . '&tripid=' . $trip['trip_id'] . '"><h3>' . $trip['route_short_name'] . " towards " . $destination['stop_name'] . "</h3><p>";
+ echo '<a href="trip.php?stopid=' . $stopid . '&tripid=' . $trip['trip_id'] . '"><h3>'. $trip['route_short_name'] . " towards " . $destination['stop_name'] . "</h3><p>";
$viaPoints = viaPointNames($trip['trip_id'], $trip['stop_sequence']);
if ($viaPoints != "")
echo '<br><span class="viaPoints">Via: ' . $viaPoints . '</span>';
--- a/trip.php
+++ b/trip.php
@@ -17,25 +17,19 @@
*/
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'], service_period_day($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 = service_period_day($trip["service_id"]);
+$service_period = strtolower($trip["service_id"]);
$destination = getTripDestination($trip['trip_id']);
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);
@@ -43,49 +37,30 @@
echo '<a href="' . $trip['route_url'] . '">View Original Timetable/Map</a>';
echo '<h2>Via:</h2> <small>' . viaPointNames($tripid) . '</small>';
echo '<h2>Other Trips:</h2> ';
-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 '<a href="trip.php?tripid=' . $othertrip['trip_id'] . "&routeids=" . implode(",", $routeids) . '">' . str_replace(" ", ":00", str_replace(":00", " ", $othertrip['arrival_time'])) . '</a> ';
- // } 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 '<a href="trip.php?tripid=' . $othertrip['trip_id'] . "&routeid=" . $routeid . '">' . str_replace(" ", ":00", str_replace(":00", " ", $othertrip['arrival_time'])) . '</a> ';
+ // } 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 '<h2>Other directions/timing periods:</h2> ';
$otherDir = 0;
-$filteredRoutes = Array();
-foreach (getRoutesByNumber($trip['route_short_name']) as $row) {
- foreach (getRouteHeadsigns($row['route_id']) as $headsign) {
- if ( $headsign['direction_id'] != $directionid || service_period_day($headsign['service_id']) != $service_period) {
- echo "{$headsign['direction_id']} != $directionid || ".service_period_day($headsign['service_id'])." != $service_period <br>";
- $start = $headsign['stop_name'];
+ foreach (getRouteHeadsigns($routeid) as $headsign) {
+ if ($headsign['direction_id'] != $directionid || strtolower($headsign['service_id']) != $service_period) {
- $serviceday = service_period_day($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 '<a href="trip.php?routeid=' . $routeid . '&directionid=' . $headsign['direction_id'] . '&service_period=' . $headsign['service_id'] . '"> Starting at ' . $headsign['stop_name'] . ' (' . $headsign['service_id'] . ')</a> ';
+ $otherDir++;
}
}
-}
-foreach ($filteredRoutes as $key => $row) {
- echo '<a href="trip.php?routeids=' . implode(",",$row['route_ids']) . '&directionid='.$row['direction_id'].'&service_period='.$row['service_id'].'">' . $row['route_long_name'] . ' (' . ucwords($row['service_id']) . ')</a> ';
- $otherDir++;
-}
if ($otherDir == 0) {
echo "None";
@@ -95,14 +70,14 @@
@ob_flush();
echo "<div class='ui-header' style='overflow: visible; height: 1.5em'>";
if ($nextTrip)
- echo '<a href="trip.php?tripid=' . $nextTrip . "&routeids=" . implode(",", $routeids) . '" data-icon="arrow-r" class="ui-btn-right">Next Trip</a>';
+ echo '<a href="trip.php?tripid=' . $nextTrip . "&routeid=" . $routeid . '" data-icon="arrow-r" class="ui-btn-right">Next Trip</a>';
if ($prevTrip)
- echo '<a href="trip.php?tripid=' . $prevTrip . "&routeids=" . implode(",", $routeids) . '" data-icon="arrow-l" class="ui-btn-left">Previous Trip</a>';
+ echo '<a href="trip.php?tripid=' . $prevTrip . "&routeid=" . $routeid . '" data-icon="arrow-l" class="ui-btn-left">Previous Trip</a>';
echo "</div>";
echo ' <ul data-role="listview" data-inset="true">';
$stopsGrouped = Array();
$tripStopTimes = getTripStopTimes($tripid);
-echo '<li data-role="list-divider">' . $tripStopTimes[0]['arrival_time'] . ' to ' . $tripStopTimes[sizeof($tripStopTimes) - 1]['arrival_time'] . ' towards ' . $destination['stop_name'] . ' (' . ucwords(service_period_day($tripStopTimes[0]['service_id'])) . ')</li>';
+echo '<li data-role="list-divider">' . $tripStopTimes[0]['arrival_time'] . ' to ' . $tripStopTimes[sizeof($tripStopTimes) - 1]['arrival_time'] . ' towards ' . $destination['stop_name'] . ' (' . ucwords(strtolower($tripStopTimes[0]['service_id'])) . ')</li>';
foreach ($tripStopTimes as $key => $tripStopTime) {
if ($key + 1 > sizeof($tripStopTimes) || stopCompare($tripStopTimes[$key]["stop_name"]) != stopCompare($tripStopTimes[$key + 1]["stop_name"])) {
echo '<li>';
--- a/tripPlanner.php
+++ b/tripPlanner.php
@@ -182,7 +182,99 @@
curl_close($ch);
}
} else {
+ $overrides = getServiceOverride();
+ if (isset($overrides['service_id'])) {
+ echo "Sorry, due to the modified timetable, this trip planner won't work correctly today. Instead, use the Google Maps one below:";
+ echo '
+<script language="javascript">
+ // make some ezamples
+ var startExample = "Gungahlin, ACT";
+ var endExample = "Bunda St, Canberra";
+ var zip = "2600";
+ var urlToGoTo = "http://www.google.com/maps?ie=UTF8&f=d&" ;
+
+ function buildURL(){
+ document.getElementById(\'linkOut\').href = urlToGoTo + "&saddr=" + document.getElementById(\'saddr\').value + "&daddr=" + document.getElementById(\'daddr\').value + "&dirflg=r";
+ }
+
+</script>
+
+<form action="https://www.action.act.gov.au/googletransit/redir_to_google.asp" method="post" name="GoogleTransit" target="_blank" id="GoogleTransit">
+ <table width="226" cellspacing="1" border="1">
+ <tr>
+ <td colspan="2" valign="middle"><a href="http://google.com/transit"><img src="/maps_logo_small_blue.png"width="150" height="55" border="0" alt="Link to Google Transit Trip Planner" align="middle"></a> <br />
+ <B>Transit Trip Planner</B></td>
+ </tr>
+ <tr>
+ <td colspan="2" nowrap><strong>Start</strong> (e.g.
+ <script language="javascript">document.write(startExample)</script>)<br />
+ <input type="text" size="27" name="saddr" id="saddr" maxlength="2048" title="Enter the Origin Address" value="" onFocus="this.value=\'\';" onBlur="if(this.value==\'\')this.value=startExample">
+ <br /><br /> <strong>End</strong> (e.g.
+ <script language="javascript">document.write(endExample)</script>)
+ <BR>
+ <input type="text" size="27" name="daddr" id="daddr" maxlength="2048" title="Enter the Destination Address" onfocus="this.value=\'\';" onBlur="if(this.value==\'\')this.value=endExample">
+ <br>
+ <table>
+ <tr>
+ <td><strong>Date</strong></td>
+ <td><strong>Time</strong></td>
+ </tr>
+ <tr>
+ <td nowrap=""><input type="text" title="Enter the Date in DD/MM/YY format" maxlength="10" value="" name="date" size="10" id="fdate"></td>
+ <td nowrap="nowrap"><input type="text" title="Enter the Time in HH:MM AM or PM format" maxlength="8" value="" name="time" size="5" id="ftime"></td>
+ </tr>
+ </table>
+Plan by:
+ <select name="ttype">
+ <option value="dep">Departure Time</option>
+ <option value="arr">Arrival Time</option>
+ </select>
+ <center>
+ <input name="Submit" type="submit" value="Get directions">
+ </center></td>
+ </tr>
+ </table>
+</form>
+
+<script language="javascript">
+
+// calculate the current time
+
+ var currentTime = new Date() ;
+ var hours = currentTime.getHours() ;
+ var minutes = currentTime.getMinutes() ;
+
+ var currentDay = currentTime.getDate() ;
+ var currentMonth = currentTime.getMonth() + 1 ;
+// var currentYear = currentTime.getYear() ; 07/10/2011 by Vlad
+ var currentYear = currentTime.getFullYear() ;
+
+// account for leading zero
+ if (minutes < 10)
+ minutes = "0" + minutes
+// 07/10/2011 by Vlad
+ if (hours < 10)
+ hours = "0" + hours
+ if (currentDay < 10)
+ currentDay = "0" + currentDay
+ if (currentMonth < 10)
+ currentMonth = "0" + currentMonth
+
+ var displayTime = hours + "