Refactor stop page
--- a/include/common-db.php
+++ /dev/null
--- a/include/common-session.inc.php
+++ b/include/common-session.inc.php
@@ -9,7 +9,7 @@
$_SESSION['time'] = filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING);
sessionUpdated();
}
-if (isset($_REQUEST['geolocate'])) {
+if (isset($_REQUEST['geolocate']) && $_REQUEST['geolocate'] != "Enter co-ordinates or address here") {
$geocoded = false;
if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) {
$_SESSION['lat'] = trim(filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
--- a/include/common-transit.inc.php
+++ b/include/common-transit.inc.php
@@ -16,24 +16,5 @@
return 'weekday';
}
}
-function midnight_seconds()
-{
- // from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html
- if (isset($_SESSION['time'])) {
- $time = strtotime($_SESSION['time']);
- return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
- }
- return (date("G") * 3600) + (date("i") * 60) + date("s");
-}
-function midnight_seconds_to_time($seconds)
-{
- if ($seconds > 0) {
- $midnight = mktime(0, 0, 0, date("n") , date("j") , date("Y"));
- return date("h:ia", $midnight + $seconds);
- }
- else {
- return "";
- }
-}
?>
--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -1,19 +1,15 @@
<?php
date_default_timezone_set('Australia/ACT');
-$APIurl = "http://localhost:8765";
$debugOkay = Array(
"session",
"json",
"phperror",
- //"awsgtfs",
"awsotp",
//"squallotp",
//"vanilleotp",
+ "database",
"other"
);
-if (isDebug("awsgtfs")) {
- $APIurl = "http://bus-main.lambdacomplex.org:8765";
-}
$cloudmadeAPIkey = "daa03470bb8740298d4b10e3f03d63e6";
$googleMapsAPIkey = "ABQIAAAA95XYXN0cki3Yj_Sb71CFvBTPaLd08ONybQDjcH_VdYtHHLgZvRTw2INzI_m17_IoOUqH3RNNmlTk1Q";
$otpAPIurl = 'http://localhost:8080/opentripplanner-api-webapp/';
@@ -31,8 +27,8 @@
include_once ("common-geo.inc.php");
include_once ("common-net.inc.php");
include_once ("common-transit.inc.php");
-
include_once ("common-session.inc.php");
+include_once ("common-db.inc.php");
include_once ("common-template.inc.php");
function isDebugServer()
@@ -143,5 +139,42 @@
if ($sort_ascending) $array = array_reverse($temp_array);
else $array = $temp_array;
}
+function sktimesort(&$array, $subkey = "id", $sort_ascending = false)
+{
+ if (count($array)) $temp_array[key($array) ] = array_shift($array);
+ foreach ($array as $key => $val) {
+ $offset = 0;
+ $found = false;
+ foreach ($temp_array as $tmp_key => $tmp_val) {
+ if (!$found and strtotime($val[$subkey]) > strtotime($tmp_val[$subkey])) {
+ $temp_array = array_merge((array)array_slice($temp_array, 0, $offset) , array(
+ $key => $val
+ ) , array_slice($temp_array, $offset));
+ $found = true;
+ }
+ $offset++;
+ }
+ if (!$found) $temp_array = array_merge($temp_array, array(
+ $key => $val
+ ));
+ }
+ if ($sort_ascending) $array = array_reverse($temp_array);
+ else $array = $temp_array;
+}
+function r_implode( $glue, $pieces )
+{
+ foreach( $pieces as $r_pieces )
+ {
+ if( is_array( $r_pieces ) )
+ {
+ $retVal[] = r_implode( $glue, $r_pieces );
+ }
+ else
+ {
+ $retVal[] = $r_pieces;
+ }
+ }
+ return implode( $glue, $retVal );
+}
?>
--- a/include/db/stop-dao.inc.php
+++ b/include/db/stop-dao.inc.php
@@ -4,94 +4,128 @@
return (stop.stop_id, stop.stop_name, float(stop.stop_lat),
float(stop.stop_lon), stop.location_type, stop.stop_code, stop.zone_id)
*/
+function getStop($stopID)
+{
+global $conn;
+ $query = "Select * from stops where stop_id = '$stopID' LIMIT 1";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_assoc($result);
+}
+function getStops($timingPointsOnly = false, $firstLetter = "")
+{
+ global $conn;
+ $conditions = Array();
+ if ($timingPointsOnly) $conditions[] = "substr(stop_code,1,2) != 'Wj'";
+ if ($firstLetter != "") $conditions[] = "substr(stop_name,1,1) = '$firstLetter'";
+ $query = "Select * from stops";
+ if (sizeof($conditions) > 0) {
+ if (sizeof($conditions) > 1) {
+ $query .= " Where ".implode(" AND ",$conditions)." ";
+ }
+ else {
+ $query .= " Where ".$conditions[0]." ";
+ }
+ }
+ $query .= " order by stop_name;";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_all($result);
+}
+function getNearbyStops($lat, $lng, $limit, $distance = 1000)
+{
+ if ($lat == null || $lng == null) return Array();
+ global $conn;
+ $query = "Select *, ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE) as distance
+ from stops WHERE ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), $distance, FALSE)
+ order by distance;";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_all($result);
+}
+function getStopsBySuburb($suburb)
+{
+global $conn;
+ $query = "Select * from stops where zone_id LIKE '%$suburb;%' order by stop_name;";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_all($result);
+}
+function getStopRoutes($stopID, $service_period)
+{
+ if ($service_period == "") $service_period = service_period();
+ /*
+ def handle_json_GET_stoproutes(self, params):
+ """Given a stop_id return all routes to visit the stop."""
+ schedule = self.server.schedule
+ stop = schedule.GetStop(params.get('stop', None))
+ service_period = params.get('service_period', None)
+ trips = stop.GetTrips(schedule)
+ result = {}
+ for trip in trips:
+ route = schedule.GetRoute(trip.route_id)
+ if service_period == None or trip.service_id == service_period:
+ if not route.route_short_name+route.route_long_name+trip.service_id in result:
+ result[route.route_short_name+route.route_long_name+trip.service_id] = (route.route_id, route.route_short_name, route.route_long_name, trip.trip_id, trip.service_id)
+ return result
+ */
+}
+function getStopTrips($stopID, $service_period = "")
+{
+ if ($service_period == "") $service_period = service_period();
+ global $conn;
+ $query = "SELECT stop_times.trip_id,arrival_time,stop_id,stop_sequence,service_id,trips.route_id,route_short_name,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 stop_id = '$stopID' AND service_id='$service_period'";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_all($result);
-function getStop($stopID) {
-
}
-
-function getStops($timingPointsOnly = false) {
-
-}
-
-function stopsNear($lat,$lng,$limit) {
-
- /*
- -- Show a distance query and note, London is outside the 1000km tolerance
- SELECT name FROM global_points WHERE ST_DWithin(location, ST_GeographyFromText('SRID=4326;POINT(-110 29)'), 1000000, FALSE);
- // All the geography functions have the option of using a sphere calculation, by setting a final boolean parameter to 'FALSE'. This will somewhat speed up calculations, particularly for cases where the geometries are very simple.
- */
-}
-
-function stopsBySuburb($suburb) {
-
-}
-
-function stopRoutes($stopID,$service_period)
-/*
- def handle_json_GET_stoproutes(self, params):
- """Given a stop_id return all routes to visit the stop."""
- schedule = self.server.schedule
- stop = schedule.GetStop(params.get('stop', None))
- service_period = params.get('service_period', None)
- trips = stop.GetTrips(schedule)
- result = {}
- for trip in trips:
- route = schedule.GetRoute(trip.route_id)
- if service_period == None or trip.service_id == service_period:
- if not route.route_short_name+route.route_long_name+trip.service_id in result:
- result[route.route_short_name+route.route_long_name+trip.service_id] = (route.route_id, route.route_short_name, route.route_long_name, trip.trip_id, trip.service_id)
- return result
-*/
-
-function stopTrips($stopID) {
- /*
- def handle_json_GET_stopalltrips(self, params):
- """Given a stop_id return all trips to visit the stop (without times)."""
- schedule = self.server.schedule
- stop = schedule.GetStop(params.get('stop', None))
- service_period = params.get('service_period', None)
- trips = stop.GetTrips(schedule)
- result = []
- for trip in trips:
- if service_period == None or trip.service_id == service_period:
- result.append((trip.trip_id, trip.service_id))
- return result
- */
-}
-function stopTripsWithTimes($stopID, $time, $service_period) {
- /*
- def handle_json_GET_stoptrips(self, params):
- """Given a stop_id and time in seconds since midnight return the next
- trips to visit the stop."""
- schedule = self.server.schedule
- stop = schedule.GetStop(params.get('stop', None))
- requested_time = int(params.get('time', 0))
- limit = int(params.get('limit', 15))
- service_period = params.get('service_period', None)
- time_range = int(params.get('time_range', 24*60*60))
-
- filtered_time_trips = []
- for trip, index in stop._GetTripIndex(schedule):
- tripstarttime = trip.GetStartTime()
- if tripstarttime > requested_time and tripstarttime < (requested_time + time_range):
- time, stoptime, tp = trip.GetTimeInterpolatedStops()[index]
- if time > requested_time and time < (requested_time + time_range):
- bisect.insort(filtered_time_trips, (time, (trip, index), tp))
- result = []
- for time, (trip, index), tp in filtered_time_trips:
- if len(result) > limit:
- break
- route = schedule.GetRoute(trip.route_id)
- trip_name = ''
- if route.route_short_name:
- trip_name += route.route_short_name
- if route.route_long_name:
- if len(trip_name):
- trip_name += " - "
- trip_name += route.route_long_name
- if service_period == None or trip.service_id == service_period:
- result.append((time, (trip.trip_id, trip_name, trip.service_id), tp))
- return result
- */
+function getStopTripsWithTimes($stopID, $time = "", $service_period = "", $time_range = "")
+{
+ if ($service_period == "") $service_period = service_period();
+ if ($time_range == "") $time_range = (24*60*60);
+ if ($time == "") $time = ($_SESSION['time'] ? $_SESSION['time'] : date("h:i:00"));
+ $trips = getStopTrips($stopID,$service_period);
+ $timedTrips = Array();
+ foreach ($trips as $trip) {
+ if ($trip['arrival_time'] != "") {
+ if (strtotime($trip['arrival_time']) > strtotime($time) and strtotime($trip['arrival_time']) < (strtotime($time) + $time_range)){
+ $timedTrips[] = $trip;
+ }
+ } else {
+ $tripstarttime = getTripStartTime($trip['trip_id']);
+ if ($tripstarttime > $time and $tripstarttime < ($time + $time_range)) {
+ $timedtrip = getTimeInterpolatedTripStop($trip['trip_id'], $trip['stop_sequence']);
+ if (strtotime($timedtrip['arrival_time']) > strtotime($time) and $timedtrip['arrival_time'] < (strtotime($time) + strtotime($time_range))){
+ $timedTrips[] = $timedTrip;
+ }
+ }
+ }
+ if (sizeof($timedTrips) > limit) break;
+ }
+ sktimesort($timedTrips,"arrival_time", true);
+ return $timedTrips;
}
?>
--- a/include/db/trip-dao.inc.php
+++ b/include/db/trip-dao.inc.php
@@ -1,20 +1,15 @@
<?php
function getTrip($tripID) {
- /* def handle_json_GET_triprows(self, params):
- """Return a list of rows from the feed file that are related to this
- trip."""
- schedule = self.server.schedule
- try:
- trip = schedule.GetTrip(params.get('trip', None))
- except KeyError:
- # if a non-existent trip is searched for, the return nothing
- return
- route = schedule.GetRoute(trip.route_id)
- trip_row = dict(trip.iteritems())
- route_row = dict(route.iteritems())
- return [['trips.txt', trip_row], ['routes.txt', route_row]]
- */
-}
+ global $conn;
+ $query = "Select * from trips where trip_id = '$tripID' join routes on trips.route_id = routes.route_id LIMIT 1";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_assoc($result);
+ }
function getTripShape() {
/* def handle_json_GET_tripstoptimes(self, params):
schedule = self.server.schedule
@@ -49,7 +44,7 @@
points.append((stop.stop_lat, stop.stop_lon))
return points*/
}
-function tripStopTimes($tripID, $after_time, $limit) {
+function getTimeInterpolatedTrip($tripID) {
/* rv = []
stoptimes = self.GetStopTimes()
@@ -88,45 +83,33 @@
return rv*/
}
+function getTimeInterpolatedTripAtStop($trip_id, $stop_sequence) {
+ foreach(getTimeInterpolatedTrip($tripID) as $tripStop) {
+ if ($tripStop['stop_sequence'] == $stop_sequence) return $tripStop;
+ }
+ return Array();
+}
-function tripStartTime($tripID) {
+function getTripStartTime($tripID) {
$query = 'SELECT arrival_secs,departure_secs FROM stop_times WHERE trip_id=? ORDER BY stop_sequence LIMIT 1';
}
-function viaPoints($tripid, $stopid, $timingPointsOnly = false)
-{
- global $APIurl;
- $url = $APIurl . "/json/tripstoptimes?trip=" . $tripid;
- $json = json_decode(getPage($url));
- debug(print_r($json, true));
- $stops = $json[0];
- $times = $json[1];
- $foundStop = false;
- $viaPoints = Array();
- foreach ($stops as $key => $row) {
- if ($foundStop) {
- if (!$timingPointsOnly || !startsWith($row[5], "Wj")) {
- $viaPoints[] = Array(
- "id" => $row[0],
- "name" => $row[1],
- "time" => $times[$key]
- );
- }
- }
- else {
- if ($row[0] == $stopid) $foundStop = true;
- }
- }
- return $viaPoints;
-}
function viaPointNames($tripid, $stopid)
{
- $points = viaPoints($tripid, $stopid, true);
- $pointNames = Array();
- foreach ($points as $point) {
- $pointNames[] = $point['name'];
+ global $conn;
+ $query = "SELECT stop_name
+FROM stop_times join stops on stops.stop_id = stop_times.stop_id
+WHERE stop_times.trip_id = '$tripid'
+AND stop_sequence > '$stop_sequence'
+AND substr(stop_code,1,2) != 'Wj' ORDER BY stop_sequence";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
}
- return implode(", ", $pointNames);
+ $pointNames = pg_fetch_all($result);
+ return r_implode(", ", $pointNames);
}
?>
--- a/stop.php
+++ b/stop.php
@@ -2,9 +2,8 @@
include ('include/common.inc.php');
$stopid = filter_var($_REQUEST['stopid'], FILTER_SANITIZE_NUMBER_INT);
$stopcode = filter_var($_REQUEST['stopcode'], FILTER_SANITIZE_STRING);
-$url = $APIurl . "/json/stop?stop_id=" . $stopid;
-$stop = json_decode(getPage($url));
-if ($stopcode != "" && $stop[5] != $stopcode) {
+if ($stopid) $stop = getStop($stopid);
+/*if ($stopcode != "" && $stop[5] != $stopcode) {
$url = $APIurl . "/json/stopcodesearch?q=" . $stopcode;
$stopsearch = json_decode(getPage($url));
$stopid = $stopsearch[0][0];
@@ -14,7 +13,7 @@
if (!startsWith($stop[5], "Wj") && strpos($stop[1], "Platform") === false) {
// expand out to all platforms
-}
+}*/
$stops = Array();
$stopPositions = Array();
$stopNames = Array();
@@ -25,93 +24,92 @@
if (isset($_REQUEST['stopids'])) {
$stopids = explode(",", filter_var($_REQUEST['stopids'], FILTER_SANITIZE_STRING));
foreach ($stopids as $sub_stopid) {
- $url = $APIurl . "/json/stop?stop_id=" . $sub_stopid;
- $stop = json_decode(getPage($url));
- $stops[] = $stop;
+ $stops[] = getStop($sub_stopid);
}
$stop = $stops[0];
- $stopid = $stops[0][0];
+ $stopid = $stops[0]["stop_id"];
$stopLinks.= "Individual stop pages: ";
foreach ($stops as $key => $sub_stop) {
- // $stopNames[$key] = $sub_stop[1] . ' Stop #' . ($key + 1);
- if (strpos($stop[1],
- "Station")) {
- $stopNames[$key] = 'Platform ' . ($key + 1);
- $stopLinks.= '<a href="stop.php?stopid=' . $sub_stop[0] . '&stopcode=' . $sub_stop[5] . '">' . $sub_stop[1] . '</a> ';
- } else {
- $stopNames[$key] = '#' . ($key + 1);
- $stopLinks.= '<a href="stop.php?stopid=' . $sub_stop[0] . '&stopcode=' . $sub_stop[5] . '">' . $sub_stop[1] . ' Stop #' . ($key + 1) . '</a> ';
- }
+ // $stopNames[$key] = $sub_stop[1] . ' Stop #' . ($key + 1);
+ if (strpos($stop["stop_name"], "Station")) {
+ $stopNames[$key] = 'Platform ' . ($key + 1);
+ $stopLinks.= '<a href="stop.php?stopid=' . $sub_stop["stop_id"] . '&stopcode=' . $sub_stop["stop_code"] . '">' . $sub_stop["stop_name"] . '</a> ';
+ }
+ else {
+ $stopNames[$key] = '#' . ($key + 1);
+ $stopLinks.= '<a href="stop.php?stopid=' . $sub_stop["stop_id"] . '&stopcode=' . $sub_stop["stop_code"] . '">' . $sub_stop["stop_name"] . ' Stop #' . ($key + 1) . '</a> ';
+ }
$stopPositions[$key] = Array(
- $sub_stop[2],
- $sub_stop[3]
+ $sub_stop["stop_lat"],
+ $sub_stop["stop_lon"]
);
-
- $url = $APIurl . "/json/stopalltrips?stop=" . $sub_stop[0]; $trips = json_decode(getPage($url));
- $tripSequence = "";
+ $trips = getStopTrips($sub_stop["stop_id"]);
+ $tripSequence = "";
foreach ($trips as $trip) {
- $tripSequence .= "$trip[0],";
- $tripStopNumbers[$trip[0]][] = $key;
+ $tripSequence.= "{$trip['trip_id']},";
+ $tripStopNumbers[$trip['trip_id']][] = $key;
}
-
- if (!in_array($tripSequence,$fetchedTripSequences)) {
- // only fetch new trip sequences
- $fetchedTripSequences[] = $tripSequence;
- $url = $APIurl . "/json/stoptrips?stop=" . $sub_stop[0] . "&time=" . midnight_seconds() . "&service_period=" . service_period();
- $trips = json_decode(getPage($url));
- foreach ($trips as $trip) {
- if (!isset($allStopsTrips[$trip[1][0]])) $allStopsTrips[$trip[1][0]] = $trip;
- }
- } else {
- echo "skipped sequence $tripSequence";
- }
+ if (!in_array($tripSequence, $fetchedTripSequences)) {
+ // only fetch new trip sequences
+ $fetchedTripSequences[] = $tripSequence;
+ $trips = getStopTripsWithTimes($sub_stop["stop_id"]);
+ foreach ($trips as $trip) {
+ if (!isset($allStopsTrips[$trip["trip_id"]])) $allStopsTrips[$trip["trip_id"]] = $trip;
+ }
+ }
+ else {
+ echo "skipped sequence $tripSequence";
+ }
}
}
-include_header($stop[1], "stop");
+include_header($stop['stop_name'], "stop");
timePlaceSettings();
echo '<div data-role="content" class="ui-content" role="main"> <a name="maincontent" id="maincontent"></a>';
echo $stopLinks;
if (sizeof($stops) > 0) {
- trackEvent("View Stops","View Combined Stops", $stop[1], $stop[0]);
-
+ trackEvent("View Stops", "View Combined Stops", $stop["stop_name"], $stop["stop_id"]);
echo '<p>' . staticmap($stopPositions) . '</p>';
}
else {
- trackEvent("View Stops","View Single Stop", $stop[1], $stop[0]);
+ trackEvent("View Stops", "View Single Stop", $stop["stop_name"], $stop["stop_id"]);
echo '<p>' . staticmap(Array(
0 => Array(
- $stop[2],
- $stop[3]
+ $stop["stop_lat"],
+ $stop["stop_lon"]
)
)) . '</p>';
}
echo ' <ul data-role="listview" data-inset="true">';
if (sizeof($allStopsTrips) > 0) {
- sksort($allStopsTrips,0, $true);
+ sktimesort($allStopsTrips,"arrival_time", true);
$trips = $allStopsTrips;
}
else {
- $url = $APIurl . "/json/stoptrips?stop=" . $stopid . "&time=" . midnight_seconds() . "&service_period=" . service_period();
- $trips = json_decode(getPage($url));
+ $trips = getStopTripsWithTimes($stopid);
}
-foreach ($trips as $row) {
- echo '<li>';
- echo '<a href="trip.php?stopid=' . $stopid . '&tripid=' . $row[1][0] . '"><h3>' . $row[1][1]."</h3><p>";
- $viaPoints = viaPointNames($row[1][0], $stopid);
- if ($viaPoints != "") echo '<br><span class="viaPoints">Via: ' . $viaPoints . '</span>';
- if (sizeof($tripStopNumbers) > 0) {
- echo '<br><small>Boarding At: ';
- foreach ($tripStopNumbers[$row[1][0]] as $key) {
- echo $stopNames[$key] .' ';
- }
- echo '</small>';
- }
- echo '</p>';
- echo '<p class="ui-li-aside"><strong>' . midnight_seconds_to_time($row[0]) . '</strong></p>';
- echo '</a></li>';
- flush(); @ob_flush();
+if (sizeof($trips) == 0) {
+ echo "<li> <center>No trips in the near future.</center> </li>";
}
-if (sizeof($trips) == 0) echo "<li> <center>No trips in the near future.</center> </li>";
+else {
+ foreach ($trips as $trip) {
+ echo '<li>';
+ echo '<a href="trip.php?stopid=' . $stopid . '&tripid=' . $trip['trip_id'] . '"><h3>' . $trip['route_short_name'] . " " . $trip['route_long_name'] . "</h3><p>";
+ $viaPoints = viaPointNames($trip['trip_id'], $trip['stop_sequence']);
+ if ($viaPoints != "") echo '<br><span class="viaPoints">Via: ' . $viaPoints . '</span>';
+ if (sizeof($tripStopNumbers) > 0) {
+ echo '<br><small>Boarding At: ';
+ foreach ($tripStopNumbers[$trip['trip_id']] as $key) {
+ echo $stopNames[$key] . ' ';
+ }
+ echo '</small>';
+ }
+ echo '</p>';
+ echo '<p class="ui-li-aside"><strong>' . $trip['arrival_time'] . '</strong></p>';
+ echo '</a></li>';
+ flush();
+ @ob_flush();
+ }
+}
echo '</ul></div>';
include_footer();
?>
--- a/stopList.php
+++ b/stopList.php
@@ -1,5 +1,6 @@
<?php
include ('include/common.inc.php');
+$stops = Array();
function filterByFirstLetter($var)
{
return $var[1][0] == $_REQUEST['firstLetter'];
@@ -31,7 +32,6 @@
foreach ($suburbs as $suburb) {
if (startsWith($suburb, $_REQUEST['firstLetter'])) {
echo '<li><a href="stopList.php?suburb=' . urlencode($suburb) . '">' . $suburb . '</a></li>';
- flush(); @ob_flush();
}
}
}
@@ -41,14 +41,14 @@
// Timing Points / All stops
if ($_REQUEST['allstops']) {
$listType = 'allstops=yes';
- $url = $APIurl . "/json/stops";
+ $stops = getStops();
include_header("All Stops", "stopList");
navbar();
timePlaceSettings();
}
else if ($_REQUEST['nearby']) {
$listType = 'nearby=yes';
- $url = $APIurl . "/json/neareststops?lat={$_SESSION['lat']}&lon={$_SESSION['lon']}&limit=15";
+ $stops = getNearbyStops($_SESSION['lat'],$_SESSION['lon'],15);
include_header("Nearby Stops", "stopList", true, true);
navbar();
timePlaceSettings(true);
@@ -59,14 +59,13 @@
}
else if ($_REQUEST['suburb']) {
$suburb = filter_var($_REQUEST['suburb'], FILTER_SANITIZE_STRING);
- $listType = "suburb=$suburb";
- $url = $APIurl . "/json/stopzonesearch?q=" . $suburb;
+ $stops = getStopsBySuburb($suburb);
include_header("Stops in " . ucwords($suburb) , "stopList");
navbar();
trackEvent("Stop Lists","Stops By Suburb", $suburb);
}
else {
- $url = $APIurl . "/json/timingpoints";
+ $stops = getStops(true,$_REQUEST['firstLetter']);
include_header("Timing Points / Major Stops", "stopList");
navbar();
timePlaceSettings();
@@ -78,29 +77,21 @@
}
}
else {
- $stops = json_decode(getPage($url));
- foreach ($stops as $key => $row) {
- $stopName[$key] = $row[1];
- }
- // Sort the stops by name
- array_multisort($stopName, SORT_ASC, $stops);
- if (!isset($_REQUEST['suburb']) && !isset($_REQUEST['nearby'])) {
- $stops = array_filter($stops, "filterByFirstLetter");
- }
+ //var_dump($stops);
$stopsGrouped = Array();
- foreach ($stops as $key => $row) {
- if ((trim(preg_replace("/\(Platform.*/", "", $stops[$key][1])) != trim(preg_replace("/\(Platform.*/", "", $stops[$key + 1][1]))) || $key + 1 >= sizeof($stops)) {
+ foreach ($stops as $key => $stop) {
+ if ((trim(preg_replace("/\(Platform.*/", "", $stops[$key]["stop_name"])) != trim(preg_replace("/\(Platform.*/", "", $stops[$key + 1]["stop_name"]))) || $key + 1 >= sizeof($stops)) {
if (sizeof($stopsGrouped) > 0) {
// print and empty grouped stops
// subsequent duplicates
- $stopsGrouped["stop_ids"][] = $row[0];
+ $stopsGrouped["stop_ids"][] = $stop['stop_id'];
echo '<li>';
if (!startsWith($stopsGrouped['stop_codes'][0], "Wj")) echo '<img src="css/images/time.png" alt="Timing Point: " class="ui-li-icon">';
echo '<a href="stop.php?stopids=' . implode(",", $stopsGrouped['stop_ids']) . '">';
if (isset($_SESSION['lat']) && isset($_SESSION['lon'])) {
- echo '<span class="ui-li-count">' . distance($row[2], $row[3], $_SESSION['lat'], $_SESSION['lon'], true) . 'm away</span>';
+ echo '<span class="ui-li-count">' . distance($stop['stop_lat'],$stop['stop_lon'], $_SESSION['lat'], $_SESSION['lon'], true) . 'm away</span>';
}
- echo bracketsMeanNewLine(trim(preg_replace("/\(Platform.*/", "", $row[1])) . '(' . sizeof($stopsGrouped["stop_ids"]) . ' stops)');
+ echo bracketsMeanNewLine(trim(preg_replace("/\(Platform.*/", "", $stop['stop_name'])) . '(' . sizeof($stopsGrouped["stop_ids"]) . ' stops)');
echo "</a></li>\n";
flush(); @ob_flush();
$stopsGrouped = Array();
@@ -108,33 +99,33 @@
else {
// just a normal stop
echo '<li>';
- if (!startsWith($row[5], "Wj")) echo '<img src="css/images/time.png" alt="Timing Point" class="ui-li-icon">';
- echo '<a href="stop.php?stopid=' . $row[0] . (startsWith($row[5], "Wj") ? '&stopcode=' . $row[5] : "") . '">';
+ if (!startsWith($stop['stop_code'], "Wj")) echo '<img src="css/images/time.png" alt="Timing Point" class="ui-li-icon">';
+ echo '<a href="stop.php?stopid=' . $stop['stop_id'] . (startsWith($stop['stop_code'], "Wj") ? '&stopcode=' . $stop['stop_code'] : "") . '">';
if (isset($_SESSION['lat']) && isset($_SESSION['lon'])) {
- echo '<span class="ui-li-count">' . distance($row[2], $row[3], $_SESSION['lat'], $_SESSION['lon'], true) . 'm away</span>';
+ echo '<span class="ui-li-count">' . distance($stop['stop_lat'],$stop['stop_lon'], $_SESSION['lat'], $_SESSION['lon'], true) . 'm away</span>';
}
- echo bracketsMeanNewLine($row[1]);
+ echo bracketsMeanNewLine($stop['stop_name']);
echo "</a></li>\n";
flush(); @ob_flush();
}
}
else {
// this is a duplicated line item
- if ($key - 1 <= 0 || (trim(preg_replace("/\(Platform.*/", "", $stops[$key][1])) != trim(preg_replace("/\(Platform.*/", "", $stops[$key - 1][1])))) {
+ if ($key - 1 <= 0 || (trim(preg_replace("/\(Platform.*/", "", $stops[$key]['stop_name'])) != trim(preg_replace("/\(Platform.*/", "", $stops[$key - 1]['stop_name'])))) {
// first duplicate
$stopsGrouped = Array(
- "name" => trim(preg_replace("/\(Platform.*/", "", $row[1])) ,
+ "name" => trim(preg_replace("/\(Platform.*/", "", $stop['stop_name'])) ,
"stop_ids" => Array(
- $row[0]
+ $stop['stop_id']
) ,
"stop_codes" => Array(
- $row[5]
+ $stop['stop_code']
)
);
}
else {
// subsequent duplicates
- $stopsGrouped["stop_ids"][] = $row[0];
+ $stopsGrouped["stop_ids"][] = $stop['stop_id'];;
}
}
}
--- a/updatedb.php
+++ b/updatedb.php
@@ -1,9 +1,10 @@
<?php
+include('lib/common-db.inc.php');
// Unzip cbrfeed.zip, import all csv files to database
$zip = zip_open(dirname(__FILE__) . "/cbrfeed.zip");
$tmpdir = "/tmp/cbrfeed/";
mkdir($tmpdir);
-/*if (is_resource($zip)) {
+if (is_resource($zip)) {
while ($zip_entry = zip_read($zip)) {
$fp = fopen($tmpdir . zip_entry_name($zip_entry) , "w");
if (zip_entry_open($zip, $zip_entry, "r")) {
@@ -15,12 +16,7 @@
}
}
zip_close($zip);
-}*/
-$conn = pg_connect("dbname=transitdata user=postgres password=snmc");
- if (!$conn) {
- echo "An error occured.\n";
- exit;
- }
+}
foreach (scandir($tmpdir) as $file) {
if (!strpos($file, ".txt") === false) {