break; case 'triprows': $trip_id = $_REQUEST['trip']; $result = GTFSReader::trip_rows($trip_id); echo json_encode($result); break; case 'tripshape': $trip_id = $_REQUEST['trip']; $trip = GTFSReader::get_trip($trip_id); $result = $trip->shape->points; echo json_encode($result); break; case 'stoptrips': $stop_id = $_REQUEST['stop']; $time = $_REQUEST['time']; $result = GTFSReader::get_trips_for_stop($stop_id, $time); echo json_encode($result); break; case 'stopsearch': $query = $_REQUEST['q']; break; case 'setstoplocation': $stop_id = $_REQUEST['id']; $lat = $_REQUEST['lat']; $lon = $_REQUEST['lng']; break; case 'savedata': break; default: break; }
public static function init($gtfs_feed_location) { if (!self::$routes) { self::$zip = new ZipArchive(); if (self::$zip->open($gtfs_feed_location) !== TRUE) { error_log("failed to open zip archive"); return; } // create all route objects self::$csv = new CsvWrapper('routes.txt', self::$zip); while ($fields = self::$csv->next()) { $route_id = $fields['route_id']; $route = new ShuttleRoute($fields); self::$routes[$route_id] = $route; } // create all trip and service objects; associate routes with trips self::$csv->reset_file('trips.txt'); while ($fields = self::$csv->next()) { $trip_id = $fields['trip_id']; $trip = new ShuttleTrip($fields); self::$trips[$trip_id] = $trip; $route_id = $fields['route_id']; self::$routes[$route_id]->add_trip($trip); $service_id = $fields['service_id']; if (!array_key_exists($service_id, self::$services)) { self::$services[$service_id] = new ShuttleService(); } $service = self::$services[$service_id]; $service->id = $service_id; $trip->service = $service; $shape_id = $fields['shape_id']; if (!array_key_exists($shape_id, self::$shapes)) { self::$shapes[$shape_id] = new ShuttleShape(); } $trip->shape = self::$shapes[$shape_id]; } // create stop list for each trips self::$csv->reset_file('stop_times.txt'); while ($fields = self::$csv->next()) { $trip_id = $fields['trip_id']; self::$trips[$trip_id]->add_stop_time($fields); } // setup service list self::$csv->reset_file('calendar.txt'); while ($fields = self::$csv->next()) { $service_id = $fields['service_id']; $service = self::$services[$service_id]; $service->add_range($fields); } self::$csv->reset_file('calendar_dates.txt'); while ($fields = self::$csv->next()) { $service_id = $fields['service_id']; $service = self::$services[$service_id]; $service->add_exception($fields); } // get interval and today's runs self::$csv->reset_file('frequencies.txt'); while ($fields = self::$csv->next()) { $trip_id = $fields['trip_id']; self::$trips[$trip_id]->add_frequency($fields); } // get attributes of physical stops self::$csv->reset_file('stops.txt'); while ($fields = self::$csv->next()) { self::$stops[$fields['stop_id']] = new ShuttleStop($fields); } // get shapes self::$csv->reset_file('shapes.txt'); while ($fields = self::$csv->next()) { $shape_id = $fields['shape_id']; self::$shapes[$shape_id]->add_point($fields); } } }