Completed
Push — master ( c585c5...63f6a6 )
by Yannick
32:09 queued 01:10
created

update_db::insert_last_satellite_update()   A

Complexity

Conditions 2
Paths 4

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 8
nc 4
nop 0
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
1
<?php
2
//require_once('libs/simple_html_dom.php');
3
require(dirname(__FILE__).'/../require/settings.php');
4
require_once(dirname(__FILE__).'/../require/class.Common.php');
5
require_once(dirname(__FILE__).'/../require/class.Connection.php');
6
7
$tmp_dir = dirname(__FILE__).'/tmp/';
8
//$globalDebug = true;
9
//$globalTransaction = true;
10
class update_db {
11
	public static $db_sqlite;
12
13
	public static function download($url, $file, $referer = '') {
14
		global $globalProxy, $globalForceIPv4;
15
		$fp = fopen($file, 'w');
16
		$ch = curl_init();
17
		curl_setopt($ch, CURLOPT_URL, $url);
18
		if (isset($globalForceIPv4) && $globalForceIPv4) {
19
			if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')){
20
				curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
21
			}
22
		}
23
		if (isset($globalProxy) && $globalProxy != '') {
24
			curl_setopt($ch, CURLOPT_PROXY, $globalProxy);
25
		}
26
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
27
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
28
		curl_setopt($ch, CURLOPT_TIMEOUT, 20);
29
		if ($referer != '') curl_setopt($ch, CURLOPT_REFERER, $referer);
30
		curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
31
		curl_setopt($ch, CURLOPT_FILE, $fp);
32
		curl_exec($ch);
33
		curl_close($ch);
34
		fclose($fp);
35
	}
36
37
	public static function gunzip($in_file,$out_file_name = '') {
38
		//echo $in_file.' -> '.$out_file_name."\n";
39
		$buffer_size = 4096; // read 4kb at a time
40
		if ($out_file_name == '') $out_file_name = str_replace('.gz', '', $in_file); 
41
		if ($in_file != '' && file_exists($in_file)) {
42
			// PHP version of Ubuntu use gzopen64 instead of gzopen
43
			if (function_exists('gzopen')) $file = gzopen($in_file,'rb');
44
			elseif (function_exists('gzopen64')) $file = gzopen64($in_file,'rb');
45
			else {
46
				echo 'gzopen not available';
47
				die;
48
			}
49
			$out_file = fopen($out_file_name, 'wb'); 
50
			while(!gzeof($file)) {
51
				fwrite($out_file, gzread($file, $buffer_size));
52
			}  
53
			fclose($out_file);
54
			gzclose($file);
55
		}
56
	}
57
58
	public static function unzip($in_file) {
59
		if ($in_file != '' && file_exists($in_file)) {
60
			$path = pathinfo(realpath($in_file), PATHINFO_DIRNAME);
61
			$zip = new ZipArchive;
62
			$res = $zip->open($in_file);
63
			if ($res === TRUE) {
64
				$zip->extractTo($path);
65
				$zip->close();
66
			} else return false;
67
		} else return false;
68
	}
69
	
70
	public static function connect_sqlite($database) {
71
		try {
72
			self::$db_sqlite = new PDO('sqlite:'.$database);
73
			self::$db_sqlite->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
74
		} catch(PDOException $e) {
75
			return "error : ".$e->getMessage();
76
		}
77
	}
78
	
79
	public static function retrieve_route_sqlite_to_dest($database_file) {
80
		global $globalDebug, $globalTransaction;
81
		//$query = 'TRUNCATE TABLE routes';
82
		if ($globalDebug) echo " - Delete previous routes from DB -";
83
		$query = "DELETE FROM routes WHERE Source = '' OR Source = :source";
84
		$Connection = new Connection();
85
		try {
86
			//$Connection = new Connection();
87
			$sth = $Connection->db->prepare($query);
88
                        $sth->execute(array(':source' => $database_file));
89
                } catch(PDOException $e) {
90
                        return "error : ".$e->getMessage();
91
                }
92
93
    		if ($globalDebug) echo " - Add routes to DB -";
94
    		update_db::connect_sqlite($database_file);
95
		//$query = 'select Route.RouteID, Route.callsign, operator.Icao AS operator_icao, FromAir.Icao AS FromAirportIcao, ToAir.Icao AS ToAirportIcao from Route inner join operator ON Route.operatorId = operator.operatorId LEFT JOIN Airport AS FromAir ON route.FromAirportId = FromAir.AirportId LEFT JOIN Airport AS ToAir ON ToAir.AirportID = route.ToAirportID';
96
		$query = "select Route.RouteID, Route.callsign, operator.Icao AS operator_icao, FromAir.Icao AS FromAirportIcao, ToAir.Icao AS ToAirportIcao, rstp.allstop AS AllStop from Route inner join operator ON Route.operatorId = operator.operatorId LEFT JOIN Airport AS FromAir ON route.FromAirportId = FromAir.AirportId LEFT JOIN Airport AS ToAir ON ToAir.AirportID = route.ToAirportID LEFT JOIN (select RouteId,GROUP_CONCAT(icao,' ') as allstop from routestop left join Airport as air ON routestop.AirportId = air.AirportID group by RouteID) AS rstp ON Route.RouteID = rstp.RouteID";
97
		try {
98
                        $sth = update_db::$db_sqlite->prepare($query);
99
                        $sth->execute();
100
                } catch(PDOException $e) {
101
                        return "error : ".$e->getMessage();
102
                }
103
		//$query_dest = 'INSERT INTO routes (`RouteID`,`CallSign`,`Operator_ICAO`,`FromAirport_ICAO`,`ToAirport_ICAO`,`RouteStop`,`Source`) VALUES (:RouteID, :CallSign, :Operator_ICAO, :FromAirport_ICAO, :ToAirport_ICAO, :routestop, :source)';
104
		$query_dest = 'INSERT INTO routes (CallSign,Operator_ICAO,FromAirport_ICAO,ToAirport_ICAO,RouteStop,Source) VALUES (:CallSign, :Operator_ICAO, :FromAirport_ICAO, :ToAirport_ICAO, :routestop, :source)';
105
		$Connection = new Connection();
106
		$sth_dest = $Connection->db->prepare($query_dest);
107
		try {
108
			if ($globalTransaction) $Connection->db->beginTransaction();
109
            		while ($values = $sth->fetch(PDO::FETCH_ASSOC)) {
110
				//$query_dest_values = array(':RouteID' => $values['RouteId'],':CallSign' => $values['Callsign'],':Operator_ICAO' => $values['operator_icao'],':FromAirport_ICAO' => $values['FromAirportIcao'],':ToAirport_ICAO' => $values['ToAirportIcao'],':routestop' => $values['AllStop'],':source' => $database_file);
111
				$query_dest_values = array(':CallSign' => $values['Callsign'],':Operator_ICAO' => $values['operator_icao'],':FromAirport_ICAO' => $values['FromAirportIcao'],':ToAirport_ICAO' => $values['ToAirportIcao'],':routestop' => $values['AllStop'],':source' => $database_file);
112
				$sth_dest->execute($query_dest_values);
113
            		}
114
			if ($globalTransaction) $Connection->db->commit();
115
		} catch(PDOException $e) {
116
			if ($globalTransaction) $Connection->db->rollBack(); 
0 ignored issues
show
Bug introduced by
The method rollBack cannot be called on $Connection->db (of type null).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
117
			return "error : ".$e->getMessage();
118
		}
119
                return '';
120
	}
121
	public static function retrieve_route_oneworld($database_file) {
122
		global $globalDebug, $globalTransaction;
123
		//$query = 'TRUNCATE TABLE routes';
124
		if ($globalDebug) echo " - Delete previous routes from DB -";
125
		$query = "DELETE FROM routes WHERE Source = '' OR Source = :source";
126
		$Connection = new Connection();
127
		try {
128
			//$Connection = new Connection();
129
			$sth = $Connection->db->prepare($query);
130
                        $sth->execute(array(':source' => 'oneworld'));
131
                } catch(PDOException $e) {
132
                        return "error : ".$e->getMessage();
133
                }
134
135
    		if ($globalDebug) echo " - Add routes to DB -";
136
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
137
		$Spotter = new Spotter();
138
		if ($fh = fopen($database_file,"r")) {
139
			$query_dest = 'INSERT INTO routes (CallSign,Operator_ICAO,FromAirport_ICAO,FromAirport_Time,ToAirport_ICAO,ToAirport_Time,RouteStop,Source) VALUES (:CallSign, :Operator_ICAO, :FromAirport_ICAO,:FromAirport_Time, :ToAirport_ICAO, :ToAirport_Time,:routestop, :source)';
140
			$Connection = new Connection();
141
			$sth_dest = $Connection->db->prepare($query_dest);
142
			if ($globalTransaction) $Connection->db->beginTransaction();
143
			while (!feof($fh)) {
144
				$line = fgetcsv($fh,9999,',');
145
				if ($line[0] != '') {
146
					if (($line[2] == '-' || ($line[2] != '-' && (strtotime($line[2]) > time()))) && ($line[3] == '-' || ($line[3] != '-' && (strtotime($line[3]) < time())))) {
147
						try {
148
							$query_dest_values = array(':CallSign' => str_replace('*','',$line[7]),':Operator_ICAO' => '',':FromAirport_ICAO' => $Spotter->getAirportICAO($line[0]),':FromAirport_Time' => $line[5],':ToAirport_ICAO' => $Spotter->getAirportICAO($line[1]),':ToAirport_Time' => $line[6],':routestop' => '',':source' => 'oneworld');
149
							$sth_dest->execute($query_dest_values);
150
						} catch(PDOException $e) {
151
							if ($globalTransaction) $Connection->db->rollBack(); 
0 ignored issues
show
Bug introduced by
The method rollBack cannot be called on $Connection->db (of type null).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
152
							return "error : ".$e->getMessage();
153
						}
154
					}
155
				}
156
			}
157
			if ($globalTransaction) $Connection->db->commit();
158
		}
159
                return '';
160
	}
161
	
162
	public static function retrieve_route_skyteam($database_file) {
163
		global $globalDebug, $globalTransaction;
164
		//$query = 'TRUNCATE TABLE routes';
165
		if ($globalDebug) echo " - Delete previous routes from DB -";
166
		$query = "DELETE FROM routes WHERE Source = '' OR Source = :source";
167
		$Connection = new Connection();
168
		try {
169
			//$Connection = new Connection();
170
			$sth = $Connection->db->prepare($query);
171
                        $sth->execute(array(':source' => 'skyteam'));
172
                } catch(PDOException $e) {
173
                        return "error : ".$e->getMessage();
174
                }
175
176
    		if ($globalDebug) echo " - Add routes to DB -";
177
178
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
179
		$Spotter = new Spotter();
180
		if ($fh = fopen($database_file,"r")) {
181
			$query_dest = 'INSERT INTO routes (CallSign,Operator_ICAO,FromAirport_ICAO,FromAirport_Time,ToAirport_ICAO,ToAirport_Time,RouteStop,Source) VALUES (:CallSign, :Operator_ICAO, :FromAirport_ICAO,:FromAirport_Time, :ToAirport_ICAO, :ToAirport_Time,:routestop, :source)';
182
			$Connection = new Connection();
183
			$sth_dest = $Connection->db->prepare($query_dest);
184
			try {
185
				if ($globalTransaction) $Connection->db->beginTransaction();
186
				while (!feof($fh)) {
187
					$line = fgetcsv($fh,9999,',');
188
					if ($line[0] != '') {
189
						$datebe = explode('  -  ',$line[2]);
190
						if (strtotime($datebe[0]) > time() && strtotime($datebe[1]) < time()) {
191
							$query_dest_values = array(':CallSign' => str_replace('*','',$line[6]),':Operator_ICAO' => '',':FromAirport_ICAO' => $Spotter->getAirportICAO($line[0]),':FromAirport_Time' => $line[4],':ToAirport_ICAO' => $Spotter->getAirportICAO($line[1]),':ToAirport_Time' => $line[5],':routestop' => '',':source' => 'skyteam');
192
							$sth_dest->execute($query_dest_values);
193
						}
194
					}
195
				}
196
				if ($globalTransaction) $Connection->db->commit();
197
			} catch(PDOException $e) {
198
				if ($globalTransaction) $Connection->db->rollBack(); 
0 ignored issues
show
Bug introduced by
The method rollBack cannot be called on $Connection->db (of type null).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
199
				return "error : ".$e->getMessage();
200
			}
201
		}
202
                return '';
203
	}
204
	public static function retrieve_modes_sqlite_to_dest($database_file) {
205
		global $globalTransaction;
206
		//$query = 'TRUNCATE TABLE aircraft_modes';
207
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source IS NULL OR Source = :source";
208
		try {
209
			$Connection = new Connection();
210
			$sth = $Connection->db->prepare($query);
211
                        $sth->execute(array(':source' => $database_file));
212
                } catch(PDOException $e) {
213
                        return "error : ".$e->getMessage();
214
                }
215
		$query = "DELETE FROM aircraft_owner WHERE Source = '' OR Source IS NULL OR Source = :source";
216
		try {
217
			$Connection = new Connection();
218
			$sth = $Connection->db->prepare($query);
219
                        $sth->execute(array(':source' => $database_file));
220
                } catch(PDOException $e) {
221
                        return "error : ".$e->getMessage();
222
                }
223
224
    		update_db::connect_sqlite($database_file);
225
		$query = 'select * from Aircraft';
226
		try {
227
                        $sth = update_db::$db_sqlite->prepare($query);
228
                        $sth->execute();
229
                } catch(PDOException $e) {
230
                        return "error : ".$e->getMessage();
231
                }
232
		//$query_dest = 'INSERT INTO aircraft_modes (`AircraftID`,`FirstCreated`,`LastModified`, `ModeS`,`ModeSCountry`,`Registration`,`ICAOTypeCode`,`SerialNo`, `OperatorFlagCode`, `Manufacturer`, `Type`, `FirstRegDate`, `CurrentRegDate`, `Country`, `PreviousID`, `DeRegDate`, `Status`, `PopularName`,`GenericName`,`AircraftClass`, `Engines`, `OwnershipStatus`,`RegisteredOwners`,`MTOW`, `TotalHours`, `YearBuilt`, `CofACategory`, `CofAExpiry`, `UserNotes`, `Interested`, `UserTag`, `InfoUrl`, `PictureUrl1`, `PictureUrl2`, `PictureUrl3`, `UserBool1`, `UserBool2`, `UserBool3`, `UserBool4`, `UserBool5`, `UserString1`, `UserString2`, `UserString3`, `UserString4`, `UserString5`, `UserInt1`, `UserInt2`, `UserInt3`, `UserInt4`, `UserInt5`) VALUES (:AircraftID,:FirstCreated,:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:SerialNo, :OperatorFlagCode, :Manufacturer, :Type, :FirstRegDate, :CurrentRegDate, :Country, :PreviousID, :DeRegDate, :Status, :PopularName,:GenericName,:AircraftClass, :Engines, :OwnershipStatus,:RegisteredOwners,:MTOW, :TotalHours,:YearBuilt, :CofACategory, :CofAExpiry, :UserNotes, :Interested, :UserTag, :InfoUrl, :PictureUrl1, :PictureUrl2, :PictureUrl3, :UserBool1, :UserBool2, :UserBool3, :UserBool4, :UserBool5, :UserString1, :UserString2, :UserString3, :UserString4, :UserString5, :UserInt1, :UserInt2, :UserInt3, :UserInt4, :UserInt5)';
233
		$query_dest = 'INSERT INTO aircraft_modes (LastModified, ModeS,ModeSCountry,Registration,ICAOTypeCode,type_flight,Source) VALUES (:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:type,:source)';
234
		
235
		$query_dest_owner = 'INSERT INTO aircraft_owner (registration,owner,Source) VALUES (:registration,:owner,:source)';
236
		
237
		$Connection = new Connection();
238
		$sth_dest = $Connection->db->prepare($query_dest);
239
		$sth_dest_owner = $Connection->db->prepare($query_dest_owner);
240
		try {
241
			if ($globalTransaction) $Connection->db->beginTransaction();
242
            		while ($values = $sth->fetch(PDO::FETCH_ASSOC)) {
243
			//$query_dest_values = array(':AircraftID' => $values['AircraftID'],':FirstCreated' => $values['FirstCreated'],':LastModified' => $values['LastModified'],':ModeS' => $values['ModeS'],':ModeSCountry' => $values['ModeSCountry'],':Registration' => $values['Registration'],':ICAOTypeCode' => $values['ICAOTypeCode'],':SerialNo' => $values['SerialNo'], ':OperatorFlagCode' => $values['OperatorFlagCode'], ':Manufacturer' => $values['Manufacturer'], ':Type' => $values['Type'], ':FirstRegDate' => $values['FirstRegDate'], ':CurrentRegDate' => $values['CurrentRegDate'], ':Country' => $values['Country'], ':PreviousID' => $values['PreviousID'], ':DeRegDate' => $values['DeRegDate'], ':Status' => $values['Status'], ':PopularName' => $values['PopularName'],':GenericName' => $values['GenericName'],':AircraftClass' => $values['AircraftClass'], ':Engines' => $values['Engines'], ':OwnershipStatus' => $values['OwnershipStatus'],':RegisteredOwners' => $values['RegisteredOwners'],':MTOW' => $values['MTOW'], ':TotalHours' => $values['TotalHours'],':YearBuilt' => $values['YearBuilt'], ':CofACategory' => $values['CofACategory'], ':CofAExpiry' => $values['CofAExpiry'], ':UserNotes' => $values['UserNotes'], ':Interested' => $values['Interested'], ':UserTag' => $values['UserTag'], ':InfoUrl' => $values['InfoURL'], ':PictureUrl1' => $values['PictureURL1'], ':PictureUrl2' => $values['PictureURL2'], ':PictureUrl3' => $values['PictureURL3'], ':UserBool1' => $values['UserBool1'], ':UserBool2' => $values['UserBool2'], ':UserBool3' => $values['UserBool3'], ':UserBool4' => $values['UserBool4'], ':UserBool5' => $values['UserBool5'], ':UserString1' => $values['UserString1'], ':UserString2' => $values['UserString2'], ':UserString3' => $values['UserString3'], ':UserString4' => $values['UserString4'], ':UserString5' => $values['UserString5'], ':UserInt1' => $values['UserInt1'], ':UserInt2' => $values['UserInt2'], ':UserInt3' => $values['UserInt3'], ':UserInt4' => $values['UserInt4'], ':UserInt5' => $values['UserInt5']);
244
				if ($values['UserString4'] == 'M') $type = 'military';
245
				else $type = null;
246
				$query_dest_values = array(':LastModified' => $values['LastModified'],':ModeS' => $values['ModeS'],':ModeSCountry' => $values['ModeSCountry'],':Registration' => $values['Registration'],':ICAOTypeCode' => $values['ICAOTypeCode'],':source' => $database_file,':type' => $type);
247
				$sth_dest->execute($query_dest_values);
248
				if ($values['RegisteredOwners'] != '' && $values['RegisteredOwners'] != NULL && $values['RegisteredOwners'] != 'Private') {
249
				    $query_dest_owner_values = array(':registration' => $values['Registration'],':source' => $database_file,':owner' => $values['RegisteredOwners']);
250
				    $sth_dest_owner->execute($query_dest_owner_values);
251
				}
252
            		}
253
			if ($globalTransaction) $Connection->db->commit();
254
		} catch(PDOException $e) {
255
			return "error : ".$e->getMessage();
256
		}
257
258
		// Remove data already in DB from ACARS
259
		$query = "DELETE FROM aircraft_modes WHERE Source = :source AND ModeS IN (SELECT * FROM (SELECT ModeS FROM aircraft_modes WHERE Source = 'ACARS') _alias)";
260
		try {
261
			$Connection = new Connection();
262
			$sth = $Connection->db->prepare($query);
263
                        $sth->execute(array(':source' => $database_file));
264
                } catch(PDOException $e) {
265
                        return "error : ".$e->getMessage();
266
                }
267
		return '';
268
	}
269
270
	public static function retrieve_modes_flarmnet($database_file) {
271
		global $globalTransaction;
272
		$Common = new Common();
273
		//$query = 'TRUNCATE TABLE aircraft_modes';
274
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source IS NULL OR Source = :source";
275
		try {
276
			$Connection = new Connection();
277
			$sth = $Connection->db->prepare($query);
278
                        $sth->execute(array(':source' => $database_file));
279
                } catch(PDOException $e) {
280
                        return "error : ".$e->getMessage();
281
                }
282
		
283
		if ($fh = fopen($database_file,"r")) {
284
			//$query_dest = 'INSERT INTO aircraft_modes (`AircraftID`,`FirstCreated`,`LastModified`, `ModeS`,`ModeSCountry`,`Registration`,`ICAOTypeCode`,`SerialNo`, `OperatorFlagCode`, `Manufacturer`, `Type`, `FirstRegDate`, `CurrentRegDate`, `Country`, `PreviousID`, `DeRegDate`, `Status`, `PopularName`,`GenericName`,`AircraftClass`, `Engines`, `OwnershipStatus`,`RegisteredOwners`,`MTOW`, `TotalHours`, `YearBuilt`, `CofACategory`, `CofAExpiry`, `UserNotes`, `Interested`, `UserTag`, `InfoUrl`, `PictureUrl1`, `PictureUrl2`, `PictureUrl3`, `UserBool1`, `UserBool2`, `UserBool3`, `UserBool4`, `UserBool5`, `UserString1`, `UserString2`, `UserString3`, `UserString4`, `UserString5`, `UserInt1`, `UserInt2`, `UserInt3`, `UserInt4`, `UserInt5`) VALUES (:AircraftID,:FirstCreated,:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:SerialNo, :OperatorFlagCode, :Manufacturer, :Type, :FirstRegDate, :CurrentRegDate, :Country, :PreviousID, :DeRegDate, :Status, :PopularName,:GenericName,:AircraftClass, :Engines, :OwnershipStatus,:RegisteredOwners,:MTOW, :TotalHours,:YearBuilt, :CofACategory, :CofAExpiry, :UserNotes, :Interested, :UserTag, :InfoUrl, :PictureUrl1, :PictureUrl2, :PictureUrl3, :UserBool1, :UserBool2, :UserBool3, :UserBool4, :UserBool5, :UserString1, :UserString2, :UserString3, :UserString4, :UserString5, :UserInt1, :UserInt2, :UserInt3, :UserInt4, :UserInt5)';
285
			$query_dest = 'INSERT INTO aircraft_modes (ModeS,Registration,ICAOTypeCode,Source,source_type) VALUES (:ModeS,:Registration,:ICAOTypeCode,:source,:source_type)';
286
		
287
			$Connection = new Connection();
288
			$sth_dest = $Connection->db->prepare($query_dest);
289
			try {
290
				if ($globalTransaction) $Connection->db->beginTransaction();
291
            			while (!feof($fh)) {
292
            				$values = array();
293
            				$line = $Common->hex2str(fgets($fh,9999));
294
					//FFFFFF                     RIDEAU VALLEY SOARINGASW-20               C-FBKN MZ 123.400
295
            				$values['ModeS'] = substr($line,0,6);
296
            				$values['Registration'] = trim(substr($line,69,6));
297
            				$aircraft_name = trim(substr($line,48,6));
298
            				// Check if we can find ICAO, else set it to GLID
299
            				$aircraft_name_split = explode(' ',$aircraft_name);
300
            				$search_more = '';
301
            				if (count($aircraft_name) > 1 && strlen($aircraft_name_split[1]) > 3) $search_more .= " AND LIKE '%".$aircraft_name_split[0]."%'";
302
            				$query_search = "SELECT * FROM aircraft WHERE type LIKE '%".$aircraft_name."%'".$search_more;
303
            				$sth_search = $Connection->db->prepare($query_search);
304
					try {
305
                                    		$sth_search->execute();
306
	            				$result = $sth_search->fetch(PDO::FETCH_ASSOC);
307
	            				//if (count($result) > 0) {
308
	            				if (isset($result['icao']) && $result['icao'] != '') {
309
	            				    $values['ICAOTypeCode'] = $result['icao'];
310
	            				} 
311
					} catch(PDOException $e) {
312
						return "error : ".$e->getMessage();
313
					}
314
					if (!isset($values['ICAOTypeCode'])) $values['ICAOTypeCode'] = 'GLID';
315
					// Add data to db
316
					if ($values['Registration'] != '' && $values['Registration'] != '0000') {
317
						//$query_dest_values = array(':AircraftID' => $values['AircraftID'],':FirstCreated' => $values['FirstCreated'],':LastModified' => $values['LastModified'],':ModeS' => $values['ModeS'],':ModeSCountry' => $values['ModeSCountry'],':Registration' => $values['Registration'],':ICAOTypeCode' => $values['ICAOTypeCode'],':SerialNo' => $values['SerialNo'], ':OperatorFlagCode' => $values['OperatorFlagCode'], ':Manufacturer' => $values['Manufacturer'], ':Type' => $values['Type'], ':FirstRegDate' => $values['FirstRegDate'], ':CurrentRegDate' => $values['CurrentRegDate'], ':Country' => $values['Country'], ':PreviousID' => $values['PreviousID'], ':DeRegDate' => $values['DeRegDate'], ':Status' => $values['Status'], ':PopularName' => $values['PopularName'],':GenericName' => $values['GenericName'],':AircraftClass' => $values['AircraftClass'], ':Engines' => $values['Engines'], ':OwnershipStatus' => $values['OwnershipStatus'],':RegisteredOwners' => $values['RegisteredOwners'],':MTOW' => $values['MTOW'], ':TotalHours' => $values['TotalHours'],':YearBuilt' => $values['YearBuilt'], ':CofACategory' => $values['CofACategory'], ':CofAExpiry' => $values['CofAExpiry'], ':UserNotes' => $values['UserNotes'], ':Interested' => $values['Interested'], ':UserTag' => $values['UserTag'], ':InfoUrl' => $values['InfoURL'], ':PictureUrl1' => $values['PictureURL1'], ':PictureUrl2' => $values['PictureURL2'], ':PictureUrl3' => $values['PictureURL3'], ':UserBool1' => $values['UserBool1'], ':UserBool2' => $values['UserBool2'], ':UserBool3' => $values['UserBool3'], ':UserBool4' => $values['UserBool4'], ':UserBool5' => $values['UserBool5'], ':UserString1' => $values['UserString1'], ':UserString2' => $values['UserString2'], ':UserString3' => $values['UserString3'], ':UserString4' => $values['UserString4'], ':UserString5' => $values['UserString5'], ':UserInt1' => $values['UserInt1'], ':UserInt2' => $values['UserInt2'], ':UserInt3' => $values['UserInt3'], ':UserInt4' => $values['UserInt4'], ':UserInt5' => $values['UserInt5']);
318
						$query_dest_values = array(':ModeS' => $values['ModeS'],':Registration' => $values['Registration'],':ICAOTypeCode' => $values['ICAOTypeCode'],':source' => $database_file,':source_type' => 'flarm');
319
						//print_r($query_dest_values);
320
						$sth_dest->execute($query_dest_values);
321
					}
322
				}
323
				if ($globalTransaction) $Connection->db->commit();
324
			} catch(PDOException $e) {
325
				return "error : ".$e->getMessage();
326
			}
327
		}
328
329
		$query = "DELETE FROM aircraft_modes WHERE Source = :source AND ModeS IN (SELECT * FROM (SELECT ModeS FROM aircraft_modes WHERE Source = 'ACARS') _alias)";
330
		try {
331
			$Connection = new Connection();
332
			$sth = $Connection->db->prepare($query);
333
                        $sth->execute(array(':source' => $database_file));
334
                } catch(PDOException $e) {
335
                        return "error : ".$e->getMessage();
336
                }
337
		return '';
338
	}
339
340
	public static function retrieve_modes_ogn($database_file) {
341
		global $globalTransaction;
342
		//$query = 'TRUNCATE TABLE aircraft_modes';
343
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source IS NULL OR Source = :source";
344
		try {
345
			$Connection = new Connection();
346
			$sth = $Connection->db->prepare($query);
347
                        $sth->execute(array(':source' => $database_file));
348
                } catch(PDOException $e) {
349
                        return "error : ".$e->getMessage();
350
                }
351
		
352
		if ($fh = fopen($database_file,"r")) {
353
			//$query_dest = 'INSERT INTO aircraft_modes (`AircraftID`,`FirstCreated`,`LastModified`, `ModeS`,`ModeSCountry`,`Registration`,`ICAOTypeCode`,`SerialNo`, `OperatorFlagCode`, `Manufacturer`, `Type`, `FirstRegDate`, `CurrentRegDate`, `Country`, `PreviousID`, `DeRegDate`, `Status`, `PopularName`,`GenericName`,`AircraftClass`, `Engines`, `OwnershipStatus`,`RegisteredOwners`,`MTOW`, `TotalHours`, `YearBuilt`, `CofACategory`, `CofAExpiry`, `UserNotes`, `Interested`, `UserTag`, `InfoUrl`, `PictureUrl1`, `PictureUrl2`, `PictureUrl3`, `UserBool1`, `UserBool2`, `UserBool3`, `UserBool4`, `UserBool5`, `UserString1`, `UserString2`, `UserString3`, `UserString4`, `UserString5`, `UserInt1`, `UserInt2`, `UserInt3`, `UserInt4`, `UserInt5`) VALUES (:AircraftID,:FirstCreated,:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:SerialNo, :OperatorFlagCode, :Manufacturer, :Type, :FirstRegDate, :CurrentRegDate, :Country, :PreviousID, :DeRegDate, :Status, :PopularName,:GenericName,:AircraftClass, :Engines, :OwnershipStatus,:RegisteredOwners,:MTOW, :TotalHours,:YearBuilt, :CofACategory, :CofAExpiry, :UserNotes, :Interested, :UserTag, :InfoUrl, :PictureUrl1, :PictureUrl2, :PictureUrl3, :UserBool1, :UserBool2, :UserBool3, :UserBool4, :UserBool5, :UserString1, :UserString2, :UserString3, :UserString4, :UserString5, :UserInt1, :UserInt2, :UserInt3, :UserInt4, :UserInt5)';
354
			$query_dest = 'INSERT INTO aircraft_modes (LastModified,ModeS,Registration,ICAOTypeCode,Source,source_type) VALUES (:lastmodified,:ModeS,:Registration,:ICAOTypeCode,:source,:source_type)';
355
		
356
			$Connection = new Connection();
357
			$sth_dest = $Connection->db->prepare($query_dest);
358
			try {
359
				if ($globalTransaction) $Connection->db->beginTransaction();
360
				$tmp = fgetcsv($fh,9999,',',"'");
0 ignored issues
show
Unused Code introduced by
$tmp is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
361
            			while (!feof($fh)) {
362
            				$line = fgetcsv($fh,9999,',',"'");
363
            				
364
					//FFFFFF                     RIDEAU VALLEY SOARINGASW-20               C-FBKN MZ 123.400
365
					//print_r($line);
366
            				$values['ModeS'] = $line[1];
0 ignored issues
show
Coding Style Comprehensibility introduced by
$values was never initialized. Although not strictly required by PHP, it is generally a good practice to add $values = array(); before regardless.

Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.

Let’s take a look at an example:

foreach ($collection as $item) {
    $myArray['foo'] = $item->getFoo();

    if ($item->hasBar()) {
        $myArray['bar'] = $item->getBar();
    }

    // do something with $myArray
}

As you can see in this example, the array $myArray is initialized the first time when the foreach loop is entered. You can also see that the value of the bar key is only written conditionally; thus, its value might result from a previous iteration.

This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.

Loading history...
367
            				$values['Registration'] = $line[3];
0 ignored issues
show
Bug introduced by
The variable $values does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
368
            				$values['ICAOTypeCode'] = '';
369
            				$aircraft_name = $line[2];
370
            				// Check if we can find ICAO, else set it to GLID
371
            				$aircraft_name_split = explode(' ',$aircraft_name);
372
            				$search_more = '';
373
            				if (count($aircraft_name) > 1 && strlen($aircraft_name_split[1]) > 3) $search_more .= " AND LIKE '%".$aircraft_name_split[0]."%'";
374
            				$query_search = "SELECT * FROM aircraft WHERE type LIKE '%".$aircraft_name."%'".$search_more;
375
            				$sth_search = $Connection->db->prepare($query_search);
376
					try {
377
                                    		$sth_search->execute();
378
	            				$result = $sth_search->fetch(PDO::FETCH_ASSOC);
379
	            				if (isset($result['icao']) && $result['icao'] != '') $values['ICAOTypeCode'] = $result['icao'];
380
					} catch(PDOException $e) {
381
						return "error : ".$e->getMessage();
382
					}
383
					//if (!isset($values['ICAOTypeCode'])) $values['ICAOTypeCode'] = 'GLID';
384
					// Add data to db
385
					if ($values['Registration'] != '' && $values['Registration'] != '0000' && $values['ICAOTypeCode'] != '') {
386
						//$query_dest_values = array(':AircraftID' => $values['AircraftID'],':FirstCreated' => $values['FirstCreated'],':LastModified' => $values['LastModified'],':ModeS' => $values['ModeS'],':ModeSCountry' => $values['ModeSCountry'],':Registration' => $values['Registration'],':ICAOTypeCode' => $values['ICAOTypeCode'],':SerialNo' => $values['SerialNo'], ':OperatorFlagCode' => $values['OperatorFlagCode'], ':Manufacturer' => $values['Manufacturer'], ':Type' => $values['Type'], ':FirstRegDate' => $values['FirstRegDate'], ':CurrentRegDate' => $values['CurrentRegDate'], ':Country' => $values['Country'], ':PreviousID' => $values['PreviousID'], ':DeRegDate' => $values['DeRegDate'], ':Status' => $values['Status'], ':PopularName' => $values['PopularName'],':GenericName' => $values['GenericName'],':AircraftClass' => $values['AircraftClass'], ':Engines' => $values['Engines'], ':OwnershipStatus' => $values['OwnershipStatus'],':RegisteredOwners' => $values['RegisteredOwners'],':MTOW' => $values['MTOW'], ':TotalHours' => $values['TotalHours'],':YearBuilt' => $values['YearBuilt'], ':CofACategory' => $values['CofACategory'], ':CofAExpiry' => $values['CofAExpiry'], ':UserNotes' => $values['UserNotes'], ':Interested' => $values['Interested'], ':UserTag' => $values['UserTag'], ':InfoUrl' => $values['InfoURL'], ':PictureUrl1' => $values['PictureURL1'], ':PictureUrl2' => $values['PictureURL2'], ':PictureUrl3' => $values['PictureURL3'], ':UserBool1' => $values['UserBool1'], ':UserBool2' => $values['UserBool2'], ':UserBool3' => $values['UserBool3'], ':UserBool4' => $values['UserBool4'], ':UserBool5' => $values['UserBool5'], ':UserString1' => $values['UserString1'], ':UserString2' => $values['UserString2'], ':UserString3' => $values['UserString3'], ':UserString4' => $values['UserString4'], ':UserString5' => $values['UserString5'], ':UserInt1' => $values['UserInt1'], ':UserInt2' => $values['UserInt2'], ':UserInt3' => $values['UserInt3'], ':UserInt4' => $values['UserInt4'], ':UserInt5' => $values['UserInt5']);
387
						$query_dest_values = array(':lastmodified' => date('Y-m-d H:m:s'),':ModeS' => $values['ModeS'],':Registration' => $values['Registration'],':ICAOTypeCode' => $values['ICAOTypeCode'],':source' => $database_file,':source_type' => 'flarm');
388
						//print_r($query_dest_values);
389
						$sth_dest->execute($query_dest_values);
390
					}
391
				}
392
				if ($globalTransaction) $Connection->db->commit();
393
			} catch(PDOException $e) {
394
				return "error : ".$e->getMessage();
395
			}
396
		}
397
398
		$query = "DELETE FROM aircraft_modes WHERE Source = :source AND ModeS IN (SELECT * FROM (SELECT ModeS FROM aircraft_modes WHERE Source = 'ACARS') _alias)";
399
		try {
400
			$Connection = new Connection();
401
			$sth = $Connection->db->prepare($query);
402
                        $sth->execute(array(':source' => $database_file));
403
                } catch(PDOException $e) {
404
                        return "error : ".$e->getMessage();
405
                }
406
		return '';
407
	}
408
409
	public static function retrieve_owner($database_file,$country = 'F') {
410
		global $globalTransaction, $globalMasterSource;
411
		//$query = 'TRUNCATE TABLE aircraft_modes';
412
		$query = "DELETE FROM aircraft_owner WHERE Source = '' OR Source IS NULL OR Source = :source; DELETE FROM aircraft_modes WHERE Source = :source;";
413
		try {
414
			$Connection = new Connection();
415
			$sth = $Connection->db->prepare($query);
416
                        $sth->execute(array(':source' => $database_file));
417
                } catch(PDOException $e) {
418
                        return "error : ".$e->getMessage();
419
                }
420
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
421
		$Spotter = new Spotter();
422
		if ($fh = fopen($database_file,"r")) {
423
			//$query_dest = 'INSERT INTO aircraft_modes (`AircraftID`,`FirstCreated`,`LastModified`, `ModeS`,`ModeSCountry`,`Registration`,`ICAOTypeCode`,`SerialNo`, `OperatorFlagCode`, `Manufacturer`, `Type`, `FirstRegDate`, `CurrentRegDate`, `Country`, `PreviousID`, `DeRegDate`, `Status`, `PopularName`,`GenericName`,`AircraftClass`, `Engines`, `OwnershipStatus`,`RegisteredOwners`,`MTOW`, `TotalHours`, `YearBuilt`, `CofACategory`, `CofAExpiry`, `UserNotes`, `Interested`, `UserTag`, `InfoUrl`, `PictureUrl1`, `PictureUrl2`, `PictureUrl3`, `UserBool1`, `UserBool2`, `UserBool3`, `UserBool4`, `UserBool5`, `UserString1`, `UserString2`, `UserString3`, `UserString4`, `UserString5`, `UserInt1`, `UserInt2`, `UserInt3`, `UserInt4`, `UserInt5`) VALUES (:AircraftID,:FirstCreated,:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:SerialNo, :OperatorFlagCode, :Manufacturer, :Type, :FirstRegDate, :CurrentRegDate, :Country, :PreviousID, :DeRegDate, :Status, :PopularName,:GenericName,:AircraftClass, :Engines, :OwnershipStatus,:RegisteredOwners,:MTOW, :TotalHours,:YearBuilt, :CofACategory, :CofAExpiry, :UserNotes, :Interested, :UserTag, :InfoUrl, :PictureUrl1, :PictureUrl2, :PictureUrl3, :UserBool1, :UserBool2, :UserBool3, :UserBool4, :UserBool5, :UserString1, :UserString2, :UserString3, :UserString4, :UserString5, :UserInt1, :UserInt2, :UserInt3, :UserInt4, :UserInt5)';
424
			$query_dest = 'INSERT INTO aircraft_owner (registration,base,owner,date_first_reg,Source) VALUES (:registration,:base,:owner,:date_first_reg,:source)';
425
		        $query_modes = 'INSERT INTO aircraft_modes (ModeS,ModeSCountry,Registration,ICAOTypeCode,Source) VALUES (:modes,:modescountry,:registration,:icaotypecode,:source)';
426
		        
427
			$Connection = new Connection();
428
			$sth_dest = $Connection->db->prepare($query_dest);
429
			$sth_modes = $Connection->db->prepare($query_modes);
430
			try {
431
				if ($globalTransaction) $Connection->db->beginTransaction();
432
				$tmp = fgetcsv($fh,9999,',','"');
0 ignored issues
show
Unused Code introduced by
$tmp is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
433
            			while (!feof($fh)) {
434
            				$line = fgetcsv($fh,9999,',','"');
435
            				$values = array();
436
            				//print_r($line);
437
            				if ($country == 'F') {
438
            				    $values['registration'] = $line[0];
439
            				    $values['base'] = $line[4];
440
            				    $values['owner'] = $line[5];
441
            				    if ($line[6] == '') $values['date_first_reg'] = null;
442
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[6]));
443
					    $values['cancel'] = $line[7];
444
					} elseif ($country == 'EI') {
445
					    // TODO : add modeS & reg to aircraft_modes
446
            				    $values['registration'] = $line[0];
447
            				    $values['base'] = $line[3];
448
            				    $values['owner'] = $line[2];
449
            				    if ($line[1] == '') $values['date_first_reg'] = null;
450
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[1]));
451
					    $values['cancel'] = '';
452
					    $values['modes'] = $line[7];
453
					    $values['icao'] = $line[8];
454
					    
455
					} elseif ($country == 'HB') {
456
					    // TODO : add modeS & reg to aircraft_modes
457
            				    $values['registration'] = $line[0];
458
            				    $values['base'] = null;
459
            				    $values['owner'] = $line[5];
460
            				    $values['date_first_reg'] = null;
461
					    $values['cancel'] = '';
462
					    $values['modes'] = $line[4];
463
					    $values['icao'] = $line[7];
464
					} elseif ($country == 'OK') {
465
					    // TODO : add modeS & reg to aircraft_modes
466
            				    $values['registration'] = $line[3];
467
            				    $values['base'] = null;
468
            				    $values['owner'] = $line[5];
469
            				    if ($line[18] == '') $values['date_first_reg'] = null;
470
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[18]));
471
					    $values['cancel'] = '';
472
					} elseif ($country == 'VH') {
473
					    // TODO : add modeS & reg to aircraft_modes
474
            				    $values['registration'] = $line[0];
475
            				    $values['base'] = null;
476
            				    $values['owner'] = $line[12];
477
            				    if ($line[28] == '') $values['date_first_reg'] = null;
478
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[28]));
479
480
					    $values['cancel'] = $line[39];
481
					} elseif ($country == 'OE' || $country == '9A' || $country == 'VP' || $country == 'LX' || $country == 'P2' || $country == 'HC') {
482
            				    $values['registration'] = $line[0];
483
            				    $values['base'] = null;
484
            				    $values['owner'] = $line[4];
485
            				    $values['date_first_reg'] = null;
486
					    $values['cancel'] = '';
487
					} elseif ($country == 'CC') {
488
            				    $values['registration'] = $line[0];
489
            				    $values['base'] = null;
490
            				    $values['owner'] = $line[6];
491
            				    $values['date_first_reg'] = null;
492
					    $values['cancel'] = '';
493
					} elseif ($country == 'HJ') {
494
            				    $values['registration'] = $line[0];
495
            				    $values['base'] = null;
496
            				    $values['owner'] = $line[8];
497
            				    if ($line[7] == '') $values['date_first_reg'] = null;
498
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[7]));
499
					    $values['cancel'] = '';
500
					} elseif ($country == 'PP') {
501
            				    $values['registration'] = $line[0];
502
            				    $values['base'] = null;
503
            				    $values['owner'] = $line[4];
504
            				    if ($line[6] == '') $values['date_first_reg'] = null;
505
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[6]));
506
					    $values['cancel'] = $line[7];
507
					} elseif ($country == 'E7') {
508
            				    $values['registration'] = $line[0];
509
            				    $values['base'] = null;
510
            				    $values['owner'] = $line[4];
511
            				    if ($line[5] == '') $values['date_first_reg'] = null;
512
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[5]));
513
					    $values['cancel'] = '';
514
					} elseif ($country == '8Q') {
515
            				    $values['registration'] = $line[0];
516
            				    $values['base'] = null;
517
            				    $values['owner'] = $line[3];
518
            				    if ($line[7] == '') $values['date_first_reg'] = null;
519
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[7]));
520
					    $values['cancel'] = '';
521
					} elseif ($country == 'ZK') {
522
            				    $values['registration'] = $line[0];
523
            				    $values['base'] = null;
524
            				    $values['owner'] = $line[3];
525
            				    $values['date_first_reg'] = null;
526
					    $values['cancel'] = '';
527
					    $values['modes'] = $line[5];
528
					    $values['icao'] = $line[9];
529
					} elseif ($country == 'M') {
530
            				    $values['registration'] = $line[0];
531
            				    $values['base'] = null;
532
            				    $values['owner'] = $line[6];
533
            				    $values['date_first_reg'] = date("Y-m-d",strtotime($line[5]));
534
					    $values['cancel'] = date("Y-m-d",strtotime($line[8]));
535
					    $values['modes'] = $line[4];
536
					    $values['icao'] = $line[10];
537
					} elseif ($country == 'OY') {
538
            				    $values['registration'] = $line[0];
539
            				    $values['date_first_reg'] = date("Y-m-d",strtotime($line[4]));
540
					    $values['modes'] = $line[5];
541
					    $values['icao'] = $line[6];
542
					} elseif ($country == 'PH') {
543
            				    $values['registration'] = $line[0];
544
            				    $values['date_first_reg'] = date("Y-m-d",strtotime($line[3]));
545
					    $values['modes'] = $line[4];
546
					    $values['icao'] = $line[5];
547
					} elseif ($country == 'OM' || $country == 'TF') {
548
            				    $values['registration'] = $line[0];
549
            				    $values['base'] = null;
550
            				    $values['owner'] = $line[3];
551
            				    $values['date_first_reg'] = null;
552
					    $values['cancel'] = '';
553
					}
554
					if (isset($values['cancel']) && $values['cancel'] == '' && $values['registration'] != null && isset($values['owner'])) {
555
						$query_dest_values = array(':registration' => $values['registration'],':base' => $values['base'],':date_first_reg' => $values['date_first_reg'],':owner' => $values['owner'],':source' => $database_file);
556
						$sth_dest->execute($query_dest_values);
557
					}
558
					if ($globalMasterSource && $values['registration'] != null && isset($values['modes']) && $values['modes'] != '') {
559
						$modescountry = $Spotter->countryFromAircraftRegistration($values['registration']);
560
						$query_modes_values = array(':registration' => $values['registration'],':modes' => $values['modes'],':modescountry' => $modescountry,':icaotypecode' => $values['icao'],':source' => $database_file);
561
						$sth_modes->execute($query_modes_values);
562
					}
563
				}
564
				if ($globalTransaction) $Connection->db->commit();
565
			} catch(PDOException $e) {
566
				return "error : ".$e->getMessage();
567
			}
568
		}
569
		return '';
570
	}
571
572
	/*
573
	* This function is used to create a list of airports. Sources : Wikipedia, ourairports.com ans partow.net
574
	*/
575
	public static function update_airports() {
576
		global $tmp_dir, $globalTransaction, $globalDebug;
577
578
		require_once(dirname(__FILE__).'/libs/sparqllib.php');
579
		$db = sparql_connect('http://dbpedia.org/sparql');
0 ignored issues
show
Unused Code introduced by
$db is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
580
		$query = '
581
		    PREFIX dbo: <http://dbpedia.org/ontology/>
582
		    PREFIX dbp: <http://dbpedia.org/property/>
583
		    PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
584
		    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
585
		    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
586
		    SELECT ?name ?icao ?iata ?faa ?lid ?latitude ?longitude ?airport ?homepage ?type ?country ?country_bis ?altitude ?image
587
		    FROM <http://dbpedia.org>
588
		    WHERE {
589
			?airport rdf:type <http://dbpedia.org/ontology/Airport> .
590
591
			OPTIONAL {
592
			    ?airport dbo:icaoLocationIdentifier ?icao .
593
			    FILTER regex(?icao, "^[A-Z0-9]{4}$")
594
			}
595
596
			OPTIONAL {
597
			    ?airport dbo:iataLocationIdentifier ?iata .
598
			    FILTER regex(?iata, "^[A-Z0-9]{3}$")
599
			}
600
601
			OPTIONAL {
602
			    ?airport dbo:locationIdentifier ?lid .
603
			    FILTER regex(?lid, "^[A-Z0-9]{4}$")
604
			    FILTER (!bound(?icao) || (bound(?icao) && (?icao != ?lid)))
605
			    OPTIONAL {
606
				?airport_y rdf:type <http://dbpedia.org/ontology/Airport> .
607
				?airport_y dbo:icaoLocationIdentifier ?other_icao .
608
				FILTER (bound(?lid) && (?airport_y != ?airport && ?lid = ?other_icao))
609
			    }
610
			    FILTER (!bound(?other_icao))
611
			}
612
613
			OPTIONAL {
614
			    ?airport dbo:faaLocationIdentifier ?faa .
615
			    FILTER regex(?faa, "^[A-Z0-9]{3}$")
616
			    FILTER (!bound(?iata) || (bound(?iata) && (?iata != ?faa)))
617
			    OPTIONAL {
618
				?airport_x rdf:type <http://dbpedia.org/ontology/Airport> .
619
				?airport_x dbo:iataLocationIdentifier ?other_iata .
620
				FILTER (bound(?faa) && (?airport_x != ?airport && ?faa = ?other_iata))
621
			    }
622
			    FILTER (!bound(?other_iata))
623
			}
624
625
			FILTER (bound(?icao) || bound(?iata) || bound(?faa) || bound(?lid))
626
	
627
			OPTIONAL {
628
			    ?airport rdfs:label ?name
629
			    FILTER (lang(?name) = "en")
630
			}
631
    
632
			OPTIONAL {
633
			    ?airport foaf:homepage ?homepage
634
			}
635
		    
636
			OPTIONAL {
637
			    ?airport dbp:coordinatesRegion ?country
638
			}
639
    
640
			OPTIONAL {
641
			    ?airport dbp:type ?type
642
			}
643
			
644
			OPTIONAL {
645
			    ?airport dbo:elevation ?altitude
646
			}
647
			OPTIONAL {
648
			    ?airport dbp:image ?image
649
			}
650
651
			{
652
			    ?airport geo:lat ?latitude .
653
			    ?airport geo:long ?longitude .
654
			    FILTER (datatype(?latitude) = xsd:float)
655
			    FILTER (datatype(?longitude) = xsd:float)
656
			} UNION {
657
			    ?airport geo:lat ?latitude .
658
			    ?airport geo:long ?longitude .
659
			    FILTER (datatype(?latitude) = xsd:double)
660
			    FILTER (datatype(?longitude) = xsd:double)
661
			    OPTIONAL {
662
				?airport geo:lat ?lat_f .
663
				?airport geo:long ?long_f .
664
				FILTER (datatype(?lat_f) = xsd:float)
665
				FILTER (datatype(?long_f) = xsd:float)
666
			    }
667
			    FILTER (!bound(?lat_f) && !bound(?long_f))
668
			}
669
670
		    }
671
		    ORDER BY ?airport
672
		';
673
		$result = sparql_query($query);
674
  
675
		/*
676
		$query = 'TRUNCATE TABLE airport';
677
		try {
678
			$Connection = new Connection();
679
			$sth = $Connection->db->prepare($query);
680
                        $sth->execute();
681
                } catch(PDOException $e) {
682
                        return "error : ".$e->getMessage();
683
                }
684
                */
685
                /*
686
		$query = 'ALTER TABLE airport DROP INDEX icaoidx';
687
		try {
688
			$Connection = new Connection();
689
			$sth = $Connection->db->prepare($query);
690
                        $sth->execute();
691
                } catch(PDOException $e) {
692
                        return "error : ".$e->getMessage();
693
                }
694
                */
695
696
		$query_dest = "INSERT INTO airport (name,city,country,iata,icao,latitude,longitude,altitude,type,home_link,wikipedia_link,image_thumb,image)
697
		    VALUES (:name, :city, :country, :iata, :icao, :latitude, :longitude, :altitude, :type, :home_link, :wikipedia_link, :image_thumb, :image)";
698
		$Connection = new Connection();
699
		$sth_dest = $Connection->db->prepare($query_dest);
700
		if ($globalTransaction) $Connection->db->beginTransaction();
701
  
702
		$i = 0;
703
		while($row = sparql_fetch_array($result))
704
		{
705
			if ($i >= 1) {
706
			//print_r($row);
707
			if (!isset($row['iata'])) $row['iata'] = '';
708
			if (!isset($row['icao'])) $row['icao'] = '';
709
			if (!isset($row['type'])) $row['type'] = '';
710
			if (!isset($row['altitude'])) $row['altitude'] = '';
711
			if (isset($row['city_bis'])) {
712
				$row['city'] = $row['city_bis'];
713
			}
714
			if (!isset($row['city'])) $row['city'] = '';
715
			if (!isset($row['country'])) $row['country'] = '';
716
			if (!isset($row['homepage'])) $row['homepage'] = '';
717
			if (!isset($row['wikipedia_page'])) $row['wikipedia_page'] = '';
718
			if (!isset($row['name'])) continue;
719
			if (!isset($row['image'])) {
720
				$row['image'] = '';
721
				$row['image_thumb'] = '';
722
			} else {
723
				$image = str_replace(' ','_',$row['image']);
724
				$digest = md5($image);
725
				$folder = $digest[0] . '/' . $digest[0] . $digest[1] . '/' . $image . '/220px-' . $image;
726
				$row['image_thumb'] = 'http://upload.wikimedia.org/wikipedia/commons/thumb/' . $folder;
727
				$folder = $digest[0] . '/' . $digest[0] . $digest[1] . '/' . $image;
728
				$row['image'] = 'http://upload.wikimedia.org/wikipedia/commons/' . $folder;
729
			}
730
			
731
			$country = explode('-',$row['country']);
732
			$row['country'] = $country[0];
733
			
734
			$row['type'] = trim($row['type']);
735
			if ($row['type'] == 'Military: Naval Auxiliary Air Station' || $row['type'] == 'http://dbpedia.org/resource/Naval_air_station' || $row['type'] == 'Military: Naval Air Station' || $row['type'] == 'Military Northern Fleet' || $row['type'] == 'Military and industrial' || $row['type'] == 'Military: Royal Air Force station' || $row['type'] == 'http://dbpedia.org/resource/Military_airbase' || $row['type'] == 'Military: Naval air station' || preg_match('/air base/i',$row['name'])) {
736
				$row['type'] = 'military';
737
			} elseif ($row['type'] == 'http://dbpedia.org/resource/Airport' || $row['type'] == 'Civil' || $row['type'] == 'Public use' || $row['type'] == 'Public' || $row['type'] == 'http://dbpedia.org/resource/Civilian' || $row['type'] == 'Public, Civilian' || $row['type'] == 'Public / Military' || $row['type'] == 'Private & Civilian' || $row['type'] == 'Civilian and Military' || $row['type'] == 'Public/military' || $row['type'] == 'Active With Few Facilities' || $row['type'] == '?ivilian' || $row['type'] == 'Civil/Military' || $row['type'] == 'NA' || $row['type'] == 'Public/Military') {
738
				$row['type'] = 'small_airport';
739
			}
740
			
741
			$row['city'] = urldecode(str_replace('_',' ',str_replace('http://dbpedia.org/resource/','',$row['city'])));
742
			$query_dest_values = array(':name' => $row['name'],':iata' => $row['iata'],':icao' => $row['icao'],':latitude' => $row['latitude'],':longitude' => $row['longitude'],':altitude' => round($row['altitude']),':type' => $row['type'],':city' => $row['city'],':country' => $row['country'],':home_link' => $row['homepage'],':wikipedia_link' => $row['wikipedia_page'],':image' => $row['image'],':image_thumb' => $row['image_thumb']);
743
			//print_r($query_dest_values);
744
			
745
			if ($row['icao'] != '') {
746
				try {
747
					$sth = $Connection->db->prepare('SELECT COUNT(*) FROM airport WHERE icao = :icao');
748
					$sth->execute(array(':icao' => $row['icao']));
749
				} catch(PDOException $e) {
750
					return "error : ".$e->getMessage();
751
				}
752
					if ($sth->fetchColumn() > 0) {
753
						// Update ?
754
						$query = 'UPDATE airport SET type = :type WHERE icao = :icao';
755
						try {
756
							$sth = $Connection->db->prepare($query);
757
							$sth->execute(array(':icao' => $row['icao'],':type' => $row['type']));
758
						} catch(PDOException $e) {
759
							return "error : ".$e->getMessage();
760
						}
761
						echo $row['icao'].' : '.$row['type']."\n";
762
					} else {
763
						try {
764
							$sth_dest->execute($query_dest_values);
765
						} catch(PDOException $e) {
766
							return "error : ".$e->getMessage();
767
						}
768
					}
769
				}
770
			}
771
772
			$i++;
773
		}
774
		if ($globalTransaction) $Connection->db->commit();
775
		/*
776
		echo "Delete duplicate rows...\n";
777
		$query = 'ALTER IGNORE TABLE airport ADD UNIQUE INDEX icaoidx (icao)';
778
		try {
779
			$Connection = new Connection();
780
			$sth = $Connection->db->prepare($query);
781
                        $sth->execute();
782
                } catch(PDOException $e) {
783
                        return "error : ".$e->getMessage();
784
                }
785
                */
786
787
788
		/*
789
		if ($globalDebug) echo "Insert Not available Airport...\n";
790
		$query = "INSERT INTO airport (airport_id,name,city,country,iata,icao,latitude,longitude,altitude,type,home_link,wikipedia_link,image,image_thumb)
791
		    VALUES (:airport_id, :name, :city, :country, :iata, :icao, :latitude, :longitude, :altitude, :type, :home_link, :wikipedia_link, :image, :image_thumb)";
792
		$query_values = array(':airport_id' => $i, ':name' => 'Not available',':iata' => 'NA',':icao' => 'NA',':latitude' => '0',':longitude' => '0',':altitude' => '0',':type' => 'NA',':city' => 'N/A',':country' => 'N/A',':home_link' => '',':wikipedia_link' => '',':image' => '',':image_thumb' => '');
793
		try {
794
			$Connection = new Connection();
795
			$sth = $Connection->db->prepare($query);
796
                        $sth->execute($query_values);
797
                } catch(PDOException $e) {
798
                        return "error : ".$e->getMessage();
799
                }
800
                */
801
		$i++;
802
/*
803
		$query = 'DELETE FROM airport WHERE airport_id IN (SELECT * FROM (SELECT min(a.airport_id) FROM airport a GROUP BY a.icao) x)';
804
		try {
805
			$Connection = new Connection();
806
			$sth = $Connection->db->prepare($query);
807
                        $sth->execute();
808
                } catch(PDOException $e) {
809
                        return "error : ".$e->getMessage();
810
                }
811
*/
812
                
813
		echo "Download data from ourairports.com...\n";
814
		$delimiter = ',';
815
		$out_file = $tmp_dir.'airports.csv';
816
		update_db::download('http://ourairports.com/data/airports.csv',$out_file);
817
		if (!file_exists($out_file) || !is_readable($out_file)) return FALSE;
818
		echo "Add data from ourairports.com...\n";
819
820
		$header = NULL;
821
		if (($handle = fopen($out_file, 'r')) !== FALSE)
822
		{
823
			$Connection = new Connection();
824
			//$Connection->db->beginTransaction();
825
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
826
			{
827
				if(!$header) $header = $row;
828
				else {
829
					$data = array();
0 ignored issues
show
Unused Code introduced by
$data is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
830
					$data = array_combine($header, $row);
831
					try {
832
						$sth = $Connection->db->prepare('SELECT COUNT(*) FROM airport WHERE icao = :icao');
833
						$sth->execute(array(':icao' => $data['ident']));
834
					} catch(PDOException $e) {
835
						return "error : ".$e->getMessage();
836
					}
837
					if ($sth->fetchColumn() > 0) {
838
						$query = 'UPDATE airport SET type = :type WHERE icao = :icao';
839
						try {
840
							$sth = $Connection->db->prepare($query);
841
							$sth->execute(array(':icao' => $data['ident'],':type' => $data['type']));
842
						} catch(PDOException $e) {
843
							return "error : ".$e->getMessage();
844
						}
845
					} else {
846
						if ($data['gps_code'] == $data['ident']) {
847
						$query = "INSERT INTO airport (name,city,country,iata,icao,latitude,longitude,altitude,type,home_link,wikipedia_link)
848
						    VALUES (:name, :city, :country, :iata, :icao, :latitude, :longitude, :altitude, :type, :home_link, :wikipedia_link)";
849
						$query_values = array(':name' => $data['name'],':iata' => $data['iata_code'],':icao' => $data['gps_code'],':latitude' => $data['latitude_deg'],':longitude' => $data['longitude_deg'],':altitude' => round($data['elevation_ft']),':type' => $data['type'],':city' => $data['municipality'],':country' => $data['iso_country'],':home_link' => $data['home_link'],':wikipedia_link' => $data['wikipedia_link']);
850
						try {
851
							$sth = $Connection->db->prepare($query);
852
							$sth->execute($query_values);
853
						} catch(PDOException $e) {
854
							return "error : ".$e->getMessage();
855
						}
856
						$i++;
857
						}
858
					}
859
				}
860
			}
861
			fclose($handle);
862
			//$Connection->db->commit();
863
		}
864
		
865
		
866
		echo "Download data from another free database...\n";
867
		$out_file = $tmp_dir.'GlobalAirportDatabase.zip';
868
		update_db::download('http://www.partow.net/downloads/GlobalAirportDatabase.zip',$out_file);
869
		if (!file_exists($out_file) || !is_readable($out_file)) return FALSE;
870
		update_db::unzip($out_file);
871
		$header = NULL;
872
		echo "Add data from another free database...\n";
873
		$delimiter = ':';
874
		$Connection = new Connection();
875
		if (($handle = fopen($tmp_dir.'GlobalAirportDatabase.txt', 'r')) !== FALSE)
876
		{
877
			//$Connection->db->beginTransaction();
878
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
879
			{
880
				if(!$header) $header = $row;
881
				else {
882
					$data = $row;
883
884
					$query = 'UPDATE airport SET city = :city, country = :country WHERE icao = :icao';
885
					try {
886
						$sth = $Connection->db->prepare($query);
887
						$sth->execute(array(':icao' => $data[0],':city' => ucwords(strtolower($data[3])),':country' => ucwords(strtolower($data[4]))));
888
					} catch(PDOException $e) {
889
						return "error : ".$e->getMessage();
890
					}
891
				}
892
			}
893
			fclose($handle);
894
			//$Connection->db->commit();
895
		}
896
897
		echo "Put type military for all air base";
898
		$Connection = new Connection();
899
		try {
900
			$sth = $Connection->db->prepare("SELECT icao FROM airport WHERE name LIKE '%Air Base%'");
901
			$sth->execute();
902
		} catch(PDOException $e) {
903
			return "error : ".$e->getMessage();
904
		}
905
		while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
906
			$query2 = 'UPDATE airport SET type = :type WHERE icao = :icao';
907
			try {
908
				$sth2 = $Connection->db->prepare($query2);
909
				$sth2->execute(array(':icao' => $row['icao'],':type' => 'military'));
910
			} catch(PDOException $e) {
911
				return "error : ".$e->getMessage();
912
			}
913
		}
914
		return "success";
915
	}
916
	
917
	public static function translation() {
918
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
919
		global $tmp_dir, $globalTransaction;
920
		$Spotter = new Spotter();
921
		//$out_file = $tmp_dir.'translation.zip';
922
		//update_db::download('http://www.acarsd.org/download/translation.php',$out_file);
923
		//if (!file_exists($out_file) || !is_readable($out_file)) return FALSE;
924
		
925
		//$query = 'TRUNCATE TABLE translation';
926
		$query = "DELETE FROM translation WHERE Source = '' OR Source = :source";
927
		try {
928
			$Connection = new Connection();
929
			$sth = $Connection->db->prepare($query);
930
                        $sth->execute(array(':source' => 'translation.csv'));
931
                } catch(PDOException $e) {
932
                        return "error : ".$e->getMessage();
933
                }
934
935
		
936
		//update_db::unzip($out_file);
937
		$header = NULL;
0 ignored issues
show
Unused Code introduced by
$header is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
938
		$delimiter = ';';
939
		$Connection = new Connection();
940
		if (($handle = fopen($tmp_dir.'translation.csv', 'r')) !== FALSE)
941
		{
942
			$i = 0;
943
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
944
			//$Connection->db->beginTransaction();
945
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
946
			{
947
				$i++;
948
				if($i > 12) {
949
					$data = $row;
950
					$operator = $data[2];
951
					if ($operator != '' && is_numeric(substr(substr($operator, 0, 3), -1, 1))) {
952
                                                $airline_array = $Spotter->getAllAirlineInfo(substr($operator, 0, 2));
953
                                                //echo substr($operator, 0, 2)."\n";;
954
                                                if (count($airline_array) > 0) {
955
							//print_r($airline_array);
956
							$operator = $airline_array[0]['icao'].substr($operator,2);
957
                                                }
958
                                        }
959
					
960
					$operator_correct = $data[3];
961
					if ($operator_correct != '' && is_numeric(substr(substr($operator_correct, 0, 3), -1, 1))) {
962
                                                $airline_array = $Spotter->getAllAirlineInfo(substr($operator_correct, 0, 2));
963
                                                if (count($airline_array) > 0) {
964
                                            		$operator_correct = $airline_array[0]['icao'].substr($operator_correct,2);
965
                                            	}
966
                                        }
967
					$query = 'INSERT INTO translation (Reg,Reg_correct,Operator,Operator_correct,Source) VALUES (:Reg, :Reg_correct, :Operator, :Operator_correct, :source)';
968
					try {
969
						$sth = $Connection->db->prepare($query);
970
						$sth->execute(array(':Reg' => $data[0],':Reg_correct' => $data[1],':Operator' => $operator,':Operator_correct' => $operator_correct, ':source' => 'translation.csv'));
971
					} catch(PDOException $e) {
972
						return "error : ".$e->getMessage();
973
					}
974
				}
975
			}
976
			fclose($handle);
977
			//$Connection->db->commit();
978
		}
979
		return '';
980
        }
981
	
982
	public static function translation_fam() {
983
		global $tmp_dir, $globalTransaction;
984
		$query = "DELETE FROM translation WHERE Source = '' OR Source = :source";
985
		try {
986
			$Connection = new Connection();
987
			$sth = $Connection->db->prepare($query);
988
			$sth->execute(array(':source' => 'website_fam'));
989
		} catch(PDOException $e) {
990
			return "error : ".$e->getMessage();
991
		}
992
		//update_db::unzip($out_file);
993
		$header = NULL;
0 ignored issues
show
Unused Code introduced by
$header is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
994
		$delimiter = "\t";
995
		$Connection = new Connection();
996
		if (($handle = fopen($tmp_dir.'translation.tsv', 'r')) !== FALSE)
997
		{
998
			$i = 0;
999
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1000
			//$Connection->db->beginTransaction();
1001
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1002
			{
1003
				if ($i > 0) {
1004
					$query = 'INSERT INTO translation (Reg,Reg_correct,Operator,Operator_correct,Source) VALUES (:Reg, :Reg_correct, :Operator, :Operator_correct, :source)';
1005
					try {
1006
						$sth = $Connection->db->prepare($query);
1007
						$sth->execute(array(':Reg' => $data[0],':Reg_correct' => $data[1],':Operator' => $data[2],':Operator_correct' => $data[3], ':source' => 'website_fam'));
1008
					} catch(PDOException $e) {
1009
						return "error : ".$e->getMessage();
1010
					}
1011
				}
1012
				$i++;
1013
			}
1014
			fclose($handle);
1015
			//$Connection->db->commit();
1016
		}
1017
		return '';
1018
        }
1019
1020
	/*
1021
	* This function use FAA public data.
1022
	* With the help of data from other source, Mfr id is added to manufacturer table. Then ModeS with ICAO are added based on that.
1023
	*/
1024
	public static function modes_faa() {
1025
		global $tmp_dir, $globalTransaction, $globalDebug;
1026
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source = :source";
1027
		try {
1028
			$Connection = new Connection();
1029
			$sth = $Connection->db->prepare($query);
1030
                        $sth->execute(array(':source' => 'website_faa'));
1031
                } catch(PDOException $e) {
1032
                        return "error : ".$e->getMessage();
1033
                }
1034
1035
		$query = "DELETE FROM aircraft_owner WHERE Source = '' OR Source = :source";
1036
		try {
1037
			$Connection = new Connection();
1038
			$sth = $Connection->db->prepare($query);
1039
                        $sth->execute(array(':source' => 'website_faa'));
1040
                } catch(PDOException $e) {
1041
                        return "error : ".$e->getMessage();
1042
                }
1043
1044
		$delimiter = ",";
1045
		$mfr = array();
0 ignored issues
show
Unused Code introduced by
$mfr is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1046
		$Connection = new Connection();
1047
		if (($handle = fopen($tmp_dir.'MASTER.txt', 'r')) !== FALSE)
1048
		{
1049
			$i = 0;
1050
			if ($globalTransaction) $Connection->db->beginTransaction();
1051
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1052
			{
1053
				if ($i > 0) {
1054
					$query_search = 'SELECT icaotypecode FROM aircraft_modes WHERE registration = :registration AND Source <> :source LIMIT 1';
1055
					try {
1056
						$sths = $Connection->db->prepare($query_search);
1057
						$sths->execute(array(':registration' => 'N'.$data[0],':source' => 'website_faa'));
1058
					} catch(PDOException $e) {
1059
						return "error s : ".$e->getMessage();
1060
					}
1061
					$result_search = $sths->fetchAll(PDO::FETCH_ASSOC);
1062
					if (!empty($result_search)) {
1063
						if ($globalDebug) echo '.';
1064
							//if ($globalDBdriver == 'mysql') {
1065
							//	$queryi = 'INSERT INTO faamfr (mfr,icao) VALUES (:mfr,:icao) ON DUPLICATE KEY UPDATE icao = :icao';
1066
							//} else {
1067
								$queryi = "INSERT INTO faamfr (mfr,icao) SELECT :mfr,:icao WHERE NOT EXISTS (SELECT 1 FROM faamfr WHERE mfr = :mfr);"; 
1068
							//}
1069
						try {
1070
							$sthi = $Connection->db->prepare($queryi);
1071
							$sthi->execute(array(':mfr' => $data[2],':icao' => $result_search[0]['icaotypecode']));
1072
						} catch(PDOException $e) {
1073
							return "error u : ".$e->getMessage();
1074
						}
1075
					} else {
1076
						$query_search_mfr = 'SELECT icao FROM faamfr WHERE mfr = :mfr';
1077
						try {
1078
							$sthsm = $Connection->db->prepare($query_search_mfr);
1079
							$sthsm->execute(array(':mfr' => $data[2]));
1080
						} catch(PDOException $e) {
1081
							return "error mfr : ".$e->getMessage();
1082
						}
1083
						$result_search_mfr = $sthsm->fetchAll(PDO::FETCH_ASSOC);
1084
						if (!empty($result_search_mfr)) {
1085
							if (trim($data[16]) == '' && trim($data[23]) != '') $data[16] = $data[23];
1086
							if (trim($data[16]) == '' && trim($data[15]) != '') $data[16] = $data[15];
1087
							$queryf = 'INSERT INTO aircraft_modes (FirstCreated,LastModified,ModeS,ModeSCountry,Registration,ICAOTypeCode,Source) VALUES (:FirstCreated,:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:source)';
1088
							try {
1089
								$sthf = $Connection->db->prepare($queryf);
1090
								$sthf->execute(array(':FirstCreated' => $data[16],':LastModified' => $data[15],':ModeS' => $data[33],':ModeSCountry' => $data[14], ':Registration' => 'N'.$data[0],':ICAOTypeCode' => $result_search_mfr[0]['icao'],':source' => 'website_faa'));
1091
							} catch(PDOException $e) {
1092
								return "error f : ".$e->getMessage();
1093
							}
1094
						}
1095
					}
1096
					if (strtotime($data[29]) > time()) {
1097
						if ($globalDebug) echo 'i';
1098
						$query = 'INSERT INTO aircraft_owner (registration,base,owner,date_first_reg,Source) VALUES (:registration,:base,:owner,:date_first_reg,:source)';
1099
						try {
1100
							$sth = $Connection->db->prepare($query);
1101
							$sth->execute(array(':registration' => 'N'.$data[0],':base' => $data[9],':owner' => ucwords(strtolower($data[6])),':date_first_reg' => date('Y-m-d',strtotime($data[23])), ':source' => 'website_faa'));
1102
						} catch(PDOException $e) {
1103
							return "error i : ".$e->getMessage();
1104
						}
1105
					}
1106
				}
1107
				if ($i % 90 == 0) {
1108
					if ($globalTransaction) $Connection->db->commit();
1109
					if ($globalTransaction) $Connection->db->beginTransaction();
1110
				}
1111
				$i++;
1112
			}
1113
			fclose($handle);
1114
			if ($globalTransaction) $Connection->db->commit();
1115
		}
1116
		return '';
1117
	}
1118
1119
	public static function modes_fam() {
1120
		global $tmp_dir, $globalTransaction;
1121
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source = :source";
1122
		try {
1123
			$Connection = new Connection();
1124
			$sth = $Connection->db->prepare($query);
1125
			$sth->execute(array(':source' => 'website_fam'));
1126
		} catch(PDOException $e) {
1127
			return "error : ".$e->getMessage();
1128
		}
1129
		$delimiter = "\t";
1130
		$Connection = new Connection();
1131
		if (($handle = fopen($tmp_dir.'modes.tsv', 'r')) !== FALSE)
1132
		{
1133
			$i = 0;
1134
			if ($globalTransaction) $Connection->db->beginTransaction();
1135
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1136
			{
1137
				if ($i > 0) {
1138
					if ($data[1] == 'NULL') $data[1] = $data[0];
1139
					$query = 'INSERT INTO aircraft_modes (FirstCreated,LastModified,ModeS,ModeSCountry,Registration,ICAOTypeCode,type_flight,Source) VALUES (:FirstCreated,:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:type_flight,:source)';
1140
					try {
1141
						$sth = $Connection->db->prepare($query);
1142
						$sth->execute(array(':FirstCreated' => $data[0],':LastModified' => $data[1],':ModeS' => $data[2],':ModeSCountry' => $data[3], ':Registration' => $data[4],':ICAOTypeCode' => $data[5],':type_flight' => $data[6],':source' => 'website_fam'));
1143
					} catch(PDOException $e) {
1144
						return "error : ".$e->getMessage();
1145
					}
1146
				}
1147
				$i++;
1148
			}
1149
			fclose($handle);
1150
			if ($globalTransaction) $Connection->db->commit();
1151
		}
1152
		return '';
1153
	}
1154
1155
	public static function airlines_fam() {
1156
		global $tmp_dir, $globalTransaction, $globalDBdriver;
1157
		$Connection = new Connection();
1158
		/*
1159
		if ($globalDBdriver == 'mysql') {
1160
			$query = "LOCK TABLE airlines WRITE";
1161
		} else {
1162
			$query = "LOCK TABLE airlines IN ACCESS EXCLUSIVE WORK";
1163
		}
1164
		try {
1165
			$sth = $Connection->db->prepare($query);
1166
			$sth->execute();
1167
		} catch(PDOException $e) {
1168
			return "error : ".$e->getMessage();
1169
		}
1170
		*/
1171
		$query = "DELETE FROM airlines WHERE forsource IS NULL";
1172
		try {
1173
			$sth = $Connection->db->prepare($query);
1174
			$sth->execute();
1175
		} catch(PDOException $e) {
1176
			return "error : ".$e->getMessage();
1177
		}
1178
		$delimiter = "\t";
1179
		if (($handle = fopen($tmp_dir.'airlines.tsv', 'r')) !== FALSE)
1180
		{
1181
			$i = 0;
1182
			if ($globalTransaction) $Connection->db->beginTransaction();
1183
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1184
			{
1185
				if ($i > 0) {
1186
					if ($data[1] == 'NULL') $data[1] = $data[0];
1187
					$query = 'INSERT INTO airlines (airline_id,name,alias,iata,icao,callsign,country,active,type,home_link,wikipedia_link,alliance,ban_eu) VALUES (0,:name,:alias,:iata,:icao,:callsign,:country,:active,:type,:home,:wikipedia_link,:alliance,:ban_eu)';
1188
					try {
1189
						$sth = $Connection->db->prepare($query);
1190
						$sth->execute(array(':name' => $data[0],':alias' => $data[1],':iata' => $data[2],':icao' => $data[3], ':callsign' => $data[4],':country' => $data[5],':active' => $data[6],':type' => $data[7],':home' => $data[8],':wikipedia_link' => $data[9],':alliance' => $data[10],':ban_eu' => $data[11]));
1191
					} catch(PDOException $e) {
1192
						return "error : ".$e->getMessage();
1193
					}
1194
				}
1195
				$i++;
1196
			}
1197
			fclose($handle);
1198
			if ($globalTransaction) $Connection->db->commit();
1199
		}
1200
		/*
1201
		$query = "UNLOCK TABLES";
1202
		try {
1203
			$sth = $Connection->db->prepare($query);
1204
			$sth->execute();
1205
		} catch(PDOException $e) {
1206
			return "error : ".$e->getMessage();
1207
		}
1208
		*/
1209
		return '';
1210
        }
1211
        
1212
	public static function owner_fam() {
1213
		global $tmp_dir, $globalTransaction;
1214
		$query = "DELETE FROM aircraft_owner WHERE Source = '' OR Source = :source";
1215
		try {
1216
			$Connection = new Connection();
1217
			$sth = $Connection->db->prepare($query);
1218
                        $sth->execute(array(':source' => 'website_fam'));
1219
                } catch(PDOException $e) {
1220
                        return "error : ".$e->getMessage();
1221
                }
1222
1223
		$delimiter = "\t";
1224
		$Connection = new Connection();
1225
		if (($handle = fopen($tmp_dir.'owners.tsv', 'r')) !== FALSE)
1226
		{
1227
			$i = 0;
1228
			if ($globalTransaction) $Connection->db->beginTransaction();
1229
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1230
			{
1231
				if ($i > 0) {
1232
					$query = 'INSERT INTO aircraft_owner (registration,base,owner,date_first_reg,Source) VALUES (:registration,:base,:owner,NULL,:source)';
1233
					try {
1234
						$sth = $Connection->db->prepare($query);
1235
						$sth->execute(array(':registration' => $data[0],':base' => $data[1],':owner' => $data[2], ':source' => 'website_fam'));
1236
					} catch(PDOException $e) {
1237
						//print_r($data);
1238
						return "error : ".$e->getMessage();
1239
					}
1240
				}
1241
				$i++;
1242
			}
1243
			fclose($handle);
1244
			if ($globalTransaction) $Connection->db->commit();
1245
		}
1246
		return '';
1247
        }
1248
1249
	public static function routes_fam() {
1250
		global $tmp_dir, $globalTransaction, $globalDebug;
1251
		$query = "DELETE FROM routes WHERE Source = '' OR Source = :source";
1252
		try {
1253
			$Connection = new Connection();
1254
			$sth = $Connection->db->prepare($query);
1255
			$sth->execute(array(':source' => 'website_fam'));
1256
		} catch(PDOException $e) {
1257
			return "error : ".$e->getMessage();
1258
		}
1259
		$delimiter = "\t";
1260
		$Connection = new Connection();
1261
		if (($handle = fopen($tmp_dir.'routes.tsv', 'r')) !== FALSE)
1262
		{
1263
			$i = 0;
1264
			if ($globalTransaction) $Connection->db->beginTransaction();
1265
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1266
			{
1267
				if ($i > 0) {
1268
					$query = 'INSERT INTO routes (CallSign,Operator_ICAO,FromAirport_ICAO,FromAirport_Time,ToAirport_ICAO,ToAirport_Time,RouteStop,Source) VALUES (:CallSign,:Operator_ICAO,:FromAirport_ICAO,:FromAirport_Time,:ToAirport_ICAO,:ToAirport_Time,:RouteStop,:source)';
1269
					try {
1270
						$sth = $Connection->db->prepare($query);
1271
						$sth->execute(array(':CallSign' => $data[0],':Operator_ICAO' => $data[1],':FromAirport_ICAO' => $data[2],':FromAirport_Time' => $data[3], ':ToAirport_ICAO' => $data[4],':ToAirport_Time' => $data[5],':RouteStop' => $data[6],':source' => 'website_fam'));
1272
					} catch(PDOException $e) {
1273
						if ($globalDebug) echo "error: ".$e->getMessage()." - data: ".implode(',',$data);
1274
					}
1275
				}
1276
				$i++;
1277
			}
1278
			fclose($handle);
1279
			if ($globalTransaction) $Connection->db->commit();
1280
		}
1281
		return '';
1282
        }
1283
1284
	public static function marine_identity_fam() {
1285
		global $tmp_dir, $globalTransaction;
1286
		$query = "TRUNCATE TABLE marine_identity";
1287
		try {
1288
			$Connection = new Connection();
1289
			$sth = $Connection->db->prepare($query);
1290
                        $sth->execute();
1291
                } catch(PDOException $e) {
1292
                        return "error : ".$e->getMessage();
1293
                }
1294
1295
		
1296
		//update_db::unzip($out_file);
1297
		$delimiter = "\t";
1298
		$Connection = new Connection();
1299
		if (($handle = fopen($tmp_dir.'marine_identity.tsv', 'r')) !== FALSE)
1300
		{
1301
			$i = 0;
1302
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1303
			//$Connection->db->beginTransaction();
1304
			if ($globalTransaction) $Connection->db->beginTransaction();
1305
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1306
			{
1307
				if ($i > 0) {
1308
					$data = array_map(function($v) { return $v === 'NULL' ? NULL : $v; },$data);
1309
					$query = 'INSERT INTO marine_identity (mmsi,imo,call_sign,ship_name,length,gross_tonnage,dead_weight,width,country,engine_power,type) VALUES (:mmsi,:imo,:call_sign,:ship_name,:length,:gross_tonnage,:dead_weight,:width,:country,:engine_power,:type)';
1310
					try {
1311
						$sth = $Connection->db->prepare($query);
1312
						$sth->execute(array(':mmsi' => $data[0],':imo' => $data[1],':call_sign' => $data[2],':ship_name' => $data[3], ':length' => $data[4],':gross_tonnage' => $data[5],':dead_weight' => $data[6],':width' => $data[7],':country' => $data[8],':engine_power' => $data[9],':type' => $data[10]));
1313
					} catch(PDOException $e) {
1314
						return "error : ".$e->getMessage();
1315
					}
1316
				}
1317
				$i++;
1318
			}
1319
			fclose($handle);
1320
			if ($globalTransaction) $Connection->db->commit();
1321
		}
1322
		return '';
1323
        }
1324
1325
	public static function satellite_fam() {
1326
		global $tmp_dir, $globalTransaction;
1327
		$query = "TRUNCATE TABLE satellite";
1328
		try {
1329
			$Connection = new Connection();
1330
			$sth = $Connection->db->prepare($query);
1331
			$sth->execute();
1332
		} catch(PDOException $e) {
1333
			return "error : ".$e->getMessage();
1334
		}
1335
		$delimiter = "\t";
1336
		$Connection = new Connection();
1337
		if (($handle = fopen($tmp_dir.'satellite.tsv', 'r')) !== FALSE)
1338
		{
1339
			$i = 0;
1340
			if ($globalTransaction) $Connection->db->beginTransaction();
1341
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1342
			{
1343
				if ($i > 0) {
1344
					$data = array_map(function($v) { return $v === 'NULL' ? NULL : $v; },$data);
1345
					$query = 'INSERT INTO satellite (name, name_alternate, country_un, country_owner, owner, users, purpose, purpose_detailed, orbit, type, longitude_geo, perigee, apogee, eccentricity, inclination, period, launch_mass, dry_mass, power, launch_date, lifetime, contractor, country_contractor, launch_site, launch_vehicule, cospar, norad, comments, source_orbital, sources) 
1346
					    VALUES (:name, :name_alternate, :country_un, :country_owner, :owner, :users, :purpose, :purpose_detailed, :orbit, :type, :longitude_geo, :perigee, :apogee, :eccentricity, :inclination, :period, :launch_mass, :dry_mass, :power, :launch_date, :lifetime, :contractor, :country_contractor, :launch_site, :launch_vehicule, :cospar, :norad, :comments, :source_orbital, :sources)';
1347
					try {
1348
						$sth = $Connection->db->prepare($query);
1349
						$sth->execute(array(':name' => $data[0], ':name_alternate' => $data[1], ':country_un' => $data[2], ':country_owner' => $data[3], ':owner' => $data[4], ':users' => $data[5], ':purpose' => $data[6], ':purpose_detailed' => $data[7], ':orbit' => $data[8], ':type' => $data[9], ':longitude_geo' => $data[10], ':perigee' => !empty($data[11]) ? $data[11] : NULL, ':apogee' => !empty($data[12]) ? $data[12] : NULL, ':eccentricity' => $data[13], ':inclination' => $data[14], ':period' => !empty($data[15]) ? $data[15] : NULL, ':launch_mass' => !empty($data[16]) ? $data[16] : NULL, ':dry_mass' => !empty($data[17]) ? $data[17] : NULL, ':power' => !empty($data[18]) ? $data[18] : NULL, ':launch_date' => $data[19], ':lifetime' => $data[20], ':contractor' => $data[21],':country_contractor' => $data[22], ':launch_site' => $data[23], ':launch_vehicule' => $data[24], ':cospar' => $data[25], ':norad' => $data[26], ':comments' => $data[27], ':source_orbital' => $data[28], ':sources' => $data[29]));
1350
					} catch(PDOException $e) {
1351
						return "error : ".$e->getMessage();
1352
					}
1353
				}
1354
				$i++;
1355
			}
1356
			fclose($handle);
1357
			if ($globalTransaction) $Connection->db->commit();
1358
		}
1359
		return '';
1360
	}
1361
1362
	public static function banned_fam() {
1363
		global $tmp_dir, $globalTransaction;
1364
		$query = "UPDATE airlines SET ban_eu = 0";
1365
		try {
1366
			$Connection = new Connection();
1367
			$sth = $Connection->db->prepare($query);
1368
			$sth->execute();
1369
		} catch(PDOException $e) {
1370
			return "error : ".$e->getMessage();
1371
		}
1372
1373
		$Connection = new Connection();
1374
		if (($handle = fopen($tmp_dir.'ban_eu.csv', 'r')) !== FALSE)
1375
		{
1376
			if ($globalTransaction) $Connection->db->beginTransaction();
1377
			while (($data = fgetcsv($handle, 1000)) !== FALSE)
1378
			{
1379
				$query = 'UPDATE airlines SET ban_eu = 1 WHERE icao = :icao AND forsource IS NULL';
1380
				if ($data[0] != '') {
1381
					$icao = $data[0];
1382
					try {
1383
						$sth = $Connection->db->prepare($query);
1384
						$sth->execute(array(':icao' => $icao));
1385
					} catch(PDOException $e) {
1386
						return "error : ".$e->getMessage();
1387
					}
1388
				}
1389
			}
1390
			fclose($handle);
1391
			if ($globalTransaction) $Connection->db->commit();
1392
		}
1393
		return '';
1394
        }
1395
1396
	public static function tle($filename,$tletype) {
1397
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1398
		global $tmp_dir, $globalTransaction;
1399
		//$Spotter = new Spotter();
1400
		
1401
		$query = "DELETE FROM tle WHERE tle_source = '' OR tle_source = :source";
1402
		try {
1403
			$Connection = new Connection();
1404
			$sth = $Connection->db->prepare($query);
1405
                        $sth->execute(array(':source' => $filename));
1406
                } catch(PDOException $e) {
1407
                        return "error : ".$e->getMessage();
1408
                }
1409
		
1410
		$Connection = new Connection();
1411
		if (($handle = fopen($filename, 'r')) !== FALSE)
1412
		{
1413
			$i = 0;
1414
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1415
			//$Connection->db->beginTransaction();
1416
			$dbdata = array();
1417
			while (($data = fgets($handle, 1000)) !== FALSE)
1418
			{
1419
				if ($i == 0) {
1420
					$dbdata['name'] = trim($data);
1421
					$i++;
1422
				} elseif ($i == 1) {
1423
					$dbdata['tle1'] = trim($data);
1424
					$i++;
1425
				} elseif ($i == 2) {
1426
					$dbdata['tle2'] = trim($data);
1427
					//print_r($dbdata);
1428
					$query = 'INSERT INTO tle (tle_name,tle_tle1,tle_tle2,tle_type,tle_source) VALUES (:name, :tle1, :tle2, :type, :source)';
1429
					try {
1430
						$sth = $Connection->db->prepare($query);
1431
						$sth->execute(array(':name' => $dbdata['name'],':tle1' => $dbdata['tle1'],':tle2' => $dbdata['tle2'], ':type' => $tletype,':source' => $filename));
1432
					} catch(PDOException $e) {
1433
						return "error : ".$e->getMessage();
1434
					}
1435
1436
					$i = 0;
1437
				}
1438
			}
1439
			fclose($handle);
1440
			//$Connection->db->commit();
1441
		}
1442
		return '';
1443
        }
1444
1445
	public static function satellite_ucsdb($filename) {
1446
		global $tmp_dir, $globalTransaction;
1447
		$query = "DELETE FROM satellite";
1448
		try {
1449
			$Connection = new Connection();
1450
			$sth = $Connection->db->prepare($query);
1451
			$sth->execute(array(':source' => $filename));
1452
		} catch(PDOException $e) {
1453
			return "error : ".$e->getMessage();
1454
		}
1455
		
1456
		$Connection = new Connection();
1457
		if (($handle = fopen($filename, 'r')) !== FALSE)
1458
		{
1459
			$i = 0;
1460
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1461
			//$Connection->db->beginTransaction();
1462
			while (($data = fgetcsv($handle, 1000,"\t")) !== FALSE)
1463
			{
1464
				if ($i > 0 && $data[0] != '') {
1465
					$sources = trim($data[28].' '.$data[29].' '.$data[30].' '.$data[31].' '.$data[32].' '.$data[33]);
1466
					$period = str_replace(',','',$data[14]);
1467
					if (!empty($period) && strpos($period,'days')) $period = str_replace(' days','',$period)*24*60;
1468
					if ($data[18] != '') $launch_date = date('Y-m-d',strtotime($data[18]));
1469
					else $launch_date = NULL;
1470
					$data = array_map(function($value) {
1471
						return trim($value) === '' ? null : $value;
1472
					}, $data);
1473
					//print_r($data);
1474
					$query = 'INSERT INTO satellite (name, name_alternate, country_un, country_owner, owner, users, purpose, purpose_detailed, orbit, type, longitude_geo, perigee, apogee, eccentricity, inclination, period, launch_mass, dry_mass, power, launch_date, lifetime, contractor, country_contractor, launch_site, launch_vehicule, cospar, norad, comments, source_orbital, sources) 
1475
					    VALUES (:name, :name_alternate, :country_un, :country_owner, :owner, :users, :purpose, :purpose_detailed, :orbit, :type, :longitude_geo, :perigee, :apogee, :eccentricity, :inclination, :period, :launch_mass, :dry_mass, :power, :launch_date, :lifetime, :contractor, :country_contractor, :launch_site, :launch_vehicule, :cospar, :norad, :comments, :source_orbital, :sources)';
1476
					try {
1477
						$sth = $Connection->db->prepare($query);
1478
						$sth->execute(array(':name' => $data[0], ':name_alternate' => '', ':country_un' => $data[1], ':country_owner' => $data[2], ':owner' => $data[3], ':users' => $data[4], ':purpose' => $data[5], ':purpose_detailed' => $data[6], ':orbit' => $data[7], ':type' => $data[8], ':longitude_geo' => $data[9], ':perigee' => !empty($data[10]) ? str_replace(',','',$data[10]) : NULL, ':apogee' => !empty($data[11]) ? str_replace(',','',$data[11]) : NULL, ':eccentricity' => $data[12], ':inclination' => $data[13], ':period' => !empty($period) ? $period : NULL, ':launch_mass' => !empty($data[15]) ? str_replace(array('+',','),'',$data[15]) : NULL, ':dry_mass' => !empty($data[16]) ? str_replace(array(',','-1900',' (BOL)',' (EOL)'),'',$data[16]) : NULL, ':power' => !empty($data[17]) ? str_replace(array(',',' (BOL)',' (EOL)'),'',$data[17]) : NULL, ':launch_date' => $launch_date, ':lifetime' => $data[19], ':contractor' => $data[20],':country_contractor' => $data[21], ':launch_site' => $data[22], ':launch_vehicule' => $data[23], ':cospar' => $data[24], ':norad' => $data[25], ':comments' => $data[26], ':source_orbital' => $data[27], ':sources' => $sources));
1479
					} catch(PDOException $e) {
1480
						return "error : ".$e->getMessage();
1481
					}
1482
				}
1483
				$i++;
1484
			}
1485
			fclose($handle);
1486
			//$Connection->db->commit();
1487
		}
1488
		return '';
1489
	}
1490
1491
	public static function satellite_celestrak($filename) {
1492
		global $tmp_dir, $globalTransaction;
1493
		$satcat_sources = array(
1494
			'AB' => array('country' => 'Multinational', 'owner' => 'Arab Satellite Communications Org. (ASCO)'),
1495
			'ABS' => array('country' => 'Multinational', 'owner' => 'Asia Broadcast Satellite Ltd.'),
1496
			'AC' => array('country' => 'China', 'owner' => 'Asia Satellite Telecommunications Co. Ltd.'),
1497
			'ALG' => array('country' => 'Algeria', 'owner' => ''),
1498
			'ARGN' => array('country' => 'Argentina', 'owner' => ''),
1499
			'ASRA' => array('country' => 'Austria', 'owner' => ''),
1500
			'AUS' => array('country' => 'Australia', 'owner' => ''),
1501
			'AZER' => array('country' => 'Azerbaijan', 'owner' => ''),
1502
			'BEL' => array('country' => 'Belgium', 'owner' => ''),
1503
			'BELA' => array('country' => 'Belarus', 'owner' => ''),
1504
			'BERM' => array('country' => 'Bermuda', 'owner' => ''),
1505
			'BOL' => array('country' => 'Bolivia', 'owner' => ''),
1506
			'BUL' => array('country' => 'Bulgaria', 'owner' => ''),
1507
			'BRAZ' => array('country' => 'Brazil', 'owner' => ''),
1508
			'CA' => array('country' => 'Canada', 'owner' => ''),
1509
			'CHBZ' => array('country' => 'China/Brazil', 'owner' => ''),
1510
			'CHLE' => array('country' => 'Chile', 'owner' => ''),
1511
			'CIS' => array('country' => 'Russia', 'owner' => ''),
1512
			'COL' => array('country' => 'Colombia', 'owner' => ''),
1513
			'CZCH' => array('country' => 'Czech Republic (former Czechoslovakia)', 'owner' => ''),
1514
			'DEN' => array('country' => 'Denmark', 'owner' => ''),
1515
			'ECU' => array('country' => 'Ecuador', 'owner' => ''),
1516
			'EGYP' => array('country' => 'Egypt', 'owner' => ''),
1517
			'ESA' => array('country' => 'Multinational', 'owner' => 'European Space Agency'),
1518
			'ESRO' => array('country' => 'Multinational', 'owner' => 'European Space Research Organization'),
1519
			'EST' => array('country' => 'Estonia','owner' => ''),
1520
			'EUME' => array('country' => 'Multinational', 'owner' => 'EUMETSAT (European Organization for the Exploitation of Meteorological Satellites)'),
1521
			'EUTE' => array('country' => 'Multinational', 'owner' => 'European Telecommunications Satellite Consortium (EUTELSAT)'),
1522
			'FGER' => array('country' => 'France/Germany', 'owner' => ''),
1523
			'FIN' => array('country' => 'Finland', 'owner' => ''),
1524
			'FR' => array('country' => 'France', 'owner' => ''),
1525
			'FRIT' => array('country' => 'France/Italy', 'owner' => ''),
1526
			'GER' => array('country' => 'Germany', 'owner' => ''),
1527
			'GLOB' => array('country' => 'USA', 'owner' => 'Globalstar'),
1528
			'GREC' => array('country' => 'Greece', 'owner' => ''),
1529
			'HUN' => array('country' => 'Hungary', 'owner' => ''),
1530
			'IM' => array('country' => 'United Kingdom', 'owner' => 'INMARSAT, Ltd.'),
1531
			'IND' => array('country' => 'India', 'owner' => ''),
1532
			'INDO' => array('country' => 'Indonesia', 'owner' => ''),
1533
			'IRAN' => array('country' => 'Iran', 'owner' => ''),
1534
			'IRAQ' => array('country' => 'Iraq', 'owner' => ''),
1535
			'IRID' => array('country' => 'USA', 'owner' => 'Iridium Satellite LLC'),
1536
			'ISRA' => array('country' => 'Israel', 'owner' => ''),
1537
			'ISRO' => array('country' => 'India', 'owner' => 'Indian Space Research Organisation (ISRO)'),
1538
			'ISS' => array('country' => 'Multinational', 'owner' => 'NASA/Multinational'),
1539
			'IT' => array('country' => 'Italy', 'owner' => ''),
1540
			'ITSO' => array('country' => 'USA', 'owner' => 'Intelsat, S.A.'),
1541
			'JPN' => array('country' => 'Japan', 'owner' => ''),
1542
			'KAZ' => array('country' => 'Kazakhstan', 'owner' => ''),
1543
			'LAOS' => array('country' => 'Laos', 'owner' => ''),
1544
			'LTU' => array('country' => 'Lithuania', 'owner' => ''),
1545
			'LUXE' => array('country' => 'Luxembourg', 'owner' => ''),
1546
			'MALA' => array('country' => 'Malaysia', 'owner' => ''),
1547
			'MEX' => array('country' => 'Mexico', 'owner' => ''),
1548
			'NATO' => array('country' => 'Multinational', 'owner' => 'North Atlantic Treaty Organization'),
1549
			'NETH' => array('country' => 'Netherlands', 'owner' => ''),
1550
			'NICO' => array('country' => 'USA', 'owner' => 'New ICO'),
1551
			'NIG' => array('country' => 'Nigeria', 'owner' => ''),
1552
			'NKOR' => array('country' => 'North Korea', 'owner' => ''),
1553
			'NOR' => array('country' => 'Norway', 'owner' => ''),
1554
			'O3B' => array('country' => 'United Kingdom', 'owner' => 'O3b Networks Ltd.'),
1555
			'ORB' => array('country' => 'USA', 'owner' => 'ORBCOMM Inc.'),
1556
			'PAKI' => array('country' => 'Pakistan', 'owner' => ''),
1557
			'PERU' => array('country' => 'Peru', 'owner' => ''),
1558
			'POL' => array('country' => 'Poland', 'owner' => ''),
1559
			'POR' => array('country' => 'Portugal', 'owner' => ''),
1560
			'PRC' => array('country' => 'China', 'owner' => ''),
1561
			'PRES' => array('country' => 'Multinational', 'owner' => 'China/ESA'),
1562
			'RASC' => array('country' => 'Multinational', 'owner' => 'Regional African Satellite Communications Organisation (RASCOM)'),
1563
			'ROC' => array('country' => 'Taiwan', 'owner' => ''),
1564
			'ROM' => array('country' => 'Romania', 'owner' => ''),
1565
			'RP' => array('country' => 'Philippines', 'owner' => ''),
1566
			'SAFR' => array('country' => 'South Africa', 'owner' => ''),
1567
			'SAUD' => array('country' => 'Saudi Arabia', 'owner' => ''),
1568
			'SEAL' => array('country' => 'USA', 'owner' => ''),
1569
			'SES' => array('country' => 'Multinational', 'owner' => 'SES World Skies'),
1570
			'SING' => array('country' => 'Singapore', 'owner' => ''),
1571
			'SKOR' => array('country' => 'South Korea', 'owner' => ''),
1572
			'SPN' => array('country' => 'Spain', 'owner' => ''),
1573
			'STCT' => array('country' => 'Singapore/Taiwan', 'owner' => ''),
1574
			'SWED' => array('country' => 'Sweden', 'owner' => ''),
1575
			'SWTZ' => array('country' => 'Switzerland', 'owner' => ''),
1576
			'THAI' => array('country' => 'Thailand', 'owner' => ''),
1577
			'TMMC' => array('country' => 'Turkmenistan/Monaco', 'owner' => ''),
1578
			'TURK' => array('country' => 'Turkey', 'owner' => ''),
1579
			'UAE' => array('country' => 'United Arab Emirates', 'owner' => ''),
1580
			'UK' => array('country' => 'United Kingdom', 'owner' => ''),
1581
			'UKR' => array('country' => 'Ukraine', 'owner' => ''),
1582
			'URY' => array('country' => 'Uruguay', 'owner' => ''),
1583
			'US' => array('country' => 'USA', 'owner' => ''),
1584
			'USBZ' => array('country' => 'USA/Brazil', 'owner' => ''),
1585
			'VENZ' => array('country' => 'Venezuela', 'owner' => ''),
1586
			'VTNM' => array('country' => 'Vietnam', 'owner' => '')
1587
		);
1588
		$satcat_launch_site = array(
1589
			'AFETR' => 'Cape Canaveral',
1590
			'AFWTR' => 'Vandenberg AFB',
1591
			'CAS' => 'Canaries Airspace',
1592
			'DLS' => 'Dombarovsky Air Base',
1593
			'ERAS' => 'Eastern Range Airspace',
1594
			'FRGUI' => 'Guiana Space Center',
1595
			'HGSTR' => 'Hammaguira Space Track Range, Algeria',
1596
			'JSC' => 'Jiuquan Satellite Launch Center',
1597
			'KODAK' => 'Kodiak Launch Complex',
1598
			'KSCUT' => 'Uchinoura Space Center',
1599
			'KWAJ' => 'Kwajalein Island',
1600
			'KYMSC' => 'Kapustin Yar Missile and Space Complex, Russia',
1601
			'NSC' => 'Naro Space Center',
1602
			'PLMSC' => 'Plesetsk Cosmodrome',
1603
			'SEAL' => 'Sea Launch',
1604
			'SEMLS' => 'Semnan Satellite Launch Site, Iran',
1605
			'SNMLP' => 'San Marco Launch Platform, Indian Ocean (Kenya)',
1606
			'SRILR' => 'Satish Dhawan Space Center',
1607
			'SUBL' => 'Submarine Launch Platform (mobile), Russia',
1608
			'SVOBO' => 'Svobodny Cosmodrome',
1609
			'TAISC' => 'Taiyuan Launch Center',
1610
			'TANSC' => 'Tanegashima Space Center',
1611
			'TYMSC' => 'Baikonur Cosmodrome',
1612
			'VOSTO' => 'Vostochny Cosmodrome',
1613
			'WLPIS' => 'Wallops Island Flight Facility',
1614
			'WOMRA' => 'Woomera, Australia',
1615
			'WRAS' => 'Western Range Airspace',
1616
			'WSC' => 'Wenchang Satellite Launch Center',
1617
			'XICLF' => 'Xichang Satellite Launch Center',
1618
			'YAVNE' => 'Palmachim Launch Complex',
1619
			'YUN' => 'Yunsong Launch Site'
1620
		);
1621
1622
		/*
1623
		$query = "DELETE FROM satellite";
1624
		try {
1625
			$Connection = new Connection();
1626
			$sth = $Connection->db->prepare($query);
1627
			$sth->execute(array(':source' => $filename));
1628
		} catch(PDOException $e) {
1629
			return "error : ".$e->getMessage();
1630
		}
1631
		*/
1632
		
1633
		$Connection = new Connection();
1634
		if (($handle = fopen($filename, 'r')) !== FALSE)
1635
		{
1636
			$i = 0;
1637
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1638
			//$Connection->db->beginTransaction();
1639
			while (($data = fgets($handle, 1000)) !== FALSE)
1640
			{
1641
				$result = array();
1642
				$result['cospar'] = trim(substr($data,0,11));
1643
				$result['norad'] = trim(substr($data,13,6));
1644
				$result['operational'] = trim(substr($data,21,1));
1645
				$result['name'] = trim(substr($data,23,24));
1646
				/*
1647
				    * R/B(1) = Rocket body, first stage
1648
				    * R/B(2) = Rocket body, second stage
1649
				    * DEB = Debris
1650
				    * PLAT = Platform
1651
				    * Items in parentheses are alternate names
1652
				    * Items in brackets indicate type of object
1653
				    (e.g., BREEZE-M DEB [TANK] = tank)
1654
				    * An ampersand (&) indicates two or more objects are attached
1655
				*/
1656
				
1657
				$owner_code = trim(substr($data,49,5));
1658
				if ($owner_code != 'TBD') {
1659
					$result['country_owner'] = $satcat_sources[$owner_code]['country'];
1660
					$result['owner'] = $satcat_sources[$owner_code]['owner'];
1661
					$result['launch_date'] = trim(substr($data,56,10));
1662
					$launch_site_code = trim(substr($data,68,5));
1663
					$result['launch_site'] = $satcat_launch_site[$launch_site_code];
1664
					$result['lifetime'] = trim(substr($data,75,10));
1665
					$result['period'] = trim(substr($data,87,7));
1666
					$result['inclination'] = trim(substr($data,96,5));
1667
					$result['apogee'] = trim(substr($data,103,6));
1668
					$result['perigee'] = trim(substr($data,111,6));
1669
					//$result['radarcross'] = trim(substr($data,119,8));
1670
					$result['status'] = trim(substr($data,129,3));
1671
					//print_r($result);
1672
					$result = array_map(function($value) {
1673
						return trim($value) === '' ? null : $value;
1674
					}, $result);
1675
					//print_r($data);
1676
					if ($result['operational'] != 'D') {
1677
						$query = "SELECT * FROM satellite WHERE cospar = :cospar LIMIT 1";
1678
						try {
1679
							$Connection = new Connection();
1680
							$sth = $Connection->db->prepare($query);
1681
							$sth->execute(array(':cospar' => $result['cospar']));
1682
							$exist = $sth->fetchAll(PDO::FETCH_ASSOC);
1683
						} catch(PDOException $e) {
1684
							return "error : ".$e->getMessage();
1685
						}
1686
						if (empty($exist)) {
1687
							$query = 'INSERT INTO satellite (name, name_alternate, country_un, country_owner, owner, users, purpose, purpose_detailed, orbit, type, longitude_geo, perigee, apogee, eccentricity, inclination, period, launch_mass, dry_mass, power, launch_date, lifetime, contractor, country_contractor, launch_site, launch_vehicule, cospar, norad, comments, source_orbital, sources) 
1688
							    VALUES (:name, :name_alternate, :country_un, :country_owner, :owner, :users, :purpose, :purpose_detailed, :orbit, :type, :longitude_geo, :perigee, :apogee, :eccentricity, :inclination, :period, :launch_mass, :dry_mass, :power, :launch_date, :lifetime, :contractor, :country_contractor, :launch_site, :launch_vehicule, :cospar, :norad, :comments, :source_orbital, :sources)';
1689
							try {
1690
								$sth = $Connection->db->prepare($query);
1691
								$sth->execute(array(
1692
								    ':name' => $result['name'], ':name_alternate' => '', ':country_un' => '', ':country_owner' => $result['country_owner'], ':owner' => $result['owner'], ':users' => '', ':purpose' => '', ':purpose_detailed' => '', ':orbit' => $result['status'],
1693
								    ':type' => '', ':longitude_geo' => NULL, ':perigee' => !empty($result['perigee']) ? $result['perigee'] : NULL, ':apogee' => !empty($result['apogee']) ? $result['apogee'] : NULL, ':eccentricity' => NULL, ':inclination' => $result['inclination'],
1694
								    ':period' => !empty($result['period']) ? $result['period'] : NULL, ':launch_mass' => NULL, ':dry_mass' => NULL, ':power' => NULL, ':launch_date' => $result['launch_date'], ':lifetime' => $result['lifetime'], 
1695
								    ':contractor' => '',':country_contractor' => '', ':launch_site' => $result['launch_site'], ':launch_vehicule' => '', ':cospar' => $result['cospar'], ':norad' => $result['norad'], ':comments' => '', ':source_orbital' => '', ':sources' => ''
1696
								    )
1697
								);
1698
							} catch(PDOException $e) {
1699
								return "error : ".$e->getMessage();
1700
							}
1701
						} elseif ($exist[0]['name'] != $result['name'] && $exist[0]['name_alternate'] != $result['name']) {
1702
							$query = "UPDATE satellite SET name_alternate = :name_alternate WHERE cospar = :cospar";
1703
							try {
1704
								$Connection = new Connection();
1705
								$sth = $Connection->db->prepare($query);
1706
								$sth->execute(array(':name_alternate' => $result['name'],':cospar' => $result['cospar']));
1707
							} catch(PDOException $e) {
1708
								return "error : ".$e->getMessage();
1709
							}
1710
						}
1711
					}
1712
				}
1713
				
1714
				$i++;
1715
			}
1716
			fclose($handle);
1717
			//$Connection->db->commit();
1718
		}
1719
		return '';
1720
        }
1721
1722
	/**
1723
        * Convert a HTML table to an array
1724
        * @param String $data HTML page
1725
        * @return Array array of the tables in HTML page
1726
        */
1727
/*
1728
        private static function table2array($data) {
1729
                $html = str_get_html($data);
1730
                $tabledata=array();
1731
                foreach($html->find('tr') as $element)
1732
                {
1733
                        $td = array();
1734
                        foreach( $element->find('th') as $row)
1735
                        {
1736
                                $td [] = trim($row->plaintext);
1737
                        }
1738
                        $td=array_filter($td);
1739
                        $tabledata[] = $td;
1740
1741
                        $td = array();
1742
                        $tdi = array();
1743
                        foreach( $element->find('td') as $row)
1744
                        {
1745
                                $td [] = trim($row->plaintext);
1746
                                $tdi [] = trim($row->innertext);
1747
                        }
1748
                        $td=array_filter($td);
1749
                        $tdi=array_filter($tdi);
1750
                    //    $tabledata[]=array_merge($td,$tdi);
1751
                        $tabledata[]=$td;
1752
                }
1753
                return(array_filter($tabledata));
1754
        }
1755
*/
1756
       /**
1757
        * Get data from form result
1758
        * @param String $url form URL
1759
        * @return String the result
1760
        */
1761
/*
1762
        private static function getData($url) {
1763
                $ch = curl_init();
1764
                curl_setopt($ch, CURLOPT_URL, $url);
1765
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1766
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
1767
                curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
1768
                return curl_exec($ch);
1769
        }
1770
*/
1771
/*
1772
	public static function waypoints() {
1773
		$data = update_db::getData('http://www.fallingrain.com/world/FR/waypoints.html');
1774
		$table = update_db::table2array($data);
1775
//		print_r($table);
1776
		$query = 'TRUNCATE TABLE waypoints';
1777
		try {
1778
			$Connection = new Connection();
1779
			$sth = $Connection->db->prepare($query);
1780
                        $sth->execute();
1781
                } catch(PDOException $e) {
1782
                        return "error : ".$e->getMessage();
1783
                }
1784
1785
		$query_dest = 'INSERT INTO waypoints (ident,latitude,longitude,control,usage) VALUES (:ident, :latitude, :longitude, :control, :usage)';
1786
		$Connection = new Connection();
1787
		$sth_dest = $Connection->db->prepare($query_dest);
1788
		$Connection->db->beginTransaction();
1789
                foreach ($table as $row) {
1790
            		if ($row[0] != 'Ident') {
1791
				$ident = $row[0];
1792
				$latitude = $row[2];
1793
				$longitude = $row[3];
1794
				$control = $row[4];
1795
				if (isset($row[5])) $usage = $row[5]; else $usage = '';
1796
				$query_dest_values = array(':ident' => $ident,':latitude' => $latitude,':longitude' => $longitude,':control' => $control,':usage' => $usage);
1797
				try {
1798
					$sth_dest->execute($query_dest_values);
1799
				} catch(PDOException $e) {
1800
					return "error : ".$e->getMessage();
1801
				}
1802
			}
1803
                }
1804
		$Connection->db->commit();
1805
1806
	}
1807
*/
1808
	public static function waypoints($filename) {
1809
		//require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1810
		global $tmp_dir, $globalTransaction;
1811
		//$Spotter = new Spotter();
1812
		//$out_file = $tmp_dir.'translation.zip';
1813
		//update_db::download('http://www.acarsd.org/download/translation.php',$out_file);
1814
		//if (!file_exists($out_file) || !is_readable($out_file)) return FALSE;
1815
		$Connection = new Connection();
1816
		//update_db::unzip($out_file);
1817
		$header = NULL;
0 ignored issues
show
Unused Code introduced by
$header is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1818
		$delimiter = ' ';
1819
		if (($handle = fopen($filename, 'r')) !== FALSE)
1820
		{
1821
			$i = 0;
1822
			if ($globalTransaction) $Connection->db->beginTransaction();
1823
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1824
			{
1825
				$i++;
1826
				if($i > 3 && count($row) > 2) {
1827
					$data = array_values(array_filter($row));
1828
					$cntdata = count($data);
1829
					if ($cntdata > 10) {
1830
						$value = $data[9];
1831
						
1832
						for ($i =10;$i < $cntdata;$i++) {
1833
							$value .= ' '.$data[$i];
1834
						}
1835
						$data[9] = $value;
1836
					}
1837
					//print_r($data);
1838
					if (count($data) > 9) {
1839
						$query = 'INSERT INTO waypoints (name_begin,latitude_begin,longitude_begin,name_end,latitude_end,longitude_end,high,base,top,segment_name) VALUES (:name_begin, :latitude_begin, :longitude_begin, :name_end, :latitude_end, :longitude_end, :high, :base, :top, :segment_name)';
1840
						try {
1841
							$sth = $Connection->db->prepare($query);
1842
							$sth->execute(array(':name_begin' => $data[0],':latitude_begin' => $data[1],':longitude_begin' => $data[2],':name_end' => $data[3], ':latitude_end' => $data[4], ':longitude_end' => $data[5], ':high' => $data[6], ':base' => $data[7], ':top' => $data[8], ':segment_name' => $data[9]));
1843
						} catch(PDOException $e) {
1844
							return "error : ".$e->getMessage();
1845
						}
1846
					}
1847
				}
1848
			}
1849
			fclose($handle);
1850
			if ($globalTransaction) $Connection->db->commit();
1851
		}
1852
		return '';
1853
        }
1854
1855
	public static function ivao_airlines($filename) {
1856
		//require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1857
		global $tmp_dir, $globalTransaction;
1858
		//$query = 'TRUNCATE TABLE airlines';
1859
		$query = "DELETE FROM airlines WHERE forsource = 'ivao'";
1860
		try {
1861
			$Connection = new Connection();
1862
			$sth = $Connection->db->prepare($query);
1863
                        $sth->execute();
1864
                } catch(PDOException $e) {
1865
                        return "error : ".$e->getMessage();
1866
                }
1867
1868
		$header = NULL;
0 ignored issues
show
Unused Code introduced by
$header is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1869
		$delimiter = ':';
1870
		$Connection = new Connection();
1871
		if (($handle = fopen($filename, 'r')) !== FALSE)
1872
		{
1873
			if ($globalTransaction) $Connection->db->beginTransaction();
1874
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1875
			{
1876
				if(count($row) > 1) {
1877
					$query = "INSERT INTO airlines (name,icao,active,forsource) VALUES (:name, :icao, 'Y','ivao')";
1878
					try {
1879
						$sth = $Connection->db->prepare($query);
1880
						$sth->execute(array(':name' => $row[1],':icao' => $row[0]));
1881
					} catch(PDOException $e) {
1882
						return "error : ".$e->getMessage();
1883
					}
1884
				}
1885
			}
1886
			fclose($handle);
1887
			if ($globalTransaction) $Connection->db->commit();
1888
		}
1889
		return '';
1890
        }
1891
	
1892
	public static function update_airspace() {
1893
		global $tmp_dir, $globalDBdriver;
1894
		include_once('class.create_db.php');
1895
		$Connection = new Connection();
1896
		if ($Connection->tableExists('airspace')) {
1897
			$query = 'DROP TABLE airspace';
1898
			try {
1899
				$sth = $Connection->db->prepare($query);
1900
                    		$sth->execute();
1901
	                } catch(PDOException $e) {
1902
				return "error : ".$e->getMessage();
1903
	                }
1904
	        }
1905
1906
1907
		if ($globalDBdriver == 'mysql') update_db::gunzip('../db/airspace.sql.gz',$tmp_dir.'airspace.sql');
1908
		else {
1909
			update_db::gunzip('../db/pgsql/airspace.sql.gz',$tmp_dir.'airspace.sql');
1910
			$query = "CREATE EXTENSION postgis";
1911
			$Connection = new Connection(null,null,$_SESSION['database_root'],$_SESSION['database_rootpass']);
1912
			try {
1913
				$sth = $Connection->db->prepare($query);
1914
				$sth->execute();
1915
			} catch(PDOException $e) {
1916
				return "error : ".$e->getMessage();
1917
			}
1918
		}
1919
		$error = create_db::import_file($tmp_dir.'airspace.sql');
1920
		return $error;
1921
	}
1922
1923
	public static function update_notam_fam() {
1924
		global $tmp_dir, $globalDebug;
1925
		include_once('class.create_db.php');
1926
		require_once(dirname(__FILE__).'/../require/class.NOTAM.php');
1927
		if ($globalDebug) echo "NOTAM from FlightAirMap website : Download...";
1928
		update_db::download('http://data.flightairmap.com/data/notam.txt.gz.md5',$tmp_dir.'notam.txt.gz.md5');
1929
		$error = '';
1930
		if (file_exists($tmp_dir.'notam.txt.gz.md5')) {
1931
			$notam_md5_file = explode(' ',file_get_contents($tmp_dir.'notam.txt.gz.md5'));
1932
			$notam_md5 = $notam_md5_file[0];
1933
			if (!update_db::check_notam_version($notam_md5)) {
1934
				update_db::download('http://data.flightairmap.com/data/notam.txt.gz',$tmp_dir.'notam.txt.gz');
1935
				if (file_exists($tmp_dir.'notam.txt.gz')) {
1936
					if (md5_file($tmp_dir.'notam.txt.gz') == $notam_md5) {
1937
						if ($globalDebug) echo "Gunzip...";
1938
						update_db::gunzip($tmp_dir.'notam.txt.gz');
1939
						if ($globalDebug) echo "Add to DB...";
1940
						//$error = create_db::import_file($tmp_dir.'notam.sql');
1941
						$NOTAM = new NOTAM();
1942
						$NOTAM->updateNOTAMfromTextFile($tmp_dir.'notam.txt');
1943
						update_db::insert_notam_version($notam_md5);
1944
					} else $error = "File ".$tmp_dir.'notam.txt.gz'." md5 failed. Download failed.";
1945
				} else $error = "File ".$tmp_dir.'notam.txt.gz'." doesn't exist. Download failed.";
1946
			} elseif ($globalDebug) echo "No new version.";
1947
		} else $error = "File ".$tmp_dir.'notam.txt.gz.md5'." doesn't exist. Download failed.";
1948
		if ($error != '') {
1949
			return $error;
1950
		} elseif ($globalDebug) echo "Done\n";
1951
		return '';
1952
	}
1953
1954
	public static function update_vatsim() {
1955
		global $tmp_dir;
1956
		include_once('class.create_db.php');
1957
		$error = create_db::import_file('../db/vatsim/airlines.sql');
1958
		return $error;
1959
	}
1960
	
1961
	public static function update_countries() {
1962
		global $tmp_dir, $globalDBdriver;
1963
		include_once('class.create_db.php');
1964
		$Connection = new Connection();
1965
		if ($Connection->tableExists('countries')) {
1966
			$query = 'DROP TABLE countries';
1967
			try {
1968
				$sth = $Connection->db->prepare($query);
1969
            	        	$sth->execute();
1970
	                } catch(PDOException $e) {
1971
    	                	echo "error : ".$e->getMessage();
1972
	                }
1973
		}
1974
		if ($globalDBdriver == 'mysql') {
1975
			update_db::gunzip('../db/countries.sql.gz',$tmp_dir.'countries.sql');
1976
		} else {
1977
			update_db::gunzip('../db/pgsql/countries.sql.gz',$tmp_dir.'countries.sql');
1978
		}
1979
		$error = create_db::import_file($tmp_dir.'countries.sql');
1980
		return $error;
1981
	}
1982
1983
	
1984
	public static function update_waypoints() {
1985
		global $tmp_dir;
1986
//		update_db::download('http://dev.x-plane.com/update/data/AptNav201310XP1000.zip',$tmp_dir.'AptNav.zip');
1987
//		update_db::unzip($tmp_dir.'AptNav.zip');
1988
//		update_db::download('https://gitorious.org/fg/fgdata/raw/e81f8a15424a175a7b715f8f7eb8f4147b802a27:Navaids/awy.dat.gz',$tmp_dir.'awy.dat.gz');
1989
//		update_db::download('http://sourceforge.net/p/flightgear/fgdata/ci/next/tree/Navaids/awy.dat.gz?format=raw',$tmp_dir.'awy.dat.gz','http://sourceforge.net');
1990
		update_db::download('http://pkgs.fedoraproject.org/repo/extras/FlightGear-Atlas/awy.dat.gz/f530c9d1c4b31a288ba88dcc8224268b/awy.dat.gz',$tmp_dir.'awy.dat.gz','http://sourceforge.net');
1991
		update_db::gunzip($tmp_dir.'awy.dat.gz');
1992
		$error = update_db::waypoints($tmp_dir.'awy.dat');
1993
		return $error;
1994
	}
1995
1996
	public static function update_ivao() {
1997
		global $tmp_dir, $globalDebug;
1998
		$Common = new Common();
1999
		$error = '';
2000
		//Direct download forbidden
2001
		//if ($globalDebug) echo "IVAO : Download...";
2002
		//update_db::download('http://fr.mirror.ivao.aero/software/ivae_feb2013.zip',$tmp_dir.'ivae_feb2013.zip');
2003
		if (extension_loaded('zip')) {
2004
			if (file_exists($tmp_dir.'ivae_feb2013.zip')) {
2005
				if ($globalDebug) echo "Unzip...";
2006
				update_db::unzip($tmp_dir.'ivae_feb2013.zip');
2007
				if ($globalDebug) echo "Add to DB...";
2008
				update_db::ivao_airlines($tmp_dir.'data/airlines.dat');
2009
				if ($globalDebug) echo "Copy airlines logos to airlines images directory...";
2010
				if (is_writable(dirname(__FILE__).'/../images/airlines')) {
2011
					if (!$Common->xcopy($tmp_dir.'logos/',dirname(__FILE__).'/../images/airlines/')) $error = "Failed to copy airlines logo.";
2012
				} else $error = "The directory ".dirname(__FILE__).'/../images/airlines'." must be writable";
2013
			} else $error = "File ".$tmp_dir.'ivao.zip'." doesn't exist. Download failed.";
2014
		} else $error = "ZIP module not loaded but required for IVAO.";
2015
		if ($error != '') {
2016
			return $error;
2017
		} elseif ($globalDebug) echo "Done\n";
2018
		return '';
2019
	}
2020
2021
	public static function update_routes() {
2022
		global $tmp_dir, $globalDebug;
2023
		$error = '';
0 ignored issues
show
Unused Code introduced by
$error is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
2024
		if ($globalDebug) echo "Routes : Download...";
2025
		update_db::download('http://www.virtualradarserver.co.uk/Files/StandingData.sqb.gz',$tmp_dir.'StandingData.sqb.gz');
2026
		if (file_exists($tmp_dir.'StandingData.sqb.gz')) {
2027
			if ($globalDebug) echo "Gunzip...";
2028
			update_db::gunzip($tmp_dir.'StandingData.sqb.gz');
2029
			if ($globalDebug) echo "Add to DB...";
2030
			$error = update_db::retrieve_route_sqlite_to_dest($tmp_dir.'StandingData.sqb');
2031
		} else $error = "File ".$tmp_dir.'StandingData.sqb.gz'." doesn't exist. Download failed.";
2032
		if ($error != '') {
2033
			return $error;
2034
		} elseif ($globalDebug) echo "Done\n";
2035
		return '';
2036
	}
2037
	public static function update_oneworld() {
2038
		global $tmp_dir, $globalDebug;
2039
		$error = '';
0 ignored issues
show
Unused Code introduced by
$error is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
2040
		if ($globalDebug) echo "Schedules Oneworld : Download...";
2041
		update_db::download('http://data.flightairmap.com/data/schedules/oneworld.csv.gz',$tmp_dir.'oneworld.csv.gz');
2042
		if (file_exists($tmp_dir.'oneworld.csv.gz')) {
2043
			if ($globalDebug) echo "Gunzip...";
2044
			update_db::gunzip($tmp_dir.'oneworld.csv.gz');
2045
			if ($globalDebug) echo "Add to DB...";
2046
			$error = update_db::retrieve_route_oneworld($tmp_dir.'oneworld.csv');
2047
		} else $error = "File ".$tmp_dir.'oneworld.csv.gz'." doesn't exist. Download failed.";
2048
		if ($error != '') {
2049
			return $error;
2050
		} elseif ($globalDebug) echo "Done\n";
2051
		return '';
2052
	}
2053
	public static function update_skyteam() {
2054
		global $tmp_dir, $globalDebug;
2055
		$error = '';
0 ignored issues
show
Unused Code introduced by
$error is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
2056
		if ($globalDebug) echo "Schedules Skyteam : Download...";
2057
		update_db::download('http://data.flightairmap.com/data/schedules/skyteam.csv.gz',$tmp_dir.'skyteam.csv.gz');
2058
		if (file_exists($tmp_dir.'skyteam.csv.gz')) {
2059
			if ($globalDebug) echo "Gunzip...";
2060
			update_db::gunzip($tmp_dir.'skyteam.csv.gz');
2061
			if ($globalDebug) echo "Add to DB...";
2062
			$error = update_db::retrieve_route_skyteam($tmp_dir.'skyteam.csv');
2063
		} else $error = "File ".$tmp_dir.'skyteam.csv.gz'." doesn't exist. Download failed.";
2064
		if ($error != '') {
2065
			return $error;
2066
		} elseif ($globalDebug) echo "Done\n";
2067
		return '';
2068
	}
2069
	public static function update_ModeS() {
2070
		global $tmp_dir, $globalDebug;
2071
/*
2072
		if ($globalDebug) echo "Modes : Download...";
2073
		update_db::download('http://pp-sqb.mantma.co.uk/basestation_latest.zip',$tmp_dir.'basestation_latest.zip');
2074
		if ($globalDebug) echo "Unzip...";
2075
		update_db::unzip($tmp_dir.'basestation_latest.zip');
2076
		if ($globalDebug) echo "Add to DB...";
2077
		$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'/basestation_latest/basestation.sqb');
2078
		if ($error != true) {
2079
			echo $error;
2080
			exit;
2081
		} elseif ($globalDebug) echo "Done\n";
2082
*/
2083
		if ($globalDebug) echo "Modes : Download...";
2084
//		update_db::download('http://planebase.biz/sqb.php?f=basestationall.zip',$tmp_dir.'basestation_latest.zip','http://planebase.biz/bstnsqb');
2085
		update_db::download('http://data.flightairmap.com/data/BaseStation.sqb.gz',$tmp_dir.'BaseStation.sqb.gz');
2086
2087
//		if (file_exists($tmp_dir.'basestation_latest.zip')) {
2088
		if (file_exists($tmp_dir.'BaseStation.sqb.gz')) {
2089
			if ($globalDebug) echo "Unzip...";
2090
//			update_db::unzip($tmp_dir.'basestation_latest.zip');
2091
			update_db::gunzip($tmp_dir.'BaseStation.sqb.gz');
2092
			if ($globalDebug) echo "Add to DB...";
2093
			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'BaseStation.sqb');
2094
//			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'basestation.sqb');
2095
		} else $error = "File ".$tmp_dir.'basestation_latest.zip'." doesn't exist. Download failed.";
2096
		if ($error != '') {
2097
			return $error;
2098
		} elseif ($globalDebug) echo "Done\n";
2099
		return '';
2100
	}
2101
2102
	public static function update_ModeS_faa() {
2103
		global $tmp_dir, $globalDebug;
2104
		if ($globalDebug) echo "Modes FAA: Download...";
2105
		update_db::download('http://registry.faa.gov/database/ReleasableAircraft.zip',$tmp_dir.'ReleasableAircraft.zip');
2106
		if (file_exists($tmp_dir.'ReleasableAircraft.zip')) {
2107
			if ($globalDebug) echo "Unzip...";
2108
			update_db::unzip($tmp_dir.'ReleasableAircraft.zip');
2109
			if ($globalDebug) echo "Add to DB...";
2110
			$error = update_db::modes_faa();
2111
		} else $error = "File ".$tmp_dir.'ReleasableAircraft.zip'." doesn't exist. Download failed.";
2112
		if ($error != '') {
2113
			return $error;
2114
		} elseif ($globalDebug) echo "Done\n";
2115
		return '';
2116
	}
2117
2118
	public static function update_ModeS_flarm() {
2119
		global $tmp_dir, $globalDebug;
2120
		if ($globalDebug) echo "Modes Flarmnet: Download...";
2121
		update_db::download('http://flarmnet.org/files/data.fln',$tmp_dir.'data.fln');
2122
		if (file_exists($tmp_dir.'data.fln')) {
2123
			if ($globalDebug) echo "Add to DB...";
2124
			$error = update_db::retrieve_modes_flarmnet($tmp_dir.'data.fln');
2125
		} else $error = "File ".$tmp_dir.'data.fln'." doesn't exist. Download failed.";
2126
		if ($error != '') {
2127
			return $error;
2128
		} elseif ($globalDebug) echo "Done\n";
2129
		return '';
2130
	}
2131
2132
	public static function update_ModeS_ogn() {
2133
		global $tmp_dir, $globalDebug;
2134
		if ($globalDebug) echo "Modes OGN: Download...";
2135
		update_db::download('http://ddb.glidernet.org/download/',$tmp_dir.'ogn.csv');
2136
		if (file_exists($tmp_dir.'ogn.csv')) {
2137
			if ($globalDebug) echo "Add to DB...";
2138
			$error = update_db::retrieve_modes_ogn($tmp_dir.'ogn.csv');
2139
		} else $error = "File ".$tmp_dir.'ogn.csv'." doesn't exist. Download failed.";
2140
		if ($error != '') {
2141
			return $error;
2142
		} elseif ($globalDebug) echo "Done\n";
2143
		return '';
2144
	}
2145
2146
	public static function update_owner() {
2147
		global $tmp_dir, $globalDebug, $globalMasterSource;
2148
		
2149
		if ($globalDebug) echo "Owner France: Download...";
2150
		update_db::download('http://antonakis.co.uk/registers/France.txt',$tmp_dir.'owner_f.csv');
2151
		if (file_exists($tmp_dir.'owner_f.csv')) {
2152
			if ($globalDebug) echo "Add to DB...";
2153
			$error = update_db::retrieve_owner($tmp_dir.'owner_f.csv','F');
2154
		} else $error = "File ".$tmp_dir.'owner_f.csv'." doesn't exist. Download failed.";
2155
		if ($error != '') {
2156
			return $error;
2157
		} elseif ($globalDebug) echo "Done\n";
2158
		
2159
		if ($globalDebug) echo "Owner Ireland: Download...";
2160
		update_db::download('http://antonakis.co.uk/registers/Ireland.txt',$tmp_dir.'owner_ei.csv');
2161
		if (file_exists($tmp_dir.'owner_ei.csv')) {
2162
			if ($globalDebug) echo "Add to DB...";
2163
			$error = update_db::retrieve_owner($tmp_dir.'owner_ei.csv','EI');
2164
		} else $error = "File ".$tmp_dir.'owner_ei.csv'." doesn't exist. Download failed.";
2165
		if ($error != '') {
2166
			return $error;
2167
		} elseif ($globalDebug) echo "Done\n";
2168
		if ($globalDebug) echo "Owner Switzerland: Download...";
2169
		update_db::download('http://antonakis.co.uk/registers/Switzerland.txt',$tmp_dir.'owner_hb.csv');
2170
		if (file_exists($tmp_dir.'owner_hb.csv')) {
2171
			if ($globalDebug) echo "Add to DB...";
2172
			$error = update_db::retrieve_owner($tmp_dir.'owner_hb.csv','HB');
2173
		} else $error = "File ".$tmp_dir.'owner_hb.csv'." doesn't exist. Download failed.";
2174
		if ($error != '') {
2175
			return $error;
2176
		} elseif ($globalDebug) echo "Done\n";
2177
		if ($globalDebug) echo "Owner Czech Republic: Download...";
2178
		update_db::download('http://antonakis.co.uk/registers/CzechRepublic.txt',$tmp_dir.'owner_ok.csv');
2179
		if (file_exists($tmp_dir.'owner_ok.csv')) {
2180
			if ($globalDebug) echo "Add to DB...";
2181
			$error = update_db::retrieve_owner($tmp_dir.'owner_ok.csv','OK');
2182
		} else $error = "File ".$tmp_dir.'owner_ok.csv'." doesn't exist. Download failed.";
2183
		if ($error != '') {
2184
			return $error;
2185
		} elseif ($globalDebug) echo "Done\n";
2186
		if ($globalDebug) echo "Owner Australia: Download...";
2187
		update_db::download('http://antonakis.co.uk/registers/Australia.txt',$tmp_dir.'owner_vh.csv');
2188
		if (file_exists($tmp_dir.'owner_vh.csv')) {
2189
			if ($globalDebug) echo "Add to DB...";
2190
			$error = update_db::retrieve_owner($tmp_dir.'owner_vh.csv','VH');
2191
		} else $error = "File ".$tmp_dir.'owner_vh.csv'." doesn't exist. Download failed.";
2192
		if ($error != '') {
2193
			return $error;
2194
		} elseif ($globalDebug) echo "Done\n";
2195
		if ($globalDebug) echo "Owner Austria: Download...";
2196
		update_db::download('http://antonakis.co.uk/registers/Austria.txt',$tmp_dir.'owner_oe.csv');
2197
		if (file_exists($tmp_dir.'owner_oe.csv')) {
2198
			if ($globalDebug) echo "Add to DB...";
2199
			$error = update_db::retrieve_owner($tmp_dir.'owner_oe.csv','OE');
2200
		} else $error = "File ".$tmp_dir.'owner_oe.csv'." doesn't exist. Download failed.";
2201
		if ($error != '') {
2202
			return $error;
2203
		} elseif ($globalDebug) echo "Done\n";
2204
		if ($globalDebug) echo "Owner Chile: Download...";
2205
		update_db::download('http://antonakis.co.uk/registers/Chile.txt',$tmp_dir.'owner_cc.csv');
2206
		if (file_exists($tmp_dir.'owner_cc.csv')) {
2207
			if ($globalDebug) echo "Add to DB...";
2208
			$error = update_db::retrieve_owner($tmp_dir.'owner_cc.csv','CC');
2209
		} else $error = "File ".$tmp_dir.'owner_cc.csv'." doesn't exist. Download failed.";
2210
		if ($error != '') {
2211
			return $error;
2212
		} elseif ($globalDebug) echo "Done\n";
2213
		if ($globalDebug) echo "Owner Colombia: Download...";
2214
		update_db::download('http://antonakis.co.uk/registers/Colombia.txt',$tmp_dir.'owner_hj.csv');
2215
		if (file_exists($tmp_dir.'owner_hj.csv')) {
2216
			if ($globalDebug) echo "Add to DB...";
2217
			$error = update_db::retrieve_owner($tmp_dir.'owner_hj.csv','HJ');
2218
		} else $error = "File ".$tmp_dir.'owner_hj.csv'." doesn't exist. Download failed.";
2219
		if ($error != '') {
2220
			return $error;
2221
		} elseif ($globalDebug) echo "Done\n";
2222
		if ($globalDebug) echo "Owner Bosnia Herzegobina: Download...";
2223
		update_db::download('http://antonakis.co.uk/registers/BosniaHerzegovina.txt',$tmp_dir.'owner_e7.csv');
2224
		if (file_exists($tmp_dir.'owner_e7.csv')) {
2225
			if ($globalDebug) echo "Add to DB...";
2226
			$error = update_db::retrieve_owner($tmp_dir.'owner_e7.csv','E7');
2227
		} else $error = "File ".$tmp_dir.'owner_e7.csv'." doesn't exist. Download failed.";
2228
		if ($error != '') {
2229
			return $error;
2230
		} elseif ($globalDebug) echo "Done\n";
2231
		if ($globalDebug) echo "Owner Brazil: Download...";
2232
		update_db::download('http://antonakis.co.uk/registers/Brazil.txt',$tmp_dir.'owner_pp.csv');
2233
		if (file_exists($tmp_dir.'owner_pp.csv')) {
2234
			if ($globalDebug) echo "Add to DB...";
2235
			$error = update_db::retrieve_owner($tmp_dir.'owner_pp.csv','PP');
2236
		} else $error = "File ".$tmp_dir.'owner_pp.csv'." doesn't exist. Download failed.";
2237
		if ($error != '') {
2238
			return $error;
2239
		} elseif ($globalDebug) echo "Done\n";
2240
		if ($globalDebug) echo "Owner Cayman Islands: Download...";
2241
		update_db::download('http://antonakis.co.uk/registers/CaymanIslands.txt',$tmp_dir.'owner_vp.csv');
2242
		if (file_exists($tmp_dir.'owner_vp.csv')) {
2243
			if ($globalDebug) echo "Add to DB...";
2244
			$error = update_db::retrieve_owner($tmp_dir.'owner_vp.csv','VP');
2245
		} else $error = "File ".$tmp_dir.'owner_vp.csv'." doesn't exist. Download failed.";
2246
		if ($error != '') {
2247
			return $error;
2248
		} elseif ($globalDebug) echo "Done\n";
2249
		if ($globalDebug) echo "Owner Croatia: Download...";
2250
		update_db::download('http://antonakis.co.uk/registers/Croatia.txt',$tmp_dir.'owner_9a.csv');
2251
		if (file_exists($tmp_dir.'owner_9a.csv')) {
2252
			if ($globalDebug) echo "Add to DB...";
2253
			$error = update_db::retrieve_owner($tmp_dir.'owner_9a.csv','9A');
2254
		} else $error = "File ".$tmp_dir.'owner_9a.csv'." doesn't exist. Download failed.";
2255
		if ($error != '') {
2256
			return $error;
2257
		} elseif ($globalDebug) echo "Done\n";
2258
		if ($globalDebug) echo "Owner Luxembourg: Download...";
2259
		update_db::download('http://antonakis.co.uk/registers/Luxembourg.txt',$tmp_dir.'owner_lx.csv');
2260
		if (file_exists($tmp_dir.'owner_lx.csv')) {
2261
			if ($globalDebug) echo "Add to DB...";
2262
			$error = update_db::retrieve_owner($tmp_dir.'owner_lx.csv','LX');
2263
		} else $error = "File ".$tmp_dir.'owner_lx.csv'." doesn't exist. Download failed.";
2264
		if ($error != '') {
2265
			return $error;
2266
		} elseif ($globalDebug) echo "Done\n";
2267
		if ($globalDebug) echo "Owner Maldives: Download...";
2268
		update_db::download('http://antonakis.co.uk/registers/Maldives.txt',$tmp_dir.'owner_8q.csv');
2269
		if (file_exists($tmp_dir.'owner_8q.csv')) {
2270
			if ($globalDebug) echo "Add to DB...";
2271
			$error = update_db::retrieve_owner($tmp_dir.'owner_8q.csv','8Q');
2272
		} else $error = "File ".$tmp_dir.'owner_8q.csv'." doesn't exist. Download failed.";
2273
		if ($error != '') {
2274
			return $error;
2275
		} elseif ($globalDebug) echo "Done\n";
2276
		if ($globalDebug) echo "Owner New Zealand: Download...";
2277
		update_db::download('http://antonakis.co.uk/registers/NewZealand.txt',$tmp_dir.'owner_zk.csv');
2278
		if (file_exists($tmp_dir.'owner_zk.csv')) {
2279
			if ($globalDebug) echo "Add to DB...";
2280
			$error = update_db::retrieve_owner($tmp_dir.'owner_zk.csv','ZK');
2281
		} else $error = "File ".$tmp_dir.'owner_zk.csv'." doesn't exist. Download failed.";
2282
		if ($error != '') {
2283
			return $error;
2284
		} elseif ($globalDebug) echo "Done\n";
2285
		if ($globalDebug) echo "Owner Papua New Guinea: Download...";
2286
		update_db::download('http://antonakis.co.uk/registers/PapuaNewGuinea.txt',$tmp_dir.'owner_p2.csv');
2287
		if (file_exists($tmp_dir.'owner_p2.csv')) {
2288
			if ($globalDebug) echo "Add to DB...";
2289
			$error = update_db::retrieve_owner($tmp_dir.'owner_p2.csv','P2');
2290
		} else $error = "File ".$tmp_dir.'owner_p2.csv'." doesn't exist. Download failed.";
2291
		if ($error != '') {
2292
			return $error;
2293
		} elseif ($globalDebug) echo "Done\n";
2294
		if ($globalDebug) echo "Owner Slovakia: Download...";
2295
		update_db::download('http://antonakis.co.uk/registers/Slovakia.txt',$tmp_dir.'owner_om.csv');
2296
		if (file_exists($tmp_dir.'owner_om.csv')) {
2297
			if ($globalDebug) echo "Add to DB...";
2298
			$error = update_db::retrieve_owner($tmp_dir.'owner_om.csv','OM');
2299
		} else $error = "File ".$tmp_dir.'owner_om.csv'." doesn't exist. Download failed.";
2300
		if ($error != '') {
2301
			return $error;
2302
		} elseif ($globalDebug) echo "Done\n";
2303
		if ($globalDebug) echo "Owner Ecuador: Download...";
2304
		update_db::download('http://antonakis.co.uk/registers/Ecuador.txt',$tmp_dir.'owner_hc.csv');
2305
		if (file_exists($tmp_dir.'owner_hc.csv')) {
2306
			if ($globalDebug) echo "Add to DB...";
2307
			$error = update_db::retrieve_owner($tmp_dir.'owner_hc.csv','HC');
2308
		} else $error = "File ".$tmp_dir.'owner_hc.csv'." doesn't exist. Download failed.";
2309
		if ($error != '') {
2310
			return $error;
2311
		} elseif ($globalDebug) echo "Done\n";
2312
		if ($globalDebug) echo "Owner Iceland: Download...";
2313
		update_db::download('http://antonakis.co.uk/registers/Iceland.txt',$tmp_dir.'owner_tf.csv');
2314
		if (file_exists($tmp_dir.'owner_tf.csv')) {
2315
			if ($globalDebug) echo "Add to DB...";
2316
			$error = update_db::retrieve_owner($tmp_dir.'owner_tf.csv','TF');
2317
		} else $error = "File ".$tmp_dir.'owner_tf.csv'." doesn't exist. Download failed.";
2318
		if ($error != '') {
2319
			return $error;
2320
		} elseif ($globalDebug) echo "Done\n";
2321
		if ($globalDebug) echo "Owner Isle of Man: Download...";
2322
		update_db::download('http://antonakis.co.uk/registers/IsleOfMan.txt',$tmp_dir.'owner_m.csv');
2323
		if (file_exists($tmp_dir.'owner_m.csv')) {
2324
			if ($globalDebug) echo "Add to DB...";
2325
			$error = update_db::retrieve_owner($tmp_dir.'owner_m.csv','M');
2326
		} else $error = "File ".$tmp_dir.'owner_m.csv'." doesn't exist. Download failed.";
2327
		if ($error != '') {
2328
			return $error;
2329
		} elseif ($globalDebug) echo "Done\n";
2330
		if ($globalMasterSource) {
2331
			if ($globalDebug) echo "ModeS Netherlands: Download...";
2332
			update_db::download('http://antonakis.co.uk/registers/Netherlands.txt',$tmp_dir.'owner_ph.csv');
2333
			if (file_exists($tmp_dir.'owner_ph.csv')) {
2334
				if ($globalDebug) echo "Add to DB...";
2335
				$error = update_db::retrieve_owner($tmp_dir.'owner_ph.csv','PH');
2336
			} else $error = "File ".$tmp_dir.'owner_ph.csv'." doesn't exist. Download failed.";
2337
			if ($error != '') {
2338
				return $error;
2339
			} elseif ($globalDebug) echo "Done\n";
2340
			if ($globalDebug) echo "ModeS Denmark: Download...";
2341
			update_db::download('http://antonakis.co.uk/registers/Denmark.txt',$tmp_dir.'owner_oy.csv');
2342
			if (file_exists($tmp_dir.'owner_oy.csv')) {
2343
				if ($globalDebug) echo "Add to DB...";
2344
				$error = update_db::retrieve_owner($tmp_dir.'owner_oy.csv','OY');
2345
			} else $error = "File ".$tmp_dir.'owner_oy.csv'." doesn't exist. Download failed.";
2346
			if ($error != '') {
2347
				return $error;
2348
			} elseif ($globalDebug) echo "Done\n";
2349
		} elseif ($globalDebug) echo "Done\n";
2350
		return '';
2351
	}
2352
2353
	public static function update_translation() {
2354
		global $tmp_dir, $globalDebug;
2355
		$error = '';
0 ignored issues
show
Unused Code introduced by
$error is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
2356
		if ($globalDebug) echo "Translation : Download...";
2357
		update_db::download('http://www.acarsd.org/download/translation.php',$tmp_dir.'translation.zip');
2358
		if (file_exists($tmp_dir.'translation.zip')) {
2359
			if ($globalDebug) echo "Unzip...";
2360
			update_db::unzip($tmp_dir.'translation.zip');
2361
			if ($globalDebug) echo "Add to DB...";
2362
			$error = update_db::translation();
2363
		} else $error = "File ".$tmp_dir.'translation.zip'." doesn't exist. Download failed.";
2364
		if ($error != '') {
2365
			return $error;
2366
		} elseif ($globalDebug) echo "Done\n";
2367
		return '';
2368
	}
2369
2370
	public static function update_translation_fam() {
2371
		global $tmp_dir, $globalDebug;
2372
		if ($globalDebug) echo "Translation from FlightAirMap website : Download...";
2373
		update_db::download('http://data.flightairmap.com/data/translation.tsv.gz',$tmp_dir.'translation.tsv.gz');
2374
		update_db::download('http://data.flightairmap.com/data/translation.tsv.gz.md5',$tmp_dir.'translation.tsv.gz.md5');
2375
		if (file_exists($tmp_dir.'translation.tsv.gz') && file_exists($tmp_dir.'translation.tsv.gz')) {
2376
			$translation_md5_file = explode(' ',file_get_contents($tmp_dir.'translation.tsv.gz.md5'));
2377
			$translation_md5 = $translation_md5_file[0];
2378
			if (md5_file($tmp_dir.'translation.tsv.gz') == $translation_md5) {
2379
				if ($globalDebug) echo "Gunzip...";
2380
				update_db::gunzip($tmp_dir.'translation.tsv.gz');
2381
				if ($globalDebug) echo "Add to DB...";
2382
				$error = update_db::translation_fam();
2383
			} else $error = "File ".$tmp_dir.'translation.tsv.gz'." md5 failed. Download failed.";
2384
		} else $error = "File ".$tmp_dir.'translation.tsv.gz'." doesn't exist. Download failed.";
2385
		if ($error != '') {
2386
			return $error;
2387
		} elseif ($globalDebug) echo "Done\n";
2388
		return '';
2389
	}
2390
	public static function update_ModeS_fam() {
2391
		global $tmp_dir, $globalDebug;
2392
		if ($globalDebug) echo "ModeS from FlightAirMap website : Download...";
2393
		update_db::download('http://data.flightairmap.com/data/modes.tsv.gz',$tmp_dir.'modes.tsv.gz');
2394
		update_db::download('http://data.flightairmap.com/data/modes.tsv.gz.md5',$tmp_dir.'modes.tsv.gz.md5');
2395
		if (file_exists($tmp_dir.'modes.tsv.gz') && file_exists($tmp_dir.'modes.tsv.gz.md5')) {
2396
			$modes_md5_file = explode(' ',file_get_contents($tmp_dir.'modes.tsv.gz.md5'));
2397
			$modes_md5 = $modes_md5_file[0];
2398
			if (md5_file($tmp_dir.'modes.tsv.gz') == $modes_md5) {
2399
				if ($globalDebug) echo "Gunzip...";
2400
				update_db::gunzip($tmp_dir.'modes.tsv.gz');
2401
				if ($globalDebug) echo "Add to DB...";
2402
				$error = update_db::modes_fam();
2403
			} else $error = "File ".$tmp_dir.'modes.tsv.gz'." md5 failed. Download failed.";
2404
		} else $error = "File ".$tmp_dir.'modes.tsv.gz'." doesn't exist. Download failed.";
2405
		if ($error != '') {
2406
			return $error;
2407
		} elseif ($globalDebug) echo "Done\n";
2408
		return '';
2409
	}
2410
2411
	public static function update_airlines_fam() {
2412
		global $tmp_dir, $globalDebug;
2413
		if ($globalDebug) echo "Airlines from FlightAirMap website : Download...";
2414
		update_db::download('http://data.flightairmap.com/data/airlines.tsv.gz.md5',$tmp_dir.'airlines.tsv.gz.md5');
2415
		if (file_exists($tmp_dir.'airlines.tsv.gz.md5')) {
2416
			$airlines_md5_file = explode(' ',file_get_contents($tmp_dir.'airlines.tsv.gz.md5'));
2417
			$airlines_md5 = $airlines_md5_file[0];
2418
			if (!update_db::check_airlines_version($airlines_md5)) {
2419
				update_db::download('http://data.flightairmap.com/data/airlines.tsv.gz',$tmp_dir.'airlines.tsv.gz');
2420
				if (file_exists($tmp_dir.'airlines.tsv.gz')) {
2421
					if (md5_file($tmp_dir.'airlines.tsv.gz') == $airlines_md5) {
2422
						if ($globalDebug) echo "Gunzip...";
2423
						update_db::gunzip($tmp_dir.'airlines.tsv.gz');
2424
						if ($globalDebug) echo "Add to DB...";
2425
						$error = update_db::airlines_fam();
2426
						update_db::insert_airlines_version($airlines_md5);
2427
					} else $error = "File ".$tmp_dir.'airlines.tsv.gz'." md5 failed. Download failed.";
2428
			    } else $error = "File ".$tmp_dir.'airlines.tsv.gz'." doesn't exist. Download failed.";
2429
			} elseif ($globalDebug) echo "No update";
2430
		} else $error = "File ".$tmp_dir.'airlines.tsv.gz.md5'." doesn't exist. Download failed.";
2431
		if ($error != '') {
2432
			return $error;
0 ignored issues
show
Bug introduced by
The variable $error does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
2433
		} else {
2434
			if ($globalDebug) echo "Done\n";
2435
		}
2436
		return '';
2437
	}
2438
2439
	public static function update_owner_fam() {
2440
		global $tmp_dir, $globalDebug, $globalOwner;
2441
		if ($globalDebug) echo "owner from FlightAirMap website : Download...";
2442
		$error = '';
0 ignored issues
show
Unused Code introduced by
$error is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
2443
		if ($globalOwner === TRUE) {
2444
			update_db::download('http://data.flightairmap.com/data/owners_all.tsv.gz',$tmp_dir.'owners.tsv.gz');
2445
			update_db::download('http://data.flightairmap.com/data/owners_all.tsv.gz.md5',$tmp_dir.'owners.tsv.gz.md5');
2446
		} else {
2447
			update_db::download('http://data.flightairmap.com/data/owners.tsv.gz',$tmp_dir.'owners.tsv.gz');
2448
			update_db::download('http://data.flightairmap.com/data/owners.tsv.gz.md5',$tmp_dir.'owners.tsv.gz.md5');
2449
		}
2450
		if (file_exists($tmp_dir.'owners.tsv.gz') && file_exists($tmp_dir.'owners.tsv.gz.md5')) {
2451
			$owners_md5_file = explode(' ',file_get_contents($tmp_dir.'owners.tsv.gz.md5'));
2452
			$owners_md5 = $owners_md5_file[0];
2453
			if (md5_file($tmp_dir.'owners.tsv.gz') == $owners_md5) {
2454
				if ($globalDebug) echo "Gunzip...";
2455
				update_db::gunzip($tmp_dir.'owners.tsv.gz');
2456
				if ($globalDebug) echo "Add to DB...";
2457
				$error = update_db::owner_fam();
2458
			} else $error = "File ".$tmp_dir.'owners.tsv.gz'." md5 failed. Download failed.";
2459
		} else $error = "File ".$tmp_dir.'owners.tsv.gz'." doesn't exist. Download failed.";
2460
		if ($error != '') {
2461
			return $error;
2462
		} elseif ($globalDebug) echo "Done\n";
2463
		return '';
2464
	}
2465
	public static function update_routes_fam() {
2466
		global $tmp_dir, $globalDebug;
2467
		if ($globalDebug) echo "Routes from FlightAirMap website : Download...";
2468
		update_db::download('http://data.flightairmap.com/data/routes.tsv.gz',$tmp_dir.'routes.tsv.gz');
2469
		update_db::download('http://data.flightairmap.com/data/routes.tsv.gz.md5',$tmp_dir.'routes.tsv.gz.md5');
2470
		if (file_exists($tmp_dir.'routes.tsv.gz') && file_exists($tmp_dir.'routes.tsv.gz.md5')) {
2471
			$routes_md5_file = explode(' ',file_get_contents($tmp_dir.'routes.tsv.gz.md5'));
2472
			$routes_md5 = $routes_md5_file[0];
2473
			if (md5_file($tmp_dir.'routes.tsv.gz') == $routes_md5) {
2474
				if ($globalDebug) echo "Gunzip...";
2475
				update_db::gunzip($tmp_dir.'routes.tsv.gz');
2476
				if ($globalDebug) echo "Add to DB...";
2477
				$error = update_db::routes_fam();
2478
			} else $error = "File ".$tmp_dir.'routes.tsv.gz'." md5 failed. Download failed.";
2479
		} else $error = "File ".$tmp_dir.'routes.tsv.gz'." doesn't exist. Download failed.";
2480
		if ($error != '') {
2481
			return $error;
2482
		} elseif ($globalDebug) echo "Done\n";
2483
		return '';
2484
	}
2485
	public static function update_marine_identity_fam() {
2486
		global $tmp_dir, $globalDebug;
2487
		update_db::download('http://data.flightairmap.com/data/marine_identity.tsv.gz.md5',$tmp_dir.'marine_identity.tsv.gz.md5');
2488
		if (file_exists($tmp_dir.'marine_identity.tsv.gz.md5')) {
2489
			$marine_identity_md5_file = explode(' ',file_get_contents($tmp_dir.'marine_identity.tsv.gz.md5'));
2490
			$marine_identity_md5 = $marine_identity_md5_file[0];
2491
			if (!update_db::check_marine_identity_version($marine_identity_md5)) {
2492
				if ($globalDebug) echo "Marine identity from FlightAirMap website : Download...";
2493
				update_db::download('http://data.flightairmap.com/data/marine_identity.tsv.gz',$tmp_dir.'marine_identity.tsv.gz');
2494
				if (file_exists($tmp_dir.'marine_identity.tsv.gz')) {
2495
					if (md5_file($tmp_dir.'marine_identity.tsv.gz') == $marine_identity_md5) {
2496
						if ($globalDebug) echo "Gunzip...";
2497
						update_db::gunzip($tmp_dir.'marine_identity.tsv.gz');
2498
						if ($globalDebug) echo "Add to DB...";
2499
						$error = update_db::marine_identity_fam();
2500
					} else $error = "File ".$tmp_dir.'marine_identity.tsv.gz'." md5 failed. Download failed.";
2501
				} else $error = "File ".$tmp_dir.'marine_identity.tsv.gz'." doesn't exist. Download failed.";
2502
				if ($error != '') {
2503
					return $error;
2504
				} else {
2505
					update_db::insert_marine_identity_version($marine_identity_md5);
2506
					if ($globalDebug) echo "Done\n";
2507
				}
2508
			}
2509
		}
2510
		return '';
2511
	}
2512
2513
	public static function update_satellite_fam() {
2514
		global $tmp_dir, $globalDebug;
2515
		update_db::download('http://data.flightairmap.com/data/satellite.tsv.gz.md5',$tmp_dir.'satellite.tsv.gz.md5');
2516
		if (file_exists($tmp_dir.'satellite.tsv.gz.md5')) {
2517
			$satellite_md5_file = explode(' ',file_get_contents($tmp_dir.'satellite.tsv.gz.md5'));
2518
			$satellite_md5 = $satellite_md5_file[0];
2519
			if (!update_db::check_satellite_version($satellite_md5)) {
2520
				if ($globalDebug) echo "Satellite from FlightAirMap website : Download...";
2521
				update_db::download('http://data.flightairmap.com/data/satellite.tsv.gz',$tmp_dir.'satellite.tsv.gz');
2522
				if (file_exists($tmp_dir.'satellite.tsv.gz')) {
2523
					if (md5_file($tmp_dir.'satellite.tsv.gz') == $satellite_md5) {
2524
						if ($globalDebug) echo "Gunzip...";
2525
						update_db::gunzip($tmp_dir.'satellite.tsv.gz');
2526
						if ($globalDebug) echo "Add to DB...";
2527
						$error = update_db::satellite_fam();
2528
					} else $error = "File ".$tmp_dir.'satellite.tsv.gz'." md5 failed. Download failed.";
2529
				} else $error = "File ".$tmp_dir.'satellite.tsv.gz'." doesn't exist. Download failed.";
2530
				if ($error != '') {
2531
					return $error;
2532
				} else {
2533
					update_db::insert_satellite_version($satellite_md5);
2534
					if ($globalDebug) echo "Done\n";
2535
				}
2536
			}
2537
		}
2538
		return '';
2539
	}
2540
	public static function update_banned_fam() {
2541
		global $tmp_dir, $globalDebug;
2542
		if ($globalDebug) echo "Banned airlines in Europe from FlightAirMap website : Download...";
2543
		update_db::download('http://data.flightairmap.com/data/ban-eu.csv',$tmp_dir.'ban_eu.csv');
2544
		if (file_exists($tmp_dir.'ban_eu.csv')) {
2545
			//if ($globalDebug) echo "Gunzip...";
2546
			//update_db::gunzip($tmp_dir.'ban_ue.csv');
2547
			if ($globalDebug) echo "Add to DB...";
2548
			$error = update_db::banned_fam();
2549
		} else $error = "File ".$tmp_dir.'ban_eu.csv'." doesn't exist. Download failed.";
2550
		if ($error != '') {
2551
			return $error;
2552
		} elseif ($globalDebug) echo "Done\n";
2553
		return '';
2554
	}
2555
2556
	public static function update_airspace_fam() {
2557
		global $tmp_dir, $globalDebug, $globalDBdriver;
2558
		include_once('class.create_db.php');
2559
		$error = '';
2560
		if ($globalDebug) echo "Airspace from FlightAirMap website : Download...";
2561
		if ($globalDBdriver == 'mysql') {
2562
			update_db::download('http://data.flightairmap.com/data/airspace_mysql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2563
		} else {
2564
			update_db::download('http://data.flightairmap.com/data/airspace_pgsql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2565
		}
2566
		if (file_exists($tmp_dir.'airspace.sql.gz.md5')) {
2567
			$airspace_md5_file = explode(' ',file_get_contents($tmp_dir.'airspace.sql.gz.md5'));
2568
			$airspace_md5 = $airspace_md5_file[0];
2569
			if (!update_db::check_airspace_version($airspace_md5)) {
2570
				if ($globalDBdriver == 'mysql') {
2571
					update_db::download('http://data.flightairmap.com/data/airspace_mysql.sql.gz',$tmp_dir.'airspace.sql.gz');
2572
				} else {
2573
					update_db::download('http://data.flightairmap.com/data/airspace_pgsql.sql.gz',$tmp_dir.'airspace.sql.gz');
2574
				}
2575
				if (file_exists($tmp_dir.'airspace.sql.gz')) {
2576
					if (md5_file($tmp_dir.'airspace.sql.gz') == $airspace_md5) {
2577
						if ($globalDebug) echo "Gunzip...";
2578
						update_db::gunzip($tmp_dir.'airspace.sql.gz');
2579
						if ($globalDebug) echo "Add to DB...";
2580
						$Connection = new Connection();
2581
						if ($Connection->tableExists('airspace')) {
2582
							$query = 'DROP TABLE airspace';
2583
							try {
2584
								$sth = $Connection->db->prepare($query);
2585
								$sth->execute();
2586
							} catch(PDOException $e) {
2587
								return "error : ".$e->getMessage();
2588
							}
2589
						}
2590
						$error = create_db::import_file($tmp_dir.'airspace.sql');
2591
						update_db::insert_airspace_version($airspace_md5);
2592
					} else $error = "File ".$tmp_dir.'airspace.sql.gz'." md5 failed. Download failed.";
2593
				} else $error = "File ".$tmp_dir.'airspace.sql.gz'." doesn't exist. Download failed.";
2594
			}
2595
		} else $error = "File ".$tmp_dir.'airspace.sql.gz.md5'." doesn't exist. Download failed.";
2596
		if ($error != '') {
2597
			return $error;
2598
		} elseif ($globalDebug) echo "Done\n";
2599
		return '';
2600
	}
2601
2602
	public static function update_geoid_fam() {
2603
		global $tmp_dir, $globalDebug, $globalGeoidSource;
2604
		$error = '';
2605
		if ($globalDebug) echo "Geoid from FlightAirMap website : Download...";
2606
		update_db::download('http://data.flightairmap.com/data/geoid/'.$globalGeoidSource.'.pgm.gz.md5',$tmp_dir.$globalGeoidSource.'.pgm.gz.md5');
2607
		if (file_exists($tmp_dir.$globalGeoidSource.'.pgm.gz.md5')) {
2608
			$geoid_md5_file = explode(' ',file_get_contents($tmp_dir.$globalGeoidSource.'.pgm.gz.md5'));
2609
			$geoid_md5 = $geoid_md5_file[0];
2610
			if (!update_db::check_geoid_version($geoid_md5)) {
2611
				update_db::download('http://data.flightairmap.com/data/geoid/'.$globalGeoidSource.'.pgm.gz',$tmp_dir.$globalGeoidSource.'.pgm.gz');
2612
				if (file_exists($tmp_dir.$globalGeoidSource.'.pgm.gz')) {
2613
					if (md5_file($tmp_dir.$globalGeoidSource.'.pgm.gz') == $geoid_md5) {
2614
						if ($globalDebug) echo "Gunzip...";
2615
						update_db::gunzip($tmp_dir.$globalGeoidSource.'.pgm.gz',dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm');
2616
						if (file_exists(dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm')) {
2617
							update_db::insert_geoid_version($geoid_md5);
2618
						}
2619
					} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz'." md5 failed. Download failed.";
2620
				} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz'." doesn't exist. Download failed.";
2621
			}
2622
		} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz.md5'." doesn't exist. Download failed.";
2623
		if ($error != '') {
2624
			return $error;
2625
		} elseif ($globalDebug) echo "Done\n";
2626
		return '';
2627
	}
2628
2629
	public static function update_tle() {
2630
		global $tmp_dir, $globalDebug;
2631
		if ($globalDebug) echo "Download TLE : Download...";
2632
		$alltle = array('stations.txt','gps-ops.txt','glo-ops.txt','galileo.txt','weather.txt','noaa.txt','goes.txt','resource.txt','dmc.txt','tdrss.txt','geo.txt','intelsat.txt','gorizont.txt',
2633
		'raduga.txt','molniya.txt','iridium.txt','orbcomm.txt','globalstar.txt','amateur.txt','x-comm.txt','other-comm.txt','sbas.txt','nnss.txt','musson.txt','science.txt','geodetic.txt',
2634
		'engineering.txt','education.txt','military.txt','radar.txt','cubesat.txt','other.txt','tle-new.txt','visual.txt','sarsat.txt','argos.txt','ses.txt','iridium-NEXT.txt','beidou.txt');
2635
		foreach ($alltle as $filename) {
2636
			if ($globalDebug) echo "downloading ".$filename.'...';
2637
			update_db::download('http://celestrak.com/NORAD/elements/'.$filename,$tmp_dir.$filename);
2638
			if (file_exists($tmp_dir.$filename)) {
2639
				if ($globalDebug) echo "Add to DB ".$filename."...";
2640
				$error = update_db::tle($tmp_dir.$filename,str_replace('.txt','',$filename));
2641
			} else $error = "File ".$tmp_dir.$filename." doesn't exist. Download failed.";
2642
			if ($error != '') {
2643
				echo $error."\n";
2644
			} elseif ($globalDebug) echo "Done\n";
2645
		}
2646
		return '';
2647
	}
2648
2649
	public static function update_ucsdb() {
2650
		global $tmp_dir, $globalDebug;
2651
		if ($globalDebug) echo "Download UCS DB : Download...";
2652
		update_db::download('https://s3.amazonaws.com/ucs-documents/nuclear-weapons/sat-database/4-11-17-update/UCS_Satellite_Database_officialname_1-1-17.txt',$tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt');
2653
		if (file_exists($tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt')) {
2654
			if ($globalDebug) echo "Add to DB...";
2655
			$error = update_db::satellite_ucsdb($tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt');
2656
		} else $error = "File ".$tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt'." doesn't exist. Download failed.";
2657
		if ($error != '') {
2658
			echo $error."\n";
2659
		} elseif ($globalDebug) echo "Done\n";
2660
		return '';
2661
	}
2662
2663
	public static function update_celestrak() {
2664
		global $tmp_dir, $globalDebug;
2665
		if ($globalDebug) echo "Download Celestrak DB : Download...";
2666
		update_db::download('http://celestrak.com/pub/satcat.txt',$tmp_dir.'satcat.txt');
2667
		if (file_exists($tmp_dir.'satcat.txt')) {
2668
			if ($globalDebug) echo "Add to DB...";
2669
			$error = update_db::satellite_celestrak($tmp_dir.'satcat.txt');
2670
		} else $error = "File ".$tmp_dir.'satcat.txt'." doesn't exist. Download failed.";
2671
		if ($error != '') {
2672
			echo $error."\n";
2673
		} elseif ($globalDebug) echo "Done\n";
2674
		return '';
2675
	}
2676
2677
	public static function update_models() {
2678
		global $tmp_dir, $globalDebug;
2679
		$error = '';
2680
		if ($globalDebug) echo "Models from FlightAirMap website : Download...";
2681
		update_db::download('http://data.flightairmap.com/data/models/models.md5sum',$tmp_dir.'models.md5sum');
2682
		if (file_exists($tmp_dir.'models.md5sum')) {
2683
			if ($globalDebug) echo "Check files...\n";
2684
			$newmodelsdb = array();
2685
			if (($handle = fopen($tmp_dir.'models.md5sum','r')) !== FALSE) {
2686
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2687
					$model = trim($row[2]);
2688
					$newmodelsdb[$model] = trim($row[0]);
2689
				}
2690
			}
2691
			$modelsdb = array();
2692
			if (file_exists(dirname(__FILE__).'/../models/models.md5sum')) {
2693
				if (($handle = fopen(dirname(__FILE__).'/../models/models.md5sum','r')) !== FALSE) {
2694
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2695
						$model = trim($row[2]);
2696
						$modelsdb[$model] = trim($row[0]);
2697
					}
2698
				}
2699
			}
2700
			$diff = array_diff($newmodelsdb,$modelsdb);
2701
			foreach ($diff as $key => $value) {
2702
				if ($globalDebug) echo 'Downloading model '.$key.' ...'."\n";
2703
				update_db::download('http://data.flightairmap.com/data/models/'.$key,dirname(__FILE__).'/../models/'.$key);
2704
				
2705
			}
2706
			update_db::download('http://data.flightairmap.com/data/models/models.md5sum',dirname(__FILE__).'/../models/models.md5sum');
2707
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2708
		if ($error != '') {
2709
			return $error;
2710
		} elseif ($globalDebug) echo "Done\n";
2711
		return '';
2712
	}
2713
2714
	public static function update_space_models() {
2715
		global $tmp_dir, $globalDebug;
2716
		$error = '';
2717
		if ($globalDebug) echo "Space models from FlightAirMap website : Download...";
2718
		update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',$tmp_dir.'space_models.md5sum');
2719
		if (file_exists($tmp_dir.'space_models.md5sum')) {
2720
			if ($globalDebug) echo "Check files...\n";
2721
			$newmodelsdb = array();
2722
			if (($handle = fopen($tmp_dir.'space_models.md5sum','r')) !== FALSE) {
2723
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2724
					$model = trim($row[2]);
2725
					$newmodelsdb[$model] = trim($row[0]);
2726
				}
2727
			}
2728
			$modelsdb = array();
2729
			if (file_exists(dirname(__FILE__).'/../models/space/space_models.md5sum')) {
2730
				if (($handle = fopen(dirname(__FILE__).'/../models/space/space_models.md5sum','r')) !== FALSE) {
2731
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2732
						$model = trim($row[2]);
2733
						$modelsdb[$model] = trim($row[0]);
2734
					}
2735
				}
2736
			}
2737
			$diff = array_diff($newmodelsdb,$modelsdb);
2738
			foreach ($diff as $key => $value) {
2739
				if ($globalDebug) echo 'Downloading space model '.$key.' ...'."\n";
2740
				update_db::download('http://data.flightairmap.com/data/models/space/'.$key,dirname(__FILE__).'/../models/space/'.$key);
2741
				
2742
			}
2743
			update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',dirname(__FILE__).'/../models/space/space_models.md5sum');
2744
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2745
		if ($error != '') {
2746
			return $error;
2747
		} elseif ($globalDebug) echo "Done\n";
2748
		return '';
2749
	}
2750
2751
	public static function update_vehicules_models() {
2752
		global $tmp_dir, $globalDebug;
2753
		$error = '';
2754
		if ($globalDebug) echo "Vehicules models from FlightAirMap website : Download...";
2755
		update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',$tmp_dir.'vehicules_models.md5sum');
2756
		if (file_exists($tmp_dir.'vehicules_models.md5sum')) {
2757
			if ($globalDebug) echo "Check files...\n";
2758
			$newmodelsdb = array();
2759
			if (($handle = fopen($tmp_dir.'vehicules_models.md5sum','r')) !== FALSE) {
2760
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2761
					$model = trim($row[2]);
2762
					$newmodelsdb[$model] = trim($row[0]);
2763
				}
2764
			}
2765
			$modelsdb = array();
2766
			if (file_exists(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum')) {
2767
				if (($handle = fopen(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum','r')) !== FALSE) {
2768
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2769
						$model = trim($row[2]);
2770
						$modelsdb[$model] = trim($row[0]);
2771
					}
2772
				}
2773
			}
2774
			$diff = array_diff($newmodelsdb,$modelsdb);
2775
			foreach ($diff as $key => $value) {
2776
				if ($globalDebug) echo 'Downloading vehicules model '.$key.' ...'."\n";
2777
				update_db::download('http://data.flightairmap.com/data/models/vehicules/'.$key,dirname(__FILE__).'/../models/vehicules/'.$key);
2778
				
2779
			}
2780
			update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum');
2781
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2782
		if ($error != '') {
2783
			return $error;
2784
		} elseif ($globalDebug) echo "Done\n";
2785
		return '';
2786
	}
2787
2788
	public static function update_aircraft() {
2789
		global $tmp_dir, $globalDebug;
2790
		date_default_timezone_set('UTC');
2791
		//$error = '';
2792
		/*
2793
		if ($globalDebug) echo "Aircrafts : Download...";
2794
		$data_req_array = array('Mnfctrer' => '','Model' => '','Dscrptn'=> '','EngCount' =>'' ,'EngType'=> '','TDesig' => '*','WTC' => '','Button' => 'Search');
2795
		$data_req = 'Mnfctrer=Airbus&Model=&Dscrptn=&EngCount=&EngType=&TDesig=&WTC=&Button=Search';
2796
		//$data = Common::getData('http://cfapp.icao.int/Doc8643/8643_List1.cfm','post',$data_req_array,array('Content-Type: application/x-www-form-urlencoded','Host: cfapp.icao.int','Origin: http://cfapp.icao.int','Pragma: no-cache','Upgrade-Insecure-Requests: 1','Content-Length: '.strlen($data_req)),'','http://cfapp.icao.int/Doc8643/search.cfm',20);
2797
		$data = Common::getData('http://cfapp.icao.int/Doc8643/8643_List1.cfm','post',$data_req_array,'','','http://cfapp.icao.int/Doc8643/search.cfm',30);
2798
//		echo strlen($data_req);
2799
		echo $data;
2800
		*/
2801
		if (file_exists($tmp_dir.'aircrafts.html')) {
2802
		    //var_dump(file_get_html($tmp_dir.'aircrafts.html'));
2803
		    $fh = fopen($tmp_dir.'aircrafts.html',"r");
2804
		    $result = fread($fh,100000000);
0 ignored issues
show
Unused Code introduced by
$result is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
2805
		    //echo $result;
2806
		    //var_dump(str_get_html($result));
2807
		    //print_r(self::table2array($result));
2808
		}
2809
2810
	}
2811
	
2812
	public static function update_notam() {
2813
		global $tmp_dir, $globalDebug, $globalNOTAMSource;
2814
		require(dirname(__FILE__).'/../require/class.NOTAM.php');
2815
		$Common = new Common();
2816
		date_default_timezone_set('UTC');
2817
		$query = 'TRUNCATE TABLE notam';
2818
		try {
2819
			$Connection = new Connection();
2820
			$sth = $Connection->db->prepare($query);
2821
                        $sth->execute();
2822
                } catch(PDOException $e) {
2823
                        return "error : ".$e->getMessage();
2824
                }
2825
2826
		$error = '';
2827
		if ($globalDebug) echo "Notam : Download...";
2828
		update_db::download($globalNOTAMSource,$tmp_dir.'notam.rss');
2829
		if (file_exists($tmp_dir.'notam.rss')) {
2830
			$notams = json_decode(json_encode(simplexml_load_file($tmp_dir.'notam.rss')),true);
2831
			foreach ($notams['channel']['item'] as $notam) {
2832
				$title = explode(':',$notam['title']);
2833
				$data['ref'] = trim($title[0]);
0 ignored issues
show
Coding Style Comprehensibility introduced by
$data was never initialized. Although not strictly required by PHP, it is generally a good practice to add $data = array(); before regardless.

Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.

Let’s take a look at an example:

foreach ($collection as $item) {
    $myArray['foo'] = $item->getFoo();

    if ($item->hasBar()) {
        $myArray['bar'] = $item->getBar();
    }

    // do something with $myArray
}

As you can see in this example, the array $myArray is initialized the first time when the foreach loop is entered. You can also see that the value of the bar key is only written conditionally; thus, its value might result from a previous iteration.

This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.

Loading history...
2834
				unset($title[0]);
2835
				$data['title'] = trim(implode(':',$title));
0 ignored issues
show
Bug introduced by
The variable $data does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
2836
				$description = strip_tags($notam['description'],'<pre>');
2837
				preg_match(':^(.*?)<pre>:',$description,$match);
2838
				$q = explode('/',$match[1]);
2839
				$data['fir'] = $q[0];
2840
				$data['code'] = $q[1];
2841
				$ifrvfr = $q[2];
2842
				if ($ifrvfr == 'IV') $data['rules'] = 'IFR/VFR';
2843
				if ($ifrvfr == 'I') $data['rules'] = 'IFR';
2844
				if ($ifrvfr == 'V') $data['rules'] = 'VFR';
2845
				if ($q[4] == 'A') $data['scope'] = 'Airport warning';
2846
				if ($q[4] == 'E') $data['scope'] = 'Enroute warning';
2847
				if ($q[4] == 'W') $data['scope'] = 'Navigation warning';
2848
				if ($q[4] == 'AE') $data['scope'] = 'Airport/Enroute warning';
2849
				if ($q[4] == 'AW') $data['scope'] = 'Airport/Navigation warning';
2850
				//$data['scope'] = $q[4];
2851
				$data['lower_limit'] = $q[5];
2852
				$data['upper_limit'] = $q[6];
2853
				$latlonrad = $q[7];
2854
				sscanf($latlonrad,'%4c%c%5c%c%3d',$las,$lac,$lns,$lnc,$radius);
0 ignored issues
show
Bug introduced by
The variable $lac does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $lns does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $lnc does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $radius does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
2855
				$latitude = $Common->convertDec($las,'latitude');
2856
				$longitude = $Common->convertDec($lns,'longitude');
2857
				if ($lac == 'S') $latitude = '-'.$latitude;
2858
				if ($lnc == 'W') $longitude = '-'.$longitude;
2859
				$data['center_latitude'] = $latitude;
2860
				$data['center_longitude'] = $longitude;
2861
				$data['radius'] = intval($radius);
2862
				
2863
				preg_match(':<pre>(.*?)</pre>:',$description,$match);
2864
				$data['text'] = $match[1];
2865
				preg_match(':</pre>(.*?)$:',$description,$match);
2866
				$fromto = $match[1];
2867
				preg_match('#FROM:(.*?)TO:#',$fromto,$match);
2868
				$fromall = trim($match[1]);
2869
				preg_match('#^(.*?) \((.*?)\)$#',$fromall,$match);
2870
				$from = trim($match[1]);
2871
				$data['date_begin'] = date("Y-m-d H:i:s",strtotime($from));
2872
				preg_match('#TO:(.*?)$#',$fromto,$match);
2873
				$toall = trim($match[1]);
2874
				if (!preg_match(':Permanent:',$toall)) {
2875
					preg_match('#^(.*?) \((.*?)\)#',$toall,$match);
2876
					$to = trim($match[1]);
2877
					$data['date_end'] = date("Y-m-d H:i:s",strtotime($to));
2878
					$data['permanent'] = 0;
2879
				} else {
2880
				    $data['date_end'] = NULL;
2881
				    $data['permanent'] = 1;
2882
				}
2883
				$data['full_notam'] = $notam['title'].'<br>'.$notam['description'];
2884
				$NOTAM = new NOTAM();
2885
				$NOTAM->addNOTAM($data['ref'],$data['title'],'',$data['fir'],$data['code'],'',$data['scope'],$data['lower_limit'],$data['upper_limit'],$data['center_latitude'],$data['center_longitude'],$data['radius'],$data['date_begin'],$data['date_end'],$data['permanent'],$data['text'],$data['full_notam']);
2886
				unset($data);
2887
			} 
2888
		} else $error = "File ".$tmp_dir.'notam.rss'." doesn't exist. Download failed.";
2889
		if ($error != '') {
2890
			return $error;
2891
		} elseif ($globalDebug) echo "Done\n";
2892
		return '';
2893
	}
2894
	
2895
	public static function create_airspace() {
2896
		global $globalDBdriver, $globalDebug, $tmp_dir, $globalDBhost, $globalDBuser, $globalDBname, $globalDBpass, $globalDBport;
2897
		$Connection = new Connection();
2898
		if ($Connection->tableExists('airspace')) {
2899
			if ($globalDBdriver == 'mysql') {
2900
				$query = 'DROP TABLE geometry_columns; DROP TABLE spatial_ref_sys;DROP TABLE airspace;';
2901
			} else {
2902
				$query = 'DROP TABLE airspace';
2903
			}
2904
			try {
2905
				$Connection = new Connection();
2906
				$sth = $Connection->db->prepare($query);
2907
				$sth->execute();
2908
			} catch(PDOException $e) {
2909
				return "error : ".$e->getMessage();
2910
			}
2911
		}
2912
		$Common = new Common();
2913
		$airspace_lst = $Common->getData('https://raw.githubusercontent.com/XCSoar/xcsoar-data-repository/master/data/airspace.json');
2914
		$airspace_json = json_decode($airspace_lst,true);
2915
		foreach ($airspace_json['records'] as $airspace) {
2916
			if ($globalDebug) echo $airspace['name']."...\n";
2917
			update_db::download($airspace['uri'],$tmp_dir.$airspace['name']);
2918
			if (file_exists($tmp_dir.$airspace['name'])) {
2919
				file_put_contents($tmp_dir.$airspace['name'], utf8_encode(file_get_contents($tmp_dir.$airspace['name'])));
2920
				//system('recode l9..utf8 '.$tmp_dir.$airspace['name']);
2921
				if ($globalDBdriver == 'mysql') {
2922
					system('ogr2ogr -update -append -f "MySQL" MySQL:"'.$globalDBname.',host='.$globalDBhost.',user='.$globalDBuser.',password='.$globalDBpass.',port='.$globalDBport.'" -nln airspace -nlt POLYGON -skipfailures -lco ENGINE=MyISAM "'.$tmp_dir.$airspace['name'].'"');
2923
				} else {
2924
					system('ogr2ogr -append -f "PostgreSQL" PG:"host='.$globalDBhost.' user='.$globalDBuser.' dbname='.$globalDBname.' password='.$globalDBpass.' port='.$globalDBport.'" -nln airspace -nlt POLYGON -skipfailures "'.$tmp_dir.$airspace['name'].'"');
2925
				}
2926
			}
2927
		}
2928
	}
2929
	
2930
	public static function fix_icaotype() {
2931
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
2932
		$Spotter = new Spotter();
2933
		foreach ($Spotter->aircraft_correct_icaotype as $old => $new) {
2934
			$query = 'UPDATE aircraft_modes SET ICAOTypeCode = :new WHERE ICAOTypeCode = :old';
2935
			try {
2936
				$Connection = new Connection();
2937
				$sth = $Connection->db->prepare($query);
2938
				$sth->execute(array(':new' => $new, ':old' => $old));
2939
			} catch(PDOException $e) {
2940
				return "error : ".$e->getMessage();
2941
			}
2942
		}
2943
	}
2944
2945
	public static function check_last_update() {
2946
		global $globalDBdriver;
2947
		if ($globalDBdriver == 'mysql') {
2948
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
2949
		} else {
2950
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
2951
		}
2952
		try {
2953
			$Connection = new Connection();
2954
			$sth = $Connection->db->prepare($query);
2955
                        $sth->execute();
2956
                } catch(PDOException $e) {
2957
                        return "error : ".$e->getMessage();
2958
                }
2959
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2960
                if ($row['nb'] > 0) return false;
2961
                else return true;
2962
	}
2963
2964
	public static function insert_last_update() {
2965
		$query = "DELETE FROM config WHERE name = 'last_update_db';
2966
			INSERT INTO config (name,value) VALUES ('last_update_db',NOW());";
2967
		try {
2968
			$Connection = new Connection();
2969
			$sth = $Connection->db->prepare($query);
2970
                        $sth->execute();
2971
                } catch(PDOException $e) {
2972
                        return "error : ".$e->getMessage();
2973
                }
2974
	}
2975
2976
	public static function check_airspace_version($version) {
2977
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'airspace_version' AND value = :version";
2978
		try {
2979
			$Connection = new Connection();
2980
			$sth = $Connection->db->prepare($query);
2981
                        $sth->execute(array(':version' => $version));
2982
                } catch(PDOException $e) {
2983
                        return "error : ".$e->getMessage();
2984
                }
2985
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2986
                if ($row['nb'] > 0) return true;
2987
                else return false;
2988
	}
2989
2990
	public static function check_geoid_version($version) {
2991
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'geoid_version' AND value = :version";
2992
		try {
2993
			$Connection = new Connection();
2994
			$sth = $Connection->db->prepare($query);
2995
                        $sth->execute(array(':version' => $version));
2996
                } catch(PDOException $e) {
2997
                        return "error : ".$e->getMessage();
2998
                }
2999
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3000
                if ($row['nb'] > 0) return true;
3001
                else return false;
3002
	}
3003
3004
	public static function check_marine_identity_version($version) {
3005
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'marine_identity_version' AND value = :version";
3006
		try {
3007
			$Connection = new Connection();
3008
			$sth = $Connection->db->prepare($query);
3009
			$sth->execute(array(':version' => $version));
3010
		} catch(PDOException $e) {
3011
			return "error : ".$e->getMessage();
3012
		}
3013
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3014
		if ($row['nb'] > 0) return true;
3015
		else return false;
3016
	}
3017
3018
	public static function check_satellite_version($version) {
3019
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'satellite_version' AND value = :version";
3020
		try {
3021
			$Connection = new Connection();
3022
			$sth = $Connection->db->prepare($query);
3023
			$sth->execute(array(':version' => $version));
3024
		} catch(PDOException $e) {
3025
			return "error : ".$e->getMessage();
3026
		}
3027
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3028
		if ($row['nb'] > 0) return true;
3029
		else return false;
3030
	}
3031
3032
	public static function check_airlines_version($version) {
3033
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'airlines_version' AND value = :version";
3034
		try {
3035
			$Connection = new Connection();
3036
			$sth = $Connection->db->prepare($query);
3037
			$sth->execute(array(':version' => $version));
3038
		} catch(PDOException $e) {
3039
			return "error : ".$e->getMessage();
3040
		}
3041
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3042
		if ($row['nb'] > 0) return true;
3043
		else return false;
3044
	}
3045
3046
	public static function check_notam_version($version) {
3047
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'notam_version' AND value = :version";
3048
		try {
3049
			$Connection = new Connection();
3050
			$sth = $Connection->db->prepare($query);
3051
			$sth->execute(array(':version' => $version));
3052
		} catch(PDOException $e) {
3053
			return "error : ".$e->getMessage();
3054
		}
3055
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3056
		if ($row['nb'] > 0) return true;
3057
		else return false;
3058
	}
3059
3060
	public static function insert_airlines_version($version) {
3061
		$query = "DELETE FROM config WHERE name = 'airlines_version';
3062
			INSERT INTO config (name,value) VALUES ('airlines_version',:version);";
3063
		try {
3064
			$Connection = new Connection();
3065
			$sth = $Connection->db->prepare($query);
3066
			$sth->execute(array(':version' => $version));
3067
		} catch(PDOException $e) {
3068
			return "error : ".$e->getMessage();
3069
		}
3070
	}
3071
3072
	public static function insert_notam_version($version) {
3073
		$query = "DELETE FROM config WHERE name = 'notam_version';
3074
			INSERT INTO config (name,value) VALUES ('notam_version',:version);";
3075
		try {
3076
			$Connection = new Connection();
3077
			$sth = $Connection->db->prepare($query);
3078
			$sth->execute(array(':version' => $version));
3079
		} catch(PDOException $e) {
3080
			return "error : ".$e->getMessage();
3081
		}
3082
	}
3083
3084
	public static function insert_airspace_version($version) {
3085
		$query = "DELETE FROM config WHERE name = 'airspace_version';
3086
			INSERT INTO config (name,value) VALUES ('airspace_version',:version);";
3087
		try {
3088
			$Connection = new Connection();
3089
			$sth = $Connection->db->prepare($query);
3090
			$sth->execute(array(':version' => $version));
3091
		} catch(PDOException $e) {
3092
			return "error : ".$e->getMessage();
3093
		}
3094
	}
3095
	
3096
	public static function insert_geoid_version($version) {
3097
		$query = "DELETE FROM config WHERE name = 'geoid_version';
3098
			INSERT INTO config (name,value) VALUES ('geoid_version',:version);";
3099
		try {
3100
			$Connection = new Connection();
3101
			$sth = $Connection->db->prepare($query);
3102
                        $sth->execute(array(':version' => $version));
3103
                } catch(PDOException $e) {
3104
                        return "error : ".$e->getMessage();
3105
                }
3106
	}
3107
3108
	public static function insert_marine_identity_version($version) {
3109
		$query = "DELETE FROM config WHERE name = 'marine_identity_version';
3110
			INSERT INTO config (name,value) VALUES ('marine_identity_version',:version);";
3111
		try {
3112
			$Connection = new Connection();
3113
			$sth = $Connection->db->prepare($query);
3114
			$sth->execute(array(':version' => $version));
3115
		} catch(PDOException $e) {
3116
			return "error : ".$e->getMessage();
3117
		}
3118
	}
3119
3120
	public static function insert_satellite_version($version) {
3121
		$query = "DELETE FROM config WHERE name = 'satellite_version';
3122
			INSERT INTO config (name,value) VALUES ('satellite_version',:version);";
3123
		try {
3124
			$Connection = new Connection();
3125
			$sth = $Connection->db->prepare($query);
3126
			$sth->execute(array(':version' => $version));
3127
		} catch(PDOException $e) {
3128
			return "error : ".$e->getMessage();
3129
		}
3130
	}
3131
3132
	public static function check_last_notam_update() {
3133
		global $globalDBdriver;
3134
		if ($globalDBdriver == 'mysql') {
3135
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
3136
		} else {
3137
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
3138
		}
3139
		try {
3140
			$Connection = new Connection();
3141
			$sth = $Connection->db->prepare($query);
3142
                        $sth->execute();
3143
                } catch(PDOException $e) {
3144
                        return "error : ".$e->getMessage();
3145
                }
3146
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3147
                if ($row['nb'] > 0) return false;
3148
                else return true;
3149
	}
3150
3151
	public static function insert_last_notam_update() {
3152
		$query = "DELETE FROM config WHERE name = 'last_update_notam_db';
3153
			INSERT INTO config (name,value) VALUES ('last_update_notam_db',NOW());";
3154
		try {
3155
			$Connection = new Connection();
3156
			$sth = $Connection->db->prepare($query);
3157
                        $sth->execute();
3158
                } catch(PDOException $e) {
3159
                        return "error : ".$e->getMessage();
3160
                }
3161
	}
3162
3163
	public static function check_last_airspace_update() {
3164
		global $globalDBdriver;
3165
		if ($globalDBdriver == 'mysql') {
3166
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3167
		} else {
3168
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3169
		}
3170
		try {
3171
			$Connection = new Connection();
3172
			$sth = $Connection->db->prepare($query);
3173
                        $sth->execute();
3174
                } catch(PDOException $e) {
3175
                        return "error : ".$e->getMessage();
3176
                }
3177
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3178
                if ($row['nb'] > 0) return false;
3179
                else return true;
3180
	}
3181
3182
	public static function insert_last_airspace_update() {
3183
		$query = "DELETE FROM config WHERE name = 'last_update_airspace_db';
3184
			INSERT INTO config (name,value) VALUES ('last_update_airspace_db',NOW());";
3185
		try {
3186
			$Connection = new Connection();
3187
			$sth = $Connection->db->prepare($query);
3188
                        $sth->execute();
3189
                } catch(PDOException $e) {
3190
                        return "error : ".$e->getMessage();
3191
                }
3192
	}
3193
3194
	public static function check_last_geoid_update() {
3195
		global $globalDBdriver;
3196
		if ($globalDBdriver == 'mysql') {
3197
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3198
		} else {
3199
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3200
		}
3201
		try {
3202
			$Connection = new Connection();
3203
			$sth = $Connection->db->prepare($query);
3204
                        $sth->execute();
3205
                } catch(PDOException $e) {
3206
                        return "error : ".$e->getMessage();
3207
                }
3208
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3209
                if ($row['nb'] > 0) return false;
3210
                else return true;
3211
	}
3212
3213
	public static function insert_last_geoid_update() {
3214
		$query = "DELETE FROM config WHERE name = 'last_update_geoid';
3215
			INSERT INTO config (name,value) VALUES ('last_update_geoid',NOW());";
3216
		try {
3217
			$Connection = new Connection();
3218
			$sth = $Connection->db->prepare($query);
3219
                        $sth->execute();
3220
                } catch(PDOException $e) {
3221
                        return "error : ".$e->getMessage();
3222
                }
3223
	}
3224
3225
	public static function check_last_owner_update() {
3226
		global $globalDBdriver;
3227
		if ($globalDBdriver == 'mysql') {
3228
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3229
		} else {
3230
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3231
		}
3232
		try {
3233
			$Connection = new Connection();
3234
			$sth = $Connection->db->prepare($query);
3235
			$sth->execute();
3236
		} catch(PDOException $e) {
3237
			return "error : ".$e->getMessage();
3238
		}
3239
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3240
		if ($row['nb'] > 0) return false;
3241
		else return true;
3242
	}
3243
3244
	public static function insert_last_owner_update() {
3245
		$query = "DELETE FROM config WHERE name = 'last_update_owner_db';
3246
			INSERT INTO config (name,value) VALUES ('last_update_owner_db',NOW());";
3247
		try {
3248
			$Connection = new Connection();
3249
			$sth = $Connection->db->prepare($query);
3250
                        $sth->execute();
3251
                } catch(PDOException $e) {
3252
                        return "error : ".$e->getMessage();
3253
                }
3254
	}
3255
3256
	public static function check_last_airlines_update() {
3257
		global $globalDBdriver;
3258
		if ($globalDBdriver == 'mysql') {
3259
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airlines_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3260
		} else {
3261
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airlines_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3262
		}
3263
		try {
3264
			$Connection = new Connection();
3265
			$sth = $Connection->db->prepare($query);
3266
			$sth->execute();
3267
		} catch(PDOException $e) {
3268
			return "error : ".$e->getMessage();
3269
		}
3270
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3271
		if ($row['nb'] > 0) return false;
3272
		else return true;
3273
	}
3274
3275
	public static function insert_last_airlines_update() {
3276
		$query = "DELETE FROM config WHERE name = 'last_update_airlines_db';
3277
			INSERT INTO config (name,value) VALUES ('last_update_airlines_db',NOW());";
3278
		try {
3279
			$Connection = new Connection();
3280
			$sth = $Connection->db->prepare($query);
3281
			$sth->execute();
3282
		} catch(PDOException $e) {
3283
			return "error : ".$e->getMessage();
3284
		}
3285
	}
3286
3287
	public static function check_last_schedules_update() {
3288
		global $globalDBdriver;
3289
		if ($globalDBdriver == 'mysql') {
3290
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3291
		} else {
3292
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3293
		}
3294
		try {
3295
			$Connection = new Connection();
3296
			$sth = $Connection->db->prepare($query);
3297
                        $sth->execute();
3298
                } catch(PDOException $e) {
3299
                        return "error : ".$e->getMessage();
3300
                }
3301
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3302
                if ($row['nb'] > 0) return false;
3303
                else return true;
3304
	}
3305
3306
	public static function insert_last_schedules_update() {
3307
		$query = "DELETE FROM config WHERE name = 'last_update_schedules';
3308
			INSERT INTO config (name,value) VALUES ('last_update_schedules',NOW());";
3309
		try {
3310
			$Connection = new Connection();
3311
			$sth = $Connection->db->prepare($query);
3312
			$sth->execute();
3313
		} catch(PDOException $e) {
3314
			return "error : ".$e->getMessage();
3315
		}
3316
	}
3317
3318
	public static function check_last_tle_update() {
3319
		global $globalDBdriver;
3320
		if ($globalDBdriver == 'mysql') {
3321
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3322
		} else {
3323
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3324
		}
3325
		try {
3326
			$Connection = new Connection();
3327
			$sth = $Connection->db->prepare($query);
3328
			$sth->execute();
3329
		} catch(PDOException $e) {
3330
			return "error : ".$e->getMessage();
3331
		}
3332
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3333
		if ($row['nb'] > 0) return false;
3334
		else return true;
3335
	}
3336
3337
	public static function insert_last_tle_update() {
3338
		$query = "DELETE FROM config WHERE name = 'last_update_tle';
3339
			INSERT INTO config (name,value) VALUES ('last_update_tle',NOW());";
3340
		try {
3341
			$Connection = new Connection();
3342
			$sth = $Connection->db->prepare($query);
3343
			$sth->execute();
3344
		} catch(PDOException $e) {
3345
			return "error : ".$e->getMessage();
3346
		}
3347
	}
3348
3349
	public static function check_last_ucsdb_update() {
3350
		global $globalDBdriver;
3351
		if ($globalDBdriver == 'mysql') {
3352
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value > DATE_SUB(NOW(), INTERVAL 1 MONTH)";
3353
		} else {
3354
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 MONTH'";
3355
		}
3356
		try {
3357
			$Connection = new Connection();
3358
			$sth = $Connection->db->prepare($query);
3359
			$sth->execute();
3360
		} catch(PDOException $e) {
3361
			return "error : ".$e->getMessage();
3362
		}
3363
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3364
		if ($row['nb'] > 0) return false;
3365
		else return true;
3366
	}
3367
3368
	public static function insert_last_ucsdb_update() {
3369
		$query = "DELETE FROM config WHERE name = 'last_update_ucsdb';
3370
			INSERT INTO config (name,value) VALUES ('last_update_ucsdb',NOW());";
3371
		try {
3372
			$Connection = new Connection();
3373
			$sth = $Connection->db->prepare($query);
3374
			$sth->execute();
3375
		} catch(PDOException $e) {
3376
			return "error : ".$e->getMessage();
3377
		}
3378
	}
3379
3380
	public static function check_last_celestrak_update() {
3381
		global $globalDBdriver;
3382
		if ($globalDBdriver == 'mysql') {
3383
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3384
		} else {
3385
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3386
		}
3387
		try {
3388
			$Connection = new Connection();
3389
			$sth = $Connection->db->prepare($query);
3390
			$sth->execute();
3391
		} catch(PDOException $e) {
3392
			return "error : ".$e->getMessage();
3393
		}
3394
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3395
		if ($row['nb'] > 0) return false;
3396
		else return true;
3397
	}
3398
3399
	public static function insert_last_celestrak_update() {
3400
		$query = "DELETE FROM config WHERE name = 'last_update_celestrak';
3401
			INSERT INTO config (name,value) VALUES ('last_update_celestrak',NOW());";
3402
		try {
3403
			$Connection = new Connection();
3404
			$sth = $Connection->db->prepare($query);
3405
			$sth->execute();
3406
		} catch(PDOException $e) {
3407
			return "error : ".$e->getMessage();
3408
		}
3409
	}
3410
3411
	public static function check_last_marine_identity_update() {
3412
		global $globalDBdriver;
3413
		if ($globalDBdriver == 'mysql') {
3414
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3415
		} else {
3416
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3417
		}
3418
		try {
3419
			$Connection = new Connection();
3420
			$sth = $Connection->db->prepare($query);
3421
			$sth->execute();
3422
		} catch(PDOException $e) {
3423
			return "error : ".$e->getMessage();
3424
		}
3425
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3426
		if ($row['nb'] > 0) return false;
3427
		else return true;
3428
	}
3429
3430
	public static function check_last_satellite_update() {
3431
		global $globalDBdriver;
3432
		if ($globalDBdriver == 'mysql') {
3433
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
3434
		} else {
3435
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
3436
		}
3437
		try {
3438
			$Connection = new Connection();
3439
			$sth = $Connection->db->prepare($query);
3440
			$sth->execute();
3441
		} catch(PDOException $e) {
3442
			return "error : ".$e->getMessage();
3443
		}
3444
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3445
		if ($row['nb'] > 0) return false;
3446
		else return true;
3447
	}
3448
3449
	public static function insert_last_marine_identity_update() {
3450
		$query = "DELETE FROM config WHERE name = 'last_update_marine_identity';
3451
			INSERT INTO config (name,value) VALUES ('last_update_marine_identity',NOW());";
3452
		try {
3453
			$Connection = new Connection();
3454
			$sth = $Connection->db->prepare($query);
3455
			$sth->execute();
3456
		} catch(PDOException $e) {
3457
			return "error : ".$e->getMessage();
3458
		}
3459
	}
3460
3461
	public static function insert_last_satellite_update() {
3462
		$query = "DELETE FROM config WHERE name = 'last_update_satellite';
3463
			INSERT INTO config (name,value) VALUES ('last_update_satellite',NOW());";
3464
		try {
3465
			$Connection = new Connection();
3466
			$sth = $Connection->db->prepare($query);
3467
			$sth->execute();
3468
		} catch(PDOException $e) {
3469
			return "error : ".$e->getMessage();
3470
		}
3471
	}
3472
3473
	public static function delete_duplicatemodes() {
3474
		global $globalDBdriver;
3475
		if ($globalDBdriver == 'mysql') {
3476
			$query = "DELETE a FROM aircraft_modes a, aircraft_modes b WHERE a.ModeS = b.ModeS AND a.FirstCreated < b.FirstCreated AND a.Source != 'ACARS'";
3477
		} else {
3478
			$query = "DELETE FROM aircraft_modes WHERE AircraftID IN (SELECT AircraftID FROM (SELECT AircraftID, ROW_NUMBER() OVER (partition BY ModeS ORDER BY FirstCreated) AS rnum FROM aircraft_modes) t WHERE t.rnum > 1) AND Source != 'ACARS'";
3479
		}
3480
		try {
3481
			$Connection = new Connection();
3482
			$sth = $Connection->db->prepare($query);
3483
                        $sth->execute();
3484
                } catch(PDOException $e) {
3485
                        return "error : ".$e->getMessage();
3486
                }
3487
	}
3488
	public static function delete_duplicateowner() {
3489
		global $globalDBdriver;
3490
		if ($globalDBdriver == 'mysql') {
3491
			$query = "DELETE a FROM aircraft_owner a, aircraft_owner b WHERE a.registration = b.registration AND a.owner_id < b.owner_id";
3492
		} else {
3493
			$query = "DELETE FROM aircraft_owner WHERE owner_id IN (SELECT owner_id FROM (SELECT owner_id, ROW_NUMBER() OVER (partition BY registration ORDER BY owner_id) AS rnum FROM aircraft_owner) t WHERE t.rnum > 1)";
3494
		}
3495
		try {
3496
			$Connection = new Connection();
3497
			$sth = $Connection->db->prepare($query);
3498
                        $sth->execute();
3499
                } catch(PDOException $e) {
3500
                        return "error : ".$e->getMessage();
3501
                }
3502
	}
3503
	
3504
	public static function update_all() {
3505
		global $globalMasterServer, $globalMasterSource;
3506
		if (!isset($globalMasterServer) || !$globalMasterServer) {
3507
			if (isset($globalMasterSource) && $globalMasterSource) {
3508
				echo update_db::update_routes();
3509
				echo update_db::update_translation();
3510
				//echo update_db::update_notam_fam();
3511
				echo update_db::update_ModeS();
3512
				//echo update_db::update_ModeS_flarm();
3513
				echo update_db::update_ModeS_ogn();
3514
				echo update_db::update_ModeS_faa();
3515
				echo update_db::fix_icaotype();
3516
				echo update_db::update_banned_fam();
3517
				//echo update_db::update_celestrak();
3518
				//echo update_db::delete_duplicatemodes();
3519
			} else {
3520
				//echo update_db::update_routes();
3521
				echo update_db::update_routes_fam();
3522
				//echo update_db::update_translation();
3523
				echo update_db::update_translation_fam();
3524
				//echo update_db::update_notam_fam();
3525
				//echo update_db::update_ModeS();
3526
				echo update_db::update_ModeS_fam();
3527
				//echo update_db::update_ModeS_flarm();
3528
				echo update_db::update_ModeS_ogn();
3529
				//echo update_db::delete_duplicatemodes();
3530
				echo update_db::update_banned_fam();
3531
			}
3532
		}
3533
	}
3534
}
3535
3536
//echo update_db::update_airports();
3537
//echo update_db::translation();
3538
//echo update_db::update_waypoints();
3539
//echo update_db::update_airspace();
3540
//echo update_db::update_notam();
3541
//echo update_db::update_ivao();
3542
//echo update_db::update_ModeS_flarm();
3543
//echo update_db::update_ModeS_ogn();
3544
//echo update_db::update_aircraft();
3545
//$update_db = new update_db();
3546
//echo update_db::update_owner();
3547
//update_db::update_translation_fam();
3548
//echo update_db::update_routes();
3549
//update_db::update_models();
3550
//echo $update_db::update_skyteam();
3551
//echo $update_db::update_tle();
3552
//echo update_db::update_notam_fam();
3553
//echo update_db::create_airspace();
3554
//echo update_db::update_ModeS();
3555
//echo update_db::update_ModeS_fam();
3556
//echo update_db::update_routes_fam();
3557
//echo update_db::update_ModeS_faa();
3558
//echo update_db::update_banned_fam();
3559
//echo update_db::modes_faa();
3560
//echo update_db::update_owner_fam();
3561
//echo update_db::delete_duplicateowner();
3562
//echo update_db::fix_icaotype();
3563
//echo update_db::satellite_ucsdb('tmp/UCS_Satellite_Database_officialname_1-1-17.txt');
3564
//echo update_db::satellite_celestrak('tmp/satcat.txt');
3565
?>
3566