From: maxious Date: Thu, 10 Mar 2011 03:04:28 +0000 Subject: Fix view.sh startup location X-Git-Url: http://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=05e2c43dd775838abc5097b01528cccd6978014a --- Fix view.sh startup location --- --- a/common-template.inc.php +++ b/common-template.inc.php @@ -122,7 +122,7 @@ or enter an address/co-ordinates in the box below.'; } echo '
-

Change Time/Place...

+

Change Time/Place (' . $_SESSION['time'] . ' '.ucwords(service_period()).')...

--- a/common.inc.php +++ b/common.inc.php @@ -9,7 +9,8 @@ $debugOkay = Array( "session", "json", - "phperror" + "phperror", + "other" ); if (isDebug("phperror")) error_reporting(E_ALL ^ E_NOTICE); include_once ("common-geo.inc.php"); @@ -25,13 +26,22 @@ $_SESSION['time'] = filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING); } if (isset($_REQUEST['geolocate'])) { + $geocoded = false; if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) { - $_SESSION['lat'] = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); - $_SESSION['lon'] = filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); + $_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 { - $contents = geocode(filter_var($_REQUEST['geolocate'], FILTER_SANITIZE_URL) , true); + $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]; @@ -40,6 +50,7 @@ else { $_SESSION['lat'] = ""; $_SESSION['lon'] = ""; + } } } if ($_SESSION['lat'] != "" && isMetricsOn()) { --- a/layar_api.php +++ b/layar_api.php @@ -9,7 +9,6 @@ $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); -if (isset($_REQUEST['radius'])) $radius = filter_var($_REQUEST['radius'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); $url = $APIurl . "/json/neareststops?lat=$lat&lon=$lon&limit=50"; $contents = json_decode(getPage($url)); debug(print_r($contents, true)); @@ -24,24 +23,22 @@ $hotspot['lat'] = floor($row[2] * 1000000); $hotspot['lon'] = floor($row[3] * 1000000); $hotspot['distance'] = distance($row[2], $row[3], $_REQUEST['lat'], $_REQUEST['lon']); - if (!isset($_REQUEST['radius']) || $hotspot['distance'] < $radius) { - $hotspot['actions'] = Array( - Array( - "label" => 'View more trips/information', - 'uri' => 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $row[0] - ) - ); - $url = $APIurl . "/json/stoptrips?stop=" . $row[0] . "&time=" . midnight_seconds() . "&service_period=" . service_period() . "&limit=4&time_range=" . str(90 * 60); - $trips = json_decode(getPage($url)); - debug(print_r($trips, true)); - foreach ($trips as $key => $row) { - if ($key < 3) { - $hotspot['line' . strval($key + 2) ] = $row[1][1] . ' @ ' . midnight_seconds_to_time($row[0]); - } + $hotspot['actions'] = Array( + Array( + "label" => 'View more trips/information', + 'uri' => 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $row[0] + ) + ); + $url = $APIurl . "/json/stoptrips?stop=" . $row[0] . "&time=" . midnight_seconds() . "&service_period=" . service_period() . "&limit=4&time_range=" . strval(90 * 60); + $trips = json_decode(getPage($url)); + debug(print_r($trips, true)); + foreach ($trips as $key => $row) { + if ($key < 3) { + $hotspot['line' . strval($key + 2) ] = $row[1][1] . ' @ ' . midnight_seconds_to_time($row[0]); } - if (sizeof($trips) == 0) $hotspot['line2'] = 'No trips in the near future.'; - $output['hotspots'][] = $hotspot; } + if (sizeof($trips) == 0) $hotspot['line2'] = 'No trips in the near future.'; + $output['hotspots'][] = $hotspot; } } if (sizeof($hotspot) > 0) { --- a/myway_api.json.php +++ b/myway_api.json.php @@ -72,6 +72,7 @@ //close connection curl_close($ch); } + if (!isset($return['error'])) { include_once ('simple_html_dom.php'); $page = str_get_html($pageHTML); @@ -97,7 +98,8 @@ foreach ($table->find("tr") as $tr) { $tableColumnNum = 0; foreach ($tr->find("td") as $td) { - $return[$tableName[$tableNum]][$tableRowNum][$tableColumns[$tableColumnNum]] = cleanString($td->plaintext); + if ($tableNum == 1) $return[$tableName[$tableNum]][$tableColumns[$tableColumnNum]] = cleanString($td->plaintext); + else $return[$tableName[$tableNum]][$tableRowNum][$tableColumns[$tableColumnNum]] = cleanString($td->plaintext); $tableColumnNum++; } $tableRowNum++; @@ -107,8 +109,8 @@ } if (sizeof($return) == 0) { $return['error'][] = "No data extracted from MyWay website - API may be out of date"; -print $pageHTML; } + header('Content-Type: text/javascript; charset=utf8'); // header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/'); header('Access-Control-Max-Age: 3628800'); --- /dev/null +++ b/mywaybalance.php @@ -1,1 +1,63 @@ - +" . var_dump($return['error']) . ""; + } else { + echo "

Balance: " . $return['myway_carddetails']['Card Balance'] . "

"; + echo '
  • Recent Transactions
  • '; + foreach ($return['myway_transactions'] as $transaction) { + echo "
  • " . $transaction["Date / Time"] . ""; + echo "
    " . $transaction["TX Reference No / Type"]. ""; + echo '

    '.$transaction["TX Amount"].'

    '; + echo "
  • "; + } + echo "
"; + } +} +if (isset($_REQUEST['card_number']) && isset($_REQUEST['date']) && isset($_REQUEST['secret_answer'])) { + $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; + } + printBalance($cardNumber, $date, $pwrd); +} +else if (isset($_COOKIE['card_number']) && isset($_COOKIE['date']) && isset($_COOKIE['secret_answer'])) { + $cardNumber = $_COOKIE['card_number']; + $date = explode("/", $_COOKIE['date']); + $pwrd = $_COOKIE['secret_answer']; + printBalance($cardNumber, $date, $pwrd); +} +else { + $date = (isset($_REQUEST['date']) ? filter_var($_REQUEST['date'], FILTER_SANITIZE_STRING) : date("m/d/Y")); + echo ' +
+ + +
+
+ + +
+
+ + +
+
+ + +
+ '; +} +include_footer(); +?> --- a/schedule_viewer.py +++ b/schedule_viewer.py @@ -349,14 +349,56 @@ points.append((stop.stop_lat, stop.stop_lon)) return points +# +# GeoPo Encode in Python +# @author : Shintaro Inagaki +# @param location (Dictionary) [lat (Float), lng (Float), scale(Int)] +# @return geopo (String) +# + def handle_json_GET_neareststops(self, params): """Return a list of the nearest 'limit' stops to 'lat', 'lon'""" schedule = self.server.schedule lat = float(params.get('lat')) lon = float(params.get('lon')) - limit = int(params.get('limit')) - stops = schedule.GetNearestStops(lat=lat, lon=lon, n=limit) - return [StopToTuple(s) for s in stops] + limit = int(params.get('limit',5)) + scale = int(params.get('scale',5)) # 5 = neighbourhood ~ 1km, 4= town 5 by 7km + stops = [] + + # 64characters (number + big and small letter + hyphen + underscore) + chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_" + + geopo = "" + + # Change a degree measure to a decimal number + lat = (lat + 90.0) / 180 * 8 ** 10 # 90.0 is forced FLOAT type when lat is INT + lon = (lon + 180.0) / 360 * 8 ** 10 # 180.0 is same + + # Compute a GeoPo code from head and concatenate + for i in range(scale): + order = int(lat / (8 ** (9 - i)) % 8) + int(lon / (8 ** (9 - i)) % 8) * 8 + geopo = geopo + chars[order] + + + for s in schedule.GetStopList(): + if s.stop_code.find(geopo) != -1: + stops.append(s) + + if scale == 5: + print stops + return [StopToTuple(s) for s in stops] + else: + dist_stop_list = [] + for s in stops: + # TODO: Use util.ApproximateDistanceBetweenStops? + dist = (s.stop_lat - lat)**2 + (s.stop_lon - lon)**2 + if len(dist_stop_list) < limit: + bisect.insort(dist_stop_list, (dist, s)) + elif dist < dist_stop_list[-1][0]: + bisect.insort(dist_stop_list, (dist, s)) + dist_stop_list.pop() # Remove stop with greatest distance + print dist_stop_list + return [StopToTuple(s) for dist, s in dist_stop_list] def handle_json_GET_boundboxstops(self, params): """Return a list of up to 'limit' stops within bounding box with 'n','e' @@ -476,7 +518,7 @@ requested_time = int(params.get('time', 0)) limit = int(params.get('limit', 15)) service_period = params.get('service_period', None) - time_range = params.get('time_range', 24*60*60) + time_range = int(params.get('time_range', 24*60*60)) filtered_time_trips = [] --- a/view.sh +++ b/view.sh @@ -1,3 +1,6 @@ -python schedule_viewer.py --feed=/var/www/cbrfeed.zip \ + #!/bin/sh + f=`dirname $0` + cd $f + python schedule_viewer.py --feed=/var/www/cbrfeed.zip \ --key=ABQIAAAA95XYXN0cki3Yj_Sb71CFvBTPaLd08ONybQDjcH_VdYtHHLgZvRTw2INzI_m17_IoOUqH3RNNmlTk1Q