mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2024-12-21 01:49:22 +02:00
increase migrations verion
This commit is contained in:
parent
60ca25026d
commit
0d635e2658
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
function init_db_schema() {
|
function init_db_schema()
|
||||||
|
{
|
||||||
try {
|
try {
|
||||||
global $pdo;
|
global $pdo;
|
||||||
|
|
||||||
@ -488,7 +489,7 @@ function init_db_schema() {
|
|||||||
"quarantine_category" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"quarantine_category" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
"app_passwds" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"app_passwds" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
"pw_reset" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"pw_reset" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
),
|
),
|
||||||
"keys" => array(
|
"keys" => array(
|
||||||
"primary" => array(
|
"primary" => array(
|
||||||
"" => array("username")
|
"" => array("username")
|
||||||
@ -679,7 +680,7 @@ function init_db_schema() {
|
|||||||
"mailbox_relayhost" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"mailbox_relayhost" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
"domain_relayhost" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
"domain_relayhost" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||||
"domain_desc" => "TINYINT(1) NOT NULL DEFAULT '0'"
|
"domain_desc" => "TINYINT(1) NOT NULL DEFAULT '0'"
|
||||||
),
|
),
|
||||||
"keys" => array(
|
"keys" => array(
|
||||||
"primary" => array(
|
"primary" => array(
|
||||||
"" => array("username")
|
"" => array("username")
|
||||||
@ -1152,7 +1153,7 @@ function init_db_schema() {
|
|||||||
while ($row = array_shift($rows)) {
|
while ($row = array_shift($rows)) {
|
||||||
$pdo->query($row['FKEY_DROP']);
|
$pdo->query($row['FKEY_DROP']);
|
||||||
}
|
}
|
||||||
foreach($properties['cols'] as $column => $type) {
|
foreach ($properties['cols'] as $column => $type) {
|
||||||
$stmt = $pdo->query("SHOW COLUMNS FROM `" . $table . "` LIKE '" . $column . "'");
|
$stmt = $pdo->query("SHOW COLUMNS FROM `" . $table . "` LIKE '" . $column . "'");
|
||||||
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||||
if ($num_results == 0) {
|
if ($num_results == 0) {
|
||||||
@ -1166,12 +1167,11 @@ function init_db_schema() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$pdo->query("ALTER TABLE `" . $table . "` ADD `" . $column . "` " . $type);
|
$pdo->query("ALTER TABLE `" . $table . "` ADD `" . $column . "` " . $type);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$pdo->query("ALTER TABLE `" . $table . "` MODIFY COLUMN `" . $column . "` " . $type);
|
$pdo->query("ALTER TABLE `" . $table . "` MODIFY COLUMN `" . $column . "` " . $type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach($properties['keys'] as $key_type => $key_content) {
|
foreach ($properties['keys'] as $key_type => $key_content) {
|
||||||
if (strtolower($key_type) == 'primary') {
|
if (strtolower($key_type) == 'primary') {
|
||||||
foreach ($key_content as $key_values) {
|
foreach ($key_content as $key_values) {
|
||||||
$fields = "`" . implode("`, `", $key_values) . "`";
|
$fields = "`" . implode("`, `", $key_values) . "`";
|
||||||
@ -1228,18 +1228,18 @@ function init_db_schema() {
|
|||||||
$keys_to_exist = array();
|
$keys_to_exist = array();
|
||||||
if (isset($properties['keys']['unique']) && is_array($properties['keys']['unique'])) {
|
if (isset($properties['keys']['unique']) && is_array($properties['keys']['unique'])) {
|
||||||
foreach ($properties['keys']['unique'] as $key_name => $key_values) {
|
foreach ($properties['keys']['unique'] as $key_name => $key_values) {
|
||||||
$keys_to_exist[] = $key_name;
|
$keys_to_exist[] = $key_name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isset($properties['keys']['key']) && is_array($properties['keys']['key'])) {
|
if (isset($properties['keys']['key']) && is_array($properties['keys']['key'])) {
|
||||||
foreach ($properties['keys']['key'] as $key_name => $key_values) {
|
foreach ($properties['keys']['key'] as $key_name => $key_values) {
|
||||||
$keys_to_exist[] = $key_name;
|
$keys_to_exist[] = $key_name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Index for foreign key must exist
|
// Index for foreign key must exist
|
||||||
if (isset($properties['keys']['fkey']) && is_array($properties['keys']['fkey'])) {
|
if (isset($properties['keys']['fkey']) && is_array($properties['keys']['fkey'])) {
|
||||||
foreach ($properties['keys']['fkey'] as $key_name => $key_values) {
|
foreach ($properties['keys']['fkey'] as $key_name => $key_values) {
|
||||||
$keys_to_exist[] = $key_name;
|
$keys_to_exist[] = $key_name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Step 2: Drop all vanished indexes
|
// Step 2: Drop all vanished indexes
|
||||||
@ -1256,33 +1256,29 @@ function init_db_schema() {
|
|||||||
$pdo->query("ALTER TABLE `" . $table . "` DROP PRIMARY KEY");
|
$pdo->query("ALTER TABLE `" . $table . "` DROP PRIMARY KEY");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Create table if it is missing
|
// Create table if it is missing
|
||||||
$sql = "CREATE TABLE IF NOT EXISTS `" . $table . "` (";
|
$sql = "CREATE TABLE IF NOT EXISTS `" . $table . "` (";
|
||||||
foreach($properties['cols'] as $column => $type) {
|
foreach ($properties['cols'] as $column => $type) {
|
||||||
$sql .= "`" . $column . "` " . $type . ",";
|
$sql .= "`" . $column . "` " . $type . ",";
|
||||||
}
|
}
|
||||||
foreach($properties['keys'] as $key_type => $key_content) {
|
foreach ($properties['keys'] as $key_type => $key_content) {
|
||||||
if (strtolower($key_type) == 'primary') {
|
if (strtolower($key_type) == 'primary') {
|
||||||
foreach ($key_content as $key_values) {
|
foreach ($key_content as $key_values) {
|
||||||
$fields = "`" . implode("`, `", $key_values) . "`";
|
$fields = "`" . implode("`, `", $key_values) . "`";
|
||||||
$sql .= "PRIMARY KEY (" . $fields . ")" . ",";
|
$sql .= "PRIMARY KEY (" . $fields . ")" . ",";
|
||||||
}
|
}
|
||||||
}
|
} elseif (strtolower($key_type) == 'key') {
|
||||||
elseif (strtolower($key_type) == 'key') {
|
|
||||||
foreach ($key_content as $key_name => $key_values) {
|
foreach ($key_content as $key_name => $key_values) {
|
||||||
$fields = "`" . implode("`, `", $key_values) . "`";
|
$fields = "`" . implode("`, `", $key_values) . "`";
|
||||||
$sql .= "KEY `" . $key_name . "` (" . $fields . ")" . ",";
|
$sql .= "KEY `" . $key_name . "` (" . $fields . ")" . ",";
|
||||||
}
|
}
|
||||||
}
|
} elseif (strtolower($key_type) == 'unique') {
|
||||||
elseif (strtolower($key_type) == 'unique') {
|
|
||||||
foreach ($key_content as $key_name => $key_values) {
|
foreach ($key_content as $key_name => $key_values) {
|
||||||
$fields = "`" . implode("`, `", $key_values) . "`";
|
$fields = "`" . implode("`, `", $key_values) . "`";
|
||||||
$sql .= "UNIQUE KEY `" . $key_name . "` (" . $fields . ")" . ",";
|
$sql .= "UNIQUE KEY `" . $key_name . "` (" . $fields . ")" . ",";
|
||||||
}
|
}
|
||||||
}
|
} elseif (strtolower($key_type) == 'fkey') {
|
||||||
elseif (strtolower($key_type) == 'fkey') {
|
|
||||||
foreach ($key_content as $key_name => $key_values) {
|
foreach ($key_content as $key_name => $key_values) {
|
||||||
@list($table_ref, $field_ref) = explode('.', $key_values['ref']);
|
@list($table_ref, $field_ref) = explode('.', $key_values['ref']);
|
||||||
$sql .= "FOREIGN KEY `" . $key_name . "` (" . $key_values['col'] . ") REFERENCES `" . $table_ref . "` (`" . $field_ref . "`)
|
$sql .= "FOREIGN KEY `" . $key_name . "` (" . $key_values['col'] . ") REFERENCES `" . $table_ref . "` (`" . $field_ref . "`)
|
||||||
@ -1296,7 +1292,6 @@ function init_db_schema() {
|
|||||||
}
|
}
|
||||||
// Reset table attributes
|
// Reset table attributes
|
||||||
$pdo->query("ALTER TABLE `" . $table . "` " . $properties['attr'] . ";");
|
$pdo->query("ALTER TABLE `" . $table . "` " . $properties['attr'] . ";");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recreate SQL views
|
// Recreate SQL views
|
||||||
@ -1323,12 +1318,12 @@ function init_db_schema() {
|
|||||||
$stmt = $pdo->query("SELECT NULL FROM `admin`");
|
$stmt = $pdo->query("SELECT NULL FROM `admin`");
|
||||||
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||||
if ($num_results == 0) {
|
if ($num_results == 0) {
|
||||||
$pdo->query("INSERT INTO `admin` (`username`, `password`, `superadmin`, `created`, `modified`, `active`)
|
$pdo->query("INSERT INTO `admin` (`username`, `password`, `superadmin`, `created`, `modified`, `active`)
|
||||||
VALUES ('admin', '{SSHA256}K8eVJ6YsZbQCfuJvSUbaQRLr0HPLz5rC9IAp0PAFl0tmNDBkMDc0NDAyOTAxN2Rk', 1, NOW(), NOW(), 1)");
|
VALUES ('admin', '{SSHA256}K8eVJ6YsZbQCfuJvSUbaQRLr0HPLz5rC9IAp0PAFl0tmNDBkMDc0NDAyOTAxN2Rk', 1, NOW(), NOW(), 1)");
|
||||||
$pdo->query("INSERT INTO `domain_admins` (`username`, `domain`, `created`, `active`)
|
$pdo->query("INSERT INTO `domain_admins` (`username`, `domain`, `created`, `active`)
|
||||||
SELECT `username`, 'ALL', NOW(), 1 FROM `admin`
|
SELECT `username`, 'ALL', NOW(), 1 FROM `admin`
|
||||||
WHERE superadmin='1' AND `username` NOT IN (SELECT `username` FROM `domain_admins`);");
|
WHERE superadmin='1' AND `username` NOT IN (SELECT `username` FROM `domain_admins`);");
|
||||||
$pdo->query("DELETE FROM `admin` WHERE `username` NOT IN (SELECT `username` FROM `domain_admins`);");
|
$pdo->query("DELETE FROM `admin` WHERE `username` NOT IN (SELECT `username` FROM `domain_admins`);");
|
||||||
}
|
}
|
||||||
// Insert new DB schema version
|
// Insert new DB schema version
|
||||||
$pdo->query("REPLACE INTO `versions` (`application`, `version`) VALUES ('db_schema', '" . $db_version . "');");
|
$pdo->query("REPLACE INTO `versions` (`application`, `version`) VALUES ('db_schema', '" . $db_version . "');");
|
||||||
@ -1356,7 +1351,7 @@ function init_db_schema() {
|
|||||||
$pdo->query("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.mailbox_format', \"maildir:\") WHERE JSON_VALUE(`attributes`, '$.mailbox_format') IS NULL;");
|
$pdo->query("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.mailbox_format', \"maildir:\") WHERE JSON_VALUE(`attributes`, '$.mailbox_format') IS NULL;");
|
||||||
$pdo->query("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.quarantine_notification', \"never\") WHERE JSON_VALUE(`attributes`, '$.quarantine_notification') IS NULL;");
|
$pdo->query("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.quarantine_notification', \"never\") WHERE JSON_VALUE(`attributes`, '$.quarantine_notification') IS NULL;");
|
||||||
$pdo->query("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.quarantine_category', \"reject\") WHERE JSON_VALUE(`attributes`, '$.quarantine_category') IS NULL;");
|
$pdo->query("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.quarantine_category', \"reject\") WHERE JSON_VALUE(`attributes`, '$.quarantine_category') IS NULL;");
|
||||||
foreach($tls_options as $tls_user => $tls_options) {
|
foreach ($tls_options as $tls_user => $tls_options) {
|
||||||
$stmt = $pdo->prepare("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.tls_enforce_in', :tls_enforce_in),
|
$stmt = $pdo->prepare("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.tls_enforce_in', :tls_enforce_in),
|
||||||
`attributes` = JSON_SET(`attributes`, '$.tls_enforce_out', :tls_enforce_out)
|
`attributes` = JSON_SET(`attributes`, '$.tls_enforce_out', :tls_enforce_out)
|
||||||
WHERE `username` = :username");
|
WHERE `username` = :username");
|
||||||
@ -1435,7 +1430,7 @@ function init_db_schema() {
|
|||||||
":template" => $default_domain_template["template"]
|
":template" => $default_domain_template["template"]
|
||||||
));
|
));
|
||||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
if (empty($row)){
|
if (empty($row)) {
|
||||||
$stmt = $pdo->prepare("INSERT INTO `templates` (`type`, `template`, `attributes`)
|
$stmt = $pdo->prepare("INSERT INTO `templates` (`type`, `template`, `attributes`)
|
||||||
VALUES (:type, :template, :attributes)");
|
VALUES (:type, :template, :attributes)");
|
||||||
$stmt->execute(array(
|
$stmt->execute(array(
|
||||||
@ -1450,7 +1445,7 @@ function init_db_schema() {
|
|||||||
":template" => $default_mailbox_template["template"]
|
":template" => $default_mailbox_template["template"]
|
||||||
));
|
));
|
||||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
if (empty($row)){
|
if (empty($row)) {
|
||||||
$stmt = $pdo->prepare("INSERT INTO `templates` (`type`, `template`, `attributes`)
|
$stmt = $pdo->prepare("INSERT INTO `templates` (`type`, `template`, `attributes`)
|
||||||
VALUES (:type, :template, :attributes)");
|
VALUES (:type, :template, :attributes)");
|
||||||
$stmt->execute(array(
|
$stmt->execute(array(
|
||||||
@ -1469,8 +1464,7 @@ function init_db_schema() {
|
|||||||
'msg' => 'db_init_complete'
|
'msg' => 'db_init_complete'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
} catch (PDOException $e) {
|
||||||
catch (PDOException $e) {
|
|
||||||
if (php_sapi_name() == "cli") {
|
if (php_sapi_name() == "cli") {
|
||||||
echo "DB initialization failed: " . print_r($e, true) . PHP_EOL;
|
echo "DB initialization failed: " . print_r($e, true) . PHP_EOL;
|
||||||
} else {
|
} else {
|
||||||
@ -1509,8 +1503,7 @@ if (php_sapi_name() == "cli") {
|
|||||||
SELECT `c_uid`, `domain`, `c_name`, `c_password`, `c_cn`, `mail`, `aliases`, `ad_aliases`, `ext_acl`, `kind`, `multiple_bookings` from sogo_view");
|
SELECT `c_uid`, `domain`, `c_name`, `c_password`, `c_cn`, `mail`, `aliases`, `ad_aliases`, `ext_acl`, `kind`, `multiple_bookings` from sogo_view");
|
||||||
$stmt = $pdo->query("DELETE FROM _sogo_static_view WHERE `c_uid` NOT IN (SELECT `username` FROM `mailbox` WHERE `active` = '1');");
|
$stmt = $pdo->query("DELETE FROM _sogo_static_view WHERE `c_uid` NOT IN (SELECT `username` FROM `mailbox` WHERE `active` = '1');");
|
||||||
echo "Fixed _sogo_static_view" . PHP_EOL;
|
echo "Fixed _sogo_static_view" . PHP_EOL;
|
||||||
}
|
} catch (Exception $e) {
|
||||||
catch ( Exception $e ) {
|
|
||||||
// Dunno
|
// Dunno
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1518,9 +1511,8 @@ if (php_sapi_name() == "cli") {
|
|||||||
$m = new Memcached();
|
$m = new Memcached();
|
||||||
$m->addServer('memcached', 11211);
|
$m->addServer('memcached', 11211);
|
||||||
$m->flush();
|
$m->flush();
|
||||||
echo "Cleaned up memcached". PHP_EOL;
|
echo "Cleaned up memcached" . PHP_EOL;
|
||||||
}
|
} catch (Exception $e) {
|
||||||
catch ( Exception $e ) {
|
|
||||||
// Dunno
|
// Dunno
|
||||||
}
|
}
|
||||||
init_db_schema();
|
init_db_schema();
|
||||||
|
Loading…
Reference in New Issue
Block a user