Fixed current time javascript
--- a/aws/awsStartup.sh
+++ b/aws/awsStartup.sh
@@ -1,8 +1,8 @@
#!/bin/bash
#this script should be run from a fresh git checkout from github
#ami base must have yum install lighttpd-fastcgi, git, tomcat6
-#screen php-cli php-gd tomcat6-webapps tomcat6-admin-webapps svn maven2
-#postgrtes postgres-server php-pg
+#php-cli php-gd tomcat6-webapps tomcat6-admin-webapps svn maven2
+#postgres postgres-server php-pg
#http://www.how2forge.org/installing-lighttpd-with-php5-and-mysql-support-on-fedora-12
cp /root/aws.php /tmp/
Binary files a/css/images/01-refresh.png and /dev/null differ
Binary files a/css/images/02-redo.png and /dev/null differ
Binary files a/css/images/06-magnify.png and /dev/null differ
Binary files a/css/images/07-map-marker.png and /dev/null differ
Binary files a/css/images/101-gameplan.png and /dev/null differ
Binary files a/css/images/102-walk.png and /dev/null differ
Binary files a/css/images/103-map.png and /dev/null differ
Binary files a/css/images/121-landscape.png and /dev/null differ
Binary files a/css/images/13-target.png and /dev/null differ
Binary files a/css/images/139-flags.png and /dev/null differ
Binary files a/css/images/145-persondot.png and /dev/null differ
Binary files a/css/images/184-warning.png and /dev/null differ
Binary files a/css/images/193-location-arrow.png and /dev/null differ
Binary files a/css/images/28-star.png and /dev/null differ
Binary files a/css/images/53-house.png and /dev/null differ
Binary files a/css/images/55-network.png and /dev/null differ
Binary files a/css/images/57-download.png and /dev/null differ
Binary files a/css/images/58-bookmark.png and /dev/null differ
Binary files a/css/images/59-flag.png and /dev/null differ
Binary files a/css/images/60-signpost.png and /dev/null differ
Binary files a/css/images/73-radar.png and /dev/null differ
Binary files a/css/images/74-location.png and /dev/null differ
Binary files a/css/images/83-calendar.png and /dev/null differ
Binary files /dev/null and b/css/images/91-beaker-2.png differ
--- a/include/common-session.inc.php
+++ b/include/common-session.inc.php
@@ -53,4 +53,7 @@
}
debug(print_r($_SESSION, true) , "session");
+function current_time() {
+ return ($_SESSION['time']? $_SESSION['time'] : date("H:i:s"));
+}
?>
--- a/include/common-template.inc.php
+++ b/include/common-template.inc.php
@@ -78,6 +78,10 @@
background-image: url(css/images/113-navigation.png);
background-position: 1px 0;
}
+ .ui-icon-beaker {
+ background-image: url(css/images/91-beaker-2.png);
+ background-position: 1px 0;
+ }
#footer {
text-size: 0.75em;
text-align: center;
@@ -169,12 +173,6 @@
';
if ($opendiv) {
echo '<div data-role="page">
- <script>
-$(document).ready(function ()
-{
- document.title = "' . $pageTitle . '";
-});
-</script>
<div data-role="header" data-position="inline">
<a href="' . $_SERVER["HTTP_REFERER"] . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a>
<h1>' . $pageTitle . '</h1>
@@ -224,7 +222,7 @@
<div data-role="fieldcontain">
<label for="time"> Time: </label>
<input type="time" name="time" id="time" value="' . (isset($_SESSION['time']) ? $_SESSION['time'] : date("H:i")) . '"/>
- <a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();' . "$('#time').val(d.getHours() +':'+ (d.getMinutes().toString().length = 1 ? '0'+ d.getMinutes(): d.getMinutes()));" . '">Current Time?</a>
+ <a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();' . "$('#time').val(d.getHours() +':'+ (d.getMinutes().toString().length == 1 ? '0'+ d.getMinutes(): d.getMinutes()));" . '">Current Time?</a>
</div>
<div data-role="fieldcontain">
<label for="service_period"> Service Period: </label>
--- a/include/db/route-dao.inc.php
+++ b/include/db/route-dao.inc.php
@@ -40,10 +40,10 @@
}
function getRouteNextTrip($routeID) {
- global $conn;
+ 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
-arrival_time > CURRENT_TIME and routes.route_id = '$routeID' order by
+arrival_time > '".current_time()."' and routes.route_id = '$routeID' order by
arrival_time limit 1";
debug($query,"database");
$result = pg_query($conn, $query);
@@ -53,6 +53,18 @@
}
return pg_fetch_assoc($result);
}
+
+ function getTimeInterpolatedRouteAtStop($routeID, $stop_id)
+{
+ $nextTrip = getRouteNextTrip($routeID);
+ if ($nextTrip['trip_id']){
+ foreach (getTimeInterpolatedTrip($nextTrip['trip_id']) as $tripStop) {
+ if ($tripStop['stop_id'] == $stop_id) return $tripStop;
+ }
+ }
+ return Array();
+}
+
function getRouteTrips($routeID) {
global $conn;
$query = "select * from routes join trips on trips.route_id = routes.route_id
@@ -112,7 +124,7 @@
if ($service_period == "") $service_period = service_period();
if ($limit != "") $limit = " LIMIT $limit ";
global $conn;
- $query = "SELECT service_id,trips.route_id,route_short_name,route_long_name,
+ $query = "SELECT service_id,trips.route_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
--- a/include/db/stop-dao.inc.php
+++ b/include/db/stop-dao.inc.php
@@ -115,15 +115,16 @@
}
return pg_fetch_all($result);
}
-function getStopTripsWithTimes($stopID, $time = "", $service_period = "", $time_range = "")
+function getStopTripsWithTimes($stopID, $time = "", $service_period = "", $time_range = "", $limit = "")
{
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:s"));
+ if ($time == "") $time = current_time();
if ($limit == "") $limit = 10;
$trips = getStopTrips($stopID, $service_period, $time);
$timedTrips = Array();
- foreach ($trips as $trip) {
+ if ($trips && sizeof($trips) > 0) {
+ 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;
@@ -138,6 +139,7 @@
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
@@ -109,10 +109,11 @@
}
return $rv;
}
-function getTimeInterpolatedTripAtStop($tripID, $stop_sequence)
+function getTimeInterpolatedTripAtStop($tripID, $stop_sequence, $stop_id = "")
{
foreach (getTimeInterpolatedTrip($tripID) as $tripStop) {
if ($tripStop['stop_sequence'] == $stop_sequence) return $tripStop;
+ if ($tripStop['stop_id'] == $stop_id) return $tripStop;
}
return Array();
}
--- a/index.php
+++ b/index.php
@@ -25,6 +25,7 @@
</ul>
<?php
echo timePlaceSettings();
+echo ' <a href="labs/index.php" data-role="button" data-icon="beaker">Busness R&D</a>';
include_footer(true)
?>
--- /dev/null
+++ b/labs/css
@@ -1,1 +1,1 @@
-
+../css/
--- /dev/null
+++ b/labs/index.php
@@ -1,1 +1,16 @@
+<?php
+include ('../include/common.inc.php');
+include_header("Busness R&D", "index")
+?>
+ <ul data-role="listview" data-theme="e" data-groupingtheme="e">
+ <li data-role="list-divider" > Experimental Features </li>
+ <li><a href="mywaybalance.php"><h3>MyWay Balance for mobile</h3>
+ <p>Mobile viewer for MyWay balance. Warning! No HTTPS security.</p></a></li>
+ <li>More coming soon!</li>
+ </ul>
+ </div>
+<?php
+include_footer()
+?>
+
--- /dev/null
+++ b/labs/js
@@ -1,1 +1,1 @@
-
+../js
--- /dev/null
+++ b/labs/lib
@@ -1,1 +1,1 @@
-
+../lib
--- a/labs/myway_api.json.php
+++ b/labs/myway_api.json.php
@@ -74,7 +74,7 @@
}
if (!isset($return['error'])) {
- include_once ('simple_html_dom.php');
+ include_once ('lib/simple_html_dom.php');
$page = str_get_html($pageHTML);
$pageAlerts = $page->find(".smartCardAlert");
if (sizeof($pageAlerts) > 0) {
--- a/labs/mywaybalance.php
+++ b/labs/mywaybalance.php
@@ -1,21 +1,36 @@
<?php
include ('../include/common.inc.php');
-include_header("MyWay Balance", "mywayBalance", true, false, true);
+include_header("MyWay Balance", "mywayBalance", false, false, true);
+ echo '<div data-role="page">
+ <div data-role="header" data-position="inline">
+ <a href="' . $_SERVER["HTTP_REFERER"] . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a>
+ <h1>MyWay Balance</h1>
+ <a href="mywaybalance.php?logout=yes" data-icon="delete" class="ui-btn-right">Logout</a>
+ </div><!-- /header -->
+ <a name="maincontent" id="maincontent"></a>
+ <div data-role="content"> ';
+
$return = Array();
+function logout() {
+ setcookie("card_number", "", time() - 60 * 60 * 24 * 100, "/");
+ setcookie("date", "", time() - 60 * 60 * 24 * 100, "/");
+ setcookie("secret_answer", "", time() - 60 * 60 * 24 * 100, "/");
+}
function printBalance($cardNumber, $date, $pwrd)
{
global $return;
- $return = json_decode(getPage(curPageURL() . "/myway_api.json.php?card_number=$cardNumber&DOBday={$date[0]}&DOBmonth={$date[1]}&DOByear={$date[2]}&secret_answer=$pwrd"), true);
-
- if (isset($return['error'])) {
- echo "<font color=red>" . var_dump($return['error']) . "</font>";
- } else {
+ $return = json_decode(getPage(curPageURL() . "/myway_api.json.php?card_number=$cardNumber&DOBday={$date[0]}&DOBmonth={$date[1]}&DOByear={$date[2]}&secret_answer=$pwrd") , true);
+ if (isset($return['error'])) {
+ logout();
+ echo '<h3><font color="red">' . $return['error'][0] . "</font></h3>";
+ }
+ else {
echo "<h2>Balance: " . $return['myway_carddetails']['Card Balance'] . "</h2>";
echo '<ul data-role="listview" data-inset="true"><li data-role="list-divider"> Recent Transactions </li>';
foreach ($return['myway_transactions'] as $transaction) {
echo "<li><b>" . $transaction["Date / Time"] . "</b>";
- echo "<br><small>" . $transaction["TX Reference No / Type"]. "</small>";
- echo '<p class="ui-li-aside">'.$transaction["TX Amount"].'</p>';
+ echo "<br><small>" . $transaction["TX Reference No / Type"] . "</small>";
+ echo '<p class="ui-li-aside">' . $transaction["TX Amount"] . '</p>';
echo "</li>";
}
echo "</ul>";
@@ -25,12 +40,15 @@
$cardNumber = $_REQUEST['card_number'];
$date = explode("/", $_REQUEST['date']);
$pwrd = $_REQUEST['secret_answer'];
- if ($_REQUEST['remember'] == true) {
- $_COOKIE['card_number'] = $cardNumber;
- $_COOKIE['date'] = $date;
- $_COOKIE['secret_answer'] = $pwrd;
+ if ($_REQUEST['remember'] == "on") {
+ setcookie("card_number", $cardNumber, time() + 60 * 60 * 24 * 100, "/");
+ setcookie("date", $_REQUEST['date'], time() + 60 * 60 * 24 * 100, "/");
+ setcookie("secret_answer", $pwrd, time() + 60 * 60 * 24 * 100, "/");
}
printBalance($cardNumber, $date, $pwrd);
+}
+else if (isset($_REQUEST['logout'])) {
+ echo '<center><h3> Logged out of MyWay balance </h3><a href="/index.php">Back to main menu...</a><center>';
}
else if (isset($_COOKIE['card_number']) && isset($_COOKIE['date']) && isset($_COOKIE['secret_answer'])) {
$cardNumber = $_COOKIE['card_number'];
--- a/layar_api.php
+++ b/layar_api.php
@@ -9,32 +9,30 @@
$page_end = $max_page + filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT);
$lat = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$lon = filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
-
-$contents = getStopsNearby($lat, $lon, 50);
-
+$max_distance = filter_var($_REQUEST['radius'], FILTER_SANITIZE_NUMBER_INT);
+$contents = getNearbyStops($lat, $lon, 50, $max_distance);
$stopNum = 0;
foreach ($contents as $stop) {
$stopNum++;
if ($stopNum > $page_start && $stopNum <= $page_end) {
$hotspot = Array();
- $hotspot['id'] = $stop[id];
- $hotspot['title'] = $stop[name];
+ $hotspot['id'] = $stop['stop_id'];
+ $hotspot['title'] = $stop['stop_name'];
$hotspot['type'] = 0;
- $hotspot['lat'] = floor($stop[lat] * 1000000);
- $hotspot['lon'] = floor($stop[lon] * 1000000);
- $hotspot['distance'] = distance($stop[lat], $stop[lon], $_REQUEST['lat'], $_REQUEST['lon']);
+ $hotspot['lat'] = floor($stop['stop_lat'] * 1000000);
+ $hotspot['lon'] = floor($stop['stop_lon'] * 1000000);
+ $hotspot['distance'] = floor($stop['distance']);
+ $hotspot['attribution'] = "ACTION Buses";
$hotspot['actions'] = Array(
Array(
"label" => 'View more trips/information',
- 'uri' => 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $stop[id]
+ 'uri' => 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $stop['stop_id']
)
);
-
- $url = $APIurl . "/json/stoptrips?stop=" . $row[0] . "&time=" . midnight_seconds() . "&service_period=" . service_period() . "&limit=4&time_range=" . strval(90 * 60);
- $trips = getStopTrips($stopID);
+ $trips = getStopTripsWithTimes($stop['stop_id'], "", "", "", 3);
foreach ($trips as $key => $row) {
if ($key < 3) {
- $hotspot['line' . strval($key + 2) ] = $row[1][1] . ' @ ' . midnight_seconds_to_time($row[0]);
+ $hotspot['line' . strval($key + 2) ] = $row['route_short_name'] . ' ' . $row['route_long_name'] . ' @ ' . $row['arrival_time'];
}
}
if (sizeof($trips) == 0) $hotspot['line2'] = 'No trips in the near future.';
@@ -49,7 +47,7 @@
$output['errorString'] = 'no results, try increasing range';
$output['errorCode'] = 21;
}
-if ($page_end >= $max_results || sizeof($hotspot) < $max_page) {
+if ($page_end >= $max_results || sizeof($contents) < $page_start+$max_page) {
$output["morePages"] = false;
$output["nextPageKey"] = null;
}
--- a/readme.txt
+++ b/readme.txt
@@ -2,11 +2,10 @@
Based on the maxious-canberra-transit-feed @ http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip
Source code for the https://github.com/maxious/ACTBus-data transit
feed and https://github.com/maxious/ACTBus-ui this site available from github.
-Uses jQuery Mobile, PHP, Ruby, Python, Google Transit Feed Specification
-tools, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder
+Uses jQuery Mobile, PHP, PostgreSQL, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder
and Tile Service
-Must have view.sh running on port 8765 for this webapp to work
+See aws/awsStartup.sh for example startup steps
For static maps, may have to do
/usr/sbin/setsebool -P httpd_can_network_connect=1
--- a/routeList.php
+++ b/routeList.php
@@ -59,7 +59,8 @@
foreach ($routes as $route) {
echo '<li><a href="trip.php?routeid=' . $route['route_id'] . '"><h3>' . $route['route_short_name'] . "</h3><p>" . $route['route_long_name'] . " (" . ucwords($route['service_id']) . ")</p>";
if ($_REQUEST['nearby']) {
- echo '<span class="ui-li-count">' .floor($route['distance']) . 'm away</span>';
+ $time = getTimeInterpolatedRouteAtStop($route['route_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>';
}
echo "</a></li>\n";
}
--- a/tripPlanner.php
+++ b/tripPlanner.php
@@ -1,8 +1,8 @@
<?php
include ('include/common.inc.php');
include_header("Trip Planner", "tripPlanner", true, true, true);
-$from = (isset($_REQUEST['from']) ? filter_var($_REQUEST['from'], FILTER_SANITIZE_STRING) : "Brigalow");
-$to = (isset($_REQUEST['to']) ? filter_var($_REQUEST['to'], FILTER_SANITIZE_STRING) : "Barry");
+$from = (isset($_REQUEST['from']) ? filter_var($_REQUEST['from'], FILTER_SANITIZE_STRING) : "");
+$to = (isset($_REQUEST['to']) ? filter_var($_REQUEST['to'], FILTER_SANITIZE_STRING) : "");
$date = (isset($_REQUEST['date']) ? filter_var($_REQUEST['date'], FILTER_SANITIZE_STRING) : date("m/d/Y"));
$time = (isset($_REQUEST['time']) ? filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING) : date("H:i"));
function formatTime($timeString) {
@@ -125,7 +125,8 @@
}
else {
$url = $otpAPIurl . "ws/plan?date=" . urlencode($_REQUEST['date']) . "&time=" . urlencode($_REQUEST['time']) . "&mode=TRANSIT%2CWALK&optimize=QUICK&maxWalkDistance=840&wheelchair=false&toPlace=$toPlace&fromPlace=$fromPlace&intermediatePlaces=";
- $ch = curl_init($url);
+ debug($url);
+ $ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
@@ -133,15 +134,15 @@
));
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$page = curl_exec($ch);
- if (curl_errno($ch)) {
- tripPlanForm("Trip planner temporarily unavailable: " . curl_errno($ch) . " " . curl_error($ch) .(isDebug() ? $url : ""));
+ if (curl_errno($ch) || curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200) {
+ tripPlanForm("Trip planner temporarily unavailable: " . curl_errno($ch) . " " . curl_error($ch) . " ". curl_getinfo($ch, CURLINFO_HTTP_CODE) .(isDebug() ? "<br>".$url : ""));
trackEvent("Trip Planner","Trip Planner Failed", $url);
}
else {
trackEvent("Trip Planner","Plan Trip From", $from);
trackEvent("Trip Planner","Plan Trip To", $to);
$tripplan = json_decode($page);
- debug(print_r($triplan, true));
+ debug(print_r($tripplan, true));
echo "<h1> From: {$tripplan->plan->from->name} To: {$tripplan->plan->to->name} </h1>";
echo "<h1> At: ".formatTime($tripplan->plan->date)." </h1>";
if (is_array($tripplan->plan->itineraries->itinerary)) {