--- a/include/db/trip-dao.inc.php
+++ b/include/db/trip-dao.inc.php
@@ -1,109 +1,147 @@
$stopTime) {
+ if ($stopTime['arrival_time'] != "") {
+ // is timepoint
+ $cur_timepoint = $stopTime;
+ $distance_between_timepoints = 0.0;
+ $distance_traveled_between_timepoints = 0.0;
+ if ($i + 1 < sizeof($stopTimes)) {
+ $k = $i + 1;
+ $distance_between_timepoints += distance($stopTimes[$k - 1]["stop_lat"], $stopTimes[$k - 1]["stop_lon"], $stopTimes[$k]["stop_lat"], $stopTimes[$k]["stop_lon"]);
+ while ($stopTimes[$k]["arrival_time"] == "" && $k + 1 < sizeof($stopTimes)) {
+ $k += 1;
+ //echo "k".$k;
+ $distance_between_timepoints += distance($stopTimes[$k - 1]["stop_lat"], $stopTimes[$k - 1]["stop_lon"], $stopTimes[$k]["stop_lat"], $stopTimes[$k]["stop_lon"]);
+ }
+ $next_timepoint = $stopTimes[$k];
+ $rv[] = $stopTime;
+ }
+ }
+ else {
+ // is untimed point
+ //echo "i".$i;
+ $distance_traveled_between_timepoints += distance($stopTimes[$i - 1]["stop_lat"], $stopTimes[$i - 1]["stop_lon"], $stopTimes[$i]["stop_lat"], $stopTimes[$i]["stop_lon"]);
+ //echo "$distance_traveled_between_timepoints / $distance_between_timepoints
";
+ $distance_percent = $distance_traveled_between_timepoints / $distance_between_timepoints;
+ if ($next_timepoint["arrival_time"] != "") {
+ $total_time = strtotime($next_timepoint["arrival_time"]) - strtotime($cur_timepoint["arrival_time"]);
+ //echo strtotime($next_timepoint["arrival_time"])." - ".strtotime($cur_timepoint["arrival_time"])."
";
+ $time_estimate = ($distance_percent * $total_time) + strtotime($cur_timepoint["arrival_time"]);
+ $stopTime["arrival_time"] = date("H:i:s", $time_estimate);
+ } else {
+ $stopTime["arrival_time"] = $cur_timepoint["arrival_time"];
+ }
+ $rv[] = $stopTime;
+ //var_dump($rv);
+ }
+ }
+ return $rv;
}
-
-function getTripStartTime($tripID) {
- $query = 'SELECT arrival_secs,departure_secs FROM stop_times WHERE trip_id=? ORDER BY stop_sequence LIMIT 1';
-
+function getTimeInterpolatedTripAtStop($tripID, $stop_sequence, $stop_id = "")
+{
+ foreach (getTimeInterpolatedTrip($tripID) as $tripStop) {
+ if ($tripStop['stop_sequence'] == $stop_sequence) return $tripStop;
+ if ($tripStop['stop_id'] == $stop_id) return $tripStop;
+ }
+ return Array();
}
-
-function viaPointNames($tripid, $stopid)
+function getTripStartTime($tripID)
{
- global $conn;
- $query = "SELECT stop_name
+ global $conn;
+ $query = "Select * from stop_times
+ where trip_id = '$tripID'
+ AND arrival_time IS NOT NULL
+ AND stop_sequence = '1'";
+ debug($query, "database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ $r = pg_fetch_assoc($result);
+ return $r['arrival_time'];
+}
+function viaPointNames($tripid, $stop_sequence = "")
+{
+ global $conn;
+ $query = "SELECT stop_name
FROM stop_times join stops on stops.stop_id = stop_times.stop_id
WHERE stop_times.trip_id = '$tripid'
-AND stop_sequence > '$stop_sequence'
-AND substr(stop_code,1,2) != 'Wj' ORDER BY stop_sequence";
- debug($query,"database");
+".($stop_sequence != "" ? "AND stop_sequence > '$stop_sequence'" : "").
+"AND substr(stop_code,1,2) != 'Wj' ORDER BY stop_sequence";
+ debug($query, "database");
$result = pg_query($conn, $query);
if (!$result) {
databaseError(pg_result_error($result));