Completed
Push — master ( 040873...39fb6c )
by Yannick
30:20
created

update_db::update_satellite_fam()   D

Complexity

Conditions 10
Paths 38

Size

Total Lines 27
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

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

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

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

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

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

Loading history...
1869
		$Common = new Common();
1870
		$Common->download('http://firms.modaps.eosdis.nasa.gov/active_fire/viirs/text/VNP14IMGTDL_NRT_Global_24h.csv',$tmp_dir.'fires.csv');
1871
		$Connection = new Connection();
0 ignored issues
show
Unused Code introduced by
$Connection is not used, you could remove the assignment.

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

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

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

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

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