Completed
Push — master ( 116ecf...9aa308 )
by Yannick
08:10
created

update_db::update_vehicules_models()   C

Complexity

Conditions 13
Paths 78

Size

Total Lines 36
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 13
eloc 28
nc 78
nop 0
dl 0
loc 36
rs 5.1234
c 0
b 0
f 0

How to fix   Complexity   

Long Method

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

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

Commonly applied refactorings include:

1
<?php
2
//require_once('libs/simple_html_dom.php');
3
require(dirname(__FILE__).'/../require/settings.php');
4
require_once(dirname(__FILE__).'/../require/class.Common.php');
5
require_once(dirname(__FILE__).'/../require/class.Connection.php');
6
7
$tmp_dir = dirname(__FILE__).'/tmp/';
8
//$globalDebug = true;
9
//$globalTransaction = true;
10
class update_db {
11
	public static $db_sqlite;
12
13
	public static function download($url, $file, $referer = '') {
14
		$fp = fopen($file, 'w+');
15
		$ch = curl_init();
16
		curl_setopt($ch, CURLOPT_URL, $url);
17
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
18
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
19
		if ($referer != '') curl_setopt($ch, CURLOPT_REFERER, $referer);
20
		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');
21
		curl_setopt($ch, CURLOPT_FILE, $fp);
22
		curl_exec($ch);
23
		curl_close($ch);
24
		fclose($fp);
25
	}
26
27
	public static function gunzip($in_file,$out_file_name = '') {
28
		//echo $in_file.' -> '.$out_file_name."\n";
29
		$buffer_size = 4096; // read 4kb at a time
30
		if ($out_file_name == '') $out_file_name = str_replace('.gz', '', $in_file); 
31
		if ($in_file != '' && file_exists($in_file)) {
32
			// PHP version of Ubuntu use gzopen64 instead of gzopen
33
			if (function_exists('gzopen')) $file = gzopen($in_file,'rb');
34
			elseif (function_exists('gzopen64')) $file = gzopen64($in_file,'rb');
35
			else {
36
				echo 'gzopen not available';
37
				die;
38
			}
39
			$out_file = fopen($out_file_name, 'wb'); 
40
			while(!gzeof($file)) {
41
				fwrite($out_file, gzread($file, $buffer_size));
42
			}  
43
			fclose($out_file);
44
			gzclose($file);
45
		}
46
	}
47
48
	public static function unzip($in_file) {
49
		if ($in_file != '' && file_exists($in_file)) {
50
			$path = pathinfo(realpath($in_file), PATHINFO_DIRNAME);
51
			$zip = new ZipArchive;
52
			$res = $zip->open($in_file);
53
			if ($res === TRUE) {
54
				$zip->extractTo($path);
55
				$zip->close();
56
			} else return false;
57
		} else return false;
58
	}
59
	
60
	public static function connect_sqlite($database) {
61
		try {
62
			self::$db_sqlite = new PDO('sqlite:'.$database);
63
			self::$db_sqlite->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
64
		} catch(PDOException $e) {
65
			return "error : ".$e->getMessage();
66
		}
67
	}
68
	
69
	public static function retrieve_route_sqlite_to_dest($database_file) {
70
		global $globalDebug, $globalTransaction;
71
		//$query = 'TRUNCATE TABLE routes';
72
		if ($globalDebug) echo " - Delete previous routes from DB -";
73
		$query = "DELETE FROM routes WHERE Source = '' OR Source = :source";
74
		$Connection = new Connection();
75
		try {
76
			//$Connection = new Connection();
77
			$sth = $Connection->db->prepare($query);
78
                        $sth->execute(array(':source' => $database_file));
79
                } catch(PDOException $e) {
80
                        return "error : ".$e->getMessage();
81
                }
82
83
    		if ($globalDebug) echo " - Add routes to DB -";
84
    		update_db::connect_sqlite($database_file);
85
		//$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';
86
		$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";
87
		try {
88
                        $sth = update_db::$db_sqlite->prepare($query);
89
                        $sth->execute();
90
                } catch(PDOException $e) {
91
                        return "error : ".$e->getMessage();
92
                }
93
		//$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)';
94
		$query_dest = 'INSERT INTO routes (CallSign,Operator_ICAO,FromAirport_ICAO,ToAirport_ICAO,RouteStop,Source) VALUES (:CallSign, :Operator_ICAO, :FromAirport_ICAO, :ToAirport_ICAO, :routestop, :source)';
95
		$Connection = new Connection();
96
		$sth_dest = $Connection->db->prepare($query_dest);
97
		try {
98
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
99
            		while ($values = $sth->fetch(PDO::FETCH_ASSOC)) {
100
				//$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);
101
				$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);
102
				$sth_dest->execute($query_dest_values);
103
            		}
104
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
105
		} catch(PDOException $e) {
106
			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...
107
			return "error : ".$e->getMessage();
108
		}
109
                return '';
110
	}
111
	public static function retrieve_route_oneworld($database_file) {
112
		global $globalDebug, $globalTransaction;
113
		//$query = 'TRUNCATE TABLE routes';
114
		if ($globalDebug) echo " - Delete previous routes from DB -";
115
		$query = "DELETE FROM routes WHERE Source = '' OR Source = :source";
116
		$Connection = new Connection();
117
		try {
118
			//$Connection = new Connection();
119
			$sth = $Connection->db->prepare($query);
120
                        $sth->execute(array(':source' => 'oneworld'));
121
                } catch(PDOException $e) {
122
                        return "error : ".$e->getMessage();
123
                }
124
125
    		if ($globalDebug) echo " - Add routes to DB -";
126
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
127
		$Spotter = new Spotter();
128
		if ($fh = fopen($database_file,"r")) {
129
			$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)';
130
			$Connection = new Connection();
131
			$sth_dest = $Connection->db->prepare($query_dest);
132
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
133
			while (!feof($fh)) {
134
				$line = fgetcsv($fh,9999,',');
135
				if ($line[0] != '') {
136
					if (($line[2] == '-' || ($line[2] != '-' && (strtotime($line[2]) > time()))) && ($line[3] == '-' || ($line[3] != '-' && (strtotime($line[3]) < time())))) {
137
						try {
138
							$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');
139
							$sth_dest->execute($query_dest_values);
140
						} catch(PDOException $e) {
141
							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...
142
							return "error : ".$e->getMessage();
143
						}
144
					}
145
				}
146
			}
147
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
148
		}
149
                return '';
150
	}
151
	
152
	public static function retrieve_route_skyteam($database_file) {
153
		global $globalDebug, $globalTransaction;
154
		//$query = 'TRUNCATE TABLE routes';
155
		if ($globalDebug) echo " - Delete previous routes from DB -";
156
		$query = "DELETE FROM routes WHERE Source = '' OR Source = :source";
157
		$Connection = new Connection();
158
		try {
159
			//$Connection = new Connection();
160
			$sth = $Connection->db->prepare($query);
161
                        $sth->execute(array(':source' => 'skyteam'));
162
                } catch(PDOException $e) {
163
                        return "error : ".$e->getMessage();
164
                }
165
166
    		if ($globalDebug) echo " - Add routes to DB -";
167
168
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
169
		$Spotter = new Spotter();
170
		if ($fh = fopen($database_file,"r")) {
171
			$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)';
172
			$Connection = new Connection();
173
			$sth_dest = $Connection->db->prepare($query_dest);
174
			try {
175
				if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
176
				while (!feof($fh)) {
177
					$line = fgetcsv($fh,9999,',');
178
					if ($line[0] != '') {
179
						$datebe = explode('  -  ',$line[2]);
180
						if (strtotime($datebe[0]) > time() && strtotime($datebe[1]) < time()) {
181
							$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');
182
							$sth_dest->execute($query_dest_values);
183
						}
184
					}
185
				}
186
				if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
187
			} catch(PDOException $e) {
188
				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...
189
				return "error : ".$e->getMessage();
190
			}
191
		}
192
                return '';
193
	}
194
	public static function retrieve_modes_sqlite_to_dest($database_file) {
195
		global $globalTransaction;
196
		//$query = 'TRUNCATE TABLE aircraft_modes';
197
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source IS NULL OR Source = :source";
198
		try {
199
			$Connection = new Connection();
200
			$sth = $Connection->db->prepare($query);
201
                        $sth->execute(array(':source' => $database_file));
202
                } catch(PDOException $e) {
203
                        return "error : ".$e->getMessage();
204
                }
205
		$query = "DELETE FROM aircraft_owner WHERE Source = '' OR Source IS NULL OR Source = :source";
206
		try {
207
			$Connection = new Connection();
208
			$sth = $Connection->db->prepare($query);
209
                        $sth->execute(array(':source' => $database_file));
210
                } catch(PDOException $e) {
211
                        return "error : ".$e->getMessage();
212
                }
213
214
    		update_db::connect_sqlite($database_file);
215
		$query = 'select * from Aircraft';
216
		try {
217
                        $sth = update_db::$db_sqlite->prepare($query);
218
                        $sth->execute();
219
                } catch(PDOException $e) {
220
                        return "error : ".$e->getMessage();
221
                }
222
		//$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)';
223
		$query_dest = 'INSERT INTO aircraft_modes (LastModified, ModeS,ModeSCountry,Registration,ICAOTypeCode,type_flight,Source) VALUES (:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:type,:source)';
224
		
225
		$query_dest_owner = 'INSERT INTO aircraft_owner (registration,owner,Source) VALUES (:registration,:owner,:source)';
226
		
227
		$Connection = new Connection();
228
		$sth_dest = $Connection->db->prepare($query_dest);
229
		$sth_dest_owner = $Connection->db->prepare($query_dest_owner);
230
		try {
231
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
232
            		while ($values = $sth->fetch(PDO::FETCH_ASSOC)) {
233
			//$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']);
234
				if ($values['UserString4'] == 'M') $type = 'military';
235
				else $type = null;
236
				$query_dest_values = array(':LastModified' => $values['LastModified'],':ModeS' => $values['ModeS'],':ModeSCountry' => $values['ModeSCountry'],':Registration' => $values['Registration'],':ICAOTypeCode' => $values['ICAOTypeCode'],':source' => $database_file,':type' => $type);
237
				$sth_dest->execute($query_dest_values);
238
				if ($values['RegisteredOwners'] != '' && $values['RegisteredOwners'] != NULL && $values['RegisteredOwners'] != 'Private') {
239
				    $query_dest_owner_values = array(':registration' => $values['Registration'],':source' => $database_file,':owner' => $values['RegisteredOwners']);
240
				    $sth_dest_owner->execute($query_dest_owner_values);
241
				}
242
            		}
243
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
244
		} catch(PDOException $e) {
245
			return "error : ".$e->getMessage();
246
		}
247
248
		// Remove data already in DB from ACARS
249
		$query = "DELETE FROM aircraft_modes WHERE Source = :source AND ModeS IN (SELECT * FROM (SELECT ModeS FROM aircraft_modes WHERE Source = 'ACARS') _alias)";
250
		try {
251
			$Connection = new Connection();
252
			$sth = $Connection->db->prepare($query);
253
                        $sth->execute(array(':source' => $database_file));
254
                } catch(PDOException $e) {
255
                        return "error : ".$e->getMessage();
256
                }
257
		return '';
258
	}
259
260
	public static function retrieve_modes_flarmnet($database_file) {
261
		global $globalTransaction;
262
		$Common = new Common();
263
		//$query = 'TRUNCATE TABLE aircraft_modes';
264
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source IS NULL OR Source = :source";
265
		try {
266
			$Connection = new Connection();
267
			$sth = $Connection->db->prepare($query);
268
                        $sth->execute(array(':source' => $database_file));
269
                } catch(PDOException $e) {
270
                        return "error : ".$e->getMessage();
271
                }
272
		
273
		if ($fh = fopen($database_file,"r")) {
274
			//$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)';
275
			$query_dest = 'INSERT INTO aircraft_modes (ModeS,Registration,ICAOTypeCode,Source,source_type) VALUES (:ModeS,:Registration,:ICAOTypeCode,:source,:source_type)';
276
		
277
			$Connection = new Connection();
278
			$sth_dest = $Connection->db->prepare($query_dest);
279
			try {
280
				if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
281
            			while (!feof($fh)) {
282
            				$values = array();
283
            				$line = $Common->hex2str(fgets($fh,9999));
284
					//FFFFFF                     RIDEAU VALLEY SOARINGASW-20               C-FBKN MZ 123.400
285
            				$values['ModeS'] = substr($line,0,6);
286
            				$values['Registration'] = trim(substr($line,69,6));
287
            				$aircraft_name = trim(substr($line,48,6));
288
            				// Check if we can find ICAO, else set it to GLID
289
            				$aircraft_name_split = explode(' ',$aircraft_name);
290
            				$search_more = '';
291
            				if (count($aircraft_name) > 1 && strlen($aircraft_name_split[1]) > 3) $search_more .= " AND LIKE '%".$aircraft_name_split[0]."%'";
292
            				$query_search = "SELECT * FROM aircraft WHERE type LIKE '%".$aircraft_name."%'".$search_more;
293
            				$sth_search = $Connection->db->prepare($query_search);
294
					try {
295
                                    		$sth_search->execute();
296
	            				$result = $sth_search->fetch(PDO::FETCH_ASSOC);
297
	            				//if (count($result) > 0) {
298
	            				if (isset($result['icao']) && $result['icao'] != '') {
299
	            				    $values['ICAOTypeCode'] = $result['icao'];
300
	            				} 
301
					} catch(PDOException $e) {
302
						return "error : ".$e->getMessage();
303
					}
304
					if (!isset($values['ICAOTypeCode'])) $values['ICAOTypeCode'] = 'GLID';
305
					// Add data to db
306
					if ($values['Registration'] != '' && $values['Registration'] != '0000') {
307
						//$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']);
308
						$query_dest_values = array(':ModeS' => $values['ModeS'],':Registration' => $values['Registration'],':ICAOTypeCode' => $values['ICAOTypeCode'],':source' => $database_file,':source_type' => 'flarm');
309
						//print_r($query_dest_values);
310
						$sth_dest->execute($query_dest_values);
311
					}
312
				}
313
				if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
314
			} catch(PDOException $e) {
315
				return "error : ".$e->getMessage();
316
			}
317
		}
318
319
		$query = "DELETE FROM aircraft_modes WHERE Source = :source AND ModeS IN (SELECT * FROM (SELECT ModeS FROM aircraft_modes WHERE Source = 'ACARS') _alias)";
320
		try {
321
			$Connection = new Connection();
322
			$sth = $Connection->db->prepare($query);
323
                        $sth->execute(array(':source' => $database_file));
324
                } catch(PDOException $e) {
325
                        return "error : ".$e->getMessage();
326
                }
327
		return '';
328
	}
329
330
	public static function retrieve_modes_ogn($database_file) {
331
		global $globalTransaction;
332
		//$query = 'TRUNCATE TABLE aircraft_modes';
333
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source IS NULL OR Source = :source";
334
		try {
335
			$Connection = new Connection();
336
			$sth = $Connection->db->prepare($query);
337
                        $sth->execute(array(':source' => $database_file));
338
                } catch(PDOException $e) {
339
                        return "error : ".$e->getMessage();
340
                }
341
		
342
		if ($fh = fopen($database_file,"r")) {
343
			//$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)';
344
			$query_dest = 'INSERT INTO aircraft_modes (LastModified,ModeS,Registration,ICAOTypeCode,Source,source_type) VALUES (:lastmodified,:ModeS,:Registration,:ICAOTypeCode,:source,:source_type)';
345
		
346
			$Connection = new Connection();
347
			$sth_dest = $Connection->db->prepare($query_dest);
348
			try {
349
				if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
350
				$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...
351
            			while (!feof($fh)) {
352
            				$line = fgetcsv($fh,9999,',',"'");
353
            				
354
					//FFFFFF                     RIDEAU VALLEY SOARINGASW-20               C-FBKN MZ 123.400
355
					//print_r($line);
356
            				$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...
357
            				$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...
358
            				$aircraft_name = $line[2];
359
            				// Check if we can find ICAO, else set it to GLID
360
            				$aircraft_name_split = explode(' ',$aircraft_name);
361
            				$search_more = '';
362
            				if (count($aircraft_name) > 1 && strlen($aircraft_name_split[1]) > 3) $search_more .= " AND LIKE '%".$aircraft_name_split[0]."%'";
363
            				$query_search = "SELECT * FROM aircraft WHERE type LIKE '%".$aircraft_name."%'".$search_more;
364
            				$sth_search = $Connection->db->prepare($query_search);
365
					try {
366
                                    		$sth_search->execute();
367
	            				$result = $sth_search->fetch(PDO::FETCH_ASSOC);
368
	            				if (isset($result['icao']) && $result['icao'] != '') $values['ICAOTypeCode'] = $result['icao'];
369
					} catch(PDOException $e) {
370
						return "error : ".$e->getMessage();
371
					}
372
					//if (!isset($values['ICAOTypeCode'])) $values['ICAOTypeCode'] = 'GLID';
373
					// Add data to db
374
					if ($values['Registration'] != '' && $values['Registration'] != '0000' && $values['ICAOTypeCode'] != '') {
375
						//$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']);
376
						$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');
377
						//print_r($query_dest_values);
378
						$sth_dest->execute($query_dest_values);
379
					}
380
				}
381
				if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
382
			} catch(PDOException $e) {
383
				return "error : ".$e->getMessage();
384
			}
385
		}
386
387
		$query = "DELETE FROM aircraft_modes WHERE Source = :source AND ModeS IN (SELECT * FROM (SELECT ModeS FROM aircraft_modes WHERE Source = 'ACARS') _alias)";
388
		try {
389
			$Connection = new Connection();
390
			$sth = $Connection->db->prepare($query);
391
                        $sth->execute(array(':source' => $database_file));
392
                } catch(PDOException $e) {
393
                        return "error : ".$e->getMessage();
394
                }
395
		return '';
396
	}
397
398
	public static function retrieve_owner($database_file,$country = 'F') {
399
		global $globalTransaction, $globalMasterSource;
400
		//$query = 'TRUNCATE TABLE aircraft_modes';
401
		$query = "DELETE FROM aircraft_owner WHERE Source = '' OR Source IS NULL OR Source = :source; DELETE FROM aircraft_modes WHERE Source = :source;";
402
		try {
403
			$Connection = new Connection();
404
			$sth = $Connection->db->prepare($query);
405
                        $sth->execute(array(':source' => $database_file));
406
                } catch(PDOException $e) {
407
                        return "error : ".$e->getMessage();
408
                }
409
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
410
		$Spotter = new Spotter();
411
		if ($fh = fopen($database_file,"r")) {
412
			//$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)';
413
			$query_dest = 'INSERT INTO aircraft_owner (registration,base,owner,date_first_reg,Source) VALUES (:registration,:base,:owner,:date_first_reg,:source)';
414
		        $query_modes = 'INSERT INTO aircraft_modes (ModeS,ModeSCountry,Registration,ICAOTypeCode,Source) VALUES (:modes,:modescountry,:registration,:icaotypecode,:source)';
415
		        
416
			$Connection = new Connection();
417
			$sth_dest = $Connection->db->prepare($query_dest);
418
			$sth_modes = $Connection->db->prepare($query_modes);
419
			try {
420
				if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
421
				$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...
422
            			while (!feof($fh)) {
423
            				$line = fgetcsv($fh,9999,',','"');
424
            				$values = array();
425
            				//print_r($line);
426
            				if ($country == 'F') {
427
            				    $values['registration'] = $line[0];
428
            				    $values['base'] = $line[4];
429
            				    $values['owner'] = $line[5];
430
            				    if ($line[6] == '') $values['date_first_reg'] = null;
431
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[6]));
432
					    $values['cancel'] = $line[7];
433
					} elseif ($country == 'EI') {
434
					    // TODO : add modeS & reg to aircraft_modes
435
            				    $values['registration'] = $line[0];
436
            				    $values['base'] = $line[3];
437
            				    $values['owner'] = $line[2];
438
            				    if ($line[1] == '') $values['date_first_reg'] = null;
439
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[1]));
440
					    $values['cancel'] = '';
441
					    $values['modes'] = $line[7];
442
					    $values['icao'] = $line[8];
443
					    
444
					} elseif ($country == 'HB') {
445
					    // TODO : add modeS & reg to aircraft_modes
446
            				    $values['registration'] = $line[0];
447
            				    $values['base'] = null;
448
            				    $values['owner'] = $line[5];
449
            				    $values['date_first_reg'] = null;
450
					    $values['cancel'] = '';
451
					    $values['modes'] = $line[4];
452
					    $values['icao'] = $line[7];
453
					} elseif ($country == 'OK') {
454
					    // TODO : add modeS & reg to aircraft_modes
455
            				    $values['registration'] = $line[3];
456
            				    $values['base'] = null;
457
            				    $values['owner'] = $line[5];
458
            				    if ($line[18] == '') $values['date_first_reg'] = null;
459
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[18]));
460
					    $values['cancel'] = '';
461
					} elseif ($country == 'VH') {
462
					    // TODO : add modeS & reg to aircraft_modes
463
            				    $values['registration'] = $line[0];
464
            				    $values['base'] = null;
465
            				    $values['owner'] = $line[12];
466
            				    if ($line[28] == '') $values['date_first_reg'] = null;
467
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[28]));
468
469
					    $values['cancel'] = $line[39];
470
					} elseif ($country == 'OE' || $country == '9A' || $country == 'VP' || $country == 'LX' || $country == 'P2' || $country == 'HC') {
471
            				    $values['registration'] = $line[0];
472
            				    $values['base'] = null;
473
            				    $values['owner'] = $line[4];
474
            				    $values['date_first_reg'] = null;
475
					    $values['cancel'] = '';
476
					} elseif ($country == 'CC') {
477
            				    $values['registration'] = $line[0];
478
            				    $values['base'] = null;
479
            				    $values['owner'] = $line[6];
480
            				    $values['date_first_reg'] = null;
481
					    $values['cancel'] = '';
482
					} elseif ($country == 'HJ') {
483
            				    $values['registration'] = $line[0];
484
            				    $values['base'] = null;
485
            				    $values['owner'] = $line[8];
486
            				    if ($line[7] == '') $values['date_first_reg'] = null;
487
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[7]));
488
					    $values['cancel'] = '';
489
					} elseif ($country == 'PP') {
490
            				    $values['registration'] = $line[0];
491
            				    $values['base'] = null;
492
            				    $values['owner'] = $line[4];
493
            				    if ($line[6] == '') $values['date_first_reg'] = null;
494
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[6]));
495
					    $values['cancel'] = $line[7];
496
					} elseif ($country == 'E7') {
497
            				    $values['registration'] = $line[0];
498
            				    $values['base'] = null;
499
            				    $values['owner'] = $line[4];
500
            				    if ($line[5] == '') $values['date_first_reg'] = null;
501
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[5]));
502
					    $values['cancel'] = '';
503
					} elseif ($country == '8Q') {
504
            				    $values['registration'] = $line[0];
505
            				    $values['base'] = null;
506
            				    $values['owner'] = $line[3];
507
            				    if ($line[7] == '') $values['date_first_reg'] = null;
508
					    else $values['date_first_reg'] = date("Y-m-d",strtotime($line[7]));
509
					    $values['cancel'] = '';
510
					} elseif ($country == 'ZK') {
511
            				    $values['registration'] = $line[0];
512
            				    $values['base'] = null;
513
            				    $values['owner'] = $line[3];
514
            				    $values['date_first_reg'] = null;
515
					    $values['cancel'] = '';
516
					    $values['modes'] = $line[5];
517
					    $values['icao'] = $line[9];
518
					} elseif ($country == 'M') {
519
            				    $values['registration'] = $line[0];
520
            				    $values['base'] = null;
521
            				    $values['owner'] = $line[6];
522
            				    $values['date_first_reg'] = date("Y-m-d",strtotime($line[5]));
523
					    $values['cancel'] = date("Y-m-d",strtotime($line[8]));
524
					    $values['modes'] = $line[4];
525
					    $values['icao'] = $line[10];
526
					} elseif ($country == 'OY') {
527
            				    $values['registration'] = $line[0];
528
            				    $values['date_first_reg'] = date("Y-m-d",strtotime($line[4]));
529
					    $values['modes'] = $line[5];
530
					    $values['icao'] = $line[6];
531
					} elseif ($country == 'PH') {
532
            				    $values['registration'] = $line[0];
533
            				    $values['date_first_reg'] = date("Y-m-d",strtotime($line[3]));
534
					    $values['modes'] = $line[4];
535
					    $values['icao'] = $line[5];
536
					} elseif ($country == 'OM' || $country == 'TF') {
537
            				    $values['registration'] = $line[0];
538
            				    $values['base'] = null;
539
            				    $values['owner'] = $line[3];
540
            				    $values['date_first_reg'] = null;
541
					    $values['cancel'] = '';
542
					}
543
					if (isset($values['cancel']) && $values['cancel'] == '' && $values['registration'] != null && isset($values['owner'])) {
544
						$query_dest_values = array(':registration' => $values['registration'],':base' => $values['base'],':date_first_reg' => $values['date_first_reg'],':owner' => $values['owner'],':source' => $database_file);
545
						$sth_dest->execute($query_dest_values);
546
					}
547
					if ($globalMasterSource && $values['registration'] != null && isset($values['modes']) && $values['modes'] != '') {
548
						$modescountry = $Spotter->countryFromAircraftRegistration($values['registration']);
549
						$query_modes_values = array(':registration' => $values['registration'],':modes' => $values['modes'],':modescountry' => $modescountry,':icaotypecode' => $values['icao'],':source' => $database_file);
550
						$sth_modes->execute($query_modes_values);
551
					}
552
				}
553
				if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
554
			} catch(PDOException $e) {
555
				return "error : ".$e->getMessage();
556
			}
557
		}
558
		return '';
559
	}
560
561
	/*
562
	* This function is used to create a list of airports. Sources : Wikipedia, ourairports.com ans partow.net
563
	*/
564
	public static function update_airports() {
565
		global $tmp_dir, $globalTransaction, $globalDebug;
566
567
		require_once(dirname(__FILE__).'/libs/sparqllib.php');
568
		$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...
569
		$query = '
570
		    PREFIX dbo: <http://dbpedia.org/ontology/>
571
		    PREFIX dbp: <http://dbpedia.org/property/>
572
		    PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
573
		    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
574
		    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
575
		    SELECT ?name ?icao ?iata ?faa ?lid ?latitude ?longitude ?airport ?homepage ?type ?country ?country_bis ?altitude ?image
576
		    FROM <http://dbpedia.org>
577
		    WHERE {
578
			?airport rdf:type <http://dbpedia.org/ontology/Airport> .
579
580
			OPTIONAL {
581
			    ?airport dbo:icaoLocationIdentifier ?icao .
582
			    FILTER regex(?icao, "^[A-Z0-9]{4}$")
583
			}
584
585
			OPTIONAL {
586
			    ?airport dbo:iataLocationIdentifier ?iata .
587
			    FILTER regex(?iata, "^[A-Z0-9]{3}$")
588
			}
589
590
			OPTIONAL {
591
			    ?airport dbo:locationIdentifier ?lid .
592
			    FILTER regex(?lid, "^[A-Z0-9]{4}$")
593
			    FILTER (!bound(?icao) || (bound(?icao) && (?icao != ?lid)))
594
			    OPTIONAL {
595
				?airport_y rdf:type <http://dbpedia.org/ontology/Airport> .
596
				?airport_y dbo:icaoLocationIdentifier ?other_icao .
597
				FILTER (bound(?lid) && (?airport_y != ?airport && ?lid = ?other_icao))
598
			    }
599
			    FILTER (!bound(?other_icao))
600
			}
601
602
			OPTIONAL {
603
			    ?airport dbo:faaLocationIdentifier ?faa .
604
			    FILTER regex(?faa, "^[A-Z0-9]{3}$")
605
			    FILTER (!bound(?iata) || (bound(?iata) && (?iata != ?faa)))
606
			    OPTIONAL {
607
				?airport_x rdf:type <http://dbpedia.org/ontology/Airport> .
608
				?airport_x dbo:iataLocationIdentifier ?other_iata .
609
				FILTER (bound(?faa) && (?airport_x != ?airport && ?faa = ?other_iata))
610
			    }
611
			    FILTER (!bound(?other_iata))
612
			}
613
614
			FILTER (bound(?icao) || bound(?iata) || bound(?faa) || bound(?lid))
615
	
616
			OPTIONAL {
617
			    ?airport rdfs:label ?name
618
			    FILTER (lang(?name) = "en")
619
			}
620
    
621
			OPTIONAL {
622
			    ?airport foaf:homepage ?homepage
623
			}
624
		    
625
			OPTIONAL {
626
			    ?airport dbp:coordinatesRegion ?country
627
			}
628
    
629
			OPTIONAL {
630
			    ?airport dbp:type ?type
631
			}
632
			
633
			OPTIONAL {
634
			    ?airport dbo:elevation ?altitude
635
			}
636
			OPTIONAL {
637
			    ?airport dbp:image ?image
638
			}
639
640
			{
641
			    ?airport geo:lat ?latitude .
642
			    ?airport geo:long ?longitude .
643
			    FILTER (datatype(?latitude) = xsd:float)
644
			    FILTER (datatype(?longitude) = xsd:float)
645
			} UNION {
646
			    ?airport geo:lat ?latitude .
647
			    ?airport geo:long ?longitude .
648
			    FILTER (datatype(?latitude) = xsd:double)
649
			    FILTER (datatype(?longitude) = xsd:double)
650
			    OPTIONAL {
651
				?airport geo:lat ?lat_f .
652
				?airport geo:long ?long_f .
653
				FILTER (datatype(?lat_f) = xsd:float)
654
				FILTER (datatype(?long_f) = xsd:float)
655
			    }
656
			    FILTER (!bound(?lat_f) && !bound(?long_f))
657
			}
658
659
		    }
660
		    ORDER BY ?airport
661
		';
662
		$result = sparql_query($query);
663
  
664
		$query = 'TRUNCATE TABLE airport';
665
		try {
666
			$Connection = new Connection();
667
			$sth = $Connection->db->prepare($query);
668
                        $sth->execute();
669
                } catch(PDOException $e) {
670
                        return "error : ".$e->getMessage();
671
                }
672
673
674
		$query = 'ALTER TABLE airport DROP INDEX icaoidx';
675
		try {
676
			$Connection = new Connection();
677
			$sth = $Connection->db->prepare($query);
678
                        $sth->execute();
679
                } catch(PDOException $e) {
680
                        return "error : ".$e->getMessage();
681
                }
682
683
		$query_dest = "INSERT INTO airport (`airport_id`,`name`,`city`,`country`,`iata`,`icao`,`latitude`,`longitude`,`altitude`,`type`,`home_link`,`wikipedia_link`,`image_thumb`,`image`)
684
		    VALUES (:airport_id, :name, :city, :country, :iata, :icao, :latitude, :longitude, :altitude, :type, :home_link, :wikipedia_link, :image_thumb, :image)";
685
		$Connection = new Connection();
686
		$sth_dest = $Connection->db->prepare($query_dest);
687
		if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
688
  
689
		$i = 0;
690
		while($row = sparql_fetch_array($result))
691
		{
692
			if ($i >= 1) {
693
			//print_r($row);
694
			if (!isset($row['iata'])) $row['iata'] = '';
695
			if (!isset($row['icao'])) $row['icao'] = '';
696
			if (!isset($row['type'])) $row['type'] = '';
697
			if (!isset($row['altitude'])) $row['altitude'] = '';
698
			if (isset($row['city_bis'])) {
699
				$row['city'] = $row['city_bis'];
700
			}
701
			if (!isset($row['city'])) $row['city'] = '';
702
			if (!isset($row['country'])) $row['country'] = '';
703
			if (!isset($row['homepage'])) $row['homepage'] = '';
704
			if (!isset($row['wikipedia_page'])) $row['wikipedia_page'] = '';
705
			if (!isset($row['name'])) continue;
706
			if (!isset($row['image'])) {
707
				$row['image'] = '';
708
				$row['image_thumb'] = '';
709
			} else {
710
				$image = str_replace(' ','_',$row['image']);
711
				$digest = md5($image);
712
				$folder = $digest[0] . '/' . $digest[0] . $digest[1] . '/' . $image . '/220px-' . $image;
713
				$row['image_thumb'] = 'http://upload.wikimedia.org/wikipedia/commons/thumb/' . $folder;
714
				$folder = $digest[0] . '/' . $digest[0] . $digest[1] . '/' . $image;
715
				$row['image'] = 'http://upload.wikimedia.org/wikipedia/commons/' . $folder;
716
			}
717
			
718
			$country = explode('-',$row['country']);
719
			$row['country'] = $country[0];
720
			
721
			$row['type'] = trim($row['type']);
722
			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'])) {
723
				$row['type'] = 'Military';
724
			} 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') {
725
				$row['type'] = 'small_airport';
726
			}
727
			
728
			$row['city'] = urldecode(str_replace('_',' ',str_replace('http://dbpedia.org/resource/','',$row['city'])));
729
			$query_dest_values = array(':airport_id' => $i, ':name' => $row['name'],':iata' => $row['iata'],':icao' => $row['icao'],':latitude' => $row['latitude'],':longitude' => $row['longitude'],':altitude' => $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']);
730
			//print_r($query_dest_values);
731
			
732
			try {
733
				$sth_dest->execute($query_dest_values);
734
			} catch(PDOException $e) {
735
				return "error : ".$e->getMessage();
736
			}
737
			}
738
739
			$i++;
740
		}
741
		if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
742
		echo "Delete duplicate rows...\n";
743
		$query = 'ALTER IGNORE TABLE airport ADD UNIQUE INDEX icaoidx (icao)';
744
		try {
745
			$Connection = new Connection();
746
			$sth = $Connection->db->prepare($query);
747
                        $sth->execute();
748
                } catch(PDOException $e) {
749
                        return "error : ".$e->getMessage();
750
                }
751
752
753
		if ($globalDebug) echo "Insert Not available Airport...\n";
754
		$query = "INSERT INTO airport (`airport_id`,`name`,`city`,`country`,`iata`,`icao`,`latitude`,`longitude`,`altitude`,`type`,`home_link`,`wikipedia_link`,`image`,`image_thumb`)
755
		    VALUES (:airport_id, :name, :city, :country, :iata, :icao, :latitude, :longitude, :altitude, :type, :home_link, :wikipedia_link, :image, :image_thumb)";
756
		$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' => '');
757
		try {
758
			$Connection = new Connection();
759
			$sth = $Connection->db->prepare($query);
760
                        $sth->execute($query_values);
761
                } catch(PDOException $e) {
762
                        return "error : ".$e->getMessage();
763
                }
764
		$i++;
765
/*
766
		$query = 'DELETE FROM airport WHERE airport_id IN (SELECT * FROM (SELECT min(a.airport_id) FROM airport a GROUP BY a.icao) x)';
767
		try {
768
			$Connection = new Connection();
769
			$sth = $Connection->db->prepare($query);
770
                        $sth->execute();
771
                } catch(PDOException $e) {
772
                        return "error : ".$e->getMessage();
773
                }
774
*/
775
776
		echo "Download data from ourairports.com...\n";
777
		$delimiter = ',';
778
		$out_file = $tmp_dir.'airports.csv';
779
		update_db::download('http://ourairports.com/data/airports.csv',$out_file);
780
		if (!file_exists($out_file) || !is_readable($out_file)) return FALSE;
781
		echo "Add data from ourairports.com...\n";
782
783
		$header = NULL;
784
		if (($handle = fopen($out_file, 'r')) !== FALSE)
785
		{
786
			$Connection = new Connection();
787
			//$Connection->db->beginTransaction();
788
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
789
			{
790
				if(!$header) $header = $row;
791
				else {
792
					$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...
793
					$data = array_combine($header, $row);
794
					try {
795
						$sth = $Connection->db->prepare('SELECT COUNT(*) FROM airport WHERE `icao` = :icao');
796
						$sth->execute(array(':icao' => $data['gps_code']));
797
					} catch(PDOException $e) {
798
						return "error : ".$e->getMessage();
799
					}
800
					if ($sth->fetchColumn() > 0) {
801
						$query = 'UPDATE airport SET `type` = :type WHERE icao = :icao';
802
						try {
803
							$sth = $Connection->db->prepare($query);
804
							$sth->execute(array(':icao' => $data['gps_code'],':type' => $data['type']));
805
						} catch(PDOException $e) {
806
							return "error : ".$e->getMessage();
807
						}
808
					} else {
809
						$query = "INSERT INTO airport (`airport_id`,`name`,`city`,`country`,`iata`,`icao`,`latitude`,`longitude`,`altitude`,`type`,`home_link`,`wikipedia_link`)
810
						    VALUES (:airport_id, :name, :city, :country, :iata, :icao, :latitude, :longitude, :altitude, :type, :home_link, :wikipedia_link)";
811
						$query_values = array(':airport_id' => $i, ':name' => $data['name'],':iata' => $data['iata_code'],':icao' => $data['gps_code'],':latitude' => $data['latitude_deg'],':longitude' => $data['longitude_deg'],':altitude' => $data['elevation_ft'],':type' => $data['type'],':city' => $data['municipality'],':country' => $data['iso_country'],':home_link' => $data['home_link'],':wikipedia_link' => $data['wikipedia_link']);
812
						try {
813
							$sth = $Connection->db->prepare($query);
814
							$sth->execute($query_values);
815
						} catch(PDOException $e) {
816
							return "error : ".$e->getMessage();
817
						}
818
						$i++;
819
					}
820
				}
821
			}
822
			fclose($handle);
823
			//$Connection->db->commit();
824
		}
825
826
		echo "Download data from another free database...\n";
827
		$out_file = $tmp_dir.'GlobalAirportDatabase.zip';
828
		update_db::download('http://www.partow.net/downloads/GlobalAirportDatabase.zip',$out_file);
829
		if (!file_exists($out_file) || !is_readable($out_file)) return FALSE;
830
		update_db::unzip($out_file);
831
		$header = NULL;
832
		echo "Add data from another free database...\n";
833
		$delimiter = ':';
834
		$Connection = new Connection();
835
		if (($handle = fopen($tmp_dir.'GlobalAirportDatabase.txt', 'r')) !== FALSE)
836
		{
837
			//$Connection->db->beginTransaction();
838
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
839
			{
840
				if(!$header) $header = $row;
841
				else {
842
					$data = $row;
843
844
					$query = 'UPDATE airport SET `city` = :city, `country` = :country WHERE icao = :icao';
845
					try {
846
						$sth = $Connection->db->prepare($query);
847
						$sth->execute(array(':icao' => $data[0],':city' => ucwords(strtolower($data[3])),':country' => ucwords(strtolower($data[4]))));
848
					} catch(PDOException $e) {
849
						return "error : ".$e->getMessage();
850
					}
851
				}
852
			}
853
			fclose($handle);
854
			//$Connection->db->commit();
855
		}
856
857
		echo "Put type military for all air base";
858
		$Connection = new Connection();
859
		try {
860
			$sth = $Connection->db->prepare("SELECT icao FROM airport WHERE `name` LIKE '%Air Base%'");
861
			$sth->execute();
862
		} catch(PDOException $e) {
863
			return "error : ".$e->getMessage();
864
		}
865
		while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
866
			$query2 = 'UPDATE airport SET `type` = :type WHERE icao = :icao';
867
			try {
868
				$sth2 = $Connection->db->prepare($query2);
869
				$sth2->execute(array(':icao' => $row['icao'],':type' => 'military'));
870
			} catch(PDOException $e) {
871
				return "error : ".$e->getMessage();
872
			}
873
		}
874
875
876
877
                return "success";
878
	}
879
	
880
	public static function translation() {
881
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
882
		global $tmp_dir, $globalTransaction;
883
		$Spotter = new Spotter();
884
		//$out_file = $tmp_dir.'translation.zip';
885
		//update_db::download('http://www.acarsd.org/download/translation.php',$out_file);
886
		//if (!file_exists($out_file) || !is_readable($out_file)) return FALSE;
887
		
888
		//$query = 'TRUNCATE TABLE translation';
889
		$query = "DELETE FROM translation WHERE Source = '' OR Source = :source";
890
		try {
891
			$Connection = new Connection();
892
			$sth = $Connection->db->prepare($query);
893
                        $sth->execute(array(':source' => 'translation.csv'));
894
                } catch(PDOException $e) {
895
                        return "error : ".$e->getMessage();
896
                }
897
898
		
899
		//update_db::unzip($out_file);
900
		$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...
901
		$delimiter = ';';
902
		$Connection = new Connection();
903
		if (($handle = fopen($tmp_dir.'translation.csv', 'r')) !== FALSE)
904
		{
905
			$i = 0;
906
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
907
			//$Connection->db->beginTransaction();
908
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
909
			{
910
				$i++;
911
				if($i > 12) {
912
					$data = $row;
913
					$operator = $data[2];
914
					if ($operator != '' && is_numeric(substr(substr($operator, 0, 3), -1, 1))) {
915
                                                $airline_array = $Spotter->getAllAirlineInfo(substr($operator, 0, 2));
916
                                                //echo substr($operator, 0, 2)."\n";;
917
                                                if (count($airline_array) > 0) {
918
							//print_r($airline_array);
919
							$operator = $airline_array[0]['icao'].substr($operator,2);
920
                                                }
921
                                        }
922
					
923
					$operator_correct = $data[3];
924
					if ($operator_correct != '' && is_numeric(substr(substr($operator_correct, 0, 3), -1, 1))) {
925
                                                $airline_array = $Spotter->getAllAirlineInfo(substr($operator_correct, 0, 2));
926
                                                if (count($airline_array) > 0) {
927
                                            		$operator_correct = $airline_array[0]['icao'].substr($operator_correct,2);
928
                                            	}
929
                                        }
930
					$query = 'INSERT INTO translation (Reg,Reg_correct,Operator,Operator_correct,Source) VALUES (:Reg, :Reg_correct, :Operator, :Operator_correct, :source)';
931
					try {
932
						$sth = $Connection->db->prepare($query);
933
						$sth->execute(array(':Reg' => $data[0],':Reg_correct' => $data[1],':Operator' => $operator,':Operator_correct' => $operator_correct, ':source' => 'translation.csv'));
934
					} catch(PDOException $e) {
935
						return "error : ".$e->getMessage();
936
					}
937
				}
938
			}
939
			fclose($handle);
940
			//$Connection->db->commit();
941
		}
942
		return '';
943
        }
944
	
945
	public static function translation_fam() {
946
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
947
		global $tmp_dir, $globalTransaction;
948
		$Spotter = new Spotter();
0 ignored issues
show
Unused Code introduced by
$Spotter 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...
949
		$query = "DELETE FROM translation WHERE Source = '' OR Source = :source";
950
		try {
951
			$Connection = new Connection();
952
			$sth = $Connection->db->prepare($query);
953
                        $sth->execute(array(':source' => 'website_fam'));
954
                } catch(PDOException $e) {
955
                        return "error : ".$e->getMessage();
956
                }
957
958
		
959
		//update_db::unzip($out_file);
960
		$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...
961
		$delimiter = "\t";
962
		$Connection = new Connection();
963
		if (($handle = fopen($tmp_dir.'translation.tsv', 'r')) !== FALSE)
964
		{
965
			$i = 0;
966
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
967
			//$Connection->db->beginTransaction();
968
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
969
			{
970
				if ($i > 0) {
971
					$query = 'INSERT INTO translation (Reg,Reg_correct,Operator,Operator_correct,Source) VALUES (:Reg, :Reg_correct, :Operator, :Operator_correct, :source)';
972
					try {
973
						$sth = $Connection->db->prepare($query);
974
						$sth->execute(array(':Reg' => $data[0],':Reg_correct' => $data[1],':Operator' => $data[2],':Operator_correct' => $data[3], ':source' => 'website_fam'));
975
					} catch(PDOException $e) {
976
						return "error : ".$e->getMessage();
977
					}
978
				}
979
				$i++;
980
			}
981
			fclose($handle);
982
			//$Connection->db->commit();
983
		}
984
		return '';
985
        }
986
987
	/*
988
	* This function use FAA public data.
989
	* With the help of data from other source, Mfr id is added to manufacturer table. Then ModeS with ICAO are added based on that.
990
	*/
991
	public static function modes_faa() {
992
		global $tmp_dir, $globalTransaction, $globalDebug;
993
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source = :source";
994
		try {
995
			$Connection = new Connection();
996
			$sth = $Connection->db->prepare($query);
997
                        $sth->execute(array(':source' => 'website_faa'));
998
                } catch(PDOException $e) {
999
                        return "error : ".$e->getMessage();
1000
                }
1001
1002
		$query = "DELETE FROM aircraft_owner WHERE Source = '' OR Source = :source";
1003
		try {
1004
			$Connection = new Connection();
1005
			$sth = $Connection->db->prepare($query);
1006
                        $sth->execute(array(':source' => 'website_faa'));
1007
                } catch(PDOException $e) {
1008
                        return "error : ".$e->getMessage();
1009
                }
1010
1011
		$delimiter = ",";
1012
		$mfr = array();
1013
		$Connection = new Connection();
1014
		if (($handle = fopen($tmp_dir.'MASTER.txt', 'r')) !== FALSE)
1015
		{
1016
			$i = 0;
1017
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
1018
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1019
			{
1020
				if ($i > 0) {
1021
					$query_search = 'SELECT icaotypecode FROM aircraft_modes WHERE registration = :registration AND Source <> :source LIMIT 1';
1022
					try {
1023
						$sths = $Connection->db->prepare($query_search);
1024
						$sths->execute(array(':registration' => 'N'.$data[0],':source' => 'website_faa'));
1025
					} catch(PDOException $e) {
1026
						return "error s : ".$e->getMessage();
1027
					}
1028
					$result_search = $sths->fetchAll(PDO::FETCH_ASSOC);
1029
					if (!empty($result_search)) {
1030
						if ($globalDebug) echo '.';
1031
							//if ($globalDBdriver == 'mysql') {
1032
							//	$queryi = 'INSERT INTO faamfr (mfr,icao) VALUES (:mfr,:icao) ON DUPLICATE KEY UPDATE icao = :icao';
1033
							//} else {
1034
								$queryi = "INSERT INTO faamfr (mfr,icao) SELECT :mfr,:icao WHERE NOT EXISTS (SELECT 1 FROM faamfr WHERE mfr = :mfr);"; 
1035
							//}
1036
						try {
1037
							$sthi = $Connection->db->prepare($queryi);
1038
							$sthi->execute(array(':mfr' => $data[2],':icao' => $result_search[0]['icaotypecode']));
1039
						} catch(PDOException $e) {
1040
							return "error u : ".$e->getMessage();
1041
						}
1042
					} else {
1043
						$query_search_mfr = 'SELECT icao FROM faamfr WHERE mfr = :mfr';
1044
						try {
1045
							$sthsm = $Connection->db->prepare($query_search_mfr);
1046
							$sthsm->execute(array(':mfr' => $data[2]));
1047
						} catch(PDOException $e) {
1048
							return "error mfr : ".$e->getMessage();
1049
						}
1050
						$result_search_mfr = $sthsm->fetchAll(PDO::FETCH_ASSOC);
1051
						if (!empty($result_search_mfr)) {
1052
							if (trim($data[16]) == '' && trim($data[23]) != '') $data[16] = $data[23];
1053
							if (trim($data[16]) == '' && trim($data[15]) != '') $data[16] = $data[15];
1054
							$queryf = 'INSERT INTO aircraft_modes (FirstCreated,LastModified,ModeS,ModeSCountry,Registration,ICAOTypeCode,Source) VALUES (:FirstCreated,:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:source)';
1055
							try {
1056
								$sthf = $Connection->db->prepare($queryf);
1057
								$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'));
1058
							} catch(PDOException $e) {
1059
								return "error f : ".$e->getMessage();
1060
							}
1061
						}
1062
					}
1063
					if (strtotime($data[29]) > time()) {
1064
						if ($globalDebug) echo 'i';
1065
						$query = 'INSERT INTO aircraft_owner (registration,base,owner,date_first_reg,Source) VALUES (:registration,:base,:owner,:date_first_reg,:source)';
1066
						try {
1067
							$sth = $Connection->db->prepare($query);
1068
							$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'));
1069
						} catch(PDOException $e) {
1070
							return "error i : ".$e->getMessage();
1071
						}
1072
					}
1073
				}
1074
				if ($i % 90 == 0) {
1075
					if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
1076
					if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
1077
				}
1078
				$i++;
1079
			}
1080
			fclose($handle);
1081
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
1082
		}
1083
		print_r($mfr);
1084
		return '';
1085
        }
1086
	public static function modes_fam() {
1087
		global $tmp_dir, $globalTransaction;
1088
		$query = "DELETE FROM aircraft_modes WHERE Source = '' OR Source = :source";
1089
		try {
1090
			$Connection = new Connection();
1091
			$sth = $Connection->db->prepare($query);
1092
                        $sth->execute(array(':source' => 'website_fam'));
1093
                } catch(PDOException $e) {
1094
                        return "error : ".$e->getMessage();
1095
                }
1096
1097
		
1098
		//update_db::unzip($out_file);
1099
		$delimiter = "\t";
1100
		$Connection = new Connection();
1101
		if (($handle = fopen($tmp_dir.'modes.tsv', 'r')) !== FALSE)
1102
		{
1103
			$i = 0;
1104
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1105
			//$Connection->db->beginTransaction();
1106
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
1107
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1108
			{
1109
				if ($i > 0) {
1110
					if ($data[1] == 'NULL') $data[1] = $data[0];
1111
					$query = 'INSERT INTO aircraft_modes (FirstCreated,LastModified,ModeS,ModeSCountry,Registration,ICAOTypeCode,type_flight,Source) VALUES (:FirstCreated,:LastModified,:ModeS,:ModeSCountry,:Registration,:ICAOTypeCode,:type_flight,:source)';
1112
					try {
1113
						$sth = $Connection->db->prepare($query);
1114
						$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'));
1115
					} catch(PDOException $e) {
1116
						return "error : ".$e->getMessage();
1117
					}
1118
				}
1119
				$i++;
1120
			}
1121
			fclose($handle);
1122
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
1123
		}
1124
		return '';
1125
        }
1126
        
1127
	public static function owner_fam() {
1128
		global $tmp_dir, $globalTransaction;
1129
		$query = "DELETE FROM aircraft_owner WHERE Source = '' OR Source = :source";
1130
		try {
1131
			$Connection = new Connection();
1132
			$sth = $Connection->db->prepare($query);
1133
                        $sth->execute(array(':source' => 'website_fam'));
1134
                } catch(PDOException $e) {
1135
                        return "error : ".$e->getMessage();
1136
                }
1137
1138
		$delimiter = "\t";
1139
		$Connection = new Connection();
1140
		if (($handle = fopen($tmp_dir.'owners.tsv', 'r')) !== FALSE)
1141
		{
1142
			$i = 0;
1143
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
1144
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1145
			{
1146
				if ($i > 0) {
1147
					$query = 'INSERT INTO aircraft_owner (registration,base,owner,date_first_reg,Source) VALUES (:registration,:base,:owner,NULL,:source)';
1148
					try {
1149
						$sth = $Connection->db->prepare($query);
1150
						$sth->execute(array(':registration' => $data[0],':base' => $data[1],':owner' => $data[2], ':source' => 'website_fam'));
1151
					} catch(PDOException $e) {
1152
						print_r($data);
1153
						return "error : ".$e->getMessage();
1154
					}
1155
				}
1156
				$i++;
1157
			}
1158
			fclose($handle);
1159
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
1160
		}
1161
		return '';
1162
        }
1163
1164
	public static function routes_fam() {
1165
		global $tmp_dir, $globalTransaction;
1166
		$query = "DELETE FROM routes WHERE Source = '' OR Source = :source";
1167
		try {
1168
			$Connection = new Connection();
1169
			$sth = $Connection->db->prepare($query);
1170
                        $sth->execute(array(':source' => 'website_fam'));
1171
                } catch(PDOException $e) {
1172
                        return "error : ".$e->getMessage();
1173
                }
1174
1175
		
1176
		//update_db::unzip($out_file);
1177
		$delimiter = "\t";
1178
		$Connection = new Connection();
1179
		if (($handle = fopen($tmp_dir.'routes.tsv', 'r')) !== FALSE)
1180
		{
1181
			$i = 0;
1182
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1183
			//$Connection->db->beginTransaction();
1184
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
1185
			while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1186
			{
1187
				if ($i > 0) {
1188
					$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)';
1189
					try {
1190
						$sth = $Connection->db->prepare($query);
1191
						$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'));
1192
					} catch(PDOException $e) {
1193
						return "error : ".$e->getMessage();
1194
					}
1195
				}
1196
				$i++;
1197
			}
1198
			fclose($handle);
1199
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
1200
		}
1201
		return '';
1202
        }
1203
1204
	public static function banned_fam() {
1205
		global $tmp_dir, $globalTransaction;
1206
		$query = "UPDATE airlines SET ban_eu = 0";
1207
		try {
1208
			$Connection = new Connection();
1209
			$sth = $Connection->db->prepare($query);
1210
			$sth->execute();
1211
		} catch(PDOException $e) {
1212
			return "error : ".$e->getMessage();
1213
		}
1214
1215
		$Connection = new Connection();
1216
		if (($handle = fopen($tmp_dir.'ban_eu.csv', 'r')) !== FALSE)
1217
		{
1218
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
1219
			while (($data = fgetcsv($handle, 1000)) !== FALSE)
1220
			{
1221
				$query = 'UPDATE airlines SET ban_eu = 1 WHERE icao = :icao AND forsource IS NULL';
1222
				if ($data[0] != '') {
1223
					$icao = $data[0];
1224
					try {
1225
						$sth = $Connection->db->prepare($query);
1226
						$sth->execute(array(':icao' => $icao));
1227
					} catch(PDOException $e) {
1228
						return "error : ".$e->getMessage();
1229
					}
1230
				}
1231
			}
1232
			fclose($handle);
1233
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
1234
		}
1235
		return '';
1236
        }
1237
1238
	public static function tle($filename,$tletype) {
1239
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1240
		global $tmp_dir, $globalTransaction;
1241
		//$Spotter = new Spotter();
1242
		
1243
		$query = "DELETE FROM tle WHERE tle_source = '' OR tle_source = :source";
1244
		try {
1245
			$Connection = new Connection();
1246
			$sth = $Connection->db->prepare($query);
1247
                        $sth->execute(array(':source' => $filename));
1248
                } catch(PDOException $e) {
1249
                        return "error : ".$e->getMessage();
1250
                }
1251
		
1252
		$Connection = new Connection();
1253
		if (($handle = fopen($filename, 'r')) !== FALSE)
1254
		{
1255
			$i = 0;
1256
			//$Connection->db->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
1257
			//$Connection->db->beginTransaction();
1258
			$dbdata = array();
1259
			while (($data = fgets($handle, 1000)) !== FALSE)
1260
			{
1261
				if ($i == 0) {
1262
					$dbdata['name'] = trim($data);
1263
					$i++;
1264
				} elseif ($i == 1) {
1265
					$dbdata['tle1'] = trim($data);
1266
					$i++;
1267
				} elseif ($i == 2) {
1268
					$dbdata['tle2'] = trim($data);
1269
					//print_r($dbdata);
1270
					$query = 'INSERT INTO tle (tle_name,tle_tle1,tle_tle2,tle_type,tle_source) VALUES (:name, :tle1, :tle2, :type, :source)';
1271
					try {
1272
						$sth = $Connection->db->prepare($query);
1273
						$sth->execute(array(':name' => $dbdata['name'],':tle1' => $dbdata['tle1'],':tle2' => $dbdata['tle2'], ':type' => $tletype,':source' => $filename));
1274
					} catch(PDOException $e) {
1275
						return "error : ".$e->getMessage();
1276
					}
1277
1278
					$i = 0;
1279
				}
1280
			}
1281
			fclose($handle);
1282
			//$Connection->db->commit();
1283
		}
1284
		return '';
1285
        }
1286
1287
	/**
1288
        * Convert a HTML table to an array
1289
        * @param String $data HTML page
1290
        * @return Array array of the tables in HTML page
1291
        */
1292
        private static function table2array($data) {
1293
                $html = str_get_html($data);
1294
                $tabledata=array();
1295
                foreach($html->find('tr') as $element)
1296
                {
1297
                        $td = array();
1298
                        foreach( $element->find('th') as $row)
1299
                        {
1300
                                $td [] = trim($row->plaintext);
1301
                        }
1302
                        $td=array_filter($td);
1303
                        $tabledata[] = $td;
1304
1305
                        $td = array();
1306
                        $tdi = array();
1307
                        foreach( $element->find('td') as $row)
1308
                        {
1309
                                $td [] = trim($row->plaintext);
1310
                                $tdi [] = trim($row->innertext);
1311
                        }
1312
                        $td=array_filter($td);
1313
                        $tdi=array_filter($tdi);
0 ignored issues
show
Unused Code introduced by
$tdi 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...
1314
                    //    $tabledata[]=array_merge($td,$tdi);
1315
                        $tabledata[]=$td;
1316
                }
1317
                return(array_filter($tabledata));
1318
        }
1319
1320
       /**
1321
        * Get data from form result
1322
        * @param String $url form URL
1323
        * @return String the result
1324
        */
1325
        private static function getData($url) {
1326
                $ch = curl_init();
1327
                curl_setopt($ch, CURLOPT_URL, $url);
1328
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1329
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
1330
                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');
1331
                return curl_exec($ch);
1332
        }
1333
/*
1334
	public static function waypoints() {
1335
		$data = update_db::getData('http://www.fallingrain.com/world/FR/waypoints.html');
1336
		$table = update_db::table2array($data);
1337
//		print_r($table);
1338
		$query = 'TRUNCATE TABLE waypoints';
1339
		try {
1340
			$Connection = new Connection();
1341
			$sth = $Connection->db->prepare($query);
1342
                        $sth->execute();
1343
                } catch(PDOException $e) {
1344
                        return "error : ".$e->getMessage();
1345
                }
1346
1347
		$query_dest = 'INSERT INTO waypoints (`ident`,`latitude`,`longitude`,`control`,`usage`) VALUES (:ident, :latitude, :longitude, :control, :usage)';
1348
		$Connection = new Connection();
1349
		$sth_dest = $Connection->db->prepare($query_dest);
1350
		$Connection->db->beginTransaction();
1351
                foreach ($table as $row) {
1352
            		if ($row[0] != 'Ident') {
1353
				$ident = $row[0];
1354
				$latitude = $row[2];
1355
				$longitude = $row[3];
1356
				$control = $row[4];
1357
				if (isset($row[5])) $usage = $row[5]; else $usage = '';
1358
				$query_dest_values = array(':ident' => $ident,':latitude' => $latitude,':longitude' => $longitude,':control' => $control,':usage' => $usage);
1359
				try {
1360
					$sth_dest->execute($query_dest_values);
1361
				} catch(PDOException $e) {
1362
					return "error : ".$e->getMessage();
1363
				}
1364
			}
1365
                }
1366
		$Connection->db->commit();
1367
1368
	}
1369
*/
1370
	public static function waypoints($filename) {
1371
		//require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1372
		global $tmp_dir, $globalTransaction;
1373
		//$Spotter = new Spotter();
1374
		//$out_file = $tmp_dir.'translation.zip';
1375
		//update_db::download('http://www.acarsd.org/download/translation.php',$out_file);
1376
		//if (!file_exists($out_file) || !is_readable($out_file)) return FALSE;
1377
		$Connection = new Connection();
1378
		//update_db::unzip($out_file);
1379
		$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...
1380
		$delimiter = ' ';
1381
		if (($handle = fopen($filename, 'r')) !== FALSE)
1382
		{
1383
			$i = 0;
1384
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
1385
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1386
			{
1387
				$i++;
1388
				if($i > 3 && count($row) > 2) {
1389
					$data = array_values(array_filter($row));
1390
					$cntdata = count($data);
1391
					if ($cntdata > 10) {
1392
						$value = $data[9];
1393
						
1394
						for ($i =10;$i < $cntdata;$i++) {
1395
							$value .= ' '.$data[$i];
1396
						}
1397
						$data[9] = $value;
1398
					}
1399
					//print_r($data);
1400
					if (count($data) > 9) {
1401
						$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)';
1402
						try {
1403
							$sth = $Connection->db->prepare($query);
1404
							$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]));
1405
						} catch(PDOException $e) {
1406
							return "error : ".$e->getMessage();
1407
						}
1408
					}
1409
				}
1410
			}
1411
			fclose($handle);
1412
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
1413
		}
1414
		return '';
1415
        }
1416
1417
	public static function ivao_airlines($filename) {
1418
		//require_once(dirname(__FILE__).'/../require/class.Spotter.php');
1419
		global $tmp_dir, $globalTransaction;
1420
		//$query = 'TRUNCATE TABLE airlines';
1421
		$query = "DELETE FROM airlines WHERE forsource = 'ivao'";
1422
		try {
1423
			$Connection = new Connection();
1424
			$sth = $Connection->db->prepare($query);
1425
                        $sth->execute();
1426
                } catch(PDOException $e) {
1427
                        return "error : ".$e->getMessage();
1428
                }
1429
1430
		$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...
1431
		$delimiter = ':';
1432
		$Connection = new Connection();
1433
		if (($handle = fopen($filename, 'r')) !== FALSE)
1434
		{
1435
			if ($globalTransaction) $Connection->db->beginTransaction();
1 ignored issue
show
Bug introduced by
The method beginTransaction 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...
1436
			while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
1437
			{
1438
				if(count($row) > 1) {
1439
					$query = "INSERT INTO airlines (name,icao,active,forsource) VALUES (:name, :icao, 'Y','ivao')";
1440
					try {
1441
						$sth = $Connection->db->prepare($query);
1442
						$sth->execute(array(':name' => $row[1],':icao' => $row[0]));
1443
					} catch(PDOException $e) {
1444
						return "error : ".$e->getMessage();
1445
					}
1446
				}
1447
			}
1448
			fclose($handle);
1449
			if ($globalTransaction) $Connection->db->commit();
1 ignored issue
show
Bug introduced by
The method commit 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...
1450
		}
1451
		return '';
1452
        }
1453
	
1454
	public static function update_airspace() {
1455
		global $tmp_dir, $globalDBdriver;
1456
		include_once('class.create_db.php');
1457
		$Connection = new Connection();
1458
		if ($Connection->tableExists('airspace')) {
1459
			$query = 'DROP TABLE airspace';
1460
			try {
1461
				$sth = $Connection->db->prepare($query);
1462
                    		$sth->execute();
1463
	                } catch(PDOException $e) {
1464
				return "error : ".$e->getMessage();
1465
	                }
1466
	        }
1467
1468
1469
		if ($globalDBdriver == 'mysql') update_db::gunzip('../db/airspace.sql.gz',$tmp_dir.'airspace.sql');
1470
		else {
1471
			update_db::gunzip('../db/pgsql/airspace.sql.gz',$tmp_dir.'airspace.sql');
1472
			$query = "CREATE EXTENSION postgis";
1473
			$Connection = new Connection(null,null,$_SESSION['database_root'],$_SESSION['database_rootpass']);
1474
			try {
1475
				$sth = $Connection->db->prepare($query);
1476
				$sth->execute();
1477
			} catch(PDOException $e) {
1478
				return "error : ".$e->getMessage();
1479
			}
1480
		}
1481
		$error = create_db::import_file($tmp_dir.'airspace.sql');
1482
		return $error;
1483
	}
1484
1485
	public static function update_notam_fam() {
1486
		global $tmp_dir, $globalDebug;
1487
		include_once('class.create_db.php');
1488
		require_once(dirname(__FILE__).'/../require/class.NOTAM.php');
1489
		if ($globalDebug) echo "NOTAM from FlightAirMap website : Download...";
1490
		update_db::download('http://data.flightairmap.fr/data/notam.txt.gz',$tmp_dir.'notam.txt.gz');
1491
		$error = '';
1492
		if (file_exists($tmp_dir.'notam.txt.gz')) {
1493
			if ($globalDebug) echo "Gunzip...";
1494
			update_db::gunzip($tmp_dir.'notam.txt.gz');
1495
			if ($globalDebug) echo "Add to DB...";
1496
			//$error = create_db::import_file($tmp_dir.'notam.sql');
1497
			$NOTAM = new NOTAM();
1498
			$NOTAM->updateNOTAMfromTextFile($tmp_dir.'notam.txt');
1499
		} else $error = "File ".$tmp_dir.'notam.txt.gz'." doesn't exist. Download failed.";
1500
		if ($error != '') {
1501
			return $error;
1502
		} elseif ($globalDebug) echo "Done\n";
1503
		return '';
1504
	}
1505
1506
	public static function update_vatsim() {
1507
		global $tmp_dir;
1508
		include_once('class.create_db.php');
1509
		$error = create_db::import_file('../db/vatsim/airlines.sql');
1510
		return $error;
1511
	}
1512
	
1513
	public static function update_countries() {
1514
		global $tmp_dir, $globalDBdriver;
1515
		include_once('class.create_db.php');
1516
		$Connection = new Connection();
1517
		if ($Connection->tableExists('countries')) {
1518
			$query = 'DROP TABLE countries';
1519
			try {
1520
				$sth = $Connection->db->prepare($query);
1521
            	        	$sth->execute();
1522
	                } catch(PDOException $e) {
1523
    	                	echo "error : ".$e->getMessage();
1524
	                }
1525
		}
1526
		if ($globalDBdriver == 'mysql') {
1527
			update_db::gunzip('../db/countries.sql.gz',$tmp_dir.'countries.sql');
1528
		} else {
1529
			update_db::gunzip('../db/pgsql/countries.sql.gz',$tmp_dir.'countries.sql');
1530
		}
1531
		$error = create_db::import_file($tmp_dir.'countries.sql');
1532
		return $error;
1533
	}
1534
1535
	
1536
	public static function update_waypoints() {
1537
		global $tmp_dir;
1538
//		update_db::download('http://dev.x-plane.com/update/data/AptNav201310XP1000.zip',$tmp_dir.'AptNav.zip');
1539
//		update_db::unzip($tmp_dir.'AptNav.zip');
1540
//		update_db::download('https://gitorious.org/fg/fgdata/raw/e81f8a15424a175a7b715f8f7eb8f4147b802a27:Navaids/awy.dat.gz',$tmp_dir.'awy.dat.gz');
1541
//		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');
1542
		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');
1543
		update_db::gunzip($tmp_dir.'awy.dat.gz');
1544
		$error = update_db::waypoints($tmp_dir.'awy.dat');
1545
		return $error;
1546
	}
1547
1548
	public static function update_ivao() {
1549
		global $tmp_dir, $globalDebug;
1550
		$Common = new Common();
1551
		$error = '';
1552
		//Direct download forbidden
1553
		//if ($globalDebug) echo "IVAO : Download...";
1554
		//update_db::download('http://fr.mirror.ivao.aero/software/ivae_feb2013.zip',$tmp_dir.'ivae_feb2013.zip');
1555
		if (file_exists($tmp_dir.'ivae_feb2013.zip')) {
1556
			if ($globalDebug) echo "Unzip...";
1557
			update_db::unzip($tmp_dir.'ivae_feb2013.zip');
1558
			if ($globalDebug) echo "Add to DB...";
1559
			update_db::ivao_airlines($tmp_dir.'data/airlines.dat');
1560
			if ($globalDebug) echo "Copy airlines logos to airlines images directory...";
1561
			if (is_writable(dirname(__FILE__).'/../images/airlines')) {
1562
				if (!$Common->xcopy($tmp_dir.'logos/',dirname(__FILE__).'/../images/airlines/')) $error = "Failed to copy airlines logo.";
1563
			} else $error = "The directory ".dirname(__FILE__).'/../images/airlines'." must be writable";
1564
		} else $error = "File ".$tmp_dir.'ivao.zip'." doesn't exist. Download failed.";
1565
		if ($error != '') {
1566
			return $error;
1567
		} elseif ($globalDebug) echo "Done\n";
1568
		return '';
1569
	}
1570
1571
	public static function update_routes() {
1572
		global $tmp_dir, $globalDebug;
1573
		$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...
1574
		if ($globalDebug) echo "Routes : Download...";
1575
		update_db::download('http://www.virtualradarserver.co.uk/Files/StandingData.sqb.gz',$tmp_dir.'StandingData.sqb.gz');
1576
		if (file_exists($tmp_dir.'StandingData.sqb.gz')) {
1577
			if ($globalDebug) echo "Gunzip...";
1578
			update_db::gunzip($tmp_dir.'StandingData.sqb.gz');
1579
			if ($globalDebug) echo "Add to DB...";
1580
			$error = update_db::retrieve_route_sqlite_to_dest($tmp_dir.'StandingData.sqb');
1581
		} else $error = "File ".$tmp_dir.'StandingData.sqb.gz'." doesn't exist. Download failed.";
1582
		if ($error != '') {
1583
			return $error;
1584
		} elseif ($globalDebug) echo "Done\n";
1585
		return '';
1586
	}
1587
	public static function update_oneworld() {
1588
		global $tmp_dir, $globalDebug;
1589
		$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...
1590
		if ($globalDebug) echo "Schedules Oneworld : Download...";
1591
		update_db::download('http://data.flightairmap.fr/data/schedules/oneworld.csv.gz',$tmp_dir.'oneworld.csv.gz');
1592
		if (file_exists($tmp_dir.'oneworld.csv.gz')) {
1593
			if ($globalDebug) echo "Gunzip...";
1594
			update_db::gunzip($tmp_dir.'oneworld.csv.gz');
1595
			if ($globalDebug) echo "Add to DB...";
1596
			$error = update_db::retrieve_route_oneworld($tmp_dir.'oneworld.csv');
1597
		} else $error = "File ".$tmp_dir.'oneworld.csv.gz'." doesn't exist. Download failed.";
1598
		if ($error != '') {
1599
			return $error;
1600
		} elseif ($globalDebug) echo "Done\n";
1601
		return '';
1602
	}
1603
	public static function update_skyteam() {
1604
		global $tmp_dir, $globalDebug;
1605
		$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...
1606
		if ($globalDebug) echo "Schedules Skyteam : Download...";
1607
		update_db::download('http://data.flightairmap.fr/data/schedules/skyteam.csv.gz',$tmp_dir.'skyteam.csv.gz');
1608
		if (file_exists($tmp_dir.'skyteam.csv.gz')) {
1609
			if ($globalDebug) echo "Gunzip...";
1610
			update_db::gunzip($tmp_dir.'skyteam.csv.gz');
1611
			if ($globalDebug) echo "Add to DB...";
1612
			$error = update_db::retrieve_route_skyteam($tmp_dir.'skyteam.csv');
1613
		} else $error = "File ".$tmp_dir.'skyteam.csv.gz'." doesn't exist. Download failed.";
1614
		if ($error != '') {
1615
			return $error;
1616
		} elseif ($globalDebug) echo "Done\n";
1617
		return '';
1618
	}
1619
	public static function update_ModeS() {
1620
		global $tmp_dir, $globalDebug;
1621
/*
1622
		if ($globalDebug) echo "Modes : Download...";
1623
		update_db::download('http://pp-sqb.mantma.co.uk/basestation_latest.zip',$tmp_dir.'basestation_latest.zip');
1624
		if ($globalDebug) echo "Unzip...";
1625
		update_db::unzip($tmp_dir.'basestation_latest.zip');
1626
		if ($globalDebug) echo "Add to DB...";
1627
		$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'/basestation_latest/basestation.sqb');
1628
		if ($error != true) {
1629
			echo $error;
1630
			exit;
1631
		} elseif ($globalDebug) echo "Done\n";
1632
*/
1633
		if ($globalDebug) echo "Modes : Download...";
1634
//		update_db::download('http://planebase.biz/sqb.php?f=basestationall.zip',$tmp_dir.'basestation_latest.zip','http://planebase.biz/bstnsqb');
1635
		update_db::download('http://data.flightairmap.fr/data/BaseStation.sqb.gz',$tmp_dir.'BaseStation.sqb.gz');
1636
1637
//		if (file_exists($tmp_dir.'basestation_latest.zip')) {
1638
		if (file_exists($tmp_dir.'BaseStation.sqb.gz')) {
1639
			if ($globalDebug) echo "Unzip...";
1640
//			update_db::unzip($tmp_dir.'basestation_latest.zip');
1641
			update_db::gunzip($tmp_dir.'BaseStation.sqb.gz');
1642
			if ($globalDebug) echo "Add to DB...";
1643
			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'BaseStation.sqb');
1644
//			$error = update_db::retrieve_modes_sqlite_to_dest($tmp_dir.'basestation.sqb');
1645
		} else $error = "File ".$tmp_dir.'basestation_latest.zip'." doesn't exist. Download failed.";
1646
		if ($error != '') {
1647
			return $error;
1648
		} elseif ($globalDebug) echo "Done\n";
1649
		return '';
1650
	}
1651
1652
	public static function update_ModeS_faa() {
1653
		global $tmp_dir, $globalDebug;
1654
		if ($globalDebug) echo "Modes FAA: Download...";
1655
		update_db::download('http://registry.faa.gov/database/ReleasableAircraft.zip',$tmp_dir.'ReleasableAircraft.zip');
1656
		if (file_exists($tmp_dir.'ReleasableAircraft.zip')) {
1657
			if ($globalDebug) echo "Unzip...";
1658
			update_db::unzip($tmp_dir.'ReleasableAircraft.zip');
1659
			if ($globalDebug) echo "Add to DB...";
1660
			$error = update_db::modes_faa();
1661
		} else $error = "File ".$tmp_dir.'ReleasableAircraft.zip'." doesn't exist. Download failed.";
1662
		if ($error != '') {
1663
			return $error;
1664
		} elseif ($globalDebug) echo "Done\n";
1665
		return '';
1666
	}
1667
1668
	public static function update_ModeS_flarm() {
1669
		global $tmp_dir, $globalDebug;
1670
		if ($globalDebug) echo "Modes Flarmnet: Download...";
1671
		update_db::download('http://flarmnet.org/files/data.fln',$tmp_dir.'data.fln');
1672
		if (file_exists($tmp_dir.'data.fln')) {
1673
			if ($globalDebug) echo "Add to DB...";
1674
			$error = update_db::retrieve_modes_flarmnet($tmp_dir.'data.fln');
1675
		} else $error = "File ".$tmp_dir.'data.fln'." doesn't exist. Download failed.";
1676
		if ($error != '') {
1677
			return $error;
1678
		} elseif ($globalDebug) echo "Done\n";
1679
		return '';
1680
	}
1681
1682
	public static function update_ModeS_ogn() {
1683
		global $tmp_dir, $globalDebug;
1684
		if ($globalDebug) echo "Modes OGN: Download...";
1685
		update_db::download('http://ddb.glidernet.org/download/',$tmp_dir.'ogn.csv');
1686
		if (file_exists($tmp_dir.'ogn.csv')) {
1687
			if ($globalDebug) echo "Add to DB...";
1688
			$error = update_db::retrieve_modes_ogn($tmp_dir.'ogn.csv');
1689
		} else $error = "File ".$tmp_dir.'ogn.csv'." doesn't exist. Download failed.";
1690
		if ($error != '') {
1691
			return $error;
1692
		} elseif ($globalDebug) echo "Done\n";
1693
		return '';
1694
	}
1695
1696
	public static function update_owner() {
1697
		global $tmp_dir, $globalDebug, $globalMasterSource;
1698
		
1699
		if ($globalDebug) echo "Owner France: Download...";
1700
		update_db::download('http://antonakis.co.uk/registers/France.txt',$tmp_dir.'owner_f.csv');
1701
		if (file_exists($tmp_dir.'owner_f.csv')) {
1702
			if ($globalDebug) echo "Add to DB...";
1703
			$error = update_db::retrieve_owner($tmp_dir.'owner_f.csv','F');
1704
		} else $error = "File ".$tmp_dir.'owner_f.csv'." doesn't exist. Download failed.";
1705
		if ($error != '') {
1706
			return $error;
1707
		} elseif ($globalDebug) echo "Done\n";
1708
		
1709
		if ($globalDebug) echo "Owner Ireland: Download...";
1710
		update_db::download('http://antonakis.co.uk/registers/Ireland.txt',$tmp_dir.'owner_ei.csv');
1711
		if (file_exists($tmp_dir.'owner_ei.csv')) {
1712
			if ($globalDebug) echo "Add to DB...";
1713
			$error = update_db::retrieve_owner($tmp_dir.'owner_ei.csv','EI');
1714
		} else $error = "File ".$tmp_dir.'owner_ei.csv'." doesn't exist. Download failed.";
1715
		if ($error != '') {
1716
			return $error;
1717
		} elseif ($globalDebug) echo "Done\n";
1718
		if ($globalDebug) echo "Owner Switzerland: Download...";
1719
		update_db::download('http://antonakis.co.uk/registers/Switzerland.txt',$tmp_dir.'owner_hb.csv');
1720
		if (file_exists($tmp_dir.'owner_hb.csv')) {
1721
			if ($globalDebug) echo "Add to DB...";
1722
			$error = update_db::retrieve_owner($tmp_dir.'owner_hb.csv','HB');
1723
		} else $error = "File ".$tmp_dir.'owner_hb.csv'." doesn't exist. Download failed.";
1724
		if ($error != '') {
1725
			return $error;
1726
		} elseif ($globalDebug) echo "Done\n";
1727
		if ($globalDebug) echo "Owner Czech Republic: Download...";
1728
		update_db::download('http://antonakis.co.uk/registers/CzechRepublic.txt',$tmp_dir.'owner_ok.csv');
1729
		if (file_exists($tmp_dir.'owner_ok.csv')) {
1730
			if ($globalDebug) echo "Add to DB...";
1731
			$error = update_db::retrieve_owner($tmp_dir.'owner_ok.csv','OK');
1732
		} else $error = "File ".$tmp_dir.'owner_ok.csv'." doesn't exist. Download failed.";
1733
		if ($error != '') {
1734
			return $error;
1735
		} elseif ($globalDebug) echo "Done\n";
1736
		if ($globalDebug) echo "Owner Australia: Download...";
1737
		update_db::download('http://antonakis.co.uk/registers/Australia.txt',$tmp_dir.'owner_vh.csv');
1738
		if (file_exists($tmp_dir.'owner_vh.csv')) {
1739
			if ($globalDebug) echo "Add to DB...";
1740
			$error = update_db::retrieve_owner($tmp_dir.'owner_vh.csv','VH');
1741
		} else $error = "File ".$tmp_dir.'owner_vh.csv'." doesn't exist. Download failed.";
1742
		if ($error != '') {
1743
			return $error;
1744
		} elseif ($globalDebug) echo "Done\n";
1745
		if ($globalDebug) echo "Owner Austria: Download...";
1746
		update_db::download('http://antonakis.co.uk/registers/Austria.txt',$tmp_dir.'owner_oe.csv');
1747
		if (file_exists($tmp_dir.'owner_oe.csv')) {
1748
			if ($globalDebug) echo "Add to DB...";
1749
			$error = update_db::retrieve_owner($tmp_dir.'owner_oe.csv','OE');
1750
		} else $error = "File ".$tmp_dir.'owner_oe.csv'." doesn't exist. Download failed.";
1751
		if ($error != '') {
1752
			return $error;
1753
		} elseif ($globalDebug) echo "Done\n";
1754
		if ($globalDebug) echo "Owner Chile: Download...";
1755
		update_db::download('http://antonakis.co.uk/registers/Chile.txt',$tmp_dir.'owner_cc.csv');
1756
		if (file_exists($tmp_dir.'owner_cc.csv')) {
1757
			if ($globalDebug) echo "Add to DB...";
1758
			$error = update_db::retrieve_owner($tmp_dir.'owner_cc.csv','CC');
1759
		} else $error = "File ".$tmp_dir.'owner_cc.csv'." doesn't exist. Download failed.";
1760
		if ($error != '') {
1761
			return $error;
1762
		} elseif ($globalDebug) echo "Done\n";
1763
		if ($globalDebug) echo "Owner Colombia: Download...";
1764
		update_db::download('http://antonakis.co.uk/registers/Colombia.txt',$tmp_dir.'owner_hj.csv');
1765
		if (file_exists($tmp_dir.'owner_hj.csv')) {
1766
			if ($globalDebug) echo "Add to DB...";
1767
			$error = update_db::retrieve_owner($tmp_dir.'owner_hj.csv','HJ');
1768
		} else $error = "File ".$tmp_dir.'owner_hj.csv'." doesn't exist. Download failed.";
1769
		if ($error != '') {
1770
			return $error;
1771
		} elseif ($globalDebug) echo "Done\n";
1772
		if ($globalDebug) echo "Owner Bosnia Herzegobina: Download...";
1773
		update_db::download('http://antonakis.co.uk/registers/BosniaHerzegovina.txt',$tmp_dir.'owner_e7.csv');
1774
		if (file_exists($tmp_dir.'owner_e7.csv')) {
1775
			if ($globalDebug) echo "Add to DB...";
1776
			$error = update_db::retrieve_owner($tmp_dir.'owner_e7.csv','E7');
1777
		} else $error = "File ".$tmp_dir.'owner_e7.csv'." doesn't exist. Download failed.";
1778
		if ($error != '') {
1779
			return $error;
1780
		} elseif ($globalDebug) echo "Done\n";
1781
		if ($globalDebug) echo "Owner Brazil: Download...";
1782
		update_db::download('http://antonakis.co.uk/registers/Brazil.txt',$tmp_dir.'owner_pp.csv');
1783
		if (file_exists($tmp_dir.'owner_pp.csv')) {
1784
			if ($globalDebug) echo "Add to DB...";
1785
			$error = update_db::retrieve_owner($tmp_dir.'owner_pp.csv','PP');
1786
		} else $error = "File ".$tmp_dir.'owner_pp.csv'." doesn't exist. Download failed.";
1787
		if ($error != '') {
1788
			return $error;
1789
		} elseif ($globalDebug) echo "Done\n";
1790
		if ($globalDebug) echo "Owner Cayman Islands: Download...";
1791
		update_db::download('http://antonakis.co.uk/registers/CaymanIslands.txt',$tmp_dir.'owner_vp.csv');
1792
		if (file_exists($tmp_dir.'owner_vp.csv')) {
1793
			if ($globalDebug) echo "Add to DB...";
1794
			$error = update_db::retrieve_owner($tmp_dir.'owner_vp.csv','VP');
1795
		} else $error = "File ".$tmp_dir.'owner_vp.csv'." doesn't exist. Download failed.";
1796
		if ($error != '') {
1797
			return $error;
1798
		} elseif ($globalDebug) echo "Done\n";
1799
		if ($globalDebug) echo "Owner Croatia: Download...";
1800
		update_db::download('http://antonakis.co.uk/registers/Croatia.txt',$tmp_dir.'owner_9a.csv');
1801
		if (file_exists($tmp_dir.'owner_9a.csv')) {
1802
			if ($globalDebug) echo "Add to DB...";
1803
			$error = update_db::retrieve_owner($tmp_dir.'owner_9a.csv','9A');
1804
		} else $error = "File ".$tmp_dir.'owner_9a.csv'." doesn't exist. Download failed.";
1805
		if ($error != '') {
1806
			return $error;
1807
		} elseif ($globalDebug) echo "Done\n";
1808
		if ($globalDebug) echo "Owner Luxembourg: Download...";
1809
		update_db::download('http://antonakis.co.uk/registers/Luxembourg.txt',$tmp_dir.'owner_lx.csv');
1810
		if (file_exists($tmp_dir.'owner_lx.csv')) {
1811
			if ($globalDebug) echo "Add to DB...";
1812
			$error = update_db::retrieve_owner($tmp_dir.'owner_lx.csv','LX');
1813
		} else $error = "File ".$tmp_dir.'owner_lx.csv'." doesn't exist. Download failed.";
1814
		if ($error != '') {
1815
			return $error;
1816
		} elseif ($globalDebug) echo "Done\n";
1817
		if ($globalDebug) echo "Owner Maldives: Download...";
1818
		update_db::download('http://antonakis.co.uk/registers/Maldives.txt',$tmp_dir.'owner_8q.csv');
1819
		if (file_exists($tmp_dir.'owner_8q.csv')) {
1820
			if ($globalDebug) echo "Add to DB...";
1821
			$error = update_db::retrieve_owner($tmp_dir.'owner_8q.csv','8Q');
1822
		} else $error = "File ".$tmp_dir.'owner_8q.csv'." doesn't exist. Download failed.";
1823
		if ($error != '') {
1824
			return $error;
1825
		} elseif ($globalDebug) echo "Done\n";
1826
		if ($globalDebug) echo "Owner New Zealand: Download...";
1827
		update_db::download('http://antonakis.co.uk/registers/NewZealand.txt',$tmp_dir.'owner_zk.csv');
1828
		if (file_exists($tmp_dir.'owner_zk.csv')) {
1829
			if ($globalDebug) echo "Add to DB...";
1830
			$error = update_db::retrieve_owner($tmp_dir.'owner_zk.csv','ZK');
1831
		} else $error = "File ".$tmp_dir.'owner_zk.csv'." doesn't exist. Download failed.";
1832
		if ($error != '') {
1833
			return $error;
1834
		} elseif ($globalDebug) echo "Done\n";
1835
		if ($globalDebug) echo "Owner Papua New Guinea: Download...";
1836
		update_db::download('http://antonakis.co.uk/registers/PapuaNewGuinea.txt',$tmp_dir.'owner_p2.csv');
1837
		if (file_exists($tmp_dir.'owner_p2.csv')) {
1838
			if ($globalDebug) echo "Add to DB...";
1839
			$error = update_db::retrieve_owner($tmp_dir.'owner_p2.csv','P2');
1840
		} else $error = "File ".$tmp_dir.'owner_p2.csv'." doesn't exist. Download failed.";
1841
		if ($error != '') {
1842
			return $error;
1843
		} elseif ($globalDebug) echo "Done\n";
1844
		if ($globalDebug) echo "Owner Slovakia: Download...";
1845
		update_db::download('http://antonakis.co.uk/registers/Slovakia.txt',$tmp_dir.'owner_om.csv');
1846
		if (file_exists($tmp_dir.'owner_om.csv')) {
1847
			if ($globalDebug) echo "Add to DB...";
1848
			$error = update_db::retrieve_owner($tmp_dir.'owner_om.csv','OM');
1849
		} else $error = "File ".$tmp_dir.'owner_om.csv'." doesn't exist. Download failed.";
1850
		if ($error != '') {
1851
			return $error;
1852
		} elseif ($globalDebug) echo "Done\n";
1853
		if ($globalDebug) echo "Owner Ecuador: Download...";
1854
		update_db::download('http://antonakis.co.uk/registers/Ecuador.txt',$tmp_dir.'owner_hc.csv');
1855
		if (file_exists($tmp_dir.'owner_hc.csv')) {
1856
			if ($globalDebug) echo "Add to DB...";
1857
			$error = update_db::retrieve_owner($tmp_dir.'owner_hc.csv','HC');
1858
		} else $error = "File ".$tmp_dir.'owner_hc.csv'." doesn't exist. Download failed.";
1859
		if ($error != '') {
1860
			return $error;
1861
		} elseif ($globalDebug) echo "Done\n";
1862
		if ($globalDebug) echo "Owner Iceland: Download...";
1863
		update_db::download('http://antonakis.co.uk/registers/Iceland.txt',$tmp_dir.'owner_tf.csv');
1864
		if (file_exists($tmp_dir.'owner_tf.csv')) {
1865
			if ($globalDebug) echo "Add to DB...";
1866
			$error = update_db::retrieve_owner($tmp_dir.'owner_tf.csv','TF');
1867
		} else $error = "File ".$tmp_dir.'owner_tf.csv'." doesn't exist. Download failed.";
1868
		if ($error != '') {
1869
			return $error;
1870
		} elseif ($globalDebug) echo "Done\n";
1871
		if ($globalDebug) echo "Owner Isle of Man: Download...";
1872
		update_db::download('http://antonakis.co.uk/registers/IsleOfMan.txt',$tmp_dir.'owner_m.csv');
1873
		if (file_exists($tmp_dir.'owner_m.csv')) {
1874
			if ($globalDebug) echo "Add to DB...";
1875
			$error = update_db::retrieve_owner($tmp_dir.'owner_m.csv','M');
1876
		} else $error = "File ".$tmp_dir.'owner_m.csv'." doesn't exist. Download failed.";
1877
		if ($error != '') {
1878
			return $error;
1879
		} elseif ($globalDebug) echo "Done\n";
1880
		if ($globalMasterSource) {
1881
			if ($globalDebug) echo "ModeS Netherlands: Download...";
1882
			update_db::download('http://antonakis.co.uk/registers/Netherlands.txt',$tmp_dir.'owner_ph.csv');
1883
			if (file_exists($tmp_dir.'owner_ph.csv')) {
1884
				if ($globalDebug) echo "Add to DB...";
1885
				$error = update_db::retrieve_owner($tmp_dir.'owner_ph.csv','PH');
1886
			} else $error = "File ".$tmp_dir.'owner_ph.csv'." doesn't exist. Download failed.";
1887
			if ($error != '') {
1888
				return $error;
1889
			} elseif ($globalDebug) echo "Done\n";
1890
			if ($globalDebug) echo "ModeS Denmark: Download...";
1891
			update_db::download('http://antonakis.co.uk/registers/Denmark.txt',$tmp_dir.'owner_oy.csv');
1892
			if (file_exists($tmp_dir.'owner_oy.csv')) {
1893
				if ($globalDebug) echo "Add to DB...";
1894
				$error = update_db::retrieve_owner($tmp_dir.'owner_oy.csv','OY');
1895
			} else $error = "File ".$tmp_dir.'owner_oy.csv'." doesn't exist. Download failed.";
1896
			if ($error != '') {
1897
				return $error;
1898
			} elseif ($globalDebug) echo "Done\n";
1899
		} elseif ($globalDebug) echo "Done\n";
1900
		return '';
1901
	}
1902
1903
	public static function update_translation() {
1904
		global $tmp_dir, $globalDebug;
1905
		$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...
1906
		if ($globalDebug) echo "Translation : Download...";
1907
		update_db::download('http://www.acarsd.org/download/translation.php',$tmp_dir.'translation.zip');
1908
		if (file_exists($tmp_dir.'translation.zip')) {
1909
			if ($globalDebug) echo "Unzip...";
1910
			update_db::unzip($tmp_dir.'translation.zip');
1911
			if ($globalDebug) echo "Add to DB...";
1912
			$error = update_db::translation();
1913
		} else $error = "File ".$tmp_dir.'translation.zip'." doesn't exist. Download failed.";
1914
		if ($error != '') {
1915
			return $error;
1916
		} elseif ($globalDebug) echo "Done\n";
1917
		return '';
1918
	}
1919
1920
	public static function update_translation_fam() {
1921
		global $tmp_dir, $globalDebug;
1922
		if ($globalDebug) echo "Translation from FlightAirMap website : Download...";
1923
		update_db::download('http://data.flightairmap.fr/data/translation.tsv.gz',$tmp_dir.'translation.tsv.gz');
1924
		if (file_exists($tmp_dir.'translation.tsv.gz')) {
1925
			if ($globalDebug) echo "Gunzip...";
1926
			update_db::gunzip($tmp_dir.'translation.tsv.gz');
1927
			if ($globalDebug) echo "Add to DB...";
1928
			$error = update_db::translation_fam();
1929
		} else $error = "File ".$tmp_dir.'translation.tsv.gz'." doesn't exist. Download failed.";
1930
		if ($error != '') {
1931
			return $error;
1932
		} elseif ($globalDebug) echo "Done\n";
1933
		return '';
1934
	}
1935
	public static function update_ModeS_fam() {
1936
		global $tmp_dir, $globalDebug;
1937
		if ($globalDebug) echo "ModeS from FlightAirMap website : Download...";
1938
		update_db::download('http://data.flightairmap.fr/data/modes.tsv.gz',$tmp_dir.'modes.tsv.gz');
1939
		if (file_exists($tmp_dir.'modes.tsv.gz')) {
1940
			if ($globalDebug) echo "Gunzip...";
1941
			update_db::gunzip($tmp_dir.'modes.tsv.gz');
1942
			if ($globalDebug) echo "Add to DB...";
1943
			$error = update_db::modes_fam();
1944
		} else $error = "File ".$tmp_dir.'modes.tsv.gz'." doesn't exist. Download failed.";
1945
		if ($error != '') {
1946
			return $error;
1947
		} elseif ($globalDebug) echo "Done\n";
1948
		return '';
1949
	}
1950
	public static function update_owner_fam() {
1951
		global $tmp_dir, $globalDebug, $globalOwner;
1952
		if ($globalDebug) echo "owner from FlightAirMap website : Download...";
1953
		if ($globalOwner === TRUE) {
1954
			update_db::download('http://data.flightairmap.fr/data/owners_all.tsv.gz',$tmp_dir.'owners.tsv.gz');
1955
		} else {
1956
			update_db::download('http://data.flightairmap.fr/data/owners.tsv.gz',$tmp_dir.'owners.tsv.gz');
1957
		}
1958
		if (file_exists($tmp_dir.'owners.tsv.gz')) {
1959
			if ($globalDebug) echo "Gunzip...";
1960
			update_db::gunzip($tmp_dir.'owners.tsv.gz');
1961
			if ($globalDebug) echo "Add to DB...";
1962
			$error = update_db::owner_fam();
1963
		} else $error = "File ".$tmp_dir.'owners.tsv.gz'." doesn't exist. Download failed.";
1964
		if ($error != '') {
1965
			return $error;
1966
		} elseif ($globalDebug) echo "Done\n";
1967
		return '';
1968
	}
1969
	public static function update_routes_fam() {
1970
		global $tmp_dir, $globalDebug;
1971
		if ($globalDebug) echo "Routes from FlightAirMap website : Download...";
1972
		update_db::download('http://data.flightairmap.fr/data/routes.tsv.gz',$tmp_dir.'routes.tsv.gz');
1973
		if (file_exists($tmp_dir.'routes.tsv.gz')) {
1974
			if ($globalDebug) echo "Gunzip...";
1975
			update_db::gunzip($tmp_dir.'routes.tsv.gz');
1976
			if ($globalDebug) echo "Add to DB...";
1977
			$error = update_db::routes_fam();
1978
		} else $error = "File ".$tmp_dir.'routes.tsv.gz'." doesn't exist. Download failed.";
1979
		if ($error != '') {
1980
			return $error;
1981
		} elseif ($globalDebug) echo "Done\n";
1982
		return '';
1983
	}
1984
	public static function update_banned_fam() {
1985
		global $tmp_dir, $globalDebug;
1986
		if ($globalDebug) echo "Banned airlines in Europe from FlightAirMap website : Download...";
1987
		update_db::download('http://data.flightairmap.fr/data/ban_eu.csv',$tmp_dir.'ban_eu.csv');
1988
		if (file_exists($tmp_dir.'ban_eu.csv')) {
1989
			//if ($globalDebug) echo "Gunzip...";
1990
			//update_db::gunzip($tmp_dir.'ban_ue.csv');
1991
			if ($globalDebug) echo "Add to DB...";
1992
			$error = update_db::banned_fam();
1993
		} else $error = "File ".$tmp_dir.'ban_eu.csv'." doesn't exist. Download failed.";
1994
		if ($error != '') {
1995
			return $error;
1996
		} elseif ($globalDebug) echo "Done\n";
1997
		return '';
1998
	}
1999
2000
	public static function update_airspace_fam() {
2001
		global $tmp_dir, $globalDebug, $globalDBdriver;
2002
		include_once('class.create_db.php');
2003
		$error = '';
2004
		if ($globalDebug) echo "Airspace from FlightAirMap website : Download...";
2005
		if ($globalDBdriver == 'mysql') {
2006
			update_db::download('http://data.flightairmap.fr/data/airspace_mysql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2007
		} else {
2008
			update_db::download('http://data.flightairmap.fr/data/airspace_pgsql.sql.gz.md5',$tmp_dir.'airspace.sql.gz.md5');
2009
		}
2010
		if (file_exists($tmp_dir.'airspace.sql.gz.md5')) {
2011
			$airspace_md5_file = explode(' ',file_get_contents($tmp_dir.'airspace.sql.gz.md5'));
2012
			$airspace_md5 = $airspace_md5_file[0];
2013
			if (!update_db::check_airspace_version($airspace_md5)) {
2014
				if ($globalDBdriver == 'mysql') {
2015
					update_db::download('http://data.flightairmap.fr/data/airspace_mysql.sql.gz',$tmp_dir.'airspace.sql.gz');
2016
				} else {
2017
					update_db::download('http://data.flightairmap.fr/data/airspace_pgsql.sql.gz',$tmp_dir.'airspace.sql.gz');
2018
				}
2019
				if (file_exists($tmp_dir.'airspace.sql.gz')) {
2020
					if ($globalDebug) echo "Gunzip...";
2021
					update_db::gunzip($tmp_dir.'airspace.sql.gz');
2022
					if ($globalDebug) echo "Add to DB...";
2023
					$Connection = new Connection();
2024
					if ($Connection->tableExists('airspace')) {
2025
						$query = 'DROP TABLE airspace';
2026
						try {
2027
							$sth = $Connection->db->prepare($query);
2028
    	    	    					$sth->execute();
2029
			            		} catch(PDOException $e) {
2030
							return "error : ".$e->getMessage();
2031
		            			}
2032
		    			}
2033
					$error = create_db::import_file($tmp_dir.'airspace.sql');
2034
					update_db::insert_airspace_version($airspace_md5);
2035
				} else $error = "File ".$tmp_dir.'airpsace.sql.gz'." doesn't exist. Download failed.";
2036
			}
2037
		} else $error = "File ".$tmp_dir.'airpsace.sql.gz.md5'." doesn't exist. Download failed.";
2038
		if ($error != '') {
2039
			return $error;
2040
		} elseif ($globalDebug) echo "Done\n";
2041
		return '';
2042
	}
2043
2044
	public static function update_tle() {
2045
		global $tmp_dir, $globalDebug;
2046
		if ($globalDebug) echo "Download TLE : Download...";
2047
		$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',
2048
		'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',
2049
		'engineering.txt','education.txt','military.txt','radar.txt','cubesat.txt','other.txt','tle-new.txt');
2050
		foreach ($alltle as $filename) {
2051
			if ($globalDebug) echo "downloading ".$filename.'...';
2052
			update_db::download('http://celestrak.com/NORAD/elements/'.$filename,$tmp_dir.$filename);
2053
			if (file_exists($tmp_dir.$filename)) {
2054
				if ($globalDebug) echo "Add to DB ".$filename."...";
2055
				$error = update_db::tle($tmp_dir.$filename,str_replace('.txt','',$filename));
2056
			} else $error = "File ".$tmp_dir.$filename." doesn't exist. Download failed.";
2057
			if ($error != '') {
2058
				echo $error."\n";
2059
			} elseif ($globalDebug) echo "Done\n";
2060
		}
2061
		return '';
2062
	}
2063
2064
	public static function update_models() {
2065
		global $tmp_dir, $globalDebug;
2066
		$error = '';
2067
		if ($globalDebug) echo "Models from FlightAirMap website : Download...";
2068
		update_db::download('http://data.flightairmap.fr/data/models/models.md5sum',$tmp_dir.'models.md5sum');
2069
		if (file_exists($tmp_dir.'models.md5sum')) {
2070
			if ($globalDebug) echo "Check files...\n";
2071
			$newmodelsdb = array();
2072
			if (($handle = fopen($tmp_dir.'models.md5sum','r')) !== FALSE) {
2073
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2074
					$model = trim($row[2]);
2075
					$newmodelsdb[$model] = trim($row[0]);
2076
				}
2077
			}
2078
			$modelsdb = array();
2079
			if (file_exists(dirname(__FILE__).'/../models/models.md5sum')) {
2080
				if (($handle = fopen(dirname(__FILE__).'/../models/models.md5sum','r')) !== FALSE) {
2081
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2082
						$model = trim($row[2]);
2083
						$modelsdb[$model] = trim($row[0]);
2084
					}
2085
				}
2086
			}
2087
			$diff = array_diff($newmodelsdb,$modelsdb);
2088
			foreach ($diff as $key => $value) {
2089
				if ($globalDebug) echo 'Downloading model '.$key.' ...'."\n";
2090
				update_db::download('http://data.flightairmap.fr/data/models/'.$key,dirname(__FILE__).'/../models/'.$key);
2091
				
2092
			}
2093
			update_db::download('http://data.flightairmap.fr/data/models/models.md5sum',dirname(__FILE__).'/../models/models.md5sum');
2094
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2095
		if ($error != '') {
2096
			return $error;
2097
		} elseif ($globalDebug) echo "Done\n";
2098
		return '';
2099
	}
2100
2101
	public static function update_space_models() {
2102
		global $tmp_dir, $globalDebug;
2103
		$error = '';
2104
		if ($globalDebug) echo "Space models from FlightAirMap website : Download...";
2105
		update_db::download('http://data.flightairmap.fr/data/models/space/space_models.md5sum',$tmp_dir.'space_models.md5sum');
2106
		if (file_exists($tmp_dir.'space_models.md5sum')) {
2107
			if ($globalDebug) echo "Check files...\n";
2108
			$newmodelsdb = array();
2109
			if (($handle = fopen($tmp_dir.'space_models.md5sum','r')) !== FALSE) {
2110
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2111
					$model = trim($row[2]);
2112
					$newmodelsdb[$model] = trim($row[0]);
2113
				}
2114
			}
2115
			$modelsdb = array();
2116
			if (file_exists(dirname(__FILE__).'/../models/space/space_models.md5sum')) {
2117
				if (($handle = fopen(dirname(__FILE__).'/../models/space/space_models.md5sum','r')) !== FALSE) {
2118
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2119
						$model = trim($row[2]);
2120
						$modelsdb[$model] = trim($row[0]);
2121
					}
2122
				}
2123
			}
2124
			$diff = array_diff($newmodelsdb,$modelsdb);
2125
			foreach ($diff as $key => $value) {
2126
				if ($globalDebug) echo 'Downloading space model '.$key.' ...'."\n";
2127
				update_db::download('http://data.flightairmap.fr/data/models/space/'.$key,dirname(__FILE__).'/../models/space/'.$key);
2128
				
2129
			}
2130
			update_db::download('http://data.flightairmap.fr/data/models/space/space_models.md5sum',dirname(__FILE__).'/../models/space/space_models.md5sum');
2131
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2132
		if ($error != '') {
2133
			return $error;
2134
		} elseif ($globalDebug) echo "Done\n";
2135
		return '';
2136
	}
2137
2138
	public static function update_vehicules_models() {
2139
		global $tmp_dir, $globalDebug;
2140
		$error = '';
2141
		if ($globalDebug) echo "Vehicules models from FlightAirMap website : Download...";
2142
		update_db::download('http://data.flightairmap.fr/data/models/vehicules/vehicules_models.md5sum',$tmp_dir.'vehicules_models.md5sum');
2143
		if (file_exists($tmp_dir.'vehicules_models.md5sum')) {
2144
			if ($globalDebug) echo "Check files...\n";
2145
			$newmodelsdb = array();
2146
			if (($handle = fopen($tmp_dir.'vehicules_models.md5sum','r')) !== FALSE) {
2147
				while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2148
					$model = trim($row[2]);
2149
					$newmodelsdb[$model] = trim($row[0]);
2150
				}
2151
			}
2152
			$modelsdb = array();
2153
			if (file_exists(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum')) {
2154
				if (($handle = fopen(dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum','r')) !== FALSE) {
2155
					while (($row = fgetcsv($handle,1000," ")) !== FALSE) {
2156
						$model = trim($row[2]);
2157
						$modelsdb[$model] = trim($row[0]);
2158
					}
2159
				}
2160
			}
2161
			$diff = array_diff($newmodelsdb,$modelsdb);
2162
			foreach ($diff as $key => $value) {
2163
				if ($globalDebug) echo 'Downloading vehicules model '.$key.' ...'."\n";
2164
				update_db::download('http://data.flightairmap.fr/data/models/vehicules/'.$key,dirname(__FILE__).'/../models/vehicules/'.$key);
2165
				
2166
			}
2167
			update_db::download('http://data.flightairmap.fr/data/models/vehicules/vehicules_models.md5sum',dirname(__FILE__).'/../models/vehicules/vehicules_models.md5sum');
2168
		} else $error = "File ".$tmp_dir.'models.md5sum'." doesn't exist. Download failed.";
2169
		if ($error != '') {
2170
			return $error;
2171
		} elseif ($globalDebug) echo "Done\n";
2172
		return '';
2173
	}
2174
2175
	public static function update_aircraft() {
2176
		global $tmp_dir, $globalDebug;
2177
		date_default_timezone_set('UTC');
2178
		//$error = '';
2179
		/*
2180
		if ($globalDebug) echo "Aircrafts : Download...";
2181
		$data_req_array = array('Mnfctrer' => '','Model' => '','Dscrptn'=> '','EngCount' =>'' ,'EngType'=> '','TDesig' => '*','WTC' => '','Button' => 'Search');
2182
		$data_req = 'Mnfctrer=Airbus&Model=&Dscrptn=&EngCount=&EngType=&TDesig=&WTC=&Button=Search';
2183
		//$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);
2184
		$data = Common::getData('http://cfapp.icao.int/Doc8643/8643_List1.cfm','post',$data_req_array,'','','http://cfapp.icao.int/Doc8643/search.cfm',30);
2185
//		echo strlen($data_req);
2186
		echo $data;
2187
		*/
2188
		if (file_exists($tmp_dir.'aircrafts.html')) {
2189
		    //var_dump(file_get_html($tmp_dir.'aircrafts.html'));
2190
		    $fh = fopen($tmp_dir.'aircrafts.html',"r");
2191
		    $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...
2192
		    //echo $result;
2193
		    //var_dump(str_get_html($result));
2194
		    //print_r(self::table2array($result));
2195
		}
2196
2197
	}
2198
	
2199
	public static function update_notam() {
2200
		global $tmp_dir, $globalDebug, $globalNOTAMSource;
2201
		require(dirname(__FILE__).'/../require/class.NOTAM.php');
2202
		$Common = new Common();
2203
		date_default_timezone_set('UTC');
2204
		$query = 'TRUNCATE TABLE notam';
2205
		try {
2206
			$Connection = new Connection();
2207
			$sth = $Connection->db->prepare($query);
2208
                        $sth->execute();
2209
                } catch(PDOException $e) {
2210
                        return "error : ".$e->getMessage();
2211
                }
2212
2213
		$error = '';
2214
		if ($globalDebug) echo "Notam : Download...";
2215
		update_db::download($globalNOTAMSource,$tmp_dir.'notam.rss');
2216
		if (file_exists($tmp_dir.'notam.rss')) {
2217
			$notams = json_decode(json_encode(simplexml_load_file($tmp_dir.'notam.rss')),true);
2218
			foreach ($notams['channel']['item'] as $notam) {
2219
				$title = explode(':',$notam['title']);
2220
				$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...
2221
				unset($title[0]);
2222
				$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...
2223
				$description = strip_tags($notam['description'],'<pre>');
2224
				preg_match(':^(.*?)<pre>:',$description,$match);
2225
				$q = explode('/',$match[1]);
2226
				$data['fir'] = $q[0];
2227
				$data['code'] = $q[1];
2228
				$ifrvfr = $q[2];
2229
				if ($ifrvfr == 'IV') $data['rules'] = 'IFR/VFR';
2230
				if ($ifrvfr == 'I') $data['rules'] = 'IFR';
2231
				if ($ifrvfr == 'V') $data['rules'] = 'VFR';
2232
				if ($q[4] == 'A') $data['scope'] = 'Airport warning';
2233
				if ($q[4] == 'E') $data['scope'] = 'Enroute warning';
2234
				if ($q[4] == 'W') $data['scope'] = 'Navigation warning';
2235
				if ($q[4] == 'AE') $data['scope'] = 'Airport/Enroute warning';
2236
				if ($q[4] == 'AW') $data['scope'] = 'Airport/Navigation warning';
2237
				//$data['scope'] = $q[4];
2238
				$data['lower_limit'] = $q[5];
2239
				$data['upper_limit'] = $q[6];
2240
				$latlonrad = $q[7];
2241
				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...
2242
				$latitude = $Common->convertDec($las,'latitude');
2243
				$longitude = $Common->convertDec($lns,'longitude');
2244
				if ($lac == 'S') $latitude = '-'.$latitude;
2245
				if ($lnc == 'W') $longitude = '-'.$longitude;
2246
				$data['center_latitude'] = $latitude;
2247
				$data['center_longitude'] = $longitude;
2248
				$data['radius'] = intval($radius);
2249
				
2250
				preg_match(':<pre>(.*?)</pre>:',$description,$match);
2251
				$data['text'] = $match[1];
2252
				preg_match(':</pre>(.*?)$:',$description,$match);
2253
				$fromto = $match[1];
2254
				preg_match('#FROM:(.*?)TO:#',$fromto,$match);
2255
				$fromall = trim($match[1]);
2256
				preg_match('#^(.*?) \((.*?)\)$#',$fromall,$match);
2257
				$from = trim($match[1]);
2258
				$data['date_begin'] = date("Y-m-d H:i:s",strtotime($from));
2259
				preg_match('#TO:(.*?)$#',$fromto,$match);
2260
				$toall = trim($match[1]);
2261
				if (!preg_match(':Permanent:',$toall)) {
2262
					preg_match('#^(.*?) \((.*?)\)#',$toall,$match);
2263
					$to = trim($match[1]);
2264
					$data['date_end'] = date("Y-m-d H:i:s",strtotime($to));
2265
					$data['permanent'] = 0;
2266
				} else {
2267
				    $data['date_end'] = NULL;
2268
				    $data['permanent'] = 1;
2269
				}
2270
				$data['full_notam'] = $notam['title'].'<br>'.$notam['description'];
2271
				$NOTAM = new NOTAM();
2272
				$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']);
2273
				unset($data);
2274
			} 
2275
		} else $error = "File ".$tmp_dir.'notam.rss'." doesn't exist. Download failed.";
2276
		if ($error != '') {
2277
			return $error;
2278
		} elseif ($globalDebug) echo "Done\n";
2279
		return '';
2280
	}
2281
	
2282
	public static function create_airspace() {
2283
		global $globalDBdriver, $globalDebug, $tmp_dir, $globalDBhost, $globalDBuser, $globalDBname, $globalDBpass, $globalDBport;
2284
		$Connection = new Connection();
2285
		if ($Connection->tableExists('airspace')) {
2286
			if ($globalDBdriver == 'mysql') {
2287
				$query = 'DROP TABLE geometry_columns; DROP TABLE spatial_ref_sys;DROP TABLE airspace;';
2288
			} else {
2289
				$query = 'DROP TABLE airspace';
2290
			}
2291
			try {
2292
				$Connection = new Connection();
2293
				$sth = $Connection->db->prepare($query);
2294
				$sth->execute();
2295
			} catch(PDOException $e) {
2296
				return "error : ".$e->getMessage();
2297
			}
2298
		}
2299
		$Common = new Common();
2300
		$airspace_lst = $Common->getData('https://raw.githubusercontent.com/XCSoar/xcsoar-data-repository/master/data/airspace.json');
2301
		$airspace_json = json_decode($airspace_lst,true);
2302
		foreach ($airspace_json['records'] as $airspace) {
2303
			if ($globalDebug) echo $airspace['name']."...\n";
2304
			update_db::download($airspace['uri'],$tmp_dir.$airspace['name']);
2305
			if (file_exists($tmp_dir.$airspace['name'])) {
2306
				file_put_contents($tmp_dir.$airspace['name'], utf8_encode(file_get_contents($tmp_dir.$airspace['name'])));
2307
				//system('recode l9..utf8 '.$tmp_dir.$airspace['name']);
2308
				if ($globalDBdriver == 'mysql') {
2309
					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'].'"');
2310
				} else {
2311
					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'].'"');
2312
				}
2313
			}
2314
		}
2315
	}
2316
	
2317
	public static function fix_icaotype() {
2318
		require_once(dirname(__FILE__).'/../require/class.Spotter.php');
2319
		$Spotter = new Spotter();
2320
		foreach ($Spotter->aircraft_correct_icaotype as $old => $new) {
2321
			$query = 'UPDATE aircraft_modes SET ICAOTypeCode = :new WHERE ICAOTypeCode = :old';
2322
			try {
2323
				$Connection = new Connection();
2324
				$sth = $Connection->db->prepare($query);
2325
				$sth->execute(array(':new' => $new, ':old' => $old));
2326
			} catch(PDOException $e) {
2327
				return "error : ".$e->getMessage();
2328
			}
2329
		}
2330
	}
2331
2332
	public static function check_last_update() {
2333
		global $globalDBdriver;
2334
		if ($globalDBdriver == 'mysql') {
2335
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
2336
		} else {
2337
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
2338
		}
2339
		try {
2340
			$Connection = new Connection();
2341
			$sth = $Connection->db->prepare($query);
2342
                        $sth->execute();
2343
                } catch(PDOException $e) {
2344
                        return "error : ".$e->getMessage();
2345
                }
2346
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2347
                if ($row['nb'] > 0) return false;
2348
                else return true;
2349
	}
2350
2351
	public static function insert_last_update() {
2352
		$query = "DELETE FROM config WHERE name = 'last_update_db';
2353
			INSERT INTO config (name,value) VALUES ('last_update_db',NOW());";
2354
		try {
2355
			$Connection = new Connection();
2356
			$sth = $Connection->db->prepare($query);
2357
                        $sth->execute();
2358
                } catch(PDOException $e) {
2359
                        return "error : ".$e->getMessage();
2360
                }
2361
	}
2362
2363
	public static function check_airspace_version($version) {
2364
		$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'airspace_version' AND value = :version";
2365
		try {
2366
			$Connection = new Connection();
2367
			$sth = $Connection->db->prepare($query);
2368
                        $sth->execute(array(':version' => $version));
2369
                } catch(PDOException $e) {
2370
                        return "error : ".$e->getMessage();
2371
                }
2372
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2373
                if ($row['nb'] > 0) return true;
2374
                else return false;
2375
	}
2376
2377
2378
	public static function insert_airspace_version($version) {
2379
		$query = "DELETE FROM config WHERE name = 'airspace_version';
2380
			INSERT INTO config (name,value) VALUES ('airspace_version',:version);";
2381
		try {
2382
			$Connection = new Connection();
2383
			$sth = $Connection->db->prepare($query);
2384
                        $sth->execute(array(':version' => $version));
2385
                } catch(PDOException $e) {
2386
                        return "error : ".$e->getMessage();
2387
                }
2388
	}
2389
2390
	public static function check_last_notam_update() {
2391
		global $globalDBdriver;
2392
		if ($globalDBdriver == 'mysql') {
2393
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value > DATE_SUB(NOW(), INTERVAL 1 DAY)";
2394
		} else {
2395
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_notam_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '1 DAYS'";
2396
		}
2397
		try {
2398
			$Connection = new Connection();
2399
			$sth = $Connection->db->prepare($query);
2400
                        $sth->execute();
2401
                } catch(PDOException $e) {
2402
                        return "error : ".$e->getMessage();
2403
                }
2404
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2405
                if ($row['nb'] > 0) return false;
2406
                else return true;
2407
	}
2408
2409
	public static function insert_last_notam_update() {
2410
		$query = "DELETE FROM config WHERE name = 'last_update_notam_db';
2411
			INSERT INTO config (name,value) VALUES ('last_update_notam_db',NOW());";
2412
		try {
2413
			$Connection = new Connection();
2414
			$sth = $Connection->db->prepare($query);
2415
                        $sth->execute();
2416
                } catch(PDOException $e) {
2417
                        return "error : ".$e->getMessage();
2418
                }
2419
	}
2420
	public static function check_last_airspace_update() {
2421
		global $globalDBdriver;
2422
		if ($globalDBdriver == 'mysql') {
2423
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
2424
		} else {
2425
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_airspace_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
2426
		}
2427
		try {
2428
			$Connection = new Connection();
2429
			$sth = $Connection->db->prepare($query);
2430
                        $sth->execute();
2431
                } catch(PDOException $e) {
2432
                        return "error : ".$e->getMessage();
2433
                }
2434
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2435
                if ($row['nb'] > 0) return false;
2436
                else return true;
2437
	}
2438
2439
	public static function insert_last_airspace_update() {
2440
		$query = "DELETE FROM config WHERE name = 'last_update_airspace_db';
2441
			INSERT INTO config (name,value) VALUES ('last_update_airspace_db',NOW());";
2442
		try {
2443
			$Connection = new Connection();
2444
			$sth = $Connection->db->prepare($query);
2445
                        $sth->execute();
2446
                } catch(PDOException $e) {
2447
                        return "error : ".$e->getMessage();
2448
                }
2449
	}
2450
2451
	public static function check_last_owner_update() {
2452
		global $globalDBdriver;
2453
		if ($globalDBdriver == 'mysql') {
2454
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
2455
		} else {
2456
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_owner_db' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
2457
		}
2458
		try {
2459
			$Connection = new Connection();
2460
			$sth = $Connection->db->prepare($query);
2461
                        $sth->execute();
2462
                } catch(PDOException $e) {
2463
                        return "error : ".$e->getMessage();
2464
                }
2465
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2466
                if ($row['nb'] > 0) return false;
2467
                else return true;
2468
	}
2469
2470
	public static function insert_last_owner_update() {
2471
		$query = "DELETE FROM config WHERE name = 'last_update_owner_db';
2472
			INSERT INTO config (name,value) VALUES ('last_update_owner_db',NOW());";
2473
		try {
2474
			$Connection = new Connection();
2475
			$sth = $Connection->db->prepare($query);
2476
                        $sth->execute();
2477
                } catch(PDOException $e) {
2478
                        return "error : ".$e->getMessage();
2479
                }
2480
	}
2481
	public static function check_last_schedules_update() {
2482
		global $globalDBdriver;
2483
		if ($globalDBdriver == 'mysql') {
2484
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value > DATE_SUB(NOW(), INTERVAL 15 DAY)";
2485
		} else {
2486
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_schedules' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '15 DAYS'";
2487
		}
2488
		try {
2489
			$Connection = new Connection();
2490
			$sth = $Connection->db->prepare($query);
2491
                        $sth->execute();
2492
                } catch(PDOException $e) {
2493
                        return "error : ".$e->getMessage();
2494
                }
2495
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2496
                if ($row['nb'] > 0) return false;
2497
                else return true;
2498
	}
2499
2500
	public static function insert_last_schedules_update() {
2501
		$query = "DELETE FROM config WHERE name = 'last_update_schedules';
2502
			INSERT INTO config (name,value) VALUES ('last_update_schedules',NOW());";
2503
		try {
2504
			$Connection = new Connection();
2505
			$sth = $Connection->db->prepare($query);
2506
                        $sth->execute();
2507
                } catch(PDOException $e) {
2508
                        return "error : ".$e->getMessage();
2509
                }
2510
	}
2511
	public static function check_last_tle_update() {
2512
		global $globalDBdriver;
2513
		if ($globalDBdriver == 'mysql') {
2514
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value > DATE_SUB(NOW(), INTERVAL 7 DAY)";
2515
		} else {
2516
			$query = "SELECT COUNT(*) as nb FROM config WHERE name = 'last_update_tle' AND value::timestamp > CURRENT_TIMESTAMP - INTERVAL '7 DAYS'";
2517
		}
2518
		try {
2519
			$Connection = new Connection();
2520
			$sth = $Connection->db->prepare($query);
2521
                        $sth->execute();
2522
                } catch(PDOException $e) {
2523
                        return "error : ".$e->getMessage();
2524
                }
2525
                $row = $sth->fetch(PDO::FETCH_ASSOC);
2526
                if ($row['nb'] > 0) return false;
2527
                else return true;
2528
	}
2529
2530
	public static function insert_last_tle_update() {
2531
		$query = "DELETE FROM config WHERE name = 'last_update_tle';
2532
			INSERT INTO config (name,value) VALUES ('last_update_tle',NOW());";
2533
		try {
2534
			$Connection = new Connection();
2535
			$sth = $Connection->db->prepare($query);
2536
                        $sth->execute();
2537
                } catch(PDOException $e) {
2538
                        return "error : ".$e->getMessage();
2539
                }
2540
	}
2541
	public static function delete_duplicatemodes() {
2542
		global $globalDBdriver;
2543
		if ($globalDBdriver == 'mysql') {
2544
			$query = "DELETE a FROM aircraft_modes a, aircraft_modes b WHERE a.ModeS = b.ModeS AND a.FirstCreated < b.FirstCreated AND a.Source != 'ACARS'";
2545
		} else {
2546
			$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'";
2547
		}
2548
		try {
2549
			$Connection = new Connection();
2550
			$sth = $Connection->db->prepare($query);
2551
                        $sth->execute();
2552
                } catch(PDOException $e) {
2553
                        return "error : ".$e->getMessage();
2554
                }
2555
	}
2556
	public static function delete_duplicateowner() {
2557
		global $globalDBdriver;
2558
		if ($globalDBdriver == 'mysql') {
2559
			$query = "DELETE a FROM aircraft_owner a, aircraft_owner b WHERE a.registration = b.registration AND a.owner_id < b.owner_id";
2560
		} else {
2561
			$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)";
2562
		}
2563
		try {
2564
			$Connection = new Connection();
2565
			$sth = $Connection->db->prepare($query);
2566
                        $sth->execute();
2567
                } catch(PDOException $e) {
2568
                        return "error : ".$e->getMessage();
2569
                }
2570
	}
2571
	
2572
	public static function update_all() {
2573
		global $globalMasterServer, $globalMasterSource;
2574
		if (!isset($globalMasterServer) || !$globalMasterServer) {
2575
			if (isset($globalMasterSource) && $globalMasterSource) {
2576
				echo update_db::update_routes();
2577
				echo update_db::update_translation();
2578
				//echo update_db::update_notam_fam();
2579
				echo update_db::update_ModeS();
2580
				//echo update_db::update_ModeS_flarm();
2581
				echo update_db::update_ModeS_ogn();
2582
				echo update_db::update_ModeS_faa();
2583
				echo update_db::fix_icaotype();
2584
				echo update_db::update_banned_fam();
2585
				//echo update_db::delete_duplicatemodes();
2586
			} else {
2587
				//echo update_db::update_routes();
2588
				echo update_db::update_routes_fam();
2589
				echo update_db::update_translation();
2590
				echo update_db::update_translation_fam();
2591
				//echo update_db::update_notam_fam();
2592
				//echo update_db::update_ModeS();
2593
				echo update_db::update_ModeS_fam();
2594
				//echo update_db::update_ModeS_flarm();
2595
				echo update_db::update_ModeS_ogn();
2596
				//echo update_db::delete_duplicatemodes();
2597
				echo update_db::update_banned_fam();
2598
			}
2599
		}
2600
	}
2601
}
2602
2603
//echo update_db::update_airports();
2604
//echo update_db::translation();
2605
//echo update_db::update_waypoints();
2606
//echo update_db::update_airspace();
2607
//echo update_db::update_notam();
2608
//echo update_db::update_ivao();
2609
//echo update_db::update_ModeS_flarm();
2610
//echo update_db::update_ModeS_ogn();
2611
//echo update_db::update_aircraft();
2612
//$update_db = new update_db();
2613
//echo update_db::update_owner();
2614
//update_db::update_translation_fam();
2615
//echo update_db::update_routes();
2616
//update_db::update_models();
2617
//echo $update_db::update_skyteam();
2618
//echo $update_db::update_tle();
2619
//echo update_db::update_notam_fam();
2620
//echo update_db::create_airspace();
2621
//echo update_db::update_ModeS();
2622
//echo update_db::update_ModeS_fam();
2623
//echo update_db::update_routes_fam();
2624
//echo update_db::update_ModeS_faa();
2625
//echo update_db::update_banned_fam();
2626
//echo update_db::modes_faa();
2627
//echo update_db::update_owner_fam();
2628
//echo update_db::delete_duplicateowner();
2629
//echo update_db::fix_icaotype();
2630
?>
2631