Service warnings for changed timetable days
--- a/feedback.php
+++ b/feedback.php
@@ -48,7 +48,7 @@
<small> if you click on feedback from a stop page, these will get filled in automatically. else describe the location/street of the stop in one of these boxes </small><br>
Suggested Stop Location (lat/long or words): <input type="text" name="newlocation"/><br>
-<small> if your device supports javascript, you can pick a location from the map above</small><br>
+<!--<small> if your device supports javascript, you can pick a location from the map above</small><br>-->
<input type="submit" value="Submit!"/>
</form>
--- a/include/common-template.inc.php
+++ b/include/common-template.inc.php
@@ -74,14 +74,14 @@
.ui-listview-filter {
margin: 0 !important;
}
- .ui-icon-navigation {
+ .ui-icon-navigation {
background-image: url(css/images/113-navigation.png);
background-position: 1px 0;
}
- .ui-icon-beaker {
+ .ui-icon-beaker {
background-image: url(css/images/91-beaker-2.png);
background-position: 1px 0;
- }
+ }
#footer {
text-size: 0.75em;
text-align: center;
@@ -102,6 +102,14 @@
#extrainfo {
visibility: hidden;
display: none;
+ }
+ #servicewarning {
+ padding: 1em;
+ margin-bottom: 0.5em;
+ text-size: 0.2em;
+ background-color: #FF9;
+ -moz-border-radius: 15px;
+border-radius: 15px;
}
// source http://webaim.org/techniques/skipnav/
#skip a, #skip a:hover, #skip a:visited
@@ -180,6 +188,12 @@
</div><!-- /header -->
<a name="maincontent" id="maincontent"></a>
<div data-role="content"> ';
+ if (!$_SESSION['service_id']) {
+ $overrides = getServiceOverride();
+ if ($overrides['service_id']){
+ echo '<div id="servicewarning">Buses are running on an altered timetable today 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>';
+ }
+ }
}
}
function include_footer()
--- a/include/common-transit.inc.php
+++ b/include/common-transit.inc.php
@@ -4,9 +4,26 @@
'saturday',
'weekday'
);
+function getServiceOverride() {
+ global $conn;
+ $query = "Select * from calendar_dates where date = '".date("Ymd")."' and exception_type = '1'";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_assoc($result);
+}
function service_period()
{
+
if (isset($_SESSION['service_period'])) return $_SESSION['service_period'];
+ $override = getServiceOverride();
+ if ($override['service_id']){
+ return $override['service_id'];
+ }
+
switch (date('w')) {
case 0:
return 'sunday';
--- a/include/db/route-dao.inc.php
+++ b/include/db/route-dao.inc.php
@@ -47,11 +47,25 @@
arrival_time limit 1";
debug($query,"database");
$result = pg_query($conn, $query);
- if (!$result) {
+ if (!$result) {
databaseError(pg_result_error($result));
return Array();
}
- return pg_fetch_assoc($result);
+ $r = pg_fetch_assoc($result);
+ // past last trip of the day special case
+ if (sizeof($r) == 0) {
+ $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
+arrival_time DESC limit 1";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ $r = pg_fetch_assoc($result);
+ }
+ return $r;
}
function getTimeInterpolatedRouteAtStop($routeID, $stop_id)
@@ -67,8 +81,8 @@
function getRouteTrips($routeID) {
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' order by
+ $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 routes.route_id = '$routeID' and stop_sequence = '1' order by
arrival_time ";
debug($query,"database");
$result = pg_query($conn, $query);
--- a/include/db/stop-dao.inc.php
+++ b/include/db/stop-dao.inc.php
@@ -84,18 +84,17 @@
$afterCondition = "AND arrival_time > '$afterTime'";
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,route_short_name,route_long_name, start_times.arrival_time as start_time
+ $query = " SELECT stop_times.trip_id,stop_times.arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,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
-join routes on trips.route_id = routes.route_id , (SELECT trip_id,arrival_time from stop_times
- WHERE stop_times.arrival_time IS NOT NULL
- AND stop_sequence = '1') as start_times
+join routes on trips.route_id = routes.route_id , (SELECT trip_id,max(arrival_time) as arrival_time from stop_times
+ 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 = start_times.trip_id
+AND stop_times.trip_id = end_times.trip_id
AND service_id='$service_period'
-AND start_times.arrival_time > '$afterTime'
-ORDER BY start_time";
+AND end_times.arrival_time > '$afterTime'
+ORDER BY end_time";
}
else {
$query = "SELECT stop_times.trip_id,arrival_time,stop_times.stop_id,stop_sequence,service_id,trips.route_id,route_short_name,route_long_name
--- a/include/db/trip-dao.inc.php
+++ b/include/db/trip-dao.inc.php
@@ -143,6 +143,22 @@
$r = pg_fetch_assoc($result);
return $r['arrival_time'];
}
+function getActiveTrips($time)
+{
+ global $conn;
+ if ($time == "") $time = current_time();
+ $query = "Select distinct stop_times.trip_id, start_times.arrival_time as start_time, end_times.arrival_time as end_time from stop_times, (SELECT trip_id,arrival_time from stop_times WHERE stop_times.arrival_time IS NOT NULL
+AND stop_sequence = '1') as start_times, (SELECT trip_id,max(arrival_time) as arrival_time from stop_times WHERE stop_times.arrival_time IS NOT NULL group by trip_id) as end_times
+WHERE start_times.trip_id = end_times.trip_id AND stop_times.trip_id = end_times.trip_id AND $time > start_times.arrival_time AND $time < end_times.arrival_time";
+ debug($query, "database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_all($result);
+}
+
function viaPointNames($tripid, $stop_sequence = "")
{
global $conn;
--- a/readme.txt
+++ b/readme.txt
@@ -5,10 +5,19 @@
Uses jQuery Mobile, PHP, PostgreSQL, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder
and Tile Service
-See aws/awsStartup.sh for example startup steps
+See aws/awsStartup.sh for example startup steps. You need to load the included database dump;
+for other transit networks you can use the updatedb.php script to load.
-For static maps, may have to do
+For openstreetmap static maps, may have to do
/usr/sbin/setsebool -P httpd_can_network_connect=1
-on fedora
+on Fedora and other SELinux systems.
+
+To enter a service override, you can use the psql tool. eg.
+transitdata=# COPY calendar_dates (service_id, date, exception_type) FROM stdin;
+Enter data to be copied [spaced with tabs] followed by a newline.
+End with a backslash and a period on a line by itself.
+>> saturday 20110416 2
+>> sunday 20110416 1
+>> \.
Binary files a/transitdata.cbrfeed.sql.gz and b/transitdata.cbrfeed.sql.gz differ