. */ declare(strict_types=1); namespace App\Settings\SystemSettings; use App\Form\History\EnforceEventCommentTypesType; use App\Services\LogSystem\EventCommentType; use App\Settings\SettingsIcon; use Jbtronics\SettingsBundle\Metadata\EnvVarMode; use Jbtronics\SettingsBundle\ParameterTypes\ArrayType; use Jbtronics\SettingsBundle\ParameterTypes\EnumType; use Jbtronics\SettingsBundle\Settings\Settings; use Jbtronics\SettingsBundle\Settings\SettingsParameter; use Jbtronics\SettingsBundle\Settings\SettingsTrait; use Symfony\Component\Translation\TranslatableMessage as TM; #[Settings(label: new TM("settings.system.history"))] #[SettingsIcon("fa-binoculars")] class HistorySettings { use SettingsTrait; #[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; /** @var EventCommentType[] */ #[SettingsParameter( type: ArrayType::class, label: new TM("settings.system.history.enforceComments"), description: new TM("settings.system.history.enforceComments.description"), options: ['type' => EnumType::class, 'nullable' => false, 'options' => ['class' => EventCommentType::class]], formType: EnforceEventCommentTypesType::class, formOptions: ['required' => false, "empty_data" => []], envVar: "ENFORCE_CHANGE_COMMENTS_FOR", envVarMode: EnvVarMode::OVERWRITE, envVarMapper: [self::class, 'mapEnforceComments'] )] public array $enforceComments = []; public static function mapEnforceComments(string $value): array { if (trim($value) === '') { return []; } $explode = explode(',', $value); return array_map(fn(string $type) => EventCommentType::from($type), $explode); } }