Refactor to use PostGIS database instead of gtfs tools
[busui.git] / include / db / trip-dao.inc.php
blob:a/include/db/trip-dao.inc.php -> blob:b/include/db/trip-dao.inc.php
--- a/include/db/trip-dao.inc.php
+++ b/include/db/trip-dao.inc.php
@@ -1,1 +1,132 @@
+<?php
+function getTrip($tripID) {
+    /* def handle_json_GET_triprows(self, params):
+    """Return a list of rows from the feed file that are related to this
+    trip."""
+    schedule = self.server.schedule
+    try:
+      trip = schedule.GetTrip(params.get('trip', None))
+    except KeyError:
+      # if a non-existent trip is searched for, the return nothing
+      return
+    route = schedule.GetRoute(trip.route_id)
+    trip_row = dict(trip.iteritems())
+    route_row = dict(route.iteritems())
+    return [['trips.txt', trip_row], ['routes.txt', route_row]]
+    */
+}
+function getTripShape() {
+    /* def handle_json_GET_tripstoptimes(self, params):
+    schedule = self.server.schedule
+    try:
+      trip = schedule.GetTrip(params.get('trip'))
+    except KeyError:
+       # if a non-existent trip is searched for, the return nothing
+      return
+    time_stops = trip.GetTimeInterpolatedStops()
+    stops = []
+    times = []
+    for arr,ts,is_timingpoint in time_stops:
+      stops.append(StopToTuple(ts.stop))
+      times.append(arr)
+    return [stops, times]
 
+  def handle_json_GET_tripshape(self, params):
+    schedule = self.server.schedule
+    try:
+      trip = schedule.GetTrip(params.get('trip'))
+    except KeyError:
+       # if a non-existent trip is searched for, the return nothing
+      return
+    points = []
+    if trip.shape_id:
+      shape = schedule.GetShape(trip.shape_id)
+      for (lat, lon, dist) in shape.points:
+        points.append((lat, lon))
+    else:
+      time_stops = trip.GetTimeStops()
+      for arr,dep,stop in time_stops:
+        points.append((stop.stop_lat, stop.stop_lon))
+    return points*/
+}
+function tripStopTimes($tripID, $after_time, $limit) {
+    /*     rv = []
+
+    stoptimes = self.GetStopTimes()
+    # If there are no stoptimes [] is the correct return value but if the start
+    # or end are missing times there is no correct return value.
+    if not stoptimes:
+      return []
+    if (stoptimes[0].GetTimeSecs() is None or
+        stoptimes[-1].GetTimeSecs() is None):
+      raise ValueError("%s must have time at first and last stop" % (self))
+
+    cur_timepoint = None
+    next_timepoint = None
+    distance_between_timepoints = 0
+    distance_traveled_between_timepoints = 0
+
+    for i, st in enumerate(stoptimes):
+      if st.GetTimeSecs() != None:
+        cur_timepoint = st
+        distance_between_timepoints = 0
+        distance_traveled_between_timepoints = 0
+        if i + 1 < len(stoptimes):
+          k = i + 1
+          distance_between_timepoints += util.ApproximateDistanceBetweenStops(stoptimes[k-1].stop, stoptimes[k].stop)
+          while stoptimes[k].GetTimeSecs() == None:
+            k += 1
+            distance_between_timepoints += util.ApproximateDistanceBetweenStops(stoptimes[k-1].stop, stoptimes[k].stop)
+          next_timepoint = stoptimes[k]
+        rv.append( (st.GetTimeSecs(), st, True) )
+      else:
+        distance_traveled_between_timepoints += util.ApproximateDistanceBetweenStops(stoptimes[i-1].stop, st.stop)
+        distance_percent = distance_traveled_between_timepoints / distance_between_timepoints
+        total_time = next_timepoint.GetTimeSecs() - cur_timepoint.GetTimeSecs()
+        time_estimate = distance_percent * total_time + cur_timepoint.GetTimeSecs()
+        rv.append( (int(round(time_estimate)), st, False) )
+
+    return rv*/
+}
+
+function tripStartTime($tripID) {
+    $query = 'SELECT arrival_secs,departure_secs FROM stop_times WHERE trip_id=? ORDER BY stop_sequence LIMIT 1';
+    
+}
+
+function viaPoints($tripid, $stopid, $timingPointsOnly = false)
+{
+	global $APIurl;
+	$url = $APIurl . "/json/tripstoptimes?trip=" . $tripid;
+	$json = json_decode(getPage($url));
+	debug(print_r($json, true));
+	$stops = $json[0];
+	$times = $json[1];
+	$foundStop = false;
+	$viaPoints = Array();
+	foreach ($stops as $key => $row) {
+		if ($foundStop) {
+			if (!$timingPointsOnly || !startsWith($row[5], "Wj")) {
+				$viaPoints[] = Array(
+					"id" => $row[0],
+					"name" => $row[1],
+					"time" => $times[$key]
+				);
+			}
+		}
+		else {
+			if ($row[0] == $stopid) $foundStop = true;
+		}
+	}
+	return $viaPoints;
+}
+function viaPointNames($tripid, $stopid)
+{
+	$points = viaPoints($tripid, $stopid, true);
+	$pointNames = Array();
+	foreach ($points as $point) {
+		$pointNames[] = $point['name'];
+	}
+	return implode(", ", $pointNames);
+}
+?>