diff --git a/.env b/.env
index 26204360..395fe044 100644
--- a/.env
+++ b/.env
@@ -33,8 +33,6 @@ DEFAULT_LANG="en"
DEFAULT_TIMEZONE="Europe/Berlin"
# The currency that is used inside the DB (and is assumed when no currency is set). This can not be changed later, so be sure to set it the currency used in your country
BASE_CURRENCY="EUR"
-# The name of this installation. This will be shown as title in the browser and in the header of the website
-INSTANCE_NAME="Part-DB"
# Use gravatars for user avatars, when user has no own avatar defined
USE_GRAVATAR=0
@@ -66,21 +64,6 @@ EMAIL_SENDER_NAME="Part-DB Mailer"
# Set this to 1 to allow reset of a password per email
ALLOW_EMAIL_PW_RESET=0
-######################################################################################
-# History/Eventlog settings
-######################################################################################
-# If you want to use full timetrave functionality all values below have to be set to 1
-
-# Save which fields were changed in a ElementEdited log entry
-HISTORY_SAVE_CHANGED_FIELDS=1
-# Save the old data in the ElementEdited log entry (warning this could increase the database size in short time)
-HISTORY_SAVE_CHANGED_DATA=1
-# Save the data of an element that gets removed into log entry. This allows to undelete an element
-HISTORY_SAVE_REMOVED_DATA=1
-# Save the new data of an element that gets changed or added. This allows an easy comparison of the old and new data on the detail page
-# This option only becomes active when HISTORY_SAVE_CHANGED_DATA is set to 1
-HISTORY_SAVE_NEW_DATA=1
-
###################################################################################
# Error pages settings
###################################################################################
diff --git a/config/parameters.yaml b/config/parameters.yaml
index 46486935..8a581e12 100644
--- a/config/parameters.yaml
+++ b/config/parameters.yaml
@@ -136,9 +136,4 @@ parameters:
env(SAML_ROLE_MAPPING): '{}'
- env(HISTORY_SAVE_CHANGED_DATA): 1
- env(HISTORY_SAVE_CHANGED_FIELDS): 1
- env(HISTORY_SAVE_REMOVED_DATA): 1
- env(HISTORY_SAVE_NEW_DATA): 1
-
env(EDA_KICAD_CATEGORY_DEPTH): 0
diff --git a/config/services.yaml b/config/services.yaml
index a7c321c3..aba7d17c 100644
--- a/config/services.yaml
+++ b/config/services.yaml
@@ -76,11 +76,6 @@ services:
$whitelist: []
App\EventSubscriber\LogSystem\EventLoggerSubscriber:
- arguments:
- $save_changed_fields: '%env(bool:HISTORY_SAVE_CHANGED_FIELDS)%'
- $save_changed_data: '%env(bool:HISTORY_SAVE_CHANGED_DATA)%'
- $save_removed_data: '%env(bool:HISTORY_SAVE_REMOVED_DATA)%'
- $save_new_data: '%env(bool:HISTORY_SAVE_NEW_DATA)%'
tags:
- { name: 'doctrine.event_subscriber' }
diff --git a/src/EventSubscriber/LogSystem/EventLoggerSubscriber.php b/src/EventSubscriber/LogSystem/EventLoggerSubscriber.php
index b3f07a9b..a5c1be69 100644
--- a/src/EventSubscriber/LogSystem/EventLoggerSubscriber.php
+++ b/src/EventSubscriber/LogSystem/EventLoggerSubscriber.php
@@ -38,6 +38,7 @@ use App\Entity\UserSystem\User;
use App\Services\LogSystem\EventCommentHelper;
use App\Services\LogSystem\EventLogger;
use App\Services\LogSystem\EventUndoHelper;
+use App\Settings\SystemSettings\HistorySettings;
use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Event\OnFlushEventArgs;
@@ -71,14 +72,15 @@ class EventLoggerSubscriber implements EventSubscriber
];
protected const MAX_STRING_LENGTH = 2000;
- protected bool $save_new_data;
- public function __construct(protected EventLogger $logger, protected SerializerInterface $serializer, protected EventCommentHelper $eventCommentHelper,
- protected bool $save_changed_fields, protected bool $save_changed_data, protected bool $save_removed_data, bool $save_new_data,
- protected PropertyAccessorInterface $propertyAccessor, protected EventUndoHelper $eventUndoHelper)
+ public function __construct(
+ protected EventLogger $logger,
+ protected SerializerInterface $serializer,
+ protected EventCommentHelper $eventCommentHelper,
+ private readonly HistorySettings $settings,
+ protected PropertyAccessorInterface $propertyAccessor,
+ protected EventUndoHelper $eventUndoHelper)
{
- //This option only makes sense if save_changed_data is true
- $this->save_new_data = $save_new_data && $save_changed_data;
}
public function onFlush(OnFlushEventArgs $eventArgs): void
@@ -206,14 +208,14 @@ class EventLoggerSubscriber implements EventSubscriber
if ($this->eventUndoHelper->isUndo()) {
$log->setUndoneEvent($this->eventUndoHelper->getUndoneEvent(), $this->eventUndoHelper->getMode());
}
- if ($this->save_removed_data) {
+ if ($this->settings->saveRemovedData) {
//The 4th param is important here, as we delete the element...
$this->saveChangeSet($entity, $log, $em, true);
}
$this->logger->logFromOnFlush($log);
//Check if we have to log CollectionElementDeleted entries
- if ($this->save_changed_data) {
+ if ($this->settings->saveOldData) {
$metadata = $em->getClassMetadata($entity::class);
$mappings = $metadata->getAssociationMappings();
//Check if class is whitelisted for CollectionElementDeleted entry
@@ -249,9 +251,9 @@ class EventLoggerSubscriber implements EventSubscriber
}
$log = new ElementEditedLogEntry($entity);
- if ($this->save_changed_data) {
+ if ($this->settings->saveOldData) {
$this->saveChangeSet($entity, $log, $em);
- } elseif ($this->save_changed_fields) {
+ } elseif ($this->settings->saveChangedFields) {
$changed_fields = array_keys($uow->getEntityChangeSet($entity));
//Remove lastModified field, as this is always changed (gives us no additional info)
$changed_fields = array_diff($changed_fields, ['lastModified']);
@@ -319,7 +321,7 @@ class EventLoggerSubscriber implements EventSubscriber
$changeSet = $uow->getEntityChangeSet($entity);
$old_data = array_combine(array_keys($changeSet), array_column($changeSet, 0));
//If save_new_data is enabled, we extract it from the change set
- if ($this->save_new_data) {
+ if ($this->settings->saveNewData && $this->settings->saveOldData) { //Only useful if we save old data too
$new_data = array_combine(array_keys($changeSet), array_column($changeSet, 1));
}
}
diff --git a/src/Settings/SystemSettings.php b/src/Settings/SystemSettings.php
index 5376219f..8c3bfb0e 100644
--- a/src/Settings/SystemSettings.php
+++ b/src/Settings/SystemSettings.php
@@ -25,6 +25,7 @@ namespace App\Settings;
use App\Settings\SystemSettings\AttachmentsSettings;
use App\Settings\SystemSettings\CustomizationSettings;
+use App\Settings\SystemSettings\HistorySettings;
use Jbtronics\SettingsBundle\Settings\EmbeddedSettings;
use Jbtronics\SettingsBundle\Settings\Settings;
@@ -36,4 +37,7 @@ class SystemSettings
#[EmbeddedSettings()]
public ?AttachmentsSettings $attachments = null;
+
+ #[EmbeddedSettings()]
+ public ?HistorySettings $history = null;
}
\ No newline at end of file
diff --git a/src/Settings/SystemSettings/HistorySettings.php b/src/Settings/SystemSettings/HistorySettings.php
new file mode 100644
index 00000000..96353be7
--- /dev/null
+++ b/src/Settings/SystemSettings/HistorySettings.php
@@ -0,0 +1,56 @@
+.
+ */
+
+declare(strict_types=1);
+
+
+namespace App\Settings\SystemSettings;
+
+use Jbtronics\SettingsBundle\Metadata\EnvVarMode;
+use Jbtronics\SettingsBundle\Settings\Settings;
+use Jbtronics\SettingsBundle\Settings\SettingsParameter;
+use Symfony\Component\Translation\TranslatableMessage as TM;
+
+#[Settings(label: new TM("settings.system.history"))]
+class HistorySettings
+{
+ #[SettingsParameter(
+ label: new TM("settings.system.history.saveChangedFields"),
+ envVar: "bool:HISTORY_SAVE_CHANGED_FIELDS", envVarMode: EnvVarMode::OVERWRITE)]
+ public bool $saveChangedFields = true;
+
+ #[SettingsParameter(
+ label: new TM("settings.system.history.saveOldData"),
+ envVar: "bool:HISTORY_SAVE_CHANGED_DATA", envVarMode: EnvVarMode::OVERWRITE
+ )]
+ public bool $saveOldData = true;
+
+ #[SettingsParameter(
+ label: new TM("settings.system.history.saveNewData"),
+ envVar: "bool:HISTORY_SAVE_NEW_DATA", envVarMode: EnvVarMode::OVERWRITE
+ )]
+ public bool $saveNewData = true;
+
+ #[SettingsParameter(
+ label: new TM("settings.system.history.saveRemovedData"),
+ envVar: "bool:HISTORY_SAVE_REMOVED_DATA", envVarMode: EnvVarMode::OVERWRITE
+ )]
+ public bool $saveRemovedData = true;
+}
\ No newline at end of file
diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf
index 3b416be2..356a1335 100644
--- a/translations/messages.en.xlf
+++ b/translations/messages.en.xlf
@@ -12437,5 +12437,35 @@ Please note, that you can not impersonate a disabled user. If you try you will g
Homepage banner
+
+
+ settings.system.history
+ History log
+
+
+
+
+ settings.system.history.saveChangedFields
+ Save which fields of an element were changed in log entries
+
+
+
+
+ settings.system.history.saveOldData
+ Save the old data in log entries on element changes
+
+
+
+
+ settings.system.history.saveNewData
+ Save the new data in log entries on element change/creation
+
+
+
+
+ settings.system.history.saveRemovedData
+ Save removed data in log entries on element deletion
+
+