diff --git a/data/web/inc/init_db.inc.php b/data/web/inc/init_db.inc.php index 9fc9234e1..e286ab553 100644 --- a/data/web/inc/init_db.inc.php +++ b/data/web/inc/init_db.inc.php @@ -3,7 +3,7 @@ function init_db_schema() { try { global $pdo; - $db_version = "06012023_1924"; + $db_version = "14022023_1000"; $stmt = $pdo->query("SHOW TABLES LIKE 'versions'"); $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); @@ -225,22 +225,22 @@ function init_db_schema() { ), "attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC" ), - "templates" => array( - "cols" => array( - "id" => "INT NOT NULL AUTO_INCREMENT", - "template" => "VARCHAR(255) NOT NULL", - "type" => "VARCHAR(255) NOT NULL", - "attributes" => "JSON", - "created" => "DATETIME(0) NOT NULL DEFAULT NOW(0)", - "modified" => "DATETIME ON UPDATE CURRENT_TIMESTAMP" - ), - "keys" => array( - "primary" => array( - "" => array("id") - ) - ), - "attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC" - ), + "templates" => array( + "cols" => array( + "id" => "INT NOT NULL AUTO_INCREMENT", + "template" => "VARCHAR(255) NOT NULL", + "type" => "VARCHAR(255) NOT NULL", + "attributes" => "JSON", + "created" => "DATETIME(0) NOT NULL DEFAULT NOW(0)", + "modified" => "DATETIME ON UPDATE CURRENT_TIMESTAMP" + ), + "keys" => array( + "primary" => array( + "" => array("id") + ) + ), + "attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC" + ), "domain" => array( // Todo: Move some attributes to json "cols" => array( @@ -1076,7 +1076,7 @@ function init_db_schema() { } } - // Migrate tls_enforce_* options + // Migrate tls_enforce_* options if ($table == 'mailbox') { $stmt = $pdo->query("SHOW TABLES LIKE 'mailbox'"); $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); @@ -1096,7 +1096,7 @@ function init_db_schema() { $stmt = $pdo->query("SHOW TABLES LIKE '" . $table . "'"); $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); if ($num_results != 0) { - $stmt = $pdo->prepare("SELECT CONCAT('ALTER TABLE ', `table_schema`, '.', `table_name`, ' DROP FOREIGN KEY ', `constraint_name`, ';') AS `FKEY_DROP` FROM `information_schema`.`table_constraints` + $stmt = $pdo->prepare("SELECT CONCAT('ALTER TABLE `', `table_schema`, '`.', `table_name`, ' DROP FOREIGN KEY ', `constraint_name`, ';') AS `FKEY_DROP` FROM `information_schema`.`table_constraints` WHERE `constraint_type` = 'FOREIGN KEY' AND `table_name` = :table;"); $stmt->execute(array(':table' => $table)); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); @@ -1322,95 +1322,95 @@ function init_db_schema() { // Fix domain_admins $pdo->query("DELETE FROM `domain_admins` WHERE `domain` = 'ALL';"); - // add default templates - $default_domain_template = array( - "template" => "Default", - "type" => "domain", - "attributes" => array( - "tags" => array(), - "max_num_aliases_for_domain" => 400, - "max_num_mboxes_for_domain" => 10, - "def_quota_for_mbox" => 3072 * 1048576, - "max_quota_for_mbox" => 10240 * 1048576, - "max_quota_for_domain" => 10240 * 1048576, - "rl_frame" => "s", - "rl_value" => "", - "active" => 1, - "gal" => 1, - "backupmx" => 0, - "relay_all_recipients" => 0, - "relay_unknown_only" => 0, - "dkim_selector" => "dkim", - "key_size" => 2048, - "max_quota_for_domain" => 10240 * 1048576, - ) - ); - $default_mailbox_template = array( - "template" => "Default", - "type" => "mailbox", - "attributes" => array( - "tags" => array(), - "quota" => 0, - "quarantine_notification" => strval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['quarantine_notification']), - "quarantine_category" => strval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['quarantine_category']), - "rl_frame" => "s", - "rl_value" => "", - "force_pw_update" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['force_pw_update']), - "sogo_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['sogo_access']), - "active" => 1, - "tls_enforce_in" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['tls_enforce_in']), - "tls_enforce_out" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['tls_enforce_out']), - "imap_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['imap_access']), - "pop3_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['pop3_access']), - "smtp_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['smtp_access']), - "sieve_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['sieve_access']), - "acl_spam_alias" => 1, - "acl_tls_policy" => 1, - "acl_spam_score" => 1, - "acl_spam_policy" => 1, - "acl_delimiter_action" => 1, - "acl_syncjobs" => 0, - "acl_eas_reset" => 1, - "acl_sogo_profile_reset" => 0, - "acl_pushover" => 1, - "acl_quarantine" => 1, - "acl_quarantine_attachments" => 1, - "acl_quarantine_notification" => 1, - "acl_quarantine_category" => 1, - "acl_app_passwds" => 1, - ) - ); - $stmt = $pdo->prepare("SELECT id FROM `templates` WHERE `type` = :type AND `template` = :template"); - $stmt->execute(array( - ":type" => "domain", - ":template" => $default_domain_template["template"] - )); - $row = $stmt->fetch(PDO::FETCH_ASSOC); - if (empty($row)){ - $stmt = $pdo->prepare("INSERT INTO `templates` (`type`, `template`, `attributes`) - VALUES (:type, :template, :attributes)"); - $stmt->execute(array( - ":type" => "domain", - ":template" => $default_domain_template["template"], - ":attributes" => json_encode($default_domain_template["attributes"]) - )); - } - $stmt = $pdo->prepare("SELECT id FROM `templates` WHERE `type` = :type AND `template` = :template"); - $stmt->execute(array( - ":type" => "mailbox", - ":template" => $default_mailbox_template["template"] - )); - $row = $stmt->fetch(PDO::FETCH_ASSOC); - if (empty($row)){ - $stmt = $pdo->prepare("INSERT INTO `templates` (`type`, `template`, `attributes`) - VALUES (:type, :template, :attributes)"); - $stmt->execute(array( - ":type" => "mailbox", - ":template" => $default_mailbox_template["template"], - ":attributes" => json_encode($default_mailbox_template["attributes"]) - )); - } - + // add default templates + $default_domain_template = array( + "template" => "Default", + "type" => "domain", + "attributes" => array( + "tags" => array(), + "max_num_aliases_for_domain" => 400, + "max_num_mboxes_for_domain" => 10, + "def_quota_for_mbox" => 3072 * 1048576, + "max_quota_for_mbox" => 10240 * 1048576, + "max_quota_for_domain" => 10240 * 1048576, + "rl_frame" => "s", + "rl_value" => "", + "active" => 1, + "gal" => 1, + "backupmx" => 0, + "relay_all_recipients" => 0, + "relay_unknown_only" => 0, + "dkim_selector" => "dkim", + "key_size" => 2048, + "max_quota_for_domain" => 10240 * 1048576, + ) + ); + $default_mailbox_template = array( + "template" => "Default", + "type" => "mailbox", + "attributes" => array( + "tags" => array(), + "quota" => 0, + "quarantine_notification" => strval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['quarantine_notification']), + "quarantine_category" => strval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['quarantine_category']), + "rl_frame" => "s", + "rl_value" => "", + "force_pw_update" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['force_pw_update']), + "sogo_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['sogo_access']), + "active" => 1, + "tls_enforce_in" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['tls_enforce_in']), + "tls_enforce_out" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['tls_enforce_out']), + "imap_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['imap_access']), + "pop3_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['pop3_access']), + "smtp_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['smtp_access']), + "sieve_access" => intval($GLOBALS['MAILBOX_DEFAULT_ATTRIBUTES']['sieve_access']), + "acl_spam_alias" => 1, + "acl_tls_policy" => 1, + "acl_spam_score" => 1, + "acl_spam_policy" => 1, + "acl_delimiter_action" => 1, + "acl_syncjobs" => 0, + "acl_eas_reset" => 1, + "acl_sogo_profile_reset" => 0, + "acl_pushover" => 1, + "acl_quarantine" => 1, + "acl_quarantine_attachments" => 1, + "acl_quarantine_notification" => 1, + "acl_quarantine_category" => 1, + "acl_app_passwds" => 1, + ) + ); + $stmt = $pdo->prepare("SELECT id FROM `templates` WHERE `type` = :type AND `template` = :template"); + $stmt->execute(array( + ":type" => "domain", + ":template" => $default_domain_template["template"] + )); + $row = $stmt->fetch(PDO::FETCH_ASSOC); + if (empty($row)){ + $stmt = $pdo->prepare("INSERT INTO `templates` (`type`, `template`, `attributes`) + VALUES (:type, :template, :attributes)"); + $stmt->execute(array( + ":type" => "domain", + ":template" => $default_domain_template["template"], + ":attributes" => json_encode($default_domain_template["attributes"]) + )); + } + $stmt = $pdo->prepare("SELECT id FROM `templates` WHERE `type` = :type AND `template` = :template"); + $stmt->execute(array( + ":type" => "mailbox", + ":template" => $default_mailbox_template["template"] + )); + $row = $stmt->fetch(PDO::FETCH_ASSOC); + if (empty($row)){ + $stmt = $pdo->prepare("INSERT INTO `templates` (`type`, `template`, `attributes`) + VALUES (:type, :template, :attributes)"); + $stmt->execute(array( + ":type" => "mailbox", + ":template" => $default_mailbox_template["template"], + ":attributes" => json_encode($default_mailbox_template["attributes"]) + )); + } + if (php_sapi_name() == "cli") { echo "DB initialization completed" . PHP_EOL; } else {