summaryrefslogtreecommitdiffstats
path: root/modules-available/sysconfig/install.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2016-06-08 18:33:30 +0200
committerSimon Rettberg2016-06-08 18:33:30 +0200
commitffffab643e031524b6fdfe0c39adae1f6c8e9c4d (patch)
tree84e55c5a7ea0e02481b9f44730814ae788f05e12 /modules-available/sysconfig/install.inc.php
parent[dashboard] Remove needsSchemaUpdate call (diff)
downloadslx-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.php90
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');