--- a/stop.php
+++ b/stop.php
@@ -1,90 +1,207 @@
";
foreach ($stops as $key => $sub_stop) {
- $stopLinks .= ''.$sub_stop[1].' Stop #'.($key+1).' ';
- $stopPositions[$key] = Array($sub_stop[2],$sub_stop[3]);
- $url = $APIurl . "/json/stoptrips?stop=" . $sub_stop[0] . "&time=" . midnight_seconds() . "&service_period=" . service_period();
- $trips = json_decode(getPage($url));
+
+ $stopNames[$key] = $sub_stop["stop_name"];
+ $stopLinks.= '' . $sub_stop["stop_name"] . ' ';
+
+ $stopPositions[$key] = Array(
+ $sub_stop["stop_lat"],
+ $sub_stop["stop_lon"]
+ );
+ $trips = getStopTrips($sub_stop["stop_id"]);
+ $tripSequence = "";
foreach ($trips as $trip) {
- if (!isset($allStopTrips[$row[1][0]])) $allStopTrips[$row[1][0]] = $trip;
- $tripStopNumbers[$row[1][0]][] = $key;
+ $tripSequence.= "{$trip['trip_id']},";
+ $tripStopNumbers[$trip['trip_id']][] = $key;
}
- }
-}
-
-include_header($stop[1], "stop");
-
-if (isMetricsOn()) {
- // Create a new Instance of the tracker
- $owa = new owa_php();
- // Set the ID of the site being tracked
- $owa->setSiteId($owaSiteID);
- // Create a new event object
- $event = $owa->makeEvent();
- // Set the Event Type, in this case a "video_play"
- $event->setEventType('view_stop');
- // Set a property
- $event->set('stop_id', $stopid);
- // Track the event
- $owa->trackEvent($event);
-}
-timePlaceSettings();
-echo '
';
+ if (!in_array($tripSequence, $fetchedTripSequences)) {
+ // only fetch new trip sequences
+ $fetchedTripSequences[] = $tripSequence;
+ $trips = getStopTripsWithTimes($sub_stop["stop_id"]);
+ foreach ($trips as $trip) {
+ if (!isset($allStopsTrips[$trip["trip_id"]]))
+ $allStopsTrips[$trip["trip_id"]] = $trip;
+ }
+ }
+ //else {
+ // echo "skipped sequence $tripSequence";
+ //}
+ }
+}
+if (sizeof($stops) > 0) {
+ $stopDescParts = explode("
", $stop['stop_desc']);
+ include_header(trim(str_replace("Street: ", "", $stopDescParts[0])), "stop");
+} else {
+ include_header($stop['stop_name'], "stop");
+}
+/* $serviceAlerts = json_decode(getPage(curPageURL() . "/servicealerts_api.php?filter_class=stop&filter_id=".$stopid) , true);
+
+ foreach($serviceAlerts['entities'] as $serviceAlert) {
+ echo '
'.$serviceAlert['alert']['description']['translation'].'
';
+ } */
+
+echo '
';
echo $stopLinks;
if (sizeof($stops) > 0) {
- echo '
' . staticmap($stopPositions) . '
';
-} else {
- echo '
' . staticmap(Array(
- 0 => Array(
- $stop[2],
- $stop[3]
- )
-)) . '
';
-}
+ trackEvent("View Stops", "View Combined Stops", $stop["stop_name"], $stop["stop_id"]);
+ echo staticmap($stopPositions);
+} else {
+ trackEvent("View Stops", "View Single Stop", $stop["stop_name"], $stop["stop_id"]);
+ echo staticmap(Array(
+ 0 => Array(
+ $stop["stop_lat"],
+ $stop["stop_lon"]
+ )
+ ));
+}
+
+timeSettings();
+
+echo '
';
+if (sizeof($allStopsTrips) > 0) {
+ sktimesort($allStopsTrips, "arrival_time", true);
+ $trips = $allStopsTrips;
+} else {
+ $trips = getStopTripsWithTimes($stopid, "", "", "", (isset($filterIncludeRoutes) || isset($filterHasStop) ? "75" : ""));
+}
+
+echo "";
+if (sizeof($trips) == 0) {
+ echo "
No trips in the near future.";
+} else {
+ if (isset($labs)) {
+// ETA calculation
+
+ $tripETA = Array();
+ // max/min delay instead of stddev?
+ $query = $query = "select 'lol', avg(timing_delta), stddev(timing_delta), count(*) from myway_timingdeltas where extract(hour from time) between ".date("H", $earlierTime)." and ".date("H", $laterTime);
+ //select 'lol', stop_id,extract(hour from time), avg(timing_delta), stddev(timing_delta), count(*) from myway_timingdeltas where stop_id = '5501' group by stop_id, extract(hour from time) order by extract(hour from time)
+ $query = $conn->prepare($query);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ $ETAparams = Array();
+ foreach ($query->fetchAll() as $row) {
+ $ETAparams[$row[0]] = Array("avg"=> $row[1], "stddev"=>floor($row[2]),"count"=>$row[3]);
+ };
+ //print_r($ETAparams);
+ foreach ($trips as $trip) {
+ $tripETA[$trip['trip_id']] = date("H:i",strtotime($trip['arrival_time']." - ".(floor($ETAparams['lol']['stddev']))." seconds"))." to ".
+ date("H:i",strtotime($trip['arrival_time']." + ".(floor($ETAparams['lol']['stddev']))." seconds"));
+ }
+ //print_r($tripETA);
+}
+ foreach ($trips as $trip) {
+ if (
+ isset($filterHasStop) && (getTripHasStop($trip['trip_id'], $filterHasStop) == 1)
+ || (isset($filterIncludeRoutes) && in_array($trip["route_short_name"], $filterIncludeRoutes))
+ || (!isset($filterIncludeRoutes) && !isset($filterHasStop))
+ ) {
+ echo '
';
+
+ $destination = getTripDestination($trip['trip_id']);
+ echo '' . $trip['route_short_name'] . " towards " . $destination['stop_name'] . "
";
+ $viaPoints = viaPointNames($trip['trip_id'], $trip['stop_sequence']);
+if (isset($labs)) {
+ echo '
ETA: ' . $tripETA[$trip['trip_id']] . '';
+ }
+ if ($viaPoints != "")
+ echo '
Via: ' . $viaPoints . '';
+ if (sizeof($tripStopNumbers) > 0) {
+ echo '
Boarding At: ';
+ if (sizeof($tripStopNumbers[$trip['trip_id']]) == sizeof($stopids)) {
+ echo "All Stops";
+ } else {
+ foreach ($tripStopNumbers[$trip['trip_id']] as $key) {
+ echo $stopNames[$key] . ', ';
+ }
+ }
+ echo '';
+ }
+ echo '
';
+ echo '' . $trip['arrival_time'] . '
';
+ echo '';
+ flush();
+ @ob_flush();
+ }
+ }
+}
+echo '';
+echo '
';
include_footer();
?>