Completed
Push — master ( 75e641...0485dc )
by Yannick
33:10
created

update_db::block_fam()   C

Complexity

Conditions 11
Paths 16

Size

Total Lines 38
Code Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 11
eloc 30
nc 16
nop 0
dl 0
loc 38
rs 5.2653
c 0
b 0
f 0

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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