diff options
author | Simon Rettberg | 2016-06-08 18:33:30 +0200 |
---|---|---|
committer | Simon Rettberg | 2016-06-08 18:33:30 +0200 |
commit | ffffab643e031524b6fdfe0c39adae1f6c8e9c4d (patch) | |
tree | 84e55c5a7ea0e02481b9f44730814ae788f05e12 /modules-available/sysconfig/install.inc.php | |
parent | [dashboard] Remove needsSchemaUpdate call (diff) | |
download | slx-admin-ffffab643e031524b6fdfe0c39adae1f6c8e9c4d.tar.gz slx-admin-ffffab643e031524b6fdfe0c39adae1f6c8e9c4d.tar.xz slx-admin-ffffab643e031524b6fdfe0c39adae1f6c8e9c4d.zip |
[install] Implement install scripts for most modules
Diffstat (limited to 'modules-available/sysconfig/install.inc.php')
-rw-r--r-- | modules-available/sysconfig/install.inc.php | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/modules-available/sysconfig/install.inc.php b/modules-available/sysconfig/install.inc.php new file mode 100644 index 00000000..0b7bbc1b --- /dev/null +++ b/modules-available/sysconfig/install.inc.php @@ -0,0 +1,90 @@ +<?php + +$res = array(); + +$res[] = tableCreate('configtgz', " + `configid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(200) NOT NULL, + `filepath` varchar(255) NOT NULL, + `status` enum('OK','OUTDATED','MISSING') NOT NULL DEFAULT 'MISSING', + PRIMARY KEY (`configid`) +"); + +$res[] = tableCreate('configtgz_module', " + `moduleid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(200) NOT NULL, + `moduletype` varchar(16) NOT NULL, + `filepath` varchar(250) NOT NULL, + `contents` text NOT NULL, + `version` int(10) unsigned NOT NULL DEFAULT '0', + `status` enum('OK','MISSING','OUTDATED') NOT NULL DEFAULT 'MISSING', + PRIMARY KEY (`moduleid`), + KEY `title` (`title`), + KEY `moduletype` (`moduletype`,`title`) +"); + +$res[] = tableCreate('configtgz_x_module', " + `configid` int(10) unsigned NOT NULL, + `moduleid` int(10) unsigned NOT NULL, + PRIMARY KEY (`configid`,`moduleid`), + KEY `moduleid` (`moduleid`) +"); + + +// Constraints +if (in_array(UPDATE_DONE, $res)) { + Database::exec("ALTER TABLE `configtgz_x_module` + ADD CONSTRAINT `configtgz_x_module_ibfk_1` FOREIGN KEY (`configid`) REFERENCES `configtgz` (`configid`) ON DELETE CASCADE, + ADD CONSTRAINT `configtgz_x_module_ibfk_2` FOREIGN KEY (`moduleid`) REFERENCES `configtgz_module` (`moduleid`)"); +} + +// Update path + +// ##### 2014-12-12 +// Rename config modules +Database::exec("UPDATE configtgz_module SET moduletype = 'Branding' WHERE moduletype = 'BRANDING'"); +Database::exec("UPDATE configtgz_module SET moduletype = 'AdAuth' WHERE moduletype = 'AD_AUTH'"); +Database::exec("UPDATE configtgz_module SET moduletype = 'CustomModule' WHERE moduletype = 'custom'"); + +// ####################### +// ##### 2015-01-16 +// Extend config module db tables +tableDropColumn('configtgz_module', 'haschanged'); +if (!tableHasColumn('configtgz_module', 'version')) { + if (Database::exec("ALTER TABLE `configtgz_module` ADD `version` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0'") === false) { + finalResponse(UPDATE_FAILED, 'Could not add version to configtgz_module: ' . Database::lastError()); + } + $res[] = UPDATE_DONE; +} +if (!tableHasColumn('configtgz_module', 'status')) { + if (Database::exec("ALTER TABLE `configtgz_module` ADD `status` ENUM( 'OK', 'MISSING', 'OUTDATED' ) NOT NULL DEFAULT 'MISSING'") === false) { + finalResponse(UPDATE_FAILED, 'Could not add status to configtgz_module: ' . Database::lastError()); + } + $res[] = UPDATE_DONE; +} +if (!tableHasColumn('configtgz', 'status')) { + if (Database::exec("ALTER TABLE `configtgz` ADD `status` ENUM( 'OK', 'OUTDATED', 'MISSING' ) NOT NULL DEFAULT 'MISSING'") === false) { + finalResponse(UPDATE_FAILED, 'Could not add status to configtgz: ' . Database::lastError()); + } + $res[] = UPDATE_DONE; +} + +// ----- rebuild AD configs ------ +// TEMPORARY HACK; Rebuild AD configs.. move somewhere else +Module::isAvailable('sysconfig'); +$list = array_merge(ConfigModule::getAll('AdAuth'), ConfigModule::getAll('LdapAuth')); +if ($list === false) { + EventLog::warning('Could not regenerate AD/LDAP configs - please do so manually'); +} else { + foreach ($list as $ad) { + $ad->generate(false); + } +} + +// Create response for browser + +if (in_array(UPDATE_DONE, $res)) { + finalResponse(UPDATE_DONE, 'Tables created successfully'); +} + +finalResponse(UPDATE_NOOP, 'Everything already up to date'); |