Completed
Push — master ( 0a71c8...58eab4 )
by Yannick
38:44
created

update_db::update_geoid_fam()   D

Complexity

Conditions 10
Paths 48

Size

Total Lines 26
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

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

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

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

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

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

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

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

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

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

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

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

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

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

Let’s take a look at an example:

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

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

    // do something with $myArray
}

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

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

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

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

Let’s take a look at an example:

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

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

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

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

Available Fixes

  1. Check for existence of the variable explicitly:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Loading history...
1766
		$delimiter = ' ';
1767
		if (($handle = fopen($filename, 'r')) !== FALSE)
1768
		{
1769
			$i = 0;
1770
			if ($globalTransaction) $Connection->db->beginTransaction();
1771
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1772
			{
1773
				$i++;
1774
				if($i > 3 && count($row) > 2) {
1775
					$data = array_values(array_filter($row));
1776
					$cntdata = count($data);
1777
					if ($cntdata > 10) {
1778
						$value = $data[9];
1779
						
1780
						for ($i =10;$i < $cntdata;$i++) {
1781
							$value .= ' '.$data[$i];
1782
						}
1783
						$data[9] = $value;
1784
					}
1785
					//print_r($data);
1786
					if (count($data) > 9) {
1787
						$query = 'INSERT INTO waypoints (name_begin,latitude_begin,longitude_begin,name_end,latitude_end,longitude_end,high,base,top,segment_name) VALUES (:name_begin, :latitude_begin, :longitude_begin, :name_end, :latitude_end, :longitude_end, :high, :base, :top, :segment_name)';
1788
						try {
1789
							$sth = $Connection->db->prepare($query);
1790
							$sth->execute(array(':name_begin' => $data[0],':latitude_begin' => $data[1],':longitude_begin' => $data[2],':name_end' => $data[3], ':latitude_end' => $data[4], ':longitude_end' => $data[5], ':high' => $data[6], ':base' => $data[7], ':top' => $data[8], ':segment_name' => $data[9]));
1791
						} catch(PDOException $e) {
1792
							return "error : ".$e->getMessage();
1793
						}
1794
					}
1795
				}
1796
			}
1797
			fclose($handle);
1798
			if ($globalTransaction) $Connection->db->commit();
1799
		}
1800
		return '';
1801
        }
1802
1803
	public static function ivao_airlines($filename) {
1804
		//require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1805
		global $tmp_dir, $globalTransaction;
1806
		//$query = 'TRUNCATE TABLE airlines';
1807
		$query = "DELETE FROM airlines WHERE forsource = 'ivao'";
1808
		try {
1809
			$Connection = new Connection();
1810
			$sth = $Connection->db->prepare($query);
1811
                        $sth->execute();
1812
                } catch(PDOException $e) {
1813
                        return "error : ".$e->getMessage();
1814
                }
1815
1816
		$header = NULL;
0 ignored issues
show
Unused Code introduced by
$header is not used, you could remove the assignment.

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

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

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

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

Loading history...
1817
		$delimiter = ':';
1818
		$Connection = new Connection();
1819
		if (($handle = fopen($filename, 'r')) !== FALSE)
1820
		{
1821
			if ($globalTransaction) $Connection->db->beginTransaction();
1822
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1823
			{
1824
				if(count($row) > 1) {
1825
					$query = "INSERT INTO airlines (name,icao,active,forsource) VALUES (:name, :icao, 'Y','ivao')";
1826
					try {
1827
						$sth = $Connection->db->prepare($query);
1828
						$sth->execute(array(':name' => $row[1],':icao' => $row[0]));
1829
					} catch(PDOException $e) {
1830
						return "error : ".$e->getMessage();
1831
					}
1832
				}
1833
			}
1834
			fclose($handle);
1835
			if ($globalTransaction) $Connection->db->commit();
1836
		}
1837
		return '';
1838
        }
1839
	
1840
	public static function update_airspace() {
1841
		global $tmp_dir, $globalDBdriver;
1842
		include_once('class.create_db.php');
1843
		$Connection = new Connection();
1844
		if ($Connection->tableExists('airspace')) {
1845
			$query = 'DROP TABLE airspace';
1846
			try {
1847
				$sth = $Connection->db->prepare($query);
1848
                    		$sth->execute();
1849
	                } catch(PDOException $e) {
1850
				return "error : ".$e->getMessage();
1851
	                }
1852
	        }
1853
1854
1855
		if ($globalDBdriver == 'mysql') update_db::gunzip('../db/airspace.sql.gz',$tmp_dir.'airspace.sql');
1856
		else {
1857
			update_db::gunzip('../db/pgsql/airspace.sql.gz',$tmp_dir.'airspace.sql');
1858
			$query = "CREATE EXTENSION postgis";
1859
			$Connection = new Connection(null,null,$_SESSION['database_root'],$_SESSION['database_rootpass']);
1860
			try {
1861
				$sth = $Connection->db->prepare($query);
1862
				$sth->execute();
1863
			} catch(PDOException $e) {
1864
				return "error : ".$e->getMessage();
1865
			}
1866
		}
1867
		$error = create_db::import_file($tmp_dir.'airspace.sql');
1868
		return $error;
1869
	}
1870
1871
	public static function update_notam_fam() {
1872
		global $tmp_dir, $globalDebug;
1873
		include_once('class.create_db.php');
1874
		require_once(dirname(__FILE__).'/../require/class.NOTAM.php');
1875
		if ($globalDebug) echo "NOTAM from FlightAirMap website : Download...";
1876
		update_db::download('http://data.flightairmap.com/data/notam.txt.gz',$tmp_dir.'notam.txt.gz');
1877
		update_db::download('http://data.flightairmap.com/data/notam.txt.gz.md5',$tmp_dir.'notam.txt.gz.md5');
1878
		$error = '';
1879
		if (file_exists($tmp_dir.'notam.txt.gz') && file_exists($tmp_dir.'notam.txt.gz.md5')) {
1880
			$notam_md5_file = explode(' ',file_get_contents($tmp_dir.'notam.txt.gz.md5'));
1881
			$notam_md5 = $notam_md5_file[0];
1882
			if (md5_file($tmp_dir.'notam.txt.gz') == $notam_md5) {
1883
				if ($globalDebug) echo "Gunzip...";
1884
				update_db::gunzip($tmp_dir.'notam.txt.gz');
1885
				if ($globalDebug) echo "Add to DB...";
1886
				//$error = create_db::import_file($tmp_dir.'notam.sql');
1887
				$NOTAM = new NOTAM();
1888
				$NOTAM->updateNOTAMfromTextFile($tmp_dir.'notam.txt');
1889
			} else $error = "File ".$tmp_dir.'notam.txt.gz'." md5 failed. Download failed.";
1890
		} else $error = "File ".$tmp_dir.'notam.txt.gz'." doesn't exist. Download failed.";
1891
		if ($error != '') {
1892
			return $error;
1893
		} elseif ($globalDebug) echo "Done\n";
1894
		return '';
1895
	}
1896
1897
	public static function update_vatsim() {
1898
		global $tmp_dir;
1899
		include_once('class.create_db.php');
1900
		$error = create_db::import_file('../db/vatsim/airlines.sql');
1901
		return $error;
1902
	}
1903
	
1904
	public static function update_countries() {
1905
		global $tmp_dir, $globalDBdriver;
1906
		include_once('class.create_db.php');
1907
		$Connection = new Connection();
1908
		if ($Connection->tableExists('countries')) {
1909
			$query = 'DROP TABLE countries';
1910
			try {
1911
				$sth = $Connection->db->prepare($query);
1912
            	        	$sth->execute();
1913
	                } catch(PDOException $e) {
1914
    	                	echo "error : ".$e->getMessage();
1915
	                }
1916
		}
1917
		if ($globalDBdriver == 'mysql') {
1918
			update_db::gunzip('../db/countries.sql.gz',$tmp_dir.'countries.sql');
1919
		} else {
1920
			update_db::gunzip('../db/pgsql/countries.sql.gz',$tmp_dir.'countries.sql');
1921
		}
1922
		$error = create_db::import_file($tmp_dir.'countries.sql');
1923
		return $error;
1924
	}
1925
1926
	
1927
	public static function update_waypoints() {
1928
		global $tmp_dir;
1929
//		update_db::download('http://dev.x-plane.com/update/data/AptNav201310XP1000.zip',$tmp_dir.'AptNav.zip');
1930
//		update_db::unzip($tmp_dir.'AptNav.zip');
1931
//		update_db::download('https://gitorious.org/fg/fgdata/raw/e81f8a15424a175a7b715f8f7eb8f4147b802a27:Navaids/awy.dat.gz',$tmp_dir.'awy.dat.gz');
1932
//		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');
1933
		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');
1934
		update_db::gunzip($tmp_dir.'awy.dat.gz');
1935
		$error = update_db::waypoints($tmp_dir.'awy.dat');
1936
		return $error;
1937
	}
1938
1939
	public static function update_ivao() {
1940
		global $tmp_dir, $globalDebug;
1941
		$Common = new Common();
1942
		$error = '';
1943
		//Direct download forbidden
1944
		//if ($globalDebug) echo "IVAO : Download...";
1945
		//update_db::download('http://fr.mirror.ivao.aero/software/ivae_feb2013.zip',$tmp_dir.'ivae_feb2013.zip');
1946
		if (extension_loaded('zip')) {
1947
			if (file_exists($tmp_dir.'ivae_feb2013.zip')) {
1948
				if ($globalDebug) echo "Unzip...";
1949
				update_db::unzip($tmp_dir.'ivae_feb2013.zip');
1950
				if ($globalDebug) echo "Add to DB...";
1951
				update_db::ivao_airlines($tmp_dir.'data/airlines.dat');
1952
				if ($globalDebug) echo "Copy airlines logos to airlines images directory...";
1953
				if (is_writable(dirname(__FILE__).'/../images/airlines')) {
1954
					if (!$Common->xcopy($tmp_dir.'logos/',dirname(__FILE__).'/../images/airlines/')) $error = "Failed to copy airlines logo.";
1955
				} else $error = "The directory ".dirname(__FILE__).'/../images/airlines'." must be writable";
1956
			} else $error = "File ".$tmp_dir.'ivao.zip'." doesn't exist. Download failed.";
1957
		} else $error = "ZIP module not loaded but required for IVAO.";
1958
		if ($error != '') {
1959
			return $error;
1960
		} elseif ($globalDebug) echo "Done\n";
1961
		return '';
1962
	}
1963
1964
	public static function update_routes() {
1965
		global $tmp_dir, $globalDebug;
1966
		$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...
1967
		if ($globalDebug) echo "Routes : Download...";
1968
		update_db::download('http://www.virtualradarserver.co.uk/Files/StandingData.sqb.gz',$tmp_dir.'StandingData.sqb.gz');
1969
		if (file_exists($tmp_dir.'StandingData.sqb.gz')) {
1970
			if ($globalDebug) echo "Gunzip...";
1971
			update_db::gunzip($tmp_dir.'StandingData.sqb.gz');
1972
			if ($globalDebug) echo "Add to DB...";
1973
			$error = update_db::retrieve_route_sqlite_to_dest($tmp_dir.'StandingData.sqb');
1974
		} else $error = "File ".$tmp_dir.'StandingData.sqb.gz'." doesn't exist. Download failed.";
1975
		if ($error != '') {
1976
			return $error;
1977
		} elseif ($globalDebug) echo "Done\n";
1978
		return '';
1979
	}
1980
	public static function update_oneworld() {
1981
		global $tmp_dir, $globalDebug;
1982
		$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...
1983
		if ($globalDebug) echo "Schedules Oneworld : Download...";
1984
		update_db::download('http://data.flightairmap.com/data/schedules/oneworld.csv.gz',$tmp_dir.'oneworld.csv.gz');
1985
		if (file_exists($tmp_dir.'oneworld.csv.gz')) {
1986
			if ($globalDebug) echo "Gunzip...";
1987
			update_db::gunzip($tmp_dir.'oneworld.csv.gz');
1988
			if ($globalDebug) echo "Add to DB...";
1989
			$error = update_db::retrieve_route_oneworld($tmp_dir.'oneworld.csv');
1990
		} else $error = "File ".$tmp_dir.'oneworld.csv.gz'." doesn't exist. Download failed.";
1991
		if ($error != '') {
1992
			return $error;
1993
		} elseif ($globalDebug) echo "Done\n";
1994
		return '';
1995
	}
1996
	public static function update_skyteam() {
1997
		global $tmp_dir, $globalDebug;
1998
		$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...
1999
		if ($globalDebug) echo "Schedules Skyteam : Download...";
2000
		update_db::download('http://data.flightairmap.com/data/schedules/skyteam.csv.gz',$tmp_dir.'skyteam.csv.gz');
2001
		if (file_exists($tmp_dir.'skyteam.csv.gz')) {
2002
			if ($globalDebug) echo "Gunzip...";
2003
			update_db::gunzip($tmp_dir.'skyteam.csv.gz');
2004
			if ($globalDebug) echo "Add to DB...";
2005
			$error = update_db::retrieve_route_skyteam($tmp_dir.'skyteam.csv');
2006
		} else $error = "File ".$tmp_dir.'skyteam.csv.gz'." doesn't exist. Download failed.";
2007
		if ($error != '') {
2008
			return $error;
2009
		} elseif ($globalDebug) echo "Done\n";
2010
		return '';
2011
	}
2012
	public static function update_ModeS() {
2013
		global $tmp_dir, $globalDebug;
2014
/*
2015
		if ($globalDebug) echo "Modes : Download...";
2016
		update_db::download('http://pp-sqb.mantma.co.uk/basestation_latest.zip',$tmp_dir.'basestation_latest.zip');
2017
		if ($globalDebug) echo "Unzip...";
2018
		update_db::unzip($tmp_dir.'basestation_latest.zip');
2019
		if ($globalDebug) echo "Add to DB...";
2020
		$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'/basestation_latest/basestation.sqb');
2021
		if ($error != true) {
2022
			echo $error;
2023
			exit;
2024
		} elseif ($globalDebug) echo "Done\n";
2025
*/
2026
		if ($globalDebug) echo "Modes : Download...";
2027
//		update_db::download('http://planebase.biz/sqb.php?f=basestationall.zip',$tmp_dir.'basestation_latest.zip','http://planebase.biz/bstnsqb');
2028
		update_db::download('http://data.flightairmap.com/data/BaseStation.sqb.gz',$tmp_dir.'BaseStation.sqb.gz');
2029
2030
//		if (file_exists($tmp_dir.'basestation_latest.zip')) {
2031
		if (file_exists($tmp_dir.'BaseStation.sqb.gz')) {
2032
			if ($globalDebug) echo "Unzip...";
2033
//			update_db::unzip($tmp_dir.'basestation_latest.zip');
2034
			update_db::gunzip($tmp_dir.'BaseStation.sqb.gz');
2035
			if ($globalDebug) echo "Add to DB...";
2036
			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'BaseStation.sqb');
2037
//			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'basestation.sqb');
2038
		} else $error = "File ".$tmp_dir.'basestation_latest.zip'." doesn't exist. Download failed.";
2039
		if ($error != '') {
2040
			return $error;
2041
		} elseif ($globalDebug) echo "Done\n";
2042
		return '';
2043
	}
2044
2045
	public static function update_ModeS_faa() {
2046
		global $tmp_dir, $globalDebug;
2047
		if ($globalDebug) echo "Modes FAA: Download...";
2048
		update_db::download('http://registry.faa.gov/database/ReleasableAircraft.zip',$tmp_dir.'ReleasableAircraft.zip');
2049
		if (file_exists($tmp_dir.'ReleasableAircraft.zip')) {
2050
			if ($globalDebug) echo "Unzip...";
2051
			update_db::unzip($tmp_dir.'ReleasableAircraft.zip');
2052
			if ($globalDebug) echo "Add to DB...";
2053
			$error = update_db::modes_faa();
2054
		} else $error = "File ".$tmp_dir.'ReleasableAircraft.zip'." doesn't exist. Download failed.";
2055
		if ($error != '') {
2056
			return $error;
2057
		} elseif ($globalDebug) echo "Done\n";
2058
		return '';
2059
	}
2060
2061
	public static function update_ModeS_flarm() {
2062
		global $tmp_dir, $globalDebug;
2063
		if ($globalDebug) echo "Modes Flarmnet: Download...";
2064
		update_db::download('http://flarmnet.org/files/data.fln',$tmp_dir.'data.fln');
2065
		if (file_exists($tmp_dir.'data.fln')) {
2066
			if ($globalDebug) echo "Add to DB...";
2067
			$error = update_db::retrieve_modes_flarmnet($tmp_dir.'data.fln');
2068
		} else $error = "File ".$tmp_dir.'data.fln'." doesn't exist. Download failed.";
2069
		if ($error != '') {
2070
			return $error;
2071
		} elseif ($globalDebug) echo "Done\n";
2072
		return '';
2073
	}
2074
2075
	public static function update_ModeS_ogn() {
2076
		global $tmp_dir, $globalDebug;
2077
		if ($globalDebug) echo "Modes OGN: Download...";
2078
		update_db::download('http://ddb.glidernet.org/download/',$tmp_dir.'ogn.csv');
2079
		if (file_exists($tmp_dir.'ogn.csv')) {
2080
			if ($globalDebug) echo "Add to DB...";
2081
			$error = update_db::retrieve_modes_ogn($tmp_dir.'ogn.csv');
2082
		} else $error = "File ".$tmp_dir.'ogn.csv'." doesn't exist. Download failed.";
2083
		if ($error != '') {
2084
			return $error;
2085
		} elseif ($globalDebug) echo "Done\n";
2086
		return '';
2087
	}
2088
2089
	public static function update_owner() {
2090
		global $tmp_dir, $globalDebug, $globalMasterSource;
2091
		
2092
		if ($globalDebug) echo "Owner France: Download...";
2093
		update_db::download('http://antonakis.co.uk/registers/France.txt',$tmp_dir.'owner_f.csv');
2094
		if (file_exists($tmp_dir.'owner_f.csv')) {
2095
			if ($globalDebug) echo "Add to DB...";
2096
			$error = update_db::retrieve_owner($tmp_dir.'owner_f.csv','F');
2097
		} else $error = "File ".$tmp_dir.'owner_f.csv'." doesn't exist. Download failed.";
2098
		if ($error != '') {
2099
			return $error;
2100
		} elseif ($globalDebug) echo "Done\n";
2101
		
2102
		if ($globalDebug) echo "Owner Ireland: Download...";
2103
		update_db::download('http://antonakis.co.uk/registers/Ireland.txt',$tmp_dir.'owner_ei.csv');
2104
		if (file_exists($tmp_dir.'owner_ei.csv')) {
2105
			if ($globalDebug) echo "Add to DB...";
2106
			$error = update_db::retrieve_owner($tmp_dir.'owner_ei.csv','EI');
2107
		} else $error = "File ".$tmp_dir.'owner_ei.csv'." doesn't exist. Download failed.";
2108
		if ($error != '') {
2109
			return $error;
2110
		} elseif ($globalDebug) echo "Done\n";
2111
		if ($globalDebug) echo "Owner Switzerland: Download...";
2112
		update_db::download('http://antonakis.co.uk/registers/Switzerland.txt',$tmp_dir.'owner_hb.csv');
2113
		if (file_exists($tmp_dir.'owner_hb.csv')) {
2114
			if ($globalDebug) echo "Add to DB...";
2115
			$error = update_db::retrieve_owner($tmp_dir.'owner_hb.csv','HB');
2116
		} else $error = "File ".$tmp_dir.'owner_hb.csv'." doesn't exist. Download failed.";
2117
		if ($error != '') {
2118
			return $error;
2119
		} elseif ($globalDebug) echo "Done\n";
2120
		if ($globalDebug) echo "Owner Czech Republic: Download...";
2121
		update_db::download('http://antonakis.co.uk/registers/CzechRepublic.txt',$tmp_dir.'owner_ok.csv');
2122
		if (file_exists($tmp_dir.'owner_ok.csv')) {
2123
			if ($globalDebug) echo "Add to DB...";
2124
			$error = update_db::retrieve_owner($tmp_dir.'owner_ok.csv','OK');
2125
		} else $error = "File ".$tmp_dir.'owner_ok.csv'." doesn't exist. Download failed.";
2126
		if ($error != '') {
2127
			return $error;
2128
		} elseif ($globalDebug) echo "Done\n";
2129
		if ($globalDebug) echo "Owner Australia: Download...";
2130
		update_db::download('http://antonakis.co.uk/registers/Australia.txt',$tmp_dir.'owner_vh.csv');
2131
		if (file_exists($tmp_dir.'owner_vh.csv')) {
2132
			if ($globalDebug) echo "Add to DB...";
2133
			$error = update_db::retrieve_owner($tmp_dir.'owner_vh.csv','VH');
2134
		} else $error = "File ".$tmp_dir.'owner_vh.csv'." doesn't exist. Download failed.";
2135
		if ($error != '') {
2136
			return $error;
2137
		} elseif ($globalDebug) echo "Done\n";
2138
		if ($globalDebug) echo "Owner Austria: Download...";
2139
		update_db::download('http://antonakis.co.uk/registers/Austria.txt',$tmp_dir.'owner_oe.csv');
2140
		if (file_exists($tmp_dir.'owner_oe.csv')) {
2141
			if ($globalDebug) echo "Add to DB...";
2142
			$error = update_db::retrieve_owner($tmp_dir.'owner_oe.csv','OE');
2143
		} else $error = "File ".$tmp_dir.'owner_oe.csv'." doesn't exist. Download failed.";
2144
		if ($error != '') {
2145
			return $error;
2146
		} elseif ($globalDebug) echo "Done\n";
2147
		if ($globalDebug) echo "Owner Chile: Download...";
2148
		update_db::download('http://antonakis.co.uk/registers/Chile.txt',$tmp_dir.'owner_cc.csv');
2149
		if (file_exists($tmp_dir.'owner_cc.csv')) {
2150
			if ($globalDebug) echo "Add to DB...";
2151
			$error = update_db::retrieve_owner($tmp_dir.'owner_cc.csv','CC');
2152
		} else $error = "File ".$tmp_dir.'owner_cc.csv'." doesn't exist. Download failed.";
2153
		if ($error != '') {
2154
			return $error;
2155
		} elseif ($globalDebug) echo "Done\n";
2156
		if ($globalDebug) echo "Owner Colombia: Download...";
2157
		update_db::download('http://antonakis.co.uk/registers/Colombia.txt',$tmp_dir.'owner_hj.csv');
2158
		if (file_exists($tmp_dir.'owner_hj.csv')) {
2159
			if ($globalDebug) echo "Add to DB...";
2160
			$error = update_db::retrieve_owner($tmp_dir.'owner_hj.csv','HJ');
2161
		} else $error = "File ".$tmp_dir.'owner_hj.csv'." doesn't exist. Download failed.";
2162
		if ($error != '') {
2163
			return $error;
2164
		} elseif ($globalDebug) echo "Done\n";
2165
		if ($globalDebug) echo "Owner Bosnia Herzegobina: Download...";
2166
		update_db::download('http://antonakis.co.uk/registers/BosniaHerzegovina.txt',$tmp_dir.'owner_e7.csv');
2167
		if (file_exists($tmp_dir.'owner_e7.csv')) {
2168
			if ($globalDebug) echo "Add to DB...";
2169
			$error = update_db::retrieve_owner($tmp_dir.'owner_e7.csv','E7');
2170
		} else $error = "File ".$tmp_dir.'owner_e7.csv'." doesn't exist. Download failed.";
2171
		if ($error != '') {
2172
			return $error;
2173
		} elseif ($globalDebug) echo "Done\n";
2174
		if ($globalDebug) echo "Owner Brazil: Download...";
2175
		update_db::download('http://antonakis.co.uk/registers/Brazil.txt',$tmp_dir.'owner_pp.csv');
2176
		if (file_exists($tmp_dir.'owner_pp.csv')) {
2177
			if ($globalDebug) echo "Add to DB...";
2178
			$error = update_db::retrieve_owner($tmp_dir.'owner_pp.csv','PP');
2179
		} else $error = "File ".$tmp_dir.'owner_pp.csv'." doesn't exist. Download failed.";
2180
		if ($error != '') {
2181
			return $error;
2182
		} elseif ($globalDebug) echo "Done\n";
2183
		if ($globalDebug) echo "Owner Cayman Islands: Download...";
2184
		update_db::download('http://antonakis.co.uk/registers/CaymanIslands.txt',$tmp_dir.'owner_vp.csv');
2185
		if (file_exists($tmp_dir.'owner_vp.csv')) {
2186
			if ($globalDebug) echo "Add to DB...";
2187
			$error = update_db::retrieve_owner($tmp_dir.'owner_vp.csv','VP');
2188
		} else $error = "File ".$tmp_dir.'owner_vp.csv'." doesn't exist. Download failed.";
2189
		if ($error != '') {
2190
			return $error;
2191
		} elseif ($globalDebug) echo "Done\n";
2192
		if ($globalDebug) echo "Owner Croatia: Download...";
2193
		update_db::download('http://antonakis.co.uk/registers/Croatia.txt',$tmp_dir.'owner_9a.csv');
2194
		if (file_exists($tmp_dir.'owner_9a.csv')) {
2195
			if ($globalDebug) echo "Add to DB...";
2196
			$error = update_db::retrieve_owner($tmp_dir.'owner_9a.csv','9A');
2197
		} else $error = "File ".$tmp_dir.'owner_9a.csv'." doesn't exist. Download failed.";
2198
		if ($error != '') {
2199
			return $error;
2200
		} elseif ($globalDebug) echo "Done\n";
2201
		if ($globalDebug) echo "Owner Luxembourg: Download...";
2202
		update_db::download('http://antonakis.co.uk/registers/Luxembourg.txt',$tmp_dir.'owner_lx.csv');
2203
		if (file_exists($tmp_dir.'owner_lx.csv')) {
2204
			if ($globalDebug) echo "Add to DB...";
2205
			$error = update_db::retrieve_owner($tmp_dir.'owner_lx.csv','LX');
2206
		} else $error = "File ".$tmp_dir.'owner_lx.csv'." doesn't exist. Download failed.";
2207
		if ($error != '') {
2208
			return $error;
2209
		} elseif ($globalDebug) echo "Done\n";
2210
		if ($globalDebug) echo "Owner Maldives: Download...";
2211
		update_db::download('http://antonakis.co.uk/registers/Maldives.txt',$tmp_dir.'owner_8q.csv');
2212
		if (file_exists($tmp_dir.'owner_8q.csv')) {
2213
			if ($globalDebug) echo "Add to DB...";
2214
			$error = update_db::retrieve_owner($tmp_dir.'owner_8q.csv','8Q');
2215
		} else $error = "File ".$tmp_dir.'owner_8q.csv'." doesn't exist. Download failed.";
2216
		if ($error != '') {
2217
			return $error;
2218
		} elseif ($globalDebug) echo "Done\n";
2219
		if ($globalDebug) echo "Owner New Zealand: Download...";
2220
		update_db::download('http://antonakis.co.uk/registers/NewZealand.txt',$tmp_dir.'owner_zk.csv');
2221
		if (file_exists($tmp_dir.'owner_zk.csv')) {
2222
			if ($globalDebug) echo "Add to DB...";
2223
			$error = update_db::retrieve_owner($tmp_dir.'owner_zk.csv','ZK');
2224
		} else $error = "File ".$tmp_dir.'owner_zk.csv'." doesn't exist. Download failed.";
2225
		if ($error != '') {
2226
			return $error;
2227
		} elseif ($globalDebug) echo "Done\n";
2228
		if ($globalDebug) echo "Owner Papua New Guinea: Download...";
2229
		update_db::download('http://antonakis.co.uk/registers/PapuaNewGuinea.txt',$tmp_dir.'owner_p2.csv');
2230
		if (file_exists($tmp_dir.'owner_p2.csv')) {
2231
			if ($globalDebug) echo "Add to DB...";
2232
			$error = update_db::retrieve_owner($tmp_dir.'owner_p2.csv','P2');
2233
		} else $error = "File ".$tmp_dir.'owner_p2.csv'." doesn't exist. Download failed.";
2234
		if ($error != '') {
2235
			return $error;
2236
		} elseif ($globalDebug) echo "Done\n";
2237
		if ($globalDebug) echo "Owner Slovakia: Download...";
2238
		update_db::download('http://antonakis.co.uk/registers/Slovakia.txt',$tmp_dir.'owner_om.csv');
2239
		if (file_exists($tmp_dir.'owner_om.csv')) {
2240
			if ($globalDebug) echo "Add to DB...";
2241
			$error = update_db::retrieve_owner($tmp_dir.'owner_om.csv','OM');
2242
		} else $error = "File ".$tmp_dir.'owner_om.csv'." doesn't exist. Download failed.";
2243
		if ($error != '') {
2244
			return $error;
2245
		} elseif ($globalDebug) echo "Done\n";
2246
		if ($globalDebug) echo "Owner Ecuador: Download...";
2247
		update_db::download('http://antonakis.co.uk/registers/Ecuador.txt',$tmp_dir.'owner_hc.csv');
2248
		if (file_exists($tmp_dir.'owner_hc.csv')) {
2249
			if ($globalDebug) echo "Add to DB...";
2250
			$error = update_db::retrieve_owner($tmp_dir.'owner_hc.csv','HC');
2251
		} else $error = "File ".$tmp_dir.'owner_hc.csv'." doesn't exist. Download failed.";
2252
		if ($error != '') {
2253
			return $error;
2254
		} elseif ($globalDebug) echo "Done\n";
2255
		if ($globalDebug) echo "Owner Iceland: Download...";
2256
		update_db::download('http://antonakis.co.uk/registers/Iceland.txt',$tmp_dir.'owner_tf.csv');
2257
		if (file_exists($tmp_dir.'owner_tf.csv')) {
2258
			if ($globalDebug) echo "Add to DB...";
2259
			$error = update_db::retrieve_owner($tmp_dir.'owner_tf.csv','TF');
2260
		} else $error = "File ".$tmp_dir.'owner_tf.csv'." doesn't exist. Download failed.";
2261
		if ($error != '') {
2262
			return $error;
2263
		} elseif ($globalDebug) echo "Done\n";
2264
		if ($globalDebug) echo "Owner Isle of Man: Download...";
2265
		update_db::download('http://antonakis.co.uk/registers/IsleOfMan.txt',$tmp_dir.'owner_m.csv');
2266
		if (file_exists($tmp_dir.'owner_m.csv')) {
2267
			if ($globalDebug) echo "Add to DB...";
2268
			$error = update_db::retrieve_owner($tmp_dir.'owner_m.csv','M');
2269
		} else $error = "File ".$tmp_dir.'owner_m.csv'." doesn't exist. Download failed.";
2270
		if ($error != '') {
2271
			return $error;
2272
		} elseif ($globalDebug) echo "Done\n";
2273
		if ($globalMasterSource) {
2274
			if ($globalDebug) echo "ModeS Netherlands: Download...";
2275
			update_db::download('http://antonakis.co.uk/registers/Netherlands.txt',$tmp_dir.'owner_ph.csv');
2276
			if (file_exists($tmp_dir.'owner_ph.csv')) {
2277
				if ($globalDebug) echo "Add to DB...";
2278
				$error = update_db::retrieve_owner($tmp_dir.'owner_ph.csv','PH');
2279
			} else $error = "File ".$tmp_dir.'owner_ph.csv'." doesn't exist. Download failed.";
2280
			if ($error != '') {
2281
				return $error;
2282
			} elseif ($globalDebug) echo "Done\n";
2283
			if ($globalDebug) echo "ModeS Denmark: Download...";
2284
			update_db::download('http://antonakis.co.uk/registers/Denmark.txt',$tmp_dir.'owner_oy.csv');
2285
			if (file_exists($tmp_dir.'owner_oy.csv')) {
2286
				if ($globalDebug) echo "Add to DB...";
2287
				$error = update_db::retrieve_owner($tmp_dir.'owner_oy.csv','OY');
2288
			} else $error = "File ".$tmp_dir.'owner_oy.csv'." doesn't exist. Download failed.";
2289
			if ($error != '') {
2290
				return $error;
2291
			} elseif ($globalDebug) echo "Done\n";
2292
		} elseif ($globalDebug) echo "Done\n";
2293
		return '';
2294
	}
2295
2296
	public static function update_translation() {
2297
		global $tmp_dir, $globalDebug;
2298
		$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...
2299
		if ($globalDebug) echo "Translation : Download...";
2300
		update_db::download('http://www.acarsd.org/download/translation.php',$tmp_dir.'translation.zip');
2301
		if (file_exists($tmp_dir.'translation.zip')) {
2302
			if ($globalDebug) echo "Unzip...";
2303
			update_db::unzip($tmp_dir.'translation.zip');
2304
			if ($globalDebug) echo "Add to DB...";
2305
			$error = update_db::translation();
2306
		} else $error = "File ".$tmp_dir.'translation.zip'." doesn't exist. Download failed.";
2307
		if ($error != '') {
2308
			return $error;
2309
		} elseif ($globalDebug) echo "Done\n";
2310
		return '';
2311
	}
2312
2313
	public static function update_translation_fam() {
2314
		global $tmp_dir, $globalDebug;
2315
		if ($globalDebug) echo "Translation from FlightAirMap website : Download...";
2316
		update_db::download('http://data.flightairmap.com/data/translation.tsv.gz',$tmp_dir.'translation.tsv.gz');
2317
		update_db::download('http://data.flightairmap.com/data/translation.tsv.gz.md5',$tmp_dir.'translation.tsv.gz.md5');
2318
		if (file_exists($tmp_dir.'translation.tsv.gz') && file_exists($tmp_dir.'translation.tsv.gz')) {
2319
			$translation_md5_file = explode(' ',file_get_contents($tmp_dir.'translation.tsv.gz.md5'));
2320
			$translation_md5 = $translation_md5_file[0];
2321
			if (md5_file($tmp_dir.'translation.tsv.gz') == $translation_md5) {
2322
				if ($globalDebug) echo "Gunzip...";
2323
				update_db::gunzip($tmp_dir.'translation.tsv.gz');
2324
				if ($globalDebug) echo "Add to DB...";
2325
				$error = update_db::translation_fam();
2326
			} else $error = "File ".$tmp_dir.'translation.tsv.gz'." md5 failed. Download failed.";
2327
		} else $error = "File ".$tmp_dir.'translation.tsv.gz'." doesn't exist. Download failed.";
2328
		if ($error != '') {
2329
			return $error;
2330
		} elseif ($globalDebug) echo "Done\n";
2331
		return '';
2332
	}
2333
	public static function update_ModeS_fam() {
2334
		global $tmp_dir, $globalDebug;
2335
		if ($globalDebug) echo "ModeS from FlightAirMap website : Download...";
2336
		update_db::download('http://data.flightairmap.com/data/modes.tsv.gz',$tmp_dir.'modes.tsv.gz');
2337
		update_db::download('http://data.flightairmap.com/data/modes.tsv.gz.md5',$tmp_dir.'modes.tsv.gz.md5');
2338
		if (file_exists($tmp_dir.'modes.tsv.gz') && file_exists($tmp_dir.'modes.tsv.gz.md5')) {
2339
			$modes_md5_file = explode(' ',file_get_contents($tmp_dir.'modes.tsv.gz.md5'));
2340
			$modes_md5 = $modes_md5_file[0];
2341
			if (md5_file($tmp_dir.'modes.tsv.gz') == $modes_md5) {
2342
				if ($globalDebug) echo "Gunzip...";
2343
				update_db::gunzip($tmp_dir.'modes.tsv.gz');
2344
				if ($globalDebug) echo "Add to DB...";
2345
				$error = update_db::modes_fam();
2346
			} else $error = "File ".$tmp_dir.'modes.tsv.gz'." md5 failed. Download failed.";
2347
		} else $error = "File ".$tmp_dir.'modes.tsv.gz'." doesn't exist. Download failed.";
2348
		if ($error != '') {
2349
			return $error;
2350
		} elseif ($globalDebug) echo "Done\n";
2351
		return '';
2352
	}
2353
	public static function update_owner_fam() {
2354
		global $tmp_dir, $globalDebug, $globalOwner;
2355
		if ($globalDebug) echo "owner from FlightAirMap website : Download...";
2356
		if ($globalOwner === TRUE) {
2357
			update_db::download('http://data.flightairmap.com/data/owners_all.tsv.gz',$tmp_dir.'owners.tsv.gz');
2358
			update_db::download('http://data.flightairmap.com/data/owners_all.tsv.gz.md5',$tmp_dir.'owners.tsv.gz.md5');
2359
		} else {
2360
			update_db::download('http://data.flightairmap.com/data/owners.tsv.gz',$tmp_dir.'owners.tsv.gz');
2361
			update_db::download('http://data.flightairmap.com/data/owners.tsv.gz.md5',$tmp_dir.'owners.tsv.gz.md5');
2362
		}
2363
		if (file_exists($tmp_dir.'owners.tsv.gz') && file_exists($tmp_dir.'owners.tsv.gz.md5')) {
2364
			$owners_md5_file = explode(' ',file_get_contents($tmp_dir.'owners.tsv.gz.md5'));
2365
			$owners_md5 = $owners_md5_file[0];
2366
			if (md5_file($tmp_dir.'owners.tsv.gz') == $owners_md5) {
2367
				if ($globalDebug) echo "Gunzip...";
2368
				update_db::gunzip($tmp_dir.'owners.tsv.gz');
2369
				if ($globalDebug) echo "Add to DB...";
2370
				$error = update_db::owner_fam();
2371
			} else $error = "File ".$tmp_dir.'owners.tsv.gz'." md5 failed. Download failed.";
2372
		} else $error = "File ".$tmp_dir.'owners.tsv.gz'." doesn't exist. Download failed.";
2373
		if ($error != '') {
2374
			return $error;
2375
		} elseif ($globalDebug) echo "Done\n";
2376
		return '';
2377
	}
2378
	public static function update_routes_fam() {
2379
		global $tmp_dir, $globalDebug;
2380
		if ($globalDebug) echo "Routes from FlightAirMap website : Download...";
2381
		update_db::download('http://data.flightairmap.com/data/routes.tsv.gz',$tmp_dir.'routes.tsv.gz');
2382
		update_db::download('http://data.flightairmap.com/data/routes.tsv.gz.md5',$tmp_dir.'routes.tsv.gz.md5');
2383
		if (file_exists($tmp_dir.'routes.tsv.gz') && file_exists($tmp_dir.'routes.tsv.gz.md5')) {
2384
			$routes_md5_file = explode(' ',file_get_contents($tmp_dir.'routes.tsv.gz.md5'));
2385
			$routes_md5 = $routes_md5_file[0];
2386
			if (md5_file($tmp_dir.'routes.tsv.gz') == $routes_md5) {
2387
				if ($globalDebug) echo "Gunzip...";
2388
				update_db::gunzip($tmp_dir.'routes.tsv.gz');
2389
				if ($globalDebug) echo "Add to DB...";
2390
				$error = update_db::routes_fam();
2391
			} else $error = "File ".$tmp_dir.'routes.tsv.gz'." md5 failed. Download failed.";
2392
		} else $error = "File ".$tmp_dir.'routes.tsv.gz'." doesn't exist. Download failed.";
2393
		if ($error != '') {
2394
			return $error;
2395
		} elseif ($globalDebug) echo "Done\n";
2396
		return '';
2397
	}
2398
	public static function update_marine_identity_fam() {
2399
		global $tmp_dir, $globalDebug;
2400
		update_db::download('http://data.flightairmap.com/data/marine_identity.tsv.gz.md5',$tmp_dir.'marine_identity.tsv.gz.md5');
2401
		if (file_exists($tmp_dir.'marine_identity.tsv.gz.md5')) {
2402
			$marine_identity_md5_file = explode(' ',file_get_contents($tmp_dir.'marine_identity.tsv.gz.md5'));
2403
			$marine_identity_md5 = $marine_identity_md5_file[0];
2404
			if (!update_db::check_marine_identity_version($marine_identity_md5)) {
2405
				if ($globalDebug) echo "Marine identity from FlightAirMap website : Download...";
2406
				update_db::download('http://data.flightairmap.com/data/marine_identity.tsv.gz',$tmp_dir.'marine_identity.tsv.gz');
2407
				if (file_exists($tmp_dir.'marine_identity.tsv.gz')) {
2408
					if (md5_file($tmp_dir.'marine_identity.tsv.gz') == $marine_identity_md5) {
2409
						if ($globalDebug) echo "Gunzip...";
2410
						update_db::gunzip($tmp_dir.'marine_identity.tsv.gz');
2411
						if ($globalDebug) echo "Add to DB...";
2412
						$error = update_db::marine_identity_fam();
2413
					} else $error = "File ".$tmp_dir.'marine_identity.tsv.gz'." md5 failed. Download failed.";
2414
				} else $error = "File ".$tmp_dir.'marine_identity.tsv.gz'." doesn't exist. Download failed.";
2415
				if ($error != '') {
2416
					return $error;
2417
				} elseif ($globalDebug) {
2418
					update_db::insert_marine_identity_version($marine_identity_md5);
2419
					echo "Done\n";
2420
				}
2421
			}
2422
		}
2423
		return '';
2424
	}
2425
2426
	public static function update_satellite_fam() {
2427
		global $tmp_dir, $globalDebug;
2428
		update_db::download('http://data.flightairmap.com/data/satellite.tsv.gz.md5',$tmp_dir.'satellite.tsv.gz.md5');
2429
		if (file_exists($tmp_dir.'satellite.tsv.gz.md5')) {
2430
			$satellite_md5_file = explode(' ',file_get_contents($tmp_dir.'satellite.tsv.gz.md5'));
2431
			$satellite_md5 = $satellite_md5_file[0];
2432
			if (!update_db::check_satellite_version($satellite_md5)) {
2433
				if ($globalDebug) echo "Satellite from FlightAirMap website : Download...";
2434
				update_db::download('http://data.flightairmap.com/data/satellite.tsv.gz',$tmp_dir.'satellite.tsv.gz');
2435
				if (file_exists($tmp_dir.'satellite.tsv.gz')) {
2436
					if (md5_file($tmp_dir.'satellite.tsv.gz') == $satellite_md5) {
2437
						if ($globalDebug) echo "Gunzip...";
2438
						update_db::gunzip($tmp_dir.'satellite.tsv.gz');
2439
						if ($globalDebug) echo "Add to DB...";
2440
						$error = update_db::satellite_fam();
2441
					} else $error = "File ".$tmp_dir.'satellite.tsv.gz'." md5 failed. Download failed.";
2442
				} else $error = "File ".$tmp_dir.'satellite.tsv.gz'." doesn't exist. Download failed.";
2443
				if ($error != '') {
2444
					return $error;
2445
				} elseif ($globalDebug) {
2446
					update_db::insert_satellite_version($satellite_md5);
2447
					echo "Done\n";
2448
				}
2449
			}
2450
		}
2451
		return '';
2452
	}
2453
	public static function update_banned_fam() {
2454
		global $tmp_dir, $globalDebug;
2455
		if ($globalDebug) echo "Banned airlines in Europe from FlightAirMap website : Download...";
2456
		update_db::download('http://data.flightairmap.com/data/ban-eu.csv',$tmp_dir.'ban_eu.csv');
2457
		if (file_exists($tmp_dir.'ban_eu.csv')) {
2458
			//if ($globalDebug) echo "Gunzip...";
2459
			//update_db::gunzip($tmp_dir.'ban_ue.csv');
2460
			if ($globalDebug) echo "Add to DB...";
2461
			$error = update_db::banned_fam();
2462
		} else $error = "File ".$tmp_dir.'ban_eu.csv'." doesn't exist. Download failed.";
2463
		if ($error != '') {
2464
			return $error;
2465
		} elseif ($globalDebug) echo "Done\n";
2466
		return '';
2467
	}
2468
2469
	public static function update_airspace_fam() {
2470
		global $tmp_dir, $globalDebug, $globalDBdriver;
2471
		include_once('class.create_db.php');
2472
		$error = '';
2473
		if ($globalDebug) echo "Airspace from FlightAirMap website : Download...";
2474
		if ($globalDBdriver == 'mysql') {
2475
			update_db::download('http://data.flightairmap.com/data/airspace_mysql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2476
		} else {
2477
			update_db::download('http://data.flightairmap.com/data/airspace_pgsql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2478
		}
2479
		if (file_exists($tmp_dir.'airspace.sql.gz.md5')) {
2480
			$airspace_md5_file = explode(' ',file_get_contents($tmp_dir.'airspace.sql.gz.md5'));
2481
			$airspace_md5 = $airspace_md5_file[0];
2482
			if (!update_db::check_airspace_version($airspace_md5)) {
2483
				if ($globalDBdriver == 'mysql') {
2484
					update_db::download('http://data.flightairmap.com/data/airspace_mysql.sql.gz',$tmp_dir.'airspace.sql.gz');
2485
				} else {
2486
					update_db::download('http://data.flightairmap.com/data/airspace_pgsql.sql.gz',$tmp_dir.'airspace.sql.gz');
2487
				}
2488
				if (file_exists($tmp_dir.'airspace.sql.gz')) {
2489
					if (md5_file($tmp_dir.'airspace.sql.gz') == $airspace_md5) {
2490
						if ($globalDebug) echo "Gunzip...";
2491
						update_db::gunzip($tmp_dir.'airspace.sql.gz');
2492
						if ($globalDebug) echo "Add to DB...";
2493
						$Connection = new Connection();
2494
						if ($Connection->tableExists('airspace')) {
2495
							$query = 'DROP TABLE airspace';
2496
							try {
2497
								$sth = $Connection->db->prepare($query);
2498
								$sth->execute();
2499
							} catch(PDOException $e) {
2500
								return "error : ".$e->getMessage();
2501
							}
2502
						}
2503
						$error = create_db::import_file($tmp_dir.'airspace.sql');
2504
						update_db::insert_airspace_version($airspace_md5);
2505
					} else $error = "File ".$tmp_dir.'airspace.sql.gz'." md5 failed. Download failed.";
2506
				} else $error = "File ".$tmp_dir.'airspace.sql.gz'." doesn't exist. Download failed.";
2507
			}
2508
		} else $error = "File ".$tmp_dir.'airspace.sql.gz.md5'." doesn't exist. Download failed.";
2509
		if ($error != '') {
2510
			return $error;
2511
		} elseif ($globalDebug) echo "Done\n";
2512
		return '';
2513
	}
2514
2515
	public static function update_geoid_fam() {
2516
		global $tmp_dir, $globalDebug, $globalGeoidSource;
2517
		$error = '';
2518
		if ($globalDebug) echo "Geoid from FlightAirMap website : Download...";
2519
		update_db::download('http://data.flightairmap.com/data/geoid/'.$globalGeoidSource.'.pgm.gz.md5',$tmp_dir.$globalGeoidSource.'.pgm.gz.md5');
2520
		if (file_exists($tmp_dir.$globalGeoidSource.'.pgm.gz.md5')) {
2521
			$geoid_md5_file = explode(' ',file_get_contents($tmp_dir.$globalGeoidSource.'.pgm.gz.md5'));
2522
			$geoid_md5 = $geoid_md5_file[0];
2523
			if (!update_db::check_geoid_version($geoid_md5)) {
2524
				update_db::download('http://data.flightairmap.com/data/geoid/'.$globalGeoidSource.'.pgm.gz',$tmp_dir.$globalGeoidSource.'.pgm.gz');
2525
				if (file_exists($tmp_dir.$globalGeoidSource.'.pgm.gz')) {
2526
					if (md5_file($tmp_dir.$globalGeoidSource.'.pgm.gz') == $geoid_md5) {
2527
						if ($globalDebug) echo "Gunzip...";
2528
						update_db::gunzip($tmp_dir.$globalGeoidSource.'.pgm.gz',dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm');
2529
						if (file_exists(dirname(__FILE__).'/../data/'.$globalGeoidSource.'.pgm')) {
2530
							update_db::insert_geoid_version($geoid_md5);
2531
						}
2532
					} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz'." md5 failed. Download failed.";
2533
				} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz'." doesn't exist. Download failed.";
2534
			}
2535
		} else $error = "File ".$tmp_dir.$globalGeoidSource.'.pgm.gz.md5'." doesn't exist. Download failed.";
2536
		if ($error != '') {
2537
			return $error;
2538
		} elseif ($globalDebug) echo "Done\n";
2539
		return '';
2540
	}
2541
2542
	public static function update_tle() {
2543
		global $tmp_dir, $globalDebug;
2544
		if ($globalDebug) echo "Download TLE : Download...";
2545
		$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',
2546
		'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',
2547
		'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');
2548
		foreach ($alltle as $filename) {
2549
			if ($globalDebug) echo "downloading ".$filename.'...';
2550
			update_db::download('http://celestrak.com/NORAD/elements/'.$filename,$tmp_dir.$filename);
2551
			if (file_exists($tmp_dir.$filename)) {
2552
				if ($globalDebug) echo "Add to DB ".$filename."...";
2553
				$error = update_db::tle($tmp_dir.$filename,str_replace('.txt','',$filename));
2554
			} else $error = "File ".$tmp_dir.$filename." doesn't exist. Download failed.";
2555
			if ($error != '') {
2556
				echo $error."\n";
2557
			} elseif ($globalDebug) echo "Done\n";
2558
		}
2559
		return '';
2560
	}
2561
2562
	public static function update_ucsdb() {
2563
		global $tmp_dir, $globalDebug;
2564
		if ($globalDebug) echo "Download UCS DB : Download...";
2565
		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');
2566
		if (file_exists($tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt')) {
2567
			if ($globalDebug) echo "Add to DB...";
2568
			$error = update_db::satellite_ucsdb($tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt');
2569
		} else $error = "File ".$tmp_dir.'UCS_Satellite_Database_officialname_1-1-17.txt'." doesn't exist. Download failed.";
2570
		if ($error != '') {
2571
			echo $error."\n";
2572
		} elseif ($globalDebug) echo "Done\n";
2573
		return '';
2574
	}
2575
2576
	public static function update_celestrak() {
2577
		global $tmp_dir, $globalDebug;
2578
		if ($globalDebug) echo "Download Celestrak DB : Download...";
2579
		update_db::download('http://celestrak.com/pub/satcat.txt',$tmp_dir.'satcat.txt');
2580
		if (file_exists($tmp_dir.'satcat.txt')) {
2581
			if ($globalDebug) echo "Add to DB...";
2582
			$error = update_db::satellite_celestrak($tmp_dir.'satcat.txt');
2583
		} else $error = "File ".$tmp_dir.'satcat.txt'." doesn't exist. Download failed.";
2584
		if ($error != '') {
2585
			echo $error."\n";
2586
		} elseif ($globalDebug) echo "Done\n";
2587
		return '';
2588
	}
2589
2590
	public static function update_models() {
2591
		global $tmp_dir, $globalDebug;
2592
		$error = '';
2593
		if ($globalDebug) echo "Models from FlightAirMap website : Download...";
2594
		update_db::download('http://data.flightairmap.com/data/models/models.md5sum',$tmp_dir.'models.md5sum');
2595
		if (file_exists($tmp_dir.'models.md5sum')) {
2596
			if ($globalDebug) echo "Check files...\n";
2597
			$newmodelsdb = array();
2598
			if (($handle = fopen($tmp_dir.'models.md5sum','r')) !== FALSE) {
2599
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2600
					$model = trim($row[2]);
2601
					$newmodelsdb[$model] = trim($row[0]);
2602
				}
2603
			}
2604
			$modelsdb = array();
2605
			if (file_exists(dirname(__FILE__).'/../models/models.md5sum')) {
2606
				if (($handle = fopen(dirname(__FILE__).'/../models/models.md5sum','r')) !== FALSE) {
2607
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2608
						$model = trim($row[2]);
2609
						$modelsdb[$model] = trim($row[0]);
2610
					}
2611
				}
2612
			}
2613
			$diff = array_diff($newmodelsdb,$modelsdb);
2614
			foreach ($diff as $key => $value) {
2615
				if ($globalDebug) echo 'Downloading model '.$key.' ...'."\n";
2616
				update_db::download('http://data.flightairmap.com/data/models/'.$key,dirname(__FILE__).'/../models/'.$key);
2617
				
2618
			}
2619
			update_db::download('http://data.flightairmap.com/data/models/models.md5sum',dirname(__FILE__).'/../models/models.md5sum');
2620
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2621
		if ($error != '') {
2622
			return $error;
2623
		} elseif ($globalDebug) echo "Done\n";
2624
		return '';
2625
	}
2626
2627
	public static function update_space_models() {
2628
		global $tmp_dir, $globalDebug;
2629
		$error = '';
2630
		if ($globalDebug) echo "Space models from FlightAirMap website : Download...";
2631
		update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',$tmp_dir.'space_models.md5sum');
2632
		if (file_exists($tmp_dir.'space_models.md5sum')) {
2633
			if ($globalDebug) echo "Check files...\n";
2634
			$newmodelsdb = array();
2635
			if (($handle = fopen($tmp_dir.'space_models.md5sum','r')) !== FALSE) {
2636
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2637
					$model = trim($row[2]);
2638
					$newmodelsdb[$model] = trim($row[0]);
2639
				}
2640
			}
2641
			$modelsdb = array();
2642
			if (file_exists(dirname(__FILE__).'/../models/space/space_models.md5sum')) {
2643
				if (($handle = fopen(dirname(__FILE__).'/../models/space/space_models.md5sum','r')) !== FALSE) {
2644
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2645
						$model = trim($row[2]);
2646
						$modelsdb[$model] = trim($row[0]);
2647
					}
2648
				}
2649
			}
2650
			$diff = array_diff($newmodelsdb,$modelsdb);
2651
			foreach ($diff as $key => $value) {
2652
				if ($globalDebug) echo 'Downloading space model '.$key.' ...'."\n";
2653
				update_db::download('http://data.flightairmap.com/data/models/space/'.$key,dirname(__FILE__).'/../models/space/'.$key);
2654
				
2655
			}
2656
			update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',dirname(__FILE__).'/../models/space/space_models.md5sum');
2657
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2658
		if ($error != '') {
2659
			return $error;
2660
		} elseif ($globalDebug) echo "Done\n";
2661
		return '';
2662
	}
2663
2664
	public static function update_vehicules_models() {
2665
		global $tmp_dir, $globalDebug;
2666
		$error = '';
2667
		if ($globalDebug) echo "Vehicules models from FlightAirMap website : Download...";
2668
		update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',$tmp_dir.'vehicules_models.md5sum');
2669
		if (file_exists($tmp_dir.'vehicules_models.md5sum')) {
2670
			if ($globalDebug) echo "Check files...\n";
2671
			$newmodelsdb = array();
2672
			if (($handle = fopen($tmp_dir.'vehicules_models.md5sum','r')) !== FALSE) {
2673
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2674
					$model = trim($row[2]);
2675
					$newmodelsdb[$model] = trim($row[0]);
2676
				}
2677
			}
2678
			$modelsdb = array();
2679
			if (file_exists(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum')) {
2680
				if (($handle = fopen(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum','r')) !== FALSE) {
2681
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2682
						$model = trim($row[2]);
2683
						$modelsdb[$model] = trim($row[0]);
2684
					}
2685
				}
2686
			}
2687
			$diff = array_diff($newmodelsdb,$modelsdb);
2688
			foreach ($diff as $key => $value) {
2689
				if ($globalDebug) echo 'Downloading vehicules model '.$key.' ...'."\n";
2690
				update_db::download('http://data.flightairmap.com/data/models/vehicules/'.$key,dirname(__FILE__).'/../models/vehicules/'.$key);
2691
				
2692
			}
2693
			update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum');
2694
		} else $error = "File ".$tmp_dir.'models.md5sum'." 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_aircraft() {
2702
		global $tmp_dir, $globalDebug;
2703
		date_default_timezone_set('UTC');
2704
		//$error = '';
2705
		/*
2706
		if ($globalDebug) echo "Aircrafts : Download...";
2707
		$data_req_array = array('Mnfctrer' => '','Model' => '','Dscrptn'=> '','EngCount' =>'' ,'EngType'=> '','TDesig' => '*','WTC' => '','Button' => 'Search');
2708
		$data_req = 'Mnfctrer=Airbus&Model=&Dscrptn=&EngCount=&EngType=&TDesig=&WTC=&Button=Search';
2709
		//$data = Common::getData('http://cfapp.icao.int/Doc8643/8643_List1.cfm','post',$data_req_array,array('Content-Type: application/x-www-form-urlencoded','Host: cfapp.icao.int','Origin: http://cfapp.icao.int','Pragma: no-cache','Upgrade-Insecure-Requests: 1','Content-Length: '.strlen($data_req)),'','http://cfapp.icao.int/Doc8643/search.cfm',20);
2710
		$data = Common::getData('http://cfapp.icao.int/Doc8643/8643_List1.cfm','post',$data_req_array,'','','http://cfapp.icao.int/Doc8643/search.cfm',30);
2711
//		echo strlen($data_req);
2712
		echo $data;
2713
		*/
2714
		if (file_exists($tmp_dir.'aircrafts.html')) {
2715
		    //var_dump(file_get_html($tmp_dir.'aircrafts.html'));
2716
		    $fh = fopen($tmp_dir.'aircrafts.html',"r");
2717
		    $result = fread($fh,100000000);
0 ignored issues
show
Unused Code introduced by
$result is not used, you could remove the assignment.

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

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

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

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

Loading history...
2718
		    //echo $result;
2719
		    //var_dump(str_get_html($result));
2720
		    //print_r(self::table2array($result));
2721
		}
2722
2723
	}
2724
	
2725
	public static function update_notam() {
2726
		global $tmp_dir, $globalDebug, $globalNOTAMSource;
2727
		require(dirname(__FILE__).'/../require/class.NOTAM.php');
2728
		$Common = new Common();
2729
		date_default_timezone_set('UTC');
2730
		$query = 'TRUNCATE TABLE notam';
2731
		try {
2732
			$Connection = new Connection();
2733
			$sth = $Connection->db->prepare($query);
2734
                        $sth->execute();
2735
                } catch(PDOException $e) {
2736
                        return "error : ".$e->getMessage();
2737
                }
2738
2739
		$error = '';
2740
		if ($globalDebug) echo "Notam : Download...";
2741
		update_db::download($globalNOTAMSource,$tmp_dir.'notam.rss');
2742
		if (file_exists($tmp_dir.'notam.rss')) {
2743
			$notams = json_decode(json_encode(simplexml_load_file($tmp_dir.'notam.rss')),true);
2744
			foreach ($notams['channel']['item'] as $notam) {
2745
				$title = explode(':',$notam['title']);
2746
				$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...
2747
				unset($title[0]);
2748
				$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...
2749
				$description = strip_tags($notam['description'],'<pre>');
2750
				preg_match(':^(.*?)<pre>:',$description,$match);
2751
				$q = explode('/',$match[1]);
2752
				$data['fir'] = $q[0];
2753
				$data['code'] = $q[1];
2754
				$ifrvfr = $q[2];
2755
				if ($ifrvfr == 'IV') $data['rules'] = 'IFR/VFR';
2756
				if ($ifrvfr == 'I') $data['rules'] = 'IFR';
2757
				if ($ifrvfr == 'V') $data['rules'] = 'VFR';
2758
				if ($q[4] == 'A') $data['scope'] = 'Airport warning';
2759
				if ($q[4] == 'E') $data['scope'] = 'Enroute warning';
2760
				if ($q[4] == 'W') $data['scope'] = 'Navigation warning';
2761
				if ($q[4] == 'AE') $data['scope'] = 'Airport/Enroute warning';
2762
				if ($q[4] == 'AW') $data['scope'] = 'Airport/Navigation warning';
2763
				//$data['scope'] = $q[4];
2764
				$data['lower_limit'] = $q[5];
2765
				$data['upper_limit'] = $q[6];
2766
				$latlonrad = $q[7];
2767
				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...
2768
				$latitude = $Common->convertDec($las,'latitude');
2769
				$longitude = $Common->convertDec($lns,'longitude');
2770
				if ($lac == 'S') $latitude = '-'.$latitude;
2771
				if ($lnc == 'W') $longitude = '-'.$longitude;
2772
				$data['center_latitude'] = $latitude;
2773
				$data['center_longitude'] = $longitude;
2774
				$data['radius'] = intval($radius);
2775
				
2776
				preg_match(':<pre>(.*?)</pre>:',$description,$match);
2777
				$data['text'] = $match[1];
2778
				preg_match(':</pre>(.*?)$:',$description,$match);
2779
				$fromto = $match[1];
2780
				preg_match('#FROM:(.*?)TO:#',$fromto,$match);
2781
				$fromall = trim($match[1]);
2782
				preg_match('#^(.*?) \((.*?)\)$#',$fromall,$match);
2783
				$from = trim($match[1]);
2784
				$data['date_begin'] = date("Y-m-d H:i:s",strtotime($from));
2785
				preg_match('#TO:(.*?)$#',$fromto,$match);
2786
				$toall = trim($match[1]);
2787
				if (!preg_match(':Permanent:',$toall)) {
2788
					preg_match('#^(.*?) \((.*?)\)#',$toall,$match);
2789
					$to = trim($match[1]);
2790
					$data['date_end'] = date("Y-m-d H:i:s",strtotime($to));
2791
					$data['permanent'] = 0;
2792
				} else {
2793
				    $data['date_end'] = NULL;
2794
				    $data['permanent'] = 1;
2795
				}
2796
				$data['full_notam'] = $notam['title'].'<br>'.$notam['description'];
2797
				$NOTAM = new NOTAM();
2798
				$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']);
2799
				unset($data);
2800
			} 
2801
		} else $error = "File ".$tmp_dir.'notam.rss'." doesn't exist. Download failed.";
2802
		if ($error != '') {
2803
			return $error;
2804
		} elseif ($globalDebug) echo "Done\n";
2805
		return '';
2806
	}
2807
	
2808
	public static function create_airspace() {
2809
		global $globalDBdriver, $globalDebug, $tmp_dir, $globalDBhost, $globalDBuser, $globalDBname, $globalDBpass, $globalDBport;
2810
		$Connection = new Connection();
2811
		if ($Connection->tableExists('airspace')) {
2812
			if ($globalDBdriver == 'mysql') {
2813
				$query = 'DROP TABLE geometry_columns; DROP TABLE spatial_ref_sys;DROP TABLE airspace;';
2814
			} else {
2815
				$query = 'DROP TABLE airspace';
2816
			}
2817
			try {
2818
				$Connection = new Connection();
2819
				$sth = $Connection->db->prepare($query);
2820
				$sth->execute();
2821
			} catch(PDOException $e) {
2822
				return "error : ".$e->getMessage();
2823
			}
2824
		}
2825
		$Common = new Common();
2826
		$airspace_lst = $Common->getData('https://raw.githubusercontent.com/XCSoar/xcsoar-data-repository/master/data/airspace.json');
2827
		$airspace_json = json_decode($airspace_lst,true);
2828
		foreach ($airspace_json['records'] as $airspace) {
2829
			if ($globalDebug) echo $airspace['name']."...\n";
2830
			update_db::download($airspace['uri'],$tmp_dir.$airspace['name']);
2831
			if (file_exists($tmp_dir.$airspace['name'])) {
2832
				file_put_contents($tmp_dir.$airspace['name'], utf8_encode(file_get_contents($tmp_dir.$airspace['name'])));
2833
				//system('recode l9..utf8 '.$tmp_dir.$airspace['name']);
2834
				if ($globalDBdriver == 'mysql') {
2835
					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'].'"');
2836
				} else {
2837
					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'].'"');
2838
				}
2839
			}
2840
		}
2841
	}
2842
	
2843
	public static function fix_icaotype() {
2844
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
2845
		$Spotter = new Spotter();
2846
		foreach ($Spotter->aircraft_correct_icaotype as $old => $new) {
2847
			$query = 'UPDATE aircraft_modes SET ICAOTypeCode = :new WHERE ICAOTypeCode = :old';
2848
			try {
2849
				$Connection = new Connection();
2850
				$sth = $Connection->db->prepare($query);
2851
				$sth->execute(array(':new' => $new, ':old' => $old));
2852
			} catch(PDOException $e) {
2853
				return "error : ".$e->getMessage();
2854
			}
2855
		}
2856
	}
2857
2858
	public static function check_last_update() {
2859
		global $globalDBdriver;
2860
		if ($globalDBdriver == 'mysql') {
2861
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
2862
		} else {
2863
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
2864
		}
2865
		try {
2866
			$Connection = new Connection();
2867
			$sth = $Connection->db->prepare($query);
2868
                        $sth->execute();
2869
                } catch(PDOException $e) {
2870
                        return "error : ".$e->getMessage();
2871
                }
2872
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2873
                if ($row['nb'] > 0) return false;
2874
                else return true;
2875
	}
2876
2877
	public static function insert_last_update() {
2878
		$query = "DELETE FROM config WHERE name = 'last_update_db';
2879
			INSERT INTO config (name,value) VALUES ('last_update_db',NOW());";
2880
		try {
2881
			$Connection = new Connection();
2882
			$sth = $Connection->db->prepare($query);
2883
                        $sth->execute();
2884
                } catch(PDOException $e) {
2885
                        return "error : ".$e->getMessage();
2886
                }
2887
	}
2888
2889
	public static function check_airspace_version($version) {
2890
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'airspace_version' AND value = :version";
2891
		try {
2892
			$Connection = new Connection();
2893
			$sth = $Connection->db->prepare($query);
2894
                        $sth->execute(array(':version' => $version));
2895
                } catch(PDOException $e) {
2896
                        return "error : ".$e->getMessage();
2897
                }
2898
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2899
                if ($row['nb'] > 0) return true;
2900
                else return false;
2901
	}
2902
2903
	public static function check_geoid_version($version) {
2904
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'geoid_version' AND value = :version";
2905
		try {
2906
			$Connection = new Connection();
2907
			$sth = $Connection->db->prepare($query);
2908
                        $sth->execute(array(':version' => $version));
2909
                } catch(PDOException $e) {
2910
                        return "error : ".$e->getMessage();
2911
                }
2912
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2913
                if ($row['nb'] > 0) return true;
2914
                else return false;
2915
	}
2916
2917
	public static function check_marine_identity_version($version) {
2918
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'marine_identity_version' AND value = :version";
2919
		try {
2920
			$Connection = new Connection();
2921
			$sth = $Connection->db->prepare($query);
2922
			$sth->execute(array(':version' => $version));
2923
		} catch(PDOException $e) {
2924
			return "error : ".$e->getMessage();
2925
		}
2926
		$row = $sth->fetch(PDO::FETCH_ASSOC);
2927
		if ($row['nb'] > 0) return true;
2928
		else return false;
2929
	}
2930
2931
	public static function check_satellite_version($version) {
2932
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'satellite_version' AND value = :version";
2933
		try {
2934
			$Connection = new Connection();
2935
			$sth = $Connection->db->prepare($query);
2936
			$sth->execute(array(':version' => $version));
2937
		} catch(PDOException $e) {
2938
			return "error : ".$e->getMessage();
2939
		}
2940
		$row = $sth->fetch(PDO::FETCH_ASSOC);
2941
		if ($row['nb'] > 0) return true;
2942
		else return false;
2943
	}
2944
2945
2946
	public static function insert_airspace_version($version) {
2947
		$query = "DELETE FROM config WHERE name = 'airspace_version';
2948
			INSERT INTO config (name,value) VALUES ('airspace_version',:version);";
2949
		try {
2950
			$Connection = new Connection();
2951
			$sth = $Connection->db->prepare($query);
2952
			$sth->execute(array(':version' => $version));
2953
		} catch(PDOException $e) {
2954
			return "error : ".$e->getMessage();
2955
		}
2956
	}
2957
	
2958
	public static function insert_geoid_version($version) {
2959
		$query = "DELETE FROM config WHERE name = 'geoid_version';
2960
			INSERT INTO config (name,value) VALUES ('geoid_version',:version);";
2961
		try {
2962
			$Connection = new Connection();
2963
			$sth = $Connection->db->prepare($query);
2964
                        $sth->execute(array(':version' => $version));
2965
                } catch(PDOException $e) {
2966
                        return "error : ".$e->getMessage();
2967
                }
2968
	}
2969
2970
	public static function insert_marine_identity_version($version) {
2971
		$query = "DELETE FROM config WHERE name = 'marine_identity_version';
2972
			INSERT INTO config (name,value) VALUES ('marine_identity_version',:version);";
2973
		try {
2974
			$Connection = new Connection();
2975
			$sth = $Connection->db->prepare($query);
2976
			$sth->execute(array(':version' => $version));
2977
		} catch(PDOException $e) {
2978
			return "error : ".$e->getMessage();
2979
		}
2980
	}
2981
2982
	public static function insert_satellite_version($version) {
2983
		$query = "DELETE FROM config WHERE name = 'satellite_version';
2984
			INSERT INTO config (name,value) VALUES ('satellite_version',:version);";
2985
		try {
2986
			$Connection = new Connection();
2987
			$sth = $Connection->db->prepare($query);
2988
			$sth->execute(array(':version' => $version));
2989
		} catch(PDOException $e) {
2990
			return "error : ".$e->getMessage();
2991
		}
2992
	}
2993
2994
	public static function check_last_notam_update() {
2995
		global $globalDBdriver;
2996
		if ($globalDBdriver == 'mysql') {
2997
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
2998
		} else {
2999
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
3000
		}
3001
		try {
3002
			$Connection = new Connection();
3003
			$sth = $Connection->db->prepare($query);
3004
                        $sth->execute();
3005
                } catch(PDOException $e) {
3006
                        return "error : ".$e->getMessage();
3007
                }
3008
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3009
                if ($row['nb'] > 0) return false;
3010
                else return true;
3011
	}
3012
3013
	public static function insert_last_notam_update() {
3014
		$query = "DELETE FROM config WHERE name = 'last_update_notam_db';
3015
			INSERT INTO config (name,value) VALUES ('last_update_notam_db',NOW());";
3016
		try {
3017
			$Connection = new Connection();
3018
			$sth = $Connection->db->prepare($query);
3019
                        $sth->execute();
3020
                } catch(PDOException $e) {
3021
                        return "error : ".$e->getMessage();
3022
                }
3023
	}
3024
3025
	public static function check_last_airspace_update() {
3026
		global $globalDBdriver;
3027
		if ($globalDBdriver == 'mysql') {
3028
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3029
		} else {
3030
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3031
		}
3032
		try {
3033
			$Connection = new Connection();
3034
			$sth = $Connection->db->prepare($query);
3035
                        $sth->execute();
3036
                } catch(PDOException $e) {
3037
                        return "error : ".$e->getMessage();
3038
                }
3039
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3040
                if ($row['nb'] > 0) return false;
3041
                else return true;
3042
	}
3043
3044
	public static function insert_last_airspace_update() {
3045
		$query = "DELETE FROM config WHERE name = 'last_update_airspace_db';
3046
			INSERT INTO config (name,value) VALUES ('last_update_airspace_db',NOW());";
3047
		try {
3048
			$Connection = new Connection();
3049
			$sth = $Connection->db->prepare($query);
3050
                        $sth->execute();
3051
                } catch(PDOException $e) {
3052
                        return "error : ".$e->getMessage();
3053
                }
3054
	}
3055
3056
	public static function check_last_geoid_update() {
3057
		global $globalDBdriver;
3058
		if ($globalDBdriver == 'mysql') {
3059
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3060
		} else {
3061
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3062
		}
3063
		try {
3064
			$Connection = new Connection();
3065
			$sth = $Connection->db->prepare($query);
3066
                        $sth->execute();
3067
                } catch(PDOException $e) {
3068
                        return "error : ".$e->getMessage();
3069
                }
3070
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3071
                if ($row['nb'] > 0) return false;
3072
                else return true;
3073
	}
3074
3075
	public static function insert_last_geoid_update() {
3076
		$query = "DELETE FROM config WHERE name = 'last_update_geoid';
3077
			INSERT INTO config (name,value) VALUES ('last_update_geoid',NOW());";
3078
		try {
3079
			$Connection = new Connection();
3080
			$sth = $Connection->db->prepare($query);
3081
                        $sth->execute();
3082
                } catch(PDOException $e) {
3083
                        return "error : ".$e->getMessage();
3084
                }
3085
	}
3086
3087
	public static function check_last_owner_update() {
3088
		global $globalDBdriver;
3089
		if ($globalDBdriver == 'mysql') {
3090
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3091
		} else {
3092
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3093
		}
3094
		try {
3095
			$Connection = new Connection();
3096
			$sth = $Connection->db->prepare($query);
3097
                        $sth->execute();
3098
                } catch(PDOException $e) {
3099
                        return "error : ".$e->getMessage();
3100
                }
3101
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3102
                if ($row['nb'] > 0) return false;
3103
                else return true;
3104
	}
3105
3106
	public static function insert_last_owner_update() {
3107
		$query = "DELETE FROM config WHERE name = 'last_update_owner_db';
3108
			INSERT INTO config (name,value) VALUES ('last_update_owner_db',NOW());";
3109
		try {
3110
			$Connection = new Connection();
3111
			$sth = $Connection->db->prepare($query);
3112
                        $sth->execute();
3113
                } catch(PDOException $e) {
3114
                        return "error : ".$e->getMessage();
3115
                }
3116
	}
3117
	public static function check_last_schedules_update() {
3118
		global $globalDBdriver;
3119
		if ($globalDBdriver == 'mysql') {
3120
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3121
		} else {
3122
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3123
		}
3124
		try {
3125
			$Connection = new Connection();
3126
			$sth = $Connection->db->prepare($query);
3127
                        $sth->execute();
3128
                } catch(PDOException $e) {
3129
                        return "error : ".$e->getMessage();
3130
                }
3131
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3132
                if ($row['nb'] > 0) return false;
3133
                else return true;
3134
	}
3135
3136
	public static function insert_last_schedules_update() {
3137
		$query = "DELETE FROM config WHERE name = 'last_update_schedules';
3138
			INSERT INTO config (name,value) VALUES ('last_update_schedules',NOW());";
3139
		try {
3140
			$Connection = new Connection();
3141
			$sth = $Connection->db->prepare($query);
3142
			$sth->execute();
3143
		} catch(PDOException $e) {
3144
			return "error : ".$e->getMessage();
3145
		}
3146
	}
3147
3148
	public static function check_last_tle_update() {
3149
		global $globalDBdriver;
3150
		if ($globalDBdriver == 'mysql') {
3151
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3152
		} else {
3153
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3154
		}
3155
		try {
3156
			$Connection = new Connection();
3157
			$sth = $Connection->db->prepare($query);
3158
			$sth->execute();
3159
		} catch(PDOException $e) {
3160
			return "error : ".$e->getMessage();
3161
		}
3162
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3163
		if ($row['nb'] > 0) return false;
3164
		else return true;
3165
	}
3166
3167
	public static function insert_last_tle_update() {
3168
		$query = "DELETE FROM config WHERE name = 'last_update_tle';
3169
			INSERT INTO config (name,value) VALUES ('last_update_tle',NOW());";
3170
		try {
3171
			$Connection = new Connection();
3172
			$sth = $Connection->db->prepare($query);
3173
			$sth->execute();
3174
		} catch(PDOException $e) {
3175
			return "error : ".$e->getMessage();
3176
		}
3177
	}
3178
3179
	public static function check_last_ucsdb_update() {
3180
		global $globalDBdriver;
3181
		if ($globalDBdriver == 'mysql') {
3182
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value > DATE_SUB(NOW(), INTERVAL 1 MONTH)";
3183
		} else {
3184
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 MONTH'";
3185
		}
3186
		try {
3187
			$Connection = new Connection();
3188
			$sth = $Connection->db->prepare($query);
3189
			$sth->execute();
3190
		} catch(PDOException $e) {
3191
			return "error : ".$e->getMessage();
3192
		}
3193
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3194
		if ($row['nb'] > 0) return false;
3195
		else return true;
3196
	}
3197
3198
	public static function insert_last_ucsdb_update() {
3199
		$query = "DELETE FROM config WHERE name = 'last_update_ucsdb';
3200
			INSERT INTO config (name,value) VALUES ('last_update_ucsdb',NOW());";
3201
		try {
3202
			$Connection = new Connection();
3203
			$sth = $Connection->db->prepare($query);
3204
			$sth->execute();
3205
		} catch(PDOException $e) {
3206
			return "error : ".$e->getMessage();
3207
		}
3208
	}
3209
3210
	public static function check_last_celestrak_update() {
3211
		global $globalDBdriver;
3212
		if ($globalDBdriver == 'mysql') {
3213
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3214
		} else {
3215
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3216
		}
3217
		try {
3218
			$Connection = new Connection();
3219
			$sth = $Connection->db->prepare($query);
3220
			$sth->execute();
3221
		} catch(PDOException $e) {
3222
			return "error : ".$e->getMessage();
3223
		}
3224
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3225
		if ($row['nb'] > 0) return false;
3226
		else return true;
3227
	}
3228
3229
	public static function insert_last_celestrak_update() {
3230
		$query = "DELETE FROM config WHERE name = 'last_update_celestrak';
3231
			INSERT INTO config (name,value) VALUES ('last_update_celestrak',NOW());";
3232
		try {
3233
			$Connection = new Connection();
3234
			$sth = $Connection->db->prepare($query);
3235
			$sth->execute();
3236
		} catch(PDOException $e) {
3237
			return "error : ".$e->getMessage();
3238
		}
3239
	}
3240
3241
	public static function check_last_marine_identity_update() {
3242
		global $globalDBdriver;
3243
		if ($globalDBdriver == 'mysql') {
3244
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3245
		} else {
3246
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3247
		}
3248
		try {
3249
			$Connection = new Connection();
3250
			$sth = $Connection->db->prepare($query);
3251
			$sth->execute();
3252
		} catch(PDOException $e) {
3253
			return "error : ".$e->getMessage();
3254
		}
3255
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3256
		if ($row['nb'] > 0) return false;
3257
		else return true;
3258
	}
3259
3260
	public static function check_last_satellite_update() {
3261
		global $globalDBdriver;
3262
		if ($globalDBdriver == 'mysql') {
3263
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
3264
		} else {
3265
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
3266
		}
3267
		try {
3268
			$Connection = new Connection();
3269
			$sth = $Connection->db->prepare($query);
3270
			$sth->execute();
3271
		} catch(PDOException $e) {
3272
			return "error : ".$e->getMessage();
3273
		}
3274
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3275
		if ($row['nb'] > 0) return false;
3276
		else return true;
3277
	}
3278
3279
	public static function insert_last_marine_identity_update() {
3280
		$query = "DELETE FROM config WHERE name = 'last_update_marine_identity';
3281
			INSERT INTO config (name,value) VALUES ('last_update_marine_identity',NOW());";
3282
		try {
3283
			$Connection = new Connection();
3284
			$sth = $Connection->db->prepare($query);
3285
			$sth->execute();
3286
		} catch(PDOException $e) {
3287
			return "error : ".$e->getMessage();
3288
		}
3289
	}
3290
3291
	public static function insert_last_satellite_update() {
3292
		$query = "DELETE FROM config WHERE name = 'last_update_satellite';
3293
			INSERT INTO config (name,value) VALUES ('last_update_satellite',NOW());";
3294
		try {
3295
			$Connection = new Connection();
3296
			$sth = $Connection->db->prepare($query);
3297
			$sth->execute();
3298
		} catch(PDOException $e) {
3299
			return "error : ".$e->getMessage();
3300
		}
3301
	}
3302
3303
	public static function delete_duplicatemodes() {
3304
		global $globalDBdriver;
3305
		if ($globalDBdriver == 'mysql') {
3306
			$query = "DELETE a FROM aircraft_modes a, aircraft_modes b WHERE a.ModeS = b.ModeS AND a.FirstCreated < b.FirstCreated AND a.Source != 'ACARS'";
3307
		} else {
3308
			$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'";
3309
		}
3310
		try {
3311
			$Connection = new Connection();
3312
			$sth = $Connection->db->prepare($query);
3313
                        $sth->execute();
3314
                } catch(PDOException $e) {
3315
                        return "error : ".$e->getMessage();
3316
                }
3317
	}
3318
	public static function delete_duplicateowner() {
3319
		global $globalDBdriver;
3320
		if ($globalDBdriver == 'mysql') {
3321
			$query = "DELETE a FROM aircraft_owner a, aircraft_owner b WHERE a.registration = b.registration AND a.owner_id < b.owner_id";
3322
		} else {
3323
			$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)";
3324
		}
3325
		try {
3326
			$Connection = new Connection();
3327
			$sth = $Connection->db->prepare($query);
3328
                        $sth->execute();
3329
                } catch(PDOException $e) {
3330
                        return "error : ".$e->getMessage();
3331
                }
3332
	}
3333
	
3334
	public static function update_all() {
3335
		global $globalMasterServer, $globalMasterSource;
3336
		if (!isset($globalMasterServer) || !$globalMasterServer) {
3337
			if (isset($globalMasterSource) && $globalMasterSource) {
3338
				echo update_db::update_routes();
3339
				echo update_db::update_translation();
3340
				//echo update_db::update_notam_fam();
3341
				echo update_db::update_ModeS();
3342
				//echo update_db::update_ModeS_flarm();
3343
				echo update_db::update_ModeS_ogn();
3344
				echo update_db::update_ModeS_faa();
3345
				echo update_db::fix_icaotype();
3346
				echo update_db::update_banned_fam();
3347
				//echo update_db::update_celestrak();
3348
				//echo update_db::delete_duplicatemodes();
3349
			} else {
3350
				//echo update_db::update_routes();
3351
				echo update_db::update_routes_fam();
3352
				//echo update_db::update_translation();
3353
				echo update_db::update_translation_fam();
3354
				//echo update_db::update_notam_fam();
3355
				//echo update_db::update_ModeS();
3356
				echo update_db::update_ModeS_fam();
3357
				//echo update_db::update_ModeS_flarm();
3358
				echo update_db::update_ModeS_ogn();
3359
				//echo update_db::delete_duplicatemodes();
3360
				echo update_db::update_banned_fam();
3361
			}
3362
		}
3363
	}
3364
}
3365
3366
//echo update_db::update_airports();
3367
//echo update_db::translation();
3368
//echo update_db::update_waypoints();
3369
//echo update_db::update_airspace();
3370
//echo update_db::update_notam();
3371
//echo update_db::update_ivao();
3372
//echo update_db::update_ModeS_flarm();
3373
//echo update_db::update_ModeS_ogn();
3374
//echo update_db::update_aircraft();
3375
//$update_db = new update_db();
3376
//echo update_db::update_owner();
3377
//update_db::update_translation_fam();
3378
//echo update_db::update_routes();
3379
//update_db::update_models();
3380
//echo $update_db::update_skyteam();
3381
//echo $update_db::update_tle();
3382
//echo update_db::update_notam_fam();
3383
//echo update_db::create_airspace();
3384
//echo update_db::update_ModeS();
3385
//echo update_db::update_ModeS_fam();
3386
//echo update_db::update_routes_fam();
3387
//echo update_db::update_ModeS_faa();
3388
//echo update_db::update_banned_fam();
3389
//echo update_db::modes_faa();
3390
//echo update_db::update_owner_fam();
3391
//echo update_db::delete_duplicateowner();
3392
//echo update_db::fix_icaotype();
3393
//echo update_db::satellite_ucsdb('tmp/UCS_Satellite_Database_officialname_1-1-17.txt');
3394
//echo update_db::satellite_celestrak('tmp/satcat.txt');
3395
?>
3396