SF.net SVN: postfixadmin: [352] trunk/upgrade.php
Brought to you by:
christian_boltz,
gingerdog
From: <Gin...@us...> - 2008-04-26 21:55:55
|
Revision: 352 http://postfixadmin.svn.sourceforge.net/postfixadmin/?rev=352&view=rev Author: GingerDog Date: 2008-04-26 14:56:02 -0700 (Sat, 26 Apr 2008) Log Message: ----------- upgrade.php: reindent; fix postgresql fetchmail stuff Modified Paths: -------------- trunk/upgrade.php Modified: trunk/upgrade.php =================================================================== --- trunk/upgrade.php 2008-04-26 21:55:16 UTC (rev 351) +++ trunk/upgrade.php 2008-04-26 21:56:02 UTC (rev 352) @@ -320,8 +320,8 @@ } function upgrade_2_mysql() { -# upgrade pre-2.1 database -# from TABLE_BACKUP_MX.TXT + # upgrade pre-2.1 database + # from TABLE_BACKUP_MX.TXT $table_domain = table_by_key ('domain'); $result = db_query_parsed("ALTER TABLE $table_domain ADD COLUMN transport VARCHAR(255) AFTER maxquota;", TRUE); // don't think PGSQL supports 'AFTER transport' @@ -469,7 +469,7 @@ // these will not work on PostgreSQL; syntax is : // ALTER TABLE foo RENAME f1 TO f2 $all_sql = split("\n", trim(" - ALTER TABLE $table_admin {RENAME_COLUMN} create_date created DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL; + ALTER TABLE $table_admin {RENAME_COLUMN} create_date created DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL; ALTER TABLE $table_admin {RENAME_COLUMN} change_date modified DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL; ALTER TABLE $table_alias {RENAME_COLUMN} create_date created DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL; ALTER TABLE $table_alias {RENAME_COLUMN} change_date modified DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL; @@ -487,8 +487,8 @@ ALTER TABLE $table_vacation ADD COLUMN created DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL AFTER domain; ALTER TABLE $table_vacation ADD COLUMN active TINYINT(1) DEFAULT '1' NOT NULL AFTER created; ALTER TABLE $table_vacation DROP PRIMARY KEY - ALTER TABLE $table_vacation ADD PRIMARY KEY(email) - UPDATE $table_vacation SET domain=SUBSTRING_INDEX(email, '@', -1) WHERE email=email; + ALTER TABLE $table_vacation ADD PRIMARY KEY(email) + UPDATE $table_vacation SET domain=SUBSTRING_INDEX(email, '@', -1) WHERE email=email; ")); foreach ($all_sql as $sql) { @@ -539,57 +539,56 @@ $result = db_query_parsed("ALTER TABLE $table_domain_admins ALTER COLUMN domain DROP DEFAULT"); $result = db_query_parsed(" -BEGIN; -ALTER TABLE $table_log RENAME COLUMN data TO data_old; -ALTER TABLE $table_log ADD COLUMN data text NOT NULL default ''; -UPDATE $table_log SET data = CAST(data_old AS text); -ALTER TABLE $table_log DROP COLUMN data_old; -COMMIT;"); + BEGIN; + ALTER TABLE $table_log RENAME COLUMN data TO data_old; + ALTER TABLE $table_log ADD COLUMN data text NOT NULL default ''; + UPDATE $table_log SET data = CAST(data_old AS text); + ALTER TABLE $table_log DROP COLUMN data_old; + COMMIT;"); -$result = db_query_parsed("ALTER TABLE $table_mailbox ALTER COLUMN username DROP DEFAULT"); -$result = db_query_parsed("ALTER TABLE $table_mailbox ALTER COLUMN domain DROP DEFAULT"); + $result = db_query_parsed("ALTER TABLE $table_mailbox ALTER COLUMN username DROP DEFAULT"); + $result = db_query_parsed("ALTER TABLE $table_mailbox ALTER COLUMN domain DROP DEFAULT"); -$result = db_query_parsed(" -BEGIN; -ALTER TABLE $table_mailbox RENAME COLUMN domain TO domain_old; -ALTER TABLE $table_mailbox ADD COLUMN domain varchar(255) REFERENCES domain (domain); -UPDATE $table_mailbox SET domain = domain_old; -ALTER TABLE $table_mailbox DROP COLUMN domain_old; -COMMIT;" -); -if(!_pgsql_object_exists('mailbox_username_active')) { - db_query_parsed('CREATE INDEX mailbox_username_active ON mailbox(username,active)'); -} + $result = db_query_parsed(" + BEGIN; + ALTER TABLE $table_mailbox RENAME COLUMN domain TO domain_old; + ALTER TABLE $table_mailbox ADD COLUMN domain varchar(255) REFERENCES domain (domain); + UPDATE $table_mailbox SET domain = domain_old; + ALTER TABLE $table_mailbox DROP COLUMN domain_old; + COMMIT;" + ); + if(!_pgsql_object_exists('mailbox_username_active')) { + db_query_parsed('CREATE INDEX mailbox_username_active ON mailbox(username,active)'); + } -$result = db_query_parsed("ALTER TABLE $table_vacation ALTER COLUMN body SET DEFAULT ''"); -if(_pgsql_field_exists($table_vacation, 'cache')) { - $result = db_query_parsed("ALTER TABLE $table_vacation DROP COLUMN cache"); -} + $result = db_query_parsed("ALTER TABLE $table_vacation ALTER COLUMN body SET DEFAULT ''"); + if(_pgsql_field_exists($table_vacation, 'cache')) { + $result = db_query_parsed("ALTER TABLE $table_vacation DROP COLUMN cache"); + } -$result = db_query_parsed(" -BEGIN; -ALTER TABLE $table_vacation RENAME COLUMN domain to domain_old; -ALTER TABLE $table_vacation ADD COLUMN domain varchar(255) REFERENCES domain; -UPDATE $table_vacation SET domain = domain_old; -ALTER TABLE $table_vacation DROP COLUMN domain_old; -COMMIT; -"); + $result = db_query_parsed(" + BEGIN; + ALTER TABLE $table_vacation RENAME COLUMN domain to domain_old; + ALTER TABLE $table_vacation ADD COLUMN domain varchar(255) REFERENCES domain; + UPDATE $table_vacation SET domain = domain_old; + ALTER TABLE $table_vacation DROP COLUMN domain_old; + COMMIT; + "); -if(!_pgsql_object_exists('vacation_email_active')) { - $result = db_query_parsed("CREATE INDEX vacation_email_active ON vacation(email,active)"); -} + if(!_pgsql_object_exists('vacation_email_active')) { + $result = db_query_parsed("CREATE INDEX vacation_email_active ON vacation(email,active)"); + } -if(!_pgsql_object_exists('vacation_notification')) { - $result = db_query_parsed(" - CREATE TABLE vacation_notification ( - on_vacation character varying(255) NOT NULL REFERENCES vacation(email) ON DELETE CASCADE, - notified character varying(255) NOT NULL, - notified_at timestamp with time zone NOT NULL DEFAULT now(), - CONSTRAINT vacation_notification_pkey primary key(on_vacation,notified) -);"); + if(!_pgsql_object_exists('vacation_notification')) { + $result = db_query_parsed(" + CREATE TABLE vacation_notification ( + on_vacation character varying(255) NOT NULL REFERENCES vacation(email) ON DELETE CASCADE, + notified character varying(255) NOT NULL, + notified_at timestamp with time zone NOT NULL DEFAULT now(), + CONSTRAINT vacation_notification_pkey primary key(on_vacation,notified));"); + } } -} # Possible errors that can be ignored: @@ -616,90 +615,89 @@ `active` tinyint(1) NOT NULL default '1', PRIMARY KEY (`username`), KEY username (`username`) -) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Admins'; -"); +) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Admins'; "); -$result = db_query_parsed(" - CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('alias') . "` ( - `address` varchar(255) NOT NULL default '', - `goto` text NOT NULL, - `domain` varchar(255) NOT NULL default '', - `created` datetime NOT NULL default '0000-00-00 00:00:00', - `modified` datetime NOT NULL default '0000-00-00 00:00:00', - `active` tinyint(1) NOT NULL default '1', - PRIMARY KEY (`address`), -KEY address (`address`) - ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Aliases'; -"); + $result = db_query_parsed(" + CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('alias') . "` ( + `address` varchar(255) NOT NULL default '', + `goto` text NOT NULL, + `domain` varchar(255) NOT NULL default '', + `created` datetime NOT NULL default '0000-00-00 00:00:00', + `modified` datetime NOT NULL default '0000-00-00 00:00:00', + `active` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`address`), + KEY address (`address`) + ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Aliases'; + "); -$result = db_query_parsed(" - CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('domain') . "` ( - `domain` varchar(255) NOT NULL default '', - `description` varchar(255) NOT NULL default '', - `aliases` int(10) NOT NULL default '0', - `mailboxes` int(10) NOT NULL default '0', - `maxquota` int(10) NOT NULL default '0', - `quota` int(10) NOT NULL default '0', - `transport` varchar(255) default NULL, - `backupmx` tinyint(1) NOT NULL default '0', - `created` datetime NOT NULL default '0000-00-00 00:00:00', - `modified` datetime NOT NULL default '0000-00-00 00:00:00', - `active` tinyint(1) NOT NULL default '1', - PRIMARY KEY (`domain`), -KEY domain (`domain`) - ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Domains'; -"); + $result = db_query_parsed(" + CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('domain') . "` ( + `domain` varchar(255) NOT NULL default '', + `description` varchar(255) NOT NULL default '', + `aliases` int(10) NOT NULL default '0', + `mailboxes` int(10) NOT NULL default '0', + `maxquota` int(10) NOT NULL default '0', + `quota` int(10) NOT NULL default '0', + `transport` varchar(255) default NULL, + `backupmx` tinyint(1) NOT NULL default '0', + `created` datetime NOT NULL default '0000-00-00 00:00:00', + `modified` datetime NOT NULL default '0000-00-00 00:00:00', + `active` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`domain`), + KEY domain (`domain`) + ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Domains'; + "); -$result = db_query_parsed(" - CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('domain_admins') . "` ( - `username` varchar(255) NOT NULL default '', - `domain` varchar(255) NOT NULL default '', - `created` datetime NOT NULL default '0000-00-00 00:00:00', - `active` tinyint(1) NOT NULL default '1', - KEY username (`username`) - ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Domain Admins'; -"); + $result = db_query_parsed(" + CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('domain_admins') . "` ( + `username` varchar(255) NOT NULL default '', + `domain` varchar(255) NOT NULL default '', + `created` datetime NOT NULL default '0000-00-00 00:00:00', + `active` tinyint(1) NOT NULL default '1', + KEY username (`username`) + ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Domain Admins'; + "); -$result = db_query_parsed(" - CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('log') . "` ( - `timestamp` datetime NOT NULL default '0000-00-00 00:00:00', - `username` varchar(255) NOT NULL default '', - `domain` varchar(255) NOT NULL default '', - `action` varchar(255) NOT NULL default '', - `data` varchar(255) NOT NULL default '', - KEY timestamp (`timestamp`) - ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Log'; -"); + $result = db_query_parsed(" + CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('log') . "` ( + `timestamp` datetime NOT NULL default '0000-00-00 00:00:00', + `username` varchar(255) NOT NULL default '', + `domain` varchar(255) NOT NULL default '', + `action` varchar(255) NOT NULL default '', + `data` varchar(255) NOT NULL default '', + KEY timestamp (`timestamp`) + ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Log'; + "); -$result = db_query_parsed(" - CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('mailbox') . "` ( - `username` varchar(255) NOT NULL default '', - `password` varchar(255) NOT NULL default '', - `name` varchar(255) NOT NULL default '', - `maildir` varchar(255) NOT NULL default '', - `quota` int(10) NOT NULL default '0', - `domain` varchar(255) NOT NULL default '', - `created` datetime NOT NULL default '0000-00-00 00:00:00', - `modified` datetime NOT NULL default '0000-00-00 00:00:00', - `active` tinyint(1) NOT NULL default '1', - PRIMARY KEY (`username`), -KEY username (`username`) - ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Mailboxes'; -"); + $result = db_query_parsed(" + CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('mailbox') . "` ( + `username` varchar(255) NOT NULL default '', + `password` varchar(255) NOT NULL default '', + `name` varchar(255) NOT NULL default '', + `maildir` varchar(255) NOT NULL default '', + `quota` int(10) NOT NULL default '0', + `domain` varchar(255) NOT NULL default '', + `created` datetime NOT NULL default '0000-00-00 00:00:00', + `modified` datetime NOT NULL default '0000-00-00 00:00:00', + `active` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`username`), + KEY username (`username`) + ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Mailboxes'; + "); -$result = db_query_parsed(" - CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('vacation') . "` ( - `email` varchar(255) NOT NULL default '', - `subject` varchar(255) NOT NULL default '', - `body` text NOT NULL default '', - `cache` text NOT NULL default '', - `domain` varchar(255) NOT NULL default '', - `created` datetime NOT NULL default '0000-00-00 00:00:00', - `active` tinyint(1) NOT NULL default '1', - PRIMARY KEY (`email`), -KEY email (`email`) - ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Vacation'; -"); + $result = db_query_parsed(" + CREATE TABLE {IF_NOT_EXISTS} `" . table_by_key('vacation') . "` ( + `email` varchar(255) NOT NULL default '', + `subject` varchar(255) NOT NULL default '', + `body` text NOT NULL default '', + `cache` text NOT NULL default '', + `domain` varchar(255) NOT NULL default '', + `created` datetime NOT NULL default '0000-00-00 00:00:00', + `active` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`email`), + KEY email (`email`) + ) TYPE=MyISAM DEFAULT {LATIN1} COMMENT='Postfix Admin - Virtual Vacation'; + "); } /** @@ -724,7 +722,7 @@ ALTER TABLE `$table_vacation` CHANGE `domain` `domain` VARCHAR( 255 ) {LATIN1} NOT NULL ALTER TABLE `$table_vacation` CHANGE `active` `active` TINYINT( 1 ) NOT NULL DEFAULT '1' ALTER TABLE `$table_vacation` DEFAULT {LATIN1} - ALTER TABLE `$table_vacation` ENGINE = INNODB + ALTER TABLE `$table_vacation` ENGINE = INNODB ")); foreach ($all_sql as $sql) { @@ -771,34 +769,33 @@ notified varchar(255) NOT NULL, notified_at timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY on_vacation (`on_vacation`, `notified`), - CONSTRAINT `vacation_notification_pkey` - FOREIGN KEY (`on_vacation`) REFERENCES vacation(`email`) ON DELETE CASCADE -) -ENGINE=InnoDB DEFAULT {LATIN1} TYPE=InnoDB -COMMENT='Postfix Admin - Virtual Vacation Notifications' -"); + CONSTRAINT `vacation_notification_pkey` + FOREIGN KEY (`on_vacation`) REFERENCES vacation(`email`) ON DELETE CASCADE + ) + ENGINE=InnoDB DEFAULT {LATIN1} TYPE=InnoDB + COMMENT='Postfix Admin - Virtual Vacation Notifications' + "); -# in case someone has manually created the table with utf8 fields before: -$all_sql = split("\n", trim(" - ALTER TABLE `$table_vacation_notification` DROP FOREIGN KEY `vacation_notification_pkey` - ALTER TABLE `$table_vacation_notification` CHANGE `on_vacation` `on_vacation` VARCHAR( 255 ) {LATIN1} NOT NULL - ALTER TABLE `$table_vacation_notification` CHANGE `notified` `notified` VARCHAR( 255 ) {LATIN1} NOT NULL - ALTER TABLE `$table_vacation_notification` DEFAULT {LATIN1} -")); -# Possible errors that can be ignored: -# None. -# If something goes wrong, the user should drop the vacation_notification table -# (not a great loss) and re-create it using this function. + # in case someone has manually created the table with utf8 fields before: + $all_sql = split("\n", trim(" + ALTER TABLE `$table_vacation_notification` DROP FOREIGN KEY `vacation_notification_pkey` + ALTER TABLE `$table_vacation_notification` CHANGE `on_vacation` `on_vacation` VARCHAR( 255 ) {LATIN1} NOT NULL + ALTER TABLE `$table_vacation_notification` CHANGE `notified` `notified` VARCHAR( 255 ) {LATIN1} NOT NULL + ALTER TABLE `$table_vacation_notification` DEFAULT {LATIN1} + ")); + # Possible errors that can be ignored: + # None. + # If something goes wrong, the user should drop the vacation_notification table + # (not a great loss) and re-create it using this function. -foreach ($all_sql as $sql) { - $result = db_query_parsed($sql); -} + foreach ($all_sql as $sql) { + $result = db_query_parsed($sql); + } -# create constraint... -$result = db_query_parsed(" - ALTER TABLE $table_vacation_notification ADD CONSTRAINT `vacation_notification_pkey` - FOREIGN KEY (`on_vacation`) REFERENCES vacation(`email`) ON DELETE CASCADE - "); + # create constraint... + $result = db_query_parsed(" + ALTER TABLE $table_vacation_notification ADD CONSTRAINT `vacation_notification_pkey` + FOREIGN KEY (`on_vacation`) REFERENCES vacation(`email`) ON DELETE CASCADE "); } @@ -807,10 +804,10 @@ */ function upgrade_344_mysql() { - $table_vacation_notification = table_by_key('vacation_notification'); + $table_fetchmail = table_by_key('fetchmail'); db_query_parsed( " - create table fetchmail( + create table $table_fetchmail( id int(11) unsigned not null auto_increment, mailbox varchar(255) not null default '', src_server varchar(255) not null default '', @@ -832,6 +829,38 @@ } function upgrade_344_pgsql() { - # TODO: create fetchmail table for PgSQL + $fetchmail = table_by_key('fetchmail'); + // a field name called 'date' is probably a bad idea. + if(!_pgsql_object_exists('fetchmail')) { + db_query_parsed( " + create table $fetchmail( + id serial, + mailbox varchar(255) not null default '', + src_server varchar(255) not null default '', + src_auth varchar(15) NOT NULL, + src_user varchar(255) not null default '', + src_password varchar(255) not null default '', + src_folder varchar(255) not null default '', + poll_time integer not null default 10, + fetchall boolean not null default false, + keep boolean not null default false, + protocol varchar(15) NOT NULL, + extra_options text, + returned_text text, + mda varchar(255) not null default '', + date timestamp with time zone default now(), + primary key(id), + CHECK (src_auth IN ('password','kerberos_v5','kerberos','kerberos_v4','gssapi','cram-md5','otp','ntlm','msn','ssh','any')), + CHECK (protocol IN ('POP3', 'IMAP', 'POP2', 'ETRN', 'AUTO')) + ); + "); + } + // MySQL expects sequences to start at 1. Stupid database. + // fetchmail.php requires id parameters to be > 0, as it does if($id) like logic... hence if we don't + // fudge the sequence starting point, you cannot delete/edit the first entry if using PostgreSQL. + // I'm sure there's a more elegant way of fixing it properly.... but this should work for now. + if(_pgsql_object_exists('fetchmail_id_seq')) { + db_query_parsed("SELECT nextval('{$fetchmail}_id_seq')"); // I don't care about number waste. + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |