1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | <?php function getStop($stopID) { global $conn; $query = "Select * from stops where stop_id = '$stopID' LIMIT 1"; debug($query,"database"); $result = pg_query($conn, $query); if (!$result) { databaseError(pg_result_error($result)); return Array(); } return pg_fetch_assoc($result); } function getStops($timingPointsOnly = false, $firstLetter = "") { global $conn; $conditions = Array(); if ($timingPointsOnly) $conditions[] = "substr(stop_code,1,2) != 'Wj'"; if ($firstLetter != "") $conditions[] = "substr(stop_name,1,1) = '$firstLetter'"; $query = "Select * from stops"; if (sizeof($conditions) > 0) { if (sizeof($conditions) > 1) { $query .= " Where ".implode(" AND ",$conditions)." "; } else { $query .= " Where ".$conditions[0]." "; } } $query .= " order by stop_name;"; debug($query,"database"); $result = pg_query($conn, $query); if (!$result) { databaseError(pg_result_error($result)); return Array(); } return pg_fetch_all($result); } function getNearbyStops($lat, $lng, $limit, $distance = 1000) { if ($lat == null || $lng == null) return Array(); global $conn; $query = "Select *, ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE) as distance from stops WHERE ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), $distance, FALSE) order by distance;"; debug($query,"database"); $result = pg_query($conn, $query); if (!$result) { databaseError(pg_result_error($result)); return Array(); } return pg_fetch_all($result); } function getStopsBySuburb($suburb) { global $conn; $query = "Select * from stops where zone_id LIKE '%$suburb;%' order by stop_name;"; debug($query,"database"); $result = pg_query($conn, $query); if (!$result) { databaseError(pg_result_error($result)); return Array(); } return pg_fetch_all($result); } function getStopRoutes($stopID, $service_period) { if ($service_period == "") $service_period = service_period(); global $conn; $query = "SELECT service_id,trips.route_id,route_short_name,route_long_name FROM stop_times join trips on trips.trip_id = stop_times.trip_id join routes on trips.route_id = routes.route_id WHERE stop_id = '$stopID' AND service_id='$service_period'"; debug($query,"database"); $result = pg_query($conn, $query); if (!$result) { databaseError(pg_result_error($result)); return Array(); } return pg_fetch_all($result);} function getStopTrips($stopID, $service_period = "") { if ($service_period == "") $service_period = service_period(); global $conn; $query = "SELECT stop_times.trip_id,arrival_time,stop_id,stop_sequence,service_id,trips.route_id,route_short_name,route_long_name FROM stop_times join trips on trips.trip_id = stop_times.trip_id join routes on trips.route_id = routes.route_id WHERE stop_id = '$stopID' AND service_id='$service_period'"; debug($query,"database"); $result = pg_query($conn, $query); if (!$result) { databaseError(pg_result_error($result)); return Array(); } return pg_fetch_all($result); } function getStopTripsWithTimes($stopID, $time = "", $service_period = "", $time_range = "") { if ($service_period == "") $service_period = service_period(); if ($time_range == "") $time_range = (24*60*60); if ($time == "") $time = ($_SESSION['time'] ? $_SESSION['time'] : date("h:i:00")); $trips = getStopTrips($stopID,$service_period); $timedTrips = Array(); foreach ($trips as $trip) { if ($trip['arrival_time'] != "") { if (strtotime($trip['arrival_time']) > strtotime($time) and strtotime($trip['arrival_time']) < (strtotime($time) + $time_range)){ $timedTrips[] = $trip; } } else { $tripstarttime = getTripStartTime($trip['trip_id']); if ($tripstarttime > $time and $tripstarttime < ($time + $time_range)) { $timedtrip = getTimeInterpolatedTripStop($trip['trip_id'], $trip['stop_sequence']); if (strtotime($timedtrip['arrival_time']) > strtotime($time) and $timedtrip['arrival_time'] < (strtotime($time) + strtotime($time_range))){ $timedTrips[] = $timedTrip; } } } if (sizeof($timedTrips) > limit) break; } sktimesort($timedTrips,"arrival_time", true); return $timedTrips; } ?> |