summaryrefslogtreecommitdiffstats
path: root/modules-available/locations/install.inc.php
blob: 9a23282991099c5ca02ede01aa1c0478c1c1a817 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php

$res = array();

$res[] = tableCreate('setting_location', '
	`locationid` INT(11) NOT NULL,
	`setting` VARCHAR(28) NOT NULL,
	`value` TEXT NOT NULL,
	`displayvalue` TEXT NOT NULL,
	PRIMARY KEY (`locationid`,`setting`),
	KEY `setting` (`setting`)
');

$res[] = tableCreate('location', '
	`locationid` INT(11) NOT NULL AUTO_INCREMENT,
	`parentlocationid` INT(11) NOT NULL,
	`locationname` VARCHAR(100) NOT NULL,
	PRIMARY KEY (`locationid`),
	KEY `locationname` (`locationname`),
	KEY `parentlocationid` (`parentlocationid`)
');

$res[] = tableCreate('subnet', '
	`subnetid` INT(11) NOT NULL AUTO_INCREMENT,
	`startaddr` DECIMAL(39,0) UNSIGNED NOT NULL,
	`endaddr` DECIMAL(39,0) UNSIGNED NOT NULL,
	`locationid` INT(11) NOT NULL,
	PRIMARY KEY (`subnetid`),
	KEY `startaddr` (`startaddr`,`endaddr`),
	KEY `locationid` (`locationid`)
');

$res[] = tableAddConstraint('subnet', 'locationid', 'location', 'locationid',
	'ON UPDATE CASCADE ON DELETE CASCADE');
$res[] = tableAddConstraint('setting_location', 'locationid', 'location', 'locationid',
	'ON UPDATE CASCADE ON DELETE CASCADE');

// Update

// 2020-07-14 Add openingtime column to location table, then migrate data and delete the column from locationinfo

if (!tableHasColumn('location', 'openingtime')) {
	if (Database::exec("ALTER TABLE location ADD openingtime BLOB") === false) {
		finalResponse(UPDATE_FAILED, 'Could not create openingtime column');
	} else {
		if (Module::get('locationinfo') !== false) {
			if (Database::exec(
					"UPDATE location, locationinfo_locationconfig 
			SET location.openingtime = locationinfo_locationconfig.openingtime
			WHERE location.locationid = locationinfo_locationconfig.locationid") === false) {
				finalResponse(UPDATE_FAILED, 'Could not migrate openingtime data from table to table');
			}
			if (Database::exec("ALTER TABLE locationinfo_locationconfig DROP COLUMN openingtime") === false) {
				finalResponse(UPDATE_FAILED, 'Could not delete openingtime column');
			}
			$res[] = UPDATE_DONE;
		}
	}
}

// Create response for browser
responseFromArray($res);