Completed
Push — master ( 118bb3...d652ce )
by Yannick
29:38
created

update_schema::update_from_37()   F

Complexity

Conditions 25
Paths 960

Size

Total Lines 75
Code Lines 60

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 25
eloc 60
nc 960
nop 0
dl 0
loc 75
rs 2.6666
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;
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'";
0 ignored issues
show
Bug introduced by
The variable $globalDBname does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
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
1895
    	public static function check_version($update = false) {
1896
    	    global $globalDBname;
1897
    	    $version = 0;
1898
    	    $Connection = new Connection();
1899
    	    if ($Connection->tableExists('aircraft')) {
1900
    		if (!$Connection->tableExists('config')) {
1901
    		    $version = '1';
1902
    		    if ($update) return self::update_from_1();
1903
    		    else return $version;
1904
		} else {
1905
    		    $Connection = new Connection();
1906
		    $query = "SELECT value FROM config WHERE name = 'schema_version' LIMIT 1";
1907
		    try {
1908
            		$sth = $Connection->db->prepare($query);
1909
		        $sth->execute();
1910
		    } catch(PDOException $e) {
1911
			return "error : ".$e->getMessage()."\n";
1912
    		    }
1913
    		    $result = $sth->fetch(PDO::FETCH_ASSOC);
1914
    		    if ($update) {
1915
    			if ($result['value'] == '2') {
1916
    			    $error = self::update_from_2();
1917
    			    if ($error != '') return $error;
1918
    			    else return self::check_version(true);
1919
    			} elseif ($result['value'] == '3') {
1920
    			    $error = self::update_from_3();
1921
    			    if ($error != '') return $error;
1922
    			    else return self::check_version(true);
1923
    			} elseif ($result['value'] == '4') {
1924
    			    $error = self::update_from_4();
1925
    			    if ($error != '') return $error;
1926
    			    else return self::check_version(true);
1927
    			} elseif ($result['value'] == '5') {
1928
    			    $error = self::update_from_5();
1929
    			    if ($error != '') return $error;
1930
    			    else return self::check_version(true);
1931
    			} elseif ($result['value'] == '6') {
1932
    			    $error = self::update_from_6();
1933
    			    if ($error != '') return $error;
1934
    			    else return self::check_version(true);
1935
    			} elseif ($result['value'] == '7') {
1936
    			    $error = self::update_from_7();
1937
    			    if ($error != '') return $error;
1938
    			    else return self::check_version(true);
1939
    			} elseif ($result['value'] == '8') {
1940
    			    $error = self::update_from_8();
1941
    			    if ($error != '') return $error;
1942
    			    else return self::check_version(true);
1943
    			} elseif ($result['value'] == '9') {
1944
    			    $error = self::update_from_9();
1945
    			    if ($error != '') return $error;
1946
    			    else return self::check_version(true);
1947
    			} elseif ($result['value'] == '10') {
1948
    			    $error = self::update_from_10();
1949
    			    if ($error != '') return $error;
1950
    			    else return self::check_version(true);
1951
    			} elseif ($result['value'] == '11') {
1952
    			    $error = self::update_from_11();
1953
    			    if ($error != '') return $error;
1954
    			    else return self::check_version(true);
1955
    			} elseif ($result['value'] == '12') {
1956
    			    $error = self::update_from_12();
1957
    			    if ($error != '') return $error;
1958
    			    else return self::check_version(true);
1959
    			} elseif ($result['value'] == '13') {
1960
    			    $error = self::update_from_13();
1961
    			    if ($error != '') return $error;
1962
    			    else return self::check_version(true);
1963
    			} elseif ($result['value'] == '14') {
1964
    			    $error = self::update_from_14();
1965
    			    if ($error != '') return $error;
1966
    			    else return self::check_version(true);
1967
    			} elseif ($result['value'] == '15') {
1968
    			    $error = self::update_from_15();
1969
    			    if ($error != '') return $error;
1970
    			    else return self::check_version(true);
1971
    			} elseif ($result['value'] == '16') {
1972
    			    $error = self::update_from_16();
1973
    			    if ($error != '') return $error;
1974
    			    else return self::check_version(true);
1975
    			} elseif ($result['value'] == '17') {
1976
    			    $error = self::update_from_17();
1977
    			    if ($error != '') return $error;
1978
    			    else return self::check_version(true);
1979
    			} elseif ($result['value'] == '18') {
1980
    			    $error = self::update_from_18();
1981
    			    if ($error != '') return $error;
1982
    			    else return self::check_version(true);
1983
    			} elseif ($result['value'] == '19') {
1984
    			    $error = self::update_from_19();
1985
    			    if ($error != '') return $error;
1986
    			    else return self::check_version(true);
1987
    			} elseif ($result['value'] == '20') {
1988
    			    $error = self::update_from_20();
1989
    			    if ($error != '') return $error;
1990
    			    else return self::check_version(true);
1991
    			} elseif ($result['value'] == '21') {
1992
    			    $error = self::update_from_21();
1993
    			    if ($error != '') return $error;
1994
    			    else return self::check_version(true);
1995
    			} elseif ($result['value'] == '22') {
1996
    			    $error = self::update_from_22();
1997
    			    if ($error != '') return $error;
1998
    			    else return self::check_version(true);
1999
    			} elseif ($result['value'] == '23') {
2000
    			    $error = self::update_from_23();
2001
    			    if ($error != '') return $error;
2002
    			    else return self::check_version(true);
2003
    			} elseif ($result['value'] == '24') {
2004
    			    $error = self::update_from_24();
2005
    			    if ($error != '') return $error;
2006
    			    else return self::check_version(true);
2007
    			} elseif ($result['value'] == '25') {
2008
    			    $error = self::update_from_25();
2009
    			    if ($error != '') return $error;
2010
    			    else return self::check_version(true);
2011
    			} elseif ($result['value'] == '26') {
2012
    			    $error = self::update_from_26();
2013
    			    if ($error != '') return $error;
2014
    			    else return self::check_version(true);
2015
    			} elseif ($result['value'] == '27') {
2016
    			    $error = self::update_from_27();
2017
    			    if ($error != '') return $error;
2018
    			    else return self::check_version(true);
2019
    			} elseif ($result['value'] == '28') {
2020
    			    $error = self::update_from_28();
2021
    			    if ($error != '') return $error;
2022
    			    else return self::check_version(true);
2023
    			} elseif ($result['value'] == '29') {
2024
    			    $error = self::update_from_29();
2025
    			    if ($error != '') return $error;
2026
    			    else return self::check_version(true);
2027
    			} elseif ($result['value'] == '30') {
2028
    			    $error = self::update_from_30();
2029
    			    if ($error != '') return $error;
2030
    			    else return self::check_version(true);
2031
    			} elseif ($result['value'] == '31') {
2032
    			    $error = self::update_from_31();
2033
    			    if ($error != '') return $error;
2034
    			    else return self::check_version(true);
2035
    			} elseif ($result['value'] == '32') {
2036
    			    $error = self::update_from_32();
2037
    			    if ($error != '') return $error;
2038
    			    else return self::check_version(true);
2039
    			} elseif ($result['value'] == '33') {
2040
    			    $error = self::update_from_33();
2041
    			    if ($error != '') return $error;
2042
    			    else return self::check_version(true);
2043
    			} elseif ($result['value'] == '34') {
2044
    			    $error = self::update_from_34();
2045
    			    if ($error != '') return $error;
2046
    			    else return self::check_version(true);
2047
    			} elseif ($result['value'] == '35') {
2048
    			    $error = self::update_from_35();
2049
    			    if ($error != '') return $error;
2050
    			    else return self::check_version(true);
2051
    			} elseif ($result['value'] == '36') {
2052
    			    $error = self::update_from_36();
2053
    			    if ($error != '') return $error;
2054
    			    else return self::check_version(true);
2055
    			} elseif ($result['value'] == '37') {
2056
    			    $error = self::update_from_37();
2057
    			    if ($error != '') return $error;
2058
    			    else return self::check_version(true);
2059
    			} elseif ($result['value'] == '38') {
2060
    			    $error = self::update_from_38();
2061
    			    if ($error != '') return $error;
2062
    			    else return self::check_version(true);
2063
    			} else return '';
2064
    		    }
2065
    		    else return $result['value'];
2066
		}
2067
		
2068
	    } else return $version;
2069
    	}
2070
    	
2071
}
2072
//echo update_schema::check_version();
2073
?>