[Web] JSON must not have a default value
This commit is contained in:
		| @@ -3,7 +3,7 @@ function init_db_schema() { | ||||
|   try { | ||||
|     global $pdo; | ||||
|  | ||||
|     $db_version = "17022018_0839"; | ||||
|     $db_version = "17022018_0859"; | ||||
|  | ||||
|     $stmt = $pdo->query("SHOW TABLES LIKE 'versions'"); | ||||
|     $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); | ||||
| @@ -191,7 +191,7 @@ function init_db_schema() { | ||||
|           "domain" => "VARCHAR(255) NOT NULL", | ||||
|           "tls_enforce_in" => "TINYINT(1) NOT NULL DEFAULT '0'", | ||||
|           "tls_enforce_out" => "TINYINT(1) NOT NULL DEFAULT '0'", | ||||
|           "attributes" => "JSON DEFAULT '{}'", | ||||
|           "attributes" => "JSON", | ||||
|           "kind" => "VARCHAR(100) NOT NULL DEFAULT ''", | ||||
|           "multiple_bookings" => "TINYINT(1) NOT NULL DEFAULT '0'", | ||||
|           "created" => "DATETIME(0) NOT NULL DEFAULT NOW(0)", | ||||
| @@ -638,6 +638,22 @@ function init_db_schema() { | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       // Migrate tls_enforce_* options | ||||
|       if ($table == 'mailbox') { | ||||
|         $stmt = $pdo->query("SHOW TABLES LIKE 'mailbox'"); | ||||
|         $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); | ||||
|         if ($num_results != 0) { | ||||
|           $stmt = $pdo->query("SHOW COLUMNS FROM `mailbox` LIKE '%tls_enforce%'");  | ||||
|           $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); | ||||
|           if ($num_results != 0) { | ||||
|             $stmt = $pdo->query("SELECT `username`, `tls_enforce_in`, `tls_enforce_out` FROM `mailbox`"); | ||||
|             $tls_options_rows = $stmt->fetchAll(PDO::FETCH_ASSOC); | ||||
|             while ($row = array_shift($tls_options_rows)) { | ||||
|               $tls_options[$row['username']] = array('tls_enforce_in' => $row['tls_enforce_in'], 'tls_enforce_out' => $row['tls_enforce_out']); | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       $stmt = $pdo->query("SHOW TABLES LIKE '" . $table . "'");  | ||||
|       $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); | ||||
|       if ($num_results != 0) { | ||||
| @@ -784,6 +800,13 @@ function init_db_schema() { | ||||
|       } | ||||
|       // Reset table attributes | ||||
|       $pdo->query("ALTER TABLE `" . $table . "` " . $properties['attr'] . ";"); | ||||
|       // Migrate tls_enforce_* 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), | ||||
|           `attributes` = JSON_SET(`attributes`, '$.tls_enforce_out', :tls_enforce_out) | ||||
|             WHERE `username` = :username"); | ||||
|         $stmt->execute(array(':tls_enforce_in' => $tls_options['tls_enforce_in'], ':tls_enforce_out' => $tls_options['tls_enforce_out'], ':username' => $tls_user)); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     // Recreate SQL views | ||||
|   | ||||
		Reference in New Issue
	
	Block a user