Enable feedback functionality
--- a/feedback.php
+++ b/feedback.php
@@ -24,7 +24,10 @@
mail($address, $topic, $message);
}
}
-
+if (isset($_REQUEST['feedback']) || isset($_REQUEST['newlocation'])){
+ sendEmail("bus.lambda feedback",print_r($_REQUEST,true));
+ echo "<center><h2>Thank you for your feedback!</h2></center>";
+} else {
$stopid = "";
$stopcode = "";
$urlparts = explode("?",$_SERVER["HTTP_REFERER"]);
@@ -39,6 +42,7 @@
?>
<h3>Add/Move/Delete a Bus Stop Location</h3>
+<form action="feedback.php" method="post">
StopID: <input type="text" name="stopid" value="<?php echo $stopid ?>"/><br>
or StopCode: <input type="text" name="stopcode" value="<?php echo $stopcode ?>"/><br>
<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>
@@ -47,22 +51,31 @@
<small> if your device supports javascript, you can pick a location from the map above</small><br>
<input type="submit" value="Submit!"/>
-
+</form>
<h3>Bug Report/Feedback</h3>
Please leave feedback about bugs/errors or general suggestions about improvements that could be made to the way the data is presented!
-<textarea id="feedback">
+<form action="feedback.php" method="post">
+<textarea name="feedback">
</textarea>
-<textarea id="extrainfo">
+<textarea name="extrainfo" id="extrainfo">
<?php
echo "Referrer URL: ".$_SERVER["HTTP_REFERER"];
+ echo "\nCurrent page URL: ".curPageURL();
echo "\nUser Agent: ".$_SERVER["HTTP_USER_AGENT"];
echo "\nUser host/IP: ".$_SERVER["HTTP_X_FORWARDED_FOR"]." ".$_SERVER["REMOTE_ADDR"];
echo "\nServer host/IP: ".php_uname("n");
echo "\nCurrent date/time: ". date("c");
+ echo "\nCurrent code revision: ".exec("git rev-parse --short HEAD");
+ echo "\nCurrent timetables version: ".date("c",@filemtime('cbrfeed.zip'));
echo "\nDump of session: ".print_r($_SESSION,true);
?>
</textarea>
<input type="submit" value="Submit!"/>
+</form>
+<?php
+}
+include_footer();
+?>
--- a/include/common-net.inc.php
+++ b/include/common-net.inc.php
@@ -24,7 +24,8 @@
$isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on");
$port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] != "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443")));
$port = ($port) ? ':' . $_SERVER["SERVER_PORT"] : '';
- $url = ($isHTTPS ? 'https://' : 'http://') . $_SERVER["SERVER_NAME"] . $port . htmlentities(dirname($_SERVER['PHP_SELF']) , ENT_QUOTES) . "/";
+ $url = ($isHTTPS ? 'https://' : 'http://') . $_SERVER["SERVER_NAME"] . $port . htmlentities(dirname($_SERVER['PHP_SELF']) , ENT_QUOTES);
return $url;
}
?>
+
--- /dev/null
+++ b/include/common-session.inc.php
@@ -1,1 +1,57 @@
+<?php
+// you have to open the session to be able to modify or remove it
+session_start();
+if (isset($_REQUEST['service_period'])) {
+ $_SESSION['service_period'] = filter_var($_REQUEST['service_period'], FILTER_SANITIZE_STRING);
+ sessionUpdated();
+}
+if (isset($_REQUEST['time'])) {
+ $_SESSION['time'] = filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING);
+ sessionUpdated();
+}
+if (isset($_REQUEST['geolocate'])) {
+ $geocoded = false;
+ if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) {
+ $_SESSION['lat'] = trim(filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
+ $_SESSION['lon'] = trim(filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
+ }
+ else {
+ $geolocate = filter_var($_REQUEST['geolocate'], FILTER_SANITIZE_URL);
+ echo $_REQUEST['geolocate'];
+ if (startsWith($geolocate, "-")) {
+ $locateparts = explode(",", $geolocate);
+ $_SESSION['lat'] = $locateparts[0];
+ $_SESSION['lon'] = $locateparts[1];
+ }
+ else {
+ $contents = geocode($geolocate, true);
+ print_r($contents);
+ if (isset($contents[0]->centroid)) {
+ $geocoded = true;
+ $_SESSION['lat'] = $contents[0]->centroid->coordinates[0];
+ $_SESSION['lon'] = $contents[0]->centroid->coordinates[1];
+ }
+ else {
+ $_SESSION['lat'] = "";
+ $_SESSION['lon'] = "";
+ }
+ }
+ }
+ if ($_SESSION['lat'] != "" && isAnalyticsOn()) {
+ trackEvent("Geolocation","Updated Location", "Geocoded - ".($geocoded ? "Yes" : "No"));
+ }
+ sessionUpdated();
+}
+function sessionUpdated() {
+ $_SESSION['lastUpdated'] = time();
+}
+// timeoutSession
+$TIMEOUT_LIMIT = 60*5; // 5 minutes
+if (isset($_SESSION['lastUpdated']) && $_SESSION['lastUpdated']+$TIMEOUT_LIMIT < time()) {
+ debug ("Session timeout ".($_SESSION['lastUpdated']+$TIMEOUT_LIMIT).">".time(),"session");
+ session_destroy();
+ session_start();
+}
+debug(print_r($_SESSION, true) , "session");
+?>
--- a/include/common-template.inc.php
+++ b/include/common-template.inc.php
@@ -87,7 +87,7 @@
text-size: 0.2em;
}
.min-width-480px .viaPoints {
- display: block;
+ display: inline;
}
#extrainfo {
visibility: hidden;
@@ -121,18 +121,19 @@
echo "<script>
function success(position) {
+$('#error').val('Location now detected. Please wait for data to load.');
$('#geolocate').val(position.coords.latitude+','+position.coords.longitude);
$.ajax({ url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude });
location.reload(true);
}
function error(msg) {
- console.log(msg);
+$('#error').val('Error: '+msg);
}
function geolocate() {
if (navigator.geolocation) {
var options = {
- enableHighAccuracy: false,
+ enableHighAccuracy: true,
timeout: 60000,
maximumAge: 10000
}
@@ -168,7 +169,8 @@
document.title = "' . $pageTitle . '";
});
</script>
- <div data-role="header">
+ <div data-role="header" data-position="inline">
+ <a href="'.$_SERVER["HTTP_REFERER"].'" data-icon="arrow-l" data-rel="back">Back</a>
<h1>' . $pageTitle . '</h1>
</div><!-- /header -->
<a name="maincontent" id="maincontent"></a>
@@ -200,7 +202,7 @@
$geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "";
}
if ($geoerror) {
- echo '<div class="error">Sorry, but your location could not currently be detected.
+ echo '<div id="error">Sorry, but your location could not currently be detected.
Please allow location permission, wait for your location to be detected,
or enter an address/co-ordinates in the box below.</div>';
}
--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -5,7 +5,7 @@
"session",
"json",
"phperror",
- "awsgtfs",
+ //"awsgtfs",
"awsotp",
//"squallotp",
//"vanilleotp",
@@ -27,51 +27,14 @@
$otpAPIurl = 'http://10.0.1.135:8080/opentripplanner-api-webapp/';
}
if (isDebug("phperror")) error_reporting(E_ALL ^ E_NOTICE);
+
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-template.inc.php");
-include_once ("common-transit.inc.php");
-// you have to open the session to be able to modify or remove it
-session_start();
-if (isset($_REQUEST['service_period'])) {
- $_SESSION['service_period'] = filter_var($_REQUEST['service_period'], FILTER_SANITIZE_STRING);
-}
-if (isset($_REQUEST['time'])) {
- $_SESSION['time'] = filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING);
-}
-if (isset($_REQUEST['geolocate'])) {
- $geocoded = false;
- if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) {
- $_SESSION['lat'] = trim(filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
- $_SESSION['lon'] = trim(filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
- }
- else {
- $geolocate = filter_var($_REQUEST['geolocate'], FILTER_SANITIZE_URL);
- echo $_REQUEST['geolocate'];
- if (startsWith($geolocate, "-")) {
- $locateparts = explode(",", $geolocate);
- $_SESSION['lat'] = $locateparts[0];
- $_SESSION['lon'] = $locateparts[1];
- }
- else {
- $contents = geocode($geolocate, true);
- print_r($contents);
- if (isset($contents[0]->centroid)) {
- $geocoded = true;
- $_SESSION['lat'] = $contents[0]->centroid->coordinates[0];
- $_SESSION['lon'] = $contents[0]->centroid->coordinates[1];
- }
- else {
- $_SESSION['lat'] = "";
- $_SESSION['lon'] = "";
- }
- }
- }
- if ($_SESSION['lat'] != "" && isAnalyticsOn()) {
- trackEvent("Geolocation","Updated Location", "Geocoded - ".($geocoded ? "Yes" : "No"));
- }
-}
-debug(print_r($_SESSION, true) , "session");
+
function isDebugServer()
{
return $_SERVER['SERVER_NAME'] == "10.0.1.154" || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || !$_SERVER['SERVER_NAME'];
--- a/schedule_viewer.py
+++ b/schedule_viewer.py
@@ -316,8 +316,19 @@
except:
print "Error for GetStartTime of trip #" + t.trip_id + sys.exc_info()[0]
else:
- result.append ( (starttime, t.trip_id) )
- return sorted(result, key=lambda trip: trip[0])
+ cursor = t._schedule._connection.cursor()
+ cursor.execute(
+ 'SELECT arrival_secs,departure_secs FROM stop_times WHERE '
+ 'trip_id=? ORDER BY stop_sequence DESC LIMIT 1', (t.trip_id,))
+ (arrival_secs, departure_secs) = cursor.fetchone()
+ if arrival_secs != None:
+ endtime = arrival_secs
+ elif departure_secs != None:
+ endtime = departure_secs
+ else:
+ endtime =0
+ result.append ( (starttime, t.trip_id, endtime) )
+ return sorted(result, key=lambda trip: trip[2])
def handle_json_GET_triprows(self, params):
"""Return a list of rows from the feed file that are related to this
--- a/stop.php
+++ b/stop.php
@@ -32,8 +32,15 @@
$stopid = $stops[0][0];
$stopLinks.= "Individual stop pages: ";
foreach ($stops as $key => $sub_stop) {
- $stopNames[$key] = $sub_stop[1] . ' Stop #' . ($key + 1);
- $stopLinks.= '<a href="stop.php?stopid=' . $sub_stop[0] . '&stopcode=' . $sub_stop[5] . '">' . $stopNames[$key] . '</a> ';
+ // $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> ';
+ }
$stopPositions[$key] = Array(
$sub_stop[2],
$sub_stop[3]
@@ -66,6 +73,7 @@
}
echo ' <ul data-role="listview" data-inset="true">';
if (sizeof($allStopsTrips) > 0) {
+ sksort($allStopsTrips,0, $true);
$trips = $allStopsTrips;
}
else {
@@ -76,7 +84,7 @@
echo '<li>';
echo '<h3><a href="trip.php?stopid=' . $stopid . '&tripid=' . $row[1][0] . '">' . $row[1][1];
$viaPoints = viaPointNames($row[1][0], $stopid);
- if ($viaPoints != "") echo '<div class="viaPoints">Via: ' . $viaPoints . '</div>';
+ 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) {
--- a/trip.php
+++ b/trip.php
@@ -9,7 +9,7 @@
$url = $APIurl . "/json/routetrips?route_id=" . $routeid;
$routetrips = json_decode(getPage($url));
foreach ($routetrips as $trip) {
- if ($trip[0] > midnight_seconds()) {
+ if ($trip[2] > midnight_seconds()) {
$tripid = $trip[1];
break;
}