"; + foreach ($stops as $key => $sub_stop) { + + $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) { + $tripSequence.= "{$trip['trip_id']},"; + $tripStopNumbers[$trip['trip_id']][] = $key; + } + 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 '
' . 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) {
- $trips = $allStopsTrips;
-}
-else {
- $url = $APIurl . "/json/stoptrips?stop=" . $stopid . "&time=" . midnight_seconds() . "&service_period=" . service_period();
- $trips = json_decode(getPage($url));
-}
-foreach ($trips as $row) {
- echo '
- ';
- echo '
' . $row[1][1]; - $viaPoints = viaPointNames($row[1][0], $stopid); - if ($viaPoints != "") echo '
Via: ' . $viaPoints . ''; - if (sizeof($tripStopNumbers) > 0) { - echo '
Boarding At: '; - foreach ($tripStopNumbers[$row[1][0]] as $key) { - echo $stopNames[$key] .' '; + sktimesort($allStopsTrips, "arrival_time", true); + $trips = $allStopsTrips; +} else { + $trips = getStopTripsWithTimes($stopid, "", "", "", (isset($filterIncludeRoutes) || isset($filterHasStop) ? "75" : "")); +} + +echo ""; +// if we have too many trips, cut down to size. +if (!isset($filterIncludeRoutes) && !isset($filterHasStop) && sizeof($trips) > 10) { + $trips = array_splice($trips, 0, 10); +} + +// later/earlier button setup +if (sizeof($trips) == 0) { + $time = isset($_REQUEST['time']) ? strtotime($_REQUEST['time']) : time(); + $earlierTime = $time - (90 * 60); + $laterTime = $time + (90 * 60); +} else { + $tripsKeys = array_keys($trips); + $earlierTime = strtotime($trips[$tripsKeys[0]]['arrival_time']) - (90 * 60); + $laterTime = strtotime($trips[$tripsKeys[sizeof($trips) - 1]]['arrival_time']) - 60; +} +if (isset($stopids) && sizeof($stopids) > 0) { + $stopidurl = "stopids=" . implode(",", $stopids); +} else { + $stopidurl = "stopid=$stopid"; +} +if (sizeof($trips) >= 10) { + echo 'Later Trips'; +} +echo 'Earlier Trips'; +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 '
'; + if ($viaPoints != "") + 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']] . ''; } - 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 ' -
No trips in the near future. ";
-echo '
' . midnight_seconds_to_time($row[0]) . '
'; - echo ''; -} -if (sizeof($trips) == 0) echo "