Fix search routes by final destination
--- a/about.php
+++ b/about.php
@@ -34,7 +34,7 @@
<br />
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>)
+ , <a href="http://itunes.apple.com/au/app/act-buses/id376634797?mt=8">ACT Buses by David Sullivan</a>, <a href="http://itunes.apple.com/app/bus-trips-act/id489146525?mt=8">Bus Trips ACT by Molson Chengalath</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>.
--- 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");
+ }
}
}
--- a/include/db/route-dao.inc.php
+++ b/include/db/route-dao.inc.php
@@ -212,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();
--- 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/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.<br>";
+
+ $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<br>";
+ echo "No stop_id recorded for this stop_name, potential stops are a bus station<br>";
$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
@@ -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']})<br>";
--- a/routeList.php
+++ b/routeList.php
@@ -37,7 +37,7 @@
foreach (getRouteHeadsigns($route['route_id']) as $headsign) {
//print_r($route);
- echo '<li> <a href="trip.php?routeid=' . $route['route_id'] . '&directionid=' . $headsign['direction_id'] . '"><h3>' . $route['route_short_name'] . "</h3>
+ echo '<li> <a href="trip.php?routeid=' . $route['route_id'] . '&directionid=' . $headsign['direction_id'] . '"><h3>' . $route['route_id'] . "</h3>
<p>" . $headsign['trip_headsign'] . (strstr($headsign['trip_headsign'], "bound") === false ? "bound" : "") . ", starting at " . $headsign['stop_name'] . " (" . ucwords($headsign['service_id']) . ")</p>";
@@ -157,7 +157,7 @@
displayRoutes(getRoutesByDestination($routeDestination));
} else {
foreach (getRoutesByDestination() as $destination) {
- echo '<li><a href="' . curPageURL() . '/routeList.php?routeDestination=' . urlencode($destination['route_long_name']) . '">' . $destination['route_long_name'] . "... </a></li>\n";
+ echo '<li><a href="' . curPageURL() . '/routeList.php?routeDestination=' . urlencode($destination['stop_name']) . '">' . $destination['stop_name'] . "... </a></li>\n";
}
}
}
--- a/stop.php
+++ b/stop.php
@@ -73,9 +73,12 @@
//}
}
}
+if (sizeof($stops) > 0) {
$stopDescParts = explode("<br>",$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) {
--- a/stopList.php
+++ b/stopList.php
@@ -36,8 +36,8 @@
navbar();
echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
if (!isset($firstLetter)) {
- foreach (range('A', 'Z') as $letter) {
- echo "<li><a href=\"stopList.php?firstLetter=$letter&bysuburbs=yes\">$letter...</a></li>\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 "<li><a href=\"stopList.php?firstLetter=$letter&bysuburbs=yes\">$letter...</a></li>\n";
}
} else {
foreach ($suburbs as $suburb) {
@@ -86,9 +86,9 @@
navbar();
}
echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
- if (!isset($firstLetter) && !isset($suburb) && !isset($nearby)) {
- foreach (range('A', 'Z') as $letter) {
- echo "<li><a href=\"stopList.php?firstLetter=$letter&$listType\">$letter...</a></li>\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 "<li><a href=\"stopList.php?firstLetter=$letter&$listType\">$letter...</a></li>\n";
}
} else {
//var_dump($stops);