diff --git a/.env b/.env index be38e1c6ca..80272828fb 100644 --- a/.env +++ b/.env @@ -133,7 +133,7 @@ PHRASEANET_DOCKER_REGISTRY=local # Docker images tag. # @run -PHRASEANET_DOCKER_TAG=4.1.8-rc5 +PHRASEANET_DOCKER_TAG=4.1.8-rc6 # Stack Name # An optionnal Name for the stack diff --git a/lib/Alchemy/Phrasea/Core/Version.php b/lib/Alchemy/Phrasea/Core/Version.php index eab14c1789..ed7b9b1805 100644 --- a/lib/Alchemy/Phrasea/Core/Version.php +++ b/lib/Alchemy/Phrasea/Core/Version.php @@ -17,7 +17,7 @@ class Version * @var string */ - private $number = '4.1.8-rc5'; + private $number = '4.1.8-rc6'; /** * @var string diff --git a/lib/Alchemy/Phrasea/WorkerManager/Subscriber/RecordSubscriber.php b/lib/Alchemy/Phrasea/WorkerManager/Subscriber/RecordSubscriber.php index 92b6133856..781cb550a4 100644 --- a/lib/Alchemy/Phrasea/WorkerManager/Subscriber/RecordSubscriber.php +++ b/lib/Alchemy/Phrasea/WorkerManager/Subscriber/RecordSubscriber.php @@ -154,6 +154,7 @@ class RecordSubscriber implements EventSubscriberInterface { $databoxId = $event->getDataboxId(); $recordIds = $event->getRecordIds(); + $acceptedMimeTypes = $this->app['conf']->get(['workers', 'writeMetadatas', 'acceptedMimeType'], []); foreach ($recordIds as $recordId) { $mediaSubdefRepository = $this->getMediaSubdefRepository($databoxId); @@ -173,7 +174,13 @@ class RecordSubscriber implements EventSubscriberInterface foreach ($mediaSubdefs as $subdef) { // check subdefmetadatarequired from the subview setup in admin - if (($subdef->get_name() == 'document' && $toWritemetaOriginalDocument) || $this->isSubdefMetadataUpdateRequired($databox, $type, $subdef->get_name())) { + // check if we want to write meta in this mime type + if (in_array(trim($subdef->get_mime()), $acceptedMimeTypes) && + ( + ($subdef->get_name() == 'document' && $toWritemetaOriginalDocument) || + $this->isSubdefMetadataUpdateRequired($databox, $type, $subdef->get_name()) + ) + ) { $payload = [ 'message_type' => MessagePublisher::WRITE_METADATAS_TYPE, 'payload' => [ @@ -182,7 +189,6 @@ class RecordSubscriber implements EventSubscriberInterface 'subdefName' => $subdef->get_name() ] ]; - if ($subdef->is_physically_present()) { $this->messagePublisher->publishMessage($payload, MessagePublisher::WRITE_METADATAS_TYPE); } @@ -273,6 +279,8 @@ class RecordSubscriber implements EventSubscriberInterface } else { + $acceptedMimeTypes = $this->app['conf']->get(['workers', 'writeMetadatas', 'acceptedMimeType'], []); + $databoxId = $event->getRecord()->getDataboxId(); $recordId = $event->getRecord()->getRecordId(); @@ -291,7 +299,13 @@ class RecordSubscriber implements EventSubscriberInterface } // only the required writemetadata from admin > subview setup is to be writing - if (($subdef->get_name() == 'document' && $toWritemetaOriginalDocument) || $this->isSubdefMetadataUpdateRequired($databox, $type, $subdef->get_name())) { + // check if we want to write meta in this mime type + if (in_array($subdef->get_mime(), $acceptedMimeTypes) && + ( + ($subdef->get_name() == 'document' && $toWritemetaOriginalDocument) || + $this->isSubdefMetadataUpdateRequired($databox, $type, $subdef->get_name()) + ) + ) { $payload = [ 'message_type' => MessagePublisher::WRITE_METADATAS_TYPE, 'payload' => [ diff --git a/lib/classes/patch/418RC6.php b/lib/classes/patch/418RC6.php new file mode 100644 index 0000000000..3b4aff11d3 --- /dev/null +++ b/lib/classes/patch/418RC6.php @@ -0,0 +1,87 @@ +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 $base, Application $app) + { + if ($base->get_base_type() === base::DATA_BOX) { + $this->patch_databox($base, $app); + } elseif ($base->get_base_type() === base::APPLICATION_BOX) { + $this->patch_appbox($base, $app); + } + + return true; + } + + private function patch_databox(databox $databox, Application $app) + { + } + + private function patch_appbox(base $appbox, Application $app) + { + /** @var PropertyAccess $conf */ + $conf = $app['conf']; + + // PHRAS-3889 + if (!$conf->has(['workers', 'writeMetadatas', 'acceptedMimeType'])) { + $defaultAcceptedMimeType = [ + 'image/jpeg', + 'image/png', + 'application/postscript', + 'application/pdf', + 'image/tiff' + ]; + + $conf->set(['workers', 'writeMetadatas', 'acceptedMimeType'], $defaultAcceptedMimeType); + } + + // PHRAS-3896 + if ($conf->get(['main', 'search-engine', 'options', 'populate_order']) != 'RECORD_ID') { + $conf->set(['main', 'search-engine', 'options', 'populate_order'], 'RECORD_ID'); + } + } +} diff --git a/lib/conf.d/configuration.yml b/lib/conf.d/configuration.yml index 282e693441..dab5d447e5 100644 --- a/lib/conf.d/configuration.yml +++ b/lib/conf.d/configuration.yml @@ -416,6 +416,13 @@ workers: max_retry: 3 ttl_retry: 10000 ttl_delayed: 5000 + writeMetadatas: + acceptedMimeType: + - image/jpeg + - image/png + - application/postscript + - application/pdf + - image/tiff externalservice: ginger: AutoSubtitling: