Completed
Push — master ( 932a16...3c5f23 )
by Yannick
34:57
created

update_db::update_fires()   D

Complexity

Conditions 9
Paths 21

Size

Total Lines 29
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

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

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

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

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

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

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

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

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

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

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

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

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

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

Let’s take a look at an example:

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

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

    // do something with $myArray
}

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

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

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

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

Let’s take a look at an example:

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

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

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

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

Available Fixes

  1. Check for existence of the variable explicitly:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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