diff options
Diffstat (limited to 'modules-available/main/install.inc.php')
-rw-r--r-- | modules-available/main/install.inc.php | 76 |
1 files changed, 71 insertions, 5 deletions
diff --git a/modules-available/main/install.inc.php b/modules-available/main/install.inc.php index ec8554fd..69c0da8f 100644 --- a/modules-available/main/install.inc.php +++ b/modules-available/main/install.inc.php @@ -21,17 +21,20 @@ $res[] = tableCreate('permission', " $res[] = tableCreate('property', " `name` varchar(50) NOT NULL, `dateline` int(10) unsigned NOT NULL DEFAULT '0', - `value` text NOT NULL, + `value` mediumblob NOT NULL, PRIMARY KEY (`name`), KEY `dateline` (`dateline`) "); $res[] = tableCreate('property_list', " `name` varchar(50) NOT NULL, + `subkey` int(10) unsigned NOT NULL AUTO_INCREMENT, `dateline` int(10) unsigned NOT NULL DEFAULT '0', - `value` text NOT NULL, + `value` mediumblob NOT NULL, KEY (`name`), - KEY `dateline` (`dateline`) + KEY `dateline` (`dateline`), + KEY (`subkey`), + UNIQUE KEY `compound` (`name`, `subkey`) "); $res[] = tableCreate('user', " @@ -48,13 +51,50 @@ $res[] = tableCreate('user', " UNIQUE KEY `login` (`login`) "); +$res[] = tableCreate('session', " + `sid` char(50) CHARACTER SET ascii COLLATE ascii_bin NOT NULL, + `userid` int(10) unsigned NOT NULL, + `dateline` int(10) unsigned NOT NULL DEFAULT '0', + `lastip` varchar(45) CHARACTER SET ascii COLLATE ascii_bin NOT NULL, + `fixedip` tinyint(1) unsigned NOT NULL DEFAULT '0', + `data` blob NOT NULL, + PRIMARY KEY (`sid`), + KEY `dateline` (`dateline`) +"); + +$res[] = tableCreate('mail_queue', " + `mailid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `rcpt` varchar(200) NOT NULL, + `subject` varchar(500) NOT NULL, + `body` blob NOT NULL, + `dateline` int(10) unsigned NOT NULL, + `configid` int(10) unsigned NOT NULL, + `nexttry` int(10) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`mailid`), + KEY (`configid`), + KEY (`nexttry`) +"); + +$res[] = tableCreate('mail_config', " + `configid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `host` varchar(100) NOT NULL, + `port` smallint(5) UNSIGNED NOT NULL, + `ssl` ENUM('FORCE_NONE', 'NONE', 'IMPLICIT', 'EXPLICIT') NOT NULL, + `senderaddress` varchar(100) NOT NULL, + `replyto` varchar(100) NOT NULL, + `username` varchar(100) NOT NULL, + `password` varchar(100) NOT NULL, + PRIMARY KEY (`configid`) +"); + // Update path // ####################### // ##### 2014-05-28 // Add dateline field to property table if (!tableHasColumn('property', 'dateline')) { - Database::exec("ALTER TABLE `property` ADD `dateline` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `name` , ADD INDEX ( `dateline` )"); + Database::exec("ALTER TABLE `property` ADD `dateline` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `name`, + ADD INDEX ( `dateline` )"); } // ####################### @@ -75,11 +115,34 @@ if (!tableHasColumn('callback', 'args')) { // ####################### // ##### 2018-03-19 -// In preparation for LDAP/AD auth: Column to rembember origin server +// In preparation for LDAP/AD auth: Column to remember origin server if (!tableHasColumn('user', 'serverid')) { Database::exec("ALTER TABLE `user` ADD `serverid` int(10) unsigned NULL DEFAULT NULL"); } +// ####################### +// ##### 2022-07-04 +// Add subkey to property_list, make value mediumblob instead of text +if (!tableHasColumn('property_list', 'subkey')) { + $ret = Database::exec("ALTER TABLE property_list + ADD COLUMN `subkey` int(10) unsigned NOT NULL AUTO_INCREMENT AFTER `name`, + ADD KEY (`subkey`), + ADD UNIQUE KEY `compound` (`name`, `subkey`)"); + if ($ret === false) { + finalResponse(UPDATE_FAILED, 'Cannot add subkey to property_list: ' . Database::lastError()); + } + $res[] = UPDATE_DONE; +} +foreach (['property', 'property_list'] as $table) { + if (stripos(tableColumnType($table, 'value'), 'mediumblob') === false) { + $ret = Database::exec("ALTER TABLE `$table` MODIFY `value` mediumblob NOT NULL"); + if ($ret === false) { + finalResponse(UPDATE_FAILED, "Cannot change value column of $table to mediumblob: " . Database::lastError()); + } + $res[] = UPDATE_DONE; + } +} + // Make sure that if any users exist, one of the has UID=1, otherwise if the permission module is // used we'd lock out everyone $someUser = Database::queryFirst('SELECT userid FROM user ORDER BY userid ASC LIMIT 1'); @@ -87,6 +150,9 @@ if ($someUser !== false && (int)$someUser['userid'] !== 1) { Database::exec('UPDATE user SET userid = 1 WHERE userid = :oldid', ['oldid' => $someUser['userid']]); } +$res[] = tableAddConstraint('mail_queue', 'configid', 'mail_config', 'configid', + 'ON UPDATE CASCADE ON DELETE CASCADE'); + // Create response for browser if (in_array(UPDATE_DONE, $res)) { |