diff --git a/lib/Alchemy/Phrasea/Core/Version.php b/lib/Alchemy/Phrasea/Core/Version.php
index 275d7479c2..4014798ff0 100644
--- a/lib/Alchemy/Phrasea/Core/Version.php
+++ b/lib/Alchemy/Phrasea/Core/Version.php
@@ -16,7 +16,7 @@ class Version
/**
* @var string
*/
- private $number = '4.1.0-alpha.11';
+ private $number = '4.1.0-alpha.12';
/**
* @var string
diff --git a/lib/classes/patch/410alpha12a.php b/lib/classes/patch/410alpha12a.php
new file mode 100644
index 0000000000..e46efe5165
--- /dev/null
+++ b/lib/classes/patch/410alpha12a.php
@@ -0,0 +1,7786 @@
+release;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getDoctrineMigrations()
+ {
+ return [];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function require_all_upgrades()
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function concern()
+ {
+ return $this->concern;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function apply(base $databox, Application $app)
+ {
+ $sql = "DROP TABLE IF EXISTS `ext2mime`";
+ $databox->get_connection()->executeQuery($sql);
+
+ $sql = "CREATE TEMPORARY TABLE `ext2mime` (\n"
+ . " `ext` char(32) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',\n"
+ . " `mime` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,\n"
+ . " PRIMARY KEY (`ext`)\n"
+ . ") ENGINE=InnoDB DEFAULT CHARSET=latin1";
+ $databox->get_connection()->executeQuery($sql);
+
+ // some mimes give the same ext (conflict), we use the first one.
+ $sql = "INSERT IGNORE INTO `ext2mime` (`ext`, `mime`) VALUES (:ext, :mime)";
+ $stmt = $databox->get_connection()->prepare($sql);
+
+ $mimes = json_decode($this->mimes, true); // as assoc
+ foreach($mimes as $mime=>$m) {
+ if(array_key_exists('extensions', $m) && is_array($m['extensions'])) {
+ foreach($m['extensions'] as $ext) {
+ $stmt->execute([':ext'=>$ext, ':mime'=>$mime]);
+ }
+ }
+ }
+ $stmt->closeCursor();
+
+ // patch the tables only for truncated values
+
+ // record.mime was char(40) ; subdef 64
+ $sql = "UPDATE `record` AS `r` INNER JOIN `ext2mime` AS `e` ON `e`.`ext` = RIGHT(`r`.`originalname`, LOCATE('.', REVERSE(`r`.`originalname`))-1)\n"
+ . "SET `r`.`mime`=`e`.`mime` WHERE LENGTH(`r`.`mime`)>39";
+ $databox->get_connection()->executeQuery($sql);
+
+ // subdef.mime was char(64)
+ $sql = "UPDATE `subdef` AS `s` INNER JOIN `ext2mime` AS `e` ON `e`.`ext` = RIGHT(`s`.`name`, LOCATE('.', REVERSE(`s`.`name`))-1)\n"
+ . "SET `s`.`mime`=`e`.`mime` WHERE LENGTH(`s`.`mime`)>63";
+ $databox->get_connection()->executeQuery($sql);
+
+
+ $sql = "DROP TABLE IF EXISTS `ext2mime`";
+ $databox->get_connection()->executeQuery($sql);
+ }
+}
diff --git a/lib/conf.d/bases_structure.xml b/lib/conf.d/bases_structure.xml
index a0bfe1138c..f4ab3d1163 100644
--- a/lib/conf.d/bases_structure.xml
+++ b/lib/conf.d/bases_structure.xml
@@ -3148,7 +3148,7 @@
mime
- char(40)
+ char(255)
YES
@@ -3411,7 +3411,7 @@
mime
- char(64)
+ char(255)