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)