Completed
Push — master ( 5e46c3...387cf9 )
by Yannick
47:50 queued 16:30
created

update_db::check_last_update()   A

Complexity

Conditions 4
Paths 10

Size

Total Lines 18
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 15
nc 10
nop 0
dl 0
loc 18
rs 9.2
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();
0 ignored issues
show
Unused Code introduced by
$Connection 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...
1919
		$Source = new Source();
1920
		$Source->deleteLocationByType('fires');
1921
		$i = 0;
1922
		if (($handle = fopen($tmp_dir.'fires.csv','r')) !== false) {
1923
			while (($row = fgetcsv($handle,1000)) !== false) {
1924
				if ($i > 0 && $row[0] != '' && $row[8] != 'low') {
1925
					$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]);
1926
					$Source->addLocation('',$row[0],$row[1],null,'','','fires','fire.png','fires',0,0,$row[5].' '.substr($row[6],0,2).':'.substr($row[6],2,2),json_encode($description));
1927
				}
1928
				$i++;
1929
			}
1930
		}
1931
	}
1932
1933
	public static function ivao_airlines($filename) {
1934
		//require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1935
		global $tmp_dir, $globalTransaction;
1936
		//$query = 'TRUNCATE TABLE airlines';
1937
		$query = "DELETE FROM airlines WHERE forsource = 'ivao'";
1938
		try {
1939
			$Connection = new Connection();
1940
			$sth = $Connection->db->prepare($query);
1941
			$sth->execute();
1942
		} catch(PDOException $e) {
1943
			return "error : ".$e->getMessage();
1944
		}
1945
		$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...
1946
		$delimiter = ':';
1947
		$Connection = new Connection();
1948
		if (($handle = fopen($filename, 'r')) !== FALSE)
1949
		{
1950
			if ($globalTransaction) $Connection->db->beginTransaction();
1951
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1952
			{
1953
				if(count($row) > 1) {
1954
					$query = "INSERT INTO airlines (name,icao,active,forsource) VALUES (:name, :icao, 'Y','ivao')";
1955
					try {
1956
						$sth = $Connection->db->prepare($query);
1957
						$sth->execute(array(':name' => $row[1],':icao' => $row[0]));
1958
					} catch(PDOException $e) {
1959
						return "error : ".$e->getMessage();
1960
					}
1961
				}
1962
			}
1963
			fclose($handle);
1964
			if ($globalTransaction) $Connection->db->commit();
1965
		}
1966
		return '';
1967
        }
1968
	
1969
	public static function update_airspace() {
1970
		global $tmp_dir, $globalDBdriver;
1971
		include_once('class.create_db.php');
1972
		$Connection = new Connection();
1973
		if ($Connection->tableExists('airspace')) {
1974
			$query = 'DROP TABLE airspace';
1975
			try {
1976
				$sth = $Connection->db->prepare($query);
1977
                    		$sth->execute();
1978
	                } catch(PDOException $e) {
1979
				return "error : ".$e->getMessage();
1980
	                }
1981
	        }
1982
1983
1984
		if ($globalDBdriver == 'mysql') update_db::gunzip('../db/airspace.sql.gz',$tmp_dir.'airspace.sql');
1985
		else {
1986
			update_db::gunzip('../db/pgsql/airspace.sql.gz',$tmp_dir.'airspace.sql');
1987
			$query = "CREATE EXTENSION postgis";
1988
			$Connection = new Connection(null,null,$_SESSION['database_root'],$_SESSION['database_rootpass']);
1989
			try {
1990
				$sth = $Connection->db->prepare($query);
1991
				$sth->execute();
1992
			} catch(PDOException $e) {
1993
				return "error : ".$e->getMessage();
1994
			}
1995
		}
1996
		$error = create_db::import_file($tmp_dir.'airspace.sql');
1997
		return $error;
1998
	}
1999
2000
	public static function update_notam_fam() {
2001
		global $tmp_dir, $globalDebug;
2002
		include_once('class.create_db.php');
2003
		require_once(dirname(__FILE__).'/../require/class.NOTAM.php');
2004
		if ($globalDebug) echo "NOTAM from FlightAirMap website : Download...";
2005
		update_db::download('http://data.flightairmap.com/data/notam.txt.gz.md5',$tmp_dir.'notam.txt.gz.md5');
2006
		$error = '';
2007
		if (file_exists($tmp_dir.'notam.txt.gz.md5')) {
2008
			$notam_md5_file = explode(' ',file_get_contents($tmp_dir.'notam.txt.gz.md5'));
2009
			$notam_md5 = $notam_md5_file[0];
2010
			if (!update_db::check_notam_version($notam_md5)) {
2011
				update_db::download('http://data.flightairmap.com/data/notam.txt.gz',$tmp_dir.'notam.txt.gz');
2012
				if (file_exists($tmp_dir.'notam.txt.gz')) {
2013
					if (md5_file($tmp_dir.'notam.txt.gz') == $notam_md5) {
2014
						if ($globalDebug) echo "Gunzip...";
2015
						update_db::gunzip($tmp_dir.'notam.txt.gz');
2016
						if ($globalDebug) echo "Add to DB...";
2017
						//$error = create_db::import_file($tmp_dir.'notam.sql');
2018
						$NOTAM = new NOTAM();
2019
						$NOTAM->updateNOTAMfromTextFile($tmp_dir.'notam.txt');
2020
						update_db::insert_notam_version($notam_md5);
2021
					} else $error = "File ".$tmp_dir.'notam.txt.gz'." md5 failed. Download failed.";
2022
				} else $error = "File ".$tmp_dir.'notam.txt.gz'." doesn't exist. Download failed.";
2023
			} elseif ($globalDebug) echo "No new version.";
2024
		} else $error = "File ".$tmp_dir.'notam.txt.gz.md5'." doesn't exist. Download failed.";
2025
		if ($error != '') {
2026
			return $error;
2027
		} elseif ($globalDebug) echo "Done\n";
2028
		return '';
2029
	}
2030
2031
	public static function update_vatsim() {
2032
		global $tmp_dir;
2033
		include_once('class.create_db.php');
2034
		$error = create_db::import_file('../db/vatsim/airlines.sql');
2035
		return $error;
2036
	}
2037
	
2038
	public static function update_countries() {
2039
		global $tmp_dir, $globalDBdriver;
2040
		include_once('class.create_db.php');
2041
		$Connection = new Connection();
2042
		if ($Connection->tableExists('countries')) {
2043
			$query = 'DROP TABLE countries';
2044
			try {
2045
				$sth = $Connection->db->prepare($query);
2046
            	        	$sth->execute();
2047
	                } catch(PDOException $e) {
2048
    	                	echo "error : ".$e->getMessage();
2049
	                }
2050
		}
2051
		if ($globalDBdriver == 'mysql') {
2052
			update_db::gunzip('../db/countries.sql.gz',$tmp_dir.'countries.sql');
2053
		} else {
2054
			update_db::gunzip('../db/pgsql/countries.sql.gz',$tmp_dir.'countries.sql');
2055
		}
2056
		$error = create_db::import_file($tmp_dir.'countries.sql');
2057
		return $error;
2058
	}
2059
2060
	
2061
	public static function update_waypoints() {
2062
		global $tmp_dir;
2063
//		update_db::download('http://dev.x-plane.com/update/data/AptNav201310XP1000.zip',$tmp_dir.'AptNav.zip');
2064
//		update_db::unzip($tmp_dir.'AptNav.zip');
2065
//		update_db::download('https://gitorious.org/fg/fgdata/raw/e81f8a15424a175a7b715f8f7eb8f4147b802a27:Navaids/awy.dat.gz',$tmp_dir.'awy.dat.gz');
2066
//		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');
2067
		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');
2068
		update_db::gunzip($tmp_dir.'awy.dat.gz');
2069
		$error = update_db::waypoints($tmp_dir.'awy.dat');
2070
		return $error;
2071
	}
2072
2073
	public static function update_ivao() {
2074
		global $tmp_dir, $globalDebug;
2075
		$Common = new Common();
2076
		$error = '';
2077
		//Direct download forbidden
2078
		//if ($globalDebug) echo "IVAO : Download...";
2079
		//update_db::download('http://fr.mirror.ivao.aero/software/ivae_feb2013.zip',$tmp_dir.'ivae_feb2013.zip');
2080
		if (extension_loaded('zip')) {
2081
			if (file_exists($tmp_dir.'ivae_feb2013.zip')) {
2082
				if ($globalDebug) echo "Unzip...";
2083
				update_db::unzip($tmp_dir.'ivae_feb2013.zip');
2084
				if ($globalDebug) echo "Add to DB...";
2085
				update_db::ivao_airlines($tmp_dir.'data/airlines.dat');
2086
				if ($globalDebug) echo "Copy airlines logos to airlines images directory...";
2087
				if (is_writable(dirname(__FILE__).'/../images/airlines')) {
2088
					if (!$Common->xcopy($tmp_dir.'logos/',dirname(__FILE__).'/../images/airlines/')) $error = "Failed to copy airlines logo.";
2089
				} else $error = "The directory ".dirname(__FILE__).'/../images/airlines'." must be writable";
2090
			} else $error = "File ".$tmp_dir.'ivao.zip'." doesn't exist. Download failed.";
2091
		} else $error = "ZIP module not loaded but required for IVAO.";
2092
		if ($error != '') {
2093
			return $error;
2094
		} elseif ($globalDebug) echo "Done\n";
2095
		return '';
2096
	}
2097
2098
	public static function update_routes() {
2099
		global $tmp_dir, $globalDebug;
2100
		$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...
2101
		if ($globalDebug) echo "Routes : Download...";
2102
		update_db::download('http://www.virtualradarserver.co.uk/Files/StandingData.sqb.gz',$tmp_dir.'StandingData.sqb.gz');
2103
		if (file_exists($tmp_dir.'StandingData.sqb.gz')) {
2104
			if ($globalDebug) echo "Gunzip...";
2105
			update_db::gunzip($tmp_dir.'StandingData.sqb.gz');
2106
			if ($globalDebug) echo "Add to DB...";
2107
			$error = update_db::retrieve_route_sqlite_to_dest($tmp_dir.'StandingData.sqb');
2108
		} else $error = "File ".$tmp_dir.'StandingData.sqb.gz'." doesn't exist. Download failed.";
2109
		if ($error != '') {
2110
			return $error;
2111
		} elseif ($globalDebug) echo "Done\n";
2112
		return '';
2113
	}
2114
	public static function update_oneworld() {
2115
		global $tmp_dir, $globalDebug;
2116
		$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...
2117
		if ($globalDebug) echo "Schedules Oneworld : Download...";
2118
		update_db::download('http://data.flightairmap.com/data/schedules/oneworld.csv.gz',$tmp_dir.'oneworld.csv.gz');
2119
		if (file_exists($tmp_dir.'oneworld.csv.gz')) {
2120
			if ($globalDebug) echo "Gunzip...";
2121
			update_db::gunzip($tmp_dir.'oneworld.csv.gz');
2122
			if ($globalDebug) echo "Add to DB...";
2123
			$error = update_db::retrieve_route_oneworld($tmp_dir.'oneworld.csv');
2124
		} else $error = "File ".$tmp_dir.'oneworld.csv.gz'." doesn't exist. Download failed.";
2125
		if ($error != '') {
2126
			return $error;
2127
		} elseif ($globalDebug) echo "Done\n";
2128
		return '';
2129
	}
2130
	public static function update_skyteam() {
2131
		global $tmp_dir, $globalDebug;
2132
		$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...
2133
		if ($globalDebug) echo "Schedules Skyteam : Download...";
2134
		update_db::download('http://data.flightairmap.com/data/schedules/skyteam.csv.gz',$tmp_dir.'skyteam.csv.gz');
2135
		if (file_exists($tmp_dir.'skyteam.csv.gz')) {
2136
			if ($globalDebug) echo "Gunzip...";
2137
			update_db::gunzip($tmp_dir.'skyteam.csv.gz');
2138
			if ($globalDebug) echo "Add to DB...";
2139
			$error = update_db::retrieve_route_skyteam($tmp_dir.'skyteam.csv');
2140
		} else $error = "File ".$tmp_dir.'skyteam.csv.gz'." doesn't exist. Download failed.";
2141
		if ($error != '') {
2142
			return $error;
2143
		} elseif ($globalDebug) echo "Done\n";
2144
		return '';
2145
	}
2146
	public static function update_ModeS() {
2147
		global $tmp_dir, $globalDebug;
2148
/*
2149
		if ($globalDebug) echo "Modes : Download...";
2150
		update_db::download('http://pp-sqb.mantma.co.uk/basestation_latest.zip',$tmp_dir.'basestation_latest.zip');
2151
		if ($globalDebug) echo "Unzip...";
2152
		update_db::unzip($tmp_dir.'basestation_latest.zip');
2153
		if ($globalDebug) echo "Add to DB...";
2154
		$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'/basestation_latest/basestation.sqb');
2155
		if ($error != true) {
2156
			echo $error;
2157
			exit;
2158
		} elseif ($globalDebug) echo "Done\n";
2159
*/
2160
		if ($globalDebug) echo "Modes : Download...";
2161
//		update_db::download('http://planebase.biz/sqb.php?f=basestationall.zip',$tmp_dir.'basestation_latest.zip','http://planebase.biz/bstnsqb');
2162
		update_db::download('http://data.flightairmap.com/data/BaseStation.sqb.gz',$tmp_dir.'BaseStation.sqb.gz');
2163
2164
//		if (file_exists($tmp_dir.'basestation_latest.zip')) {
2165
		if (file_exists($tmp_dir.'BaseStation.sqb.gz')) {
2166
			if ($globalDebug) echo "Unzip...";
2167
//			update_db::unzip($tmp_dir.'basestation_latest.zip');
2168
			update_db::gunzip($tmp_dir.'BaseStation.sqb.gz');
2169
			if ($globalDebug) echo "Add to DB...";
2170
			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'BaseStation.sqb');
2171
//			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'basestation.sqb');
2172
		} else $error = "File ".$tmp_dir.'basestation_latest.zip'." doesn't exist. Download failed.";
2173
		if ($error != '') {
2174
			return $error;
2175
		} elseif ($globalDebug) echo "Done\n";
2176
		return '';
2177
	}
2178
2179
	public static function update_ModeS_faa() {
2180
		global $tmp_dir, $globalDebug;
2181
		if ($globalDebug) echo "Modes FAA: Download...";
2182
		update_db::download('http://registry.faa.gov/database/ReleasableAircraft.zip',$tmp_dir.'ReleasableAircraft.zip');
2183
		if (file_exists($tmp_dir.'ReleasableAircraft.zip')) {
2184
			if ($globalDebug) echo "Unzip...";
2185
			update_db::unzip($tmp_dir.'ReleasableAircraft.zip');
2186
			if ($globalDebug) echo "Add to DB...";
2187
			$error = update_db::modes_faa();
2188
		} else $error = "File ".$tmp_dir.'ReleasableAircraft.zip'." doesn't exist. Download failed.";
2189
		if ($error != '') {
2190
			return $error;
2191
		} elseif ($globalDebug) echo "Done\n";
2192
		return '';
2193
	}
2194
2195
	public static function update_ModeS_flarm() {
2196
		global $tmp_dir, $globalDebug;
2197
		if ($globalDebug) echo "Modes Flarmnet: Download...";
2198
		update_db::download('http://flarmnet.org/files/data.fln',$tmp_dir.'data.fln');
2199
		if (file_exists($tmp_dir.'data.fln')) {
2200
			if ($globalDebug) echo "Add to DB...";
2201
			$error = update_db::retrieve_modes_flarmnet($tmp_dir.'data.fln');
2202
		} else $error = "File ".$tmp_dir.'data.fln'." doesn't exist. Download failed.";
2203
		if ($error != '') {
2204
			return $error;
2205
		} elseif ($globalDebug) echo "Done\n";
2206
		return '';
2207
	}
2208
2209
	public static function update_ModeS_ogn() {
2210
		global $tmp_dir, $globalDebug;
2211
		if ($globalDebug) echo "Modes OGN: Download...";
2212
		update_db::download('http://ddb.glidernet.org/download/',$tmp_dir.'ogn.csv');
2213
		if (file_exists($tmp_dir.'ogn.csv')) {
2214
			if ($globalDebug) echo "Add to DB...";
2215
			$error = update_db::retrieve_modes_ogn($tmp_dir.'ogn.csv');
2216
		} else $error = "File ".$tmp_dir.'ogn.csv'." doesn't exist. Download failed.";
2217
		if ($error != '') {
2218
			return $error;
2219
		} elseif ($globalDebug) echo "Done\n";
2220
		return '';
2221
	}
2222
2223
	public static function update_owner() {
2224
		global $tmp_dir, $globalDebug, $globalMasterSource;
2225
		
2226
		if ($globalDebug) echo "Owner France: Download...";
2227
		update_db::download('http://antonakis.co.uk/registers/France.txt',$tmp_dir.'owner_f.csv');
2228
		if (file_exists($tmp_dir.'owner_f.csv')) {
2229
			if ($globalDebug) echo "Add to DB...";
2230
			$error = update_db::retrieve_owner($tmp_dir.'owner_f.csv','F');
2231
		} else $error = "File ".$tmp_dir.'owner_f.csv'." doesn't exist. Download failed.";
2232
		if ($error != '') {
2233
			return $error;
2234
		} elseif ($globalDebug) echo "Done\n";
2235
		
2236
		if ($globalDebug) echo "Owner Ireland: Download...";
2237
		update_db::download('http://antonakis.co.uk/registers/Ireland.txt',$tmp_dir.'owner_ei.csv');
2238
		if (file_exists($tmp_dir.'owner_ei.csv')) {
2239
			if ($globalDebug) echo "Add to DB...";
2240
			$error = update_db::retrieve_owner($tmp_dir.'owner_ei.csv','EI');
2241
		} else $error = "File ".$tmp_dir.'owner_ei.csv'." doesn't exist. Download failed.";
2242
		if ($error != '') {
2243
			return $error;
2244
		} elseif ($globalDebug) echo "Done\n";
2245
		if ($globalDebug) echo "Owner Switzerland: Download...";
2246
		update_db::download('http://antonakis.co.uk/registers/Switzerland.txt',$tmp_dir.'owner_hb.csv');
2247
		if (file_exists($tmp_dir.'owner_hb.csv')) {
2248
			if ($globalDebug) echo "Add to DB...";
2249
			$error = update_db::retrieve_owner($tmp_dir.'owner_hb.csv','HB');
2250
		} else $error = "File ".$tmp_dir.'owner_hb.csv'." doesn't exist. Download failed.";
2251
		if ($error != '') {
2252
			return $error;
2253
		} elseif ($globalDebug) echo "Done\n";
2254
		if ($globalDebug) echo "Owner Czech Republic: Download...";
2255
		update_db::download('http://antonakis.co.uk/registers/CzechRepublic.txt',$tmp_dir.'owner_ok.csv');
2256
		if (file_exists($tmp_dir.'owner_ok.csv')) {
2257
			if ($globalDebug) echo "Add to DB...";
2258
			$error = update_db::retrieve_owner($tmp_dir.'owner_ok.csv','OK');
2259
		} else $error = "File ".$tmp_dir.'owner_ok.csv'." doesn't exist. Download failed.";
2260
		if ($error != '') {
2261
			return $error;
2262
		} elseif ($globalDebug) echo "Done\n";
2263
		if ($globalDebug) echo "Owner Australia: Download...";
2264
		update_db::download('http://antonakis.co.uk/registers/Australia.txt',$tmp_dir.'owner_vh.csv');
2265
		if (file_exists($tmp_dir.'owner_vh.csv')) {
2266
			if ($globalDebug) echo "Add to DB...";
2267
			$error = update_db::retrieve_owner($tmp_dir.'owner_vh.csv','VH');
2268
		} else $error = "File ".$tmp_dir.'owner_vh.csv'." doesn't exist. Download failed.";
2269
		if ($error != '') {
2270
			return $error;
2271
		} elseif ($globalDebug) echo "Done\n";
2272
		if ($globalDebug) echo "Owner Austria: Download...";
2273
		update_db::download('http://antonakis.co.uk/registers/Austria.txt',$tmp_dir.'owner_oe.csv');
2274
		if (file_exists($tmp_dir.'owner_oe.csv')) {
2275
			if ($globalDebug) echo "Add to DB...";
2276
			$error = update_db::retrieve_owner($tmp_dir.'owner_oe.csv','OE');
2277
		} else $error = "File ".$tmp_dir.'owner_oe.csv'." doesn't exist. Download failed.";
2278
		if ($error != '') {
2279
			return $error;
2280
		} elseif ($globalDebug) echo "Done\n";
2281
		if ($globalDebug) echo "Owner Chile: Download...";
2282
		update_db::download('http://antonakis.co.uk/registers/Chile.txt',$tmp_dir.'owner_cc.csv');
2283
		if (file_exists($tmp_dir.'owner_cc.csv')) {
2284
			if ($globalDebug) echo "Add to DB...";
2285
			$error = update_db::retrieve_owner($tmp_dir.'owner_cc.csv','CC');
2286
		} else $error = "File ".$tmp_dir.'owner_cc.csv'." doesn't exist. Download failed.";
2287
		if ($error != '') {
2288
			return $error;
2289
		} elseif ($globalDebug) echo "Done\n";
2290
		if ($globalDebug) echo "Owner Colombia: Download...";
2291
		update_db::download('http://antonakis.co.uk/registers/Colombia.txt',$tmp_dir.'owner_hj.csv');
2292
		if (file_exists($tmp_dir.'owner_hj.csv')) {
2293
			if ($globalDebug) echo "Add to DB...";
2294
			$error = update_db::retrieve_owner($tmp_dir.'owner_hj.csv','HJ');
2295
		} else $error = "File ".$tmp_dir.'owner_hj.csv'." doesn't exist. Download failed.";
2296
		if ($error != '') {
2297
			return $error;
2298
		} elseif ($globalDebug) echo "Done\n";
2299
		if ($globalDebug) echo "Owner Bosnia Herzegobina: Download...";
2300
		update_db::download('http://antonakis.co.uk/registers/BosniaHerzegovina.txt',$tmp_dir.'owner_e7.csv');
2301
		if (file_exists($tmp_dir.'owner_e7.csv')) {
2302
			if ($globalDebug) echo "Add to DB...";
2303
			$error = update_db::retrieve_owner($tmp_dir.'owner_e7.csv','E7');
2304
		} else $error = "File ".$tmp_dir.'owner_e7.csv'." doesn't exist. Download failed.";
2305
		if ($error != '') {
2306
			return $error;
2307
		} elseif ($globalDebug) echo "Done\n";
2308
		if ($globalDebug) echo "Owner Brazil: Download...";
2309
		update_db::download('http://antonakis.co.uk/registers/Brazil.txt',$tmp_dir.'owner_pp.csv');
2310
		if (file_exists($tmp_dir.'owner_pp.csv')) {
2311
			if ($globalDebug) echo "Add to DB...";
2312
			$error = update_db::retrieve_owner($tmp_dir.'owner_pp.csv','PP');
2313
		} else $error = "File ".$tmp_dir.'owner_pp.csv'." doesn't exist. Download failed.";
2314
		if ($error != '') {
2315
			return $error;
2316
		} elseif ($globalDebug) echo "Done\n";
2317
		if ($globalDebug) echo "Owner Cayman Islands: Download...";
2318
		update_db::download('http://antonakis.co.uk/registers/CaymanIslands.txt',$tmp_dir.'owner_vp.csv');
2319
		if (file_exists($tmp_dir.'owner_vp.csv')) {
2320
			if ($globalDebug) echo "Add to DB...";
2321
			$error = update_db::retrieve_owner($tmp_dir.'owner_vp.csv','VP');
2322
		} else $error = "File ".$tmp_dir.'owner_vp.csv'." doesn't exist. Download failed.";
2323
		if ($error != '') {
2324
			return $error;
2325
		} elseif ($globalDebug) echo "Done\n";
2326
		if ($globalDebug) echo "Owner Croatia: Download...";
2327
		update_db::download('http://antonakis.co.uk/registers/Croatia.txt',$tmp_dir.'owner_9a.csv');
2328
		if (file_exists($tmp_dir.'owner_9a.csv')) {
2329
			if ($globalDebug) echo "Add to DB...";
2330
			$error = update_db::retrieve_owner($tmp_dir.'owner_9a.csv','9A');
2331
		} else $error = "File ".$tmp_dir.'owner_9a.csv'." doesn't exist. Download failed.";
2332
		if ($error != '') {
2333
			return $error;
2334
		} elseif ($globalDebug) echo "Done\n";
2335
		if ($globalDebug) echo "Owner Luxembourg: Download...";
2336
		update_db::download('http://antonakis.co.uk/registers/Luxembourg.txt',$tmp_dir.'owner_lx.csv');
2337
		if (file_exists($tmp_dir.'owner_lx.csv')) {
2338
			if ($globalDebug) echo "Add to DB...";
2339
			$error = update_db::retrieve_owner($tmp_dir.'owner_lx.csv','LX');
2340
		} else $error = "File ".$tmp_dir.'owner_lx.csv'." doesn't exist. Download failed.";
2341
		if ($error != '') {
2342
			return $error;
2343
		} elseif ($globalDebug) echo "Done\n";
2344
		if ($globalDebug) echo "Owner Maldives: Download...";
2345
		update_db::download('http://antonakis.co.uk/registers/Maldives.txt',$tmp_dir.'owner_8q.csv');
2346
		if (file_exists($tmp_dir.'owner_8q.csv')) {
2347
			if ($globalDebug) echo "Add to DB...";
2348
			$error = update_db::retrieve_owner($tmp_dir.'owner_8q.csv','8Q');
2349
		} else $error = "File ".$tmp_dir.'owner_8q.csv'." doesn't exist. Download failed.";
2350
		if ($error != '') {
2351
			return $error;
2352
		} elseif ($globalDebug) echo "Done\n";
2353
		if ($globalDebug) echo "Owner New Zealand: Download...";
2354
		update_db::download('http://antonakis.co.uk/registers/NewZealand.txt',$tmp_dir.'owner_zk.csv');
2355
		if (file_exists($tmp_dir.'owner_zk.csv')) {
2356
			if ($globalDebug) echo "Add to DB...";
2357
			$error = update_db::retrieve_owner($tmp_dir.'owner_zk.csv','ZK');
2358
		} else $error = "File ".$tmp_dir.'owner_zk.csv'." doesn't exist. Download failed.";
2359
		if ($error != '') {
2360
			return $error;
2361
		} elseif ($globalDebug) echo "Done\n";
2362
		if ($globalDebug) echo "Owner Papua New Guinea: Download...";
2363
		update_db::download('http://antonakis.co.uk/registers/PapuaNewGuinea.txt',$tmp_dir.'owner_p2.csv');
2364
		if (file_exists($tmp_dir.'owner_p2.csv')) {
2365
			if ($globalDebug) echo "Add to DB...";
2366
			$error = update_db::retrieve_owner($tmp_dir.'owner_p2.csv','P2');
2367
		} else $error = "File ".$tmp_dir.'owner_p2.csv'." doesn't exist. Download failed.";
2368
		if ($error != '') {
2369
			return $error;
2370
		} elseif ($globalDebug) echo "Done\n";
2371
		if ($globalDebug) echo "Owner Slovakia: Download...";
2372
		update_db::download('http://antonakis.co.uk/registers/Slovakia.txt',$tmp_dir.'owner_om.csv');
2373
		if (file_exists($tmp_dir.'owner_om.csv')) {
2374
			if ($globalDebug) echo "Add to DB...";
2375
			$error = update_db::retrieve_owner($tmp_dir.'owner_om.csv','OM');
2376
		} else $error = "File ".$tmp_dir.'owner_om.csv'." doesn't exist. Download failed.";
2377
		if ($error != '') {
2378
			return $error;
2379
		} elseif ($globalDebug) echo "Done\n";
2380
		if ($globalDebug) echo "Owner Ecuador: Download...";
2381
		update_db::download('http://antonakis.co.uk/registers/Ecuador.txt',$tmp_dir.'owner_hc.csv');
2382
		if (file_exists($tmp_dir.'owner_hc.csv')) {
2383
			if ($globalDebug) echo "Add to DB...";
2384
			$error = update_db::retrieve_owner($tmp_dir.'owner_hc.csv','HC');
2385
		} else $error = "File ".$tmp_dir.'owner_hc.csv'." doesn't exist. Download failed.";
2386
		if ($error != '') {
2387
			return $error;
2388
		} elseif ($globalDebug) echo "Done\n";
2389
		if ($globalDebug) echo "Owner Iceland: Download...";
2390
		update_db::download('http://antonakis.co.uk/registers/Iceland.txt',$tmp_dir.'owner_tf.csv');
2391
		if (file_exists($tmp_dir.'owner_tf.csv')) {
2392
			if ($globalDebug) echo "Add to DB...";
2393
			$error = update_db::retrieve_owner($tmp_dir.'owner_tf.csv','TF');
2394
		} else $error = "File ".$tmp_dir.'owner_tf.csv'." doesn't exist. Download failed.";
2395
		if ($error != '') {
2396
			return $error;
2397
		} elseif ($globalDebug) echo "Done\n";
2398
		if ($globalDebug) echo "Owner Isle of Man: Download...";
2399
		update_db::download('http://antonakis.co.uk/registers/IsleOfMan.txt',$tmp_dir.'owner_m.csv');
2400
		if (file_exists($tmp_dir.'owner_m.csv')) {
2401
			if ($globalDebug) echo "Add to DB...";
2402
			$error = update_db::retrieve_owner($tmp_dir.'owner_m.csv','M');
2403
		} else $error = "File ".$tmp_dir.'owner_m.csv'." doesn't exist. Download failed.";
2404
		if ($error != '') {
2405
			return $error;
2406
		} elseif ($globalDebug) echo "Done\n";
2407
		if ($globalMasterSource) {
2408
			if ($globalDebug) echo "ModeS Netherlands: Download...";
2409
			update_db::download('http://antonakis.co.uk/registers/Netherlands.txt',$tmp_dir.'owner_ph.csv');
2410
			if (file_exists($tmp_dir.'owner_ph.csv')) {
2411
				if ($globalDebug) echo "Add to DB...";
2412
				$error = update_db::retrieve_owner($tmp_dir.'owner_ph.csv','PH');
2413
			} else $error = "File ".$tmp_dir.'owner_ph.csv'." doesn't exist. Download failed.";
2414
			if ($error != '') {
2415
				return $error;
2416
			} elseif ($globalDebug) echo "Done\n";
2417
			if ($globalDebug) echo "ModeS Denmark: Download...";
2418
			update_db::download('http://antonakis.co.uk/registers/Denmark.txt',$tmp_dir.'owner_oy.csv');
2419
			if (file_exists($tmp_dir.'owner_oy.csv')) {
2420
				if ($globalDebug) echo "Add to DB...";
2421
				$error = update_db::retrieve_owner($tmp_dir.'owner_oy.csv','OY');
2422
			} else $error = "File ".$tmp_dir.'owner_oy.csv'." doesn't exist. Download failed.";
2423
			if ($error != '') {
2424
				return $error;
2425
			} elseif ($globalDebug) echo "Done\n";
2426
		} elseif ($globalDebug) echo "Done\n";
2427
		return '';
2428
	}
2429
2430
	public static function update_translation() {
2431
		global $tmp_dir, $globalDebug;
2432
		$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...
2433
		if ($globalDebug) echo "Translation : Download...";
2434
		update_db::download('http://www.acarsd.org/download/translation.php',$tmp_dir.'translation.zip');
2435
		if (file_exists($tmp_dir.'translation.zip')) {
2436
			if ($globalDebug) echo "Unzip...";
2437
			update_db::unzip($tmp_dir.'translation.zip');
2438
			if ($globalDebug) echo "Add to DB...";
2439
			$error = update_db::translation();
2440
		} else $error = "File ".$tmp_dir.'translation.zip'." doesn't exist. Download failed.";
2441
		if ($error != '') {
2442
			return $error;
2443
		} elseif ($globalDebug) echo "Done\n";
2444
		return '';
2445
	}
2446
2447
	public static function update_translation_fam() {
2448
		global $tmp_dir, $globalDebug;
2449
		$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...
2450
		if ($globalDebug) echo "Translation from FlightAirMap website : Download...";
2451
		update_db::download('http://data.flightairmap.com/data/translation.tsv.gz',$tmp_dir.'translation.tsv.gz');
2452
		update_db::download('http://data.flightairmap.com/data/translation.tsv.gz.md5',$tmp_dir.'translation.tsv.gz.md5');
2453
		if (file_exists($tmp_dir.'translation.tsv.gz') && file_exists($tmp_dir.'translation.tsv.gz')) {
2454
			$translation_md5_file = explode(' ',file_get_contents($tmp_dir.'translation.tsv.gz.md5'));
2455
			$translation_md5 = $translation_md5_file[0];
2456
			if (md5_file($tmp_dir.'translation.tsv.gz') == $translation_md5) {
2457
				if ($globalDebug) echo "Gunzip...";
2458
				update_db::gunzip($tmp_dir.'translation.tsv.gz');
2459
				if ($globalDebug) echo "Add to DB...";
2460
				$error = update_db::translation_fam();
2461
			} else $error = "File ".$tmp_dir.'translation.tsv.gz'." md5 failed. Download failed.";
2462
		} else $error = "File ".$tmp_dir.'translation.tsv.gz'." doesn't exist. Download failed.";
2463
		if ($error != '') {
2464
			return $error;
2465
		} elseif ($globalDebug) echo "Done\n";
2466
		return '';
2467
	}
2468
	public static function update_ModeS_fam() {
2469
		global $tmp_dir, $globalDebug;
2470
		$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...
2471
		if ($globalDebug) echo "ModeS from FlightAirMap website : Download...";
2472
		update_db::download('http://data.flightairmap.com/data/modes.tsv.gz',$tmp_dir.'modes.tsv.gz');
2473
		update_db::download('http://data.flightairmap.com/data/modes.tsv.gz.md5',$tmp_dir.'modes.tsv.gz.md5');
2474
		if (file_exists($tmp_dir.'modes.tsv.gz') && file_exists($tmp_dir.'modes.tsv.gz.md5')) {
2475
			$modes_md5_file = explode(' ',file_get_contents($tmp_dir.'modes.tsv.gz.md5'));
2476
			$modes_md5 = $modes_md5_file[0];
2477
			if (md5_file($tmp_dir.'modes.tsv.gz') == $modes_md5) {
2478
				if ($globalDebug) echo "Gunzip...";
2479
				update_db::gunzip($tmp_dir.'modes.tsv.gz');
2480
				if ($globalDebug) echo "Add to DB...";
2481
				$error = update_db::modes_fam();
2482
			} else $error = "File ".$tmp_dir.'modes.tsv.gz'." md5 failed. Download failed.";
2483
		} else $error = "File ".$tmp_dir.'modes.tsv.gz'." doesn't exist. Download failed.";
2484
		if ($error != '') {
2485
			return $error;
2486
		} elseif ($globalDebug) echo "Done\n";
2487
		return '';
2488
	}
2489
2490
	public static function update_airlines_fam() {
2491
		global $tmp_dir, $globalDebug;
2492
		$error = '';
2493
		if ($globalDebug) echo "Airlines from FlightAirMap website : Download...";
2494
		update_db::download('http://data.flightairmap.com/data/airlines.tsv.gz.md5',$tmp_dir.'airlines.tsv.gz.md5');
2495
		if (file_exists($tmp_dir.'airlines.tsv.gz.md5')) {
2496
			$airlines_md5_file = explode(' ',file_get_contents($tmp_dir.'airlines.tsv.gz.md5'));
2497
			$airlines_md5 = $airlines_md5_file[0];
2498
			if (!update_db::check_airlines_version($airlines_md5)) {
2499
				update_db::download('http://data.flightairmap.com/data/airlines.tsv.gz',$tmp_dir.'airlines.tsv.gz');
2500
				if (file_exists($tmp_dir.'airlines.tsv.gz')) {
2501
					if (md5_file($tmp_dir.'airlines.tsv.gz') == $airlines_md5) {
2502
						if ($globalDebug) echo "Gunzip...";
2503
						update_db::gunzip($tmp_dir.'airlines.tsv.gz');
2504
						if ($globalDebug) echo "Add to DB...";
2505
						$error = update_db::airlines_fam();
2506
						update_db::insert_airlines_version($airlines_md5);
2507
					} else $error = "File ".$tmp_dir.'airlines.tsv.gz'." md5 failed. Download failed.";
2508
			    } else $error = "File ".$tmp_dir.'airlines.tsv.gz'." doesn't exist. Download failed.";
2509
			} elseif ($globalDebug) echo "No update.";
2510
		} else $error = "File ".$tmp_dir.'airlines.tsv.gz.md5'." doesn't exist. Download failed.";
2511
		if ($error != '') {
2512
			return $error;
2513
		} else {
2514
			if ($globalDebug) echo "Done\n";
2515
		}
2516
		return '';
2517
	}
2518
2519
	public static function update_owner_fam() {
2520
		global $tmp_dir, $globalDebug, $globalOwner;
2521
		if ($globalDebug) echo "owner from FlightAirMap website : Download...";
2522
		$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...
2523
		if ($globalOwner === TRUE) {
2524
			update_db::download('http://data.flightairmap.com/data/owners_all.tsv.gz',$tmp_dir.'owners.tsv.gz');
2525
			update_db::download('http://data.flightairmap.com/data/owners_all.tsv.gz.md5',$tmp_dir.'owners.tsv.gz.md5');
2526
		} else {
2527
			update_db::download('http://data.flightairmap.com/data/owners.tsv.gz',$tmp_dir.'owners.tsv.gz');
2528
			update_db::download('http://data.flightairmap.com/data/owners.tsv.gz.md5',$tmp_dir.'owners.tsv.gz.md5');
2529
		}
2530
		if (file_exists($tmp_dir.'owners.tsv.gz') && file_exists($tmp_dir.'owners.tsv.gz.md5')) {
2531
			$owners_md5_file = explode(' ',file_get_contents($tmp_dir.'owners.tsv.gz.md5'));
2532
			$owners_md5 = $owners_md5_file[0];
2533
			if (md5_file($tmp_dir.'owners.tsv.gz') == $owners_md5) {
2534
				if ($globalDebug) echo "Gunzip...";
2535
				update_db::gunzip($tmp_dir.'owners.tsv.gz');
2536
				if ($globalDebug) echo "Add to DB...";
2537
				$error = update_db::owner_fam();
2538
			} else $error = "File ".$tmp_dir.'owners.tsv.gz'." md5 failed. Download failed.";
2539
		} else $error = "File ".$tmp_dir.'owners.tsv.gz'." doesn't exist. Download failed.";
2540
		if ($error != '') {
2541
			return $error;
2542
		} elseif ($globalDebug) echo "Done\n";
2543
		return '';
2544
	}
2545
	public static function update_routes_fam() {
2546
		global $tmp_dir, $globalDebug;
2547
		if ($globalDebug) echo "Routes from FlightAirMap website : Download...";
2548
		update_db::download('http://data.flightairmap.com/data/routes.tsv.gz',$tmp_dir.'routes.tsv.gz');
2549
		update_db::download('http://data.flightairmap.com/data/routes.tsv.gz.md5',$tmp_dir.'routes.tsv.gz.md5');
2550
		if (file_exists($tmp_dir.'routes.tsv.gz') && file_exists($tmp_dir.'routes.tsv.gz.md5')) {
2551
			$routes_md5_file = explode(' ',file_get_contents($tmp_dir.'routes.tsv.gz.md5'));
2552
			$routes_md5 = $routes_md5_file[0];
2553
			if (md5_file($tmp_dir.'routes.tsv.gz') == $routes_md5) {
2554
				if ($globalDebug) echo "Gunzip...";
2555
				update_db::gunzip($tmp_dir.'routes.tsv.gz');
2556
				if ($globalDebug) echo "Add to DB...";
2557
				$error = update_db::routes_fam();
2558
			} else $error = "File ".$tmp_dir.'routes.tsv.gz'." md5 failed. Download failed.";
2559
		} else $error = "File ".$tmp_dir.'routes.tsv.gz'." doesn't exist. Download failed.";
2560
		if ($error != '') {
2561
			return $error;
2562
		} elseif ($globalDebug) echo "Done\n";
2563
		return '';
2564
	}
2565
	public static function update_block_fam() {
2566
		global $tmp_dir, $globalDebug;
2567
		if ($globalDebug) echo "Blocked aircraft from FlightAirMap website : Download...";
2568
		update_db::download('http://data.flightairmap.com/data/block.tsv.gz',$tmp_dir.'block.tsv.gz');
2569
		update_db::download('http://data.flightairmap.com/data/block.tsv.gz.md5',$tmp_dir.'block.tsv.gz.md5');
2570
		if (file_exists($tmp_dir.'block.tsv.gz') && file_exists($tmp_dir.'block.tsv.gz.md5')) {
2571
			$block_md5_file = explode(' ',file_get_contents($tmp_dir.'block.tsv.gz.md5'));
2572
			$block_md5 = $block_md5_file[0];
2573
			if (md5_file($tmp_dir.'block.tsv.gz') == $block_md5) {
2574
				if ($globalDebug) echo "Gunzip...";
2575
				update_db::gunzip($tmp_dir.'block.tsv.gz');
2576
				if ($globalDebug) echo "Add to DB...";
2577
				$error = update_db::block_fam();
2578
			} else $error = "File ".$tmp_dir.'block.tsv.gz'." md5 failed. Download failed.";
2579
		} else $error = "File ".$tmp_dir.'block.tsv.gz'." doesn't exist. Download failed.";
2580
		if ($error != '') {
2581
			return $error;
2582
		} elseif ($globalDebug) echo "Done\n";
2583
		return '';
2584
	}
2585
	public static function update_marine_identity_fam() {
2586
		global $tmp_dir, $globalDebug;
2587
		update_db::download('http://data.flightairmap.com/data/marine_identity.tsv.gz.md5',$tmp_dir.'marine_identity.tsv.gz.md5');
2588
		if (file_exists($tmp_dir.'marine_identity.tsv.gz.md5')) {
2589
			$marine_identity_md5_file = explode(' ',file_get_contents($tmp_dir.'marine_identity.tsv.gz.md5'));
2590
			$marine_identity_md5 = $marine_identity_md5_file[0];
2591
			if (!update_db::check_marine_identity_version($marine_identity_md5)) {
2592
				if ($globalDebug) echo "Marine identity from FlightAirMap website : Download...";
2593
				update_db::download('http://data.flightairmap.com/data/marine_identity.tsv.gz',$tmp_dir.'marine_identity.tsv.gz');
2594
				if (file_exists($tmp_dir.'marine_identity.tsv.gz')) {
2595
					if (md5_file($tmp_dir.'marine_identity.tsv.gz') == $marine_identity_md5) {
2596
						if ($globalDebug) echo "Gunzip...";
2597
						update_db::gunzip($tmp_dir.'marine_identity.tsv.gz');
2598
						if ($globalDebug) echo "Add to DB...";
2599
						$error = update_db::marine_identity_fam();
2600
					} else $error = "File ".$tmp_dir.'marine_identity.tsv.gz'." md5 failed. Download failed.";
2601
				} else $error = "File ".$tmp_dir.'marine_identity.tsv.gz'." doesn't exist. Download failed.";
2602
				if ($error != '') {
2603
					return $error;
2604
				} else {
2605
					update_db::insert_marine_identity_version($marine_identity_md5);
2606
					if ($globalDebug) echo "Done\n";
2607
				}
2608
			}
2609
		}
2610
		return '';
2611
	}
2612
2613
	public static function update_satellite_fam() {
2614
		global $tmp_dir, $globalDebug;
2615
		update_db::download('http://data.flightairmap.com/data/satellite.tsv.gz.md5',$tmp_dir.'satellite.tsv.gz.md5');
2616
		if (file_exists($tmp_dir.'satellite.tsv.gz.md5')) {
2617
			$satellite_md5_file = explode(' ',file_get_contents($tmp_dir.'satellite.tsv.gz.md5'));
2618
			$satellite_md5 = $satellite_md5_file[0];
2619
			if (!update_db::check_satellite_version($satellite_md5)) {
2620
				if ($globalDebug) echo "Satellite from FlightAirMap website : Download...";
2621
				update_db::download('http://data.flightairmap.com/data/satellite.tsv.gz',$tmp_dir.'satellite.tsv.gz');
2622
				if (file_exists($tmp_dir.'satellite.tsv.gz')) {
2623
					if (md5_file($tmp_dir.'satellite.tsv.gz') == $satellite_md5) {
2624
						if ($globalDebug) echo "Gunzip...";
2625
						update_db::gunzip($tmp_dir.'satellite.tsv.gz');
2626
						if ($globalDebug) echo "Add to DB...";
2627
						$error = update_db::satellite_fam();
2628
					} else $error = "File ".$tmp_dir.'satellite.tsv.gz'." md5 failed. Download failed.";
2629
				} else $error = "File ".$tmp_dir.'satellite.tsv.gz'." doesn't exist. Download failed.";
2630
				if ($error != '') {
2631
					return $error;
2632
				} else {
2633
					update_db::insert_satellite_version($satellite_md5);
2634
					if ($globalDebug) echo "Done\n";
2635
				}
2636
			}
2637
		}
2638
		return '';
2639
	}
2640
	public static function update_banned_fam() {
2641
		global $tmp_dir, $globalDebug;
2642
		if ($globalDebug) echo "Banned airlines in Europe from FlightAirMap website : Download...";
2643
		update_db::download('http://data.flightairmap.com/data/ban-eu.csv',$tmp_dir.'ban_eu.csv');
2644
		if (file_exists($tmp_dir.'ban_eu.csv')) {
2645
			//if ($globalDebug) echo "Gunzip...";
2646
			//update_db::gunzip($tmp_dir.'ban_ue.csv');
2647
			if ($globalDebug) echo "Add to DB...";
2648
			$error = update_db::banned_fam();
2649
		} else $error = "File ".$tmp_dir.'ban_eu.csv'." doesn't exist. Download failed.";
2650
		if ($error != '') {
2651
			return $error;
2652
		} elseif ($globalDebug) echo "Done\n";
2653
		return '';
2654
	}
2655
2656
	public static function update_airspace_fam() {
2657
		global $tmp_dir, $globalDebug, $globalDBdriver;
2658
		include_once('class.create_db.php');
2659
		$error = '';
2660
		if ($globalDebug) echo "Airspace from FlightAirMap website : Download...";
2661
		if ($globalDBdriver == 'mysql') {
2662
			update_db::download('http://data.flightairmap.com/data/airspace_mysql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2663
		} else {
2664
			update_db::download('http://data.flightairmap.com/data/airspace_pgsql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2665
		}
2666
		if (file_exists($tmp_dir.'airspace.sql.gz.md5')) {
2667
			$airspace_md5_file = explode(' ',file_get_contents($tmp_dir.'airspace.sql.gz.md5'));
2668
			$airspace_md5 = $airspace_md5_file[0];
2669
			if (!update_db::check_airspace_version($airspace_md5)) {
2670
				if ($globalDBdriver == 'mysql') {
2671
					update_db::download('http://data.flightairmap.com/data/airspace_mysql.sql.gz',$tmp_dir.'airspace.sql.gz');
2672
				} else {
2673
					update_db::download('http://data.flightairmap.com/data/airspace_pgsql.sql.gz',$tmp_dir.'airspace.sql.gz');
2674
				}
2675
				if (file_exists($tmp_dir.'airspace.sql.gz')) {
2676
					if (md5_file($tmp_dir.'airspace.sql.gz') == $airspace_md5) {
2677
						if ($globalDebug) echo "Gunzip...";
2678
						update_db::gunzip($tmp_dir.'airspace.sql.gz');
2679
						if ($globalDebug) echo "Add to DB...";
2680
						$Connection = new Connection();
2681
						if ($Connection->tableExists('airspace')) {
2682
							$query = 'DROP TABLE airspace';
2683
							try {
2684
								$sth = $Connection->db->prepare($query);
2685
								$sth->execute();
2686
							} catch(PDOException $e) {
2687
								return "error : ".$e->getMessage();
2688
							}
2689
						}
2690
						$error = create_db::import_file($tmp_dir.'airspace.sql');
2691
						update_db::insert_airspace_version($airspace_md5);
2692
					} else $error = "File ".$tmp_dir.'airspace.sql.gz'." md5 failed. Download failed.";
2693
				} else $error = "File ".$tmp_dir.'airspace.sql.gz'." doesn't exist. Download failed.";
2694
			}
2695
		} else $error = "File ".$tmp_dir.'airspace.sql.gz.md5'." doesn't exist. Download failed.";
2696
		if ($error != '') {
2697
			return $error;
2698
		} elseif ($globalDebug) echo "Done\n";
2699
		return '';
2700
	}
2701
2702
	public static function update_geoid_fam() {
2703
		global $tmp_dir, $globalDebug, $globalGeoidSource;
2704
		$error = '';
2705
		if ($globalDebug) echo "Geoid from FlightAirMap website : Download...";
2706
		update_db::download('http://data.flightairmap.com/data/geoid/'.$globalGeoidSource.'.pgm.gz.md5',$tmp_dir.$globalGeoidSource.'.pgm.gz.md5');
2707
		if (file_exists($tmp_dir.$globalGeoidSource.'.pgm.gz.md5')) {
2708
			$geoid_md5_file = explode(' ',file_get_contents($tmp_dir.$globalGeoidSource.'.pgm.gz.md5'));
2709
			$geoid_md5 = $geoid_md5_file[0];
2710
			if (!update_db::check_geoid_version($geoid_md5)) {
2711
				update_db::download('http://data.flightairmap.com/data/geoid/'.$globalGeoidSource.'.pgm.gz',$tmp_dir.$globalGeoidSource.'.pgm.gz');
2712
				if (file_exists($tmp_dir.$globalGeoidSource.'.pgm.gz')) {
2713
					if (md5_file($tmp_dir.$globalGeoidSource.'.pgm.gz') == $geoid_md5) {
2714
						if ($globalDebug) echo "Gunzip...";
2715
						update_db::gunzip($tmp_dir.$globalGeoidSource.'.pgm.gz',dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm');
2716
						if (file_exists(dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm')) {
2717
							update_db::insert_geoid_version($geoid_md5);
2718
						} else $error = "File data/".$globalGeoidSource.'.pgm'." doesn't exist. Gunzip failed.";
2719
					} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz'." md5 failed. Download failed.";
2720
				} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz'." doesn't exist. Download failed.";
2721
			} elseif ($globalDebug) echo 'No new version'."\n";
2722
		} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz.md5'." doesn't exist. Download failed.";
2723
		if ($error != '') {
2724
			return $error;
2725
		} elseif ($globalDebug) echo "Done\n";
2726
		return '';
2727
	}
2728
2729
	public static function update_tle() {
2730
		global $tmp_dir, $globalDebug;
2731
		if ($globalDebug) echo "Download TLE : Download...";
2732
		$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',
2733
		'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',
2734
		'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');
2735
		foreach ($alltle as $filename) {
2736
			if ($globalDebug) echo "downloading ".$filename.'...';
2737
			update_db::download('http://celestrak.com/NORAD/elements/'.$filename,$tmp_dir.$filename);
2738
			if (file_exists($tmp_dir.$filename)) {
2739
				if ($globalDebug) echo "Add to DB ".$filename."...";
2740
				$error = update_db::tle($tmp_dir.$filename,str_replace('.txt','',$filename));
2741
			} else $error = "File ".$tmp_dir.$filename." doesn't exist. Download failed.";
2742
			if ($error != '') {
2743
				echo $error."\n";
2744
			} elseif ($globalDebug) echo "Done\n";
2745
		}
2746
		return '';
2747
	}
2748
2749
	public static function update_ucsdb() {
2750
		global $tmp_dir, $globalDebug;
2751
		if ($globalDebug) echo "Download UCS DB : Download...";
2752
		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');
2753
		if (file_exists($tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt')) {
2754
			if ($globalDebug) echo "Add to DB...";
2755
			$error = update_db::satellite_ucsdb($tmp_dir.'UCS_Satellite_Database_officialname_9-1-2017.txt');
2756
		} else $error = "File ".$tmp_dir.'UCS_Satellite_Database_officialname_9-1-2017.txt'." doesn't exist. Download failed.";
2757
		if ($error != '') {
2758
			echo $error."\n";
2759
		} elseif ($globalDebug) echo "Done\n";
2760
		return '';
2761
	}
2762
2763
	public static function update_celestrak() {
2764
		global $tmp_dir, $globalDebug;
2765
		if ($globalDebug) echo "Download Celestrak DB : Download...";
2766
		update_db::download('http://celestrak.com/pub/satcat.txt',$tmp_dir.'satcat.txt');
2767
		if (file_exists($tmp_dir.'satcat.txt')) {
2768
			if ($globalDebug) echo "Add to DB...";
2769
			$error = update_db::satellite_celestrak($tmp_dir.'satcat.txt');
2770
		} else $error = "File ".$tmp_dir.'satcat.txt'." doesn't exist. Download failed.";
2771
		if ($error != '') {
2772
			echo $error."\n";
2773
		} elseif ($globalDebug) echo "Done\n";
2774
		return '';
2775
	}
2776
2777
	public static function update_models() {
2778
		global $tmp_dir, $globalDebug;
2779
		$error = '';
2780
		if ($globalDebug) echo "Models from FlightAirMap website : Download...";
2781
		if (!is_writable(dirname(__FILE__).'/../models')) {
2782
			if ($globalDebug) echo dirname(__FILE__).'/../models'.' is not writable !';
2783
			return '';
2784
		}
2785
		update_db::download('http://data.flightairmap.com/data/models/models.md5sum',$tmp_dir.'models.md5sum');
2786
		if (file_exists($tmp_dir.'models.md5sum')) {
2787
			if ($globalDebug) echo "Check files...\n";
2788
			$newmodelsdb = array();
2789
			if (($handle = fopen($tmp_dir.'models.md5sum','r')) !== FALSE) {
2790
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2791
					$model = trim($row[2]);
2792
					$newmodelsdb[$model] = trim($row[0]);
2793
				}
2794
			}
2795
			$modelsdb = array();
2796
			if (file_exists(dirname(__FILE__).'/../models/models.md5sum')) {
2797
				if (($handle = fopen(dirname(__FILE__).'/../models/models.md5sum','r')) !== FALSE) {
2798
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2799
						$model = trim($row[2]);
2800
						$modelsdb[$model] = trim($row[0]);
2801
					}
2802
				}
2803
			}
2804
			$diff = array_diff($newmodelsdb,$modelsdb);
2805
			foreach ($diff as $key => $value) {
2806
				if ($globalDebug) echo 'Downloading model '.$key.' ...'."\n";
2807
				update_db::download('http://data.flightairmap.com/data/models/'.$key,dirname(__FILE__).'/../models/'.$key);
2808
			}
2809
			update_db::download('http://data.flightairmap.com/data/models/models.md5sum',dirname(__FILE__).'/../models/models.md5sum');
2810
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2811
		if ($error != '') {
2812
			return $error;
2813
		} elseif ($globalDebug) echo "Done\n";
2814
		if ($globalDebug) echo "glTF 2.0 Models from FlightAirMap website : Download...";
2815
		update_db::download('http://data.flightairmap.com/data/models/gltf2/models.md5sum',$tmp_dir.'modelsgltf2.md5sum');
2816
		if (file_exists($tmp_dir.'modelsgltf2.md5sum')) {
2817
			if ($globalDebug) echo "Check files...\n";
2818
			$newmodelsdb = array();
2819
			if (($handle = fopen($tmp_dir.'modelsgltf2.md5sum','r')) !== FALSE) {
2820
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2821
					$model = trim($row[2]);
2822
					$newmodelsdb[$model] = trim($row[0]);
2823
				}
2824
			}
2825
			$modelsdb = array();
2826
			if (file_exists(dirname(__FILE__).'/../models/gltf2/models.md5sum')) {
2827
				if (($handle = fopen(dirname(__FILE__).'/../models/gltf2/models.md5sum','r')) !== FALSE) {
2828
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2829
						$model = trim($row[2]);
2830
						$modelsdb[$model] = trim($row[0]);
2831
					}
2832
				}
2833
			}
2834
			$diff = array_diff($newmodelsdb,$modelsdb);
2835
			foreach ($diff as $key => $value) {
2836
				if ($globalDebug) echo 'Downloading model '.$key.' ...'."\n";
2837
				update_db::download('http://data.flightairmap.com/data/models/gltf2/'.$key,dirname(__FILE__).'/../models/gltf2/'.$key);
2838
				
2839
			}
2840
			update_db::download('http://data.flightairmap.com/data/models/gltf2/models.md5sum',dirname(__FILE__).'/../models/gltf2/models.md5sum');
2841
		} else $error = "File ".$tmp_dir.'modelsgltf2.md5sum'." doesn't exist. Download failed.";
2842
		if ($error != '') {
2843
			return $error;
2844
		} elseif ($globalDebug) echo "Done\n";
2845
		return '';
2846
	}
2847
	public static function update_weather_models() {
2848
		global $tmp_dir, $globalDebug;
2849
		$error = '';
2850
		if ($globalDebug) echo "Models from FlightAirMap website : Download...";
2851
		if (!is_writable(dirname(__FILE__).'/../models/gltf2/weather')) {
2852
			if ($globalDebug) echo dirname(__FILE__).'/../models/gltf2/weather'.' is not writable !';
2853
			return '';
2854
		}
2855
		if ($globalDebug) echo "Weather Models from FlightAirMap website : Download...";
2856
		update_db::download('http://data.flightairmap.com/data/models/gltf2/weather/models.md5sum',$tmp_dir.'modelsweather.md5sum');
2857
		if (file_exists($tmp_dir.'modelsweather.md5sum')) {
2858
			if ($globalDebug) echo "Check files...\n";
2859
			$newmodelsdb = array();
2860
			if (($handle = fopen($tmp_dir.'modelsweather.md5sum','r')) !== FALSE) {
2861
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2862
					$model = trim($row[2]);
2863
					$newmodelsdb[$model] = trim($row[0]);
2864
				}
2865
			}
2866
			$modelsdb = array();
2867
			if (file_exists(dirname(__FILE__).'/../models/gltf2/weather/models.md5sum')) {
2868
				if (($handle = fopen(dirname(__FILE__).'/../models/gltf2/weather/models.md5sum','r')) !== FALSE) {
2869
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2870
						$model = trim($row[2]);
2871
						$modelsdb[$model] = trim($row[0]);
2872
					}
2873
				}
2874
			}
2875
			$diff = array_diff($newmodelsdb,$modelsdb);
2876
			foreach ($diff as $key => $value) {
2877
				if ($globalDebug) echo 'Downloading model '.$key.' ...'."\n";
2878
				update_db::download('http://data.flightairmap.com/data/models/gltf2/weather/'.$key,dirname(__FILE__).'/../models/gltf2/weather/'.$key);
2879
				
2880
			}
2881
			update_db::download('http://data.flightairmap.com/data/models/gltf2/weather/models.md5sum',dirname(__FILE__).'/../models/gltf2/weather/models.md5sum');
2882
		} else $error = "File ".$tmp_dir.'modelsweather.md5sum'." doesn't exist. Download failed.";
2883
		if ($error != '') {
2884
			return $error;
2885
		} elseif ($globalDebug) echo "Done\n";
2886
		return '';
2887
	}
2888
2889
	public static function update_liveries() {
2890
		global $tmp_dir, $globalDebug;
2891
		$error = '';
2892
		if ($globalDebug) echo "Liveries from FlightAirMap website : Download...";
2893
		update_db::download('http://data.flightairmap.com/data/models/gltf2/liveries/liveries.md5sum',$tmp_dir.'liveries.md5sum');
2894
		if (file_exists($tmp_dir.'liveries.md5sum')) {
2895
			if ($globalDebug) echo "Check files...\n";
2896
			$newmodelsdb = array();
2897
			if (($handle = fopen($tmp_dir.'liveries.md5sum','r')) !== FALSE) {
2898
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2899
					$model = trim($row[2]);
2900
					$newmodelsdb[$model] = trim($row[0]);
2901
				}
2902
			}
2903
			$modelsdb = array();
2904
			if (file_exists(dirname(__FILE__).'/../models/gltf2/liveries/liveries.md5sum')) {
2905
				if (($handle = fopen(dirname(__FILE__).'/../models/gltf2/liveries/liveries.md5sum','r')) !== FALSE) {
2906
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2907
						$model = trim($row[2]);
2908
						$modelsdb[$model] = trim($row[0]);
2909
					}
2910
				}
2911
			}
2912
			$diff = array_diff($newmodelsdb,$modelsdb);
2913
			foreach ($diff as $key => $value) {
2914
				if ($globalDebug) echo 'Downloading liveries '.$key.' ...'."\n";
2915
				update_db::download('http://data.flightairmap.com/data/models/gltf2/liveries/'.$key,dirname(__FILE__).'/../models/gltf2/liveries/'.$key);
2916
				
2917
			}
2918
			update_db::download('http://data.flightairmap.com/data/models/gltf2/liveries/liveries.md5sum',dirname(__FILE__).'/../models/gltf2/liveries/liveries.md5sum');
2919
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2920
		if ($error != '') {
2921
			return $error;
2922
		} elseif ($globalDebug) echo "Done\n";
2923
		return '';
2924
	}
2925
2926
	public static function update_space_models() {
2927
		global $tmp_dir, $globalDebug;
2928
		$error = '';
2929
		if (!is_writable(dirname(__FILE__).'/../models')) {
2930
			if ($globalDebug) echo dirname(__FILE__).'/../models'.' is not writable !';
2931
			return '';
2932
		}
2933
		if ($globalDebug) echo "Space models from FlightAirMap website : Download...";
2934
		update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',$tmp_dir.'space_models.md5sum');
2935
		if (file_exists($tmp_dir.'space_models.md5sum')) {
2936
			if ($globalDebug) echo "Check files...\n";
2937
			$newmodelsdb = array();
2938
			if (($handle = fopen($tmp_dir.'space_models.md5sum','r')) !== FALSE) {
2939
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2940
					$model = trim($row[2]);
2941
					$newmodelsdb[$model] = trim($row[0]);
2942
				}
2943
			}
2944
			$modelsdb = array();
2945
			if (file_exists(dirname(__FILE__).'/../models/space/space_models.md5sum')) {
2946
				if (($handle = fopen(dirname(__FILE__).'/../models/space/space_models.md5sum','r')) !== FALSE) {
2947
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2948
						$model = trim($row[2]);
2949
						$modelsdb[$model] = trim($row[0]);
2950
					}
2951
				}
2952
			}
2953
			$diff = array_diff($newmodelsdb,$modelsdb);
2954
			foreach ($diff as $key => $value) {
2955
				if ($globalDebug) echo 'Downloading space model '.$key.' ...'."\n";
2956
				update_db::download('http://data.flightairmap.com/data/models/space/'.$key,dirname(__FILE__).'/../models/space/'.$key);
2957
				
2958
			}
2959
			update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',dirname(__FILE__).'/../models/space/space_models.md5sum');
2960
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2961
		if ($error != '') {
2962
			return $error;
2963
		} elseif ($globalDebug) echo "Done\n";
2964
		return '';
2965
	}
2966
2967
	public static function update_vehicules_models() {
2968
		global $tmp_dir, $globalDebug;
2969
		$error = '';
2970
		if (!is_writable(dirname(__FILE__).'/../models/vehicules')) {
2971
			if ($globalDebug) echo dirname(__FILE__).'/../models/vehicules'.' is not writable !';
2972
			return '';
2973
		}
2974
		if ($globalDebug) echo "Vehicules models from FlightAirMap website : Download...";
2975
		update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',$tmp_dir.'vehicules_models.md5sum');
2976
		if (file_exists($tmp_dir.'vehicules_models.md5sum')) {
2977
			if ($globalDebug) echo "Check files...\n";
2978
			$newmodelsdb = array();
2979
			if (($handle = fopen($tmp_dir.'vehicules_models.md5sum','r')) !== FALSE) {
2980
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2981
					$model = trim($row[2]);
2982
					$newmodelsdb[$model] = trim($row[0]);
2983
				}
2984
			}
2985
			$modelsdb = array();
2986
			if (file_exists(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum')) {
2987
				if (($handle = fopen(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum','r')) !== FALSE) {
2988
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2989
						$model = trim($row[2]);
2990
						$modelsdb[$model] = trim($row[0]);
2991
					}
2992
				}
2993
			}
2994
			$diff = array_diff($newmodelsdb,$modelsdb);
2995
			foreach ($diff as $key => $value) {
2996
				if ($globalDebug) echo 'Downloading vehicules model '.$key.' ...'."\n";
2997
				update_db::download('http://data.flightairmap.com/data/models/vehicules/'.$key,dirname(__FILE__).'/../models/vehicules/'.$key);
2998
				
2999
			}
3000
			update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum');
3001
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
3002
		if ($error != '') {
3003
			return $error;
3004
		} elseif ($globalDebug) echo "Done\n";
3005
		return '';
3006
	}
3007
3008
	public static function update_aircraft() {
3009
		global $tmp_dir, $globalDebug;
3010
		date_default_timezone_set('UTC');
3011
		$Common = new Common();
3012
		$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);
3013
		$all = json_decode($data,true);
3014
		$Connection = new Connection();
3015
		$querychk = "SELECT COUNT(1) as nb FROM aircraft WHERE icao = :icao";
3016
		$sth = $Connection->db->prepare($querychk);
3017
		$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,'')";
3018
		$queryup = "UPDATE aircraft SET type = :type WHERE icao = :icao";
3019
		$sthins = $Connection->db->prepare($queryins);
3020
		$sthup = $Connection->db->prepare($queryup);
3021
		$allicao = array();
3022
		foreach ($all as $model) {
3023
			$icao = $model['Designator'];
3024
			if (!isset($allicao[$icao])) {
3025
				$aircraft_shadow = 'generic_'.substr($model['EngineType'],0,1).$model['EngineCount'].$model['WTC'].'.png';
3026
				$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']);
3027
			} else {
3028
				$allicao[$icao][':type'] = $allicao[$icao][':type'].'/'.$model['ModelFullName'];
3029
			}
3030
		}
3031
		foreach ($allicao as $icao => $airdata) {
3032
			try {
3033
				$sth->execute(array(':icao' => $icao));
3034
				$exist = $sth->fetchAll(PDO::FETCH_ASSOC);
3035
				if ($exist[0]['nb'] == 0) {
3036
					$sthins->execute($airdata);
3037
				} else {
3038
					$sthup->execute(array(':type' => $airdata[':type'],':icao' => $icao));
3039
				}
3040
			} catch(PDOException $e) {
3041
				return "error : ".$e->getMessage();
3042
			}
3043
		}
3044
		
3045
		/*
3046
		foreach ($all as $model) {
3047
			try {
3048
				$sth->execute(array(':icao' => $model['Designator']));
3049
				$exist = $sth->fetchAll(PDO::FETCH_ASSOC);
3050
				if ($exist[0]['nb'] == 0) {
3051
					echo 'ICAO: '.$model['Designator'].' is not available'."\n";
3052
					$aircraft_shadow = 'generic_'.substr($model['EngineType'],0,1).$model['EngineCount'].$model['WTC'].'.png';
3053
					$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']));
3054
				}
3055
			} catch(PDOException $e) {
3056
				return "error : ".$e->getMessage();
3057
			}
3058
		}
3059
		*/
3060
	}
3061
	
3062
	public static function update_notam() {
3063
		global $tmp_dir, $globalDebug, $globalNOTAMSource;
3064
		require(dirname(__FILE__).'/../require/class.NOTAM.php');
3065
		$Common = new Common();
3066
		date_default_timezone_set('UTC');
3067
		$query = 'TRUNCATE TABLE notam';
3068
		try {
3069
			$Connection = new Connection();
3070
			$sth = $Connection->db->prepare($query);
3071
                        $sth->execute();
3072
                } catch(PDOException $e) {
3073
                        return "error : ".$e->getMessage();
3074
                }
3075
3076
		$error = '';
3077
		if ($globalDebug) echo "Notam : Download...";
3078
		update_db::download($globalNOTAMSource,$tmp_dir.'notam.rss');
3079
		if (file_exists($tmp_dir.'notam.rss')) {
3080
			$notams = json_decode(json_encode(simplexml_load_file($tmp_dir.'notam.rss')),true);
3081
			foreach ($notams['channel']['item'] as $notam) {
3082
				$title = explode(':',$notam['title']);
3083
				$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...
3084
				unset($title[0]);
3085
				$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...
3086
				$description = strip_tags($notam['description'],'<pre>');
3087
				preg_match(':^(.*?)<pre>:',$description,$match);
3088
				$q = explode('/',$match[1]);
3089
				$data['fir'] = $q[0];
3090
				$data['code'] = $q[1];
3091
				$ifrvfr = $q[2];
3092
				if ($ifrvfr == 'IV') $data['rules'] = 'IFR/VFR';
3093
				if ($ifrvfr == 'I') $data['rules'] = 'IFR';
3094
				if ($ifrvfr == 'V') $data['rules'] = 'VFR';
3095
				if ($q[4] == 'A') $data['scope'] = 'Airport warning';
3096
				if ($q[4] == 'E') $data['scope'] = 'Enroute warning';
3097
				if ($q[4] == 'W') $data['scope'] = 'Navigation warning';
3098
				if ($q[4] == 'AE') $data['scope'] = 'Airport/Enroute warning';
3099
				if ($q[4] == 'AW') $data['scope'] = 'Airport/Navigation warning';
3100
				//$data['scope'] = $q[4];
3101
				$data['lower_limit'] = $q[5];
3102
				$data['upper_limit'] = $q[6];
3103
				$latlonrad = $q[7];
3104
				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...
3105
				$latitude = $Common->convertDec($las,'latitude');
3106
				$longitude = $Common->convertDec($lns,'longitude');
3107
				if ($lac == 'S') $latitude = '-'.$latitude;
3108
				if ($lnc == 'W') $longitude = '-'.$longitude;
3109
				$data['center_latitude'] = $latitude;
3110
				$data['center_longitude'] = $longitude;
3111
				$data['radius'] = intval($radius);
3112
				
3113
				preg_match(':<pre>(.*?)</pre>:',$description,$match);
3114
				$data['text'] = $match[1];
3115
				preg_match(':</pre>(.*?)$:',$description,$match);
3116
				$fromto = $match[1];
3117
				preg_match('#FROM:(.*?)TO:#',$fromto,$match);
3118
				$fromall = trim($match[1]);
3119
				preg_match('#^(.*?) \((.*?)\)$#',$fromall,$match);
3120
				$from = trim($match[1]);
3121
				$data['date_begin'] = date("Y-m-d H:i:s",strtotime($from));
3122
				preg_match('#TO:(.*?)$#',$fromto,$match);
3123
				$toall = trim($match[1]);
3124
				if (!preg_match(':Permanent:',$toall)) {
3125
					preg_match('#^(.*?) \((.*?)\)#',$toall,$match);
3126
					$to = trim($match[1]);
3127
					$data['date_end'] = date("Y-m-d H:i:s",strtotime($to));
3128
					$data['permanent'] = 0;
3129
				} else {
3130
				    $data['date_end'] = NULL;
3131
				    $data['permanent'] = 1;
3132
				}
3133
				$data['full_notam'] = $notam['title'].'<br>'.$notam['description'];
3134
				$NOTAM = new NOTAM();
3135
				$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']);
3136
				unset($data);
3137
			} 
3138
		} else $error = "File ".$tmp_dir.'notam.rss'." doesn't exist. Download failed.";
3139
		if ($error != '') {
3140
			return $error;
3141
		} elseif ($globalDebug) echo "Done\n";
3142
		return '';
3143
	}
3144
	
3145
	public static function create_airspace() {
3146
		global $globalDBdriver, $globalDebug, $tmp_dir, $globalDBhost, $globalDBuser, $globalDBname, $globalDBpass, $globalDBport;
3147
		$Connection = new Connection();
3148
		if ($Connection->tableExists('airspace')) {
3149
			if ($globalDBdriver == 'mysql') {
3150
				$query = 'DROP TABLE geometry_columns; DROP TABLE spatial_ref_sys;DROP TABLE airspace;';
3151
			} else {
3152
				$query = 'DROP TABLE airspace';
3153
			}
3154
			try {
3155
				$Connection = new Connection();
3156
				$sth = $Connection->db->prepare($query);
3157
				$sth->execute();
3158
			} catch(PDOException $e) {
3159
				return "error : ".$e->getMessage();
3160
			}
3161
		}
3162
		$Common = new Common();
3163
		$airspace_lst = $Common->getData('https://raw.githubusercontent.com/XCSoar/xcsoar-data-repository/master/data/airspace.json');
3164
		$airspace_json = json_decode($airspace_lst,true);
3165
		foreach ($airspace_json['records'] as $airspace) {
3166
			if ($globalDebug) echo $airspace['name']."...\n";
3167
			update_db::download($airspace['uri'],$tmp_dir.$airspace['name']);
3168
			if (file_exists($tmp_dir.$airspace['name'])) {
3169
				file_put_contents($tmp_dir.$airspace['name'], utf8_encode(file_get_contents($tmp_dir.$airspace['name'])));
3170
				//system('recode l9..utf8 '.$tmp_dir.$airspace['name']);
3171
				if ($globalDBdriver == 'mysql') {
3172
					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'].'"');
3173
				} else {
3174
					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'].'"');
3175
				}
3176
			}
3177
		}
3178
	}
3179
	
3180
	public static function fix_icaotype() {
3181
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
3182
		$Spotter = new Spotter();
3183
		foreach ($Spotter->aircraft_correct_icaotype as $old => $new) {
3184
			$query = 'UPDATE aircraft_modes SET ICAOTypeCode = :new WHERE ICAOTypeCode = :old';
3185
			try {
3186
				$Connection = new Connection();
3187
				$sth = $Connection->db->prepare($query);
3188
				$sth->execute(array(':new' => $new, ':old' => $old));
3189
			} catch(PDOException $e) {
3190
				return "error : ".$e->getMessage();
3191
			}
3192
		}
3193
	}
3194
3195
	public static function check_last_update() {
3196
		global $globalDBdriver;
3197
		if ($globalDBdriver == 'mysql') {
3198
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3199
		} else {
3200
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3201
		}
3202
		try {
3203
			$Connection = new Connection();
3204
			$sth = $Connection->db->prepare($query);
3205
                        $sth->execute();
3206
                } catch(PDOException $e) {
3207
                        return "error : ".$e->getMessage();
3208
                }
3209
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3210
                if ($row['nb'] > 0) return false;
3211
                else return true;
3212
	}
3213
3214
	public static function insert_last_update() {
3215
		$query = "DELETE FROM config WHERE name = 'last_update_db';
3216
			INSERT INTO config (name,value) VALUES ('last_update_db',NOW());";
3217
		try {
3218
			$Connection = new Connection();
3219
			$sth = $Connection->db->prepare($query);
3220
                        $sth->execute();
3221
                } catch(PDOException $e) {
3222
                        return "error : ".$e->getMessage();
3223
                }
3224
	}
3225
3226
	public static function check_airspace_version($version) {
3227
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'airspace_version' AND value = :version";
3228
		try {
3229
			$Connection = new Connection();
3230
			$sth = $Connection->db->prepare($query);
3231
                        $sth->execute(array(':version' => $version));
3232
                } catch(PDOException $e) {
3233
                        return "error : ".$e->getMessage();
3234
                }
3235
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3236
                if ($row['nb'] > 0) return true;
3237
                else return false;
3238
	}
3239
3240
	public static function check_geoid_version($version) {
3241
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'geoid_version' AND value = :version";
3242
		try {
3243
			$Connection = new Connection();
3244
			$sth = $Connection->db->prepare($query);
3245
                        $sth->execute(array(':version' => $version));
3246
                } catch(PDOException $e) {
3247
                        return "error : ".$e->getMessage();
3248
                }
3249
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3250
                if ($row['nb'] > 0) return true;
3251
                else return false;
3252
	}
3253
3254
	public static function check_marine_identity_version($version) {
3255
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'marine_identity_version' AND value = :version";
3256
		try {
3257
			$Connection = new Connection();
3258
			$sth = $Connection->db->prepare($query);
3259
			$sth->execute(array(':version' => $version));
3260
		} catch(PDOException $e) {
3261
			return "error : ".$e->getMessage();
3262
		}
3263
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3264
		if ($row['nb'] > 0) return true;
3265
		else return false;
3266
	}
3267
3268
	public static function check_satellite_version($version) {
3269
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'satellite_version' AND value = :version";
3270
		try {
3271
			$Connection = new Connection();
3272
			$sth = $Connection->db->prepare($query);
3273
			$sth->execute(array(':version' => $version));
3274
		} catch(PDOException $e) {
3275
			return "error : ".$e->getMessage();
3276
		}
3277
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3278
		if ($row['nb'] > 0) return true;
3279
		else return false;
3280
	}
3281
3282
	public static function check_airlines_version($version) {
3283
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'airlines_version' AND value = :version";
3284
		try {
3285
			$Connection = new Connection();
3286
			$sth = $Connection->db->prepare($query);
3287
			$sth->execute(array(':version' => $version));
3288
		} catch(PDOException $e) {
3289
			return "error : ".$e->getMessage();
3290
		}
3291
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3292
		if ($row['nb'] > 0) return true;
3293
		else return false;
3294
	}
3295
3296
	public static function check_notam_version($version) {
3297
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'notam_version' AND value = :version";
3298
		try {
3299
			$Connection = new Connection();
3300
			$sth = $Connection->db->prepare($query);
3301
			$sth->execute(array(':version' => $version));
3302
		} catch(PDOException $e) {
3303
			return "error : ".$e->getMessage();
3304
		}
3305
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3306
		if ($row['nb'] > 0) return true;
3307
		else return false;
3308
	}
3309
3310
	public static function insert_airlines_version($version) {
3311
		$query = "DELETE FROM config WHERE name = 'airlines_version';
3312
			INSERT INTO config (name,value) VALUES ('airlines_version',:version);";
3313
		try {
3314
			$Connection = new Connection();
3315
			$sth = $Connection->db->prepare($query);
3316
			$sth->execute(array(':version' => $version));
3317
		} catch(PDOException $e) {
3318
			return "error : ".$e->getMessage();
3319
		}
3320
	}
3321
3322
	public static function insert_notam_version($version) {
3323
		$query = "DELETE FROM config WHERE name = 'notam_version';
3324
			INSERT INTO config (name,value) VALUES ('notam_version',:version);";
3325
		try {
3326
			$Connection = new Connection();
3327
			$sth = $Connection->db->prepare($query);
3328
			$sth->execute(array(':version' => $version));
3329
		} catch(PDOException $e) {
3330
			return "error : ".$e->getMessage();
3331
		}
3332
	}
3333
3334
	public static function insert_airspace_version($version) {
3335
		$query = "DELETE FROM config WHERE name = 'airspace_version';
3336
			INSERT INTO config (name,value) VALUES ('airspace_version',:version);";
3337
		try {
3338
			$Connection = new Connection();
3339
			$sth = $Connection->db->prepare($query);
3340
			$sth->execute(array(':version' => $version));
3341
		} catch(PDOException $e) {
3342
			return "error : ".$e->getMessage();
3343
		}
3344
	}
3345
	
3346
	public static function insert_geoid_version($version) {
3347
		$query = "DELETE FROM config WHERE name = 'geoid_version';
3348
			INSERT INTO config (name,value) VALUES ('geoid_version',:version);";
3349
		try {
3350
			$Connection = new Connection();
3351
			$sth = $Connection->db->prepare($query);
3352
                        $sth->execute(array(':version' => $version));
3353
                } catch(PDOException $e) {
3354
                        return "error : ".$e->getMessage();
3355
                }
3356
	}
3357
3358
	public static function insert_marine_identity_version($version) {
3359
		$query = "DELETE FROM config WHERE name = 'marine_identity_version';
3360
			INSERT INTO config (name,value) VALUES ('marine_identity_version',:version);";
3361
		try {
3362
			$Connection = new Connection();
3363
			$sth = $Connection->db->prepare($query);
3364
			$sth->execute(array(':version' => $version));
3365
		} catch(PDOException $e) {
3366
			return "error : ".$e->getMessage();
3367
		}
3368
	}
3369
3370
	public static function insert_satellite_version($version) {
3371
		$query = "DELETE FROM config WHERE name = 'satellite_version';
3372
			INSERT INTO config (name,value) VALUES ('satellite_version',:version);";
3373
		try {
3374
			$Connection = new Connection();
3375
			$sth = $Connection->db->prepare($query);
3376
			$sth->execute(array(':version' => $version));
3377
		} catch(PDOException $e) {
3378
			return "error : ".$e->getMessage();
3379
		}
3380
	}
3381
3382
	public static function check_last_notam_update() {
3383
		global $globalDBdriver;
3384
		if ($globalDBdriver == 'mysql') {
3385
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
3386
		} else {
3387
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
3388
		}
3389
		try {
3390
			$Connection = new Connection();
3391
			$sth = $Connection->db->prepare($query);
3392
                        $sth->execute();
3393
                } catch(PDOException $e) {
3394
                        return "error : ".$e->getMessage();
3395
                }
3396
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3397
                if ($row['nb'] > 0) return false;
3398
                else return true;
3399
	}
3400
3401
	public static function insert_last_notam_update() {
3402
		$query = "DELETE FROM config WHERE name = 'last_update_notam_db';
3403
			INSERT INTO config (name,value) VALUES ('last_update_notam_db',NOW());";
3404
		try {
3405
			$Connection = new Connection();
3406
			$sth = $Connection->db->prepare($query);
3407
                        $sth->execute();
3408
                } catch(PDOException $e) {
3409
                        return "error : ".$e->getMessage();
3410
                }
3411
	}
3412
3413
	public static function check_last_airspace_update() {
3414
		global $globalDBdriver;
3415
		if ($globalDBdriver == 'mysql') {
3416
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3417
		} else {
3418
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3419
		}
3420
		try {
3421
			$Connection = new Connection();
3422
			$sth = $Connection->db->prepare($query);
3423
                        $sth->execute();
3424
                } catch(PDOException $e) {
3425
                        return "error : ".$e->getMessage();
3426
                }
3427
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3428
                if ($row['nb'] > 0) return false;
3429
                else return true;
3430
	}
3431
3432
	public static function insert_last_airspace_update() {
3433
		$query = "DELETE FROM config WHERE name = 'last_update_airspace_db';
3434
			INSERT INTO config (name,value) VALUES ('last_update_airspace_db',NOW());";
3435
		try {
3436
			$Connection = new Connection();
3437
			$sth = $Connection->db->prepare($query);
3438
                        $sth->execute();
3439
                } catch(PDOException $e) {
3440
                        return "error : ".$e->getMessage();
3441
                }
3442
	}
3443
3444
	public static function check_last_geoid_update() {
3445
		global $globalDBdriver;
3446
		if ($globalDBdriver == 'mysql') {
3447
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3448
		} else {
3449
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3450
		}
3451
		try {
3452
			$Connection = new Connection();
3453
			$sth = $Connection->db->prepare($query);
3454
                        $sth->execute();
3455
                } catch(PDOException $e) {
3456
                        return "error : ".$e->getMessage();
3457
                }
3458
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3459
                if ($row['nb'] > 0) return false;
3460
                else return true;
3461
	}
3462
3463
	public static function insert_last_geoid_update() {
3464
		$query = "DELETE FROM config WHERE name = 'last_update_geoid';
3465
			INSERT INTO config (name,value) VALUES ('last_update_geoid',NOW());";
3466
		try {
3467
			$Connection = new Connection();
3468
			$sth = $Connection->db->prepare($query);
3469
                        $sth->execute();
3470
                } catch(PDOException $e) {
3471
                        return "error : ".$e->getMessage();
3472
                }
3473
	}
3474
3475
	public static function check_last_owner_update() {
3476
		global $globalDBdriver;
3477
		if ($globalDBdriver == 'mysql') {
3478
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3479
		} else {
3480
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3481
		}
3482
		try {
3483
			$Connection = new Connection();
3484
			$sth = $Connection->db->prepare($query);
3485
			$sth->execute();
3486
		} catch(PDOException $e) {
3487
			return "error : ".$e->getMessage();
3488
		}
3489
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3490
		if ($row['nb'] > 0) return false;
3491
		else return true;
3492
	}
3493
3494
	public static function insert_last_owner_update() {
3495
		$query = "DELETE FROM config WHERE name = 'last_update_owner_db';
3496
			INSERT INTO config (name,value) VALUES ('last_update_owner_db',NOW());";
3497
		try {
3498
			$Connection = new Connection();
3499
			$sth = $Connection->db->prepare($query);
3500
			$sth->execute();
3501
		} catch(PDOException $e) {
3502
			return "error : ".$e->getMessage();
3503
		}
3504
	}
3505
3506
	public static function check_last_fires_update() {
3507
		global $globalDBdriver;
3508
		if ($globalDBdriver == 'mysql') {
3509
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_fires' AND value > DATE_SUB(NOW(), INTERVAL 1 HOUR)";
3510
		} else {
3511
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_fires' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 HOUR'";
3512
		}
3513
		try {
3514
			$Connection = new Connection();
3515
			$sth = $Connection->db->prepare($query);
3516
			$sth->execute();
3517
		} catch(PDOException $e) {
3518
			return "error : ".$e->getMessage();
3519
		}
3520
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3521
		if ($row['nb'] > 0) return false;
3522
		else return true;
3523
	}
3524
3525
	public static function insert_last_fires_update() {
3526
		$query = "DELETE FROM config WHERE name = 'last_update_fires';
3527
			INSERT INTO config (name,value) VALUES ('last_update_fires',NOW());";
3528
		try {
3529
			$Connection = new Connection();
3530
			$sth = $Connection->db->prepare($query);
3531
			$sth->execute();
3532
		} catch(PDOException $e) {
3533
			return "error : ".$e->getMessage();
3534
		}
3535
	}
3536
3537
	public static function check_last_airlines_update() {
3538
		global $globalDBdriver;
3539
		if ($globalDBdriver == 'mysql') {
3540
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airlines_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3541
		} else {
3542
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airlines_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3543
		}
3544
		try {
3545
			$Connection = new Connection();
3546
			$sth = $Connection->db->prepare($query);
3547
			$sth->execute();
3548
		} catch(PDOException $e) {
3549
			return "error : ".$e->getMessage();
3550
		}
3551
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3552
		if ($row['nb'] > 0) return false;
3553
		else return true;
3554
	}
3555
3556
	public static function insert_last_airlines_update() {
3557
		$query = "DELETE FROM config WHERE name = 'last_update_airlines_db';
3558
			INSERT INTO config (name,value) VALUES ('last_update_airlines_db',NOW());";
3559
		try {
3560
			$Connection = new Connection();
3561
			$sth = $Connection->db->prepare($query);
3562
			$sth->execute();
3563
		} catch(PDOException $e) {
3564
			return "error : ".$e->getMessage();
3565
		}
3566
	}
3567
3568
	public static function check_last_schedules_update() {
3569
		global $globalDBdriver;
3570
		if ($globalDBdriver == 'mysql') {
3571
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3572
		} else {
3573
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3574
		}
3575
		try {
3576
			$Connection = new Connection();
3577
			$sth = $Connection->db->prepare($query);
3578
                        $sth->execute();
3579
                } catch(PDOException $e) {
3580
                        return "error : ".$e->getMessage();
3581
                }
3582
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3583
                if ($row['nb'] > 0) return false;
3584
                else return true;
3585
	}
3586
3587
	public static function insert_last_schedules_update() {
3588
		$query = "DELETE FROM config WHERE name = 'last_update_schedules';
3589
			INSERT INTO config (name,value) VALUES ('last_update_schedules',NOW());";
3590
		try {
3591
			$Connection = new Connection();
3592
			$sth = $Connection->db->prepare($query);
3593
			$sth->execute();
3594
		} catch(PDOException $e) {
3595
			return "error : ".$e->getMessage();
3596
		}
3597
	}
3598
3599
	public static function check_last_tle_update() {
3600
		global $globalDBdriver;
3601
		if ($globalDBdriver == 'mysql') {
3602
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3603
		} else {
3604
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3605
		}
3606
		try {
3607
			$Connection = new Connection();
3608
			$sth = $Connection->db->prepare($query);
3609
			$sth->execute();
3610
		} catch(PDOException $e) {
3611
			return "error : ".$e->getMessage();
3612
		}
3613
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3614
		if ($row['nb'] > 0) return false;
3615
		else return true;
3616
	}
3617
3618
	public static function insert_last_tle_update() {
3619
		$query = "DELETE FROM config WHERE name = 'last_update_tle';
3620
			INSERT INTO config (name,value) VALUES ('last_update_tle',NOW());";
3621
		try {
3622
			$Connection = new Connection();
3623
			$sth = $Connection->db->prepare($query);
3624
			$sth->execute();
3625
		} catch(PDOException $e) {
3626
			return "error : ".$e->getMessage();
3627
		}
3628
	}
3629
3630
	public static function check_last_ucsdb_update() {
3631
		global $globalDBdriver;
3632
		if ($globalDBdriver == 'mysql') {
3633
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value > DATE_SUB(NOW(), INTERVAL 1 MONTH)";
3634
		} else {
3635
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 MONTH'";
3636
		}
3637
		try {
3638
			$Connection = new Connection();
3639
			$sth = $Connection->db->prepare($query);
3640
			$sth->execute();
3641
		} catch(PDOException $e) {
3642
			return "error : ".$e->getMessage();
3643
		}
3644
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3645
		if ($row['nb'] > 0) return false;
3646
		else return true;
3647
	}
3648
3649
	public static function insert_last_ucsdb_update() {
3650
		$query = "DELETE FROM config WHERE name = 'last_update_ucsdb';
3651
			INSERT INTO config (name,value) VALUES ('last_update_ucsdb',NOW());";
3652
		try {
3653
			$Connection = new Connection();
3654
			$sth = $Connection->db->prepare($query);
3655
			$sth->execute();
3656
		} catch(PDOException $e) {
3657
			return "error : ".$e->getMessage();
3658
		}
3659
	}
3660
3661
	public static function check_last_celestrak_update() {
3662
		global $globalDBdriver;
3663
		if ($globalDBdriver == 'mysql') {
3664
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3665
		} else {
3666
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3667
		}
3668
		try {
3669
			$Connection = new Connection();
3670
			$sth = $Connection->db->prepare($query);
3671
			$sth->execute();
3672
		} catch(PDOException $e) {
3673
			return "error : ".$e->getMessage();
3674
		}
3675
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3676
		if ($row['nb'] > 0) return false;
3677
		else return true;
3678
	}
3679
3680
	public static function insert_last_celestrak_update() {
3681
		$query = "DELETE FROM config WHERE name = 'last_update_celestrak';
3682
			INSERT INTO config (name,value) VALUES ('last_update_celestrak',NOW());";
3683
		try {
3684
			$Connection = new Connection();
3685
			$sth = $Connection->db->prepare($query);
3686
			$sth->execute();
3687
		} catch(PDOException $e) {
3688
			return "error : ".$e->getMessage();
3689
		}
3690
	}
3691
3692
	public static function check_last_marine_identity_update() {
3693
		global $globalDBdriver;
3694
		if ($globalDBdriver == 'mysql') {
3695
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3696
		} else {
3697
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3698
		}
3699
		try {
3700
			$Connection = new Connection();
3701
			$sth = $Connection->db->prepare($query);
3702
			$sth->execute();
3703
		} catch(PDOException $e) {
3704
			return "error : ".$e->getMessage();
3705
		}
3706
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3707
		if ($row['nb'] > 0) return false;
3708
		else return true;
3709
	}
3710
3711
	public static function check_last_satellite_update() {
3712
		global $globalDBdriver;
3713
		if ($globalDBdriver == 'mysql') {
3714
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
3715
		} else {
3716
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
3717
		}
3718
		try {
3719
			$Connection = new Connection();
3720
			$sth = $Connection->db->prepare($query);
3721
			$sth->execute();
3722
		} catch(PDOException $e) {
3723
			return "error : ".$e->getMessage();
3724
		}
3725
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3726
		if ($row['nb'] > 0) return false;
3727
		else return true;
3728
	}
3729
3730
	public static function insert_last_marine_identity_update() {
3731
		$query = "DELETE FROM config WHERE name = 'last_update_marine_identity';
3732
			INSERT INTO config (name,value) VALUES ('last_update_marine_identity',NOW());";
3733
		try {
3734
			$Connection = new Connection();
3735
			$sth = $Connection->db->prepare($query);
3736
			$sth->execute();
3737
		} catch(PDOException $e) {
3738
			return "error : ".$e->getMessage();
3739
		}
3740
	}
3741
3742
	public static function insert_last_satellite_update() {
3743
		$query = "DELETE FROM config WHERE name = 'last_update_satellite';
3744
			INSERT INTO config (name,value) VALUES ('last_update_satellite',NOW());";
3745
		try {
3746
			$Connection = new Connection();
3747
			$sth = $Connection->db->prepare($query);
3748
			$sth->execute();
3749
		} catch(PDOException $e) {
3750
			return "error : ".$e->getMessage();
3751
		}
3752
	}
3753
3754
	public static function delete_duplicatemodes() {
3755
		global $globalDBdriver;
3756
		if ($globalDBdriver == 'mysql') {
3757
			$query = "DELETE a FROM aircraft_modes a, aircraft_modes b WHERE a.ModeS = b.ModeS AND a.FirstCreated < b.FirstCreated AND a.Source != 'ACARS'";
3758
		} else {
3759
			$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'";
3760
		}
3761
		try {
3762
			$Connection = new Connection();
3763
			$sth = $Connection->db->prepare($query);
3764
                        $sth->execute();
3765
                } catch(PDOException $e) {
3766
                        return "error : ".$e->getMessage();
3767
                }
3768
	}
3769
	public static function delete_duplicateowner() {
3770
		global $globalDBdriver;
3771
		if ($globalDBdriver == 'mysql') {
3772
			$query = "DELETE a FROM aircraft_owner a, aircraft_owner b WHERE a.registration = b.registration AND a.owner_id < b.owner_id";
3773
		} else {
3774
			$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)";
3775
		}
3776
		try {
3777
			$Connection = new Connection();
3778
			$sth = $Connection->db->prepare($query);
3779
                        $sth->execute();
3780
                } catch(PDOException $e) {
3781
                        return "error : ".$e->getMessage();
3782
                }
3783
	}
3784
	
3785
	public static function update_all() {
3786
		global $globalMasterServer, $globalMasterSource;
3787
		if (!isset($globalMasterServer) || !$globalMasterServer) {
3788
			if (isset($globalMasterSource) && $globalMasterSource) {
3789
				echo update_db::update_routes();
3790
				echo update_db::update_translation();
3791
				//echo update_db::update_notam_fam();
3792
				echo update_db::update_ModeS();
3793
				//echo update_db::update_ModeS_flarm();
3794
				echo update_db::update_ModeS_ogn();
3795
				echo update_db::update_ModeS_faa();
3796
				echo update_db::fix_icaotype();
3797
				echo update_db::update_banned_fam();
3798
				echo update_db::update_block_fam();
3799
				//echo update_db::update_celestrak();
3800
				//echo update_db::delete_duplicatemodes();
3801
			} else {
3802
				//echo update_db::update_routes();
3803
				echo update_db::update_routes_fam();
3804
				//echo update_db::update_translation();
3805
				echo update_db::update_translation_fam();
3806
				//echo update_db::update_notam_fam();
3807
				//echo update_db::update_ModeS();
3808
				echo update_db::update_ModeS_fam();
3809
				//echo update_db::update_ModeS_flarm();
3810
				echo update_db::update_ModeS_ogn();
3811
				//echo update_db::delete_duplicatemodes();
3812
				echo update_db::update_banned_fam();
3813
				echo update_db::update_block_fam();
3814
			}
3815
		}
3816
	}
3817
}
3818
3819
//echo update_db::update_airports();
3820
//echo update_db::translation();
3821
//echo update_db::update_waypoints();
3822
//echo update_db::update_airspace();
3823
//echo update_db::update_notam();
3824
//echo update_db::update_ivao();
3825
//echo update_db::update_ModeS_flarm();
3826
//echo update_db::update_ModeS_ogn();
3827
//echo update_db::update_aircraft();
3828
//$update_db = new update_db();
3829
//echo update_db::update_owner();
3830
//update_db::update_translation_fam();
3831
//echo update_db::update_routes();
3832
//update_db::update_models();
3833
//echo $update_db::update_skyteam();
3834
//echo $update_db::update_tle();
3835
//echo update_db::update_notam_fam();
3836
//echo update_db::create_airspace();
3837
//echo update_db::update_ModeS();
3838
//echo update_db::update_ModeS_fam();
3839
//echo update_db::update_routes_fam();
3840
//echo update_db::update_ModeS_faa();
3841
//echo update_db::update_banned_fam();
3842
//echo update_db::modes_faa();
3843
//echo update_db::update_owner_fam();
3844
//echo update_db::delete_duplicateowner();
3845
//echo update_db::fix_icaotype();
3846
//echo update_db::satellite_ucsdb('tmp/UCS_Satellite_Database_officialname_1-1-17.txt');
3847
//echo update_db::update_celestrak();
3848
//echo update_db::update_aircraft();
3849
//echo update_db::update_block_fam();
3850
3851
?>
3852