summaryrefslogtreecommitdiffstats
path: root/modules-available/runmode/install.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/runmode/install.inc.php')
-rw-r--r--modules-available/runmode/install.inc.php46
1 files changed, 46 insertions, 0 deletions
diff --git a/modules-available/runmode/install.inc.php b/modules-available/runmode/install.inc.php
new file mode 100644
index 00000000..e2b1ed0f
--- /dev/null
+++ b/modules-available/runmode/install.inc.php
@@ -0,0 +1,46 @@
+<?php
+
+$res = array();
+
+$res[] = tableCreate('runmode', "
+ `machineuuid` char(36) CHARACTER SET ascii NOT NULL,
+ `module` varchar(30) CHARACTER SET ascii NOT NULL,
+ `modeid` varchar(60) CHARACTER SET ascii NOT NULL,
+ `modedata` blob DEFAULT NULL,
+ `isclient` bool DEFAULT '1',
+ PRIMARY KEY (`machineuuid`),
+ KEY `module` (`module`,`modeid`)
+");
+
+if (!tableExists('machine')) {
+ // Cannot add constraint yet
+ $res[] = UPDATE_RETRY;
+} else {
+ $c = tableGetContraints('runmode', 'machineuuid', 'machine', 'machineuuid');
+ if ($c === false)
+ finalResponse(UPDATE_FAILED, 'Cannot get constraints of runmode table: ' . Database::lastError());
+ if (empty($c)) {
+ $alter = Database::exec('ALTER TABLE runmode ADD FOREIGN KEY (machineuuid) REFERENCES machine (machineuuid)
+ ON DELETE CASCADE ON UPDATE CASCADE');
+ if ($alter === false)
+ finalResponse(UPDATE_FAILED, 'Cannot add machineuuid constraint to runmode table: ' . Database::lastError());
+ $res[] = UPDATE_DONE;
+ }
+}
+
+if (!tableHasColumn('runmode', 'isclient')) {
+ $ret = Database::exec("ALTER TABLE runmode ADD COLUMN isclient bool DEFAULT '1'");
+ if ($ret === false) {
+ finalResponse(UPDATE_FAILED, 'Could not add lastchange field');
+ } elseif ($ret > 0) {
+ $ret[] = UPDATE_DONE;
+ }
+}
+
+// Create response for browser
+
+if (in_array(UPDATE_DONE, $res)) {
+ finalResponse(UPDATE_DONE, 'Tables created successfully');
+}
+
+finalResponse(UPDATE_NOOP, 'Everything already up to date'); \ No newline at end of file