Completed
Push — master ( 9fb1e4...96d9e7 )
by Yannick
35:21
created

update_db   D

Complexity

Total Complexity 926

Size/Duplication

Total Lines 3657
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
dl 0
loc 3657
rs 4.4102
c 0
b 0
f 0
wmc 926
lcom 1
cbo 5

105 Methods

Rating   Name   Duplication   Size   Complexity  
C download() 0 23 8
B gunzip() 0 20 7
A unzip() 0 11 4
A connect_sqlite() 0 8 2
D retrieve_route_sqlite_to_dest() 0 42 10
D retrieve_route_oneworld() 0 40 17
D retrieve_route_skyteam() 0 42 13
C retrieve_modes_sqlite_to_dest() 0 65 13
D retrieve_modes_flarmnet() 0 69 16
C retrieve_modes_ogn() 0 68 16
F retrieve_owner() 0 162 45
F update_airports() 0 341 64
C translation() 0 64 12
B translation_fam() 0 37 6
D modes_faa() 0 94 25
D modes_fam() 0 35 9
B airlines_fam() 0 56 9
C owner_fam() 0 36 8
D routes_fam() 0 34 9
D marine_identity_fam() 0 40 9
C satellite_fam() 0 36 15
C banned_fam() 0 33 8
C tle() 0 48 8
D satellite_ucsdb() 0 45 17
D satellite_celestrak() 0 240 20
C waypoints() 0 46 11
B update_fires() 0 20 6
C ivao_airlines() 0 35 8
B update_airspace() 0 30 5
C update_notam_fam() 0 30 11
A update_vatsim() 0 6 1
A update_countries() 0 21 4
A update_waypoints() 0 11 1
C update_ivao() 0 24 10
B update_routes() 0 16 7
B update_oneworld() 0 16 7
B update_skyteam() 0 16 7
C update_ModeS() 0 32 7
B update_ModeS_faa() 0 15 7
B update_ModeS_flarm() 0 13 6
B update_ModeS_ogn() 0 13 6
F update_owner() 0 206 113
B update_translation() 0 16 7
B update_translation_fam() 0 21 9
B update_ModeS_fam() 0 21 9
C update_airlines_fam() 0 28 11
D update_owner_fam() 0 26 10
B update_routes_fam() 0 20 9
D update_marine_identity_fam() 0 27 10
D update_satellite_fam() 0 27 10
B update_banned_fam() 0 15 6
F update_airspace_fam() 0 45 14
D update_geoid_fam() 0 26 10
B update_tle() 0 19 8
B update_ucsdb() 0 13 6
B update_celestrak() 0 13 6
F update_models() 0 67 25
C update_liveries() 0 36 13
C update_space_models() 0 36 13
C update_vehicules_models() 0 36 13
A update_aircraft() 0 23 2
D update_notam() 0 82 18
C create_airspace() 0 34 8
A fix_icaotype() 0 14 3
A check_last_update() 0 18 4
A insert_last_update() 0 11 2
A check_airspace_version() 0 13 3
A check_geoid_version() 0 13 3
A check_marine_identity_version() 0 13 3
A check_satellite_version() 0 13 3
A check_airlines_version() 0 13 3
A check_notam_version() 0 13 3
A insert_airlines_version() 0 11 2
A insert_notam_version() 0 11 2
A insert_airspace_version() 0 11 2
A insert_geoid_version() 0 11 2
A insert_marine_identity_version() 0 11 2
A insert_satellite_version() 0 11 2
A check_last_notam_update() 0 18 4
A insert_last_notam_update() 0 11 2
A check_last_airspace_update() 0 18 4
A insert_last_airspace_update() 0 11 2
A check_last_geoid_update() 0 18 4
A insert_last_geoid_update() 0 11 2
A check_last_owner_update() 0 18 4
A insert_last_owner_update() 0 11 2
A check_last_fires_update() 0 18 4
A insert_last_fires_update() 0 11 2
A check_last_airlines_update() 0 18 4
A insert_last_airlines_update() 0 11 2
A check_last_schedules_update() 0 18 4
A insert_last_schedules_update() 0 11 2
A check_last_tle_update() 0 18 4
A insert_last_tle_update() 0 11 2
A check_last_ucsdb_update() 0 18 4
A insert_last_ucsdb_update() 0 11 2
A check_last_celestrak_update() 0 18 4
A insert_last_celestrak_update() 0 11 2
A check_last_marine_identity_update() 0 18 4
A check_last_satellite_update() 0 18 4
A insert_last_marine_identity_update() 0 11 2
A insert_last_satellite_update() 0 11 2
A delete_duplicatemodes() 0 15 3
A delete_duplicateowner() 0 15 3
B update_all() 0 30 5

How to fix   Complexity   

Complex Class

Complex classes like update_db often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use update_db, and based on these observations, apply Extract Interface, too.

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
		if ($globalDebug) echo "glTF 2.0 Models from FlightAirMap website : Download...";
2745
		update_db::download('http://data.flightairmap.com/data/models/gltf2/models.md5sum',$tmp_dir.'modelsgltf2.md5sum');
2746
		if (file_exists($tmp_dir.'modelsgltf2.md5sum')) {
2747
			if ($globalDebug) echo "Check files...\n";
2748
			$newmodelsdb = array();
2749
			if (($handle = fopen($tmp_dir.'modelsgltf2.md5sum','r')) !== FALSE) {
2750
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2751
					$model = trim($row[2]);
2752
					$newmodelsdb[$model] = trim($row[0]);
2753
				}
2754
			}
2755
			$modelsdb = array();
2756
			if (file_exists(dirname(__FILE__).'/../models/gltf2/models.md5sum')) {
2757
				if (($handle = fopen(dirname(__FILE__).'/../models/gltf2/models.md5sum','r')) !== FALSE) {
2758
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2759
						$model = trim($row[2]);
2760
						$modelsdb[$model] = trim($row[0]);
2761
					}
2762
				}
2763
			}
2764
			$diff = array_diff($newmodelsdb,$modelsdb);
2765
			foreach ($diff as $key => $value) {
2766
				if ($globalDebug) echo 'Downloading model '.$key.' ...'."\n";
2767
				update_db::download('http://data.flightairmap.com/data/models/gltf2/'.$key,dirname(__FILE__).'/../models/gltf2/'.$key);
2768
				
2769
			}
2770
			update_db::download('http://data.flightairmap.com/data/models/gltf2/models.md5sum',dirname(__FILE__).'/../models/gltf2/models.md5sum');
2771
		} else $error = "File ".$tmp_dir.'modelsgltf2.md5sum'." doesn't exist. Download failed.";
2772
		if ($error != '') {
2773
			return $error;
2774
		} elseif ($globalDebug) echo "Done\n";
2775
		return '';
2776
	}
2777
2778
	public static function update_liveries() {
2779
		global $tmp_dir, $globalDebug;
2780
		$error = '';
2781
		if ($globalDebug) echo "Liveries from FlightAirMap website : Download...";
2782
		update_db::download('http://data.flightairmap.com/data/models/gltf2/liveries/liveries.md5sum',$tmp_dir.'liveries.md5sum');
2783
		if (file_exists($tmp_dir.'liveries.md5sum')) {
2784
			if ($globalDebug) echo "Check files...\n";
2785
			$newmodelsdb = array();
2786
			if (($handle = fopen($tmp_dir.'liveries.md5sum','r')) !== FALSE) {
2787
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2788
					$model = trim($row[2]);
2789
					$newmodelsdb[$model] = trim($row[0]);
2790
				}
2791
			}
2792
			$modelsdb = array();
2793
			if (file_exists(dirname(__FILE__).'/../models/gltf2/liveries/liveries.md5sum')) {
2794
				if (($handle = fopen(dirname(__FILE__).'/../models/gltf2/liveries/liveries.md5sum','r')) !== FALSE) {
2795
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2796
						$model = trim($row[2]);
2797
						$modelsdb[$model] = trim($row[0]);
2798
					}
2799
				}
2800
			}
2801
			$diff = array_diff($newmodelsdb,$modelsdb);
2802
			foreach ($diff as $key => $value) {
2803
				if ($globalDebug) echo 'Downloading liveries '.$key.' ...'."\n";
2804
				update_db::download('http://data.flightairmap.com/data/models/gltf2/liveries/'.$key,dirname(__FILE__).'/../models/gltf2/liveries/'.$key);
2805
				
2806
			}
2807
			update_db::download('http://data.flightairmap.com/data/models/gltf2/liveries/liveries.md5sum',dirname(__FILE__).'/../models/gltf2/liveries/liveries.md5sum');
2808
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2809
		if ($error != '') {
2810
			return $error;
2811
		} elseif ($globalDebug) echo "Done\n";
2812
		return '';
2813
	}
2814
2815
	public static function update_space_models() {
2816
		global $tmp_dir, $globalDebug;
2817
		$error = '';
2818
		if ($globalDebug) echo "Space models from FlightAirMap website : Download...";
2819
		update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',$tmp_dir.'space_models.md5sum');
2820
		if (file_exists($tmp_dir.'space_models.md5sum')) {
2821
			if ($globalDebug) echo "Check files...\n";
2822
			$newmodelsdb = array();
2823
			if (($handle = fopen($tmp_dir.'space_models.md5sum','r')) !== FALSE) {
2824
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2825
					$model = trim($row[2]);
2826
					$newmodelsdb[$model] = trim($row[0]);
2827
				}
2828
			}
2829
			$modelsdb = array();
2830
			if (file_exists(dirname(__FILE__).'/../models/space/space_models.md5sum')) {
2831
				if (($handle = fopen(dirname(__FILE__).'/../models/space/space_models.md5sum','r')) !== FALSE) {
2832
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2833
						$model = trim($row[2]);
2834
						$modelsdb[$model] = trim($row[0]);
2835
					}
2836
				}
2837
			}
2838
			$diff = array_diff($newmodelsdb,$modelsdb);
2839
			foreach ($diff as $key => $value) {
2840
				if ($globalDebug) echo 'Downloading space model '.$key.' ...'."\n";
2841
				update_db::download('http://data.flightairmap.com/data/models/space/'.$key,dirname(__FILE__).'/../models/space/'.$key);
2842
				
2843
			}
2844
			update_db::download('http://data.flightairmap.com/data/models/space/space_models.md5sum',dirname(__FILE__).'/../models/space/space_models.md5sum');
2845
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2846
		if ($error != '') {
2847
			return $error;
2848
		} elseif ($globalDebug) echo "Done\n";
2849
		return '';
2850
	}
2851
2852
	public static function update_vehicules_models() {
2853
		global $tmp_dir, $globalDebug;
2854
		$error = '';
2855
		if ($globalDebug) echo "Vehicules models from FlightAirMap website : Download...";
2856
		update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',$tmp_dir.'vehicules_models.md5sum');
2857
		if (file_exists($tmp_dir.'vehicules_models.md5sum')) {
2858
			if ($globalDebug) echo "Check files...\n";
2859
			$newmodelsdb = array();
2860
			if (($handle = fopen($tmp_dir.'vehicules_models.md5sum','r')) !== FALSE) {
2861
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2862
					$model = trim($row[2]);
2863
					$newmodelsdb[$model] = trim($row[0]);
2864
				}
2865
			}
2866
			$modelsdb = array();
2867
			if (file_exists(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum')) {
2868
				if (($handle = fopen(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum','r')) !== FALSE) {
2869
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2870
						$model = trim($row[2]);
2871
						$modelsdb[$model] = trim($row[0]);
2872
					}
2873
				}
2874
			}
2875
			$diff = array_diff($newmodelsdb,$modelsdb);
2876
			foreach ($diff as $key => $value) {
2877
				if ($globalDebug) echo 'Downloading vehicules model '.$key.' ...'."\n";
2878
				update_db::download('http://data.flightairmap.com/data/models/vehicules/'.$key,dirname(__FILE__).'/../models/vehicules/'.$key);
2879
				
2880
			}
2881
			update_db::download('http://data.flightairmap.com/data/models/vehicules/vehicules_models.md5sum',dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum');
2882
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2883
		if ($error != '') {
2884
			return $error;
2885
		} elseif ($globalDebug) echo "Done\n";
2886
		return '';
2887
	}
2888
2889
	public static function update_aircraft() {
2890
		global $tmp_dir, $globalDebug;
2891
		date_default_timezone_set('UTC');
2892
		//$error = '';
2893
		/*
2894
		if ($globalDebug) echo "Aircrafts : Download...";
2895
		$data_req_array = array('Mnfctrer' => '','Model' => '','Dscrptn'=> '','EngCount' =>'' ,'EngType'=> '','TDesig' => '*','WTC' => '','Button' => 'Search');
2896
		$data_req = 'Mnfctrer=Airbus&Model=&Dscrptn=&EngCount=&EngType=&TDesig=&WTC=&Button=Search';
2897
		//$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);
2898
		$data = Common::getData('http://cfapp.icao.int/Doc8643/8643_List1.cfm','post',$data_req_array,'','','http://cfapp.icao.int/Doc8643/search.cfm',30);
2899
//		echo strlen($data_req);
2900
		echo $data;
2901
		*/
2902
		if (file_exists($tmp_dir.'aircrafts.html')) {
2903
		    //var_dump(file_get_html($tmp_dir.'aircrafts.html'));
2904
		    $fh = fopen($tmp_dir.'aircrafts.html',"r");
2905
		    $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...
2906
		    //echo $result;
2907
		    //var_dump(str_get_html($result));
2908
		    //print_r(self::table2array($result));
2909
		}
2910
2911
	}
2912
	
2913
	public static function update_notam() {
2914
		global $tmp_dir, $globalDebug, $globalNOTAMSource;
2915
		require(dirname(__FILE__).'/../require/class.NOTAM.php');
2916
		$Common = new Common();
2917
		date_default_timezone_set('UTC');
2918
		$query = 'TRUNCATE TABLE notam';
2919
		try {
2920
			$Connection = new Connection();
2921
			$sth = $Connection->db->prepare($query);
2922
                        $sth->execute();
2923
                } catch(PDOException $e) {
2924
                        return "error : ".$e->getMessage();
2925
                }
2926
2927
		$error = '';
2928
		if ($globalDebug) echo "Notam : Download...";
2929
		update_db::download($globalNOTAMSource,$tmp_dir.'notam.rss');
2930
		if (file_exists($tmp_dir.'notam.rss')) {
2931
			$notams = json_decode(json_encode(simplexml_load_file($tmp_dir.'notam.rss')),true);
2932
			foreach ($notams['channel']['item'] as $notam) {
2933
				$title = explode(':',$notam['title']);
2934
				$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...
2935
				unset($title[0]);
2936
				$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...
2937
				$description = strip_tags($notam['description'],'<pre>');
2938
				preg_match(':^(.*?)<pre>:',$description,$match);
2939
				$q = explode('/',$match[1]);
2940
				$data['fir'] = $q[0];
2941
				$data['code'] = $q[1];
2942
				$ifrvfr = $q[2];
2943
				if ($ifrvfr == 'IV') $data['rules'] = 'IFR/VFR';
2944
				if ($ifrvfr == 'I') $data['rules'] = 'IFR';
2945
				if ($ifrvfr == 'V') $data['rules'] = 'VFR';
2946
				if ($q[4] == 'A') $data['scope'] = 'Airport warning';
2947
				if ($q[4] == 'E') $data['scope'] = 'Enroute warning';
2948
				if ($q[4] == 'W') $data['scope'] = 'Navigation warning';
2949
				if ($q[4] == 'AE') $data['scope'] = 'Airport/Enroute warning';
2950
				if ($q[4] == 'AW') $data['scope'] = 'Airport/Navigation warning';
2951
				//$data['scope'] = $q[4];
2952
				$data['lower_limit'] = $q[5];
2953
				$data['upper_limit'] = $q[6];
2954
				$latlonrad = $q[7];
2955
				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...
2956
				$latitude = $Common->convertDec($las,'latitude');
2957
				$longitude = $Common->convertDec($lns,'longitude');
2958
				if ($lac == 'S') $latitude = '-'.$latitude;
2959
				if ($lnc == 'W') $longitude = '-'.$longitude;
2960
				$data['center_latitude'] = $latitude;
2961
				$data['center_longitude'] = $longitude;
2962
				$data['radius'] = intval($radius);
2963
				
2964
				preg_match(':<pre>(.*?)</pre>:',$description,$match);
2965
				$data['text'] = $match[1];
2966
				preg_match(':</pre>(.*?)$:',$description,$match);
2967
				$fromto = $match[1];
2968
				preg_match('#FROM:(.*?)TO:#',$fromto,$match);
2969
				$fromall = trim($match[1]);
2970
				preg_match('#^(.*?) \((.*?)\)$#',$fromall,$match);
2971
				$from = trim($match[1]);
2972
				$data['date_begin'] = date("Y-m-d H:i:s",strtotime($from));
2973
				preg_match('#TO:(.*?)$#',$fromto,$match);
2974
				$toall = trim($match[1]);
2975
				if (!preg_match(':Permanent:',$toall)) {
2976
					preg_match('#^(.*?) \((.*?)\)#',$toall,$match);
2977
					$to = trim($match[1]);
2978
					$data['date_end'] = date("Y-m-d H:i:s",strtotime($to));
2979
					$data['permanent'] = 0;
2980
				} else {
2981
				    $data['date_end'] = NULL;
2982
				    $data['permanent'] = 1;
2983
				}
2984
				$data['full_notam'] = $notam['title'].'<br>'.$notam['description'];
2985
				$NOTAM = new NOTAM();
2986
				$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']);
2987
				unset($data);
2988
			} 
2989
		} else $error = "File ".$tmp_dir.'notam.rss'." doesn't exist. Download failed.";
2990
		if ($error != '') {
2991
			return $error;
2992
		} elseif ($globalDebug) echo "Done\n";
2993
		return '';
2994
	}
2995
	
2996
	public static function create_airspace() {
2997
		global $globalDBdriver, $globalDebug, $tmp_dir, $globalDBhost, $globalDBuser, $globalDBname, $globalDBpass, $globalDBport;
2998
		$Connection = new Connection();
2999
		if ($Connection->tableExists('airspace')) {
3000
			if ($globalDBdriver == 'mysql') {
3001
				$query = 'DROP TABLE geometry_columns; DROP TABLE spatial_ref_sys;DROP TABLE airspace;';
3002
			} else {
3003
				$query = 'DROP TABLE airspace';
3004
			}
3005
			try {
3006
				$Connection = new Connection();
3007
				$sth = $Connection->db->prepare($query);
3008
				$sth->execute();
3009
			} catch(PDOException $e) {
3010
				return "error : ".$e->getMessage();
3011
			}
3012
		}
3013
		$Common = new Common();
3014
		$airspace_lst = $Common->getData('https://raw.githubusercontent.com/XCSoar/xcsoar-data-repository/master/data/airspace.json');
3015
		$airspace_json = json_decode($airspace_lst,true);
3016
		foreach ($airspace_json['records'] as $airspace) {
3017
			if ($globalDebug) echo $airspace['name']."...\n";
3018
			update_db::download($airspace['uri'],$tmp_dir.$airspace['name']);
3019
			if (file_exists($tmp_dir.$airspace['name'])) {
3020
				file_put_contents($tmp_dir.$airspace['name'], utf8_encode(file_get_contents($tmp_dir.$airspace['name'])));
3021
				//system('recode l9..utf8 '.$tmp_dir.$airspace['name']);
3022
				if ($globalDBdriver == 'mysql') {
3023
					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'].'"');
3024
				} else {
3025
					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'].'"');
3026
				}
3027
			}
3028
		}
3029
	}
3030
	
3031
	public static function fix_icaotype() {
3032
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
3033
		$Spotter = new Spotter();
3034
		foreach ($Spotter->aircraft_correct_icaotype as $old => $new) {
3035
			$query = 'UPDATE aircraft_modes SET ICAOTypeCode = :new WHERE ICAOTypeCode = :old';
3036
			try {
3037
				$Connection = new Connection();
3038
				$sth = $Connection->db->prepare($query);
3039
				$sth->execute(array(':new' => $new, ':old' => $old));
3040
			} catch(PDOException $e) {
3041
				return "error : ".$e->getMessage();
3042
			}
3043
		}
3044
	}
3045
3046
	public static function check_last_update() {
3047
		global $globalDBdriver;
3048
		if ($globalDBdriver == 'mysql') {
3049
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3050
		} else {
3051
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3052
		}
3053
		try {
3054
			$Connection = new Connection();
3055
			$sth = $Connection->db->prepare($query);
3056
                        $sth->execute();
3057
                } catch(PDOException $e) {
3058
                        return "error : ".$e->getMessage();
3059
                }
3060
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3061
                if ($row['nb'] > 0) return false;
3062
                else return true;
3063
	}
3064
3065
	public static function insert_last_update() {
3066
		$query = "DELETE FROM config WHERE name = 'last_update_db';
3067
			INSERT INTO config (name,value) VALUES ('last_update_db',NOW());";
3068
		try {
3069
			$Connection = new Connection();
3070
			$sth = $Connection->db->prepare($query);
3071
                        $sth->execute();
3072
                } catch(PDOException $e) {
3073
                        return "error : ".$e->getMessage();
3074
                }
3075
	}
3076
3077
	public static function check_airspace_version($version) {
3078
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'airspace_version' AND value = :version";
3079
		try {
3080
			$Connection = new Connection();
3081
			$sth = $Connection->db->prepare($query);
3082
                        $sth->execute(array(':version' => $version));
3083
                } catch(PDOException $e) {
3084
                        return "error : ".$e->getMessage();
3085
                }
3086
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3087
                if ($row['nb'] > 0) return true;
3088
                else return false;
3089
	}
3090
3091
	public static function check_geoid_version($version) {
3092
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'geoid_version' AND value = :version";
3093
		try {
3094
			$Connection = new Connection();
3095
			$sth = $Connection->db->prepare($query);
3096
                        $sth->execute(array(':version' => $version));
3097
                } catch(PDOException $e) {
3098
                        return "error : ".$e->getMessage();
3099
                }
3100
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3101
                if ($row['nb'] > 0) return true;
3102
                else return false;
3103
	}
3104
3105
	public static function check_marine_identity_version($version) {
3106
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'marine_identity_version' AND value = :version";
3107
		try {
3108
			$Connection = new Connection();
3109
			$sth = $Connection->db->prepare($query);
3110
			$sth->execute(array(':version' => $version));
3111
		} catch(PDOException $e) {
3112
			return "error : ".$e->getMessage();
3113
		}
3114
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3115
		if ($row['nb'] > 0) return true;
3116
		else return false;
3117
	}
3118
3119
	public static function check_satellite_version($version) {
3120
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'satellite_version' AND value = :version";
3121
		try {
3122
			$Connection = new Connection();
3123
			$sth = $Connection->db->prepare($query);
3124
			$sth->execute(array(':version' => $version));
3125
		} catch(PDOException $e) {
3126
			return "error : ".$e->getMessage();
3127
		}
3128
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3129
		if ($row['nb'] > 0) return true;
3130
		else return false;
3131
	}
3132
3133
	public static function check_airlines_version($version) {
3134
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'airlines_version' AND value = :version";
3135
		try {
3136
			$Connection = new Connection();
3137
			$sth = $Connection->db->prepare($query);
3138
			$sth->execute(array(':version' => $version));
3139
		} catch(PDOException $e) {
3140
			return "error : ".$e->getMessage();
3141
		}
3142
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3143
		if ($row['nb'] > 0) return true;
3144
		else return false;
3145
	}
3146
3147
	public static function check_notam_version($version) {
3148
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'notam_version' AND value = :version";
3149
		try {
3150
			$Connection = new Connection();
3151
			$sth = $Connection->db->prepare($query);
3152
			$sth->execute(array(':version' => $version));
3153
		} catch(PDOException $e) {
3154
			return "error : ".$e->getMessage();
3155
		}
3156
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3157
		if ($row['nb'] > 0) return true;
3158
		else return false;
3159
	}
3160
3161
	public static function insert_airlines_version($version) {
3162
		$query = "DELETE FROM config WHERE name = 'airlines_version';
3163
			INSERT INTO config (name,value) VALUES ('airlines_version',:version);";
3164
		try {
3165
			$Connection = new Connection();
3166
			$sth = $Connection->db->prepare($query);
3167
			$sth->execute(array(':version' => $version));
3168
		} catch(PDOException $e) {
3169
			return "error : ".$e->getMessage();
3170
		}
3171
	}
3172
3173
	public static function insert_notam_version($version) {
3174
		$query = "DELETE FROM config WHERE name = 'notam_version';
3175
			INSERT INTO config (name,value) VALUES ('notam_version',:version);";
3176
		try {
3177
			$Connection = new Connection();
3178
			$sth = $Connection->db->prepare($query);
3179
			$sth->execute(array(':version' => $version));
3180
		} catch(PDOException $e) {
3181
			return "error : ".$e->getMessage();
3182
		}
3183
	}
3184
3185
	public static function insert_airspace_version($version) {
3186
		$query = "DELETE FROM config WHERE name = 'airspace_version';
3187
			INSERT INTO config (name,value) VALUES ('airspace_version',:version);";
3188
		try {
3189
			$Connection = new Connection();
3190
			$sth = $Connection->db->prepare($query);
3191
			$sth->execute(array(':version' => $version));
3192
		} catch(PDOException $e) {
3193
			return "error : ".$e->getMessage();
3194
		}
3195
	}
3196
	
3197
	public static function insert_geoid_version($version) {
3198
		$query = "DELETE FROM config WHERE name = 'geoid_version';
3199
			INSERT INTO config (name,value) VALUES ('geoid_version',:version);";
3200
		try {
3201
			$Connection = new Connection();
3202
			$sth = $Connection->db->prepare($query);
3203
                        $sth->execute(array(':version' => $version));
3204
                } catch(PDOException $e) {
3205
                        return "error : ".$e->getMessage();
3206
                }
3207
	}
3208
3209
	public static function insert_marine_identity_version($version) {
3210
		$query = "DELETE FROM config WHERE name = 'marine_identity_version';
3211
			INSERT INTO config (name,value) VALUES ('marine_identity_version',:version);";
3212
		try {
3213
			$Connection = new Connection();
3214
			$sth = $Connection->db->prepare($query);
3215
			$sth->execute(array(':version' => $version));
3216
		} catch(PDOException $e) {
3217
			return "error : ".$e->getMessage();
3218
		}
3219
	}
3220
3221
	public static function insert_satellite_version($version) {
3222
		$query = "DELETE FROM config WHERE name = 'satellite_version';
3223
			INSERT INTO config (name,value) VALUES ('satellite_version',:version);";
3224
		try {
3225
			$Connection = new Connection();
3226
			$sth = $Connection->db->prepare($query);
3227
			$sth->execute(array(':version' => $version));
3228
		} catch(PDOException $e) {
3229
			return "error : ".$e->getMessage();
3230
		}
3231
	}
3232
3233
	public static function check_last_notam_update() {
3234
		global $globalDBdriver;
3235
		if ($globalDBdriver == 'mysql') {
3236
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
3237
		} else {
3238
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
3239
		}
3240
		try {
3241
			$Connection = new Connection();
3242
			$sth = $Connection->db->prepare($query);
3243
                        $sth->execute();
3244
                } catch(PDOException $e) {
3245
                        return "error : ".$e->getMessage();
3246
                }
3247
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3248
                if ($row['nb'] > 0) return false;
3249
                else return true;
3250
	}
3251
3252
	public static function insert_last_notam_update() {
3253
		$query = "DELETE FROM config WHERE name = 'last_update_notam_db';
3254
			INSERT INTO config (name,value) VALUES ('last_update_notam_db',NOW());";
3255
		try {
3256
			$Connection = new Connection();
3257
			$sth = $Connection->db->prepare($query);
3258
                        $sth->execute();
3259
                } catch(PDOException $e) {
3260
                        return "error : ".$e->getMessage();
3261
                }
3262
	}
3263
3264
	public static function check_last_airspace_update() {
3265
		global $globalDBdriver;
3266
		if ($globalDBdriver == 'mysql') {
3267
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3268
		} else {
3269
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3270
		}
3271
		try {
3272
			$Connection = new Connection();
3273
			$sth = $Connection->db->prepare($query);
3274
                        $sth->execute();
3275
                } catch(PDOException $e) {
3276
                        return "error : ".$e->getMessage();
3277
                }
3278
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3279
                if ($row['nb'] > 0) return false;
3280
                else return true;
3281
	}
3282
3283
	public static function insert_last_airspace_update() {
3284
		$query = "DELETE FROM config WHERE name = 'last_update_airspace_db';
3285
			INSERT INTO config (name,value) VALUES ('last_update_airspace_db',NOW());";
3286
		try {
3287
			$Connection = new Connection();
3288
			$sth = $Connection->db->prepare($query);
3289
                        $sth->execute();
3290
                } catch(PDOException $e) {
3291
                        return "error : ".$e->getMessage();
3292
                }
3293
	}
3294
3295
	public static function check_last_geoid_update() {
3296
		global $globalDBdriver;
3297
		if ($globalDBdriver == 'mysql') {
3298
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3299
		} else {
3300
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_geoid' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3301
		}
3302
		try {
3303
			$Connection = new Connection();
3304
			$sth = $Connection->db->prepare($query);
3305
                        $sth->execute();
3306
                } catch(PDOException $e) {
3307
                        return "error : ".$e->getMessage();
3308
                }
3309
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3310
                if ($row['nb'] > 0) return false;
3311
                else return true;
3312
	}
3313
3314
	public static function insert_last_geoid_update() {
3315
		$query = "DELETE FROM config WHERE name = 'last_update_geoid';
3316
			INSERT INTO config (name,value) VALUES ('last_update_geoid',NOW());";
3317
		try {
3318
			$Connection = new Connection();
3319
			$sth = $Connection->db->prepare($query);
3320
                        $sth->execute();
3321
                } catch(PDOException $e) {
3322
                        return "error : ".$e->getMessage();
3323
                }
3324
	}
3325
3326
	public static function check_last_owner_update() {
3327
		global $globalDBdriver;
3328
		if ($globalDBdriver == 'mysql') {
3329
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3330
		} else {
3331
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3332
		}
3333
		try {
3334
			$Connection = new Connection();
3335
			$sth = $Connection->db->prepare($query);
3336
			$sth->execute();
3337
		} catch(PDOException $e) {
3338
			return "error : ".$e->getMessage();
3339
		}
3340
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3341
		if ($row['nb'] > 0) return false;
3342
		else return true;
3343
	}
3344
3345
	public static function insert_last_owner_update() {
3346
		$query = "DELETE FROM config WHERE name = 'last_update_owner_db';
3347
			INSERT INTO config (name,value) VALUES ('last_update_owner_db',NOW());";
3348
		try {
3349
			$Connection = new Connection();
3350
			$sth = $Connection->db->prepare($query);
3351
			$sth->execute();
3352
		} catch(PDOException $e) {
3353
			return "error : ".$e->getMessage();
3354
		}
3355
	}
3356
3357
	public static function check_last_fires_update() {
3358
		global $globalDBdriver;
3359
		if ($globalDBdriver == 'mysql') {
3360
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_fires' AND value > DATE_SUB(NOW(), INTERVAL 1 HOUR)";
3361
		} else {
3362
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_fires' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 HOUR'";
3363
		}
3364
		try {
3365
			$Connection = new Connection();
3366
			$sth = $Connection->db->prepare($query);
3367
			$sth->execute();
3368
		} catch(PDOException $e) {
3369
			return "error : ".$e->getMessage();
3370
		}
3371
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3372
		if ($row['nb'] > 0) return false;
3373
		else return true;
3374
	}
3375
3376
	public static function insert_last_fires_update() {
3377
		$query = "DELETE FROM config WHERE name = 'last_update_fires';
3378
			INSERT INTO config (name,value) VALUES ('last_update_fires',NOW());";
3379
		try {
3380
			$Connection = new Connection();
3381
			$sth = $Connection->db->prepare($query);
3382
			$sth->execute();
3383
		} catch(PDOException $e) {
3384
			return "error : ".$e->getMessage();
3385
		}
3386
	}
3387
3388
	public static function check_last_airlines_update() {
3389
		global $globalDBdriver;
3390
		if ($globalDBdriver == 'mysql') {
3391
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airlines_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3392
		} else {
3393
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airlines_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3394
		}
3395
		try {
3396
			$Connection = new Connection();
3397
			$sth = $Connection->db->prepare($query);
3398
			$sth->execute();
3399
		} catch(PDOException $e) {
3400
			return "error : ".$e->getMessage();
3401
		}
3402
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3403
		if ($row['nb'] > 0) return false;
3404
		else return true;
3405
	}
3406
3407
	public static function insert_last_airlines_update() {
3408
		$query = "DELETE FROM config WHERE name = 'last_update_airlines_db';
3409
			INSERT INTO config (name,value) VALUES ('last_update_airlines_db',NOW());";
3410
		try {
3411
			$Connection = new Connection();
3412
			$sth = $Connection->db->prepare($query);
3413
			$sth->execute();
3414
		} catch(PDOException $e) {
3415
			return "error : ".$e->getMessage();
3416
		}
3417
	}
3418
3419
	public static function check_last_schedules_update() {
3420
		global $globalDBdriver;
3421
		if ($globalDBdriver == 'mysql') {
3422
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
3423
		} else {
3424
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
3425
		}
3426
		try {
3427
			$Connection = new Connection();
3428
			$sth = $Connection->db->prepare($query);
3429
                        $sth->execute();
3430
                } catch(PDOException $e) {
3431
                        return "error : ".$e->getMessage();
3432
                }
3433
                $row = $sth->fetch(PDO::FETCH_ASSOC);
3434
                if ($row['nb'] > 0) return false;
3435
                else return true;
3436
	}
3437
3438
	public static function insert_last_schedules_update() {
3439
		$query = "DELETE FROM config WHERE name = 'last_update_schedules';
3440
			INSERT INTO config (name,value) VALUES ('last_update_schedules',NOW());";
3441
		try {
3442
			$Connection = new Connection();
3443
			$sth = $Connection->db->prepare($query);
3444
			$sth->execute();
3445
		} catch(PDOException $e) {
3446
			return "error : ".$e->getMessage();
3447
		}
3448
	}
3449
3450
	public static function check_last_tle_update() {
3451
		global $globalDBdriver;
3452
		if ($globalDBdriver == 'mysql') {
3453
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3454
		} else {
3455
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3456
		}
3457
		try {
3458
			$Connection = new Connection();
3459
			$sth = $Connection->db->prepare($query);
3460
			$sth->execute();
3461
		} catch(PDOException $e) {
3462
			return "error : ".$e->getMessage();
3463
		}
3464
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3465
		if ($row['nb'] > 0) return false;
3466
		else return true;
3467
	}
3468
3469
	public static function insert_last_tle_update() {
3470
		$query = "DELETE FROM config WHERE name = 'last_update_tle';
3471
			INSERT INTO config (name,value) VALUES ('last_update_tle',NOW());";
3472
		try {
3473
			$Connection = new Connection();
3474
			$sth = $Connection->db->prepare($query);
3475
			$sth->execute();
3476
		} catch(PDOException $e) {
3477
			return "error : ".$e->getMessage();
3478
		}
3479
	}
3480
3481
	public static function check_last_ucsdb_update() {
3482
		global $globalDBdriver;
3483
		if ($globalDBdriver == 'mysql') {
3484
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value > DATE_SUB(NOW(), INTERVAL 1 MONTH)";
3485
		} else {
3486
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_ucsdb' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 MONTH'";
3487
		}
3488
		try {
3489
			$Connection = new Connection();
3490
			$sth = $Connection->db->prepare($query);
3491
			$sth->execute();
3492
		} catch(PDOException $e) {
3493
			return "error : ".$e->getMessage();
3494
		}
3495
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3496
		if ($row['nb'] > 0) return false;
3497
		else return true;
3498
	}
3499
3500
	public static function insert_last_ucsdb_update() {
3501
		$query = "DELETE FROM config WHERE name = 'last_update_ucsdb';
3502
			INSERT INTO config (name,value) VALUES ('last_update_ucsdb',NOW());";
3503
		try {
3504
			$Connection = new Connection();
3505
			$sth = $Connection->db->prepare($query);
3506
			$sth->execute();
3507
		} catch(PDOException $e) {
3508
			return "error : ".$e->getMessage();
3509
		}
3510
	}
3511
3512
	public static function check_last_celestrak_update() {
3513
		global $globalDBdriver;
3514
		if ($globalDBdriver == 'mysql') {
3515
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3516
		} else {
3517
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_celestrak' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3518
		}
3519
		try {
3520
			$Connection = new Connection();
3521
			$sth = $Connection->db->prepare($query);
3522
			$sth->execute();
3523
		} catch(PDOException $e) {
3524
			return "error : ".$e->getMessage();
3525
		}
3526
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3527
		if ($row['nb'] > 0) return false;
3528
		else return true;
3529
	}
3530
3531
	public static function insert_last_celestrak_update() {
3532
		$query = "DELETE FROM config WHERE name = 'last_update_celestrak';
3533
			INSERT INTO config (name,value) VALUES ('last_update_celestrak',NOW());";
3534
		try {
3535
			$Connection = new Connection();
3536
			$sth = $Connection->db->prepare($query);
3537
			$sth->execute();
3538
		} catch(PDOException $e) {
3539
			return "error : ".$e->getMessage();
3540
		}
3541
	}
3542
3543
	public static function check_last_marine_identity_update() {
3544
		global $globalDBdriver;
3545
		if ($globalDBdriver == 'mysql') {
3546
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
3547
		} else {
3548
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_marine_identity' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
3549
		}
3550
		try {
3551
			$Connection = new Connection();
3552
			$sth = $Connection->db->prepare($query);
3553
			$sth->execute();
3554
		} catch(PDOException $e) {
3555
			return "error : ".$e->getMessage();
3556
		}
3557
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3558
		if ($row['nb'] > 0) return false;
3559
		else return true;
3560
	}
3561
3562
	public static function check_last_satellite_update() {
3563
		global $globalDBdriver;
3564
		if ($globalDBdriver == 'mysql') {
3565
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
3566
		} else {
3567
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_satellite' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
3568
		}
3569
		try {
3570
			$Connection = new Connection();
3571
			$sth = $Connection->db->prepare($query);
3572
			$sth->execute();
3573
		} catch(PDOException $e) {
3574
			return "error : ".$e->getMessage();
3575
		}
3576
		$row = $sth->fetch(PDO::FETCH_ASSOC);
3577
		if ($row['nb'] > 0) return false;
3578
		else return true;
3579
	}
3580
3581
	public static function insert_last_marine_identity_update() {
3582
		$query = "DELETE FROM config WHERE name = 'last_update_marine_identity';
3583
			INSERT INTO config (name,value) VALUES ('last_update_marine_identity',NOW());";
3584
		try {
3585
			$Connection = new Connection();
3586
			$sth = $Connection->db->prepare($query);
3587
			$sth->execute();
3588
		} catch(PDOException $e) {
3589
			return "error : ".$e->getMessage();
3590
		}
3591
	}
3592
3593
	public static function insert_last_satellite_update() {
3594
		$query = "DELETE FROM config WHERE name = 'last_update_satellite';
3595
			INSERT INTO config (name,value) VALUES ('last_update_satellite',NOW());";
3596
		try {
3597
			$Connection = new Connection();
3598
			$sth = $Connection->db->prepare($query);
3599
			$sth->execute();
3600
		} catch(PDOException $e) {
3601
			return "error : ".$e->getMessage();
3602
		}
3603
	}
3604
3605
	public static function delete_duplicatemodes() {
3606
		global $globalDBdriver;
3607
		if ($globalDBdriver == 'mysql') {
3608
			$query = "DELETE a FROM aircraft_modes a, aircraft_modes b WHERE a.ModeS = b.ModeS AND a.FirstCreated < b.FirstCreated AND a.Source != 'ACARS'";
3609
		} else {
3610
			$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'";
3611
		}
3612
		try {
3613
			$Connection = new Connection();
3614
			$sth = $Connection->db->prepare($query);
3615
                        $sth->execute();
3616
                } catch(PDOException $e) {
3617
                        return "error : ".$e->getMessage();
3618
                }
3619
	}
3620
	public static function delete_duplicateowner() {
3621
		global $globalDBdriver;
3622
		if ($globalDBdriver == 'mysql') {
3623
			$query = "DELETE a FROM aircraft_owner a, aircraft_owner b WHERE a.registration = b.registration AND a.owner_id < b.owner_id";
3624
		} else {
3625
			$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)";
3626
		}
3627
		try {
3628
			$Connection = new Connection();
3629
			$sth = $Connection->db->prepare($query);
3630
                        $sth->execute();
3631
                } catch(PDOException $e) {
3632
                        return "error : ".$e->getMessage();
3633
                }
3634
	}
3635
	
3636
	public static function update_all() {
3637
		global $globalMasterServer, $globalMasterSource;
3638
		if (!isset($globalMasterServer) || !$globalMasterServer) {
3639
			if (isset($globalMasterSource) && $globalMasterSource) {
3640
				echo update_db::update_routes();
3641
				echo update_db::update_translation();
3642
				//echo update_db::update_notam_fam();
3643
				echo update_db::update_ModeS();
3644
				//echo update_db::update_ModeS_flarm();
3645
				echo update_db::update_ModeS_ogn();
3646
				echo update_db::update_ModeS_faa();
3647
				echo update_db::fix_icaotype();
3648
				echo update_db::update_banned_fam();
3649
				//echo update_db::update_celestrak();
3650
				//echo update_db::delete_duplicatemodes();
3651
			} else {
3652
				//echo update_db::update_routes();
3653
				echo update_db::update_routes_fam();
3654
				//echo update_db::update_translation();
3655
				echo update_db::update_translation_fam();
3656
				//echo update_db::update_notam_fam();
3657
				//echo update_db::update_ModeS();
3658
				echo update_db::update_ModeS_fam();
3659
				//echo update_db::update_ModeS_flarm();
3660
				echo update_db::update_ModeS_ogn();
3661
				//echo update_db::delete_duplicatemodes();
3662
				echo update_db::update_banned_fam();
3663
			}
3664
		}
3665
	}
3666
}
3667
3668
//echo update_db::update_airports();
3669
//echo update_db::translation();
3670
//echo update_db::update_waypoints();
3671
//echo update_db::update_airspace();
3672
//echo update_db::update_notam();
3673
//echo update_db::update_ivao();
3674
//echo update_db::update_ModeS_flarm();
3675
//echo update_db::update_ModeS_ogn();
3676
//echo update_db::update_aircraft();
3677
//$update_db = new update_db();
3678
//echo update_db::update_owner();
3679
//update_db::update_translation_fam();
3680
//echo update_db::update_routes();
3681
//update_db::update_models();
3682
//echo $update_db::update_skyteam();
3683
//echo $update_db::update_tle();
3684
//echo update_db::update_notam_fam();
3685
//echo update_db::create_airspace();
3686
//echo update_db::update_ModeS();
3687
//echo update_db::update_ModeS_fam();
3688
//echo update_db::update_routes_fam();
3689
//echo update_db::update_ModeS_faa();
3690
//echo update_db::update_banned_fam();
3691
//echo update_db::modes_faa();
3692
//echo update_db::update_owner_fam();
3693
//echo update_db::delete_duplicateowner();
3694
//echo update_db::fix_icaotype();
3695
//echo update_db::satellite_ucsdb('tmp/UCS_Satellite_Database_officialname_1-1-17.txt');
3696
//echo update_db::update_celestrak();
3697
?>
3698