|
|
@ -331,7 +331,11 @@ function db_query_parsed($sql, $ignore_errors = 0, $attach_mysql = "") {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param string $table
|
|
|
|
|
|
|
|
* @param string $index
|
|
|
|
|
|
|
|
* @return string
|
|
|
|
|
|
|
|
*/
|
|
|
|
function _drop_index($table, $index) {
|
|
|
|
function _drop_index($table, $index) {
|
|
|
|
global $CONF;
|
|
|
|
global $CONF;
|
|
|
|
$table = table_by_key($table);
|
|
|
|
$table = table_by_key($table);
|
|
|
@ -346,6 +350,12 @@ function _drop_index($table, $index) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return string
|
|
|
|
|
|
|
|
* @param string $table
|
|
|
|
|
|
|
|
* @param string $indexname
|
|
|
|
|
|
|
|
* @param string $fieldlist
|
|
|
|
|
|
|
|
*/
|
|
|
|
function _add_index($table, $indexname, $fieldlist) {
|
|
|
|
function _add_index($table, $indexname, $fieldlist) {
|
|
|
|
global $CONF;
|
|
|
|
global $CONF;
|
|
|
|
$table = table_by_key($table);
|
|
|
|
$table = table_by_key($table);
|
|
|
@ -362,6 +372,9 @@ function _add_index($table, $indexname, $fieldlist) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1_mysql() {
|
|
|
|
function upgrade_1_mysql() {
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# creating the tables in this very old layout (pre 2.1) causes trouble if the MySQL charset is not latin1 (multibyte vs. index length)
|
|
|
|
# creating the tables in this very old layout (pre 2.1) causes trouble if the MySQL charset is not latin1 (multibyte vs. index length)
|
|
|
@ -469,6 +482,9 @@ function upgrade_1_mysql() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_2_mysql() {
|
|
|
|
function upgrade_2_mysql() {
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# updating the tables in this very old layout (pre 2.1) causes trouble if the MySQL charset is not latin1 (multibyte vs. index length)
|
|
|
|
# updating the tables in this very old layout (pre 2.1) causes trouble if the MySQL charset is not latin1 (multibyte vs. index length)
|
|
|
@ -489,6 +505,9 @@ function upgrade_2_mysql() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_2_pgsql() {
|
|
|
|
function upgrade_2_pgsql() {
|
|
|
|
if (!_pgsql_object_exists(table_by_key('domain'))) {
|
|
|
|
if (!_pgsql_object_exists(table_by_key('domain'))) {
|
|
|
|
db_query_parsed("
|
|
|
|
db_query_parsed("
|
|
|
@ -614,6 +633,9 @@ function upgrade_2_pgsql() {
|
|
|
|
db_query_parsed("ALTER TABLE $table_domain ADD COLUMN backupmx BOOLEAN DEFAULT false", true);
|
|
|
|
db_query_parsed("ALTER TABLE $table_domain ADD COLUMN backupmx BOOLEAN DEFAULT false", true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_3_mysql() {
|
|
|
|
function upgrade_3_mysql() {
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# updating the tables in this very old layout (pre 2.1) causes trouble if the MySQL charset is not latin1 (multibyte vs. index length)
|
|
|
|
# updating the tables in this very old layout (pre 2.1) causes trouble if the MySQL charset is not latin1 (multibyte vs. index length)
|
|
|
@ -687,6 +709,9 @@ function upgrade_3_mysql() {
|
|
|
|
db_query_parsed("UPDATE $table_vacation SET domain=SUBSTRING_INDEX(email, '@', -1) WHERE email=email;");
|
|
|
|
db_query_parsed("UPDATE $table_vacation SET domain=SUBSTRING_INDEX(email, '@', -1) WHERE email=email;");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_4_mysql() { # MySQL only
|
|
|
|
function upgrade_4_mysql() { # MySQL only
|
|
|
|
# changes between 2.1 and moving to sourceforge
|
|
|
|
# changes between 2.1 and moving to sourceforge
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
@ -697,6 +722,7 @@ function upgrade_4_mysql() { # MySQL only
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Changes between 2.1 and moving to sf.net
|
|
|
|
* Changes between 2.1 and moving to sf.net
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function upgrade_4_pgsql() {
|
|
|
|
function upgrade_4_pgsql() {
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
@ -793,6 +819,7 @@ function upgrade_4_pgsql() {
|
|
|
|
* changes compared to DATABASE_MYSQL.txt:
|
|
|
|
* changes compared to DATABASE_MYSQL.txt:
|
|
|
|
* - removed MySQL user and database creation
|
|
|
|
* - removed MySQL user and database creation
|
|
|
|
* - removed creation of default superadmin
|
|
|
|
* - removed creation of default superadmin
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function upgrade_5_mysql() {
|
|
|
|
function upgrade_5_mysql() {
|
|
|
|
db_query_parsed("
|
|
|
|
db_query_parsed("
|
|
|
@ -891,6 +918,7 @@ function upgrade_5_mysql() {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* drop useless indicies (already available as primary key)
|
|
|
|
* drop useless indicies (already available as primary key)
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function upgrade_79_mysql() { # MySQL only
|
|
|
|
function upgrade_79_mysql() { # MySQL only
|
|
|
|
db_query_parsed(_drop_index('admin', 'username'), true);
|
|
|
|
db_query_parsed(_drop_index('admin', 'username'), true);
|
|
|
@ -899,6 +927,9 @@ function upgrade_79_mysql() { # MySQL only
|
|
|
|
db_query_parsed(_drop_index('mailbox', 'username'), true);
|
|
|
|
db_query_parsed(_drop_index('mailbox', 'username'), true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_81_mysql() { # MySQL only
|
|
|
|
function upgrade_81_mysql() { # MySQL only
|
|
|
|
$table_vacation = table_by_key('vacation');
|
|
|
|
$table_vacation = table_by_key('vacation');
|
|
|
|
$table_vacation_notification = table_by_key('vacation_notification');
|
|
|
|
$table_vacation_notification = table_by_key('vacation_notification');
|
|
|
@ -921,6 +952,7 @@ function upgrade_81_mysql() { # MySQL only
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Make logging translatable - i.e. create alias => create_alias
|
|
|
|
* Make logging translatable - i.e. create alias => create_alias
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function upgrade_90_mysql_pgsql() {
|
|
|
|
function upgrade_90_mysql_pgsql() {
|
|
|
|
db_query_parsed("UPDATE " . table_by_key('log') . " SET action = REPLACE(action,' ','_')", true);
|
|
|
|
db_query_parsed("UPDATE " . table_by_key('log') . " SET action = REPLACE(action,' ','_')", true);
|
|
|
@ -930,6 +962,7 @@ function upgrade_90_mysql_pgsql() {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* MySQL only allow quota > 2 GB
|
|
|
|
* MySQL only allow quota > 2 GB
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function upgrade_169_mysql() {
|
|
|
|
function upgrade_169_mysql() {
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
@ -944,6 +977,7 @@ function upgrade_169_mysql() {
|
|
|
|
* Create / modify vacation_notification table.
|
|
|
|
* Create / modify vacation_notification table.
|
|
|
|
* Note: This might not work if users used workarounds to create the table before.
|
|
|
|
* Note: This might not work if users used workarounds to create the table before.
|
|
|
|
* In this case, dropping the table is the easiest solution.
|
|
|
|
* In this case, dropping the table is the easiest solution.
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function upgrade_318_mysql() {
|
|
|
|
function upgrade_318_mysql() {
|
|
|
|
$table_vacation_notification = table_by_key('vacation_notification');
|
|
|
|
$table_vacation_notification = table_by_key('vacation_notification');
|
|
|
@ -980,6 +1014,7 @@ function upgrade_318_mysql() {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Create fetchmail table
|
|
|
|
* Create fetchmail table
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function upgrade_344_mysql() {
|
|
|
|
function upgrade_344_mysql() {
|
|
|
|
$table_fetchmail = table_by_key('fetchmail');
|
|
|
|
$table_fetchmail = table_by_key('fetchmail');
|
|
|
@ -1006,6 +1041,9 @@ function upgrade_344_mysql() {
|
|
|
|
");
|
|
|
|
");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_344_pgsql() {
|
|
|
|
function upgrade_344_pgsql() {
|
|
|
|
$fetchmail = table_by_key('fetchmail');
|
|
|
|
$fetchmail = table_by_key('fetchmail');
|
|
|
|
// a field name called 'date' is probably a bad idea.
|
|
|
|
// a field name called 'date' is probably a bad idea.
|
|
|
@ -1044,8 +1082,10 @@ function upgrade_344_pgsql() {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Create alias_domain table - MySQL
|
|
|
|
* Create alias_domain table - MySQL
|
|
|
|
|
|
|
|
* function upgrade_362_mysql() # renamed to _438 to make sure it runs after an upgrade from 2.2.x
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
# function upgrade_362_mysql() # renamed to _438 to make sure it runs after an upgrade from 2.2.x
|
|
|
|
|
|
|
|
function upgrade_438_mysql() {
|
|
|
|
function upgrade_438_mysql() {
|
|
|
|
# Table structure for table alias_domain
|
|
|
|
# Table structure for table alias_domain
|
|
|
|
#
|
|
|
|
#
|
|
|
@ -1066,8 +1106,9 @@ function upgrade_438_mysql() {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Create alias_domain table - PgSQL
|
|
|
|
* Create alias_domain table - PgSQL
|
|
|
|
|
|
|
|
* function upgrade_362_pgsql() # renamed to _438 to make sure it runs after an upgrade from 2.2.x
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
# function upgrade_362_pgsql() # renamed to _438 to make sure it runs after an upgrade from 2.2.x
|
|
|
|
|
|
|
|
function upgrade_438_pgsql() {
|
|
|
|
function upgrade_438_pgsql() {
|
|
|
|
# Table structure for table alias_domain
|
|
|
|
# Table structure for table alias_domain
|
|
|
|
$table_alias_domain = table_by_key('alias_domain');
|
|
|
|
$table_alias_domain = table_by_key('alias_domain');
|
|
|
@ -1089,6 +1130,7 @@ function upgrade_438_pgsql() {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Change description fields to UTF-8
|
|
|
|
* Change description fields to UTF-8
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function upgrade_373_mysql() { # MySQL only
|
|
|
|
function upgrade_373_mysql() { # MySQL only
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
@ -1107,6 +1149,7 @@ function upgrade_373_mysql() { # MySQL only
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* add ssl option for fetchmail
|
|
|
|
* add ssl option for fetchmail
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function upgrade_439_mysql() {
|
|
|
|
function upgrade_439_mysql() {
|
|
|
|
$table_fetchmail = table_by_key('fetchmail');
|
|
|
|
$table_fetchmail = table_by_key('fetchmail');
|
|
|
@ -1114,6 +1157,10 @@ function upgrade_439_mysql() {
|
|
|
|
db_query_parsed("ALTER TABLE $table_fetchmail ADD `ssl` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `protocol` ; ");
|
|
|
|
db_query_parsed("ALTER TABLE $table_fetchmail ADD `ssl` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `protocol` ; ");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_439_pgsql() {
|
|
|
|
function upgrade_439_pgsql() {
|
|
|
|
$table_fetchmail = table_by_key('fetchmail');
|
|
|
|
$table_fetchmail = table_by_key('fetchmail');
|
|
|
|
if (!_pgsql_field_exists($table_fetchmail, 'ssl')) {
|
|
|
|
if (!_pgsql_field_exists($table_fetchmail, 'ssl')) {
|
|
|
@ -1121,6 +1168,9 @@ function upgrade_439_pgsql() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_473_mysql() {
|
|
|
|
function upgrade_473_mysql() {
|
|
|
|
$table_admin = table_by_key('admin');
|
|
|
|
$table_admin = table_by_key('admin');
|
|
|
|
$table_alias = table_by_key('alias');
|
|
|
|
$table_alias = table_by_key('alias');
|
|
|
@ -1176,6 +1226,9 @@ function upgrade_473_mysql() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_479_mysql() {
|
|
|
|
function upgrade_479_mysql() {
|
|
|
|
# ssl is a reserved word in MySQL and causes several problems. Renaming the field...
|
|
|
|
# ssl is a reserved word in MySQL and causes several problems. Renaming the field...
|
|
|
|
$table_fmail = table_by_key('fetchmail');
|
|
|
|
$table_fmail = table_by_key('fetchmail');
|
|
|
@ -1183,6 +1236,11 @@ function upgrade_479_mysql() {
|
|
|
|
db_query_parsed("ALTER TABLE $table_fmail CHANGE `ssl` `usessl` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'");
|
|
|
|
db_query_parsed("ALTER TABLE $table_fmail CHANGE `ssl` `usessl` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0'");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_479_pgsql() {
|
|
|
|
function upgrade_479_pgsql() {
|
|
|
|
$table_fmail = table_by_key('fetchmail');
|
|
|
|
$table_fmail = table_by_key('fetchmail');
|
|
|
|
if (!_pgsql_field_exists($table_fmail, 'usessl')) {
|
|
|
|
if (!_pgsql_field_exists($table_fmail, 'usessl')) {
|
|
|
@ -1190,14 +1248,20 @@ function upgrade_479_pgsql() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_483_mysql() {
|
|
|
|
function upgrade_483_mysql() {
|
|
|
|
$table_log = table_by_key('log');
|
|
|
|
$table_log = table_by_key('log');
|
|
|
|
db_query_parsed("ALTER TABLE $table_log CHANGE `data` `data` TEXT {LATIN1} NOT NULL");
|
|
|
|
db_query_parsed("ALTER TABLE $table_log CHANGE `data` `data` TEXT {LATIN1} NOT NULL");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# Add a local_part field to the mailbox table, and populate it with the local part of the user's address.
|
|
|
|
/**
|
|
|
|
# This is to make it easier (hopefully) to change the filesystem location of a mailbox in the future
|
|
|
|
* Add a local_part field to the mailbox table, and populate it with the local part of the user's address.
|
|
|
|
# See https://sourceforge.net/forum/message.php?msg_id=5394663
|
|
|
|
* This is to make it easier (hopefully) to change the filesystem location of a mailbox in the future
|
|
|
|
|
|
|
|
* See https://sourceforge.net/forum/message.php?msg_id=5394663
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_495_pgsql() {
|
|
|
|
function upgrade_495_pgsql() {
|
|
|
|
$table_mailbox = table_by_key('mailbox');
|
|
|
|
$table_mailbox = table_by_key('mailbox');
|
|
|
|
if (!_pgsql_field_exists($table_mailbox, 'local_part')) {
|
|
|
|
if (!_pgsql_field_exists($table_mailbox, 'local_part')) {
|
|
|
@ -1206,7 +1270,10 @@ function upgrade_495_pgsql() {
|
|
|
|
db_query_parsed("ALTER TABLE $table_mailbox alter column local_part SET NOT NULL");
|
|
|
|
db_query_parsed("ALTER TABLE $table_mailbox alter column local_part SET NOT NULL");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
# See https://sourceforge.net/forum/message.php?msg_id=5394663
|
|
|
|
/**
|
|
|
|
|
|
|
|
* See https://sourceforge.net/forum/message.php?msg_id=5394663
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_495_mysql() {
|
|
|
|
function upgrade_495_mysql() {
|
|
|
|
$table_mailbox = table_by_key('mailbox');
|
|
|
|
$table_mailbox = table_by_key('mailbox');
|
|
|
|
if (!_mysql_field_exists($table_mailbox, 'local_part')) {
|
|
|
|
if (!_mysql_field_exists($table_mailbox, 'local_part')) {
|
|
|
@ -1216,11 +1283,17 @@ function upgrade_495_mysql() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_504_mysql() {
|
|
|
|
function upgrade_504_mysql() {
|
|
|
|
$table_mailbox = table_by_key('mailbox');
|
|
|
|
$table_mailbox = table_by_key('mailbox');
|
|
|
|
db_query_parsed("ALTER TABLE $table_mailbox CHANGE `local_part` `local_part` VARCHAR( 255 ) {LATIN1} NOT NULL");
|
|
|
|
db_query_parsed("ALTER TABLE $table_mailbox CHANGE `local_part` `local_part` VARCHAR( 255 ) {LATIN1} NOT NULL");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_655_mysql_pgsql() {
|
|
|
|
function upgrade_655_mysql_pgsql() {
|
|
|
|
db_query_parsed(_add_index('mailbox', 'domain', 'domain'));
|
|
|
|
db_query_parsed(_add_index('mailbox', 'domain', 'domain'));
|
|
|
|
db_query_parsed(_add_index('alias', 'domain', 'domain'));
|
|
|
|
db_query_parsed(_add_index('alias', 'domain', 'domain'));
|
|
|
@ -1288,6 +1361,9 @@ function upgrade_727_mysql() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_729_mysql_pgsql() {
|
|
|
|
function upgrade_729_mysql_pgsql() {
|
|
|
|
$table_quota = table_by_key('quota');
|
|
|
|
$table_quota = table_by_key('quota');
|
|
|
|
$table_quota2 = table_by_key('quota2');
|
|
|
|
$table_quota2 = table_by_key('quota2');
|
|
|
@ -1316,6 +1392,9 @@ function upgrade_729_mysql_pgsql() {
|
|
|
|
");
|
|
|
|
");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_730_pgsql() {
|
|
|
|
function upgrade_730_pgsql() {
|
|
|
|
$table_quota = table_by_key('quota');
|
|
|
|
$table_quota = table_by_key('quota');
|
|
|
|
$table_quota2 = table_by_key('quota2');
|
|
|
|
$table_quota2 = table_by_key('quota2');
|
|
|
@ -1384,15 +1463,25 @@ function upgrade_730_pgsql() {
|
|
|
|
");
|
|
|
|
");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_945_mysql_pgsql() {
|
|
|
|
function upgrade_945_mysql_pgsql() {
|
|
|
|
_db_add_field('vacation', 'modified', '{DATECURRENT}', 'created');
|
|
|
|
_db_add_field('vacation', 'modified', '{DATECURRENT}', 'created');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_946_mysql_pgsql() {
|
|
|
|
function upgrade_946_mysql_pgsql() {
|
|
|
|
# taken from upgrade_727_mysql, needs to be done for all databases
|
|
|
|
# taken from upgrade_727_mysql, needs to be done for all databases
|
|
|
|
_db_add_field('vacation', 'activefrom', '{DATE}', 'body');
|
|
|
|
_db_add_field('vacation', 'activefrom', '{DATE}', 'body');
|
|
|
|
_db_add_field('vacation', 'activeuntil', '{DATEFUTURE}', 'activefrom');
|
|
|
|
_db_add_field('vacation', 'activeuntil', '{DATEFUTURE}', 'activefrom');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_968_pgsql() {
|
|
|
|
function upgrade_968_pgsql() {
|
|
|
|
# pgsql counterpart for upgrade_169_mysql() - allow really big quota
|
|
|
|
# pgsql counterpart for upgrade_169_mysql() - allow really big quota
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
|
$table_domain = table_by_key('domain');
|
|
|
@ -1402,14 +1491,24 @@ function upgrade_968_pgsql() {
|
|
|
|
db_query_parsed("ALTER TABLE $table_mailbox ALTER COLUMN quota type bigint");
|
|
|
|
db_query_parsed("ALTER TABLE $table_mailbox ALTER COLUMN quota type bigint");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1050_mysql_pgsql() {
|
|
|
|
function upgrade_1050_mysql_pgsql() {
|
|
|
|
db_query_parsed(_add_index('log', 'domain_timestamp', 'domain,timestamp'));
|
|
|
|
db_query_parsed(_add_index('log', 'domain_timestamp', 'domain,timestamp'));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1283_mysql_pgsql() {
|
|
|
|
function upgrade_1283_mysql_pgsql() {
|
|
|
|
_db_add_field('admin', 'superadmin', '{BOOLEAN}', 'password');
|
|
|
|
_db_add_field('admin', 'superadmin', '{BOOLEAN}', 'password');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1284_mysql_pgsql() {
|
|
|
|
function upgrade_1284_mysql_pgsql() {
|
|
|
|
# migrate the ALL domain to the superadmin column
|
|
|
|
# migrate the ALL domain to the superadmin column
|
|
|
|
# Note: The ALL domain is not (yet) deleted to stay backwards-compatible for now (will be done in a later upgrade function)
|
|
|
|
# Note: The ALL domain is not (yet) deleted to stay backwards-compatible for now (will be done in a later upgrade function)
|
|
|
@ -1422,6 +1521,9 @@ function upgrade_1284_mysql_pgsql() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1345_mysql() {
|
|
|
|
function upgrade_1345_mysql() {
|
|
|
|
# $table_vacation = table_by_key('vacation');
|
|
|
|
# $table_vacation = table_by_key('vacation');
|
|
|
|
# adding and usage of reply_type field removed in r1610
|
|
|
|
# adding and usage of reply_type field removed in r1610
|
|
|
@ -1430,29 +1532,45 @@ function upgrade_1345_mysql() {
|
|
|
|
# db_query_parsed("ALTER TABLE `$table_vacation` ADD `interval_time` INT NOT NULL DEFAULT '0' AFTER `reply_type` ");
|
|
|
|
# db_query_parsed("ALTER TABLE `$table_vacation` ADD `interval_time` INT NOT NULL DEFAULT '0' AFTER `reply_type` ");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1519_mysql_pgsql() {
|
|
|
|
function upgrade_1519_mysql_pgsql() {
|
|
|
|
_db_add_field('fetchmail', 'sslcertck', '{BOOLEAN}', 'usessl');
|
|
|
|
_db_add_field('fetchmail', 'sslcertck', '{BOOLEAN}', 'usessl');
|
|
|
|
_db_add_field('fetchmail', 'sslcertpath', "VARCHAR(255) {UTF-8} DEFAULT ''", 'sslcertck');
|
|
|
|
_db_add_field('fetchmail', 'sslcertpath', "VARCHAR(255) {UTF-8} DEFAULT ''", 'sslcertck');
|
|
|
|
_db_add_field('fetchmail', 'sslfingerprint', "VARCHAR(255) {LATIN1} DEFAULT ''", 'sslcertpath');
|
|
|
|
_db_add_field('fetchmail', 'sslfingerprint', "VARCHAR(255) {LATIN1} DEFAULT ''", 'sslcertpath');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1610_mysql_pgsql() {
|
|
|
|
function upgrade_1610_mysql_pgsql() {
|
|
|
|
# obsoletes upgrade_1345_mysql() - which means debug mode could print "field already exists"
|
|
|
|
# obsoletes upgrade_1345_mysql() - which means debug mode could print "field already exists"
|
|
|
|
_db_add_field('vacation', 'interval_time', '{INT}', 'domain');
|
|
|
|
_db_add_field('vacation', 'interval_time', '{INT}', 'domain');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1685_mysql() {
|
|
|
|
function upgrade_1685_mysql() {
|
|
|
|
# Fix existing log entries broken by https://sourceforge.net/p/postfixadmin/bugs/317/
|
|
|
|
# Fix existing log entries broken by https://sourceforge.net/p/postfixadmin/bugs/317/
|
|
|
|
$table = table_by_key('log');
|
|
|
|
$table = table_by_key('log');
|
|
|
|
db_query_parsed("UPDATE $table SET data = domain WHERE data = '' AND domain LIKE '%@%'");
|
|
|
|
db_query_parsed("UPDATE $table SET data = domain WHERE data = '' AND domain LIKE '%@%'");
|
|
|
|
db_query_parsed("UPDATE $table SET domain=SUBSTRING_INDEX(domain, '@', -1) WHERE domain=data;");
|
|
|
|
db_query_parsed("UPDATE $table SET domain=SUBSTRING_INDEX(domain, '@', -1) WHERE domain=data;");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1685_pgsql() {
|
|
|
|
function upgrade_1685_pgsql() {
|
|
|
|
$table = table_by_key('log');
|
|
|
|
$table = table_by_key('log');
|
|
|
|
db_query_parsed("UPDATE $table SET data = domain WHERE data = '' AND domain LIKE '%@%'");
|
|
|
|
db_query_parsed("UPDATE $table SET data = domain WHERE data = '' AND domain LIKE '%@%'");
|
|
|
|
db_query_parsed("UPDATE $table SET domain=SPLIT_PART(domain, '@', 2) WHERE domain=data;");
|
|
|
|
db_query_parsed("UPDATE $table SET domain=SPLIT_PART(domain, '@', 2) WHERE domain=data;");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1761_mysql() {
|
|
|
|
function upgrade_1761_mysql() {
|
|
|
|
# upgrade_1762 adds the 'modified' column as {DATECURRENT}, therefore we first need to change
|
|
|
|
# upgrade_1762 adds the 'modified' column as {DATECURRENT}, therefore we first need to change
|
|
|
|
# 'date' to {DATE} (mysql only allows one {DATECURRENT} column per table)
|
|
|
|
# 'date' to {DATE} (mysql only allows one {DATECURRENT} column per table)
|
|
|
@ -1460,6 +1578,9 @@ function upgrade_1761_mysql() {
|
|
|
|
db_query_parsed("ALTER TABLE $table_fetchmail CHANGE `date` `date` {DATE}");
|
|
|
|
db_query_parsed("ALTER TABLE $table_fetchmail CHANGE `date` `date` {DATE}");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1762_mysql_pgsql() {
|
|
|
|
function upgrade_1762_mysql_pgsql() {
|
|
|
|
_db_add_field('fetchmail', 'domain', "VARCHAR(255) {LATIN1} DEFAULT ''", 'id');
|
|
|
|
_db_add_field('fetchmail', 'domain', "VARCHAR(255) {LATIN1} DEFAULT ''", 'id');
|
|
|
|
_db_add_field('fetchmail', 'active', '{BOOLEAN}', 'date');
|
|
|
|
_db_add_field('fetchmail', 'active', '{BOOLEAN}', 'date');
|
|
|
@ -1471,27 +1592,44 @@ function upgrade_1762_mysql_pgsql() {
|
|
|
|
_db_add_field('fetchmail', 'modified', '{DATECURRENT}', 'created');
|
|
|
|
_db_add_field('fetchmail', 'modified', '{DATECURRENT}', 'created');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1763_mysql() {
|
|
|
|
function upgrade_1763_mysql() {
|
|
|
|
$table = table_by_key('fetchmail');
|
|
|
|
$table = table_by_key('fetchmail');
|
|
|
|
db_query_parsed("UPDATE $table SET domain=SUBSTRING_INDEX(mailbox, '@', -1) WHERE domain='';");
|
|
|
|
db_query_parsed("UPDATE $table SET domain=SUBSTRING_INDEX(mailbox, '@', -1) WHERE domain='';");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1763_pgsql() {
|
|
|
|
function upgrade_1763_pgsql() {
|
|
|
|
$table = table_by_key('fetchmail');
|
|
|
|
$table = table_by_key('fetchmail');
|
|
|
|
db_query_parsed("UPDATE $table SET domain=SPLIT_PART(mailbox, '@', 2) WHERE domain='';");
|
|
|
|
db_query_parsed("UPDATE $table SET domain=SPLIT_PART(mailbox, '@', 2) WHERE domain='';");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1767_mysql_pgsql() {
|
|
|
|
function upgrade_1767_mysql_pgsql() {
|
|
|
|
# 'active' was just added, so make sure all existing jobs stay active
|
|
|
|
# 'active' was just added, so make sure all existing jobs stay active
|
|
|
|
$table = table_by_key('fetchmail');
|
|
|
|
$table = table_by_key('fetchmail');
|
|
|
|
db_query_parsed("UPDATE $table SET active='{BOOL_TRUE}'");
|
|
|
|
db_query_parsed("UPDATE $table SET active='{BOOL_TRUE}'");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1795_mysql() {
|
|
|
|
function upgrade_1795_mysql() {
|
|
|
|
# upgrade_1761_mysql() was added later (in r1795) - make sure it runs for everybody
|
|
|
|
# upgrade_1761_mysql() was added later (in r1795) - make sure it runs for everybody
|
|
|
|
# (running it twice doesn't hurt)
|
|
|
|
# (running it twice doesn't hurt)
|
|
|
|
upgrade_1761_mysql();
|
|
|
|
upgrade_1761_mysql();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1824_sqlite() {
|
|
|
|
function upgrade_1824_sqlite() {
|
|
|
|
$admin_table = table_by_key('admin');
|
|
|
|
$admin_table = table_by_key('admin');
|
|
|
|
$alias_table = table_by_key('alias');
|
|
|
|
$alias_table = table_by_key('alias');
|
|
|
@ -1656,6 +1794,9 @@ function upgrade_1824_sqlite() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1835_mysql() {
|
|
|
|
function upgrade_1835_mysql() {
|
|
|
|
# change default values for existing datetime fields with a 0000-00-00 default to {DATETIME}
|
|
|
|
# change default values for existing datetime fields with a 0000-00-00 default to {DATETIME}
|
|
|
|
|
|
|
|
|
|
|
@ -1673,6 +1814,9 @@ function upgrade_1835_mysql() {
|
|
|
|
db_query_parsed("ALTER TABLE $table CHANGE `timestamp` `timestamp` {DATETIME}");
|
|
|
|
db_query_parsed("ALTER TABLE $table CHANGE `timestamp` `timestamp` {DATETIME}");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1836_mysql() {
|
|
|
|
function upgrade_1836_mysql() {
|
|
|
|
$table_alias_domain = table_by_key('alias_domain');
|
|
|
|
$table_alias_domain = table_by_key('alias_domain');
|
|
|
|
$table_vacation_notification = table_by_key('vacation_notification');
|
|
|
|
$table_vacation_notification = table_by_key('vacation_notification');
|
|
|
@ -1688,6 +1832,9 @@ function upgrade_1836_mysql() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1837() {
|
|
|
|
function upgrade_1837() {
|
|
|
|
global $CONF;
|
|
|
|
global $CONF;
|
|
|
|
|
|
|
|
|
|
|
@ -1717,6 +1864,9 @@ function upgrade_1837() {
|
|
|
|
# - SQLite does not support ALTER COLUMN. At all.
|
|
|
|
# - SQLite does not support ALTER COLUMN. At all.
|
|
|
|
# TODO: Rename/create anew/migrate/drop tables for v1836... If it matters?
|
|
|
|
# TODO: Rename/create anew/migrate/drop tables for v1836... If it matters?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1837_sqlite() {
|
|
|
|
function upgrade_1837_sqlite() {
|
|
|
|
# Add columns for the alternative contact to reset a forgotten password.
|
|
|
|
# Add columns for the alternative contact to reset a forgotten password.
|
|
|
|
foreach (array('admin', 'mailbox') as $table_to_change) {
|
|
|
|
foreach (array('admin', 'mailbox') as $table_to_change) {
|
|
|
@ -1730,11 +1880,15 @@ function upgrade_1837_sqlite() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* https://github.com/postfixadmin/postfixadmin/issues/89 */
|
|
|
|
/**
|
|
|
|
# upgrade_1838_mysql() renamed to upgrade_1839() to keep all databases in sync
|
|
|
|
* https://github.com/postfixadmin/postfixadmin/issues/89
|
|
|
|
|
|
|
|
* upgrade_1838_mysql() renamed to upgrade_1839() to keep all databases in sync
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1839() {
|
|
|
|
function upgrade_1839() {
|
|
|
|
if (!db_sqlite()) {
|
|
|
|
if (!db_sqlite()) {
|
|
|
|
return _db_add_field('log', 'id', '{AUTOINCREMENT} {PRIMARY}', 'data');
|
|
|
|
_db_add_field('log', 'id', '{AUTOINCREMENT} {PRIMARY}', 'data');
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* ONLY FOR Sqlite */
|
|
|
|
/* ONLY FOR Sqlite */
|
|
|
@ -1753,13 +1907,19 @@ function upgrade_1839() {
|
|
|
|
");
|
|
|
|
");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1840_mysql_pgsql() {
|
|
|
|
function upgrade_1840_mysql_pgsql() {
|
|
|
|
# sqlite doesn't support changing the default value
|
|
|
|
# sqlite doesn't support changing the default value
|
|
|
|
$vacation = table_by_key('vacation');
|
|
|
|
$vacation = table_by_key('vacation');
|
|
|
|
db_query_parsed("ALTER TABLE $vacation ALTER COLUMN activeuntil SET DEFAULT '2038-01-18'");
|
|
|
|
db_query_parsed("ALTER TABLE $vacation ALTER COLUMN activeuntil SET DEFAULT '2038-01-18'");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* try and fix: https://github.com/postfixadmin/postfixadmin/issues/177 - sqlite missing columns */
|
|
|
|
/**
|
|
|
|
|
|
|
|
* try and fix: https://github.com/postfixadmin/postfixadmin/issues/177 - sqlite missing columns
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1841_sqlite() {
|
|
|
|
function upgrade_1841_sqlite() {
|
|
|
|
foreach (array('admin', 'mailbox') as $table) {
|
|
|
|
foreach (array('admin', 'mailbox') as $table) {
|
|
|
|
_db_add_field($table, 'phone', "varchar(30) {UTF-8} NOT NULL DEFAULT ''", 'active');
|
|
|
|
_db_add_field($table, 'phone', "varchar(30) {UTF-8} NOT NULL DEFAULT ''", 'active');
|
|
|
@ -1769,11 +1929,17 @@ function upgrade_1841_sqlite() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1842() {
|
|
|
|
function upgrade_1842() {
|
|
|
|
_db_add_field('mailbox', 'password_expiry', "{DATETIME}"); // when a specific mailbox password expires
|
|
|
|
_db_add_field('mailbox', 'password_expiry', "{DATETIME}"); // when a specific mailbox password expires
|
|
|
|
_db_add_field('domain', 'password_expiry', 'int DEFAULT 0'); // expiry applied to mailboxes within that domain
|
|
|
|
_db_add_field('domain', 'password_expiry', 'int DEFAULT 0'); // expiry applied to mailboxes within that domain
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
function upgrade_1843() {
|
|
|
|
function upgrade_1843() {
|
|
|
|
# Additional field for fetchmail to allow server with non-standard port number
|
|
|
|
# Additional field for fetchmail to allow server with non-standard port number
|
|
|
|
_db_add_field('fetchmail', 'src_port', "{INT}", 'src_server');
|
|
|
|
_db_add_field('fetchmail', 'src_port', "{INT}", 'src_server');
|
|
|
|