Refactor layar API
--- 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/
@@ -23,7 +23,7 @@
psql -d transitdata -f /var/www/transitdata.cbrfeed.sql
#createuser transitdata -SDRP
#password transitdata
-#psql -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\"
+#psql -d transitdata -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\"
php /var/www/updatedb.php
wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \
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-db.inc.php
+++ b/include/common-db.inc.php
@@ -1,10 +1,13 @@
<?php
- if ($isDebugServer) $conn = pg_connect("dbname=transitdata user=postgres password=snmc");
- else $conn = pg_connect("dbname=transitdata user=transitdata password=transitdata ");
- if (php_uname('n') == "actbus-www") $conn = pg_connect("dbname=transitdata user=transitdata password=transitdata host=db.actbus.dotcloud.com port=2242");
+ if (php_uname('n') == "actbus-www") {
+ $conn = pg_connect("dbname=transitdata user=transitdata password=transitdata host=db.actbus.dotcloud.com port=2242");
+ } else if (isDebugServer()) {
+ $conn = pg_connect("dbname=transitdata user=postgres password=snmc");
+ } else {
+ $conn = pg_connect("dbname=transitdata user=transitdata password=transitdata ");
+ }
if (!$conn) {
- echo "An error occured.\n";
- exit;
+ die("A database error occurred.\n");
}
function databaseError($errMsg) {
--- 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>
--- a/include/db/stop-dao.inc.php
+++ b/include/db/stop-dao.inc.php
@@ -115,7 +115,7 @@
}
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);
@@ -123,7 +123,8 @@
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/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/labs/tripPlannerTester.kml.php
+++ b/labs/tripPlannerTester.kml.php
@@ -8,6 +8,50 @@
}
else {
return (($pBegin - $pEnd) * (1 - ($pStep / $pMax))) + $pEnd;
+ }
+}
+require ("../lib/rolling-curl/RollingCurl.php");
+function processResult_cb($response, $info, $request)
+{
+ global $testRegions, $regionTimes,$csv,$kml, $latdeltasize,$londeltasize;
+ $md = $request->metadata;
+ $tripplan = json_decode($response);
+ $plans = Array();
+ //var_dump(Array($info, $request));
+ if (is_array($tripplan->plan->itineraries->itinerary)) {
+ foreach ($tripplan->plan->itineraries->itinerary as $itineraryNumber => $itinerary) {
+ $plans[floor($itinerary->duration / 60000) ] = $itinerary;
+ }
+ }
+ else {
+ $plans[floor($tripplan->plan->itineraries->itinerary->duration / 60000) ] = $tripplan->plan->itineraries->itinerary;
+ }
+ if ($csv) echo "{$md['i']},{$md['j']}," . min(array_keys($plans)) . ",$latdeltasize, $londeltasize,{$md['key']}\n";
+ if ($kml) {
+ $time = min(array_keys($plans));
+ $plan = "";
+ if (is_array($plans[min(array_keys($plans)) ]->legs->leg)) {
+ foreach ($plans[min(array_keys($plans)) ]->legs->leg as $legNumber => $leg) {
+ $plan.= processLeg($legNumber, $leg) . ",";
+ }
+ }
+ else {
+ $plan.= processLeg(0, $plans[min(array_keys($plans)) ]->legs->leg);
+ }
+ if (isset($tripplan->error) && $tripplan->error->id == 404) {
+ $time = 999;
+ $plan = "Trip not possible without excessive walking from nearest bus stop";
+ }
+ $testRegions[] = Array(
+ "lat" => $md['i'],
+ "lon" => $md['j'],
+ "time" => $time,
+ "latdeltasize" => $latdeltasize,
+ "londeltasize" => $londeltasize,
+ "regionname" => $md['key'],
+ "plan" => $plan . "<br/><a href='" . htmlspecialchars($url) . "'>original plan</a>"
+ );
+ $regionTimes[] = $time;
}
}
function Gradient($HexFrom, $HexTo, $ColorSteps)
@@ -49,18 +93,17 @@
//}
//$walkingstep.= floor($step->distance) . "m";
//return $walkingstep;
+
}
}
$csv = false;
$kml = true;
if ($kml) {
- //header('Content-Type: application/vnd.google-earth.kml+xml');
+ header('Content-Type: application/vnd.google-earth.kml+xml');
echo '<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"><Document>';
}
include ('../include/common.inc.php');
-//Test code to grab transit times
-// make sure to sleep(10);
$boundingBoxes = Array(
"belconnen" => Array(
"startlat" => - 35.1928,
@@ -105,72 +148,29 @@
$useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
if ($csv) echo "<pre>";
if ($csv) echo "lat,lon,time,latdeltasize, londeltasize, region key name\n";
+$rc = new RollingCurl("processResult_cb");
+$rc->window_size = 3;
foreach ($boundingBoxes as $key => $boundingBox) {
for ($i = $boundingBox['startlat']; $i >= $boundingBox['finishlat']; $i-= $latdeltasize) {
for ($j = $boundingBox['startlon']; $j <= $boundingBox['finishlon']; $j+= $londeltasize) {
$url = $otpAPIurl . "ws/plan?date=" . urlencode($startDate) . "&time=" . urlencode($startTime) . "&mode=TRANSIT%2CWALK&optimize=QUICK&maxWalkDistance=440&wheelchair=false&toPlace=" . $i . "," . $j . "&fromPlace=$fromPlace";
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+ $request = new RollingCurlRequest($url);
+ $request->headers = Array(
"Accept: application/json"
- ));
- curl_setopt($ch, CURLOPT_TIMEOUT, 5);
- $page = curl_exec($ch);
- if (curl_errno($ch)) {
- if ($csv) echo "Trip planner temporarily unavailable: " . curl_errno($ch) . " " . curl_error($ch);
- }
- else {
- $tripplan = json_decode($page);
- $plans = Array();
- if (is_array($tripplan->plan->itineraries->itinerary)) {
- foreach ($tripplan->plan->itineraries->itinerary as $itineraryNumber => $itinerary) {
- $plans[floor($itinerary->duration / 60000) ] = $itinerary;
- }
- }
- else {
- $plans[floor($tripplan->plan->itineraries->itinerary->duration / 60000) ] = $tripplan->plan->itineraries->itinerary;
- }
- if ($csv) echo "$i,$j," . min(array_keys($plans)) . ",$latdeltasize, $londeltasize,$key\n";
- if ($kml) {
- $time = min(array_keys($plans));
- $plan = "";
- if (is_array($plans[min(array_keys($plans)) ]->legs->leg)) {
- foreach ($plans[min(array_keys($plans)) ]->legs->leg as $legNumber => $leg) {
- $plan .= processLeg($legNumber, $leg).",";
- }
- }
- else {
- $plan .= processLeg(0, $plans[min(array_keys($plans)) ]->legs->leg);
- }
- if (isset($tripplan->error) && $tripplan->error->id == 404) {
- $time = 999;
- $plan = "Trip not possible without excessive walking from nearest bus stop";
- }
- $testRegions[] = Array(
- "lat" => $i,
- "lon" => $j,
- "time" => $time,
- "latdeltasize" => $latdeltasize,
- "londeltasize" => $londeltasize,
- "regionname" => $key,
- "plan" => $plan . "<br/><a href='". htmlspecialchars($url)."'>original plan</a>"
- );
- $regionTimes[] = $time;
- }
- }
- flush(); @ob_flush();
- curl_close($ch);
- }
- }
-}
+ );
+ $request->metadata = Array( "i" => $i, "j" => $j, "key" => $key);
+ $rc->add($request);
+ }
+ }
+}
+$rc->execute();
if ($kml) {
$colorSteps = 9;
//$minTime = min($regionTimes);
//$maxTime = max($regionTimes);
//$rangeTime = $maxTime - $minTime;
//$deltaTime = $rangeTime / $colorSteps;
- $Gradients = Gradient(strrev("66FF00"), strrev("FF0000"), $colorSteps); // KML is BGR not RGB so strrev
+ $Gradients = Gradient(strrev("66FF00") , strrev("FF0000") , $colorSteps); // KML is BGR not RGB so strrev
foreach ($testRegions as $testRegion) {
//$band = (floor(($testRegion[time] - $minTime) / $deltaTime));
$band = (floor($testRegion[time] / 10));
--- a/layar_api.php
+++ b/layar_api.php
@@ -3,43 +3,41 @@
$output = Array();
$output['hotspots'] = Array();
$output['layer'] = "canberrabusstops";
-$max_page = 10;
-$max_results = 50;
-$page_start = 0 + filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT);
-$page_end = $max_page + filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT);
+//$max_page = 10;
+//$max_results = 50;
+//$page_start = 0 + filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT);
+//$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);
-
+$contents = getNearbyStops($lat, $lon, 50);
$stopNum = 0;
foreach ($contents as $stop) {
$stopNum++;
- if ($stopNum > $page_start && $stopNum <= $page_end) {
+// 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['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.';
$output['hotspots'][] = $hotspot;
- }
+// }
}
if (sizeof($hotspot) > 0) {
$output['errorString'] = 'ok';
@@ -49,14 +47,14 @@
$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($hotspot) < $max_page) {*/
$output["morePages"] = false;
$output["nextPageKey"] = null;
-}
+/*}
else {
$output["morePages"] = true;
$output["nextPageKey"] = $page_end;
-}
+}*/
echo json_encode($output);
?>
--- /dev/null
+++ b/lib/rolling-curl/.svn/all-wcprops
@@ -1,1 +1,42 @@
+K 25
+svn:wc:ra_dav:version-url
+V 22
+/svn/!svn/ver/20/trunk
+END
+RollingCurlGroup.php
+K 25
+svn:wc:ra_dav:version-url
+V 43
+/svn/!svn/ver/20/trunk/RollingCurlGroup.php
+END
+example_groups.php
+K 25
+svn:wc:ra_dav:version-url
+V 41
+/svn/!svn/ver/20/trunk/example_groups.php
+END
+example.php
+K 25
+svn:wc:ra_dav:version-url
+V 34
+/svn/!svn/ver/20/trunk/example.php
+END
+RollingCurl.php
+K 25
+svn:wc:ra_dav:version-url
+V 38
+/svn/!svn/ver/20/trunk/RollingCurl.php
+END
+CHANGELOG.txt
+K 25
+svn:wc:ra_dav:version-url
+V 36
+/svn/!svn/ver/20/trunk/CHANGELOG.txt
+END
+README.txt
+K 25
+svn:wc:ra_dav:version-url
+V 33
+/svn/!svn/ver/20/trunk/README.txt
+END
--- /dev/null
+++ b/lib/rolling-curl/.svn/entries
@@ -1,1 +1,233 @@
-
+10
+
+dir
+20
+http://rolling-curl.googlecode.com/svn/trunk
+http://rolling-curl.googlecode.com/svn
+
+
+
+2010-09-12T20:39:22.711474Z
+20
+alexander.makarow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+74aa2acc-2e27-11de-b2a4-4f96ceaaac44
+
+RollingCurlGroup.php
+file
+
+
+
+
+2011-04-10T08:32:48.081650Z
+73c08d9e9e24b4adc89816624c7aca30
+2010-09-12T20:39:22.711474Z
+20
+alexander.makarow
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+5152
+
+example_groups.php
+file
+
+
+
+
+2011-04-10T08:32:48.082650Z
+907ed82a47d346c39acbd5578e1d0230
+2010-09-12T20:39:22.711474Z
+20
+alexander.makarow
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1367
+
+example.php
+file
+
+
+
+
+2011-04-10T08:32:48.083650Z
+87aa845abfaffc09ed4eca024f2a8b8a
+2010-09-12T20:39:22.711474Z
+20
+alexander.makarow