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
  <?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);
  }
  ?>