<?php |
<?php |
|
|
/* |
/* |
* Copyright 2010,2011 Alexander Sadleir |
* Copyright 2010,2011 Alexander Sadleir |
|
|
Licensed under the Apache License, Version 2.0 (the "License"); |
Licensed under the Apache License, Version 2.0 (the "License"); |
you may not use this file except in compliance with the License. |
you may not use this file except in compliance with the License. |
You may obtain a copy of the License at |
You may obtain a copy of the License at |
|
|
http://www.apache.org/licenses/LICENSE-2.0 |
http://www.apache.org/licenses/LICENSE-2.0 |
|
|
Unless required by applicable law or agreed to in writing, software |
Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, |
distributed under the License is distributed on an "AS IS" BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and |
See the License for the specific language governing permissions and |
limitations under the License. |
limitations under the License. |
*/ |
*/ |
include ('include/common.inc.php'); |
include ('include/common.inc.php'); |
if ($stopid) |
if (isset($stopid)) { |
$stop = getStop($stopid); |
$stop = getStop($stopid); |
|
} |
/* if ($stopcode != "" && $stop[5] != $stopcode) { |
/* if ($stopcode != "" && $stop[5] != $stopcode) { |
$url = $APIurl . "/json/stopcodesearch?q=" . $stopcode; |
$url = $APIurl . "/json/stopcodesearch?q=" . $stopcode; |
$stopsearch = json_decode(getPage($url)); |
$stopsearch = json_decode(getPage($url)); |
$stopid = $stopsearch[0][0]; |
$stopid = $stopsearch[0][0]; |
$url = $APIurl . "/json/stop?stop_id=" . $stopid; |
$url = $APIurl . "/json/stop?stop_id=" . $stopid; |
$stop = json_decode(getPage($url)); |
$stop = json_decode(getPage($url)); |
} |
} |
if (!startsWith($stop[5], "Wj") && strpos($stop[1], "Platform") === false) { |
if (!startsWith($stop[5], "Wj") && strpos($stop[1], "Platform") === false) { |
// expand out to all platforms |
// expand out to all platforms |
|
|
} */ |
} */ |
|
|
$stops = Array(); |
$stops = Array(); |
$stopPositions = Array(); |
$stopPositions = Array(); |
$stopNames = Array(); |
$stopNames = Array(); |
$tripStopNumbers = Array(); |
$tripStopNumbers = Array(); |
$allStopsTrips = Array(); |
$allStopsTrips = Array(); |
$fetchedTripSequences = Array(); |
$fetchedTripSequences = Array(); |
$stopLinks = ""; |
$stopLinks = ""; |
if (isset($stopids)) { |
if (isset($stopids)) { |
foreach ($stopids as $sub_stopid) { |
foreach ($stopids as $sub_stopid) { |
$stops[] = getStop($sub_stopid); |
$stops[] = getStop($sub_stopid); |
} |
} |
$stop = $stops[0]; |
$stop = $stops[0]; |
$stopid = $stops[0]["stop_id"]; |
$stopid = $stops[0]["stop_id"]; |
$stopLinks.= "Individual stop pages: <br>"; |
$stopLinks.= "Individual stop pages: <br>"; |
foreach ($stops as $key => $sub_stop) { |
foreach ($stops as $key => $sub_stop) { |
|
|
$stopNames[$key] = $sub_stop["stop_name"]; |
$stopNames[$key] = $sub_stop["stop_name"]; |
$stopLinks.= '<a href="stop.php?stopid=' . $sub_stop["stop_id"] . '&stopcode=' . $sub_stop["stop_code"] . '">' . $sub_stop["stop_name"] . '</a> '; |
$stopLinks.= '<a href="stop.php?stopid=' . $sub_stop["stop_id"] . '&stopcode=' . $sub_stop["stop_code"] . '">' . $sub_stop["stop_name"] . '</a> '; |
|
|
$stopPositions[$key] = Array( |
$stopPositions[$key] = Array( |
$sub_stop["stop_lat"], |
$sub_stop["stop_lat"], |
$sub_stop["stop_lon"] |
$sub_stop["stop_lon"] |
); |
); |
$trips = getStopTrips($sub_stop["stop_id"]); |
$trips = getStopTrips($sub_stop["stop_id"]); |
$tripSequence = ""; |
$tripSequence = ""; |
foreach ($trips as $trip) { |
foreach ($trips as $trip) { |
$tripSequence.= "{$trip['trip_id']},"; |
$tripSequence.= "{$trip['trip_id']},"; |
$tripStopNumbers[$trip['trip_id']][] = $key; |
$tripStopNumbers[$trip['trip_id']][] = $key; |
} |
} |
if (!in_array($tripSequence, $fetchedTripSequences)) { |
if (!in_array($tripSequence, $fetchedTripSequences)) { |
// only fetch new trip sequences |
// only fetch new trip sequences |
$fetchedTripSequences[] = $tripSequence; |
$fetchedTripSequences[] = $tripSequence; |
$trips = getStopTripsWithTimes($sub_stop["stop_id"]); |
$trips = getStopTripsWithTimes($sub_stop["stop_id"]); |
foreach ($trips as $trip) { |
foreach ($trips as $trip) { |
if (!isset($allStopsTrips[$trip["trip_id"]])) |
if (!isset($allStopsTrips[$trip["trip_id"]])) |
$allStopsTrips[$trip["trip_id"]] = $trip; |
$allStopsTrips[$trip["trip_id"]] = $trip; |
} |
} |
} |
} |
//else { |
//else { |
// echo "skipped sequence $tripSequence"; |
// echo "skipped sequence $tripSequence"; |
//} |
//} |
} |
} |
} |
} |
include_header($stop['stop_name'], "stop"); |
if (sizeof($stops) > 0) { |
|
$stopDescParts = explode("<br>", $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); |
/* $serviceAlerts = json_decode(getPage(curPageURL() . "/servicealerts_api.php?filter_class=stop&filter_id=".$stopid) , true); |
|
|
foreach($serviceAlerts['entities'] as $serviceAlert) { |
foreach($serviceAlerts['entities'] as $serviceAlert) { |
echo '<div id="servicewarning">'.$serviceAlert['alert']['description']['translation'].'</div>'; |
echo '<div id="servicewarning">'.$serviceAlert['alert']['description']['translation'].'</div>'; |
} */ |
} */ |
|
|
echo '<span class="content-secondary">'; |
echo '<div class="content-secondary">'; |
echo $stopLinks; |
echo $stopLinks; |
if (sizeof($stops) > 0) { |
if (sizeof($stops) > 0) { |
trackEvent("View Stops", "View Combined Stops", $stop["stop_name"], $stop["stop_id"]); |
trackEvent("View Stops", "View Combined Stops", $stop["stop_name"], $stop["stop_id"]); |
echo staticmap($stopPositions); |
echo staticmap($stopPositions); |
} else { |
} else { |
trackEvent("View Stops", "View Single Stop", $stop["stop_name"], $stop["stop_id"]); |
trackEvent("View Stops", "View Single Stop", $stop["stop_name"], $stop["stop_id"]); |
echo staticmap(Array( |
echo staticmap(Array( |
0 => Array( |
0 => Array( |
$stop["stop_lat"], |
$stop["stop_lat"], |
$stop["stop_lon"] |
$stop["stop_lon"] |
) |
) |
)); |
)); |
} |
} |
|
|
// time settings |
timeSettings(); |
echo '<div id="settings" data-role="collapsible" data-collapsed="true"> |
|
<h3>Change Time (' . (isset($_SESSION['time']) ? $_SESSION['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3> |
echo '</div><div class="content-primary">'; |
<form action="' . basename($_SERVER['PHP_SELF']) . "?" . $_SERVER['QUERY_STRING'] . '" method="post"> |
|
<div class="ui-body"> |
|
<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> |
|
</div>'; |
|
|
|
echo '</span><span class="content-primary">'; |
|
echo ' <ul data-role="listview" data-inset="true">'; |
echo ' <ul data-role="listview" data-inset="true">'; |
if (sizeof($allStopsTrips) > 0) { |
if (sizeof($allStopsTrips) > 0) { |
sktimesort($allStopsTrips, "arrival_time", true); |
sktimesort($allStopsTrips, "arrival_time", true); |
$trips = $allStopsTrips; |
$trips = $allStopsTrips; |
} else { |
} else { |
$trips = getStopTripsWithTimes($stopid); |
$trips = getStopTripsWithTimes($stopid, "", "", "", (isset($filterIncludeRoutes) || isset($filterHasStop) ? "75" : "")); |
} |
} |
|
|
|
echo "<div class='ui-header' style='overflow: visible; height: 2.5em'>"; |
|
// 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 '<a href="stop.php?' . $stopidurl . '&service_period=' . service_period() . '&time=' . date("H:i", $laterTime) . '" data-icon="arrow-r" class="ui-btn-right">Later Trips</a>'; |
|
} |
|
echo '<a href="stop.php?' . $stopidurl . '&service_period=' . service_period() . '&time=' . date("H:i", $earlierTime) . '" data-icon="arrow-l" class="ui-btn-left">Earlier Trips</a>'; |
|
echo "</div>"; |
if (sizeof($trips) == 0) { |
if (sizeof($trips) == 0) { |
echo "<li style='text-align: center;'>No trips in the near future.</li>"; |
echo "<li style='text-align: center;'>No trips in the near future.</li>"; |
} else { |
} 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) { |
foreach ($trips as $trip) { |
echo '<li>'; |
$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")); |
$destination = getTripDestination($trip['trip_id']); |
} |
echo '<a href="trip.php?stopid=' . $stopid . '&tripid=' . $trip['trip_id'] . '"><h3>' . $trip['route_short_name'] . " towards " . $destination['stop_name'] . "</h3><p>"; |
//print_r($tripETA); |
$viaPoints = viaPointNames($trip['trip_id'], $trip['stop_sequence']); |
} |
if ($viaPoints != "") |
foreach ($trips as $trip) { |
echo '<br><span class="viaPoints">Via: ' . $viaPoints . '</span>'; |
if ( |
if (sizeof($tripStopNumbers) > 0) { |
isset($filterHasStop) && (getTripHasStop($trip['trip_id'], $filterHasStop) == 1) |
echo '<br><small>Boarding At: '; |
|| (isset($filterIncludeRoutes) && in_array($trip["route_short_name"], $filterIncludeRoutes)) |
if (sizeof($tripStopNumbers[$trip['trip_id']]) == sizeof($stopids)) { |
|| (!isset($filterIncludeRoutes) && !isset($filterHasStop)) |
echo "All Stops"; |
) { |
} else { |
echo '<li>'; |
foreach ($tripStopNumbers[$trip['trip_id']] as $key) { |
|
echo $stopNames[$key] . ', '; |
$destination = getTripDestination($trip['trip_id']); |
|
echo '<a href="trip.php?stopid=' . $stopid . '&tripid=' . $trip['trip_id'] . '"><h3>' . $trip['route_short_name'] . " towards " . $destination['stop_name'] . "</h3><p>"; |
|
$viaPoints = viaPointNames($trip['trip_id'], $trip['stop_sequence']); |
|
if (isset($labs)) { |
|
echo '<br><span class="eta">ETA: ' . $tripETA[$trip['trip_id']] . '</span>'; |
|
} |
|
if ($viaPoints != "") |
|
echo '<br><span class="viaPoints">Via: ' . $viaPoints . '</span>'; |
|
if (sizeof($tripStopNumbers) > 0) { |
|
echo '<br><small>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 '</small>'; |
} |
} |
echo '</small>'; |
echo '</p>'; |
|
echo '<p class="ui-li-aside"><strong>' . $trip['arrival_time'] . '</strong></p>'; |
|
echo '</a></li>'; |
|
flush(); |
|
@ob_flush(); |
} |
} |
echo '</p>'; |
|
echo '<p class="ui-li-aside"><strong>' . $trip['arrival_time'] . '</strong></p>'; |
|
echo '</a></li>'; |
|
flush(); |
|
@ob_flush(); |
|
} |
} |
} |
} |
echo '</ul>'; |
echo '</ul>'; |
echo '</span>'; |
echo '</div>'; |
include_footer(); |
include_footer(); |
?> |
?> |
|
|