Avoid validation for cheap SSL certificates used by Transport for Canberra
--- 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();
@@ -273,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
@@ -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);
--- 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/routeList.php
+++ b/routeList.php
@@ -32,23 +32,36 @@
}
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) {
-
- //print_r($route);
- echo '<li> <a href="trip.php?routeid=' . $route['route_id'] . '&directionid=' . $headsign['direction_id'] . '"><h3>' . $route['route_short_name'] . "</h3>
+
+ //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>";
- if (isset($nearby)) {
- $time = getRouteAtStop($route['route_id'], $headsign['direction_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>';
+ <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";
}
- echo" </a></li>\n";
}
}
+
+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>" . $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";
+ }
}
if (isset($bysuburbs)) {
@@ -90,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>";
@@ -100,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
@@ -73,7 +73,8 @@
//}
}
}
-include_header($stop['stop_name'], "stop");
+$stopDescParts = explode("<br>",$stop['stop_desc']);
+include_header(trim(str_replace("Street: ","",$stopDescParts[0])), "stop");
/* $serviceAlerts = json_decode(getPage(curPageURL() . "/servicealerts_api.php?filter_class=stop&filter_id=".$stopid) , true);
@@ -106,22 +107,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>';