Completed
Push — master ( d40000...7e6e69 )
by Yannick
24:53
created

update_db::download()   C

Complexity

Conditions 8
Paths 12

Size

Total Lines 23
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 8
eloc 19
nc 12
nop 3
dl 0
loc 23
rs 6.1403
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
		//print_r($mfr);
1117
		return '';
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
1130
		
1131
		//update_db::unzip($out_file);
1132
		$delimiter = "\t";
1133
		$Connection = new Connection();
1134
		if (($handle = fopen($tmp_dir.'modes.tsv', 'r')) !== FALSE)
1135
		{
1136
			$i = 0;
1137
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1138
			//$Connection->db->beginTransaction();
1139
			if ($globalTransaction) $Connection->db->beginTransaction();
1140
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1141
			{
1142
				if ($i > 0) {
1143
					if ($data[1] == 'NULL') $data[1] = $data[0];
1144
					$query = 'INSERT INTO aircraft_modes (FirstCreated,LastModified,ModeS,ModeSCountry,Registration,ICAOTypeCode,type_flight,Source) VALUES (:FirstCreated,:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:type_flight,:source)';
1145
					try {
1146
						$sth = $Connection->db->prepare($query);
1147
						$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'));
1148
					} catch(PDOException $e) {
1149
						return "error : ".$e->getMessage();
1150
					}
1151
				}
1152
				$i++;
1153
			}
1154
			fclose($handle);
1155
			if ($globalTransaction) $Connection->db->commit();
1156
		}
1157
		return '';
1158
        }
1159
        
1160
	public static function owner_fam() {
1161
		global $tmp_dir, $globalTransaction;
1162
		$query = "DELETE FROM aircraft_owner WHERE Source = '' OR Source = :source";
1163
		try {
1164
			$Connection = new Connection();
1165
			$sth = $Connection->db->prepare($query);
1166
                        $sth->execute(array(':source' => 'website_fam'));
1167
                } catch(PDOException $e) {
1168
                        return "error : ".$e->getMessage();
1169
                }
1170
1171
		$delimiter = "\t";
1172
		$Connection = new Connection();
1173
		if (($handle = fopen($tmp_dir.'owners.tsv', 'r')) !== FALSE)
1174
		{
1175
			$i = 0;
1176
			if ($globalTransaction) $Connection->db->beginTransaction();
1177
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1178
			{
1179
				if ($i > 0) {
1180
					$query = 'INSERT INTO aircraft_owner (registration,base,owner,date_first_reg,Source) VALUES (:registration,:base,:owner,NULL,:source)';
1181
					try {
1182
						$sth = $Connection->db->prepare($query);
1183
						$sth->execute(array(':registration' => $data[0],':base' => $data[1],':owner' => $data[2], ':source' => 'website_fam'));
1184
					} catch(PDOException $e) {
1185
						//print_r($data);
1186
						return "error : ".$e->getMessage();
1187
					}
1188
				}
1189
				$i++;
1190
			}
1191
			fclose($handle);
1192
			if ($globalTransaction) $Connection->db->commit();
1193
		}
1194
		return '';
1195
        }
1196
1197
	public static function routes_fam() {
1198
		global $tmp_dir, $globalTransaction, $globalDebug;
1199
		$query = "DELETE FROM routes WHERE Source = '' OR Source = :source";
1200
		try {
1201
			$Connection = new Connection();
1202
			$sth = $Connection->db->prepare($query);
1203
			$sth->execute(array(':source' => 'website_fam'));
1204
		} catch(PDOException $e) {
1205
			return "error : ".$e->getMessage();
1206
		}
1207
		$delimiter = "\t";
1208
		$Connection = new Connection();
1209
		if (($handle = fopen($tmp_dir.'routes.tsv', 'r')) !== FALSE)
1210
		{
1211
			$i = 0;
1212
			if ($globalTransaction) $Connection->db->beginTransaction();
1213
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1214
			{
1215
				if ($i > 0) {
1216
					$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)';
1217
					try {
1218
						$sth = $Connection->db->prepare($query);
1219
						$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'));
1220
					} catch(PDOException $e) {
1221
						if ($globalDebug) echo "error: ".$e->getMessage()." - data: ".implode(',',$data);
1222
					}
1223
				}
1224
				$i++;
1225
			}
1226
			fclose($handle);
1227
			if ($globalTransaction) $Connection->db->commit();
1228
		}
1229
		return '';
1230
        }
1231
1232
	public static function marine_identity_fam() {
1233
		global $tmp_dir, $globalTransaction;
1234
		$query = "TRUNCATE TABLE marine_identity";
1235
		try {
1236
			$Connection = new Connection();
1237
			$sth = $Connection->db->prepare($query);
1238
                        $sth->execute();
1239
                } catch(PDOException $e) {
1240
                        return "error : ".$e->getMessage();
1241
                }
1242
1243
		
1244
		//update_db::unzip($out_file);
1245
		$delimiter = "\t";
1246
		$Connection = new Connection();
1247
		if (($handle = fopen($tmp_dir.'marine_identity.tsv', 'r')) !== FALSE)
1248
		{
1249
			$i = 0;
1250
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1251
			//$Connection->db->beginTransaction();
1252
			if ($globalTransaction) $Connection->db->beginTransaction();
1253
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1254
			{
1255
				if ($i > 0) {
1256
					$data = array_map(function($v) { return $v === 'NULL' ? NULL : $v; },$data);
1257
					$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)';
1258
					try {
1259
						$sth = $Connection->db->prepare($query);
1260
						$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]));
1261
					} catch(PDOException $e) {
1262
						return "error : ".$e->getMessage();
1263
					}
1264
				}
1265
				$i++;
1266
			}
1267
			fclose($handle);
1268
			if ($globalTransaction) $Connection->db->commit();
1269
		}
1270
		return '';
1271
        }
1272
1273
	public static function satellite_fam() {
1274
		global $tmp_dir, $globalTransaction;
1275
		$query = "TRUNCATE TABLE satellite";
1276
		try {
1277
			$Connection = new Connection();
1278
			$sth = $Connection->db->prepare($query);
1279
			$sth->execute();
1280
		} catch(PDOException $e) {
1281
			return "error : ".$e->getMessage();
1282
		}
1283
		$delimiter = "\t";
1284
		$Connection = new Connection();
1285
		if (($handle = fopen($tmp_dir.'satellite.tsv', 'r')) !== FALSE)
1286
		{
1287
			$i = 0;
1288
			if ($globalTransaction) $Connection->db->beginTransaction();
1289
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1290
			{
1291
				if ($i > 0) {
1292
					$data = array_map(function($v) { return $v === 'NULL' ? NULL : $v; },$data);
1293
					$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) 
1294
					    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)';
1295
					try {
1296
						$sth = $Connection->db->prepare($query);
1297
						$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]));
1298
					} catch(PDOException $e) {
1299
						return "error : ".$e->getMessage();
1300
					}
1301
				}
1302
				$i++;
1303
			}
1304
			fclose($handle);
1305
			if ($globalTransaction) $Connection->db->commit();
1306
		}
1307
		return '';
1308
	}
1309
1310
	public static function banned_fam() {
1311
		global $tmp_dir, $globalTransaction;
1312
		$query = "UPDATE airlines SET ban_eu = 0";
1313
		try {
1314
			$Connection = new Connection();
1315
			$sth = $Connection->db->prepare($query);
1316
			$sth->execute();
1317
		} catch(PDOException $e) {
1318
			return "error : ".$e->getMessage();
1319
		}
1320
1321
		$Connection = new Connection();
1322
		if (($handle = fopen($tmp_dir.'ban_eu.csv', 'r')) !== FALSE)
1323
		{
1324
			if ($globalTransaction) $Connection->db->beginTransaction();
1325
			while (($data = fgetcsv($handle, 1000)) !== FALSE)
1326
			{
1327
				$query = 'UPDATE airlines SET ban_eu = 1 WHERE icao = :icao AND forsource IS NULL';
1328
				if ($data[0] != '') {
1329
					$icao = $data[0];
1330
					try {
1331
						$sth = $Connection->db->prepare($query);
1332
						$sth->execute(array(':icao' => $icao));
1333
					} catch(PDOException $e) {
1334
						return "error : ".$e->getMessage();
1335
					}
1336
				}
1337
			}
1338
			fclose($handle);
1339
			if ($globalTransaction) $Connection->db->commit();
1340
		}
1341
		return '';
1342
        }
1343
1344
	public static function tle($filename,$tletype) {
1345
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1346
		global $tmp_dir, $globalTransaction;
1347
		//$Spotter = new Spotter();
1348
		
1349
		$query = "DELETE FROM tle WHERE tle_source = '' OR tle_source = :source";
1350
		try {
1351
			$Connection = new Connection();
1352
			$sth = $Connection->db->prepare($query);
1353
                        $sth->execute(array(':source' => $filename));
1354
                } catch(PDOException $e) {
1355
                        return "error : ".$e->getMessage();
1356
                }
1357
		
1358
		$Connection = new Connection();
1359
		if (($handle = fopen($filename, 'r')) !== FALSE)
1360
		{
1361
			$i = 0;
1362
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1363
			//$Connection->db->beginTransaction();
1364
			$dbdata = array();
1365
			while (($data = fgets($handle, 1000)) !== FALSE)
1366
			{
1367
				if ($i == 0) {
1368
					$dbdata['name'] = trim($data);
1369
					$i++;
1370
				} elseif ($i == 1) {
1371
					$dbdata['tle1'] = trim($data);
1372
					$i++;
1373
				} elseif ($i == 2) {
1374
					$dbdata['tle2'] = trim($data);
1375
					//print_r($dbdata);
1376
					$query = 'INSERT INTO tle (tle_name,tle_tle1,tle_tle2,tle_type,tle_source) VALUES (:name, :tle1, :tle2, :type, :source)';
1377
					try {
1378
						$sth = $Connection->db->prepare($query);
1379
						$sth->execute(array(':name' => $dbdata['name'],':tle1' => $dbdata['tle1'],':tle2' => $dbdata['tle2'], ':type' => $tletype,':source' => $filename));
1380
					} catch(PDOException $e) {
1381
						return "error : ".$e->getMessage();
1382
					}
1383
1384
					$i = 0;
1385
				}
1386
			}
1387
			fclose($handle);
1388
			//$Connection->db->commit();
1389
		}
1390
		return '';
1391
        }
1392
1393
	public static function satellite_ucsdb($filename) {
1394
		global $tmp_dir, $globalTransaction;
1395
		$query = "DELETE FROM satellite";
1396
		try {
1397
			$Connection = new Connection();
1398
			$sth = $Connection->db->prepare($query);
1399
			$sth->execute(array(':source' => $filename));
1400
		} catch(PDOException $e) {
1401
			return "error : ".$e->getMessage();
1402
		}
1403
		
1404
		$Connection = new Connection();
1405
		if (($handle = fopen($filename, 'r')) !== FALSE)
1406
		{
1407
			$i = 0;
1408
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1409
			//$Connection->db->beginTransaction();
1410
			while (($data = fgetcsv($handle, 1000,"\t")) !== FALSE)
1411
			{
1412
				if ($i > 0 && $data[0] != '') {
1413
					$sources = trim($data[28].' '.$data[29].' '.$data[30].' '.$data[31].' '.$data[32].' '.$data[33]);
1414
					$period = str_replace(',','',$data[14]);
1415
					if (!empty($period) && strpos($period,'days')) $period = str_replace(' days','',$period)*24*60;
1416
					if ($data[18] != '') $launch_date = date('Y-m-d',strtotime($data[18]));
1417
					else $launch_date = NULL;
1418
					$data = array_map(function($value) {
1419
						return trim($value) === '' ? null : $value;
1420
					}, $data);
1421
					//print_r($data);
1422
					$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) 
1423
					    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)';
1424
					try {
1425
						$sth = $Connection->db->prepare($query);
1426
						$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));
1427
					} catch(PDOException $e) {
1428
						return "error : ".$e->getMessage();
1429
					}
1430
				}
1431
				$i++;
1432
			}
1433
			fclose($handle);
1434
			//$Connection->db->commit();
1435
		}
1436
		return '';
1437
	}
1438
1439
	public static function satellite_celestrak($filename) {
1440
		global $tmp_dir, $globalTransaction;
1441
		$satcat_sources = array(
1442
			'AB' => array('country' => 'Multinational', 'owner' => 'Arab Satellite Communications Org. (ASCO)'),
1443
			'ABS' => array('country' => 'Multinational', 'owner' => 'Asia Broadcast Satellite Ltd.'),
1444
			'AC' => array('country' => 'China', 'owner' => 'Asia Satellite Telecommunications Co. Ltd.'),
1445
			'ALG' => array('country' => 'Algeria', 'owner' => ''),
1446
			'ARGN' => array('country' => 'Argentina', 'owner' => ''),
1447
			'ASRA' => array('country' => 'Austria', 'owner' => ''),
1448
			'AUS' => array('country' => 'Australia', 'owner' => ''),
1449
			'AZER' => array('country' => 'Azerbaijan', 'owner' => ''),
1450
			'BEL' => array('country' => 'Belgium', 'owner' => ''),
1451
			'BELA' => array('country' => 'Belarus', 'owner' => ''),
1452
			'BERM' => array('country' => 'Bermuda', 'owner' => ''),
1453
			'BOL' => array('country' => 'Bolivia', 'owner' => ''),
1454
			'BUL' => array('country' => 'Bulgaria', 'owner' => ''),
1455
			'BRAZ' => array('country' => 'Brazil', 'owner' => ''),
1456
			'CA' => array('country' => 'Canada', 'owner' => ''),
1457
			'CHBZ' => array('country' => 'China/Brazil', 'owner' => ''),
1458
			'CHLE' => array('country' => 'Chile', 'owner' => ''),
1459
			'CIS' => array('country' => 'Russia', 'owner' => ''),
1460
			'COL' => array('country' => 'Colombia', 'owner' => ''),
1461
			'CZCH' => array('country' => 'Czech Republic (former Czechoslovakia)', 'owner' => ''),
1462
			'DEN' => array('country' => 'Denmark', 'owner' => ''),
1463
			'ECU' => array('country' => 'Ecuador', 'owner' => ''),
1464
			'EGYP' => array('country' => 'Egypt', 'owner' => ''),
1465
			'ESA' => array('country' => 'Multinational', 'owner' => 'European Space Agency'),
1466
			'ESRO' => array('country' => 'Multinational', 'owner' => 'European Space Research Organization'),
1467
			'EST' => array('country' => 'Estonia','owner' => ''),
1468
			'EUME' => array('country' => 'Multinational', 'owner' => 'EUMETSAT (European Organization for the Exploitation of Meteorological Satellites)'),
1469
			'EUTE' => array('country' => 'Multinational', 'owner' => 'European Telecommunications Satellite Consortium (EUTELSAT)'),
1470
			'FGER' => array('country' => 'France/Germany', 'owner' => ''),
1471
			'FIN' => array('country' => 'Finland', 'owner' => ''),
1472
			'FR' => array('country' => 'France', 'owner' => ''),
1473
			'FRIT' => array('country' => 'France/Italy', 'owner' => ''),
1474
			'GER' => array('country' => 'Germany', 'owner' => ''),
1475
			'GLOB' => array('country' => 'USA', 'owner' => 'Globalstar'),
1476
			'GREC' => array('country' => 'Greece', 'owner' => ''),
1477
			'HUN' => array('country' => 'Hungary', 'owner' => ''),
1478
			'IM' => array('country' => 'United Kingdom', 'owner' => 'INMARSAT, Ltd.'),
1479
			'IND' => array('country' => 'India', 'owner' => ''),
1480
			'INDO' => array('country' => 'Indonesia', 'owner' => ''),
1481
			'IRAN' => array('country' => 'Iran', 'owner' => ''),
1482
			'IRAQ' => array('country' => 'Iraq', 'owner' => ''),
1483
			'IRID' => array('country' => 'USA', 'owner' => 'Iridium Satellite LLC'),
1484
			'ISRA' => array('country' => 'Israel', 'owner' => ''),
1485
			'ISRO' => array('country' => 'India', 'owner' => 'Indian Space Research Organisation (ISRO)'),
1486
			'ISS' => array('country' => 'Multinational', 'owner' => 'NASA/Multinational'),
1487
			'IT' => array('country' => 'Italy', 'owner' => ''),
1488
			'ITSO' => array('country' => 'USA', 'owner' => 'Intelsat, S.A.'),
1489
			'JPN' => array('country' => 'Japan', 'owner' => ''),
1490
			'KAZ' => array('country' => 'Kazakhstan', 'owner' => ''),
1491
			'LAOS' => array('country' => 'Laos', 'owner' => ''),
1492
			'LTU' => array('country' => 'Lithuania', 'owner' => ''),
1493
			'LUXE' => array('country' => 'Luxembourg', 'owner' => ''),
1494
			'MALA' => array('country' => 'Malaysia', 'owner' => ''),
1495
			'MEX' => array('country' => 'Mexico', 'owner' => ''),
1496
			'NATO' => array('country' => 'Multinational', 'owner' => 'North Atlantic Treaty Organization'),
1497
			'NETH' => array('country' => 'Netherlands', 'owner' => ''),
1498
			'NICO' => array('country' => 'USA', 'owner' => 'New ICO'),
1499
			'NIG' => array('country' => 'Nigeria', 'owner' => ''),
1500
			'NKOR' => array('country' => 'North Korea', 'owner' => ''),
1501
			'NOR' => array('country' => 'Norway', 'owner' => ''),
1502
			'O3B' => array('country' => 'United Kingdom', 'owner' => 'O3b Networks Ltd.'),
1503
			'ORB' => array('country' => 'USA', 'owner' => 'ORBCOMM Inc.'),
1504
			'PAKI' => array('country' => 'Pakistan', 'owner' => ''),
1505
			'PERU' => array('country' => 'Peru', 'owner' => ''),
1506
			'POL' => array('country' => 'Poland', 'owner' => ''),
1507
			'POR' => array('country' => 'Portugal', 'owner' => ''),
1508
			'PRC' => array('country' => 'China', 'owner' => ''),
1509
			'PRES' => array('country' => 'Multinational', 'owner' => 'China/ESA'),
1510
			'RASC' => array('country' => 'Multinational', 'owner' => 'Regional African Satellite Communications Organisation (RASCOM)'),
1511
			'ROC' => array('country' => 'Taiwan', 'owner' => ''),
1512
			'ROM' => array('country' => 'Romania', 'owner' => ''),
1513
			'RP' => array('country' => 'Philippines', 'owner' => ''),
1514
			'SAFR' => array('country' => 'South Africa', 'owner' => ''),
1515
			'SAUD' => array('country' => 'Saudi Arabia', 'owner' => ''),
1516
			'SEAL' => array('country' => 'USA', 'owner' => ''),
1517
			'SES' => array('country' => 'Multinational', 'owner' => 'SES World Skies'),
1518
			'SING' => array('country' => 'Singapore', 'owner' => ''),
1519
			'SKOR' => array('country' => 'South Korea', 'owner' => ''),
1520
			'SPN' => array('country' => 'Spain', 'owner' => ''),
1521
			'STCT' => array('country' => 'Singapore/Taiwan', 'owner' => ''),
1522
			'SWED' => array('country' => 'Sweden', 'owner' => ''),
1523
			'SWTZ' => array('country' => 'Switzerland', 'owner' => ''),
1524
			'THAI' => array('country' => 'Thailand', 'owner' => ''),
1525
			'TMMC' => array('country' => 'Turkmenistan/Monaco', 'owner' => ''),
1526
			'TURK' => array('country' => 'Turkey', 'owner' => ''),
1527
			'UAE' => array('country' => 'United Arab Emirates', 'owner' => ''),
1528
			'UK' => array('country' => 'United Kingdom', 'owner' => ''),
1529
			'UKR' => array('country' => 'Ukraine', 'owner' => ''),
1530
			'URY' => array('country' => 'Uruguay', 'owner' => ''),
1531
			'US' => array('country' => 'USA', 'owner' => ''),
1532
			'USBZ' => array('country' => 'USA/Brazil', 'owner' => ''),
1533
			'VENZ' => array('country' => 'Venezuela', 'owner' => ''),
1534
			'VTNM' => array('country' => 'Vietnam', 'owner' => '')
1535
		);
1536
		$satcat_launch_site = array(
1537
			'AFETR' => 'Cape Canaveral',
1538
			'AFWTR' => 'Vandenberg AFB',
1539
			'CAS' => 'Canaries Airspace',
1540
			'DLS' => 'Dombarovsky Air Base',
1541
			'ERAS' => 'Eastern Range Airspace',
1542
			'FRGUI' => 'Guiana Space Center',
1543
			'HGSTR' => 'Hammaguira Space Track Range, Algeria',
1544
			'JSC' => 'Jiuquan Satellite Launch Center',
1545
			'KODAK' => 'Kodiak Launch Complex',
1546
			'KSCUT' => 'Uchinoura Space Center',
1547
			'KWAJ' => 'Kwajalein Island',
1548
			'KYMSC' => 'Kapustin Yar Missile and Space Complex, Russia',
1549
			'NSC' => 'Naro Space Center',
1550
			'PLMSC' => 'Plesetsk Cosmodrome',
1551
			'SEAL' => 'Sea Launch',
1552
			'SEMLS' => 'Semnan Satellite Launch Site, Iran',
1553
			'SNMLP' => 'San Marco Launch Platform, Indian Ocean (Kenya)',
1554
			'SRILR' => 'Satish Dhawan Space Center',
1555
			'SUBL' => 'Submarine Launch Platform (mobile), Russia',
1556
			'SVOBO' => 'Svobodny Cosmodrome',
1557
			'TAISC' => 'Taiyuan Launch Center',
1558
			'TANSC' => 'Tanegashima Space Center',
1559
			'TYMSC' => 'Baikonur Cosmodrome',
1560
			'VOSTO' => 'Vostochny Cosmodrome',
1561
			'WLPIS' => 'Wallops Island Flight Facility',
1562
			'WOMRA' => 'Woomera, Australia',
1563
			'WRAS' => 'Western Range Airspace',
1564
			'WSC' => 'Wenchang Satellite Launch Center',
1565
			'XICLF' => 'Xichang Satellite Launch Center',
1566
			'YAVNE' => 'Palmachim Launch Complex',
1567
			'YUN' => 'Yunsong Launch Site'
1568
		);
1569
1570
		/*
1571
		$query = "DELETE FROM satellite";
1572
		try {
1573
			$Connection = new Connection();
1574
			$sth = $Connection->db->prepare($query);
1575
			$sth->execute(array(':source' => $filename));
1576
		} catch(PDOException $e) {
1577
			return "error : ".$e->getMessage();
1578
		}
1579
		*/
1580
		
1581
		$Connection = new Connection();
1582
		if (($handle = fopen($filename, 'r')) !== FALSE)
1583
		{
1584
			$i = 0;
1585
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1586
			//$Connection->db->beginTransaction();
1587
			while (($data = fgets($handle, 1000)) !== FALSE)
1588
			{
1589
				$result = array();
1590
				$result['cospar'] = trim(substr($data,0,11));
1591
				$result['norad'] = trim(substr($data,13,6));
1592
				$result['operational'] = trim(substr($data,21,1));
1593
				$result['name'] = trim(substr($data,23,24));
1594
				/*
1595
				    * R/B(1) = Rocket body, first stage
1596
				    * R/B(2) = Rocket body, second stage
1597
				    * DEB = Debris
1598
				    * PLAT = Platform
1599
				    * Items in parentheses are alternate names
1600
				    * Items in brackets indicate type of object
1601
				    (e.g., BREEZE-M DEB [TANK] = tank)
1602
				    * An ampersand (&) indicates two or more objects are attached
1603
				*/
1604
				
1605
				$owner_code = trim(substr($data,49,5));
1606
				if ($owner_code != 'TBD') {
1607
					$result['country_owner'] = $satcat_sources[$owner_code]['country'];
1608
					$result['owner'] = $satcat_sources[$owner_code]['owner'];
1609
					$result['launch_date'] = trim(substr($data,56,10));
1610
					$launch_site_code = trim(substr($data,68,5));
1611
					$result['launch_site'] = $satcat_launch_site[$launch_site_code];
1612
					$result['lifetime'] = trim(substr($data,75,10));
1613
					$result['period'] = trim(substr($data,87,7));
1614
					$result['inclination'] = trim(substr($data,96,5));
1615
					$result['apogee'] = trim(substr($data,103,6));
1616
					$result['perigee'] = trim(substr($data,111,6));
1617
					//$result['radarcross'] = trim(substr($data,119,8));
1618
					$result['status'] = trim(substr($data,129,3));
1619
					//print_r($result);
1620
					$result = array_map(function($value) {
1621
						return trim($value) === '' ? null : $value;
1622
					}, $result);
1623
					//print_r($data);
1624
					if ($result['operational'] != 'D') {
1625
						$query = "SELECT * FROM satellite WHERE cospar = :cospar LIMIT 1";
1626
						try {
1627
							$Connection = new Connection();
1628
							$sth = $Connection->db->prepare($query);
1629
							$sth->execute(array(':cospar' => $result['cospar']));
1630
							$exist = $sth->fetchAll(PDO::FETCH_ASSOC);
1631
						} catch(PDOException $e) {
1632
							return "error : ".$e->getMessage();
1633
						}
1634
						if (empty($exist)) {
1635
							$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) 
1636
							    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)';
1637
							try {
1638
								$sth = $Connection->db->prepare($query);
1639
								$sth->execute(array(
1640
								    ':name' => $result['name'], ':name_alternate' => '', ':country_un' => '', ':country_owner' => $result['country_owner'], ':owner' => $result['owner'], ':users' => '', ':purpose' => '', ':purpose_detailed' => '', ':orbit' => $result['status'],
1641
								    ':type' => '', ':longitude_geo' => NULL, ':perigee' => !empty($result['perigee']) ? $result['perigee'] : NULL, ':apogee' => !empty($result['apogee']) ? $result['apogee'] : NULL, ':eccentricity' => NULL, ':inclination' => $result['inclination'],
1642
								    ':period' => !empty($result['period']) ? $result['period'] : NULL, ':launch_mass' => NULL, ':dry_mass' => NULL, ':power' => NULL, ':launch_date' => $result['launch_date'], ':lifetime' => $result['lifetime'], 
1643
								    ':contractor' => '',':country_contractor' => '', ':launch_site' => $result['launch_site'], ':launch_vehicule' => '', ':cospar' => $result['cospar'], ':norad' => $result['norad'], ':comments' => '', ':source_orbital' => '', ':sources' => ''
1644
								    )
1645
								);
1646
							} catch(PDOException $e) {
1647
								return "error : ".$e->getMessage();
1648
							}
1649
						} elseif ($exist[0]['name'] != $result['name'] && $exist[0]['name_alternate'] != $result['name']) {
1650
							$query = "UPDATE satellite SET name_alternate = :name_alternate WHERE cospar = :cospar";
1651
							try {
1652
								$Connection = new Connection();
1653
								$sth = $Connection->db->prepare($query);
1654
								$sth->execute(array(':name_alternate' => $result['name'],':cospar' => $result['cospar']));
1655
							} catch(PDOException $e) {
1656
								return "error : ".$e->getMessage();
1657
							}
1658
						}
1659
					}
1660
				}
1661
				
1662
				$i++;
1663
			}
1664
			fclose($handle);
1665
			//$Connection->db->commit();
1666
		}
1667
		return '';
1668
        }
1669
1670
	/**
1671
        * Convert a HTML table to an array
1672
        * @param String $data HTML page
1673
        * @return Array array of the tables in HTML page
1674
        */
1675
/*
1676
        private static function table2array($data) {
1677
                $html = str_get_html($data);
1678
                $tabledata=array();
1679
                foreach($html->find('tr') as $element)
1680
                {
1681
                        $td = array();
1682
                        foreach( $element->find('th') as $row)
1683
                        {
1684
                                $td [] = trim($row->plaintext);
1685
                        }
1686
                        $td=array_filter($td);
1687
                        $tabledata[] = $td;
1688
1689
                        $td = array();
1690
                        $tdi = array();
1691
                        foreach( $element->find('td') as $row)
1692
                        {
1693
                                $td [] = trim($row->plaintext);
1694
                                $tdi [] = trim($row->innertext);
1695
                        }
1696
                        $td=array_filter($td);
1697
                        $tdi=array_filter($tdi);
1698
                    //    $tabledata[]=array_merge($td,$tdi);
1699
                        $tabledata[]=$td;
1700
                }
1701
                return(array_filter($tabledata));
1702
        }
1703
*/
1704
       /**
1705
        * Get data from form result
1706
        * @param String $url form URL
1707
        * @return String the result
1708
        */
1709
/*
1710
        private static function getData($url) {
1711
                $ch = curl_init();
1712
                curl_setopt($ch, CURLOPT_URL, $url);
1713
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1714
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
1715
                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');
1716
                return curl_exec($ch);
1717
        }
1718
*/
1719
/*
1720
	public static function waypoints() {
1721
		$data = update_db::getData('http://www.fallingrain.com/world/FR/waypoints.html');
1722
		$table = update_db::table2array($data);
1723
//		print_r($table);
1724
		$query = 'TRUNCATE TABLE waypoints';
1725
		try {
1726
			$Connection = new Connection();
1727
			$sth = $Connection->db->prepare($query);
1728
                        $sth->execute();
1729
                } catch(PDOException $e) {
1730
                        return "error : ".$e->getMessage();
1731
                }
1732
1733
		$query_dest = 'INSERT INTO waypoints (ident,latitude,longitude,control,usage) VALUES (:ident, :latitude, :longitude, :control, :usage)';
1734
		$Connection = new Connection();
1735
		$sth_dest = $Connection->db->prepare($query_dest);
1736
		$Connection->db->beginTransaction();
1737
                foreach ($table as $row) {
1738
            		if ($row[0] != 'Ident') {
1739
				$ident = $row[0];
1740
				$latitude = $row[2];
1741
				$longitude = $row[3];
1742
				$control = $row[4];
1743
				if (isset($row[5])) $usage = $row[5]; else $usage = '';
1744
				$query_dest_values = array(':ident' => $ident,':latitude' => $latitude,':longitude' => $longitude,':control' => $control,':usage' => $usage);
1745
				try {
1746
					$sth_dest->execute($query_dest_values);
1747
				} catch(PDOException $e) {
1748
					return "error : ".$e->getMessage();
1749
				}
1750
			}
1751
                }
1752
		$Connection->db->commit();
1753
1754
	}
1755
*/
1756
	public static function waypoints($filename) {
1757
		//require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1758
		global $tmp_dir, $globalTransaction;
1759
		//$Spotter = new Spotter();
1760
		//$out_file = $tmp_dir.'translation.zip';
1761
		//update_db::download('http://www.acarsd.org/download/translation.php',$out_file);
1762
		//if (!file_exists($out_file) || !is_readable($out_file)) return FALSE;
1763
		$Connection = new Connection();
1764
		//update_db::unzip($out_file);
1765
		$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...
1766
		$delimiter = ' ';
1767
		if (($handle = fopen($filename, 'r')) !== FALSE)
1768
		{
1769
			$i = 0;
1770
			if ($globalTransaction) $Connection->db->beginTransaction();
1771
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1772
			{
1773
				$i++;
1774
				if($i > 3 && count($row) > 2) {
1775
					$data = array_values(array_filter($row));
1776
					$cntdata = count($data);
1777
					if ($cntdata > 10) {
1778
						$value = $data[9];
1779
						
1780
						for ($i =10;$i < $cntdata;$i++) {
1781
							$value .= ' '.$data[$i];
1782
						}
1783
						$data[9] = $value;
1784
					}
1785
					//print_r($data);
1786
					if (count($data) > 9) {
1787
						$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)';
1788
						try {
1789
							$sth = $Connection->db->prepare($query);
1790
							$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]));
1791
						} catch(PDOException $e) {
1792
							return "error : ".$e->getMessage();
1793
						}
1794
					}
1795
				}
1796
			}
1797
			fclose($handle);
1798
			if ($globalTransaction) $Connection->db->commit();
1799
		}
1800
		return '';
1801
        }
1802
1803
	public static function ivao_airlines($filename) {
1804
		//require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1805
		global $tmp_dir, $globalTransaction;
1806
		//$query = 'TRUNCATE TABLE airlines';
1807
		$query = "DELETE FROM airlines WHERE forsource = 'ivao'";
1808
		try {
1809
			$Connection = new Connection();
1810
			$sth = $Connection->db->prepare($query);
1811
                        $sth->execute();
1812
                } catch(PDOException $e) {
1813
                        return "error : ".$e->getMessage();
1814
                }
1815
1816
		$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...
1817
		$delimiter = ':';
1818
		$Connection = new Connection();
1819
		if (($handle = fopen($filename, 'r')) !== FALSE)
1820
		{
1821
			if ($globalTransaction) $Connection->db->beginTransaction();
1822
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1823
			{
1824
				if(count($row) > 1) {
1825
					$query = "INSERT INTO airlines (name,icao,active,forsource) VALUES (:name, :icao, 'Y','ivao')";
1826
					try {
1827
						$sth = $Connection->db->prepare($query);
1828
						$sth->execute(array(':name' => $row[1],':icao' => $row[0]));
1829
					} catch(PDOException $e) {
1830
						return "error : ".$e->getMessage();
1831
					}
1832
				}
1833
			}
1834
			fclose($handle);
1835
			if ($globalTransaction) $Connection->db->commit();
1836
		}
1837
		return '';
1838
        }
1839
	
1840
	public static function update_airspace() {
1841
		global $tmp_dir, $globalDBdriver;
1842
		include_once('class.create_db.php');
1843
		$Connection = new Connection();
1844
		if ($Connection->tableExists('airspace')) {
1845
			$query = 'DROP TABLE airspace';
1846
			try {
1847
				$sth = $Connection->db->prepare($query);
1848
                    		$sth->execute();
1849
	                } catch(PDOException $e) {
1850
				return "error : ".$e->getMessage();
1851
	                }
1852
	        }
1853
1854
1855
		if ($globalDBdriver == 'mysql') update_db::gunzip('../db/airspace.sql.gz',$tmp_dir.'airspace.sql');
1856
		else {
1857
			update_db::gunzip('../db/pgsql/airspace.sql.gz',$tmp_dir.'airspace.sql');
1858
			$query = "CREATE EXTENSION postgis";
1859
			$Connection = new Connection(null,null,$_SESSION['database_root'],$_SESSION['database_rootpass']);
1860
			try {
1861
				$sth = $Connection->db->prepare($query);
1862
				$sth->execute();
1863
			} catch(PDOException $e) {
1864
				return "error : ".$e->getMessage();
1865
			}
1866
		}
1867
		$error = create_db::import_file($tmp_dir.'airspace.sql');
1868
		return $error;
1869
	}
1870
1871
	public static function update_notam_fam() {
1872
		global $tmp_dir, $globalDebug;
1873
		include_once('class.create_db.php');
1874
		require_once(dirname(__FILE__).'/../require/class.NOTAM.php');
1875
		if ($globalDebug) echo "NOTAM from FlightAirMap website : Download...";
1876
		update_db::download('http://data.flightairmap.com/data/notam.txt.gz',$tmp_dir.'notam.txt.gz');
1877
		$error = '';
1878
		if (file_exists($tmp_dir.'notam.txt.gz')) {
1879
			if ($globalDebug) echo "Gunzip...";
1880
			update_db::gunzip($tmp_dir.'notam.txt.gz');
1881
			if ($globalDebug) echo "Add to DB...";
1882
			//$error = create_db::import_file($tmp_dir.'notam.sql');
1883
			$NOTAM = new NOTAM();
1884
			$NOTAM->updateNOTAMfromTextFile($tmp_dir.'notam.txt');
1885
		} else $error = "File ".$tmp_dir.'notam.txt.gz'." doesn't exist. Download failed.";
1886
		if ($error != '') {
1887
			return $error;
1888
		} elseif ($globalDebug) echo "Done\n";
1889
		return '';
1890
	}
1891
1892
	public static function update_vatsim() {
1893
		global $tmp_dir;
1894
		include_once('class.create_db.php');
1895
		$error = create_db::import_file('../db/vatsim/airlines.sql');
1896
		return $error;
1897
	}
1898
	
1899
	public static function update_countries() {
1900
		global $tmp_dir, $globalDBdriver;
1901
		include_once('class.create_db.php');
1902
		$Connection = new Connection();
1903
		if ($Connection->tableExists('countries')) {
1904
			$query = 'DROP TABLE countries';
1905
			try {
1906
				$sth = $Connection->db->prepare($query);
1907
            	        	$sth->execute();
1908
	                } catch(PDOException $e) {
1909
    	                	echo "error : ".$e->getMessage();
1910
	                }
1911
		}
1912
		if ($globalDBdriver == 'mysql') {
1913
			update_db::gunzip('../db/countries.sql.gz',$tmp_dir.'countries.sql');
1914
		} else {
1915
			update_db::gunzip('../db/pgsql/countries.sql.gz',$tmp_dir.'countries.sql');
1916
		}
1917
		$error = create_db::import_file($tmp_dir.'countries.sql');
1918
		return $error;
1919
	}
1920
1921
	
1922
	public static function update_waypoints() {
1923
		global $tmp_dir;
1924
//		update_db::download('http://dev.x-plane.com/update/data/AptNav201310XP1000.zip',$tmp_dir.'AptNav.zip');
1925
//		update_db::unzip($tmp_dir.'AptNav.zip');
1926
//		update_db::download('https://gitorious.org/fg/fgdata/raw/e81f8a15424a175a7b715f8f7eb8f4147b802a27:Navaids/awy.dat.gz',$tmp_dir.'awy.dat.gz');
1927
//		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');
1928
		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');
1929
		update_db::gunzip($tmp_dir.'awy.dat.gz');
1930
		$error = update_db::waypoints($tmp_dir.'awy.dat');
1931
		return $error;
1932
	}
1933
1934
	public static function update_ivao() {
1935
		global $tmp_dir, $globalDebug;
1936
		$Common = new Common();
1937
		$error = '';
1938
		//Direct download forbidden
1939
		//if ($globalDebug) echo "IVAO : Download...";
1940
		//update_db::download('http://fr.mirror.ivao.aero/software/ivae_feb2013.zip',$tmp_dir.'ivae_feb2013.zip');
1941
		if (file_exists($tmp_dir.'ivae_feb2013.zip')) {
1942
			if ($globalDebug) echo "Unzip...";
1943
			update_db::unzip($tmp_dir.'ivae_feb2013.zip');
1944
			if ($globalDebug) echo "Add to DB...";
1945
			update_db::ivao_airlines($tmp_dir.'data/airlines.dat');
1946
			if ($globalDebug) echo "Copy airlines logos to airlines images directory...";
1947
			if (is_writable(dirname(__FILE__).'/../images/airlines')) {
1948
				if (!$Common->xcopy($tmp_dir.'logos/',dirname(__FILE__).'/../images/airlines/')) $error = "Failed to copy airlines logo.";
1949
			} else $error = "The directory ".dirname(__FILE__).'/../images/airlines'." must be writable";
1950
		} else $error = "File ".$tmp_dir.'ivao.zip'." doesn't exist. Download failed.";
1951
		if ($error != '') {
1952
			return $error;
1953
		} elseif ($globalDebug) echo "Done\n";
1954
		return '';
1955
	}
1956
1957
	public static function update_routes() {
1958
		global $tmp_dir, $globalDebug;
1959
		$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...
1960
		if ($globalDebug) echo "Routes : Download...";
1961
		update_db::download('http://www.virtualradarserver.co.uk/Files/StandingData.sqb.gz',$tmp_dir.'StandingData.sqb.gz');
1962
		if (file_exists($tmp_dir.'StandingData.sqb.gz')) {
1963
			if ($globalDebug) echo "Gunzip...";
1964
			update_db::gunzip($tmp_dir.'StandingData.sqb.gz');
1965
			if ($globalDebug) echo "Add to DB...";
1966
			$error = update_db::retrieve_route_sqlite_to_dest($tmp_dir.'StandingData.sqb');
1967
		} else $error = "File ".$tmp_dir.'StandingData.sqb.gz'." doesn't exist. Download failed.";
1968
		if ($error != '') {
1969
			return $error;
1970
		} elseif ($globalDebug) echo "Done\n";
1971
		return '';
1972
	}
1973
	public static function update_oneworld() {
1974
		global $tmp_dir, $globalDebug;
1975
		$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...
1976
		if ($globalDebug) echo "Schedules Oneworld : Download...";
1977
		update_db::download('http://data.flightairmap.com/data/schedules/oneworld.csv.gz',$tmp_dir.'oneworld.csv.gz');
1978
		if (file_exists($tmp_dir.'oneworld.csv.gz')) {
1979
			if ($globalDebug) echo "Gunzip...";
1980
			update_db::gunzip($tmp_dir.'oneworld.csv.gz');
1981
			if ($globalDebug) echo "Add to DB...";
1982
			$error = update_db::retrieve_route_oneworld($tmp_dir.'oneworld.csv');
1983
		} else $error = "File ".$tmp_dir.'oneworld.csv.gz'." doesn't exist. Download failed.";
1984
		if ($error != '') {
1985
			return $error;
1986
		} elseif ($globalDebug) echo "Done\n";
1987
		return '';
1988
	}
1989
	public static function update_skyteam() {
1990
		global $tmp_dir, $globalDebug;
1991
		$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...
1992
		if ($globalDebug) echo "Schedules Skyteam : Download...";
1993
		update_db::download('http://data.flightairmap.com/data/schedules/skyteam.csv.gz',$tmp_dir.'skyteam.csv.gz');
1994
		if (file_exists($tmp_dir.'skyteam.csv.gz')) {
1995
			if ($globalDebug) echo "Gunzip...";
1996
			update_db::gunzip($tmp_dir.'skyteam.csv.gz');
1997
			if ($globalDebug) echo "Add to DB...";
1998
			$error = update_db::retrieve_route_skyteam($tmp_dir.'skyteam.csv');
1999
		} else $error = "File ".$tmp_dir.'skyteam.csv.gz'." doesn't exist. Download failed.";
2000
		if ($error != '') {
2001
			return $error;
2002
		} elseif ($globalDebug) echo "Done\n";
2003
		return '';
2004
	}
2005
	public static function update_ModeS() {
2006
		global $tmp_dir, $globalDebug;
2007
/*
2008
		if ($globalDebug) echo "Modes : Download...";
2009
		update_db::download('http://pp-sqb.mantma.co.uk/basestation_latest.zip',$tmp_dir.'basestation_latest.zip');
2010
		if ($globalDebug) echo "Unzip...";
2011
		update_db::unzip($tmp_dir.'basestation_latest.zip');
2012
		if ($globalDebug) echo "Add to DB...";
2013
		$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'/basestation_latest/basestation.sqb');
2014
		if ($error != true) {
2015
			echo $error;
2016
			exit;
2017
		} elseif ($globalDebug) echo "Done\n";
2018
*/
2019
		if ($globalDebug) echo "Modes : Download...";
2020
//		update_db::download('http://planebase.biz/sqb.php?f=basestationall.zip',$tmp_dir.'basestation_latest.zip','http://planebase.biz/bstnsqb');
2021
		update_db::download('http://data.flightairmap.com/data/BaseStation.sqb.gz',$tmp_dir.'BaseStation.sqb.gz');
2022
2023
//		if (file_exists($tmp_dir.'basestation_latest.zip')) {
2024
		if (file_exists($tmp_dir.'BaseStation.sqb.gz')) {
2025
			if ($globalDebug) echo "Unzip...";
2026
//			update_db::unzip($tmp_dir.'basestation_latest.zip');
2027
			update_db::gunzip($tmp_dir.'BaseStation.sqb.gz');
2028
			if ($globalDebug) echo "Add to DB...";
2029
			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'BaseStation.sqb');
2030
//			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'basestation.sqb');
2031
		} else $error = "File ".$tmp_dir.'basestation_latest.zip'." doesn't exist. Download failed.";
2032
		if ($error != '') {
2033
			return $error;
2034
		} elseif ($globalDebug) echo "Done\n";
2035
		return '';
2036
	}
2037
2038
	public static function update_ModeS_faa() {
2039
		global $tmp_dir, $globalDebug;
2040
		if ($globalDebug) echo "Modes FAA: Download...";
2041
		update_db::download('http://registry.faa.gov/database/ReleasableAircraft.zip',$tmp_dir.'ReleasableAircraft.zip');
2042
		if (file_exists($tmp_dir.'ReleasableAircraft.zip')) {
2043
			if ($globalDebug) echo "Unzip...";
2044
			update_db::unzip($tmp_dir.'ReleasableAircraft.zip');
2045
			if ($globalDebug) echo "Add to DB...";
2046
			$error = update_db::modes_faa();
2047
		} else $error = "File ".$tmp_dir.'ReleasableAircraft.zip'." doesn't exist. Download failed.";
2048
		if ($error != '') {
2049
			return $error;
2050
		} elseif ($globalDebug) echo "Done\n";
2051
		return '';
2052
	}
2053
2054
	public static function update_ModeS_flarm() {
2055
		global $tmp_dir, $globalDebug;
2056
		if ($globalDebug) echo "Modes Flarmnet: Download...";
2057
		update_db::download('http://flarmnet.org/files/data.fln',$tmp_dir.'data.fln');
2058
		if (file_exists($tmp_dir.'data.fln')) {
2059
			if ($globalDebug) echo "Add to DB...";
2060
			$error = update_db::retrieve_modes_flarmnet($tmp_dir.'data.fln');
2061
		} else $error = "File ".$tmp_dir.'data.fln'." doesn't exist. Download failed.";
2062
		if ($error != '') {
2063
			return $error;
2064
		} elseif ($globalDebug) echo "Done\n";
2065
		return '';
2066
	}
2067
2068
	public static function update_ModeS_ogn() {
2069
		global $tmp_dir, $globalDebug;
2070
		if ($globalDebug) echo "Modes OGN: Download...";
2071
		update_db::download('http://ddb.glidernet.org/download/',$tmp_dir.'ogn.csv');
2072
		if (file_exists($tmp_dir.'ogn.csv')) {
2073
			if ($globalDebug) echo "Add to DB...";
2074
			$error = update_db::retrieve_modes_ogn($tmp_dir.'ogn.csv');
2075
		} else $error = "File ".$tmp_dir.'ogn.csv'." doesn't exist. Download failed.";
2076
		if ($error != '') {
2077
			return $error;
2078
		} elseif ($globalDebug) echo "Done\n";
2079
		return '';
2080
	}
2081
2082
	public static function update_owner() {
2083
		global $tmp_dir, $globalDebug, $globalMasterSource;
2084
		
2085
		if ($globalDebug) echo "Owner France: Download...";
2086
		update_db::download('http://antonakis.co.uk/registers/France.txt',$tmp_dir.'owner_f.csv');
2087
		if (file_exists($tmp_dir.'owner_f.csv')) {
2088
			if ($globalDebug) echo "Add to DB...";
2089
			$error = update_db::retrieve_owner($tmp_dir.'owner_f.csv','F');
2090
		} else $error = "File ".$tmp_dir.'owner_f.csv'." doesn't exist. Download failed.";
2091
		if ($error != '') {
2092
			return $error;
2093
		} elseif ($globalDebug) echo "Done\n";
2094
		
2095
		if ($globalDebug) echo "Owner Ireland: Download...";
2096
		update_db::download('http://antonakis.co.uk/registers/Ireland.txt',$tmp_dir.'owner_ei.csv');
2097
		if (file_exists($tmp_dir.'owner_ei.csv')) {
2098
			if ($globalDebug) echo "Add to DB...";
2099
			$error = update_db::retrieve_owner($tmp_dir.'owner_ei.csv','EI');
2100
		} else $error = "File ".$tmp_dir.'owner_ei.csv'." doesn't exist. Download failed.";
2101
		if ($error != '') {
2102
			return $error;
2103
		} elseif ($globalDebug) echo "Done\n";
2104
		if ($globalDebug) echo "Owner Switzerland: Download...";
2105
		update_db::download('http://antonakis.co.uk/registers/Switzerland.txt',$tmp_dir.'owner_hb.csv');
2106
		if (file_exists($tmp_dir.'owner_hb.csv')) {
2107
			if ($globalDebug) echo "Add to DB...";
2108
			$error = update_db::retrieve_owner($tmp_dir.'owner_hb.csv','HB');
2109
		} else $error = "File ".$tmp_dir.'owner_hb.csv'." doesn't exist. Download failed.";
2110
		if ($error != '') {
2111
			return $error;
2112
		} elseif ($globalDebug) echo "Done\n";
2113
		if ($globalDebug) echo "Owner Czech Republic: Download...";
2114
		update_db::download('http://antonakis.co.uk/registers/CzechRepublic.txt',$tmp_dir.'owner_ok.csv');
2115
		if (file_exists($tmp_dir.'owner_ok.csv')) {
2116
			if ($globalDebug) echo "Add to DB...";
2117
			$error = update_db::retrieve_owner($tmp_dir.'owner_ok.csv','OK');
2118
		} else $error = "File ".$tmp_dir.'owner_ok.csv'." doesn't exist. Download failed.";
2119
		if ($error != '') {
2120
			return $error;
2121
		} elseif ($globalDebug) echo "Done\n";
2122
		if ($globalDebug) echo "Owner Australia: Download...";
2123
		update_db::download('http://antonakis.co.uk/registers/Australia.txt',$tmp_dir.'owner_vh.csv');
2124
		if (file_exists($tmp_dir.'owner_vh.csv')) {
2125
			if ($globalDebug) echo "Add to DB...";
2126
			$error = update_db::retrieve_owner($tmp_dir.'owner_vh.csv','VH');
2127
		} else $error = "File ".$tmp_dir.'owner_vh.csv'." doesn't exist. Download failed.";
2128
		if ($error != '') {
2129
			return $error;
2130
		} elseif ($globalDebug) echo "Done\n";
2131
		if ($globalDebug) echo "Owner Austria: Download...";
2132
		update_db::download('http://antonakis.co.uk/registers/Austria.txt',$tmp_dir.'owner_oe.csv');
2133
		if (file_exists($tmp_dir.'owner_oe.csv')) {
2134
			if ($globalDebug) echo "Add to DB...";
2135
			$error = update_db::retrieve_owner($tmp_dir.'owner_oe.csv','OE');
2136
		} else $error = "File ".$tmp_dir.'owner_oe.csv'." doesn't exist. Download failed.";
2137
		if ($error != '') {
2138
			return $error;
2139
		} elseif ($globalDebug) echo "Done\n";
2140
		if ($globalDebug) echo "Owner Chile: Download...";
2141
		update_db::download('http://antonakis.co.uk/registers/Chile.txt',$tmp_dir.'owner_cc.csv');
2142
		if (file_exists($tmp_dir.'owner_cc.csv')) {
2143
			if ($globalDebug) echo "Add to DB...";
2144
			$error = update_db::retrieve_owner($tmp_dir.'owner_cc.csv','CC');
2145
		} else $error = "File ".$tmp_dir.'owner_cc.csv'." doesn't exist. Download failed.";
2146
		if ($error != '') {
2147
			return $error;
2148
		} elseif ($globalDebug) echo "Done\n";
2149
		if ($globalDebug) echo "Owner Colombia: Download...";
2150
		update_db::download('http://antonakis.co.uk/registers/Colombia.txt',$tmp_dir.'owner_hj.csv');
2151
		if (file_exists($tmp_dir.'owner_hj.csv')) {
2152
			if ($globalDebug) echo "Add to DB...";
2153
			$error = update_db::retrieve_owner($tmp_dir.'owner_hj.csv','HJ');
2154
		} else $error = "File ".$tmp_dir.'owner_hj.csv'." doesn't exist. Download failed.";
2155
		if ($error != '') {
2156
			return $error;
2157
		} elseif ($globalDebug) echo "Done\n";
2158
		if ($globalDebug) echo "Owner Bosnia Herzegobina: Download...";
2159
		update_db::download('http://antonakis.co.uk/registers/BosniaHerzegovina.txt',$tmp_dir.'owner_e7.csv');
2160
		if (file_exists($tmp_dir.'owner_e7.csv')) {
2161
			if ($globalDebug) echo "Add to DB...";
2162
			$error = update_db::retrieve_owner($tmp_dir.'owner_e7.csv','E7');
2163
		} else $error = "File ".$tmp_dir.'owner_e7.csv'." doesn't exist. Download failed.";
2164
		if ($error != '') {
2165
			return $error;
2166
		} elseif ($globalDebug) echo "Done\n";
2167
		if ($globalDebug) echo "Owner Brazil: Download...";
2168
		update_db::download('http://antonakis.co.uk/registers/Brazil.txt',$tmp_dir.'owner_pp.csv');
2169
		if (file_exists($tmp_dir.'owner_pp.csv')) {
2170
			if ($globalDebug) echo "Add to DB...";
2171
			$error = update_db::retrieve_owner($tmp_dir.'owner_pp.csv','PP');
2172
		} else $error = "File ".$tmp_dir.'owner_pp.csv'." doesn't exist. Download failed.";
2173
		if ($error != '') {
2174
			return $error;
2175
		} elseif ($globalDebug) echo "Done\n";
2176
		if ($globalDebug) echo "Owner Cayman Islands: Download...";
2177
		update_db::download('http://antonakis.co.uk/registers/CaymanIslands.txt',$tmp_dir.'owner_vp.csv');
2178
		if (file_exists($tmp_dir.'owner_vp.csv')) {
2179
			if ($globalDebug) echo "Add to DB...";
2180
			$error = update_db::retrieve_owner($tmp_dir.'owner_vp.csv','VP');
2181
		} else $error = "File ".$tmp_dir.'owner_vp.csv'." doesn't exist. Download failed.";
2182
		if ($error != '') {
2183
			return $error;
2184
		} elseif ($globalDebug) echo "Done\n";
2185
		if ($globalDebug) echo "Owner Croatia: Download...";
2186
		update_db::download('http://antonakis.co.uk/registers/Croatia.txt',$tmp_dir.'owner_9a.csv');
2187
		if (file_exists($tmp_dir.'owner_9a.csv')) {
2188
			if ($globalDebug) echo "Add to DB...";
2189
			$error = update_db::retrieve_owner($tmp_dir.'owner_9a.csv','9A');
2190
		} else $error = "File ".$tmp_dir.'owner_9a.csv'." doesn't exist. Download failed.";
2191
		if ($error != '') {
2192
			return $error;
2193
		} elseif ($globalDebug) echo "Done\n";
2194
		if ($globalDebug) echo "Owner Luxembourg: Download...";
2195
		update_db::download('http://antonakis.co.uk/registers/Luxembourg.txt',$tmp_dir.'owner_lx.csv');
2196
		if (file_exists($tmp_dir.'owner_lx.csv')) {
2197
			if ($globalDebug) echo "Add to DB...";
2198
			$error = update_db::retrieve_owner($tmp_dir.'owner_lx.csv','LX');
2199
		} else $error = "File ".$tmp_dir.'owner_lx.csv'." doesn't exist. Download failed.";
2200
		if ($error != '') {
2201
			return $error;
2202
		} elseif ($globalDebug) echo "Done\n";
2203
		if ($globalDebug) echo "Owner Maldives: Download...";
2204
		update_db::download('http://antonakis.co.uk/registers/Maldives.txt',$tmp_dir.'owner_8q.csv');
2205
		if (file_exists($tmp_dir.'owner_8q.csv')) {
2206
			if ($globalDebug) echo "Add to DB...";
2207
			$error = update_db::retrieve_owner($tmp_dir.'owner_8q.csv','8Q');
2208
		} else $error = "File ".$tmp_dir.'owner_8q.csv'." doesn't exist. Download failed.";
2209
		if ($error != '') {
2210
			return $error;
2211
		} elseif ($globalDebug) echo "Done\n";
2212
		if ($globalDebug) echo "Owner New Zealand: Download...";
2213
		update_db::download('http://antonakis.co.uk/registers/NewZealand.txt',$tmp_dir.'owner_zk.csv');
2214
		if (file_exists($tmp_dir.'owner_zk.csv')) {
2215
			if ($globalDebug) echo "Add to DB...";
2216
			$error = update_db::retrieve_owner($tmp_dir.'owner_zk.csv','ZK');
2217
		} else $error = "File ".$tmp_dir.'owner_zk.csv'." doesn't exist. Download failed.";
2218
		if ($error != '') {
2219
			return $error;
2220
		} elseif ($globalDebug) echo "Done\n";
2221
		if ($globalDebug) echo "Owner Papua New Guinea: Download...";
2222
		update_db::download('http://antonakis.co.uk/registers/PapuaNewGuinea.txt',$tmp_dir.'owner_p2.csv');
2223
		if (file_exists($tmp_dir.'owner_p2.csv')) {
2224
			if ($globalDebug) echo "Add to DB...";
2225
			$error = update_db::retrieve_owner($tmp_dir.'owner_p2.csv','P2');
2226
		} else $error = "File ".$tmp_dir.'owner_p2.csv'." doesn't exist. Download failed.";
2227
		if ($error != '') {
2228
			return $error;
2229
		} elseif ($globalDebug) echo "Done\n";
2230
		if ($globalDebug) echo "Owner Slovakia: Download...";
2231
		update_db::download('http://antonakis.co.uk/registers/Slovakia.txt',$tmp_dir.'owner_om.csv');
2232
		if (file_exists($tmp_dir.'owner_om.csv')) {
2233
			if ($globalDebug) echo "Add to DB...";
2234
			$error = update_db::retrieve_owner($tmp_dir.'owner_om.csv','OM');
2235
		} else $error = "File ".$tmp_dir.'owner_om.csv'." doesn't exist. Download failed.";
2236
		if ($error != '') {
2237
			return $error;
2238
		} elseif ($globalDebug) echo "Done\n";
2239
		if ($globalDebug) echo "Owner Ecuador: Download...";
2240
		update_db::download('http://antonakis.co.uk/registers/Ecuador.txt',$tmp_dir.'owner_hc.csv');
2241
		if (file_exists($tmp_dir.'owner_hc.csv')) {
2242
			if ($globalDebug) echo "Add to DB...";
2243
			$error = update_db::retrieve_owner($tmp_dir.'owner_hc.csv','HC');
2244
		} else $error = "File ".$tmp_dir.'owner_hc.csv'." doesn't exist. Download failed.";
2245
		if ($error != '') {
2246
			return $error;
2247
		} elseif ($globalDebug) echo "Done\n";
2248
		if ($globalDebug) echo "Owner Iceland: Download...";
2249
		update_db::download('http://antonakis.co.uk/registers/Iceland.txt',$tmp_dir.'owner_tf.csv');
2250
		if (file_exists($tmp_dir.'owner_tf.csv')) {
2251
			if ($globalDebug) echo "Add to DB...";
2252
			$error = update_db::retrieve_owner($tmp_dir.'owner_tf.csv','TF');
2253
		} else $error = "File ".$tmp_dir.'owner_tf.csv'." doesn't exist. Download failed.";
2254
		if ($error != '') {
2255
			return $error;
2256
		} elseif ($globalDebug) echo "Done\n";
2257
		if ($globalDebug) echo "Owner Isle of Man: Download...";
2258
		update_db::download('http://antonakis.co.uk/registers/IsleOfMan.txt',$tmp_dir.'owner_m.csv');
2259
		if (file_exists($tmp_dir.'owner_m.csv')) {
2260
			if ($globalDebug) echo "Add to DB...";
2261
			$error = update_db::retrieve_owner($tmp_dir.'owner_m.csv','M');
2262
		} else $error = "File ".$tmp_dir.'owner_m.csv'." doesn't exist. Download failed.";
2263
		if ($error != '') {
2264
			return $error;
2265
		} elseif ($globalDebug) echo "Done\n";
2266
		if ($globalMasterSource) {
2267
			if ($globalDebug) echo "ModeS Netherlands: Download...";
2268
			update_db::download('http://antonakis.co.uk/registers/Netherlands.txt',$tmp_dir.'owner_ph.csv');
2269
			if (file_exists($tmp_dir.'owner_ph.csv')) {
2270
				if ($globalDebug) echo "Add to DB...";
2271
				$error = update_db::retrieve_owner($tmp_dir.'owner_ph.csv','PH');
2272
			} else $error = "File ".$tmp_dir.'owner_ph.csv'." doesn't exist. Download failed.";
2273
			if ($error != '') {
2274
				return $error;
2275
			} elseif ($globalDebug) echo "Done\n";
2276
			if ($globalDebug) echo "ModeS Denmark: Download...";
2277
			update_db::download('http://antonakis.co.uk/registers/Denmark.txt',$tmp_dir.'owner_oy.csv');
2278
			if (file_exists($tmp_dir.'owner_oy.csv')) {
2279
				if ($globalDebug) echo "Add to DB...";
2280
				$error = update_db::retrieve_owner($tmp_dir.'owner_oy.csv','OY');
2281
			} else $error = "File ".$tmp_dir.'owner_oy.csv'." doesn't exist. Download failed.";
2282
			if ($error != '') {
2283
				return $error;
2284
			} elseif ($globalDebug) echo "Done\n";
2285
		} elseif ($globalDebug) echo "Done\n";
2286
		return '';
2287
	}
2288
2289
	public static function update_translation() {
2290
		global $tmp_dir, $globalDebug;
2291
		$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...
2292
		if ($globalDebug) echo "Translation : Download...";
2293
		update_db::download('http://www.acarsd.org/download/translation.php',$tmp_dir.'translation.zip');
2294
		if (file_exists($tmp_dir.'translation.zip')) {
2295
			if ($globalDebug) echo "Unzip...";
2296
			update_db::unzip($tmp_dir.'translation.zip');
2297
			if ($globalDebug) echo "Add to DB...";
2298
			$error = update_db::translation();
2299
		} else $error = "File ".$tmp_dir.'translation.zip'." doesn't exist. Download failed.";
2300
		if ($error != '') {
2301
			return $error;
2302
		} elseif ($globalDebug) echo "Done\n";
2303
		return '';
2304
	}
2305
2306
	public static function update_translation_fam() {
2307
		global $tmp_dir, $globalDebug;
2308
		if ($globalDebug) echo "Translation from FlightAirMap website : Download...";
2309
		update_db::download('http://data.flightairmap.com/data/translation.tsv.gz',$tmp_dir.'translation.tsv.gz');
2310
		if (file_exists($tmp_dir.'translation.tsv.gz')) {
2311
			if ($globalDebug) echo "Gunzip...";
2312
			update_db::gunzip($tmp_dir.'translation.tsv.gz');
2313
			if ($globalDebug) echo "Add to DB...";
2314
			$error = update_db::translation_fam();
2315
		} else $error = "File ".$tmp_dir.'translation.tsv.gz'." doesn't exist. Download failed.";
2316
		if ($error != '') {
2317
			return $error;
2318
		} elseif ($globalDebug) echo "Done\n";
2319
		return '';
2320
	}
2321
	public static function update_ModeS_fam() {
2322
		global $tmp_dir, $globalDebug;
2323
		if ($globalDebug) echo "ModeS from FlightAirMap website : Download...";
2324
		update_db::download('http://data.flightairmap.com/data/modes.tsv.gz',$tmp_dir.'modes.tsv.gz');
2325
		if (file_exists($tmp_dir.'modes.tsv.gz')) {
2326
			if ($globalDebug) echo "Gunzip...";
2327
			update_db::gunzip($tmp_dir.'modes.tsv.gz');
2328
			if ($globalDebug) echo "Add to DB...";
2329
			$error = update_db::modes_fam();
2330
		} else $error = "File ".$tmp_dir.'modes.tsv.gz'." doesn't exist. Download failed.";
2331
		if ($error != '') {
2332
			return $error;
2333
		} elseif ($globalDebug) echo "Done\n";
2334
		return '';
2335
	}
2336
	public static function update_owner_fam() {
2337
		global $tmp_dir, $globalDebug, $globalOwner;
2338
		if ($globalDebug) echo "owner from FlightAirMap website : Download...";
2339
		if ($globalOwner === TRUE) {
2340
			update_db::download('http://data.flightairmap.com/data/owners_all.tsv.gz',$tmp_dir.'owners.tsv.gz');
2341
		} else {
2342
			update_db::download('http://data.flightairmap.com/data/owners.tsv.gz',$tmp_dir.'owners.tsv.gz');
2343
		}
2344
		if (file_exists($tmp_dir.'owners.tsv.gz')) {
2345
			if ($globalDebug) echo "Gunzip...";
2346
			update_db::gunzip($tmp_dir.'owners.tsv.gz');
2347
			if ($globalDebug) echo "Add to DB...";
2348
			$error = update_db::owner_fam();
2349
		} else $error = "File ".$tmp_dir.'owners.tsv.gz'." doesn't exist. Download failed.";
2350
		if ($error != '') {
2351
			return $error;
2352
		} elseif ($globalDebug) echo "Done\n";
2353
		return '';
2354
	}
2355
	public static function update_routes_fam() {
2356
		global $tmp_dir, $globalDebug;
2357
		if ($globalDebug) echo "Routes from FlightAirMap website : Download...";
2358
		update_db::download('http://data.flightairmap.com/data/routes.tsv.gz',$tmp_dir.'routes.tsv.gz');
2359
		if (file_exists($tmp_dir.'routes.tsv.gz')) {
2360
			if ($globalDebug) echo "Gunzip...";
2361
			update_db::gunzip($tmp_dir.'routes.tsv.gz');
2362
			if ($globalDebug) echo "Add to DB...";
2363
			$error = update_db::routes_fam();
2364
		} else $error = "File ".$tmp_dir.'routes.tsv.gz'." doesn't exist. Download failed.";
2365
		if ($error != '') {
2366
			return $error;
2367
		} elseif ($globalDebug) echo "Done\n";
2368
		return '';
2369
	}
2370
	public static function update_marine_identity_fam() {
2371
		global $tmp_dir, $globalDebug;
2372
		update_db::download('http://data.flightairmap.com/data/marine_identity.tsv.gz.md5',$tmp_dir.'marine_identity.tsv.gz.md5');
2373
		if (file_exists($tmp_dir.'marine_identity.tsv.gz.md5')) {
2374
			$marine_identity_md5_file = explode(' ',file_get_contents($tmp_dir.'marine_identity.tsv.gz.md5'));
2375
			$marine_identity_md5 = $marine_identity_md5_file[0];
2376
			if (!update_db::check_marine_identity_version($marine_identity_md5)) {
2377
				if ($globalDebug) echo "Marine identity from FlightAirMap website : Download...";
2378
				update_db::download('http://data.flightairmap.com/data/marine_identity.tsv.gz',$tmp_dir.'marine_identity.tsv.gz');
2379
				if (file_exists($tmp_dir.'marine_identity.tsv.gz')) {
2380
					if ($globalDebug) echo "Gunzip...";
2381
					update_db::gunzip($tmp_dir.'marine_identity.tsv.gz');
2382
					if ($globalDebug) echo "Add to DB...";
2383
					$error = update_db::marine_identity_fam();
2384
				} else $error = "File ".$tmp_dir.'marine_identity.tsv.gz'." doesn't exist. Download failed.";
2385
				if ($error != '') {
2386
					return $error;
2387
				} elseif ($globalDebug) {
2388
					update_db::insert_marine_identity_version($marine_identity_md5);
2389
					echo "Done\n";
2390
				}
2391
			}
2392
		}
2393
		return '';
2394
	}
2395
2396
	public static function update_satellite_fam() {
2397
		global $tmp_dir, $globalDebug;
2398
		update_db::download('http://data.flightairmap.com/data/satellite.tsv.gz.md5',$tmp_dir.'satellite.tsv.gz.md5');
2399
		if (file_exists($tmp_dir.'satellite.tsv.gz.md5')) {
2400
			$satellite_md5_file = explode(' ',file_get_contents($tmp_dir.'satellite.tsv.gz.md5'));
2401
			$satellite_md5 = $satellite_md5_file[0];
2402
			if (!update_db::check_satellite_version($satellite_md5)) {
2403
				if ($globalDebug) echo "Satellite from FlightAirMap website : Download...";
2404
				update_db::download('http://data.flightairmap.com/data/satellite.tsv.gz',$tmp_dir.'satellite.tsv.gz');
2405
				if (file_exists($tmp_dir.'satellite.tsv.gz')) {
2406
					if ($globalDebug) echo "Gunzip...";
2407
					update_db::gunzip($tmp_dir.'satellite.tsv.gz');
2408
					if ($globalDebug) echo "Add to DB...";
2409
					$error = update_db::satellite_fam();
2410
				} else $error = "File ".$tmp_dir.'satellite.tsv.gz'." doesn't exist. Download failed.";
2411
				if ($error != '') {
2412
					return $error;
2413
				} elseif ($globalDebug) {
2414
					update_db::insert_satellite_version($satellite_md5);
2415
					echo "Done\n";
2416
				}
2417
			}
2418
		}
2419
		return '';
2420
	}
2421
	public static function update_banned_fam() {
2422
		global $tmp_dir, $globalDebug;
2423
		if ($globalDebug) echo "Banned airlines in Europe from FlightAirMap website : Download...";
2424
		update_db::download('http://data.flightairmap.com/data/ban-eu.csv',$tmp_dir.'ban_eu.csv');
2425
		if (file_exists($tmp_dir.'ban_eu.csv')) {
2426
			//if ($globalDebug) echo "Gunzip...";
2427
			//update_db::gunzip($tmp_dir.'ban_ue.csv');
2428
			if ($globalDebug) echo "Add to DB...";
2429
			$error = update_db::banned_fam();
2430
		} else $error = "File ".$tmp_dir.'ban_eu.csv'." doesn't exist. Download failed.";
2431
		if ($error != '') {
2432
			return $error;
2433
		} elseif ($globalDebug) echo "Done\n";
2434
		return '';
2435
	}
2436
2437
	public static function update_airspace_fam() {
2438
		global $tmp_dir, $globalDebug, $globalDBdriver;
2439
		include_once('class.create_db.php');
2440
		$error = '';
2441
		if ($globalDebug) echo "Airspace from FlightAirMap website : Download...";
2442
		if ($globalDBdriver == 'mysql') {
2443
			update_db::download('http://data.flightairmap.com/data/airspace_mysql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2444
		} else {
2445
			update_db::download('http://data.flightairmap.com/data/airspace_pgsql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2446
		}
2447
		if (file_exists($tmp_dir.'airspace.sql.gz.md5')) {
2448
			$airspace_md5_file = explode(' ',file_get_contents($tmp_dir.'airspace.sql.gz.md5'));
2449
			$airspace_md5 = $airspace_md5_file[0];
2450
			if (!update_db::check_airspace_version($airspace_md5)) {
2451
				if ($globalDBdriver == 'mysql') {
2452
					update_db::download('http://data.flightairmap.com/data/airspace_mysql.sql.gz',$tmp_dir.'airspace.sql.gz');
2453
				} else {
2454
					update_db::download('http://data.flightairmap.com/data/airspace_pgsql.sql.gz',$tmp_dir.'airspace.sql.gz');
2455
				}
2456
				if (file_exists($tmp_dir.'airspace.sql.gz')) {
2457
					if ($globalDebug) echo "Gunzip...";
2458
					update_db::gunzip($tmp_dir.'airspace.sql.gz');
2459
					if ($globalDebug) echo "Add to DB...";
2460
					$Connection = new Connection();
2461
					if ($Connection->tableExists('airspace')) {
2462
						$query = 'DROP TABLE airspace';
2463
						try {
2464
							$sth = $Connection->db->prepare($query);
2465
    	    	    					$sth->execute();
2466
			            		} catch(PDOException $e) {
2467
							return "error : ".$e->getMessage();
2468
		            			}
2469
		    			}
2470
					$error = create_db::import_file($tmp_dir.'airspace.sql');
2471
					update_db::insert_airspace_version($airspace_md5);
2472
				} else $error = "File ".$tmp_dir.'airspace.sql.gz'." doesn't exist. Download failed.";
2473
			}
2474
		} else $error = "File ".$tmp_dir.'airspace.sql.gz.md5'." doesn't exist. Download failed.";
2475
		if ($error != '') {
2476
			return $error;
2477
		} elseif ($globalDebug) echo "Done\n";
2478
		return '';
2479
	}
2480
2481
	public static function update_geoid_fam() {
2482
		global $tmp_dir, $globalDebug, $globalGeoidSource;
2483
		$error = '';
2484
		if ($globalDebug) echo "Geoid from FlightAirMap website : Download...";
2485
		update_db::download('http://data.flightairmap.com/data/geoid/'.$globalGeoidSource.'.pgm.gz.md5',$tmp_dir.$globalGeoidSource.'.pgm.gz.md5');
2486
		if (file_exists($tmp_dir.$globalGeoidSource.'.pgm.gz.md5')) {
2487
			$geoid_md5_file = explode(' ',file_get_contents($tmp_dir.$globalGeoidSource.'.pgm.gz.md5'));
2488
			$geoid_md5 = $geoid_md5_file[0];
2489
			if (!update_db::check_geoid_version($geoid_md5)) {
2490
				update_db::download('http://data.flightairmap.com/data/geoid/'.$globalGeoidSource.'.pgm.gz',$tmp_dir.$globalGeoidSource.'.pgm.gz');
2491
				if (file_exists($tmp_dir.$globalGeoidSource.'.pgm.gz')) {
2492
					if ($globalDebug) echo "Gunzip...";
2493
					update_db::gunzip($tmp_dir.$globalGeoidSource.'.pgm.gz',dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm');
2494
					if (file_exists(dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm')) {
2495
						update_db::insert_geoid_version($geoid_md5);
2496
					}
2497
				} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz'." doesn't exist. Download failed.";
2498
			}
2499
		} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz.md5'." doesn't exist. Download failed.";
2500
		if ($error != '') {
2501
			return $error;
2502
		} elseif ($globalDebug) echo "Done\n";
2503
		return '';
2504
	}
2505
2506
	public static function update_tle() {
2507
		global $tmp_dir, $globalDebug;
2508
		if ($globalDebug) echo "Download TLE : Download...";
2509
		$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',
2510
		'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',
2511
		'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');
2512
		foreach ($alltle as $filename) {
2513
			if ($globalDebug) echo "downloading ".$filename.'...';
2514
			update_db::download('http://celestrak.com/NORAD/elements/'.$filename,$tmp_dir.$filename);
2515
			if (file_exists($tmp_dir.$filename)) {
2516
				if ($globalDebug) echo "Add to DB ".$filename."...";
2517
				$error = update_db::tle($tmp_dir.$filename,str_replace('.txt','',$filename));
2518
			} else $error = "File ".$tmp_dir.$filename." doesn't exist. Download failed.";
2519
			if ($error != '') {
2520
				echo $error."\n";
2521
			} elseif ($globalDebug) echo "Done\n";
2522
		}
2523
		return '';
2524
	}
2525
2526
	public static function update_ucsdb() {
2527
		global $tmp_dir, $globalDebug;
2528
		if ($globalDebug) echo "Download UCS DB : Download...";
2529
		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');
2530
		if (file_exists($tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt')) {
2531
			if ($globalDebug) echo "Add to DB...";
2532
			$error = update_db::satellite_ucsdb($tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt');
2533
		} else $error = "File ".$tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt'." doesn't exist. Download failed.";
2534
		if ($error != '') {
2535
			echo $error."\n";
2536
		} elseif ($globalDebug) echo "Done\n";
2537
		return '';
2538
	}
2539
2540
	public static function update_celestrak() {
2541
		global $tmp_dir, $globalDebug;
2542
		if ($globalDebug) echo "Download Celestrak DB : Download...";
2543
		update_db::download('http://celestrak.com/pub/satcat.txt',$tmp_dir.'satcat.txt');
2544
		if (file_exists($tmp_dir.'satcat.txt')) {
2545
			if ($globalDebug) echo "Add to DB...";
2546
			$error = update_db::satellite_celestrak($tmp_dir.'satcat.txt');
2547
		} else $error = "File ".$tmp_dir.'satcat.txt'." doesn't exist. Download failed.";
2548
		if ($error != '') {
2549
			echo $error."\n";
2550
		} elseif ($globalDebug) echo "Done\n";
2551
		return '';
2552
	}
2553
2554
	public static function update_models() {
2555
		global $tmp_dir, $globalDebug;
2556
		$error = '';
2557
		if ($globalDebug) echo "Models from FlightAirMap website : Download...";
2558
		update_db::download('http://data.flightairmap.com/data/models/models.md5sum',$tmp_dir.'models.md5sum');
2559
		if (file_exists($tmp_dir.'models.md5sum')) {
2560
			if ($globalDebug) echo "Check files...\n";
2561
			$newmodelsdb = array();
2562
			if (($handle = fopen($tmp_dir.'models.md5sum','r')) !== FALSE) {
2563
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2564
					$model = trim($row[2]);
2565
					$newmodelsdb[$model] = trim($row[0]);
2566
				}
2567
			}
2568
			$modelsdb = array();
2569
			if (file_exists(dirname(__FILE__).'/../models/models.md5sum')) {
2570
				if (($handle = fopen(dirname(__FILE__).'/../models/models.md5sum','r')) !== FALSE) {
2571
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2572
						$model = trim($row[2]);
2573
						$modelsdb[$model] = trim($row[0]);
2574
					}
2575
				}
2576
			}
2577
			$diff = array_diff($newmodelsdb,$modelsdb);
2578
			foreach ($diff as $key => $value) {
2579
				if ($globalDebug) echo 'Downloading model '.$key.' ...'."\n";
2580
				update_db::download('http://data.flightairmap.com/data/models/'.$key,dirname(__FILE__).'/../models/'.$key);
2581
				
2582
			}
2583
			update_db::download('http://data.flightairmap.com/data/models/models.md5sum',dirname(__FILE__).'/../models/models.md5sum');
2584
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2585
		if ($error != '') {
2586
			return $error;
2587
		} elseif ($globalDebug) echo "Done\n";
2588
		return '';
2589
	}
2590
2591
	public static function update_space_models() {
2592
		global $tmp_dir, $globalDebug;
2593
		$error = '';
2594
		if ($globalDebug) echo "Space models from FlightAirMap website : Download...";
2595
		update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',$tmp_dir.'space_models.md5sum');
2596
		if (file_exists($tmp_dir.'space_models.md5sum')) {
2597
			if ($globalDebug) echo "Check files...\n";
2598
			$newmodelsdb = array();
2599
			if (($handle = fopen($tmp_dir.'space_models.md5sum','r')) !== FALSE) {
2600
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2601
					$model = trim($row[2]);
2602
					$newmodelsdb[$model] = trim($row[0]);
2603
				}
2604
			}
2605
			$modelsdb = array();
2606
			if (file_exists(dirname(__FILE__).'/../models/space/space_models.md5sum')) {
2607
				if (($handle = fopen(dirname(__FILE__).'/../models/space/space_models.md5sum','r')) !== FALSE) {
2608
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2609
						$model = trim($row[2]);
2610
						$modelsdb[$model] = trim($row[0]);
2611
					}
2612
				}
2613
			}
2614
			$diff = array_diff($newmodelsdb,$modelsdb);
2615
			foreach ($diff as $key => $value) {
2616
				if ($globalDebug) echo 'Downloading space model '.$key.' ...'."\n";
2617
				update_db::download('http://data.flightairmap.com/data/models/space/'.$key,dirname(__FILE__).'/../models/space/'.$key);
2618
				
2619
			}
2620
			update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',dirname(__FILE__).'/../models/space/space_models.md5sum');
2621
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2622
		if ($error != '') {
2623
			return $error;
2624
		} elseif ($globalDebug) echo "Done\n";
2625
		return '';
2626
	}
2627
2628
	public static function update_vehicules_models() {
2629
		global $tmp_dir, $globalDebug;
2630
		$error = '';
2631
		if ($globalDebug) echo "Vehicules models from FlightAirMap website : Download...";
2632
		update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',$tmp_dir.'vehicules_models.md5sum');
2633
		if (file_exists($tmp_dir.'vehicules_models.md5sum')) {
2634
			if ($globalDebug) echo "Check files...\n";
2635
			$newmodelsdb = array();
2636
			if (($handle = fopen($tmp_dir.'vehicules_models.md5sum','r')) !== FALSE) {
2637
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2638
					$model = trim($row[2]);
2639
					$newmodelsdb[$model] = trim($row[0]);
2640
				}
2641
			}
2642
			$modelsdb = array();
2643
			if (file_exists(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum')) {
2644
				if (($handle = fopen(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum','r')) !== FALSE) {
2645
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2646
						$model = trim($row[2]);
2647
						$modelsdb[$model] = trim($row[0]);
2648
					}
2649
				}
2650
			}
2651
			$diff = array_diff($newmodelsdb,$modelsdb);
2652
			foreach ($diff as $key => $value) {
2653
				if ($globalDebug) echo 'Downloading vehicules model '.$key.' ...'."\n";
2654
				update_db::download('http://data.flightairmap.com/data/models/vehicules/'.$key,dirname(__FILE__).'/../models/vehicules/'.$key);
2655
				
2656
			}
2657
			update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum');
2658
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2659
		if ($error != '') {
2660
			return $error;
2661
		} elseif ($globalDebug) echo "Done\n";
2662
		return '';
2663
	}
2664
2665
	public static function update_aircraft() {
2666
		global $tmp_dir, $globalDebug;
2667
		date_default_timezone_set('UTC');
2668
		//$error = '';
2669
		/*
2670
		if ($globalDebug) echo "Aircrafts : Download...";
2671
		$data_req_array = array('Mnfctrer' => '','Model' => '','Dscrptn'=> '','EngCount' =>'' ,'EngType'=> '','TDesig' => '*','WTC' => '','Button' => 'Search');
2672
		$data_req = 'Mnfctrer=Airbus&Model=&Dscrptn=&EngCount=&EngType=&TDesig=&WTC=&Button=Search';
2673
		//$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);
2674
		$data = Common::getData('http://cfapp.icao.int/Doc8643/8643_List1.cfm','post',$data_req_array,'','','http://cfapp.icao.int/Doc8643/search.cfm',30);
2675
//		echo strlen($data_req);
2676
		echo $data;
2677
		*/
2678
		if (file_exists($tmp_dir.'aircrafts.html')) {
2679
		    //var_dump(file_get_html($tmp_dir.'aircrafts.html'));
2680
		    $fh = fopen($tmp_dir.'aircrafts.html',"r");
2681
		    $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...
2682
		    //echo $result;
2683
		    //var_dump(str_get_html($result));
2684
		    //print_r(self::table2array($result));
2685
		}
2686
2687
	}
2688
	
2689
	public static function update_notam() {
2690
		global $tmp_dir, $globalDebug, $globalNOTAMSource;
2691
		require(dirname(__FILE__).'/../require/class.NOTAM.php');
2692
		$Common = new Common();
2693
		date_default_timezone_set('UTC');
2694
		$query = 'TRUNCATE TABLE notam';
2695
		try {
2696
			$Connection = new Connection();
2697
			$sth = $Connection->db->prepare($query);
2698
                        $sth->execute();
2699
                } catch(PDOException $e) {
2700
                        return "error : ".$e->getMessage();
2701
                }
2702
2703
		$error = '';
2704
		if ($globalDebug) echo "Notam : Download...";
2705
		update_db::download($globalNOTAMSource,$tmp_dir.'notam.rss');
2706
		if (file_exists($tmp_dir.'notam.rss')) {
2707
			$notams = json_decode(json_encode(simplexml_load_file($tmp_dir.'notam.rss')),true);
2708
			foreach ($notams['channel']['item'] as $notam) {
2709
				$title = explode(':',$notam['title']);
2710
				$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...
2711
				unset($title[0]);
2712
				$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...
2713
				$description = strip_tags($notam['description'],'<pre>');
2714
				preg_match(':^(.*?)<pre>:',$description,$match);
2715
				$q = explode('/',$match[1]);
2716
				$data['fir'] = $q[0];
2717
				$data['code'] = $q[1];
2718
				$ifrvfr = $q[2];
2719
				if ($ifrvfr == 'IV') $data['rules'] = 'IFR/VFR';
2720
				if ($ifrvfr == 'I') $data['rules'] = 'IFR';
2721
				if ($ifrvfr == 'V') $data['rules'] = 'VFR';
2722
				if ($q[4] == 'A') $data['scope'] = 'Airport warning';
2723
				if ($q[4] == 'E') $data['scope'] = 'Enroute warning';
2724
				if ($q[4] == 'W') $data['scope'] = 'Navigation warning';
2725
				if ($q[4] == 'AE') $data['scope'] = 'Airport/Enroute warning';
2726
				if ($q[4] == 'AW') $data['scope'] = 'Airport/Navigation warning';
2727
				//$data['scope'] = $q[4];
2728
				$data['lower_limit'] = $q[5];
2729
				$data['upper_limit'] = $q[6];
2730
				$latlonrad = $q[7];
2731
				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...
2732
				$latitude = $Common->convertDec($las,'latitude');
2733
				$longitude = $Common->convertDec($lns,'longitude');
2734
				if ($lac == 'S') $latitude = '-'.$latitude;
2735
				if ($lnc == 'W') $longitude = '-'.$longitude;
2736
				$data['center_latitude'] = $latitude;
2737
				$data['center_longitude'] = $longitude;
2738
				$data['radius'] = intval($radius);
2739
				
2740
				preg_match(':<pre>(.*?)</pre>:',$description,$match);
2741
				$data['text'] = $match[1];
2742
				preg_match(':</pre>(.*?)$:',$description,$match);
2743
				$fromto = $match[1];
2744
				preg_match('#FROM:(.*?)TO:#',$fromto,$match);
2745
				$fromall = trim($match[1]);
2746
				preg_match('#^(.*?) \((.*?)\)$#',$fromall,$match);
2747
				$from = trim($match[1]);
2748
				$data['date_begin'] = date("Y-m-d H:i:s",strtotime($from));
2749
				preg_match('#TO:(.*?)$#',$fromto,$match);
2750
				$toall = trim($match[1]);
2751
				if (!preg_match(':Permanent:',$toall)) {
2752
					preg_match('#^(.*?) \((.*?)\)#',$toall,$match);
2753
					$to = trim($match[1]);
2754
					$data['date_end'] = date("Y-m-d H:i:s",strtotime($to));
2755
					$data['permanent'] = 0;
2756
				} else {
2757
				    $data['date_end'] = NULL;
2758
				    $data['permanent'] = 1;
2759
				}
2760
				$data['full_notam'] = $notam['title'].'<br>'.$notam['description'];
2761
				$NOTAM = new NOTAM();
2762
				$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']);
2763
				unset($data);
2764
			} 
2765
		} else $error = "File ".$tmp_dir.'notam.rss'." doesn't exist. Download failed.";
2766
		if ($error != '') {
2767
			return $error;
2768
		} elseif ($globalDebug) echo "Done\n";
2769
		return '';
2770
	}
2771
	
2772
	public static function create_airspace() {
2773
		global $globalDBdriver, $globalDebug, $tmp_dir, $globalDBhost, $globalDBuser, $globalDBname, $globalDBpass, $globalDBport;
2774
		$Connection = new Connection();
2775
		if ($Connection->tableExists('airspace')) {
2776
			if ($globalDBdriver == 'mysql') {
2777
				$query = 'DROP TABLE geometry_columns; DROP TABLE spatial_ref_sys;DROP TABLE airspace;';
2778
			} else {
2779
				$query = 'DROP TABLE airspace';
2780
			}
2781
			try {
2782
				$Connection = new Connection();
2783
				$sth = $Connection->db->prepare($query);
2784
				$sth->execute();
2785
			} catch(PDOException $e) {
2786
				return "error : ".$e->getMessage();
2787
			}
2788
		}
2789
		$Common = new Common();
2790
		$airspace_lst = $Common->getData('https://raw.githubusercontent.com/XCSoar/xcsoar-data-repository/master/data/airspace.json');
2791
		$airspace_json = json_decode($airspace_lst,true);
2792
		foreach ($airspace_json['records'] as $airspace) {
2793
			if ($globalDebug) echo $airspace['name']."...\n";
2794
			update_db::download($airspace['uri'],$tmp_dir.$airspace['name']);
2795
			if (file_exists($tmp_dir.$airspace['name'])) {
2796
				file_put_contents($tmp_dir.$airspace['name'], utf8_encode(file_get_contents($tmp_dir.$airspace['name'])));
2797
				//system('recode l9..utf8 '.$tmp_dir.$airspace['name']);
2798
				if ($globalDBdriver == 'mysql') {
2799
					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'].'"');
2800
				} else {
2801
					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'].'"');
2802
				}
2803
			}
2804
		}
2805
	}
2806
	
2807
	public static function fix_icaotype() {
2808
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
2809
		$Spotter = new Spotter();
2810
		foreach ($Spotter->aircraft_correct_icaotype as $old => $new) {
2811
			$query = 'UPDATE aircraft_modes SET ICAOTypeCode = :new WHERE ICAOTypeCode = :old';
2812
			try {
2813
				$Connection = new Connection();
2814
				$sth = $Connection->db->prepare($query);
2815
				$sth->execute(array(':new' => $new, ':old' => $old));
2816
			} catch(PDOException $e) {
2817
				return "error : ".$e->getMessage();
2818
			}
2819
		}
2820
	}
2821
2822
	public static function check_last_update() {
2823
		global $globalDBdriver;
2824
		if ($globalDBdriver == 'mysql') {
2825
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
2826
		} else {
2827
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
2828
		}
2829
		try {
2830
			$Connection = new Connection();
2831
			$sth = $Connection->db->prepare($query);
2832
                        $sth->execute();
2833
                } catch(PDOException $e) {
2834
                        return "error : ".$e->getMessage();
2835
                }
2836
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2837
                if ($row['nb'] > 0) return false;
2838
                else return true;
2839
	}
2840
2841
	public static function insert_last_update() {
2842
		$query = "DELETE FROM config WHERE name = 'last_update_db';
2843
			INSERT INTO config (name,value) VALUES ('last_update_db',NOW());";
2844
		try {
2845
			$Connection = new Connection();
2846
			$sth = $Connection->db->prepare($query);
2847
                        $sth->execute();
2848
                } catch(PDOException $e) {
2849
                        return "error : ".$e->getMessage();
2850
                }
2851
	}
2852
2853
	public static function check_airspace_version($version) {
2854
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'airspace_version' AND value = :version";
2855
		try {
2856
			$Connection = new Connection();
2857
			$sth = $Connection->db->prepare($query);
2858
                        $sth->execute(array(':version' => $version));
2859
                } catch(PDOException $e) {
2860
                        return "error : ".$e->getMessage();
2861
                }
2862
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2863
                if ($row['nb'] > 0) return true;
2864
                else return false;
2865
	}
2866
2867
	public static function check_geoid_version($version) {
2868
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'geoid_version' AND value = :version";
2869
		try {
2870
			$Connection = new Connection();
2871
			$sth = $Connection->db->prepare($query);
2872
                        $sth->execute(array(':version' => $version));
2873
                } catch(PDOException $e) {
2874
                        return "error : ".$e->getMessage();
2875
                }
2876
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2877
                if ($row['nb'] > 0) return true;
2878
                else return false;
2879
	}
2880
2881
	public static function check_marine_identity_version($version) {
2882
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'marine_identity_version' AND value = :version";
2883
		try {
2884
			$Connection = new Connection();
2885
			$sth = $Connection->db->prepare($query);
2886
			$sth->execute(array(':version' => $version));
2887
		} catch(PDOException $e) {
2888
			return "error : ".$e->getMessage();
2889
		}
2890
		$row = $sth->fetch(PDO::FETCH_ASSOC);
2891
		if ($row['nb'] > 0) return true;
2892
		else return false;
2893
	}
2894
2895
	public static function check_satellite_version($version) {
2896
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'satellite_version' AND value = :version";
2897
		try {
2898
			$Connection = new Connection();
2899
			$sth = $Connection->db->prepare($query);
2900
			$sth->execute(array(':version' => $version));
2901
		} catch(PDOException $e) {
2902
			return "error : ".$e->getMessage();
2903
		}
2904
		$row = $sth->fetch(PDO::FETCH_ASSOC);
2905
		if ($row['nb'] > 0) return true;
2906
		else return false;
2907
	}
2908
2909
2910
	public static function insert_airspace_version($version) {
2911
		$query = "DELETE FROM config WHERE name = 'airspace_version';
2912
			INSERT INTO config (name,value) VALUES ('airspace_version',:version);";
2913
		try {
2914
			$Connection = new Connection();
2915
			$sth = $Connection->db->prepare($query);
2916
			$sth->execute(array(':version' => $version));
2917
		} catch(PDOException $e) {
2918
			return "error : ".$e->getMessage();
2919
		}
2920
	}
2921
	
2922
	public static function insert_geoid_version($version) {
2923
		$query = "DELETE FROM config WHERE name = 'geoid_version';
2924
			INSERT INTO config (name,value) VALUES ('geoid_version',:version);";
2925
		try {
2926
			$Connection = new Connection();
2927
			$sth = $Connection->db->prepare($query);
2928
                        $sth->execute(array(':version' => $version));
2929
                } catch(PDOException $e) {
2930
                        return "error : ".$e->getMessage();
2931
                }
2932
	}
2933
2934
	public static function insert_marine_identity_version($version) {
2935
		$query = "DELETE FROM config WHERE name = 'marine_identity_version';
2936
			INSERT INTO config (name,value) VALUES ('marine_identity_version',:version);";
2937
		try {
2938
			$Connection = new Connection();
2939
			$sth = $Connection->db->prepare($query);
2940
			$sth->execute(array(':version' => $version));
2941
		} catch(PDOException $e) {
2942
			return "error : ".$e->getMessage();
2943
		}
2944
	}
2945
2946
	public static function insert_satellite_version($version) {
2947
		$query = "DELETE FROM config WHERE name = 'satellite_version';
2948
			INSERT INTO config (name,value) VALUES ('satellite_version',:version);";
2949
		try {
2950
			$Connection = new Connection();
2951
			$sth = $Connection->db->prepare($query);
2952
			$sth->execute(array(':version' => $version));
2953
		} catch(PDOException $e) {
2954
			return "error : ".$e->getMessage();
2955
		}
2956
	}
2957
2958
	public static function check_last_notam_update() {
2959
		global $globalDBdriver;
2960
		if ($globalDBdriver == 'mysql') {
2961
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
2962
		} else {
2963
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
2964
		}
2965
		try {
2966
			$Connection = new Connection();
2967
			$sth = $Connection->db->prepare($query);
2968
                        $sth->execute();
2969
                } catch(PDOException $e) {
2970
                        return "error : ".$e->getMessage();
2971
                }
2972
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2973
                if ($row['nb'] > 0) return false;
2974
                else return true;
2975
	}
2976
2977
	public static function insert_last_notam_update() {
2978
		$query = "DELETE FROM config WHERE name = 'last_update_notam_db';
2979
			INSERT INTO config (name,value) VALUES ('last_update_notam_db',NOW());";
2980
		try {
2981
			$Connection = new Connection();
2982
			$sth = $Connection->db->prepare($query);
2983
                        $sth->execute();
2984
                } catch(PDOException $e) {
2985
                        return "error : ".$e->getMessage();
2986
                }
2987
	}
2988
2989
	public static function check_last_airspace_update() {
2990
		global $globalDBdriver;
2991
		if ($globalDBdriver == 'mysql') {
2992
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
2993
		} else {
2994
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
2995
		}
2996
		try {
2997
			$Connection = new Connection();
2998
			$sth = $Connection->db->prepare($query);
2999
                        $sth->execute();
3000
                } catch(PDOException $e) {
3001
                        return "error : ".$e->getMessage();
3002
                }
3003
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3004
                if ($row['nb'] > 0) return false;
3005
                else return true;
3006
	}
3007
3008
	public static function insert_last_airspace_update() {
3009
		$query = "DELETE FROM config WHERE name = 'last_update_airspace_db';
3010
			INSERT INTO config (name,value) VALUES ('last_update_airspace_db',NOW());";
3011
		try {
3012
			$Connection = new Connection();
3013
			$sth = $Connection->db->prepare($query);
3014
                        $sth->execute();
3015
                } catch(PDOException $e) {
3016
                        return "error : ".$e->getMessage();
3017
                }
3018
	}
3019
3020
	public static function check_last_geoid_update() {
3021
		global $globalDBdriver;
3022
		if ($globalDBdriver == 'mysql') {
3023
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3024
		} else {
3025
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3026
		}
3027
		try {
3028
			$Connection = new Connection();
3029
			$sth = $Connection->db->prepare($query);
3030
                        $sth->execute();
3031
                } catch(PDOException $e) {
3032
                        return "error : ".$e->getMessage();
3033
                }
3034
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3035
                if ($row['nb'] > 0) return false;
3036
                else return true;
3037
	}
3038
3039
	public static function insert_last_geoid_update() {
3040
		$query = "DELETE FROM config WHERE name = 'last_update_geoid';
3041
			INSERT INTO config (name,value) VALUES ('last_update_geoid',NOW());";
3042
		try {
3043
			$Connection = new Connection();
3044
			$sth = $Connection->db->prepare($query);
3045
                        $sth->execute();
3046
                } catch(PDOException $e) {
3047
                        return "error : ".$e->getMessage();
3048
                }
3049
	}
3050
3051
	public static function check_last_owner_update() {
3052
		global $globalDBdriver;
3053
		if ($globalDBdriver == 'mysql') {
3054
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3055
		} else {
3056
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3057
		}
3058
		try {
3059
			$Connection = new Connection();
3060
			$sth = $Connection->db->prepare($query);
3061
                        $sth->execute();
3062
                } catch(PDOException $e) {
3063
                        return "error : ".$e->getMessage();
3064
                }
3065
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3066
                if ($row['nb'] > 0) return false;
3067
                else return true;
3068
	}
3069
3070
	public static function insert_last_owner_update() {
3071
		$query = "DELETE FROM config WHERE name = 'last_update_owner_db';
3072
			INSERT INTO config (name,value) VALUES ('last_update_owner_db',NOW());";
3073
		try {
3074
			$Connection = new Connection();
3075
			$sth = $Connection->db->prepare($query);
3076
                        $sth->execute();
3077
                } catch(PDOException $e) {
3078
                        return "error : ".$e->getMessage();
3079
                }
3080
	}
3081
	public static function check_last_schedules_update() {
3082
		global $globalDBdriver;
3083
		if ($globalDBdriver == 'mysql') {
3084
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3085
		} else {
3086
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3087
		}
3088
		try {
3089
			$Connection = new Connection();
3090
			$sth = $Connection->db->prepare($query);
3091
                        $sth->execute();
3092
                } catch(PDOException $e) {
3093
                        return "error : ".$e->getMessage();
3094
                }
3095
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3096
                if ($row['nb'] > 0) return false;
3097
                else return true;
3098
	}
3099
3100
	public static function insert_last_schedules_update() {
3101
		$query = "DELETE FROM config WHERE name = 'last_update_schedules';
3102
			INSERT INTO config (name,value) VALUES ('last_update_schedules',NOW());";
3103
		try {
3104
			$Connection = new Connection();
3105
			$sth = $Connection->db->prepare($query);
3106
			$sth->execute();
3107
		} catch(PDOException $e) {
3108
			return "error : ".$e->getMessage();
3109
		}
3110
	}
3111
3112
	public static function check_last_tle_update() {
3113
		global $globalDBdriver;
3114
		if ($globalDBdriver == 'mysql') {
3115
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3116
		} else {
3117
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3118
		}
3119
		try {
3120
			$Connection = new Connection();
3121
			$sth = $Connection->db->prepare($query);
3122
			$sth->execute();
3123
		} catch(PDOException $e) {
3124
			return "error : ".$e->getMessage();
3125
		}
3126
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3127
		if ($row['nb'] > 0) return false;
3128
		else return true;
3129
	}
3130
3131
	public static function insert_last_tle_update() {
3132
		$query = "DELETE FROM config WHERE name = 'last_update_tle';
3133
			INSERT INTO config (name,value) VALUES ('last_update_tle',NOW());";
3134
		try {
3135
			$Connection = new Connection();
3136
			$sth = $Connection->db->prepare($query);
3137
			$sth->execute();
3138
		} catch(PDOException $e) {
3139
			return "error : ".$e->getMessage();
3140
		}
3141
	}
3142
3143
	public static function check_last_ucsdb_update() {
3144
		global $globalDBdriver;
3145
		if ($globalDBdriver == 'mysql') {
3146
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value > DATE_SUB(NOW(), INTERVAL 1 MONTH)";
3147
		} else {
3148
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 MONTH'";
3149
		}
3150
		try {
3151
			$Connection = new Connection();
3152
			$sth = $Connection->db->prepare($query);
3153
			$sth->execute();
3154
		} catch(PDOException $e) {
3155
			return "error : ".$e->getMessage();
3156
		}
3157
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3158
		if ($row['nb'] > 0) return false;
3159
		else return true;
3160
	}
3161
3162
	public static function insert_last_ucsdb_update() {
3163
		$query = "DELETE FROM config WHERE name = 'last_update_ucsdb';
3164
			INSERT INTO config (name,value) VALUES ('last_update_ucsdb',NOW());";
3165
		try {
3166
			$Connection = new Connection();
3167
			$sth = $Connection->db->prepare($query);
3168
			$sth->execute();
3169
		} catch(PDOException $e) {
3170
			return "error : ".$e->getMessage();
3171
		}
3172
	}
3173
3174
	public static function check_last_celestrak_update() {
3175
		global $globalDBdriver;
3176
		if ($globalDBdriver == 'mysql') {
3177
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3178
		} else {
3179
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3180
		}
3181
		try {
3182
			$Connection = new Connection();
3183
			$sth = $Connection->db->prepare($query);
3184
			$sth->execute();
3185
		} catch(PDOException $e) {
3186
			return "error : ".$e->getMessage();
3187
		}
3188
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3189
		if ($row['nb'] > 0) return false;
3190
		else return true;
3191
	}
3192
3193
	public static function insert_last_celestrak_update() {
3194
		$query = "DELETE FROM config WHERE name = 'last_update_celestrak';
3195
			INSERT INTO config (name,value) VALUES ('last_update_celestrak',NOW());";
3196
		try {
3197
			$Connection = new Connection();
3198
			$sth = $Connection->db->prepare($query);
3199
			$sth->execute();
3200
		} catch(PDOException $e) {
3201
			return "error : ".$e->getMessage();
3202
		}
3203
	}
3204
3205
	public static function check_last_marine_identity_update() {
3206
		global $globalDBdriver;
3207
		if ($globalDBdriver == 'mysql') {
3208
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3209
		} else {
3210
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3211
		}
3212
		try {
3213
			$Connection = new Connection();
3214
			$sth = $Connection->db->prepare($query);
3215
			$sth->execute();
3216
		} catch(PDOException $e) {
3217
			return "error : ".$e->getMessage();
3218
		}
3219
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3220
		if ($row['nb'] > 0) return false;
3221
		else return true;
3222
	}
3223
3224
	public static function check_last_satellite_update() {
3225
		global $globalDBdriver;
3226
		if ($globalDBdriver == 'mysql') {
3227
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
3228
		} else {
3229
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
3230
		}
3231
		try {
3232
			$Connection = new Connection();
3233
			$sth = $Connection->db->prepare($query);
3234
			$sth->execute();
3235
		} catch(PDOException $e) {
3236
			return "error : ".$e->getMessage();
3237
		}
3238
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3239
		if ($row['nb'] > 0) return false;
3240
		else return true;
3241
	}
3242
3243
	public static function insert_last_marine_identity_update() {
3244
		$query = "DELETE FROM config WHERE name = 'last_update_marine_identity';
3245
			INSERT INTO config (name,value) VALUES ('last_update_marine_identity',NOW());";
3246
		try {
3247
			$Connection = new Connection();
3248
			$sth = $Connection->db->prepare($query);
3249
			$sth->execute();
3250
		} catch(PDOException $e) {
3251
			return "error : ".$e->getMessage();
3252
		}
3253
	}
3254
3255
	public static function insert_last_satellite_update() {
3256
		$query = "DELETE FROM config WHERE name = 'last_update_satellite';
3257
			INSERT INTO config (name,value) VALUES ('last_update_satellite',NOW());";
3258
		try {
3259
			$Connection = new Connection();
3260
			$sth = $Connection->db->prepare($query);
3261
			$sth->execute();
3262
		} catch(PDOException $e) {
3263
			return "error : ".$e->getMessage();
3264
		}
3265
	}
3266
3267
	public static function delete_duplicatemodes() {
3268
		global $globalDBdriver;
3269
		if ($globalDBdriver == 'mysql') {
3270
			$query = "DELETE a FROM aircraft_modes a, aircraft_modes b WHERE a.ModeS = b.ModeS AND a.FirstCreated < b.FirstCreated AND a.Source != 'ACARS'";
3271
		} else {
3272
			$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'";
3273
		}
3274
		try {
3275
			$Connection = new Connection();
3276
			$sth = $Connection->db->prepare($query);
3277
                        $sth->execute();
3278
                } catch(PDOException $e) {
3279
                        return "error : ".$e->getMessage();
3280
                }
3281
	}
3282
	public static function delete_duplicateowner() {
3283
		global $globalDBdriver;
3284
		if ($globalDBdriver == 'mysql') {
3285
			$query = "DELETE a FROM aircraft_owner a, aircraft_owner b WHERE a.registration = b.registration AND a.owner_id < b.owner_id";
3286
		} else {
3287
			$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)";
3288
		}
3289
		try {
3290
			$Connection = new Connection();
3291
			$sth = $Connection->db->prepare($query);
3292
                        $sth->execute();
3293
                } catch(PDOException $e) {
3294
                        return "error : ".$e->getMessage();
3295
                }
3296
	}
3297
	
3298
	public static function update_all() {
3299
		global $globalMasterServer, $globalMasterSource;
3300
		if (!isset($globalMasterServer) || !$globalMasterServer) {
3301
			if (isset($globalMasterSource) && $globalMasterSource) {
3302
				echo update_db::update_routes();
3303
				echo update_db::update_translation();
3304
				//echo update_db::update_notam_fam();
3305
				echo update_db::update_ModeS();
3306
				//echo update_db::update_ModeS_flarm();
3307
				echo update_db::update_ModeS_ogn();
3308
				echo update_db::update_ModeS_faa();
3309
				echo update_db::fix_icaotype();
3310
				echo update_db::update_banned_fam();
3311
				//echo update_db::update_celestrak();
3312
				//echo update_db::delete_duplicatemodes();
3313
			} else {
3314
				//echo update_db::update_routes();
3315
				echo update_db::update_routes_fam();
3316
				echo update_db::update_translation();
3317
				echo update_db::update_translation_fam();
3318
				//echo update_db::update_notam_fam();
3319
				//echo update_db::update_ModeS();
3320
				echo update_db::update_ModeS_fam();
3321
				//echo update_db::update_ModeS_flarm();
3322
				echo update_db::update_ModeS_ogn();
3323
				//echo update_db::delete_duplicatemodes();
3324
				echo update_db::update_banned_fam();
3325
			}
3326
		}
3327
	}
3328
}
3329
3330
//echo update_db::update_airports();
3331
//echo update_db::translation();
3332
//echo update_db::update_waypoints();
3333
//echo update_db::update_airspace();
3334
//echo update_db::update_notam();
3335
//echo update_db::update_ivao();
3336
//echo update_db::update_ModeS_flarm();
3337
//echo update_db::update_ModeS_ogn();
3338
//echo update_db::update_aircraft();
3339
//$update_db = new update_db();
3340
//echo update_db::update_owner();
3341
//update_db::update_translation_fam();
3342
//echo update_db::update_routes();
3343
//update_db::update_models();
3344
//echo $update_db::update_skyteam();
3345
//echo $update_db::update_tle();
3346
//echo update_db::update_notam_fam();
3347
//echo update_db::create_airspace();
3348
//echo update_db::update_ModeS();
3349
//echo update_db::update_ModeS_fam();
3350
//echo update_db::update_routes_fam();
3351
//echo update_db::update_ModeS_faa();
3352
//echo update_db::update_banned_fam();
3353
//echo update_db::modes_faa();
3354
//echo update_db::update_owner_fam();
3355
//echo update_db::delete_duplicateowner();
3356
//echo update_db::fix_icaotype();
3357
//echo update_db::satellite_ucsdb('tmp/UCS_Satellite_Database_officialname_1-1-17.txt');
3358
//echo update_db::satellite_celestrak('tmp/satcat.txt');
3359
?>
3360