Completed
Push — master ( 732377...29a1d8 )
by Yannick
06:33
created

update_schema::update_from_9()   B

Complexity

Conditions 4
Paths 6

Size

Total Lines 24
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 18
nc 6
nop 0
dl 0
loc 24
rs 8.6845
c 0
b 0
f 0
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','type')) {
602
    			$query = "ALTER TABLE `stats_airport` ADD `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;ALTER TABLE `spotter_live` 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_output','source_name')) {
653
			// Add source_name to spotter_output, spotter_live, spotter_archive, spotter_archive_output
654
    			$query = "ALTER TABLE `spotter_output` ADD `source_name` VARCHAR(255) NULL AFTER `format_source`;ALTER TABLE `spotter_live` ADD `source_name` VARCHAR(255) NULL AFTER `format_source`;ALTER TABLE `spotter_archive_output` ADD `source_name` VARCHAR(255) NULL AFTER `format_source`;ALTER TABLE `spotter_archive` ADD `source_name` VARCHAR(255) NULL AFTER `format_source`;";
655
			try {
656
				$sth = $Connection->db->prepare($query);
657
				$sth->execute();
658
			} catch(PDOException $e) {
659
				return "error (add source_name column) : ".$e->getMessage()."\n";
660
    			}
661
    		}
662
		if ($error != '') return $error;
663
		$query = "UPDATE `config` SET `value` = '20' WHERE `name` = 'schema_version'";
664
        	try {
665
            	    $sth = $Connection->db->prepare($query);
666
		    $sth->execute();
667
    		} catch(PDOException $e) {
668
		    return "error (update schema_version) : ".$e->getMessage()."\n";
669
    		}
670
		return $error;
671
	}
672
673
	private static function update_from_20() {
674
		global $globalIVAO, $globalVATSIM, $globalphpVMS;
675
    		$Connection = new Connection();
676
		$error = '';
677
    		// Update airline table
678
    		if (!$globalIVAO && !$globalVATSIM && !$globalphpVMS) {
679
			$error .= create_db::import_file('../db/airlines.sql');
680
			if ($error != '') return 'Import airlines.sql : '.$error;
681
		}
682
		if (!$Connection->checkColumnName('aircraft_modes','type_flight')) {
683
			// Add column over_country
684
    			$query = "ALTER TABLE `aircraft_modes` ADD `type_flight` VARCHAR(50) NULL DEFAULT NULL;";
685
        		try {
686
				$sth = $Connection->db->prepare($query);
687
				$sth->execute();
688
			} catch(PDOException $e) {
689
				return "error (add over_country) : ".$e->getMessage()."\n";
690
    			}
691
    		}
692
		if ($error != '') return $error;
693
		/*
694
    		if (!$globalIVAO && !$globalVATSIM && !$globalphpVMS) {
695
			// Force update ModeS (this will put type_flight data
696
			$error .= update_db::update_ModeS;
697
			if ($error != '') return "error (update ModeS) : ".$error;
698
		}
699
		*/
700
		$query = "UPDATE `config` SET `value` = '21' WHERE `name` = 'schema_version'";
701
        	try {
702
            	    $sth = $Connection->db->prepare($query);
703
		    $sth->execute();
704
    		} catch(PDOException $e) {
705
		    return "error (update schema_version) : ".$e->getMessage()."\n";
706
    		}
707
		return $error;
708
	}
709
710
	private static function update_from_21() {
711
    		$Connection = new Connection();
712
		$error = '';
713
		// Rename type to stats_type
714
		$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);";
715
        	try {
716
            	    $sth = $Connection->db->prepare($query);
717
		    $sth->execute();
718
    		} catch(PDOException $e) {
719
		    return "error (rename type to stats_type on stats*) : ".$e->getMessage()."\n";
720
    		}
721
		if ($error != '') return $error;
722
		$query = "UPDATE `config` SET `value` = '22' WHERE `name` = 'schema_version'";
723
        	try {
724
            	    $sth = $Connection->db->prepare($query);
725
		    $sth->execute();
726
    		} catch(PDOException $e) {
727
		    return "error (update schema_version) : ".$e->getMessage()."\n";
728
    		}
729
		return $error;
730
	}
731
732
	private static function update_from_22() {
733
		global $globalDBdriver;
734
    		$Connection = new Connection();
735
		$error = '';
736
		// Add table stats polar
737
    		if (!$Connection->tableExists('stats_source')) {
738
			if ($globalDBdriver == 'mysql') {
739
    				$error .= create_db::import_file('../db/stats_source.sql');
740
			} else {
741
				$error .= create_db::import_file('../db/pgsql/stats_source.sql');
742
			}
743
			if ($error != '') return $error;
744
		}
745
		$query = "UPDATE config SET value = '23' WHERE name = 'schema_version'";
746
        	try {
747
            	    $sth = $Connection->db->prepare($query);
748
		    $sth->execute();
749
    		} catch(PDOException $e) {
750
		    return "error (update schema_version) : ".$e->getMessage()."\n";
751
    		}
752
		return $error;
753
	}
754
755
756
	private static function update_from_23() {
757
		global $globalDBdriver;
758
    		$Connection = new Connection();
759
		$error = '';
760
		// Add table stats polar
761
		if ($globalDBdriver == 'mysql') {
0 ignored issues
show
Unused Code introduced by
This if statement is empty and can be removed.

This check looks for the bodies of if statements that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.

These if bodies can be removed. If you have an empty if but statements in the else branch, consider inverting the condition.

if (rand(1, 6) > 3) {
//print "Check failed";
} else {
    print "Check succeeded";
}

could be turned into

if (rand(1, 6) <= 3) {
    print "Check succeeded";
}

This is much more concise to read.

Loading history...
762
			//$error .= create_db::import_file('../db/stats_source.sql');
763
		} else {
764
			//$error .= create_db::import_file('../db/pgsql/stats_source.sql');
765
			$query = "create index flightaware_id_idx ON spotter_archive USING btree(flightaware_id)";
766
        		try {
767
		    		$sth = $Connection->db->prepare($query);
768
				$sth->execute();
769
			} catch(PDOException $e) {
770
				return "error (create index on spotter_archive) : ".$e->getMessage()."\n";
771
			}
772
		}
773
    		$query = "";
774
        	try {
775
			$sth = $Connection->db->prepare($query);
776
			$sth->execute();
777
		} catch(PDOException $e) {
778
			return "error (create index on spotter_archive) : ".$e->getMessage()."\n";
779
		}
780
781
		if ($error != '') return $error;
782
		$query = "UPDATE config SET value = '24' WHERE name = 'schema_version'";
783
        	try {
784
            	    $sth = $Connection->db->prepare($query);
785
		    $sth->execute();
786
    		} catch(PDOException $e) {
787
		    return "error (update schema_version) : ".$e->getMessage()."\n";
788
    		}
789
		return $error;
790
	}
791
792
793
794
    	public static function check_version($update = false) {
795
    	    global $globalDBname;
796
    	    $version = 0;
797
    	    $Connection = new Connection();
798
    	    if ($Connection->tableExists('aircraft')) {
799
    		if (!$Connection->tableExists('config')) {
800
    		    $version = '1';
801
    		    if ($update) return self::update_from_1();
802
    		    else return $version;
803
		} else {
804
    		    $Connection = new Connection();
805
		    $query = "SELECT value FROM config WHERE name = 'schema_version' LIMIT 1";
806
		    try {
807
            		$sth = $Connection->db->prepare($query);
808
		        $sth->execute();
809
		    } catch(PDOException $e) {
810
			return "error : ".$e->getMessage()."\n";
811
    		    }
812
    		    $result = $sth->fetch(PDO::FETCH_ASSOC);
813
    		    if ($update) {
814
    			if ($result['value'] == '2') {
815
    			    $error = self::update_from_2();
816
    			    if ($error != '') return $error;
817
    			    else return self::check_version(true);
818
    			} elseif ($result['value'] == '3') {
819
    			    $error = self::update_from_3();
820
    			    if ($error != '') return $error;
821
    			    else return self::check_version(true);
822
    			} elseif ($result['value'] == '4') {
823
    			    $error = self::update_from_4();
824
    			    if ($error != '') return $error;
825
    			    else return self::check_version(true);
826
    			} elseif ($result['value'] == '5') {
827
    			    $error = self::update_from_5();
828
    			    if ($error != '') return $error;
829
    			    else return self::check_version(true);
830
    			} elseif ($result['value'] == '6') {
831
    			    $error = self::update_from_6();
832
    			    if ($error != '') return $error;
833
    			    else return self::check_version(true);
834
    			} elseif ($result['value'] == '7') {
835
    			    $error = self::update_from_7();
836
    			    if ($error != '') return $error;
837
    			    else return self::check_version(true);
838
    			} elseif ($result['value'] == '8') {
839
    			    $error = self::update_from_8();
840
    			    if ($error != '') return $error;
841
    			    else return self::check_version(true);
842
    			} elseif ($result['value'] == '9') {
843
    			    $error = self::update_from_9();
844
    			    if ($error != '') return $error;
845
    			    else return self::check_version(true);
846
    			} elseif ($result['value'] == '10') {
847
    			    $error = self::update_from_10();
848
    			    if ($error != '') return $error;
849
    			    else return self::check_version(true);
850
    			} elseif ($result['value'] == '11') {
851
    			    $error = self::update_from_11();
852
    			    if ($error != '') return $error;
853
    			    else return self::check_version(true);
854
    			} elseif ($result['value'] == '12') {
855
    			    $error = self::update_from_12();
856
    			    if ($error != '') return $error;
857
    			    else return self::check_version(true);
858
    			} elseif ($result['value'] == '13') {
859
    			    $error = self::update_from_13();
860
    			    if ($error != '') return $error;
861
    			    else return self::check_version(true);
862
    			} elseif ($result['value'] == '14') {
863
    			    $error = self::update_from_14();
864
    			    if ($error != '') return $error;
865
    			    else return self::check_version(true);
866
    			} elseif ($result['value'] == '15') {
867
    			    $error = self::update_from_15();
868
    			    if ($error != '') return $error;
869
    			    else return self::check_version(true);
870
    			} elseif ($result['value'] == '16') {
871
    			    $error = self::update_from_16();
872
    			    if ($error != '') return $error;
873
    			    else return self::check_version(true);
874
    			} elseif ($result['value'] == '17') {
875
    			    $error = self::update_from_17();
876
    			    if ($error != '') return $error;
877
    			    else return self::check_version(true);
878
    			} elseif ($result['value'] == '18') {
879
    			    $error = self::update_from_18();
880
    			    if ($error != '') return $error;
881
    			    else return self::check_version(true);
882
    			} elseif ($result['value'] == '19') {
883
    			    $error = self::update_from_19();
884
    			    if ($error != '') return $error;
885
    			    else return self::check_version(true);
886
    			} elseif ($result['value'] == '20') {
887
    			    $error = self::update_from_20();
888
    			    if ($error != '') return $error;
889
    			    else return self::check_version(true);
890
    			} elseif ($result['value'] == '21') {
891
    			    $error = self::update_from_21();
892
    			    if ($error != '') return $error;
893
    			    else return self::check_version(true);
894
    			} elseif ($result['value'] == '22') {
895
    			    $error = self::update_from_22();
896
    			    if ($error != '') return $error;
897
    			    else return self::check_version(true);
898
    			} else return '';
899
    		    }
900
    		    else return $result['value'];
901
		}
902
		
903
	    } else return $version;
904
    	}
905
    	
906
}
907
//echo update_schema::check_version();
908
?>