Show points not lines where appropriate
--- /dev/null
+++ b/.box
@@ -1,1 +1,5 @@
+shared_writable_dirs:
+ - /labs/tiles
+ - /lib/staticmaplite/cache
+php_extensions: [pgsql, pdo, pdo_pgsql, curl]
--- a/about.php
+++ b/about.php
@@ -17,6 +17,10 @@
Feedback encouraged; contact maxious@lambdacomplex.org<br />
<br />
Some icons by Joseph Wain / glyphish.com<br />
+Native clients also available for iPhone(<a href="http://itunes.apple.com/au/app/cbrtimetable/id444287349?mt=8">cbrTimetable by Sandor Kolotenko</a>
+, <a href="http://itunes.apple.com/au/app/act-buses/id376634797?mt=8">ACT Buses by David Sullivan</a>)
+and Android (<a href="https://market.android.com/details?id=com.action">MyBus 2.0 by Imagine Team</a>)
+<br />
<br />
<small>Disclaimer: The content of this website is of a general and informative nature. Please check with printed timetables or those available on http://action.act.gov.au before your trip.
Whilst every effort has been made to ensure the high quality and accuracy of the Site, the Author makes no warranty,
--- a/aws/awsStartup.sh
+++ b/aws/awsStartup.sh
@@ -26,6 +26,9 @@
#createuser transitdata -SDRP
#password transitdata
#psql -d transitdata -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\"
+#psql -d transitdata -c "GRANT SELECT,INSERT ON TABLE myway_observations,myway_routes,myway_stops,myway_timingdeltas TO transitdata;"
+#psql -d transitdata -c "GRANT SELECT,INSERT,UPDATE ON TABLE myway_routes,myway_stops TO transitdata;"
+##psql -d transitdata -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO transitdata;"
php /var/www/updatedb.php
wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \
--- /dev/null
+++ b/css/local.css.php
@@ -1,1 +1,216 @@
-
+<?php
+ header('Content-type: text/css');
+ ob_start("compress");
+ function compress($buffer) {
+ /* remove comments */
+ $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
+ /* remove tabs, spaces, newlines, etc. */
+ $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
+ return $buffer;
+ }
+
+echo '
+.ui-li-thumb, .ui-li-icon { position: relative; }
+
+ .ui-navbar {
+ width: 100%;
+ }
+ .ui-btn-inner {
+ white-space: normal !important;
+ }
+ .ui-li-heading {
+ white-space: normal !important;
+ }
+ .ui-listview-filter {
+ margin: 0 !important;
+ }
+ .ui-icon-navigation {
+ background-image: url(images/113-navigation.png);
+ background-position: 1px 0;
+ }
+ .ui-icon-beaker {
+ background-image: url(images/91-beaker-2.png);
+ background-position: 1px 0;
+ }
+ #footer {
+ text-size: 0.75em;
+ text-align: center;
+ }
+ body {
+ background-color: #F0F0F0;
+ }
+ #jqm-homeheader {
+ text-align: center;
+ }
+ .viaPoints {
+ display: none;
+ text-size: 0.2em;
+ }
+ .min-width-480px .viaPoints {
+ display: inline;
+ }
+ #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;
+ }
+
+
+#footer {
+clear:both;
+text-align:center;
+}
+ // source http://webaim.org/techniques/skipnav/
+ #skip a, #skip a:hover, #skip a:visited
+{
+position:absolute;
+left:0px;
+top:-500px;
+width:1px;
+height:1px;
+overflow:hidden;
+}
+
+#skip a:active, #skip a:focus
+{
+position:static;
+width:auto;
+height:auto;
+}';
+
+//if (false)
+ echo '
+// adaptive layout from jQuery Mobile docs site
+.type-interior .content-secondary {
+ border-right: 0;
+ border-left: 0;
+ margin: 10px -15px 0;
+ background: #fff;
+ border-top: 1px solid #ccc;
+}
+.type-home .ui-content {
+ margin-top: 5px;
+}
+.type-interior .ui-content {
+ padding-bottom: 0;
+}
+.content-secondary .ui-collapsible-contain {
+ padding: 10px 15px;
+
+}
+.content-secondary .ui-collapsible-heading {
+ margin: 0 0 30px;
+}
+.content-secondary .ui-collapsible-heading-collapsed,
+.content-secondary .ui-collapsible-content {
+ padding:0;
+ margin: 0;
+}
+@media all and (min-width: 650px){
+.content-secondary {
+ text-align: left;
+ float: left;
+ width: 45%;
+ background: none;
+ border-top: 0;
+ }
+ .content-secondary,
+ .type-interior .content-secondary {
+ margin: 30px 0 20px 2%;
+ padding: 20px 4% 0 0;
+ background: none;
+ }
+ .type-index .content-secondary {
+ padding: 0;
+ }
+ .type-index .content-secondary .ui-listview {
+ margin: 0;
+ }
+ .content-primary {
+ width: 45%;
+ float: right;
+ margin-top: 30px;
+ margin-right: 1%;
+ padding-right: 1%;
+ }
+ .content-primary ul:first-child {
+ margin-top: 0;
+ }
+
+ .type-interior .content-primary {
+ padding: 1.5em 6% 3em 0;
+ margin: 0;
+ }
+ /* fix up the collapsibles - expanded on desktop */
+ .content-secondary .ui-collapsible-heading {
+ display: none;
+ }
+ .content-secondary .ui-collapsible-contain {
+ margin:0;
+ }
+ .content-secondary .ui-collapsible-content {
+ display: block;
+ margin: 0;
+ padding: 0;
+ }
+ .type-interior .content-secondary .ui-li-divider {
+ padding-top: 1em;
+ padding-bottom: 1em;
+ }
+ .type-interior .content-secondary {
+ margin: 0;
+ padding: 0;
+ }
+}
+@media all and (min-width: 750px){
+ .type-home .ui-content,
+ .type-interior .ui-content {
+ background-position: 39%;
+ }
+ .content-secondary {
+ width: 34%;
+ }
+ .content-primary {
+ width: 56%;
+ padding-right: 1%;
+ }
+ .type-interior .ui-content {
+ background-position: 34%;
+ }
+}
+
+@media all and (min-width: 1200px){
+ .type-home .ui-content{
+ background-position: 38.5%;
+ }
+ .type-interior .ui-content {
+ background-position: 30%;
+ }
+ .content-secondary {
+ width: 30%;
+ padding-right:6%;
+ margin: 30px 0 20px 5%;
+ }
+ .type-interior .content-secondary {
+ margin: 0;
+ padding: 0;
+ }
+ .content-primary {
+ width: 50%;
+ margin-right: 5%;
+ padding-right: 3%;
+ }
+ .type-interior .content-primary {
+ width: 60%;
+ }
+}';
+ ob_end_flush();
+?>
+
--- a/dotcloud/postinstall
+++ b/dotcloud/postinstall
@@ -3,8 +3,8 @@
curl http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \
-o /home/dotcloud/current/cbrfeed.zip
-wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \
--O /tmp/Graph.obj
+curl http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \
+-o /tmp/Graph.obj
#db setup
#curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz
--- a/include/common-geo.inc.php
+++ b/include/common-geo.inc.php
@@ -1,8 +1,9 @@
<?php
// SELECT array_to_string(array(SELECT REPLACE(name_2006, ',', '\,') as name FROM suburbs order by name), ',')
$suburbs = explode(",", "Acton,Ainslie,Amaroo,Aranda,Banks,Barton,Belconnen,Bonner,Bonython,Braddon,Bruce,Calwell,Campbell,Chapman,Charnwood,Chifley,Chisholm,City,Conder,Cook,Curtin,Deakin,Dickson,Downer,Duffy,Dunlop,Evatt,Fadden,Farrer,Fisher,Florey,Flynn,Forrest,Franklin,Fraser,Fyshwick,Garran,Gilmore,Giralang,Gordon,Gowrie,Greenway,Griffith,Gungahlin,Hackett,Hall,Harrison,Hawker,Higgins,Holder,Holt,Hughes,Hume,Isaacs,Isabella Plains,Kaleen,Kambah,Kingston,Latham,Lawson,Lyneham,Lyons,Macarthur,Macgregor,Macquarie,Mawson,McKellar,Melba,Mitchell,Monash,Narrabundah,Ngunnawal,Nicholls,Oaks Estate,O'Connor,O'Malley,Oxley,Page,Palmerston,Parkes,Pearce,Phillip,Pialligo,Red Hill,Reid,Richardson,Rivett,Russell,Scullin,Spence,Stirling,Symonston,Tharwa,Theodore,Torrens,Turner,Wanniassa,Waramanga,Watson,Weetangera,Weston,Yarralumla");
-function staticmap($mapPoints, $zoom = 0, $markerImage = "iconb", $collapsible = true)
+function staticmap($mapPoints, $zoom = 0, $markerImage = "iconb", $collapsible = true, $twotone = false)
{
+ global $labsPath;
$width = 300;
$height = 300;
$metersperpixel[9] = 305.492 * $width;
@@ -12,14 +13,11 @@
$metersperpixel[13] = 19.093 * $width;
$metersperpixel[14] = 9.547 * $width;
$metersperpixel[15] = 4.773 * $width;
- $metersperpixel[16] = 2.387 * $width;
+ //$metersperpixel[16] = 2.387 * $width;
// $metersperpixel[17]=1.193*$width;
$center = "";
$markers = "";
- $minlat = 999;
- $minlon = 999;
- $maxlat = 0;
- $maxlon = 0;
+ $mapwidthinmeters = 50;
if (sizeof($mapPoints) < 1) return "map error";
if (sizeof($mapPoints) === 1) {
if ($zoom == 0) $zoom = 14;
@@ -28,27 +26,30 @@
}
else {
foreach ($mapPoints as $index => $mapPoint) {
- $markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . $markerImage . ($index + 1);
+ if ($twotone && $index == 0) {
+ $markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . "iconr" . ($index + 1);
+ $center = "{$mapPoints[0][0]},{$mapPoints[0][1]}";
+ }
+ else {
+ $markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . $markerImage . ($index + 1);
+ }
if ($index + 1 != sizeof($mapPoints)) $markers.= "|";
- if ($mapPoint[0] < $minlat) $minlat = $mapPoint[0];
- if ($mapPoint[0] > $maxlat) $maxlat = $mapPoint[0];
- if ($mapPoint[1] < $minlon) $minlon = $mapPoint[1];
- if ($mapPoint[1] > $maxlon) $maxlon = $mapPoint[1];
+ $dist = distance($mapPoints[0][0], $mapPoint[0][1], $mapPoint[0], $mapPoint[1]);
+ $mapwidthinmeters = ($dist > $mapwidthinmeters ? $dist : $mapwidthinmeters);
$totalLat+= $mapPoint[0];
$totalLon+= $mapPoint[1];
}
if ($zoom == 0) {
$mapwidthinmeters = distance($minlat, $minlon, $minlat, $maxlon);
foreach (array_reverse($metersperpixel, true) as $zoomLevel => $maxdistance) {
- if ($zoom == 0 && $mapwidthinmeters < ($maxdistance + 50)) $zoom = $zoomLevel;
+ if ($zoom == 0 && $mapwidthinmeters * 1.5 < ($maxdistance)) $zoom = $zoomLevel;
}
}
$center = $totalLat / sizeof($mapPoints) . "," . $totalLon / sizeof($mapPoints);
}
$output = "";
if ($collapsible) $output.= '<div class="map" data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>';
- $output.= '<img class="map" src="' . curPageURL() . '/lib/staticmaplite/staticmap.php?center=' . $center . '&zoom=' . $zoom . '&size=' . $width . 'x' . $height . '&markers=' .
-$markers . '" width=' . $width . ' height=' . $height . '>';
+ $output.= '<img class="map" src="' . curPageURL() . '/' . $labsPath . '/lib/staticmaplite/staticmap.php?center=' . $center . '&zoom=' . $zoom . '&size=' . $width . 'x' . $height . '&markers=' . $markers . '" width=' . $width . ' height=' . $height . '>';
if ($collapsible) $output.= '</div>';
return $output;
}
@@ -66,11 +67,11 @@
$c = 2 * atan2(sqrt($a) , sqrt(1 - $a));
$km = $r * $c;
if ($roundLargeValues) {
- if ($km < 1) return floor($km * 1000);
- else return round($km,2)."k";
- } else return floor($km * 1000);
+ if ($km < 1) return floor($km * 1000);
+ else return round($km, 2) . "k";
+ }
+ else return floor($km * 1000);
}
-
function decodePolylineToArray($encoded)
{
// source: http://latlongeeks.com/forum/viewtopic.php?f=4&t=5
--- a/include/common-request.inc.php
+++ b/include/common-request.inc.php
@@ -15,7 +15,7 @@
$nearby = true;
}
if (isset($_REQUEST['suburb'])) {
- $suburb = filter_var($_REQUEST['suburb'], FILTER_SANITIZE_STRING);
+ $suburb = $_REQUEST['suburb'];
}
$pageKey = filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT);
$lat = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
--- a/include/common-template.inc.php
+++ b/include/common-template.inc.php
@@ -25,39 +25,40 @@
}
function include_header($pageTitle, $pageType, $opendiv = true, $geolocate = false, $datepicker = false)
{
+ global $labsPath;
echo '
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
- <title>' . $pageTitle . '</title>
- <meta name="google-site-verification"
-content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" />
- <link rel="stylesheet" href="css/jquery-ui-1.8.12.custom.css" />';
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>' . $pageTitle . '</title>
+ <meta name="google-site-verification" content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" />
+<link rel="dns-prefetch" href="//code.jquery.com">
+<link rel="dns-prefetch" href="//ajax.googleapis.com">
+ <link rel="stylesheet" href="' . $labsPath . 'css/jquery-ui-1.8.12.custom.css" />';
if (isDebugServer()) {
- echo '<link rel="stylesheet" href="css/jquery.mobile-1.0b1.css" />
-
- <script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
- <script>$(document).bind("mobileinit", function(){
+ $jqmcss = $labsPath . 'css/jquery.mobile-1.0b1.css';
+ $jqjs = $labsPath . 'js/jquery-1.6.1.min.js';
+ $jqmjs = $labsPath . 'js/jquery.mobile-1.0b1.js';
+ }
+ else {
+ $jqmcss = "//code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css";
+ $jqjs = "//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js";
+ $jqmjs = "//code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js";
+ }
+ echo '<link rel="stylesheet" href="' . $jqmcss . '" />
+ <script src="'.$jqjs.'"></script>
+ <script>$(document).bind("mobileinit", function(){
$.mobile.ajaxEnabled = false;
});
-</script>
- <script type="text/javascript" src="js/jquery.mobile-1.0b1.js"></script>';
- }
- else {
- echo '<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" />
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
- <script>$(document).bind("mobileinit", function(){
- $.mobile.ajaxEnabled = false;
-});
-</script>
- <script type="text/javascript" src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>';
- }
- echo '
- <script src="js/jquery.ui.autocomplete.min.js"></script>
-<script src="js/jquery.ui.core.min.js"></script>
-<script src="js/jquery.ui.position.min.js"></script>
-<script src="js/jquery.ui.widget.min.js"></script>
+</script>
+ <script src="'.$jqmjs.'"></script>
+
+<script src="' . $labsPath . 'js/jquery.ui.core.min.js"></script>
+<script src="' . $labsPath . 'js/jquery.ui.position.min.js"></script>
+<script src="' . $labsPath . 'js/jquery.ui.widget.min.js"></script>
+ <script src="' . $labsPath . 'js/jquery.ui.autocomplete.min.js"></script>
<script>
$(function() {
$( "#geolocate" ).autocomplete({
@@ -73,12 +74,9 @@
minLength: 2
});
});
- </script>
- ';
- echo '<style type="text/css">
-.ui-li-thumb, .ui-li-icon { position: relative; }';
-
-if (strstr($_SERVER['HTTP_USER_AGENT'], 'Android') echo '.ui-shadow,.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a,.ui-body-b,.ui-btn-up-b,.ui-btn-hover-b,
+ </script>';
+ echo '<style type="text/css">';
+ if (strstr($_SERVER['HTTP_USER_AGENT'], 'Android')) echo '.ui-shadow,.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a,.ui-body-b,.ui-btn-up-b,.ui-btn-hover-b,
.ui-btn-down-b,.ui-bar-c,.ui-body-c,.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c,.ui-bar-c,.ui-body-d,
.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d,.ui-bar-d,.ui-body-e,.ui-btn-up-e,.ui-btn-hover-e,
.ui-btn-down-e,.ui-bar-e,.ui-overlay-shadow,.ui-shadow,.ui-btn-active,.ui-body-a,.ui-bar-a {
@@ -86,94 +84,8 @@
box-shadow: none;
-webkit-box-shadow: none;
}';
-echo '
- .ui-navbar {
- width: 100%;
- }
- .ui-btn-inner {
- white-space: normal !important;
- }
- .ui-li-heading {
- white-space: normal !important;
- }
- .ui-listview-filter {
- margin: 0 !important;
- }
- .ui-icon-navigation {
- 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;
- }
- body {
- background-color: #F0F0F0;
- }
- #jqm-homeheader {
- text-align: center;
- }
- .viaPoints {
- display: none;
- text-size: 0.2em;
- }
- .min-width-480px .viaPoints {
- display: inline;
- }
- #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;
- }
-
-/*#leftcolumn {
- float: none;
-}
-.min-width-768px #leftcolumn {
- float: left;
- width: 30%;
-}
-#rightcolumn {
- float: none;
-}
-.min-width-768px #rightcolumn {
- float: right;
- width: 68%;
-}*/
-
-#footer {
-clear:both;
-text-align:center;
-}
- // source http://webaim.org/techniques/skipnav/
- #skip a, #skip a:hover, #skip a:visited
-{
-position:absolute;
-left:0px;
-top:-500px;
-width:1px;
-height:1px;
-overflow:hidden;
-}
-
-#skip a:active, #skip a:focus
-{
-position:static;
-width:auto;
-height:auto;
-}
-</style>';
+ echo '</style>';
+ echo '<link rel="stylesheet" href="' . $labsPath . 'css/local.css.php" />';
if (strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPod') || strstr($_SERVER['HTTP_USER_AGENT'], 'iPad')) {
echo '<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
@@ -206,10 +118,6 @@
$(document).ready(function() {
$('#here').click(function(event) { $('#geolocate').val(geolocate()); return false;});
$('#here').show();
- /*if ($.mobile.media('screen and (min-width: 768px)')) {
- $('map a:first').click();
- $('#settings a:first').click();
- }*/
});
";
if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "") echo "geolocate();";
@@ -234,26 +142,26 @@
<div data-role="header" data-position="inline">
<a href="' . (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "javascript:history.go(-1)") . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a>
<h1>' . $pageTitle . '</h1>
- <a href="/index.php" data-icon="home" class="ui-btn-right">Home</a>
+ <a href="' . $labsPath . '/index.php" data-icon="home" class="ui-btn-right">Home</a>
</div><!-- /header -->
<a name="maincontent" id="maincontent"></a>
<div data-role="content"> ';
$overrides = getServiceOverride();
if ($overrides['service_id']) {
- if ($overrides['service_id'] == "noservice") {
- echo '<div id="servicewarning">Buses are <strong>not running today</strong> due to industrial action/public holiday. See <a
+ if ($overrides['service_id'] == "noservice") {
+ echo '<div id="servicewarning">Buses are <strong>not running today</strong> 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>';
- }
- else {
- 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>';
- }
+ }
+ else {
+ 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()
{
- echo '<div id="footer"><a href="about.php">About/Contact Us</a> <a href="feedback.php">Feedback/Bug Report</a> <a href="privacy.php">Privacy Policy</a>';
+ global $labsPath;
+ echo '<div id="footer"><a href="' . $labsPath . 'about.php">About/Contact Us</a> <a href="' . $labsPath . 'feedback.php">Feedback/Bug Report</a> <a href="' . $labsPath . 'privacy.php">Privacy Policy</a>';
echo '</div>';
if (isAnalyticsOn()) {
echo "<script> (function() {
@@ -266,17 +174,15 @@
})();</script>";
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" /></noscript>';
-
- }
- echo "\n</div></div></body></html>";
-}
-function timePlaceSettings($geolocate = false)
+ }
+ echo "\n</div></div></body></html>";
+}
+function placeSettings()
{
global $service_periods;
$geoerror = false;
- if ($geolocate == true) {
$geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "";
- }
+
echo '<div id="error">';
if ($geoerror) {
echo 'Sorry, but your location could not currently be detected.
@@ -285,27 +191,13 @@
}
echo '</div>';
echo '<div id="settings" data-role="collapsible" data-collapsed="' . !$geoerror . '">
- <h3>Change Time/Place (' . (isset($_SESSION['time']) ? $_SESSION['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3>
+ <h3>Change Location...</h3>
<form action="' . basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING'] . '" method="post">
<div class="ui-body">
<div data-role="fieldcontain">
<label for="geolocate"> Current Location: </label>
<input type="text" id="geolocate" name="geolocate" value="' . (isset($_SESSION['lat']) && isset($_SESSION['lon']) ? $_SESSION['lat'] . "," . $_SESSION['lon'] : "Enter co-ordinates or address here") . '"/> <a href="#" style="display:none" name="here" id="here">Here?</a>
</div>
- <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>
- </div>
- <div data-role="fieldcontain">
- <label for="service_period"> Service Period: </label>
- <select name="service_period" id="service_period">';
- foreach ($service_periods as $service_period) {
- echo "<option value=\"$service_period\"" . (service_period() === $service_period ? " SELECTED" : "") . '>' . ucwords($service_period) . '</option>';
- }
- echo '</select>
- <a href="#" style="display:none" name="currentPeriod" id="currentPeriod">Current Period?</a>
- </div>
<input type="submit" value="Update"/>
</div></form>
--- a/include/common-transit.inc.php
+++ b/include/common-transit.inc.php
@@ -5,16 +5,16 @@
'weekday'
);
-function service_period()
+function service_period($date = "")
{
if (isset($_SESSION['service_period'])) return $_SESSION['service_period'];
- $override = getServiceOverride();
+ $override = getServiceOverride($date);
if ($override['service_id']){
return $override['service_id'];
}
- switch (date('w')) {
+ switch (date('w',($date != "" ? $date : time()))) {
case 0:
return 'sunday';
case 6:
@@ -23,9 +23,12 @@
return 'weekday';
}
}
-function midnight_seconds()
+function midnight_seconds($time = "")
{
// from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html
+ if ($time != "") {
+ return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
+ }
if (isset($_SESSION['time'])) {
$time = strtotime($_SESSION['time']);
return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -6,7 +6,7 @@
"phperror",
"awsotp",
//"squallotp",
- "vanilleotp",
+ //"vanilleotp",
"database",
"other"
);
@@ -26,6 +26,14 @@
$otpAPIurl = 'http://10.0.1.135:8080/opentripplanner-api-webapp/';
}
if (isDebug("phperror")) error_reporting(E_ALL ^ E_NOTICE);
+$labsPath = "";
+if (strstr($_SERVER['PHP_SELF'],"labs")) $labsPath = "../";
+
+function isDebugServer()
+{
+ return isset($_SERVER['SERVER_NAME']) && ( $_SERVER['SERVER_NAME'] == "10.0.1.154" || $_SERVER['SERVER_NAME'] == "10.1.0.4" || $_SERVER['SERVER_NAME'] ==
+"localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1") ;
+}
include_once ("common-geo.inc.php");
include_once ("common-net.inc.php");
@@ -36,10 +44,7 @@
include_once ("common-session.inc.php");
include_once ("common-template.inc.php");
-function isDebugServer()
-{
- return $_SERVER['SERVER_NAME'] == "10.0.1.154" || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || !$_SERVER['SERVER_NAME'];
-}
+
function isAnalyticsOn()
{
return !isDebugServer();
--- a/include/db/route-dao.inc.php
+++ b/include/db/route-dao.inc.php
@@ -14,6 +14,21 @@
return $query->fetch(PDO::FETCH_ASSOC);
}
+function getRouteByFullName($routeFullName)
+{
+ global $conn;
+ $query = "Select * from routes where route_short_name||route_long_name = :routeFullName LIMIT 1";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":routeFullName", $routeFullName);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ return $query->fetch(PDO::FETCH_ASSOC);
+}
+
function getRoutes()
{
global $conn;
@@ -32,7 +47,8 @@
global $conn;
if ($routeNumber != "") {
$query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id =
-routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where route_short_name = :routeNumber order by route_short_name;";
+routes.route_id join stop_times on stop_times.trip_id = trips.trip_id
+where route_short_name = :routeNumber OR route_short_name LIKE :routeNumber2 order by route_short_name;";
}
else {
$query = "SELECT DISTINCT route_short_name from routes order by route_short_name";
@@ -41,6 +57,8 @@
$query = $conn->prepare($query);
if ($routeNumber != "") {
$query->bindParam(":routeNumber", $routeNumber);
+ $routeNumber2 = "% ".$routeNumber;
+ $query->bindParam(":routeNumber2", $routeNumber2);
}
$query->execute();
if (!$query) {
--- a/include/db/servicealert-dao.inc.php
+++ b/include/db/servicealert-dao.inc.php
@@ -1,10 +1,10 @@
<?php
-function getServiceOverride() {
+function getServiceOverride($date="") {
global $conn;
$query = "Select * from calendar_dates where date = :date and exception_type = '1' LIMIT 1";
- debug($query,"database");
+ // debug($query,"database");
$query = $conn->prepare($query); // Create a prepared statement
- $query->bindParam(":date", date("Ymd"));
+ $query->bindParam(":date", date("Ymd",($date != "" ? $date : time())));
$query->execute();
if (!$query) {
databaseError($conn->errorInfo());
@@ -12,4 +12,42 @@
}
return $query->fetch(PDO::FETCH_ASSOC);
}
+
+function getCurrentAlerts() {
+ global $conn;
+ $query = "SELECT * from servicealerts_alerts";
+ //debug($query, "database");
+ $query = $conn->prepare($qu