mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-10-07 22:09:46 +00:00
Compare commits
12 Commits
v4.5.0
...
423-enviro
Author | SHA1 | Date | |
---|---|---|---|
2cac6b78db | |||
49fc02a7da | |||
52344cda3b | |||
822a297e36 | |||
bc2fbee5c6 | |||
ebd10ca522 | |||
d3a31be412
|
|||
d159a82f88
|
|||
c2d9c73fd4
|
|||
0d6d15fcf7 | |||
f9ad96c78b
|
|||
fcc9529a20
|
6
.changes/unreleased/Feature-20251007-101949.yaml
Normal file
6
.changes/unreleased/Feature-20251007-101949.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
kind: Feature
|
||||||
|
body: Create environment banner that can be activated and configured depending on the image deployed
|
||||||
|
time: 2025-10-07T10:19:49.784462956+02:00
|
||||||
|
custom:
|
||||||
|
Issue: "423"
|
||||||
|
SchemaChange: No schema change
|
6
.changes/unreleased/Fixed-20251003-224044.yaml
Normal file
6
.changes/unreleased/Fixed-20251003-224044.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
kind: Fixed
|
||||||
|
body: Fix the rendering of list of StoredObjectVersions, where there are kept version (before converting to pdf) and intermediate versions deleted
|
||||||
|
time: 2025-10-03T22:40:44.685474863+02:00
|
||||||
|
custom:
|
||||||
|
Issue: ""
|
||||||
|
SchemaChange: No schema change
|
6
.changes/unreleased/Fixed-20251006-121315.yaml
Normal file
6
.changes/unreleased/Fixed-20251006-121315.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
kind: Fixed
|
||||||
|
body: 'Notification: fix editing of sent notification by removing form.addressesEmails, a field that no longer exists'
|
||||||
|
time: 2025-10-06T12:13:15.45905994+02:00
|
||||||
|
custom:
|
||||||
|
Issue: "434"
|
||||||
|
SchemaChange: No schema change
|
4
.changes/v4.5.1.md
Normal file
4
.changes/v4.5.1.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
## v4.5.1 - 2025-10-03
|
||||||
|
### Fixed
|
||||||
|
* Add missing javascript dependency
|
||||||
|
* Add exception handling for conversion of attachment on sending external, when documens are already in pdf
|
@@ -6,6 +6,11 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|||||||
and is generated by [Changie](https://github.com/miniscruff/changie).
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
||||||
|
|
||||||
|
|
||||||
|
## v4.5.1 - 2025-10-03
|
||||||
|
### Fixed
|
||||||
|
* Add missing javascript dependency
|
||||||
|
* Add exception handling for conversion of attachment on sending external, when documens are already in pdf
|
||||||
|
|
||||||
## v4.5.0 - 2025-10-03
|
## v4.5.0 - 2025-10-03
|
||||||
### Feature
|
### Feature
|
||||||
* Only allow delete of attachment on workflows that are not final
|
* Only allow delete of attachment on workflows that are not final
|
||||||
|
@@ -1,6 +1,13 @@
|
|||||||
chill_main:
|
chill_main:
|
||||||
available_languages: [ '%env(resolve:LOCALE)%', 'en' ]
|
available_languages: [ '%env(resolve:LOCALE)%', 'en' ]
|
||||||
available_countries: ['BE', 'FR']
|
available_countries: ['BE', 'FR']
|
||||||
|
top_banner:
|
||||||
|
visible: true
|
||||||
|
text:
|
||||||
|
fr: 'Vous travaillez actuellement avec la version de PRÉ-PRODUCTION.'
|
||||||
|
nl: 'Je werkt momenteel in de PRE-PRODUCTIE versie'
|
||||||
|
color: '#353535'
|
||||||
|
background_color: '#d8bb48'
|
||||||
notifications:
|
notifications:
|
||||||
from_email: '%env(resolve:NOTIFICATION_FROM_EMAIL)%'
|
from_email: '%env(resolve:NOTIFICATION_FROM_EMAIL)%'
|
||||||
from_name: '%env(resolve:NOTIFICATION_FROM_NAME)%'
|
from_name: '%env(resolve:NOTIFICATION_FROM_NAME)%'
|
||||||
|
@@ -55,6 +55,7 @@
|
|||||||
"@tsconfig/node20": "^20.1.4",
|
"@tsconfig/node20": "^20.1.4",
|
||||||
"@types/dompurify": "^3.0.5",
|
"@types/dompurify": "^3.0.5",
|
||||||
"@types/leaflet": "^1.9.3",
|
"@types/leaflet": "^1.9.3",
|
||||||
|
"@vueuse/core": "^13.9.0",
|
||||||
"bootstrap-icons": "^1.11.3",
|
"bootstrap-icons": "^1.11.3",
|
||||||
"dropzone": "^5.7.6",
|
"dropzone": "^5.7.6",
|
||||||
"es6-promise": "^4.2.8",
|
"es6-promise": "^4.2.8",
|
||||||
|
@@ -59,7 +59,7 @@ final readonly class StoredObjectVersionApiController
|
|||||||
|
|
||||||
return new JsonResponse(
|
return new JsonResponse(
|
||||||
$this->serializer->serialize(
|
$this->serializer->serialize(
|
||||||
new Collection($items, $paginator),
|
new Collection(array_values($items->toArray()), $paginator),
|
||||||
'json',
|
'json',
|
||||||
[AbstractNormalizer::GROUPS => ['read', StoredObjectVersionNormalizer::WITH_POINT_IN_TIMES_CONTEXT, StoredObjectVersionNormalizer::WITH_RESTORED_CONTEXT]]
|
[AbstractNormalizer::GROUPS => ['read', StoredObjectVersionNormalizer::WITH_POINT_IN_TIMES_CONTEXT, StoredObjectVersionNormalizer::WITH_RESTORED_CONTEXT]]
|
||||||
),
|
),
|
||||||
|
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Chill is a software for social workers
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Chill\DocStoreBundle\Exception;
|
||||||
|
|
||||||
|
class ConversionWithSameMimeTypeException extends \RuntimeException
|
||||||
|
{
|
||||||
|
public function __construct(string $mimeType, ?\Throwable $previous = null)
|
||||||
|
{
|
||||||
|
parent::__construct("Conversion to same MIME type '{$mimeType}' is not allowed: already at the same MIME type", 0, $previous);
|
||||||
|
}
|
||||||
|
}
|
@@ -3,9 +3,9 @@ import {
|
|||||||
StoredObject,
|
StoredObject,
|
||||||
StoredObjectPointInTime,
|
StoredObjectPointInTime,
|
||||||
StoredObjectVersionWithPointInTime,
|
StoredObjectVersionWithPointInTime,
|
||||||
} from "./../../../types";
|
} from "ChillDocStoreAssets/types";
|
||||||
import UserRenderBoxBadge from "ChillMainAssets/vuejs/_components/Entity/UserRenderBoxBadge.vue";
|
import UserRenderBoxBadge from "ChillMainAssets/vuejs/_components/Entity/UserRenderBoxBadge.vue";
|
||||||
import { ISOToDatetime } from "./../../../../../../ChillMainBundle/Resources/public/chill/js/date";
|
import { ISOToDatetime } from "ChillMainAssets/chill/js/date";
|
||||||
import FileIcon from "ChillDocStoreAssets/vuejs/FileIcon.vue";
|
import FileIcon from "ChillDocStoreAssets/vuejs/FileIcon.vue";
|
||||||
import RestoreVersionButton from "ChillDocStoreAssets/vuejs/StoredObjectButton/HistoryButton/RestoreVersionButton.vue";
|
import RestoreVersionButton from "ChillDocStoreAssets/vuejs/StoredObjectButton/HistoryButton/RestoreVersionButton.vue";
|
||||||
import DownloadButton from "ChillDocStoreAssets/vuejs/StoredObjectButton/DownloadButton.vue";
|
import DownloadButton from "ChillDocStoreAssets/vuejs/StoredObjectButton/DownloadButton.vue";
|
||||||
|
@@ -15,6 +15,7 @@ use Chill\DocStoreBundle\Entity\StoredObject;
|
|||||||
use Chill\DocStoreBundle\Entity\StoredObjectPointInTime;
|
use Chill\DocStoreBundle\Entity\StoredObjectPointInTime;
|
||||||
use Chill\DocStoreBundle\Entity\StoredObjectPointInTimeReasonEnum;
|
use Chill\DocStoreBundle\Entity\StoredObjectPointInTimeReasonEnum;
|
||||||
use Chill\DocStoreBundle\Entity\StoredObjectVersion;
|
use Chill\DocStoreBundle\Entity\StoredObjectVersion;
|
||||||
|
use Chill\DocStoreBundle\Exception\ConversionWithSameMimeTypeException;
|
||||||
use Chill\DocStoreBundle\Exception\StoredObjectManagerException;
|
use Chill\DocStoreBundle\Exception\StoredObjectManagerException;
|
||||||
use Chill\WopiBundle\Service\WopiConverter;
|
use Chill\WopiBundle\Service\WopiConverter;
|
||||||
use Symfony\Component\Mime\MimeTypesInterface;
|
use Symfony\Component\Mime\MimeTypesInterface;
|
||||||
@@ -41,9 +42,10 @@ class StoredObjectToPdfConverter
|
|||||||
*
|
*
|
||||||
* @return array{0: StoredObjectPointInTime, 1: StoredObjectVersion, 2?: string} contains the point in time before conversion and the new version of the stored object. The converted content is included in the response if $includeConvertedContent is true
|
* @return array{0: StoredObjectPointInTime, 1: StoredObjectVersion, 2?: string} contains the point in time before conversion and the new version of the stored object. The converted content is included in the response if $includeConvertedContent is true
|
||||||
*
|
*
|
||||||
* @throws \UnexpectedValueException if the preferred mime type for the conversion is not found
|
* @throws \UnexpectedValueException if the preferred mime type for the conversion is not found
|
||||||
* @throws \RuntimeException if the conversion or storage of the new version fails
|
* @throws \RuntimeException if the conversion or storage of the new version fails
|
||||||
* @throws StoredObjectManagerException
|
* @throws StoredObjectManagerException
|
||||||
|
* @throws ConversionWithSameMimeTypeException if the document has already the same mime type79*
|
||||||
*/
|
*/
|
||||||
public function addConvertedVersion(StoredObject $storedObject, string $lang, $convertTo = 'pdf', bool $includeConvertedContent = false): array
|
public function addConvertedVersion(StoredObject $storedObject, string $lang, $convertTo = 'pdf', bool $includeConvertedContent = false): array
|
||||||
{
|
{
|
||||||
@@ -56,7 +58,7 @@ class StoredObjectToPdfConverter
|
|||||||
$currentVersion = $storedObject->getCurrentVersion();
|
$currentVersion = $storedObject->getCurrentVersion();
|
||||||
|
|
||||||
if ($currentVersion->getType() === $newMimeType) {
|
if ($currentVersion->getType() === $newMimeType) {
|
||||||
throw new \UnexpectedValueException('Already at the same mime type');
|
throw new ConversionWithSameMimeTypeException($newMimeType);
|
||||||
}
|
}
|
||||||
|
|
||||||
$content = $this->storedObjectManager->read($currentVersion);
|
$content = $this->storedObjectManager->read($currentVersion);
|
||||||
|
@@ -40,6 +40,10 @@ class StoredObjectVersionApiControllerTest extends \PHPUnit\Framework\TestCase
|
|||||||
$storedObject->registerVersion();
|
$storedObject->registerVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove one version in the history
|
||||||
|
$v5 = $storedObject->getVersions()->get(5);
|
||||||
|
$storedObject->removeVersion($v5);
|
||||||
|
|
||||||
$security = $this->prophesize(Security::class);
|
$security = $this->prophesize(Security::class);
|
||||||
$security->isGranted(StoredObjectRoleEnum::SEE->value, $storedObject)
|
$security->isGranted(StoredObjectRoleEnum::SEE->value, $storedObject)
|
||||||
->willReturn(true)
|
->willReturn(true)
|
||||||
@@ -53,6 +57,7 @@ class StoredObjectVersionApiControllerTest extends \PHPUnit\Framework\TestCase
|
|||||||
self::assertEquals($response->getStatusCode(), 200);
|
self::assertEquals($response->getStatusCode(), 200);
|
||||||
self::assertIsArray($body);
|
self::assertIsArray($body);
|
||||||
self::assertArrayHasKey('results', $body);
|
self::assertArrayHasKey('results', $body);
|
||||||
|
self::assertIsList($body['results']);
|
||||||
self::assertCount(10, $body['results']);
|
self::assertCount(10, $body['results']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -205,6 +205,11 @@ class ChillMainExtension extends Extension implements
|
|||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$container->setParameter(
|
||||||
|
'chill_main.top_banner',
|
||||||
|
$config['top_banner'] ?? []
|
||||||
|
);
|
||||||
|
|
||||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../config'));
|
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../config'));
|
||||||
$loader->load('services.yaml');
|
$loader->load('services.yaml');
|
||||||
$loader->load('services/doctrine.yaml');
|
$loader->load('services/doctrine.yaml');
|
||||||
@@ -250,6 +255,7 @@ class ChillMainExtension extends Extension implements
|
|||||||
'name' => $config['installation_name'], ],
|
'name' => $config['installation_name'], ],
|
||||||
'available_languages' => $config['available_languages'],
|
'available_languages' => $config['available_languages'],
|
||||||
'add_address' => $config['add_address'],
|
'add_address' => $config['add_address'],
|
||||||
|
'chill_main_config' => $config,
|
||||||
],
|
],
|
||||||
'form_themes' => ['@ChillMain/Form/fields.html.twig'],
|
'form_themes' => ['@ChillMain/Form/fields.html.twig'],
|
||||||
];
|
];
|
||||||
|
@@ -168,6 +168,20 @@ class Configuration implements ConfigurationInterface
|
|||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
|
->arrayNode('top_banner')
|
||||||
|
->canBeUnset()
|
||||||
|
->children()
|
||||||
|
->booleanNode('visible')
|
||||||
|
->defaultFalse()
|
||||||
|
->end()
|
||||||
|
->arrayNode('text')
|
||||||
|
->useAttributeAsKey('lang')
|
||||||
|
->scalarPrototype()->end()
|
||||||
|
->end() // end of text
|
||||||
|
->scalarNode('color')->defaultNull()->end()
|
||||||
|
->scalarNode('background_color')->defaultNull()->end()
|
||||||
|
->end() // end of top_banner children
|
||||||
|
->end() // end of top_banner
|
||||||
->arrayNode('widgets')
|
->arrayNode('widgets')
|
||||||
->canBeEnabled()
|
->canBeEnabled()
|
||||||
->canBeUnset()
|
->canBeUnset()
|
||||||
|
@@ -0,0 +1,17 @@
|
|||||||
|
{% if chill_main_config.top_banner is defined and chill_main_config.top_banner.text is defined %}
|
||||||
|
{% set banner_text = '' %}
|
||||||
|
{% set current_locale = app.request.locale %}
|
||||||
|
|
||||||
|
{% if chill_main_config.top_banner.text[current_locale] is defined %}
|
||||||
|
{% set banner_text = chill_main_config.top_banner.text[current_locale] %}
|
||||||
|
{% else %}
|
||||||
|
{% set banner_text = chill_main_config.top_banner.text|first %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if banner_text %}
|
||||||
|
<div class="top-banner w-100 text-center py-2"
|
||||||
|
style="{% if chill_main_config.top_banner.color is defined %}color: {{ chill_main_config.top_banner.color }};{% endif %}{% if chill_main_config.top_banner.background_color is defined %}background-color: {{ chill_main_config.top_banner.background_color }};{% endif %}">
|
||||||
|
{{ banner_text }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
@@ -21,8 +21,6 @@
|
|||||||
{{ form_row(form.title, { 'label': 'notification.subject'|trans }) }}
|
{{ form_row(form.title, { 'label': 'notification.subject'|trans }) }}
|
||||||
{{ form_row(form.addressees, { 'label': 'notification.sent_to'|trans }) }}
|
{{ form_row(form.addressees, { 'label': 'notification.sent_to'|trans }) }}
|
||||||
|
|
||||||
{{ form_row(form.addressesEmails) }}
|
|
||||||
|
|
||||||
{% include handler.template(notification) with handler.templateData(notification) %}
|
{% include handler.template(notification) with handler.templateData(notification) %}
|
||||||
|
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
|
@@ -26,6 +26,10 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
{% if chill_main_config.top_banner is defined and chill_main_config.top_banner.visible is true %}
|
||||||
|
{{ include('@ChillMain/Layout/_top_banner.html.twig') }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if responsive_debug is defined and responsive_debug == 1 %}
|
{% if responsive_debug is defined and responsive_debug == 1 %}
|
||||||
{{ include('@ChillMain/Layout/_debug.html.twig') }}
|
{{ include('@ChillMain/Layout/_debug.html.twig') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@@ -0,0 +1,98 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Chill is a software for social workers
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Chill\MainBundle\Tests\DependencyInjection;
|
||||||
|
|
||||||
|
use Chill\MainBundle\DependencyInjection\Configuration;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Symfony\Component\Config\Definition\Processor;
|
||||||
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*
|
||||||
|
* @coversNothing
|
||||||
|
*/
|
||||||
|
class ConfigurationTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testTopBannerConfiguration(): void
|
||||||
|
{
|
||||||
|
$containerBuilder = new ContainerBuilder();
|
||||||
|
$configuration = new Configuration([], $containerBuilder);
|
||||||
|
$processor = new Processor();
|
||||||
|
|
||||||
|
// Test with top_banner configuration
|
||||||
|
$config = [
|
||||||
|
'chill_main' => [
|
||||||
|
'top_banner' => [
|
||||||
|
'text' => [
|
||||||
|
'fr' => 'Vous travaillez actuellement avec la version de pré-production de Chill.',
|
||||||
|
'nl' => 'Je werkte momenteel in de pré-productie versie van Chill.',
|
||||||
|
],
|
||||||
|
'color' => 'white',
|
||||||
|
'background-color' => 'red',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$processedConfig = $processor->processConfiguration($configuration, $config);
|
||||||
|
|
||||||
|
self::assertArrayHasKey('top_banner', $processedConfig);
|
||||||
|
self::assertArrayHasKey('text', $processedConfig['top_banner']);
|
||||||
|
self::assertArrayHasKey('fr', $processedConfig['top_banner']['text']);
|
||||||
|
self::assertArrayHasKey('nl', $processedConfig['top_banner']['text']);
|
||||||
|
self::assertSame('white', $processedConfig['top_banner']['color']);
|
||||||
|
self::assertSame('red', $processedConfig['top_banner']['background_color']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testTopBannerConfigurationOptional(): void
|
||||||
|
{
|
||||||
|
$containerBuilder = new ContainerBuilder();
|
||||||
|
$configuration = new Configuration([], $containerBuilder);
|
||||||
|
$processor = new Processor();
|
||||||
|
|
||||||
|
// Test without top_banner configuration
|
||||||
|
$config = [
|
||||||
|
'chill_main' => [],
|
||||||
|
];
|
||||||
|
|
||||||
|
$processedConfig = $processor->processConfiguration($configuration, $config);
|
||||||
|
|
||||||
|
// top_banner should not be present when not configured
|
||||||
|
self::assertArrayNotHasKey('top_banner', $processedConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testTopBannerWithMinimalConfiguration(): void
|
||||||
|
{
|
||||||
|
$containerBuilder = new ContainerBuilder();
|
||||||
|
$configuration = new Configuration([], $containerBuilder);
|
||||||
|
$processor = new Processor();
|
||||||
|
|
||||||
|
// Test with minimal top_banner configuration (only text)
|
||||||
|
$config = [
|
||||||
|
'chill_main' => [
|
||||||
|
'top_banner' => [
|
||||||
|
'text' => [
|
||||||
|
'fr' => 'Test message',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$processedConfig = $processor->processConfiguration($configuration, $config);
|
||||||
|
|
||||||
|
self::assertArrayHasKey('top_banner', $processedConfig);
|
||||||
|
self::assertArrayHasKey('text', $processedConfig['top_banner']);
|
||||||
|
self::assertSame('Test message', $processedConfig['top_banner']['text']['fr']);
|
||||||
|
self::assertNull($processedConfig['top_banner']['color']);
|
||||||
|
self::assertNull($processedConfig['top_banner']['background_color']);
|
||||||
|
}
|
||||||
|
}
|
@@ -11,6 +11,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\MainBundle\Workflow\Messenger;
|
namespace Chill\MainBundle\Workflow\Messenger;
|
||||||
|
|
||||||
|
use Chill\DocStoreBundle\Exception\ConversionWithSameMimeTypeException;
|
||||||
use Chill\DocStoreBundle\Exception\StoredObjectManagerException;
|
use Chill\DocStoreBundle\Exception\StoredObjectManagerException;
|
||||||
use Chill\DocStoreBundle\Service\StoredObjectToPdfConverter;
|
use Chill\DocStoreBundle\Service\StoredObjectToPdfConverter;
|
||||||
use Chill\MainBundle\Entity\Workflow\EntityWorkflow;
|
use Chill\MainBundle\Entity\Workflow\EntityWorkflow;
|
||||||
@@ -55,6 +56,8 @@ final readonly class PostSendExternalMessageHandler implements MessageHandlerInt
|
|||||||
$this->storedObjectToPdfConverter->addConvertedVersion($attachment->getProxyStoredObject(), $locale);
|
$this->storedObjectToPdfConverter->addConvertedVersion($attachment->getProxyStoredObject(), $locale);
|
||||||
} catch (StoredObjectManagerException $e) {
|
} catch (StoredObjectManagerException $e) {
|
||||||
$this->logger->error('Error converting attachment to PDF', ['backtrace' => $e->getTraceAsString(), 'attachment_id' => $attachment->getId()]);
|
$this->logger->error('Error converting attachment to PDF', ['backtrace' => $e->getTraceAsString(), 'attachment_id' => $attachment->getId()]);
|
||||||
|
} catch (ConversionWithSameMimeTypeException $e) {
|
||||||
|
$this->logger->error('Error converting attachment to PDF: already at the same MIME type', ['backtrace' => $e->getTraceAsString(), 'attachment_id' => $attachment->getId()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,6 +68,8 @@ final readonly class PostSendExternalMessageHandler implements MessageHandlerInt
|
|||||||
$this->storedObjectToPdfConverter->addConvertedVersion($storedObject, $locale);
|
$this->storedObjectToPdfConverter->addConvertedVersion($storedObject, $locale);
|
||||||
} catch (StoredObjectManagerException $e) {
|
} catch (StoredObjectManagerException $e) {
|
||||||
$this->logger->error('Error converting stored object to PDF', ['backtrace' => $e->getTraceAsString(), 'stored_object_id' => $storedObject->getId(), 'workflow_id' => $entityWorkflow->getId()]);
|
$this->logger->error('Error converting stored object to PDF', ['backtrace' => $e->getTraceAsString(), 'stored_object_id' => $storedObject->getId(), 'workflow_id' => $entityWorkflow->getId()]);
|
||||||
|
} catch (ConversionWithSameMimeTypeException $e) {
|
||||||
|
$this->logger->error('Error converting stored object to PDF: already at the same MIME type', ['backtrace' => $e->getTraceAsString(), 'stored_object_id' => $storedObject->getId(), 'workflow_id' => $entityWorkflow->getId()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user