--- a/include/db/route-dao.inc.php +++ b/include/db/route-dao.inc.php @@ -40,23 +40,49 @@ } function getRouteNextTrip($routeID) { - global $conn; + global $conn; $query = "select * from routes join trips on trips.route_id = routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where -arrival_time > CURRENT_TIME and routes.route_id = '$routeID' order by +arrival_time > '".current_time()."' and routes.route_id = '$routeID' order by arrival_time limit 1"; debug($query,"database"); $result = pg_query($conn, $query); - if (!$result) { + if (!$result) { databaseError(pg_result_error($result)); return Array(); } - return pg_fetch_assoc($result); + $r = pg_fetch_assoc($result); + // past last trip of the day special case + if (sizeof($r) == 0) { + $query = "select * from routes join trips on trips.route_id = routes.route_id +join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = '$routeID' order by +arrival_time DESC limit 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; } + + function getTimeInterpolatedRouteAtStop($routeID, $stop_id) +{ + $nextTrip = getRouteNextTrip($routeID); + if ($nextTrip['trip_id']){ + foreach (getTimeInterpolatedTrip($nextTrip['trip_id']) as $tripStop) { + if ($tripStop['stop_id'] == $stop_id) return $tripStop; + } + } + return Array(); +} + function getRouteTrips($routeID) { global $conn; - $query = "select * from routes join trips on trips.route_id = routes.route_id -join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = '$routeID' order by + $query = "select routes.route_id,trips.trip_id,service_id,arrival_time, stop_id, stop_sequence from routes join trips on trips.route_id = routes.route_id +join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = '$routeID' and stop_sequence = '1' order by arrival_time "; debug($query,"database"); $result = pg_query($conn, $query); @@ -112,7 +138,7 @@ if ($service_period == "") $service_period = service_period(); if ($limit != "") $limit = " LIMIT $limit "; global $conn; - $query = "SELECT service_id,trips.route_id,route_short_name,route_long_name, + $query = "SELECT service_id,trips.route_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id, min(ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE)) as distance FROM stop_times join trips on trips.trip_id = stop_times.trip_id