mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-17 06:53:15 +00:00
PHRAS-3889 Worker - metadata write - mime/type whitelist - write metadatas only on whitelisted files (#4366)
* write meta only on whitelist mimetype * bump version * add some mimetype * PHRAS-3896 : patch for checking the current value of populate_order in file config/configuration.yml and set to populate_order: RECORD_ID
This commit is contained in:
2
.env
2
.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
|
||||
|
@@ -17,7 +17,7 @@ class Version
|
||||
* @var string
|
||||
*/
|
||||
|
||||
private $number = '4.1.8-rc5';
|
||||
private $number = '4.1.8-rc6';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
|
@@ -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' => [
|
||||
|
87
lib/classes/patch/418RC6.php
Normal file
87
lib/classes/patch/418RC6.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
use Alchemy\Phrasea\Application;
|
||||
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
|
||||
|
||||
class patch_418RC6 implements patchInterface
|
||||
{
|
||||
/** @var string */
|
||||
private $release = '4.1.8-rc6';
|
||||
|
||||
/** @var array */
|
||||
private $concern = [base::APPLICATION_BOX];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_release()
|
||||
{
|
||||
return $this->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');
|
||||
}
|
||||
}
|
||||
}
|
@@ -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:
|
||||
|
Reference in New Issue
Block a user