Merge pull request #456 from Struart88/patch-2
[FlightAirMap.git] / search-georss.php
blob7dcd9bbe83746d3d9191949095783ad8303ff4a5
1 <?php
2 require_once('require/class.Connection.php');
3 require_once('require/class.Spotter.php');
4 require_once('require/class.SpotterArchive.php');
5 require_once('require/class.Language.php');
6 $Spotter = new Spotter();
7 if (isset($_GET['start_date'])) {
8 //for the date manipulation into the query
9 if($_GET['start_date'] != "" && $_GET['end_date'] != ""){
10 $start_date = date("Y-m-d",strtotime($_GET['start_date']))." 00:00:00";
11 $end_date = date("Y-m-d",strtotime($_GET['end_date']))." 00:00:00";
12 $sql_date = $start_date.",".$end_date;
13 } else if($_GET['start_date'] != ""){
14 $start_date = date("Y-m-d",strtotime($_GET['start_date']))." 00:00:00";
15 $sql_date = $start_date;
16 } else if($_GET['start_date'] == "" && $_GET['end_date'] != ""){
17 $end_date = date("Y-m-d H:i:s", strtotime("2014-04-12")).",".date("Y-m-d",strtotime($_GET['end_date']))." 00:00:00";
18 $sql_date = $end_date;
19 } else $sql_date = '';
20 } else $sql_date = '';
22 if (isset($_GET['highest_altitude'])) {
23 //for altitude manipulation
24 if($_GET['highest_altitude'] != "" && $_GET['lowest_altitude'] != ""){
25 $end_altitude = filter_input(INPUT_GET,'highest_altitude',FILTER_SANITIZE_NUMBER_INT);
26 $start_altitude = filter_input(INPUT_GET,'lowest_altitude',FILTER_SANITIZE_NUMBER_INT);
27 $sql_altitude = $start_altitude.",".$end_altitude;
28 } else if($_GET['highest_altitude'] != ""){
29 $end_altitude = filter_input(iNPUT_GET,'highest_altitude',FILTER_SANITIZE_NUMBER_INT);
30 $sql_altitude = $end_altitude;
31 } else if($_GET['highest_altitude'] == "" && $_GET['lowest_altitude'] != ""){
32 $start_altitude = filter_input(INPUT_GET,'lowest_altitude',FILTER_SANITIZE_NUMBER_INT).",60000";
33 $sql_altitude = $start_altitude;
34 } else $sql_altitude = '';
35 } else $sql_altitude = '';
37 //calculuation for the pagination
38 if(!isset($_GET['limit']))
40 if (!isset($_GET['number_results']))
42 $limit_start = 0;
43 $limit_end = 25;
44 $absolute_difference = 25;
45 } else {
46 if ($_GET['number_results'] > 1000){
47 $_GET['number_results'] = 1000;
49 $limit_start = 0;
50 $limit_end = filter_input(INPUT_GET,'number_results',FILTER_SANITIZE_NUMBER_INT);
51 $absolute_difference = filter_input(INPUT_GET,'number_results',FILTER_SANITIZE_NUMBER_INT);
53 } else {
54 $limit_explode = explode(",", $_GET['limit']);
55 $limit_start = filter_var($limit_explode[0],FILTER_SANITIZE_NUMBER_INT);
56 $limit_end = filter_var($limit_explode[1],FILTER_SANITIZE_NUMBER_INT);
59 $absolute_difference = abs($limit_start - $limit_end);
60 $limit_next = $limit_end + $absolute_difference;
61 $limit_previous_1 = $limit_start - $absolute_difference;
62 $limit_previous_2 = $limit_end - $absolute_difference;
64 if ($_GET['download'] == "true")
66 header('Content-disposition: attachment; filename="flightairmap.rss"');
69 header('Content-Type: application/rss+xml; charset=utf-8');
72 $date = date("c", time());
74 if (isset($_GET['sort'])) $sort = $_GET['sort'];
75 else $sort = '';
76 $q = filter_input(INPUT_GET,'q',FILTER_SANITIZE_STRING);
77 $id = filter_input(INPUT_GET,'id',FILTER_SANITIZE_STRING);
78 $registration = filter_input(INPUT_GET,'registratrion',FILTER_SANITIZE_STRING);
79 $aircraft = filter_input(INPUT_GET,'aircraft',FILTER_SANITIZE_STRING);
80 $manufacturer = filter_input(INPUT_GET,'manufacturer',FILTER_SANITIZE_STRING);
81 $highlights = filter_input(INPUT_GET,'highlights',FILTER_SANITIZE_STRING);
82 $airline = filter_input(INPUT_GET,'airline',FILTER_SANITIZE_STRING);
83 $airline_country = filter_input(INPUT_GET,'airline_country',FILTER_SANITIZE_STRING);
84 $airline_type = filter_input(INPUT_GET,'airline_type',FILTER_SANITIZE_STRING);
85 $airport = filter_input(INPUT_GET,'airport',FILTER_SANITIZE_STRING);
86 $airport_country = filter_input(INPUT_GET,'airport_country',FILTER_SANITIZE_STRING);
87 $callsign = filter_input(INPUT_GET,'callsign',FILTER_SANITIZE_STRING);
88 $owner = filter_input(INPUT_GET,'owner',FILTER_SANITIZE_STRING);
89 $pilot_name = filter_input(INPUT_GET,'pilot_name',FILTER_SANITIZE_STRING);
90 $pilot_id = filter_input(INPUT_GET,'pilot_id',FILTER_SANITIZE_STRING);
91 $departure_airport_route = filter_input(INPUT_GET,'departure_airport_route',FILTER_SANITIZE_STRING);
92 $arrival_airport_route = filter_input(INPUT_GET,'arrival_airport_route',FILTER_SANITIZE_STRING);
93 if ($id != '') {
94 $spotter_array = $Spotter->getSpotterDataByID($id);
95 } else {
96 $spotter_array = $Spotter->searchSpotterData($q,$registration,$aircraft,strtolower(str_replace("-", " ", $manufacturer)),$highlights,$airline,$airline_country,$airline_type,$airport,$airport_country,$callsign,$departure_airport_route,$arrival_airport_route,$owner,$pilot_id,$pilot_name,$sql_altitude,$sql_date,$limit_start.",".$absolute_difference,$sort,'');
99 print '<?xml version="1.0" encoding="UTF-8" ?>';
100 print '<feed xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">';
102 print '<title>GeoRSS Feed</title>';
103 print '<link href="http://www/flightairmap.fr/"/>';
104 print '<subtitle>The latest airplanes</subtitle>';
105 print '<updated>'.$date.'</updated>';
106 print '<author>';
107 print '<name>FlightAirMap</name>';
108 print '<email>no@no.com</email>';
109 print '</author>';
110 print '<id>FlightAirMap</id>';
111 if (!empty($spotter_array)) {
112 foreach($spotter_array as $spotter_item) {
113 print '<entry>';
114 print '<title>'.$spotter_item['ident'].' '.$spotter_item['airline_name'].' | '.$spotter_item['registration'].' '.$spotter_item['aircraft_name'].' ('.$spotter_item['aircraft_type'].') | '.$spotter_item['departure_airport'].' - '.$spotter_item['arrival_airport'].'</title>';
115 print '<link href="http://www.flightairmap.fr/flightid/'.$spotter_item['spotter_id'].'"/>';
116 print '<id>http://www.flightairmap.com/flightid/'.$spotter_item['spotter_id'].'</id>';
117 print '<content>Ident: '.$spotter_item['ident'].' | Registration: '.$spotter_item['registration'].' | Aircraft: '.$spotter_item['aircraft_name'].' ('.$spotter_item['aircraft_type'].') | Airline: '.$spotter_item['airline_name'].' | Coming From: '.$spotter_item['departure_airport_city'].', '.$spotter_item['departure_airport_name'].', '.$spotter_item['departure_airport_country'].' ('.$spotter_item['departure_airport'].') | Flying to: '.$spotter_item['arrival_airport_city'].', '.$spotter_item['arrival_airport_name'].', '.$spotter_item['arrival_airport_country'].' ('.$spotter_item['arrival_airport'].') | Flew nearby on: '.date("M j, Y, g:i a T", strtotime($spotter_item['date_iso_8601'])).'</content>';
118 print '<updated>'.$date.'</updated>';
119 $SpotterArchive = new SpotterArchive();
120 $archive_data = $SpotterArchive->getAllArchiveSpotterDataById($spotter_item['flightaware_id']);
121 if (!empty($archive_data)) {
122 print '<georss:where>';
123 print '<gml:LineString>';
124 print '<gml:posList>';
125 foreach ($archive_data as $coord_data) {
126 print $coord_data['latitude'].' '.$coord_data['longitude'].' ';
128 print '</gml:posList>';
129 print '</gml:LineString>';
130 print '</georss:where>';
133 if ($spotter_item['waypoints'] != "") {
134 print '<georss:where>';
135 print '<gml:LineString>';
136 print '<gml:posList>';
137 $waypoint_pieces = explode(' ', $spotter_item['waypoints']);
138 $waypoint_pieces = array_chunk($waypoint_pieces, 2);
139 foreach ($waypoint_pieces as $waypoint_coordinate) {
140 print $waypoint_coordinate[0].' '.$waypoint_coordinate[1].' ';
142 print '</gml:posList>';
143 print '</gml:LineString>';
144 print '</georss:where>';
148 if ($spotter_item['latitude'] != "0" || $spotter_item['longitude'] != "0") {
149 print '<georss:where>';
150 print '<gml:Point>';
151 print '<gml:pos>'.$spotter_item['latitude'].' '.$spotter_item['longitude'].'</gml:pos>';
152 print '</gml:Point>';
153 print '</georss:where>';
156 print '</entry>';
159 print '</feed>';