Completed
Push — master ( 64b871...55f75d )
by Yannick
11:40
created

update_schema::update_from_24()   F

Complexity

Conditions 39
Paths > 20000

Size

Total Lines 205
Code Lines 150

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 39
eloc 150
nc 139638
nop 0
dl 0
loc 205
rs 2
c 0
b 0
f 0

How to fix   Long Method    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(dirname(__FILE__).'/../require/settings.php');
3
require_once(dirname(__FILE__).'/../require/class.Connection.php');
4
require_once(dirname(__FILE__).'/../require/class.Scheduler.php');
5
require_once(dirname(__FILE__).'/class.create_db.php');
6
require_once(dirname(__FILE__).'/class.update_db.php');
7
8
class update_schema {
9
10
	public static function update_schedule() {
11
	    $Connection = new Connection();
12
	    $Schedule = new Schedule();
13
	    $query = "SELECT * FROM schedule";
14
            try {
15
            	$sth = $Connection->db->prepare($query);
16
		$sth->execute();
17
    	    } catch(PDOException $e) {
18
		return "error : ".$e->getMessage()."\n";
19
    	    }
20
    	    while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
21
    		$Schedule->addSchedule($row['ident'],$row['departure_airport_icao'],$row['departure_airport_time'],$row['arrival_airport_icao'],$row['arrival_airport_time']);
22
    	    }
23
	
24
	}
25
/*
26
	private static function tableExists($tableName) {
27
	    $Connection = new Connection();
28
	    $query = "SHOW TABLES LIKE :tableName";
29
            try {
30
            	$sth = $Connection->db->prepare($query);
31
		$sth->execute(array(':tableName' => $tableName));
32
    	    } catch(PDOException $e) {
33
		return "error : ".$e->getMessage()."\n";
34
    	    }
35
    	    $row = $sth->fetch(PDO::FETCH_NUM);
36
    	    if ($row[0]) {
37
        	//echo 'table was found';
38
        	return true;
39
    	    } else {
40
        	//echo 'table was not found';
41
        	return false;
42
    	    }
43
    	}
44
*/	
45
	private static function update_from_1() {
46
    		$Connection = new Connection();
47
    		// Add new column to routes table
48
    		//$query = "ALTER TABLE `routes` ADD `FromAirport_Time` VARCHAR(10),`ToAirport_Time` VARCHAR(10),`Source` VARCHAR(255),`date_added` DATETIME DEFAULT CURRENT TIMESTAMP,`date_modified` DATETIME,`date_lastseen` DATETIME";
49
		$query = "ALTER TABLE `routes` ADD `FromAirport_Time` VARCHAR(10) NULL , ADD `ToAirport_Time` VARCHAR(10) NULL , ADD `Source` VARCHAR(255) NULL, ADD `date_added` timestamp DEFAULT CURRENT_TIMESTAMP, ADD `date_modified` timestamp NULL, ADD `date_lastseen` timestamp NULL";
50
        	try {
51
            	    $sth = $Connection->db->prepare($query);
52
		    $sth->execute();
53
    		} catch(PDOException $e) {
54
		    return "error (add new columns to routes table) : ".$e->getMessage()."\n";
55
    		}
56
    		// Copy schedules data to routes table
57
    		self::update_schedule();
58
    		// Delete schedule table
59
		$query = "DROP TABLE `schedule`";
60
        	try {
61
            	    $sth = $Connection->db->prepare($query);
62
		    $sth->execute();
63
    		} catch(PDOException $e) {
64
		    return "error (delete schedule table) : ".$e->getMessage()."\n";
65
    		}
66
    		// Add source column
67
    		$query = "ALTER TABLE `aircraft_modes` ADD `Source` VARCHAR(255) NULL";
68
    		try {
69
            	    $sth = $Connection->db->prepare($query);
70
		    $sth->execute();
71
    		} catch(PDOException $e) {
72
		    return "error (add source column to aircraft_modes) : ".$e->getMessage()."\n";
73
    		}
74
		// Delete unused column
75
		$query = "ALTER TABLE `aircraft_modes`  DROP `SerialNo`,  DROP `OperatorFlagCode`,  DROP `Manufacturer`,  DROP `Type`,  DROP `FirstRegDate`,  DROP `CurrentRegDate`,  DROP `Country`,  DROP `PreviousID`,  DROP `DeRegDate`,  DROP `Status`,  DROP `PopularName`,  DROP `GenericName`,  DROP `AircraftClass`,  DROP `Engines`,  DROP `OwnershipStatus`,  DROP `RegisteredOwners`,  DROP `MTOW`,  DROP `TotalHours`,  DROP `YearBuilt`,  DROP `CofACategory`,  DROP `CofAExpiry`,  DROP `UserNotes`,  DROP `Interested`,  DROP `UserTag`,  DROP `InfoUrl`,  DROP `PictureUrl1`,  DROP `PictureUrl2`,  DROP `PictureUrl3`,  DROP `UserBool1`,  DROP `UserBool2`,  DROP `UserBool3`,  DROP `UserBool4`,  DROP `UserBool5`,  DROP `UserString1`,  DROP `UserString2`,  DROP `UserString3`,  DROP `UserString4`,  DROP `UserString5`,  DROP `UserInt1`,  DROP `UserInt2`,  DROP `UserInt3`,  DROP `UserInt4`,  DROP `UserInt5`";
76
    		try {
77
            	    $sth = $Connection->db->prepare($query);
78
		    $sth->execute();
79
    		} catch(PDOException $e) {
80
		    return "error (Delete unused column of aircraft_modes) : ".$e->getMessage()."\n";
81
    		}
82
		// Add ModeS column
83
		$query = "ALTER TABLE `spotter_output`  ADD `ModeS` VARCHAR(255) NULL";
84
    		try {
85
            	    $sth = $Connection->db->prepare($query);
86
		    $sth->execute();
87
    		} catch(PDOException $e) {
88
		    return "error (Add ModeS column in spotter_output) : ".$e->getMessage()."\n";
89
    		}
90
		$query = "ALTER TABLE `spotter_live`  ADD `ModeS` VARCHAR(255)";
91
    		try {
92
            	    $sth = $Connection->db->prepare($query);
93
		    $sth->execute();
94
    		} catch(PDOException $e) {
95
		    return "error (Add ModeS column in spotter_live) : ".$e->getMessage()."\n";
96
    		}
97
    		// Add auto_increment for aircraft_modes
98
    		$query = "ALTER TABLE `aircraft_modes` CHANGE `AircraftID` `AircraftID` INT(11) NOT NULL AUTO_INCREMENT";
99
    		try {
100
            	    $sth = $Connection->db->prepare($query);
101
		    $sth->execute();
102
    		} catch(PDOException $e) {
103
		    return "error (Add Auto increment in aircraft_modes) : ".$e->getMessage()."\n";
104
    		}
105
    		$error = '';
106
		$error .= create_db::import_file('../db/acars_live.sql');
107
		$error .= create_db::import_file('../db/config.sql');
108
		// Update schema_version to 2
109
		$query = "UPDATE `config` SET `value` = '2' WHERE `name` = 'schema_version'";
110
        	try {
111
            	    $sth = $Connection->db->prepare($query);
112
		    $sth->execute();
113
    		} catch(PDOException $e) {
114
		    return "error (update schema_version) : ".$e->getMessage()."\n";
115
    		}
116
		return $error;
117
        }
118
119
	private static function update_from_2() {
120
    		$Connection = new Connection();
121
    		// Add new column decode to acars_live table
122
		$query = "ALTER TABLE `acars_live` ADD `decode` TEXT";
123
        	try {
124
            	    $sth = $Connection->db->prepare($query);
125
		    $sth->execute();
126
    		} catch(PDOException $e) {
127
		    return "error (add new columns to routes table) : ".$e->getMessage()."\n";
128
    		}
129
    		$error = '';
130
    		// Create table acars_archive
131
		$error .= create_db::import_file('../db/acars_archive.sql');
132
		// Update schema_version to 3
133
		$query = "UPDATE `config` SET `value` = '3' WHERE `name` = 'schema_version'";
134
        	try {
135
            	    $sth = $Connection->db->prepare($query);
136
		    $sth->execute();
137
    		} catch(PDOException $e) {
138
		    return "error (update schema_version) : ".$e->getMessage()."\n";
139
    		}
140
		return $error;
141
	}
142
143
	private static function update_from_3() {
144
    		$Connection = new Connection();
145
    		// Add default CURRENT_TIMESTAMP to aircraft_modes column FirstCreated
146
		$query = "ALTER TABLE `aircraft_modes` CHANGE `FirstCreated` `FirstCreated` timestamp DEFAULT CURRENT_TIMESTAMP";
147
        	try {
148
            	    $sth = $Connection->db->prepare($query);
149
		    $sth->execute();
150
    		} catch(PDOException $e) {
151
		    return "error (add new columns to aircraft_modes) : ".$e->getMessage()."\n";
152
    		}
153
    		// Add image_source_website column to spotter_image
154
		$query = "ALTER TABLE `spotter_image` ADD `image_source_website` VARCHAR(999) NULL";
155
        	try {
156
            	    $sth = $Connection->db->prepare($query);
157
		    $sth->execute();
158
    		} catch(PDOException $e) {
159
		    return "error (add new columns to spotter_image) : ".$e->getMessage()."\n";
160
    		}
161
    		$error = '';
162
		// Update schema_version to 4
163
		$query = "UPDATE `config` SET `value` = '4' WHERE `name` = 'schema_version'";
164
        	try {
165
            	    $sth = $Connection->db->prepare($query);
166
		    $sth->execute();
167
    		} catch(PDOException $e) {
168
		    return "error (update schema_version) : ".$e->getMessage()."\n";
169
    		}
170
		return $error;
171
	}
172
	
173
	private static function update_from_4() {
174
    		$Connection = new Connection();
175
	
176
    		$error = '';
177
    		// Create table acars_label
178
		$error .= create_db::import_file('../db/acars_label.sql');
179
		if ($error == '') {
180
		    // Update schema_version to 5
181
		    $query = "UPDATE `config` SET `value` = '5' WHERE `name` = 'schema_version'";
182
        	    try {
183
            		$sth = $Connection->db->prepare($query);
184
			$sth->execute();
185
    		    } catch(PDOException $e) {
186
			return "error (update schema_version) : ".$e->getMessage()."\n";
187
    		    }
188
    		}
189
		return $error;
190
	}
191
192
	private static function update_from_5() {
193
    		$Connection = new Connection();
194
    		// Add columns to translation
195
		$query = "ALTER TABLE `translation` ADD `Source` VARCHAR(255) NULL, ADD `date_added` timestamp DEFAULT CURRENT_TIMESTAMP , ADD `date_modified` timestamp DEFAULT CURRENT_TIMESTAMP ;";
196
        	try {
197
            	    $sth = $Connection->db->prepare($query);
198
		    $sth->execute();
199
    		} catch(PDOException $e) {
200
		    return "error (add new columns to translation) : ".$e->getMessage()."\n";
201
    		}
202
    		// Add aircraft_shadow column to aircraft
203
    		$query = "ALTER TABLE `aircraft` ADD `aircraft_shadow` VARCHAR(255) NULL";
204
        	try {
205
            	    $sth = $Connection->db->prepare($query);
206
		    $sth->execute();
207
    		} catch(PDOException $e) {
208
		    return "error (add new column to aircraft) : ".$e->getMessage()."\n";
209
    		}
210
    		// Add aircraft_shadow column to spotter_live
211
    		$query = "ALTER TABLE `spotter_live` ADD `aircraft_shadow` VARCHAR(255) NULL";
212
        	try {
213
            	    $sth = $Connection->db->prepare($query);
214
		    $sth->execute();
215
    		} catch(PDOException $e) {
216
		    return "error (add new column to spotter_live) : ".$e->getMessage()."\n";
217
    		}
218
    		$error = '';
219
    		// Update table aircraft
220
		$error .= create_db::import_file('../db/aircraft.sql');
221
		$error .= create_db::import_file('../db/spotter_archive.sql');
222
223
		// Update schema_version to 6
224
		$query = "UPDATE `config` SET `value` = '6' WHERE `name` = 'schema_version'";
225
        	try {
226
            	    $sth = $Connection->db->prepare($query);
227
		    $sth->execute();
228
    		} catch(PDOException $e) {
229
		    return "error (update schema_version) : ".$e->getMessage()."\n";
230
    		}
231
		return $error;
232
	}
233
234
	private static function update_from_6() {
235
    		$Connection = new Connection();
236
    		if (!$Connection->indexExists('spotter_output','flightaware_id')) {
237
    		    $query = "ALTER TABLE spotter_output ADD INDEX(flightaware_id);
238
			ALTER TABLE spotter_output ADD INDEX(date);
239
			ALTER TABLE spotter_output ADD INDEX(ident);
240
			ALTER TABLE spotter_live ADD INDEX(flightaware_id);
241
			ALTER TABLE spotter_live ADD INDEX(ident);
242
			ALTER TABLE spotter_live ADD INDEX(date);
243
			ALTER TABLE spotter_live ADD INDEX(longitude);
244
			ALTER TABLE spotter_live ADD INDEX(latitude);
245
			ALTER TABLE routes ADD INDEX(CallSign);
246
			ALTER TABLE aircraft_modes ADD INDEX(ModeS);
247
			ALTER TABLE aircraft ADD INDEX(icao);
248
			ALTER TABLE airport ADD INDEX(icao);
249
			ALTER TABLE translation ADD INDEX(Operator);";
250
        	    try {
251
            		$sth = $Connection->db->prepare($query);
252
			$sth->execute();
253
    		    } catch(PDOException $e) {
254
			return "error (add some indexes) : ".$e->getMessage()."\n";
255
    		    }
256
    		}
257
    		$error = '';
258
    		// Update table countries
259
    		if ($Connection->tableExists('airspace')) {
260
    		    $error .= update_db::update_countries();
261
		    if ($error != '') return $error;
262
		}
263
		// Update schema_version to 7
264
		$query = "UPDATE `config` SET `value` = '7' WHERE `name` = 'schema_version'";
265
        	try {
266
            	    $sth = $Connection->db->prepare($query);
267
		    $sth->execute();
268
    		} catch(PDOException $e) {
269
		    return "error (update schema_version) : ".$e->getMessage()."\n";
270
    		}
271
		return $error;
272
    	}
273
274
	private static function update_from_7() {
275
		global $globalDBname, $globalDBdriver;
276
    		$Connection = new Connection();
277
    		$query="ALTER TABLE spotter_live ADD pilot_name VARCHAR(255) NULL, ADD pilot_id VARCHAR(255) NULL;
278
    			ALTER TABLE spotter_output ADD pilot_name VARCHAR(255) NULL, ADD pilot_id VARCHAR(255) NULL;";
279
        	try {
280
            	    $sth = $Connection->db->prepare($query);
281
		    $sth->execute();
282
    		} catch(PDOException $e) {
283
		    return "error (add pilot column to spotter_live and spotter_output) : ".$e->getMessage()."\n";
284
    		}
285
    		if ($globalDBdriver == 'mysql') {
286
    		    $query = "SELECT ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = '".$globalDBname."' AND TABLE_NAME = 'spotter_archive'";
287
		    try {
288
            		$sth = $Connection->db->prepare($query);
289
			$sth->execute();
290
    		    } catch(PDOException $e) {
291
			return "error (problem when select engine for spotter_engine) : ".$e->getMessage()."\n";
292
    		    }
293
    		    $row = $sth->fetch(PDO::FETCH_ASSOC);
294
    		    if ($row['engine'] == 'ARCHIVE') {
295
			$query = "CREATE TABLE copy LIKE spotter_archive; 
296
				ALTER TABLE copy ENGINE=ARCHIVE;
297
				ALTER TABLE copy ADD pilot_name VARCHAR(255) NULL, ADD pilot_id VARCHAR(255) NULL;
298
				INSERT INTO copy SELECT *, '' as pilot_name, '' as pilot_id FROM spotter_archive ORDER BY `spotter_archive_id`;
299
				DROP TABLE spotter_archive;
300
				RENAME TABLE copy TO spotter_archive;";
301
            	    } else {
302
    			$query="ALTER TABLE spotter_archive ADD pilot_name VARCHAR(255) NULL, ADD pilot_id VARCHAR(255) NULL";
303
            	    }
304
                } else {
305
    		    $query="ALTER TABLE spotter_archive ADD pilot_name VARCHAR(255) NULL, ADD pilot_id VARCHAR(255) NULL";
306
                }
307
        	try {
308
            	    $sth = $Connection->db->prepare($query);
309
		    $sth->execute();
310
    		} catch(PDOException $e) {
311
		    return "error (add pilot column to spotter_archive) : ".$e->getMessage()."\n";
312
    		}
313
314
    		$error = '';
315
    		// Update table aircraft
316
		$error .= create_db::import_file('../db/source_location.sql');
317
		if ($error != '') return $error;
318
		// Update schema_version to 6
319
		$query = "UPDATE `config` SET `value` = '8' WHERE `name` = 'schema_version'";
320
        	try {
321
            	    $sth = $Connection->db->prepare($query);
322
		    $sth->execute();
323
    		} catch(PDOException $e) {
324
		    return "error (update schema_version) : ".$e->getMessage()."\n";
325
    		}
326
		return $error;
327
	}
328
329
	private static function update_from_8() {
330
    		$Connection = new Connection();
331
    		$error = '';
332
    		// Update table aircraft
333
		$error .= create_db::import_file('../db/notam.sql');
334
		if ($error != '') return $error;
335
		$query = "DELETE FROM config WHERE name = 'last_update_db';
336
                        INSERT INTO config (name,value) VALUES ('last_update_db',NOW());
337
                        DELETE FROM config WHERE name = 'last_update_notam_db';
338
                        INSERT INTO config (name,value) VALUES ('last_update_notam_db',NOW());";
339
        	try {
340
            	    $sth = $Connection->db->prepare($query);
341
		    $sth->execute();
342
    		} catch(PDOException $e) {
343
		    return "error (insert last_update values) : ".$e->getMessage()."\n";
344
    		}
345
		$query = "UPDATE `config` SET `value` = '9' WHERE `name` = 'schema_version'";
346
        	try {
347
            	    $sth = $Connection->db->prepare($query);
348
		    $sth->execute();
349
    		} catch(PDOException $e) {
350
		    return "error (update schema_version) : ".$e->getMessage()."\n";
351
    		}
352
		return $error;
353
	}
354
355
	private static function update_from_9() {
356
    		$Connection = new Connection();
357
    		$query="ALTER TABLE spotter_live ADD verticalrate INT(11) NULL;
358
    			ALTER TABLE spotter_output ADD verticalrate INT(11) NULL;";
359
        	try {
360
            	    $sth = $Connection->db->prepare($query);
361
		    $sth->execute();
362
    		} catch(PDOException $e) {
363
		    return "error (add verticalrate column to spotter_live and spotter_output) : ".$e->getMessage()."\n";
364
    		}
365
		$error = '';
366
    		// Update table atc
367
		$error .= create_db::import_file('../db/atc.sql');
368
		if ($error != '') return $error;
369
		
370
		$query = "UPDATE `config` SET `value` = '10' WHERE `name` = 'schema_version'";
371
        	try {
372
            	    $sth = $Connection->db->prepare($query);
373
		    $sth->execute();
374
    		} catch(PDOException $e) {
375
		    return "error (update schema_version) : ".$e->getMessage()."\n";
376
    		}
377
		return $error;
378
	}
379
380
	private static function update_from_10() {
381
    		$Connection = new Connection();
382
    		$query="ALTER TABLE atc CHANGE `type` `type` ENUM('Observer','Flight Information','Delivery','Tower','Approach','ACC','Departure','Ground','Flight Service Station','Control Radar or Centre') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL";
383
        	try {
384
            	    $sth = $Connection->db->prepare($query);
385
		    $sth->execute();
386
    		} catch(PDOException $e) {
387
		    return "error (add new enum to ATC table) : ".$e->getMessage()."\n";
388
    		}
389
		$error = '';
390
    		// Add tables
391
		$error .= create_db::import_file('../db/aircraft_owner.sql');
392
		if ($error != '') return $error;
393
		$error .= create_db::import_file('../db/metar.sql');
394
		if ($error != '') return $error;
395
		$error .= create_db::import_file('../db/taf.sql');
396
		if ($error != '') return $error;
397
		$error .= create_db::import_file('../db/airport.sql');
398
		if ($error != '') return $error;
399
		
400
		$query = "UPDATE `config` SET `value` = '11' WHERE `name` = 'schema_version'";
401
        	try {
402
            	    $sth = $Connection->db->prepare($query);
403
		    $sth->execute();
404
    		} catch(PDOException $e) {
405
		    return "error (update schema_version) : ".$e->getMessage()."\n";
406
    		}
407
		return $error;
408
	}
409
410
	private static function update_from_11() {
411
		global $globalDBdriver, $globalDBname;
412
    		$Connection = new Connection();
413
    		$query="ALTER TABLE spotter_output ADD owner_name VARCHAR(255) NULL DEFAULT NULL, ADD format_source VARCHAR(255) NULL DEFAULT NULL, ADD ground BOOLEAN NOT NULL DEFAULT FALSE, ADD last_ground BOOLEAN NOT NULL DEFAULT FALSE, ADD last_seen DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, ADD last_latitude FLOAT NULL, ADD last_longitude FLOAT NULL, ADD last_altitude INT(11) NULL, ADD last_ground_speed INT(11), ADD real_arrival_airport_icao VARCHAR(999), ADD real_arrival_airport_time VARCHAR(20),ADD real_departure_airport_icao VARCHAR(999), ADD real_departure_airport_time VARCHAR(20)";
414
        	try {
415
            	    $sth = $Connection->db->prepare($query);
416
		    $sth->execute();
417
    		} catch(PDOException $e) {
418
		    return "error (add owner_name & format_source column to spotter_output) : ".$e->getMessage()."\n";
419
    		}
420
    		$query="ALTER TABLE spotter_live ADD format_source VARCHAR(255) NULL DEFAULT NULL, ADD ground BOOLEAN NOT NULL DEFAULT FALSE";
421
        	try {
422
            	    $sth = $Connection->db->prepare($query);
423
		    $sth->execute();
424
    		} catch(PDOException $e) {
425
		    return "error (format_source column to spotter_live) : ".$e->getMessage()."\n";
426
    		}
427
    		if ($globalDBdriver == 'mysql') {
428
    		    $query = "SELECT ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = '".$globalDBname."' AND TABLE_NAME = 'spotter_archive'";
429
		    try {
430
            		$sth = $Connection->db->prepare($query);
431
			$sth->execute();
432
    		    } catch(PDOException $e) {
433
			return "error (problem when select engine for spotter_engine) : ".$e->getMessage()."\n";
434
    		    }
435
    		    $row = $sth->fetch(PDO::FETCH_ASSOC);
436
    		    if ($row['engine'] == 'ARCHIVE') {
437
			$query = "CREATE TABLE copy LIKE spotter_archive; 
438
				ALTER TABLE copy ENGINE=ARCHIVE;
439
				ALTER TABLE copy ADD verticalrate INT(11) NULL, ADD format_source VARCHAR(255) NULL DEFAULT NULL, ADD ground BOOLEAN NOT NULL DEFAULT FALSE;
440
				INSERT INTO copy SELECT *, '' as verticalrate, '' as format_source, '0' as ground FROM spotter_archive ORDER BY `spotter_archive_id`;
441
				DROP TABLE spotter_archive;
442
				RENAME TABLE copy TO spotter_archive;";
443
            	    } else {
444
    			$query="ALTER TABLE spotter_archive ADD verticalrate INT(11) NULL, ADD format_source VARCHAR(255) NULL DEFAULT NULL, ADD ground BOOLEAN NOT NULL DEFAULT FALSE";
445
            	    }
446
                } else {
447
    		    $query="ALTER TABLE spotter_archive ADD verticalrate INT(11) NULL, ADD format_source VARCHAR(255) NULL DEFAULT NULL, ADD ground BOOLEAN NOT NULL DEFAULT FALSE";
448
                }
449
        	try {
450
            	    $sth = $Connection->db->prepare($query);
451
		    $sth->execute();
452
    		} catch(PDOException $e) {
453
		    return "error (add columns to spotter_archive) : ".$e->getMessage()."\n";
454
    		}
455
456
		$error = '';
457
		
458
		$query = "UPDATE `config` SET `value` = '12' WHERE `name` = 'schema_version'";
459
        	try {
460
            	    $sth = $Connection->db->prepare($query);
461
		    $sth->execute();
462
    		} catch(PDOException $e) {
463
		    return "error (update schema_version) : ".$e->getMessage()."\n";
464
    		}
465
		return $error;
466
	}
467
	private static function update_from_12() {
468
    		$Connection = new Connection();
469
		$error = '';
470
    		// Add tables
471
		$error .= create_db::import_file('../db/stats.sql');
472
		if ($error != '') return $error;
473
		$error .= create_db::import_file('../db/stats_aircraft.sql');
474
		if ($error != '') return $error;
475
		$error .= create_db::import_file('../db/stats_airline.sql');
476
		if ($error != '') return $error;
477
		$error .= create_db::import_file('../db/stats_airport.sql');
478
		if ($error != '') return $error;
479
		$error .= create_db::import_file('../db/stats_owner.sql');
480
		if ($error != '') return $error;
481
		$error .= create_db::import_file('../db/stats_pilot.sql');
482
		if ($error != '') return $error;
483
		$error .= create_db::import_file('../db/spotter_archive_output.sql');
484
		if ($error != '') return $error;
485
		
486
		$query = "UPDATE `config` SET `value` = '13' WHERE `name` = 'schema_version'";
487
        	try {
488
            	    $sth = $Connection->db->prepare($query);
489
		    $sth->execute();
490
    		} catch(PDOException $e) {
491
		    return "error (update schema_version) : ".$e->getMessage()."\n";
492
    		}
493
		return $error;
494
	}
495
496
	private static function update_from_13() {
497
    		$Connection = new Connection();
498
    		if (!$Connection->checkColumnName('spotter_archive_output','real_departure_airport_icao')) {
499
    			$query="ALTER TABLE spotter_archive_output ADD real_departure_airport_icao VARCHAR(20), ADD real_departure_airport_time VARCHAR(20)";
500
			try {
501
				$sth = $Connection->db->prepare($query);
502
				$sth->execute();
503
	    		} catch(PDOException $e) {
504
				return "error (update spotter_archive_output) : ".$e->getMessage()."\n";
505
    			}
506
		}
507
    		$error = '';
508
		$query = "UPDATE `config` SET `value` = '14' WHERE `name` = 'schema_version'";
509
        	try {
510
            	    $sth = $Connection->db->prepare($query);
511
		    $sth->execute();
512
    		} catch(PDOException $e) {
513
		    return "error (update schema_version) : ".$e->getMessage()."\n";
514
    		}
515
		return $error;
516
	}
517
518
	private static function update_from_14() {
519
    		$Connection = new Connection();
520
		$error = '';
521
    		// Add tables
522
    		if (!$Connection->tableExists('stats_flight')) {
523
			$error .= create_db::import_file('../db/stats_flight.sql');
524
			if ($error != '') return $error;
525
		}
526
		$query = "UPDATE `config` SET `value` = '15' WHERE `name` = 'schema_version'";
527
        	try {
528
            	    $sth = $Connection->db->prepare($query);
529
		    $sth->execute();
530
    		} catch(PDOException $e) {
531
		    return "error (update schema_version) : ".$e->getMessage()."\n";
532
    		}
533
		return $error;
534
	}
535
536
537
	private static function update_from_15() {
538
    		$Connection = new Connection();
539
		$error = '';
540
    		// Add tables
541
    		$query="ALTER TABLE `stats` CHANGE `stats_date` `stats_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP";
542
        	try {
543
            	    $sth = $Connection->db->prepare($query);
544
		    $sth->execute();
545
    		} catch(PDOException $e) {
546
		    return "error (update stats) : ".$e->getMessage()."\n";
547
    		}
548
		if ($error != '') return $error;
549
		$query = "UPDATE `config` SET `value` = '16' WHERE `name` = 'schema_version'";
550
        	try {
551
            	    $sth = $Connection->db->prepare($query);
552
		    $sth->execute();
553
    		} catch(PDOException $e) {
554
		    return "error (update schema_version) : ".$e->getMessage()."\n";
555
    		}
556
		return $error;
557
	}
558
559
	private static function update_from_16() {
560
    		$Connection = new Connection();
561
		$error = '';
562
    		// Add tables
563
    		if (!$Connection->tableExists('stats_registration')) {
564
			$error .= create_db::import_file('../db/stats_registration.sql');
565
		}
566
    		if (!$Connection->tableExists('stats_callsign')) {
567
			$error .= create_db::import_file('../db/stats_callsign.sql');
568
		}
569
		if ($error != '') return $error;
570
		$query = "UPDATE `config` SET `value` = '17' WHERE `name` = 'schema_version'";
571
        	try {
572
            	    $sth = $Connection->db->prepare($query);
573
		    $sth->execute();
574
    		} catch(PDOException $e) {
575
		    return "error (update schema_version) : ".$e->getMessage()."\n";
576
    		}
577
		return $error;
578
	}
579
580
	private static function update_from_17() {
581
    		$Connection = new Connection();
582
		$error = '';
583
    		// Add tables
584
    		if (!$Connection->tableExists('stats_country')) {
585
			$error .= create_db::import_file('../db/stats_country.sql');
586
		}
587
		if ($error != '') return $error;
588
		$query = "UPDATE `config` SET `value` = '18' WHERE `name` = 'schema_version'";
589
        	try {
590
            	    $sth = $Connection->db->prepare($query);
591
		    $sth->execute();
592
    		} catch(PDOException $e) {
593
		    return "error (update schema_version) : ".$e->getMessage()."\n";
594
    		}
595
		return $error;
596
	}
597
	private static function update_from_18() {
598
    		$Connection = new Connection();
599
		$error = '';
600
    		// Modify stats_airport table
601
    		if (!$Connection->checkColumnName('stats_airport','airport_name')) {
602
    			$query = "ALTER TABLE `stats_airport` ADD `stats_type` VARCHAR(50) NOT NULL DEFAULT 'yearly', ADD `airport_name` VARCHAR(255) NOT NULL, ADD `date` DATE NULL DEFAULT NULL, DROP INDEX `airport_icao`, ADD UNIQUE `airport_icao` (`airport_icao`, `type`, `date`)";
603
    	        	try {
604
	            	    $sth = $Connection->db->prepare($query);
605
			    $sth->execute();
606
    			} catch(PDOException $e) {
607
			    return "error (update stats) : ".$e->getMessage()."\n";
608
    			}
609
    		}
610
		if ($error != '') return $error;
611
		$query = "UPDATE `config` SET `value` = '19' WHERE `name` = 'schema_version'";
612
        	try {
613
            	    $sth = $Connection->db->prepare($query);
614
		    $sth->execute();
615
    		} catch(PDOException $e) {
616
		    return "error (update schema_version) : ".$e->getMessage()."\n";
617
    		}
618
		return $error;
619
	}
620
621
	private static function update_from_19() {
622
    		$Connection = new Connection();
623
		$error = '';
624
    		// Update airport table
625
		$error .= create_db::import_file('../db/airport.sql');
626
		if ($error != '') return 'Import airport.sql : '.$error;
627
		// Remove primary key on Spotter_Archive
628
		$query = "alter table spotter_archive drop spotter_archive_id";
629
        	try {
630
            	    $sth = $Connection->db->prepare($query);
631
		    $sth->execute();
632
    		} catch(PDOException $e) {
633
		    return "error (remove primary key on spotter_archive) : ".$e->getMessage()."\n";
634
    		}
635
		$query = "alter table spotter_archive add spotter_archive_id INT(11)";
636
        	try {
637
            	    $sth = $Connection->db->prepare($query);
638
		    $sth->execute();
639
    		} catch(PDOException $e) {
640
		    return "error (add id again on spotter_archive) : ".$e->getMessage()."\n";
641
    		}
642
		if (!$Connection->checkColumnName('spotter_archive','over_country')) {
643
			// Add column over_country
644
    			$query = "ALTER TABLE `spotter_archive` ADD `over_country` VARCHAR(5) NULL DEFAULT NULL";
645
			try {
646
            			$sth = $Connection->db->prepare($query);
647
				$sth->execute();
648
			} catch(PDOException $e) {
649
				return "error (add over_country) : ".$e->getMessage()."\n";
650
			}
651
		}
652
		if (!$Connection->checkColumnName('spotter_live','over_country')) {
653
			// Add column over_country
654
    			$query = "ALTER TABLE `spotter_live` ADD `over_country` VARCHAR(5) NULL DEFAULT NULL";
655
			try {
656
            			$sth = $Connection->db->prepare($query);
657
				$sth->execute();
658
			} catch(PDOException $e) {
659
				return "error (add over_country) : ".$e->getMessage()."\n";
660
			}
661
		}
662
		if (!$Connection->checkColumnName('spotter_output','source_name')) {
663
			// Add source_name to spotter_output, spotter_live, spotter_archive, spotter_archive_output
664
    			$query = "ALTER TABLE `spotter_output` ADD `source_name` VARCHAR(255) NULL AFTER `format_source`";
665
			try {
666
				$sth = $Connection->db->prepare($query);
667
				$sth->execute();
668
			} catch(PDOException $e) {
669
				return "error (add source_name column) : ".$e->getMessage()."\n";
670
    			}
671
    		}
672
		if (!$Connection->checkColumnName('spotter_live','source_name')) {
673
			// Add source_name to spotter_output, spotter_live, spotter_archive, spotter_archive_output
674
    			$query = "ALTER TABLE `spotter_live` ADD `source_name` VARCHAR(255) NULL AFTER `format_source`";
675
			try {
676
				$sth = $Connection->db->prepare($query);
677
				$sth->execute();
678
			} catch(PDOException $e) {
679
				return "error (add source_name column) : ".$e->getMessage()."\n";
680
    			}
681
    		}
682
		if (!$Connection->checkColumnName('spotter_archive_output','source_name')) {
683
			// Add source_name to spotter_output, spotter_live, spotter_archive, spotter_archive_output
684
    			$query = "ALTER TABLE `spotter_archive_output` ADD `source_name` VARCHAR(255) NULL AFTER `format_source`";
685
			try {
686
				$sth = $Connection->db->prepare($query);
687
				$sth->execute();
688
			} catch(PDOException $e) {
689
				return "error (add source_name column) : ".$e->getMessage()."\n";
690
    			}
691
    		}
692
		if (!$Connection->checkColumnName('spotter_archive','source_name')) {
693
			// Add source_name to spotter_output, spotter_live, spotter_archive, spotter_archive_output
694
    			$query = "ALTER TABLE `spotter_archive` ADD `source_name` VARCHAR(255) NULL AFTER `format_source`;";
695
			try {
696
				$sth = $Connection->db->prepare($query);
697
				$sth->execute();
698
			} catch(PDOException $e) {
699
				return "error (add source_name column) : ".$e->getMessage()."\n";
700
    			}
701
    		}
702
		if ($error != '') return $error;
703
		$query = "UPDATE `config` SET `value` = '20' WHERE `name` = 'schema_version'";
704
        	try {
705
            	    $sth = $Connection->db->prepare($query);
706
		    $sth->execute();
707
    		} catch(PDOException $e) {
708
		    return "error (update schema_version) : ".$e->getMessage()."\n";
709
    		}
710
		return $error;
711
	}
712
713
	private static function update_from_20() {
714
		global $globalIVAO, $globalVATSIM, $globalphpVMS;
715
    		$Connection = new Connection();
716
		$error = '';
717
    		// Update airline table
718
    		if (!$globalIVAO && !$globalVATSIM && !$globalphpVMS) {
719
			$error .= create_db::import_file('../db/airlines.sql');
720
			if ($error != '') return 'Import airlines.sql : '.$error;
721
		}
722
		if (!$Connection->checkColumnName('aircraft_modes','type_flight')) {
723
			// Add column over_country
724
    			$query = "ALTER TABLE `aircraft_modes` ADD `type_flight` VARCHAR(50) NULL DEFAULT NULL;";
725
        		try {
726
				$sth = $Connection->db->prepare($query);
727
				$sth->execute();
728
			} catch(PDOException $e) {
729
				return "error (add over_country) : ".$e->getMessage()."\n";
730
    			}
731
    		}
732
		if ($error != '') return $error;
733
		/*
734
    		if (!$globalIVAO && !$globalVATSIM && !$globalphpVMS) {
735
			// Force update ModeS (this will put type_flight data
736
			$error .= update_db::update_ModeS;
737
			if ($error != '') return "error (update ModeS) : ".$error;
738
		}
739
		*/
740
		$query = "UPDATE `config` SET `value` = '21' WHERE `name` = 'schema_version'";
741
        	try {
742
            	    $sth = $Connection->db->prepare($query);
743
		    $sth->execute();
744
    		} catch(PDOException $e) {
745
		    return "error (update schema_version) : ".$e->getMessage()."\n";
746
    		}
747
		return $error;
748
	}
749
750
	private static function update_from_21() {
751
		$Connection = new Connection();
752
		$error = '';
753
		if (!$Connection->checkColumnName('stats_airport','stats_type')) {
754
			// Rename type to stats_type
755
			$query = "ALTER TABLE `stats_airport` CHANGE `type` `stats_type` VARCHAR(50);ALTER TABLE `stats` CHANGE `type` `stats_type` VARCHAR(50);ALTER TABLE `stats_flight` CHANGE `type` `stats_type` VARCHAR(50);";
756
			try {
757
				$sth = $Connection->db->prepare($query);
758
				$sth->execute();
759
			} catch(PDOException $e) {
760
				return "error (rename type to stats_type on stats*) : ".$e->getMessage()."\n";
761
			}
762
			if ($error != '') return $error;
763
		}
764
		$query = "UPDATE `config` SET `value` = '22' WHERE `name` = 'schema_version'";
765
        	try {
766
            	    $sth = $Connection->db->prepare($query);
767
		    $sth->execute();
768
    		} catch(PDOException $e) {
769
		    return "error (update schema_version) : ".$e->getMessage()."\n";
770
    		}
771
		return $error;
772
	}
773
774
	private static function update_from_22() {
775
		global $globalDBdriver;
776
    		$Connection = new Connection();
777
		$error = '';
778
		// Add table stats polar
779
    		if (!$Connection->tableExists('stats_source')) {
780
			if ($globalDBdriver == 'mysql') {
781
    				$error .= create_db::import_file('../db/stats_source.sql');
782
			} else {
783
				$error .= create_db::import_file('../db/pgsql/stats_source.sql');
784
			}
785
			if ($error != '') return $error;
786
		}
787
		$query = "UPDATE config SET value = '23' WHERE name = 'schema_version'";
788
        	try {
789
            	    $sth = $Connection->db->prepare($query);
790
		    $sth->execute();
791
    		} catch(PDOException $e) {
792
		    return "error (update schema_version) : ".$e->getMessage()."\n";
793
    		}
794
		return $error;
795
	}
796
797
798
	private static function update_from_23() {
799
		global $globalDBdriver;
800
		$Connection = new Connection();
801
		$error = '';
802
		$query = "";
0 ignored issues
show
Unused Code introduced by
$query 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...
803
		// Add table tle for satellites
804
		if ($globalDBdriver == 'mysql') {
805
			if (!$Connection->tableExists('tle')) {
806
				$error .= create_db::import_file('../db/tle.sql');
807
				if ($error != '') return $error;
808
			}
809
		} else {
810
			if (!$Connection->tableExists('tle')) {
811
				$error .= create_db::import_file('../db/pgsql/tle.sql');
812
				if ($error != '') return $error;
813
			}
814
			$query = "create index flightaware_id_idx ON spotter_archive USING btree(flightaware_id)";
815
			try {
816
				$sth = $Connection->db->prepare($query);
817
				$sth->execute();
818
			} catch(PDOException $e) {
819
				return "error (create index on spotter_archive) : ".$e->getMessage()."\n";
820
			}
821
		}
822
		if (!$Connection->checkColumnName('stats_aircraft','aircraft_manufacturer')) {
823
			// Add aircraft_manufacturer to stats_aircraft
824
    			$query = "ALTER TABLE stats_aircraft ADD aircraft_manufacturer VARCHAR(255) NULL";
825
			try {
826
				$sth = $Connection->db->prepare($query);
827
				$sth->execute();
828
			} catch(PDOException $e) {
829
				return "error (add aircraft_manufacturer column) : ".$e->getMessage()."\n";
830
    			}
831
    		}
832
		
833
		$query = "UPDATE config SET value = '24' WHERE name = 'schema_version'";
834
		try {
835
			$sth = $Connection->db->prepare($query);
836
			$sth->execute();
837
		} catch(PDOException $e) {
838
			return "error (update schema_version) : ".$e->getMessage()."\n";
839
		}
840
		return $error;
841
	}
842
843
	private static function update_from_24() {
844
		global $globalDBdriver;
845
		$Connection = new Connection();
846
		$error = '';
847
		if ($globalDBdriver == 'mysql') {
848
			$error .= create_db::import_file('../db/airlines.sql');
849
		} else {
850
			$error .= create_db::import_file('../db/pgsql/airlines.sql');
851
		}
852
		if ($error != '') return 'Import airlines.sql : '.$error;
853
		if (!$Connection->checkColumnName('airlines','forsource')) {
854
			// Add forsource to airlines
855
			$query = "ALTER TABLE airlines ADD forsource VARCHAR(255) NULL DEFAULT NULL";
856
			try {
857
				$sth = $Connection->db->prepare($query);
858
				$sth->execute();
859
			} catch(PDOException $e) {
860
				return "error (add forsource column) : ".$e->getMessage()."\n";
861
			}
862
		}
863
		if (!$Connection->checkColumnName('stats_aircraft','stats_airline')) {
864
			// Add forsource to airlines
865
			$query = "ALTER TABLE stats_aircraft ADD stats_airline VARCHAR(255) NULL DEFAULT '', ADD filter_name VARCHAR(255) NULL DEFAULT ''";
866
			try {
867
				$sth = $Connection->db->prepare($query);
868
				$sth->execute();
869
			} catch(PDOException $e) {
870
				return "error (add stats_airline & filter_name column in stats_aircraft) : ".$e->getMessage()."\n";
871
			}
872
			// Add unique key
873
			if ($globalDBdriver == 'mysql') {
874
				$query = "drop index aircraft_icao on stats_aircraft;ALTER TABLE stats_aircraft ADD UNIQUE aircraft_icao (aircraft_icao,stats_airline,filter_name);";
875
			} else {
876
				$query = "alter table stats_aircraft drop constraint stats_aircraft_aircraft_icao_key;ALTER TABLE stats_aircraft ADD CONSTRAINT aircraft_icao UNIQUE (aircraft_icao,stats_airline,filter_name);";
877
			}
878
			try {
879
				$sth = $Connection->db->prepare($query);
880
				$sth->execute();
881
			} catch(PDOException $e) {
882
				return "error (add unique key in stats_aircraft) : ".$e->getMessage()."\n";
883
			}
884
		}
885
		if (!$Connection->checkColumnName('stats_airport','stats_airline')) {
886
			// Add forsource to airlines
887
			$query = "ALTER TABLE stats_airport ADD stats_airline VARCHAR(255) NULL DEFAULT '', ADD filter_name VARCHAR(255) NULL DEFAULT ''";
888
			try {
889
				$sth = $Connection->db->prepare($query);
890
				$sth->execute();
891
			} catch(PDOException $e) {
892
				return "error (add filter_name column in stats_airport) : ".$e->getMessage()."\n";
893
			}
894
			// Add unique key
895
			if ($globalDBdriver == 'mysql') {
896
				$query = "drop index airport_icao on stats_airport;ALTER TABLE stats_airport ADD UNIQUE airport_icao (airport_icao,stats_type,date,stats_airline,filter_name);";
897
			} else {
898
				$query = "alter table stats_airport drop constraint stats_airport_airport_icao_stats_type_date_key;ALTER TABLE stats_airport ADD CONSTRAINT airport_icao UNIQUE (airport_icao,stats_type,date,stats_airline,filter_name);";
899
			}
900
			try {
901
				$sth = $Connection->db->prepare($query);
902
				$sth->execute();
903
			} catch(PDOException $e) {
904
				return "error (add unique key in stats_airport) : ".$e->getMessage()."\n";
905
			}
906
		}
907
		if (!$Connection->checkColumnName('stats_country','stats_airline')) {
908
			// Add forsource to airlines
909
			$query = "ALTER TABLE stats_country ADD stats_airline VARCHAR(255) NULL DEFAULT '', ADD filter_name VARCHAR(255) NULL DEFAULT ''";
910
			try {
911
				$sth = $Connection->db->prepare($query);
912
				$sth->execute();
913
			} catch(PDOException $e) {
914
				return "error (add stats_airline & filter_name column in stats_country) : ".$e->getMessage()."\n";
915
			}
916
			// Add unique key
917
			if ($globalDBdriver == 'mysql') {
918
				$query = "drop index iso2 on stats_country;ALTER TABLE stats_country ADD UNIQUE iso2 (iso2,stats_airline,filter_name);";
919
			} else {
920
				$query = "alter table stats_country drop constraint stats_country_iso2_key;ALTER TABLE stats_country ADD CONSTRAINT iso2 UNIQUE (iso2,stats_airline,filter_name);";
921
			}
922
			try {
923
				$sth = $Connection->db->prepare($query);
924
				$sth->execute();
925
			} catch(PDOException $e) {
926
				return "error (add unique key in stats_airline) : ".$e->getMessage()."\n";
927
			}
928
		}
929
		if (!$Connection->checkColumnName('stats_flight','stats_airline')) {
930
			// Add forsource to airlines
931
			$query = "ALTER TABLE stats_flight ADD stats_airline VARCHAR(255) NULL DEFAULT '', ADD filter_name VARCHAR(255) NULL DEFAULT ''";
932
			try {
933
				$sth = $Connection->db->prepare($query);
934
				$sth->execute();
935
			} catch(PDOException $e) {
936
				return "error (add stats_airline & filter_name column in stats_flight) : ".$e->getMessage()."\n";
937
			}
938
		}
939
		if (!$Connection->checkColumnName('stats','stats_airline')) {
940
			// Add forsource to airlines
941
			$query = "ALTER TABLE stats ADD stats_airline VARCHAR(255) NULL DEFAULT '', ADD filter_name VARCHAR(255) NULL DEFAULT ''";
942
			try {
943
				$sth = $Connection->db->prepare($query);
944
				$sth->execute();
945
			} catch(PDOException $e) {
946
				return "error (add stats_airline & filter_name column in stats) : ".$e->getMessage()."\n";
947
			}
948
			if ($globalDBdriver == 'mysql' && $Connection->indexExists('stats','type')) {
949
				// Add unique key
950
				$query = "drop index type on stats;ALTER TABLE stats ADD UNIQUE stats_type (stats_type,stats_date,stats_airline,filter_name);";
951
				try {
952
					$sth = $Connection->db->prepare($query);
953
					$sth->execute();
954
				} catch(PDOException $e) {
955
					return "error (add unique key in stats) : ".$e->getMessage()."\n";
956
				}
957
			} else {
958
				// Add unique key
959
				if ($globalDBdriver == 'mysql') {
960
					$query = "drop index stats_type on stats;ALTER TABLE stats ADD UNIQUE stats_type (stats_type,stats_date,stats_airline,filter_name);";
961
				} else {
962
					$query = "alter table stats drop constraint stats_stats_type_stats_date_key;ALTER TABLE stats ADD CONSTRAINT stats_type UNIQUE (stats_type,stats_date,stats_airline,filter_name);";
963
				}
964
				try {
965
					$sth = $Connection->db->prepare($query);
966
					$sth->execute();
967
				} catch(PDOException $e) {
968
					return "error (add unique key in stats) : ".$e->getMessage()."\n";
969
				}
970
			}
971
		}
972
		if (!$Connection->checkColumnName('stats_registration','stats_airline')) {
973
			// Add forsource to airlines
974
			$query = "ALTER TABLE stats_registration ADD stats_airline VARCHAR(255) NULL DEFAULT '', ADD filter_name VARCHAR(255) NULL DEFAULT ''";
975
			try {
976
				$sth = $Connection->db->prepare($query);
977
				$sth->execute();
978
			} catch(PDOException $e) {
979
				return "error (add stats_airline & filter_name column in stats_registration) : ".$e->getMessage()."\n";
980
			}
981
			// Add unique key
982
			if ($globalDBdriver == 'mysql') {
983
				$query = "drop index registration on stats_registration;ALTER TABLE stats_registration ADD UNIQUE registration (registration,stats_airline,filter_name);";
984
			} else {
985
				$query = "alter table stats_registration drop constraint stats_registration_registration_key;ALTER TABLE stats_registration ADD CONSTRAINT registration UNIQUE (registration,stats_airline,filter_name);";
986
			}
987
			try {
988
				$sth = $Connection->db->prepare($query);
989
				$sth->execute();
990
			} catch(PDOException $e) {
991
				return "error (add unique key in stats_registration) : ".$e->getMessage()."\n";
992
			}
993
		}
994
		if (!$Connection->checkColumnName('stats_callsign','filter_name')) {
995
			// Add forsource to airlines
996
			$query = "ALTER TABLE stats_callsign ADD filter_name VARCHAR(255) NULL DEFAULT ''";
997
			try {
998
				$sth = $Connection->db->prepare($query);
999
				$sth->execute();
1000
			} catch(PDOException $e) {
1001
				return "error (add filter_name column in stats_callsign) : ".$e->getMessage()."\n";
1002
			}
1003
			// Add unique key
1004
			if ($globalDBdriver == 'mysql') {
1005
				$query = "drop index callsign_icao on stats_callsign;ALTER TABLE stats_callsign ADD UNIQUE callsign_icao (callsign_icao,filter_name);";
1006
			} else {
1007
				$query = "drop index stats_callsign_callsign_icao_key;ALTER TABLE stats_callsign ADD CONSTRAINT callsign_icao UNIQUE (callsign_icao,filter_name);";
1008
			}
1009
			try {
1010
				$sth = $Connection->db->prepare($query);
1011
				$sth->execute();
1012
			} catch(PDOException $e) {
1013
				return "error (add unique key in stats_callsign) : ".$e->getMessage()."\n";
1014
			}
1015
		}
1016
		if (!$Connection->checkColumnName('stats_airline','filter_name')) {
1017
			// Add forsource to airlines
1018
			$query = "ALTER TABLE stats_airline ADD filter_name VARCHAR(255) NULL DEFAULT ''";
1019
			try {
1020
				$sth = $Connection->db->prepare($query);
1021
				$sth->execute();
1022
			} catch(PDOException $e) {
1023
				return "error (add filter_name column in stats_airline) : ".$e->getMessage()."\n";
1024
			}
1025
			// Add unique key
1026
			if ($globalDBdriver == 'mysql') {
1027
				$query = "drop index airline_icao on stats_airline;ALTER TABLE stats_airline ADD UNIQUE airline_icao (airline_icao,filter_name);";
1028
			} else {
1029
				$query = "drop index stats_airline_airline_icao_key;ALTER TABLE stats_airline ADD CONSTRAINT airline_icao UNIQUE (airline_icao,filter_name);";
1030
			}
1031
			try {
1032
				$sth = $Connection->db->prepare($query);
1033
				$sth->execute();
1034
			} catch(PDOException $e) {
1035
				return "error (add unique key in stats_callsign) : ".$e->getMessage()."\n";
1036
			}
1037
		}
1038
		
1039
		$query = "UPDATE config SET value = '25' WHERE name = 'schema_version'";
1040
		try {
1041
			$sth = $Connection->db->prepare($query);
1042
			$sth->execute();
1043
		} catch(PDOException $e) {
1044
			return "error (update schema_version) : ".$e->getMessage()."\n";
1045
		}
1046
		return $error;
1047
	}
1048
1049
	private static function update_from_25() {
1050
		global $globalDBdriver;
1051
		$Connection = new Connection();
1052
		$error = '';
1053
		if (!$Connection->checkColumnName('stats_owner','stats_airline')) {
1054
			// Add forsource to airlines
1055
			$query = "ALTER TABLE stats_owner ADD stats_airline VARCHAR(255) NULL DEFAULT '', ADD filter_name VARCHAR(255) NULL DEFAULT ''";
1056
			try {
1057
				$sth = $Connection->db->prepare($query);
1058
				$sth->execute();
1059
			} catch(PDOException $e) {
1060
				return "error (add stats_airline & filter_name column in stats_owner) : ".$e->getMessage()."\n";
1061
			}
1062
			// Add unique key
1063
			if ($globalDBdriver == 'mysql') {
1064
				$query = "drop index owner_name on stats_owner;ALTER TABLE stats_owner ADD UNIQUE owner_name (owner_name,stats_airline,filter_name);";
1065
			} else {
1066
				$query = "drop index stats_owner_owner_name_key;ALTER TABLE stats_owner ADD CONSTRAINT owner_name UNIQUE (owner_name,stats_airline,filter_name);";
1067
			}
1068
			try {
1069
				$sth = $Connection->db->prepare($query);
1070
				$sth->execute();
1071
			} catch(PDOException $e) {
1072
				return "error (add unique key in stats_owner) : ".$e->getMessage()."\n";
1073
			}
1074
		}
1075
		if (!$Connection->checkColumnName('stats_pilot','stats_airline')) {
1076
			// Add forsource to airlines
1077
			$query = "ALTER TABLE stats_pilot ADD stats_airline VARCHAR(255) NULL DEFAULT '', ADD filter_name VARCHAR(255) NULL DEFAULT ''";
1078
			try {
1079
				$sth = $Connection->db->prepare($query);
1080
				$sth->execute();
1081
			} catch(PDOException $e) {
1082
				return "error (add stats_airline & filter_name column in stats_pilot) : ".$e->getMessage()."\n";
1083
			}
1084
			// Add unique key
1085
			if ($globalDBdriver == 'mysql') {
1086
				$query = "drop index pilot_id on stats_pilot;ALTER TABLE stats_pilot ADD UNIQUE pilot_id (pilot_id,stats_airline,filter_name);";
1087
			} else {
1088
				$query = "drop index stats_pilot_pilot_id_key;ALTER TABLE stats_pilot ADD CONSTRAINT pilot_id UNIQUE (pilot_id,stats_airline,filter_name);";
1089
			}
1090
			try {
1091
				$sth = $Connection->db->prepare($query);
1092
				$sth->execute();
1093
			} catch(PDOException $e) {
1094
				return "error (add unique key in stats_pilot) : ".$e->getMessage()."\n";
1095
			}
1096
		}
1097
		$query = "UPDATE config SET value = '26' WHERE name = 'schema_version'";
1098
		try {
1099
			$sth = $Connection->db->prepare($query);
1100
			$sth->execute();
1101
		} catch(PDOException $e) {
1102
			return "error (update schema_version) : ".$e->getMessage()."\n";
1103
		}
1104
		return $error;
1105
	}
1106
1107
	private static function update_from_26() {
1108
		global $globalDBdriver;
1109
		$Connection = new Connection();
1110
		$error = '';
1111
		if (!$Connection->checkColumnName('atc','format_source')) {
1112
			$query = "ALTER TABLE atc ADD format_source VARCHAR(255) DEFAULT NULL, ADD source_name VARCHAR(255) DEFAULT NULL";
1113
			try {
1114
				$sth = $Connection->db->prepare($query);
1115
				$sth->execute();
1116
			} catch(PDOException $e) {
1117
				return "error (add format_source & source_name column in atc) : ".$e->getMessage()."\n";
1118
			}
1119
		}
1120
		$query = "UPDATE config SET value = '27' WHERE name = 'schema_version'";
1121
		try {
1122
			$sth = $Connection->db->prepare($query);
1123
			$sth->execute();
1124
		} catch(PDOException $e) {
1125
			return "error (update schema_version) : ".$e->getMessage()."\n";
1126
		}
1127
		return $error;
1128
	}
1129
1130
	private static function update_from_27() {
1131
		global $globalDBdriver;
1132
		$Connection = new Connection();
1133
		$error = '';
1134
		if (!$Connection->checkColumnName('stats_pilot','format_source')) {
1135
			// Add forsource to airlines
1136
			$query = "ALTER TABLE stats_pilot ADD format_source VARCHAR(255) NULL DEFAULT ''";
1137
			try {
1138
				$sth = $Connection->db->prepare($query);
1139
				$sth->execute();
1140
			} catch(PDOException $e) {
1141
				return "error (add format_source column in stats_pilot) : ".$e->getMessage()."\n";
1142
			}
1143
			// Add unique key
1144
			if ($globalDBdriver == 'mysql') {
1145
				$query = "drop index pilot_id on stats_pilot;ALTER TABLE stats_pilot ADD UNIQUE pilot_id (pilot_id,stats_airline,filter_name,format_source);";
1146
			} else {
1147
				$query = "drop index pilot_id;ALTER TABLE stats_pilot ADD CONSTRAINT pilot_id UNIQUE (pilot_id,stats_airline,filter_name,format_source);";
1148
			}
1149
			try {
1150
				$sth = $Connection->db->prepare($query);
1151
				$sth->execute();
1152
			} catch(PDOException $e) {
1153
				return "error (modify unique key in stats_pilot) : ".$e->getMessage()."\n";
1154
			}
1155
		}
1156
		$query = "UPDATE config SET value = '28' WHERE name = 'schema_version'";
1157
		try {
1158
			$sth = $Connection->db->prepare($query);
1159
			$sth->execute();
1160
		} catch(PDOException $e) {
1161
			return "error (update schema_version) : ".$e->getMessage()."\n";
1162
		}
1163
		return $error;
1164
	}
1165
1166
	private static function update_from_28() {
1167
		global $globalDBdriver;
1168
		$Connection = new Connection();
1169
		$error = '';
1170
		if ($globalDBdriver == 'mysql' && !$Connection->indexExists('spotter_live','latitude')) {
1171
			// Add unique key
1172
			$query = "alter table spotter_live add index(latitude,longitude)";
1173
			try {
1174
				$sth = $Connection->db->prepare($query);
1175
				$sth->execute();
1176
			} catch(PDOException $e) {
1177
				return "error (add index latitude,longitude on spotter_live) : ".$e->getMessage()."\n";
1178
			}
1179
                }
1180
		if (!$Connection->checkColumnName('aircraft','mfr')) {
1181
			// Add mfr to aircraft
1182
			$query = "ALTER TABLE aircraft ADD mfr VARCHAR(255) NULL";
1183
			try {
1184
				$sth = $Connection->db->prepare($query);
1185
				$sth->execute();
1186
			} catch(PDOException $e) {
1187
				return "error (add mfr column in aircraft) : ".$e->getMessage()."\n";
1188
			}
1189
		}
1190
		if (!$Connection->tableExists('accidents')) {
1191
			if ($globalDBdriver == 'mysql') {
1192
				$error .= create_db::import_file('../db/accidents.sql');
1193
			} else {
1194
				$error .= create_db::import_file('../db/pgsql/accidents.sql');
1195
			}
1196
		}
1197
1198
		$query = "UPDATE config SET value = '29' WHERE name = 'schema_version'";
1199
		try {
1200
			$sth = $Connection->db->prepare($query);
1201
			$sth->execute();
1202
		} catch(PDOException $e) {
1203
			return "error (update schema_version) : ".$e->getMessage()."\n";
1204
		}
1205
		return $error;
1206
	}
1207
1208
	private static function update_from_29() {
1209
		global $globalDBdriver;
1210
		$Connection = new Connection();
1211
		$error = '';
1212
		if ($Connection->checkColumnName('aircraft','mfr')) {
1213
			// drop mfr to aircraft
1214
			$query = "ALTER TABLE aircraft DROP COLUMN mfr";
1215
			try {
1216
				$sth = $Connection->db->prepare($query);
1217
				$sth->execute();
1218
			} catch(PDOException $e) {
1219
				return "error (drop mfr column in aircraft) : ".$e->getMessage()."\n";
1220
			}
1221
		}
1222
		if (!$Connection->tableExists('faamfr')) {
1223
			if ($globalDBdriver == 'mysql') {
1224
				$error .= create_db::import_file('../db/faamfr.sql');
1225
			} else {
1226
				$error .= create_db::import_file('../db/pgsql/faamfr.sql');
1227
			}
1228
		}
1229
1230
		$query = "UPDATE config SET value = '30' WHERE name = 'schema_version'";
1231
		try {
1232
			$sth = $Connection->db->prepare($query);
1233
			$sth->execute();
1234
		} catch(PDOException $e) {
1235
			return "error (update schema_version) : ".$e->getMessage()."\n";
1236
		}
1237
		return $error;
1238
	}
1239
1240
	private static function update_from_30() {
1241
		global $globalDBdriver;
1242
		$Connection = new Connection();
1243
		$error = '';
1244
		if (!$Connection->indexExists('notam','ref_idx')) {
1245
			// Add index key
1246
			$query = "create index ref_idx on notam (ref)";
1247
			try {
1248
				$sth = $Connection->db->prepare($query);
1249
				$sth->execute();
1250
			} catch(PDOException $e) {
1251
				return "error (add index ref on notam) : ".$e->getMessage()."\n";
1252
			}
1253
                }
1254
		if (!$Connection->indexExists('accidents','registration_idx')) {
1255
			// Add index key
1256
			$query = "create index registration_idx on accidents (registration)";
1257
			try {
1258
				$sth = $Connection->db->prepare($query);
1259
				$sth->execute();
1260
			} catch(PDOException $e) {
1261
				return "error (add index registration on accidents) : ".$e->getMessage()."\n";
1262
			}
1263
                }
1264
		if (!$Connection->indexExists('accidents','rdts')) {
1265
			// Add index key
1266
			$query = "create index rdts on accidents (registration,date,type,source)";
1267
			try {
1268
				$sth = $Connection->db->prepare($query);
1269
				$sth->execute();
1270
			} catch(PDOException $e) {
1271
				return "error (add index registration, date, type & source on accidents) : ".$e->getMessage()."\n";
1272
			}
1273
                }
1274
1275
		$query = "UPDATE config SET value = '31' WHERE name = 'schema_version'";
1276
		try {
1277
			$sth = $Connection->db->prepare($query);
1278
			$sth->execute();
1279
		} catch(PDOException $e) {
1280
			return "error (update schema_version) : ".$e->getMessage()."\n";
1281
		}
1282
		return $error;
1283
	}
1284
1285
	private static function update_from_31() {
1286
		global $globalDBdriver;
1287
		$Connection = new Connection();
1288
		$error = '';
1289
		if (!$Connection->checkColumnName('accidents','airline_name')) {
1290
			// Add airline_name to accidents
1291
			$query = "ALTER TABLE accidents ADD airline_name VARCHAR(255) NULL";
1292
			try {
1293
				$sth = $Connection->db->prepare($query);
1294
				$sth->execute();
1295
			} catch(PDOException $e) {
1296
				return "error (add airline_name column in accidents) : ".$e->getMessage()."\n";
1297
			}
1298
		}
1299
		if (!$Connection->checkColumnName('accidents','airline_icao')) {
1300
			// Add airline_icao to accidents
1301
			$query = "ALTER TABLE accidents ADD airline_icao VARCHAR(10) NULL";
1302
			try {
1303
				$sth = $Connection->db->prepare($query);
1304
				$sth->execute();
1305
			} catch(PDOException $e) {
1306
				return "error (add airline_icao column in accidents) : ".$e->getMessage()."\n";
1307
			}
1308
		}
1309
		$query = "UPDATE config SET value = '32' WHERE name = 'schema_version'";
1310
		try {
1311
			$sth = $Connection->db->prepare($query);
1312
			$sth->execute();
1313
		} catch(PDOException $e) {
1314
			return "error (update schema_version) : ".$e->getMessage()."\n";
1315
		}
1316
		return $error;
1317
	}
1318
1319
	private static function update_from_32() {
1320
		global $globalDBdriver, $globalVATSIM, $globalIVAO;
1321
		$Connection = new Connection();
1322
		$error = '';
1323
		if (!$Connection->checkColumnName('airlines','alliance')) {
1324
			// Add alliance to airlines
1325
			$query = "ALTER TABLE airlines ADD alliance VARCHAR(255) NULL";
1326
			try {
1327
				$sth = $Connection->db->prepare($query);
1328
				$sth->execute();
1329
			} catch(PDOException $e) {
1330
				return "error (add alliance column in airlines) : ".$e->getMessage()."\n";
1331
			}
1332
		}
1333
		if ($globalDBdriver == 'mysql') {
1334
			$error .= create_db::import_file('../db/airlines.sql');
1335
			if ($error != '') return $error;
1336
		} else {
1337
			$error .= create_db::import_file('../db/pgsql/airlines.sql');
1338
			if ($error != '') return $error;
1339
		}
1340
		if ((isset($globalVATSIM) && $globalVATSIM) || (isset($globalIVAO) && $globalIVAO)) {
1341
			include_once(dirname(__FILE__).'/class.update_db.php');
1342
			if (isset($globalVATSIM) && $globalVATSIM) {
1343
				$error .= update_db::update_vatsim();
1344
				if ($error != '') return $error;
1345
			}
1346
			if (isset($globalIVAO) && $globalIVAO && file_exists('tmp/ivae_feb2013.zip')) {
1347
				$error .= update_db::update_IVAO();
1348
				if ($error != '') return $error;
1349
			}
1350
		}
1351
1352
		$query = "UPDATE config SET value = '33' WHERE name = 'schema_version'";
1353
		try {
1354
			$sth = $Connection->db->prepare($query);
1355
			$sth->execute();
1356
		} catch(PDOException $e) {
1357
			return "error (update schema_version) : ".$e->getMessage()."\n";
1358
		}
1359
		return $error;
1360
	}
1361
1362
	private static function update_from_33() {
1363
		global $globalDBdriver, $globalVATSIM, $globalIVAO;
1364
		$Connection = new Connection();
1365
		$error = '';
1366
		if (!$Connection->checkColumnName('airlines','ban_eu')) {
1367
			// Add ban_eu to airlines
1368
			$query = "ALTER TABLE airlines ADD ban_eu INTEGER NOT NULL DEFAULT '0'";
1369
			try {
1370
				$sth = $Connection->db->prepare($query);
1371
				$sth->execute();
1372
			} catch(PDOException $e) {
1373
				return "error (add ban_eu column in airlines) : ".$e->getMessage()."\n";
1374
			}
1375
		}
1376
		$query = "UPDATE config SET value = '34' WHERE name = 'schema_version'";
1377
		try {
1378
			$sth = $Connection->db->prepare($query);
1379
			$sth->execute();
1380
		} catch(PDOException $e) {
1381
			return "error (update schema_version) : ".$e->getMessage()."\n";
1382
		}
1383
		return $error;
1384
	}
1385
1386
	private static function update_from_34() {
1387
		global $globalDBdriver;
1388
		$Connection = new Connection();
1389
		$error = '';
1390
		if ($globalDBdriver == 'mysql') {
1391
			if ($Connection->getColumnType('spotter_output','date') == 'TIMESTAMP' && $Connection->getColumnType('spotter_output','last_seen') != 'TIMESTAMP') {
1392
				$query = "ALTER TABLE spotter_output CHANGE date date TIMESTAMP NULL DEFAULT NULL";
1393
				try {
1394
					$sth = $Connection->db->prepare($query);
1395
					$sth->execute();
1396
				} catch(PDOException $e) {
1397
					return "error (delete default timestamp spotter_output) : ".$e->getMessage()."\n";
1398
				}
1399
				$query = "ALTER TABLE spotter_output MODIFY COLUMN last_seen timestamp not null default current_timestamp()";
1400
				try {
1401
					$sth = $Connection->db->prepare($query);
1402
					$sth->execute();
1403
				} catch(PDOException $e) {
1404
					return "error (convert spotter_output last_seen to timestamp) : ".$e->getMessage()."\n";
1405
				}
1406
				
1407
				$query = "ALTER TABLE spotter_output ALTER COLUMN last_seen DROP DEFAULT";
1408
				try {
1409
					$sth = $Connection->db->prepare($query);
1410
					$sth->execute();
1411
				} catch(PDOException $e) {
1412
					return "error (delete default timestamp spotter_output) : ".$e->getMessage()."\n";
1413
				}
1414
				/*$query = "SELECT date,last_seen FROM spotter_output WHERE last_seen < date ORDER BY date DESC LIMIT 150";
1415
				try {
1416
					$sth = $Connection->db->prepare($query);
1417
					$sth->execute();
1418
				} catch(PDOException $e) {
1419
					return "error (get date diff from spotter_output) : ".$e->getMessage()."\n";
1420
				}
1421
				$stats = array();
1422
				while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
1423
					$hours = gmdate('H',strtotime($row['last_seen']) - strtotime($row['date']));
1424
					if ($hours < 12) {
1425
						if (isset($stats[$hours])) $stats[$hours] = $stats[$hours] + 1;
1426
						else $stats[$hours] = 1;
1427
					}
1428
				}
1429
				if (!empty($stats)) {
1430
					asort($stats);
1431
					reset($stats);
1432
					$hour = key($stats);
1433
					$i = 1;
1434
					$j = 0;
1435
					$query_chk = "SELECT count(*) as nb FROM spotter_output WHERE last_seen < date";
1436
					while ($i > 0) {
1437
						$query = "UPDATE spotter_output SET last_seen = DATE_ADD(last_seen, INTERVAL ".$hour." HOUR) WHERE last_seen < date";
1438
						try {
1439
							$sth = $Connection->db->prepare($query);
1440
							$sth->execute();
1441
						} catch(PDOException $e) {
1442
							return "error (fix date) : ".$e->getMessage()."\n";
1443
						}
1444
						try {
1445
							$sth_chk = $Connection->db->prepare($query_chk);
1446
							$sth_chk->execute();
1447
							$result = $sth_chk->fetchAll(PDO::FETCH_ASSOC);
1448
						} catch(PDOException $e) {
1449
							return "error (fix date chk) : ".$e->getMessage()."\n";
1450
						}
1451
						$i = $result[0]['nb'];
1452
						$hour = 1;
1453
						$j++;
1454
						if ($j > 12) $i = 0;
1455
					}
1456
				}
1457
				*/
1458
				$query = "UPDATE spotter_output SET last_seen = date WHERE last_seen < date";
1459
				try {
1460
					$sth = $Connection->db->prepare($query);
1461
					$sth->execute();
1462
				} catch(PDOException $e) {
1463
					return "error (fix date) : ".$e->getMessage()."\n";
1464
				}
1465
			}
1466
			/*
1467
			if ($Connection->getColumnType('spotter_archive_output','date') == 'TIMESTAMP' && $Connection->getColumnType('spotter_archive_output','last_seen') != 'TIMESTAMP') {
1468
				$query = "ALTER TABLE spotter_archive_output CHANGE date date TIMESTAMP NULL DEFAULT NULL";
1469
				try {
1470
					$sth = $Connection->db->prepare($query);
1471
					$sth->execute();
1472
				} catch(PDOException $e) {
1473
					return "error (delete default timestamp spotter_output) : ".$e->getMessage()."\n";
1474
				}
1475
				$query = "ALTER TABLE spotter_archive_output MODIFY COLUMN last_seen timestamp not null default current_timestamp()";
1476
				try {
1477
					$sth = $Connection->db->prepare($query);
1478
					$sth->execute();
1479
				} catch(PDOException $e) {
1480
					return "error (convert spotter_archive_output last_seen to timestamp) : ".$e->getMessage()."\n";
1481
				}
1482
				$query = "ALTER TABLE spotter_archive_output ALTER COLUMN last_seen DROP DEFAULT";
1483
				try {
1484
					$sth = $Connection->db->prepare($query);
1485
					$sth->execute();
1486
				} catch(PDOException $e) {
1487
					return "error (delete default timestamp spotter_output) : ".$e->getMessage()."\n";
1488
				}
1489
				$query = "SELECT date,last_seen FROM spotter_archive_output WHERE last_seen < date ORDER BY date DESC LIMIT 150";
1490
				try {
1491
					$sth = $Connection->db->prepare($query);
1492
					$sth->execute();
1493
				} catch(PDOException $e) {
1494
					return "error (get diff from spotter_archive_output) : ".$e->getMessage()."\n";
1495
				}
1496
				$stats = array();
1497
				while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
1498
					$hours = gmdate('H',strtotime($row['last_seen']) - strtotime($row['date']));
1499
					if ($hours < 12) {
1500
						if (isset($stats[$hours])) $stats[$hours] = $stats[$hours] + 1;
1501
						else $stats[$hours] = 1;
1502
					}
1503
				}
1504
				if (!empty($stats)) {
1505
					asort($stats);
1506
					reset($stats);
1507
					$hour = key($stats);
1508
					$i = 1;
1509
					$j = 0;
1510
					$query_chk = "SELECT count(*) as nb FROM spotter_archive_output WHERE last_seen < date";
1511
					while ($i > 0) {
1512
						$query = "UPDATE spotter_archive_output SET last_seen = DATE_ADD(last_seen, INTERVAL ".$hour." HOUR) WHERE last_seen < date";
1513
						try {
1514
							$sth = $Connection->db->prepare($query);
1515
							$sth->execute();
1516
						} catch(PDOException $e) {
1517
							return "error (fix date) : ".$e->getMessage()."\n";
1518
						}
1519
						try {
1520
							$sth_chk = $Connection->db->prepare($query_chk);
1521
							$sth_chk->execute();
1522
							$result = $sth_chk->fetchAll(PDO::FETCH_ASSOC);
1523
						} catch(PDOException $e) {
1524
							return "error (fix date chk) : ".$e->getMessage()."\n";
1525
						}
1526
						$i = $result[0]['nb'];
1527
						$hour = 1;
1528
						$j++;
1529
						if ($j > 12) $i = 0;
1530
					}
1531
				}
1532
				$query = "UPDATE spotter_archive_output SET last_seen = date WHERE last_seen < date";
1533
				try {
1534
					$sth = $Connection->db->prepare($query);
1535
					$sth->execute();
1536
				} catch(PDOException $e) {
1537
					return "error (fix date) : ".$e->getMessage()."\n";
1538
				}
1539
			
1540
			}
1541
			*/
1542
		}
1543
		$query = "UPDATE config SET value = '35' WHERE name = 'schema_version'";
1544
		try {
1545
			$sth = $Connection->db->prepare($query);
1546
			$sth->execute();
1547
		} catch(PDOException $e) {
1548
			return "error (update schema_version) : ".$e->getMessage()."\n";
1549
		}
1550
		return $error;
1551
	}
1552
	private static function update_from_35() {
1553
		global $globalDBdriver;
1554
		$Connection = new Connection();
1555
		$error = '';
1556
		if (!$Connection->indexExists('accidents','type')) {
1557
			// Add index key
1558
			$query = "create index type on accidents (type,date)";
1559
			try {
1560
				$sth = $Connection->db->prepare($query);
1561
				$sth->execute();
1562
			} catch(PDOException $e) {
1563
				return "error (add index type on accidents) : ".$e->getMessage()."\n";
1564
			}
1565
                }
1566
		$query = "UPDATE config SET value = '36' WHERE name = 'schema_version'";
1567
		try {
1568
			$sth = $Connection->db->prepare($query);
1569
			$sth->execute();
1570
		} catch(PDOException $e) {
1571
			return "error (update schema_version) : ".$e->getMessage()."\n";
1572
		}
1573
		return $error;
1574
	}
1575
1576
	private static function update_from_36() {
1577
		global $globalDBdriver;
1578
		$Connection = new Connection();
1579
		$error = '';
1580
		if (!$Connection->checkColumnName('aircraft_modes','source_type')) {
1581
			$query = "ALTER TABLE aircraft_modes ADD source_type VARCHAR(255) DEFAULT 'modes'";
1582
			try {
1583
				$sth = $Connection->db->prepare($query);
1584
				$sth->execute();
1585
			} catch(PDOException $e) {
1586
				return "error (add source_type column in aircraft_modes) : ".$e->getMessage()."\n";
1587
			}
1588
		}
1589
		/*
1590
		if ($globalDBdriver == 'mysql') {
1591
			$query = "ALTER TABLE spotter_output MODIFY COLUMN ModeS VARCHAR(20) DEFAULT NULL; ALTER TABLE spotter_archive_output MODIFY COLUMN ModeS VARCHAR(20) DEFAULT NULL; ALTER TABLE spotter_live MODIFY COLUMN ModeS VARCHAR(20) DEFAULT NULL;ALTER TABLE spotter_archive MODIFY COLUMN ModeS VARCHAR(20) DEFAULT NULL;";
1592
			try {
1593
				$sth = $Connection->db->prepare($query);
1594
				$sth->execute();
1595
			} catch(PDOException $e) {
1596
				return "error (change ModeS column in spotter_* to NULL) : ".$e->getMessage()."\n";
1597
			}
1598
		} else {
1599
			$query = "ALTER TABLE spotter_output ALTER COLUMN ModeS DROP NOT NULL;ALTER TABLE spotter_live ALTER COLUMN ModeS DROP NOT NULL;ALTER TABLE spotter_archive_output ALTER COLUMN ModeS DROP NOT NULL;ALTER TABLE spotter_archive ALTER COLUMN ModeS DROP NOT NULL;";
1600
			try {
1601
				$sth = $Connection->db->prepare($query);
1602
				$sth->execute();
1603
			} catch(PDOException $e) {
1604
				return "error (change ModeS column in spotter_* to NULL) : ".$e->getMessage()."\n";
1605
			}
1606
		}
1607
		*/
1608
		if ($globalDBdriver == 'mysql') {
1609
			if (!$Connection->tableExists('tracker_output')) {
1610
				$error .= create_db::import_file('../db/tracker_output.sql');
1611
				if ($error != '') return $error;
1612
			}
1613
			if (!$Connection->tableExists('tracker_live')) {
1614
				$error .= create_db::import_file('../db/tracker_live.sql');
1615
				if ($error != '') return $error;
1616
			}
1617
			if (!$Connection->tableExists('marine_output')) {
1618
				$error .= create_db::import_file('../db/marine_output.sql');
1619
				if ($error != '') return $error;
1620
			}
1621
			if (!$Connection->tableExists('marine_live')) {
1622
				$error .= create_db::import_file('../db/marine_live.sql');
1623
				if ($error != '') return $error;
1624
			}
1625
			if (!$Connection->tableExists('marine_identity')) {
1626
				$error .= create_db::import_file('../db/marine_identity.sql');
1627
				if ($error != '') return $error;
1628
			}
1629
			if (!$Connection->tableExists('marine_mid')) {
1630
				$error .= create_db::import_file('../db/marine_mid.sql');
1631
				if ($error != '') return $error;
1632
			}
1633
		} else {
1634
			$error .= create_db::import_file('../db/pgsql/tracker_output.sql');
1635
			if ($error != '') return $error;
1636
			$error .= create_db::import_file('../db/pgsql/tracker_live.sql');
1637
			if ($error != '') return $error;
1638
			$error .= create_db::import_file('../db/pgsql/marine_output.sql');
1639
			if ($error != '') return $error;
1640
			$error .= create_db::import_file('../db/pgsql/marine_live.sql');
1641
			if ($error != '') return $error;
1642
			$error .= create_db::import_file('../db/pgsql/marine_identity.sql');
1643
			if ($error != '') return $error;
1644
			$error .= create_db::import_file('../db/pgsql/marine_mid.sql');
1645
			if ($error != '') return $error;
1646
		}
1647
		$query = "UPDATE config SET value = '37' WHERE name = 'schema_version'";
1648
		try {
1649
			$sth = $Connection->db->prepare($query);
1650
			$sth->execute();
1651
		} catch(PDOException $e) {
1652
			return "error (update schema_version) : ".$e->getMessage()."\n";
1653
		}
1654
		return $error;
1655
	}
1656
1657
	private static function update_from_37() {
1658
		global $globalDBdriver, $globalDBname;
1659
		$Connection = new Connection();
1660
		$error = '';
1661
		if ($globalDBdriver == 'mysql') {
1662
			if (!$Connection->tableExists('marine_image')) {
1663
				$error .= create_db::import_file('../db/marine_image.sql');
1664
				if ($error != '') return $error;
1665
			}
1666
			if (!$Connection->tableExists('marine_archive')) {
1667
				$error .= create_db::import_file('../db/marine_archive.sql');
1668
				if ($error != '') return $error;
1669
			}
1670
			if (!$Connection->tableExists('marine_archive_output')) {
1671
				$error .= create_db::import_file('../db/marine_archive_output.sql');
1672
				if ($error != '') return $error;
1673
			}
1674
			if (!$Connection->tableExists('tracker_archive')) {
1675
				$error .= create_db::import_file('../db/tracker_archive.sql');
1676
				if ($error != '') return $error;
1677
			}
1678
			if (!$Connection->tableExists('marine_archive_output')) {
1679
				$error .= create_db::import_file('../db/tracker_archive_output.sql');
1680
				if ($error != '') return $error;
1681
			}
1682
		} else {
1683
			$error .= create_db::import_file('../db/pgsql/marine_image.sql');
1684
			if ($error != '') return $error;
1685
			$error .= create_db::import_file('../db/pgsql/marine_archive.sql');
1686
			if ($error != '') return $error;
1687
			$error .= create_db::import_file('../db/pgsql/marine_archive_output.sql');
1688
			if ($error != '') return $error;
1689
			$error .= create_db::import_file('../db/pgsql/tracker_archive.sql');
1690
			if ($error != '') return $error;
1691
			$error .= create_db::import_file('../db/pgsql/tracker_archive_output.sql');
1692
			if ($error != '') return $error;
1693
		}
1694
		if ($globalDBdriver == 'mysql') {
1695
			$query = "SELECT ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = '".$globalDBname."' AND TABLE_NAME = 'spotter_archive'";
1696
			try {
1697
				$sth = $Connection->db->prepare($query);
1698
				$sth->execute();
1699
			} catch(PDOException $e) {
1700
				return "error (problem when select engine for spotter_engine) : ".$e->getMessage()."\n";
1701
			}
1702
			$row = $sth->fetch(PDO::FETCH_ASSOC);
1703
			if ($row['engine'] == 'ARCHIVE') {
1704
				$query = "ALTER TABLE spotter_archive ENGINE=InnoDB";
1705
				try {
1706
					$sth = $Connection->db->prepare($query);
1707
					$sth->execute();
1708
				} catch(PDOException $e) {
1709
					return "error (Change table format from archive to InnoDB for spotter_archive) : ".$e->getMessage()."\n";
1710
				}
1711
			}
1712
		}
1713
		if (!$Connection->indexExists('spotter_archive','flightaware_id_date_idx') && !$Connection->indexExists('spotter_archive','flightaware_id')) {
1714
			// Add index key
1715
			$query = "create index flightaware_id_date_idx on spotter_archive (flightaware_id,date)";
1716
			try {
1717
				$sth = $Connection->db->prepare($query);
1718
				$sth->execute();
1719
			} catch(PDOException $e) {
1720
				return "error (add index flightaware_id, date on spotter_archive) : ".$e->getMessage()."\n";
1721
			}
1722
                }
1723
		$query = "UPDATE config SET value = '38' WHERE name = 'schema_version'";
1724
		try {
1725
			$sth = $Connection->db->prepare($query);
1726
			$sth->execute();
1727
		} catch(PDOException $e) {
1728
			return "error (update schema_version) : ".$e->getMessage()."\n";
1729
		}
1730
		return $error;
1731
	}
1732
1733
	private static function update_from_38() {
1734
		global $globalDBdriver;
1735
		$Connection = new Connection();
1736
		$error = '';
1737
		if ($globalDBdriver == 'mysql') {
1738
			if (!$Connection->checkColumnName('marine_output','type_id')) {
1739
				$query = "ALTER TABLE marine_output ADD COLUMN type_id int(11) DEFAULT NULL";
1740
				try {
1741
					$sth = $Connection->db->prepare($query);
1742
					$sth->execute();
1743
				} catch(PDOException $e) {
1744
					return "error (add column type_id in marine_output) : ".$e->getMessage()."\n";
1745
				}
1746
			}
1747
			if (!$Connection->checkColumnName('marine_live','type_id')) {
1748
				$query = "ALTER TABLE marine_live ADD COLUMN type_id int(11) DEFAULT NULL";
1749
				try {
1750
					$sth = $Connection->db->prepare($query);
1751
					$sth->execute();
1752
				} catch(PDOException $e) {
1753
					return "error (add column type_id in marine_live) : ".$e->getMessage()."\n";
1754
				}
1755
			}
1756
			if (!$Connection->checkColumnName('marine_archive','type_id')) {
1757
				$query = "ALTER TABLE marine_archive ADD COLUMN type_id int(11) DEFAULT NULL";
1758
				try {
1759
					$sth = $Connection->db->prepare($query);
1760
					$sth->execute();
1761
				} catch(PDOException $e) {
1762
					return "error (add column type_id in marine_archive) : ".$e->getMessage()."\n";
1763
				}
1764
			}
1765
			if (!$Connection->checkColumnName('marine_archive_output','type_id')) {
1766
				$query = "ALTER TABLE marine_archive_output ADD COLUMN type_id int(11) DEFAULT NULL";
1767
				try {
1768
					$sth = $Connection->db->prepare($query);
1769
					$sth->execute();
1770
				} catch(PDOException $e) {
1771
					return "error (add column type_id in marine_archive_output) : ".$e->getMessage()."\n";
1772
				}
1773
			}
1774
			if (!$Connection->checkColumnName('marine_output','status_id')) {
1775
				$query = "ALTER TABLE marine_output ADD COLUMN status_id int(11) DEFAULT NULL";
1776
				try {
1777
					$sth = $Connection->db->prepare($query);
1778
					$sth->execute();
1779
				} catch(PDOException $e) {
1780
					return "error (add column status_id in marine_output) : ".$e->getMessage()."\n";
1781
				}
1782
			}
1783
			if (!$Connection->checkColumnName('marine_live','status_id')) {
1784
				$query = "ALTER TABLE marine_live ADD COLUMN status_id int(11) DEFAULT NULL";
1785
				try {
1786
					$sth = $Connection->db->prepare($query);
1787
					$sth->execute();
1788
				} catch(PDOException $e) {
1789
					return "error (add column status_id in marine_live) : ".$e->getMessage()."\n";
1790
				}
1791
			}
1792
			if (!$Connection->checkColumnName('marine_archive','status_id')) {
1793
				$query = "ALTER TABLE marine_archive ADD COLUMN status_id int(11) DEFAULT NULL";
1794
				try {
1795
					$sth = $Connection->db->prepare($query);
1796
					$sth->execute();
1797
				} catch(PDOException $e) {
1798
					return "error (add column status_id in marine_archive) : ".$e->getMessage()."\n";
1799
				}
1800
			}
1801
			if (!$Connection->checkColumnName('marine_archive_output','status_id')) {
1802
				$query = "ALTER TABLE marine_archive_output ADD COLUMN status_id int(11) DEFAULT NULL";
1803
				try {
1804
					$sth = $Connection->db->prepare($query);
1805
					$sth->execute();
1806
				} catch(PDOException $e) {
1807
					return "error (add column status_id in marine_archive_output) : ".$e->getMessage()."\n";
1808
				}
1809
			}
1810
		} else {
1811
			if (!$Connection->checkColumnName('marine_output','type_id')) {
1812
				$query = "ALTER TABLE marine_output ADD COLUMN type_id integer DEFAULT NULL";
1813
				try {
1814
					$sth = $Connection->db->prepare($query);
1815
					$sth->execute();
1816
				} catch(PDOException $e) {
1817
					return "error (add column type_id in marine_output) : ".$e->getMessage()."\n";
1818
				}
1819
			}
1820
			if (!$Connection->checkColumnName('marine_live','type_id')) {
1821
				$query = "ALTER TABLE marine_live ADD COLUMN type_id integer DEFAULT NULL";
1822
				try {
1823
					$sth = $Connection->db->prepare($query);
1824
					$sth->execute();
1825
				} catch(PDOException $e) {
1826
					return "error (add column type_id in marine_live) : ".$e->getMessage()."\n";
1827
				}
1828
			}
1829
			if (!$Connection->checkColumnName('marine_archive','type_id')) {
1830
				$query = "ALTER TABLE marine_archive ADD COLUMN type_id integer DEFAULT NULL";
1831
				try {
1832
					$sth = $Connection->db->prepare($query);
1833
					$sth->execute();
1834
				} catch(PDOException $e) {
1835
					return "error (add column type_id in marine_archive) : ".$e->getMessage()."\n";
1836
				}
1837
			}
1838
			if (!$Connection->checkColumnName('marine_archive_output','type_id')) {
1839
				$query = "ALTER TABLE marine_archive_output ADD COLUMN type_id integer DEFAULT NULL";
1840
				try {
1841
					$sth = $Connection->db->prepare($query);
1842
					$sth->execute();
1843
				} catch(PDOException $e) {
1844
					return "error (add column type_id in marine_archive_output) : ".$e->getMessage()."\n";
1845
				}
1846
			}
1847
			if (!$Connection->checkColumnName('marine_output','status_id')) {
1848
				$query = "ALTER TABLE marine_output ADD COLUMN status_id integer DEFAULT NULL";
1849
				try {
1850
					$sth = $Connection->db->prepare($query);
1851
					$sth->execute();
1852
				} catch(PDOException $e) {
1853
					return "error (add column status_id in marine_output) : ".$e->getMessage()."\n";
1854
				}
1855
			}
1856
			if (!$Connection->checkColumnName('marine_live','status_id')) {
1857
				$query = "ALTER TABLE marine_live ADD COLUMN status_id integer DEFAULT NULL";
1858
				try {
1859
					$sth = $Connection->db->prepare($query);
1860
					$sth->execute();
1861
				} catch(PDOException $e) {
1862
					return "error (add column status_id in marine_live) : ".$e->getMessage()."\n";
1863
				}
1864
			}
1865
			if (!$Connection->checkColumnName('marine_archive','status_id')) {
1866
				$query = "ALTER TABLE marine_archive ADD COLUMN status_id integer DEFAULT NULL";
1867
				try {
1868
					$sth = $Connection->db->prepare($query);
1869
					$sth->execute();
1870
				} catch(PDOException $e) {
1871
					return "error (add column status_id in marine_archive) : ".$e->getMessage()."\n";
1872
				}
1873
			}
1874
			if (!$Connection->checkColumnName('marine_archive_output','status_id')) {
1875
				$query = "ALTER TABLE marine_archive_output ADD COLUMN status_id integer DEFAULT NULL";
1876
				try {
1877
					$sth = $Connection->db->prepare($query);
1878
					$sth->execute();
1879
				} catch(PDOException $e) {
1880
					return "error (add column status_id in marine_archive_output) : ".$e->getMessage()."\n";
1881
				}
1882
			}
1883
		}
1884
		$query = "UPDATE config SET value = '39' WHERE name = 'schema_version'";
1885
		try {
1886
			$sth = $Connection->db->prepare($query);
1887
			$sth->execute();
1888
		} catch(PDOException $e) {
1889
			return "error (update schema_version) : ".$e->getMessage()."\n";
1890
		}
1891
		return $error;
1892
	}
1893
1894
	private static function update_from_39() {
1895
		global $globalDBdriver;
1896
		$Connection = new Connection();
1897
		$error = '';
1898
		if ($globalDBdriver == 'mysql') {
1899
			$query = "ALTER TABLE stats_pilot MODIFY COLUMN pilot_id varchar(255) NOT NULL";
1900
			try {
1901
				$sth = $Connection->db->prepare($query);
1902
				$sth->execute();
1903
			} catch(PDOException $e) {
1904
				return "error (change pilot_id type to varchar in stats_pilot) : ".$e->getMessage()."\n";
1905
			}
1906
			$query = "ALTER TABLE marine_identity MODIFY COLUMN mmsi varchar(255) DEFAULT NULL";
1907
			try {
1908
				$sth = $Connection->db->prepare($query);
1909
				$sth->execute();
1910
			} catch(PDOException $e) {
1911
				return "error (change mmsi type to varchar in marine_identity) : ".$e->getMessage()."\n";
1912
			}
1913
		} else {
1914
			$query = "alter table stats_pilot alter column pilot_id type varchar(255)";
1915
			try {
1916
				$sth = $Connection->db->prepare($query);
1917
				$sth->execute();
1918
			} catch(PDOException $e) {
1919
				return "error (change pilot_id type to varchar in stats_pilot) : ".$e->getMessage()."\n";
1920
			}
1921
			$query = "alter table marine_identity alter column mmsi type varchar(255)";
1922
			try {
1923
				$sth = $Connection->db->prepare($query);
1924
				$sth->execute();
1925
			} catch(PDOException $e) {
1926
				return "error (change mmsi type to varchar in marine_identity) : ".$e->getMessage()."\n";
1927
			}
1928
		}
1929
		$query = "UPDATE config SET value = '40' WHERE name = 'schema_version'";
1930
		try {
1931
			$sth = $Connection->db->prepare($query);
1932
			$sth->execute();
1933
		} catch(PDOException $e) {
1934
			return "error (update schema_version) : ".$e->getMessage()."\n";
1935
		}
1936
		return $error;
1937
	}
1938
1939
	private static function update_from_40() {
1940
		global $globalDBdriver;
1941
		$Connection = new Connection();
1942
		$error = '';
1943
		if (!$Connection->checkColumnName('source_location','last_seen')) {
1944
			$query = "ALTER TABLE source_location ADD COLUMN last_seen timestamp NULL DEFAULT NULL";
1945
			try {
1946
				$sth = $Connection->db->prepare($query);
1947
				$sth->execute();
1948
			} catch(PDOException $e) {
1949
				return "error (add column last_seen in source_location) : ".$e->getMessage()."\n";
1950
			}
1951
		}
1952
		if ($globalDBdriver == 'mysql') {
1953
			if (!$Connection->checkColumnName('source_location','location_id')) {
1954
				$query = "ALTER TABLE source_location ADD COLUMN location_id int(11) DEFAULT NULL";
1955
				try {
1956
					$sth = $Connection->db->prepare($query);
1957
					$sth->execute();
1958
				} catch(PDOException $e) {
1959
					return "error (add column location_id in source_location) : ".$e->getMessage()."\n";
1960
				}
1961
			}
1962
		} else {
1963
			if (!$Connection->checkColumnName('source_location','location_id')) {
1964
				$query = "ALTER TABLE source_location ADD COLUMN location_id integer DEFAULT NULL";
1965
				try {
1966
					$sth = $Connection->db->prepare($query);
1967
					$sth->execute();
1968
				} catch(PDOException $e) {
1969
					return "error (add column location_id in source_location) : ".$e->getMessage()."\n";
1970
				}
1971
			}
1972
		}
1973
		$query = "UPDATE config SET value = '41' WHERE name = 'schema_version'";
1974
		try {
1975
			$sth = $Connection->db->prepare($query);
1976
			$sth->execute();
1977
		} catch(PDOException $e) {
1978
			return "error (update schema_version) : ".$e->getMessage()."\n";
1979
		}
1980
		return $error;
1981
	}
1982
1983
	private static function update_from_41() {
1984
		global $globalDBdriver;
1985
		$Connection = new Connection();
1986
		$error = '';
1987
		if (!$Connection->checkColumnName('source_location','description')) {
1988
			$query = "ALTER TABLE source_location ADD COLUMN description text DEFAULT NULL";
1989
			try {
1990
				$sth = $Connection->db->prepare($query);
1991
				$sth->execute();
1992
			} catch(PDOException $e) {
1993
				return "error (add column description in source_location) : ".$e->getMessage()."\n";
1994
			}
1995
		}
1996
		$query = "UPDATE config SET value = '42' WHERE name = 'schema_version'";
1997
		try {
1998
			$sth = $Connection->db->prepare($query);
1999
			$sth->execute();
2000
		} catch(PDOException $e) {
2001
			return "error (update schema_version) : ".$e->getMessage()."\n";
2002
		}
2003
		return $error;
2004
	}
2005
2006
	private static function update_from_42() {
2007
		global $globalDBdriver;
2008
		$Connection = new Connection();
2009
		$error = '';
2010
		if (!$Connection->checkColumnName('spotter_live','real_altitude')) {
2011
			$query = "ALTER TABLE spotter_live ADD COLUMN real_altitude float DEFAULT NULL";
2012
			try {
2013
				$sth = $Connection->db->prepare($query);
2014
				$sth->execute();
2015
			} catch(PDOException $e) {
2016
				return "error (add column real_altitude in spotter_live) : ".$e->getMessage()."\n";
2017
			}
2018
		}
2019
		if (!$Connection->checkColumnName('spotter_output','real_altitude')) {
2020
			$query = "ALTER TABLE spotter_output ADD COLUMN real_altitude float DEFAULT NULL";
2021
			try {
2022
				$sth = $Connection->db->prepare($query);
2023
				$sth->execute();
2024
			} catch(PDOException $e) {
2025
				return "error (add column real_altitude in spotter_output) : ".$e->getMessage()."\n";
2026
			}
2027
		}
2028
		if (!$Connection->checkColumnName('spotter_archive_output','real_altitude')) {
2029
			$query = "ALTER TABLE spotter_archive_output ADD COLUMN real_altitude float DEFAULT NULL";
2030
			try {
2031
				$sth = $Connection->db->prepare($query);
2032
				$sth->execute();
2033
			} catch(PDOException $e) {
2034
				return "error (add column real_altitude in spotter_archive_output) : ".$e->getMessage()."\n";
2035
			}
2036
		}
2037
		if (!$Connection->checkColumnName('spotter_archive','real_altitude')) {
2038
			$query = "ALTER TABLE spotter_archive ADD COLUMN real_altitude float DEFAULT NULL";
2039
			try {
2040
				$sth = $Connection->db->prepare($query);
2041
				$sth->execute();
2042
			} catch(PDOException $e) {
2043
				return "error (add column real_altitude in spotter_archive) : ".$e->getMessage()."\n";
2044
			}
2045
		}
2046
		$query = "UPDATE config SET value = '43' WHERE name = 'schema_version'";
2047
		try {
2048
			$sth = $Connection->db->prepare($query);
2049
			$sth->execute();
2050
		} catch(PDOException $e) {
2051
			return "error (update schema_version) : ".$e->getMessage()."\n";
2052
		}
2053
		return $error;
2054
	}
2055
2056
2057
2058
    	public static function check_version($update = false) {
2059
    	    global $globalDBname;
2060
    	    $version = 0;
2061
    	    $Connection = new Connection();
2062
    	    if ($Connection->tableExists('aircraft')) {
2063
    		if (!$Connection->tableExists('config')) {
2064
    		    $version = '1';
2065
    		    if ($update) return self::update_from_1();
2066
    		    else return $version;
2067
		} else {
2068
    		    $Connection = new Connection();
2069
		    $query = "SELECT value FROM config WHERE name = 'schema_version' LIMIT 1";
2070
		    try {
2071
            		$sth = $Connection->db->prepare($query);
2072
		        $sth->execute();
2073
		    } catch(PDOException $e) {
2074
			return "error : ".$e->getMessage()."\n";
2075
    		    }
2076
    		    $result = $sth->fetch(PDO::FETCH_ASSOC);
2077
    		    if ($update) {
2078
    			if ($result['value'] == '2') {
2079
    			    $error = self::update_from_2();
2080
    			    if ($error != '') return $error;
2081
    			    else return self::check_version(true);
2082
    			} elseif ($result['value'] == '3') {
2083
    			    $error = self::update_from_3();
2084
    			    if ($error != '') return $error;
2085
    			    else return self::check_version(true);
2086
    			} elseif ($result['value'] == '4') {
2087
    			    $error = self::update_from_4();
2088
    			    if ($error != '') return $error;
2089
    			    else return self::check_version(true);
2090
    			} elseif ($result['value'] == '5') {
2091
    			    $error = self::update_from_5();
2092
    			    if ($error != '') return $error;
2093
    			    else return self::check_version(true);
2094
    			} elseif ($result['value'] == '6') {
2095
    			    $error = self::update_from_6();
2096
    			    if ($error != '') return $error;
2097
    			    else return self::check_version(true);
2098
    			} elseif ($result['value'] == '7') {
2099
    			    $error = self::update_from_7();
2100
    			    if ($error != '') return $error;
2101
    			    else return self::check_version(true);
2102
    			} elseif ($result['value'] == '8') {
2103
    			    $error = self::update_from_8();
2104
    			    if ($error != '') return $error;
2105
    			    else return self::check_version(true);
2106
    			} elseif ($result['value'] == '9') {
2107
    			    $error = self::update_from_9();
2108
    			    if ($error != '') return $error;
2109
    			    else return self::check_version(true);
2110
    			} elseif ($result['value'] == '10') {
2111
    			    $error = self::update_from_10();
2112
    			    if ($error != '') return $error;
2113
    			    else return self::check_version(true);
2114
    			} elseif ($result['value'] == '11') {
2115
    			    $error = self::update_from_11();
2116
    			    if ($error != '') return $error;
2117
    			    else return self::check_version(true);
2118
    			} elseif ($result['value'] == '12') {
2119
    			    $error = self::update_from_12();
2120
    			    if ($error != '') return $error;
2121
    			    else return self::check_version(true);
2122
    			} elseif ($result['value'] == '13') {
2123
    			    $error = self::update_from_13();
2124
    			    if ($error != '') return $error;
2125
    			    else return self::check_version(true);
2126
    			} elseif ($result['value'] == '14') {
2127
    			    $error = self::update_from_14();
2128
    			    if ($error != '') return $error;
2129
    			    else return self::check_version(true);
2130
    			} elseif ($result['value'] == '15') {
2131
    			    $error = self::update_from_15();
2132
    			    if ($error != '') return $error;
2133
    			    else return self::check_version(true);
2134
    			} elseif ($result['value'] == '16') {
2135
    			    $error = self::update_from_16();
2136
    			    if ($error != '') return $error;
2137
    			    else return self::check_version(true);
2138
    			} elseif ($result['value'] == '17') {
2139
    			    $error = self::update_from_17();
2140
    			    if ($error != '') return $error;
2141
    			    else return self::check_version(true);
2142
    			} elseif ($result['value'] == '18') {
2143
    			    $error = self::update_from_18();
2144
    			    if ($error != '') return $error;
2145
    			    else return self::check_version(true);
2146
    			} elseif ($result['value'] == '19') {
2147
    			    $error = self::update_from_19();
2148
    			    if ($error != '') return $error;
2149
    			    else return self::check_version(true);
2150
    			} elseif ($result['value'] == '20') {
2151
    			    $error = self::update_from_20();
2152
    			    if ($error != '') return $error;
2153
    			    else return self::check_version(true);
2154
    			} elseif ($result['value'] == '21') {
2155
    			    $error = self::update_from_21();
2156
    			    if ($error != '') return $error;
2157
    			    else return self::check_version(true);
2158
    			} elseif ($result['value'] == '22') {
2159
    			    $error = self::update_from_22();
2160
    			    if ($error != '') return $error;
2161
    			    else return self::check_version(true);
2162
    			} elseif ($result['value'] == '23') {
2163
    			    $error = self::update_from_23();
2164
    			    if ($error != '') return $error;
2165
    			    else return self::check_version(true);
2166
    			} elseif ($result['value'] == '24') {
2167
    			    $error = self::update_from_24();
2168
    			    if ($error != '') return $error;
2169
    			    else return self::check_version(true);
2170
    			} elseif ($result['value'] == '25') {
2171
    			    $error = self::update_from_25();
2172
    			    if ($error != '') return $error;
2173
    			    else return self::check_version(true);
2174
    			} elseif ($result['value'] == '26') {
2175
    			    $error = self::update_from_26();
2176
    			    if ($error != '') return $error;
2177
    			    else return self::check_version(true);
2178
    			} elseif ($result['value'] == '27') {
2179
    			    $error = self::update_from_27();
2180
    			    if ($error != '') return $error;
2181
    			    else return self::check_version(true);
2182
    			} elseif ($result['value'] == '28') {
2183
    			    $error = self::update_from_28();
2184
    			    if ($error != '') return $error;
2185
    			    else return self::check_version(true);
2186
    			} elseif ($result['value'] == '29') {
2187
    			    $error = self::update_from_29();
2188
    			    if ($error != '') return $error;
2189
    			    else return self::check_version(true);
2190
    			} elseif ($result['value'] == '30') {
2191
    			    $error = self::update_from_30();
2192
    			    if ($error != '') return $error;
2193
    			    else return self::check_version(true);
2194
    			} elseif ($result['value'] == '31') {
2195
    			    $error = self::update_from_31();
2196
    			    if ($error != '') return $error;
2197
    			    else return self::check_version(true);
2198
    			} elseif ($result['value'] == '32') {
2199
    			    $error = self::update_from_32();
2200
    			    if ($error != '') return $error;
2201
    			    else return self::check_version(true);
2202
    			} elseif ($result['value'] == '33') {
2203
    			    $error = self::update_from_33();
2204
    			    if ($error != '') return $error;
2205
    			    else return self::check_version(true);
2206
    			} elseif ($result['value'] == '34') {
2207
    			    $error = self::update_from_34();
2208
    			    if ($error != '') return $error;
2209
    			    else return self::check_version(true);
2210
    			} elseif ($result['value'] == '35') {
2211
    			    $error = self::update_from_35();
2212
    			    if ($error != '') return $error;
2213
    			    else return self::check_version(true);
2214
    			} elseif ($result['value'] == '36') {
2215
    			    $error = self::update_from_36();
2216
    			    if ($error != '') return $error;
2217
    			    else return self::check_version(true);
2218
    			} elseif ($result['value'] == '37') {
2219
    			    $error = self::update_from_37();
2220
    			    if ($error != '') return $error;
2221
    			    else return self::check_version(true);
2222
    			} elseif ($result['value'] == '38') {
2223
    			    $error = self::update_from_38();
2224
    			    if ($error != '') return $error;
2225
    			    else return self::check_version(true);
2226
    			} elseif ($result['value'] == '39') {
2227
    			    $error = self::update_from_39();
2228
    			    if ($error != '') return $error;
2229
    			    else return self::check_version(true);
2230
    			} elseif ($result['value'] == '40') {
2231
    			    $error = self::update_from_40();
2232
    			    if ($error != '') return $error;
2233
    			    else return self::check_version(true);
2234
    			} elseif ($result['value'] == '41') {
2235
    			    $error = self::update_from_41();
2236
    			    if ($error != '') return $error;
2237
    			    else return self::check_version(true);
2238
    			} elseif ($result['value'] == '42') {
2239
    			    $error = self::update_from_42();
2240
    			    if ($error != '') return $error;
2241
    			    else return self::check_version(true);
2242
    			} else return '';
2243
    		    }
2244
    		    else return $result['value'];
2245
		}
2246
		
2247
	    } else return $version;
2248
    	}
2249
    	
2250
}
2251
//echo update_schema::check_version();
2252
?>