Skip to content

Commit 1c87f1d

Browse files
author
Stanislav Kutasevits
committed
Merge branch 'release/3.14.0'
* release/3.14.0: Preparing 3.14.0 OS-64 Setting a standard value for Automatic purge
2 parents ba54de8 + b4a43aa commit 1c87f1d

File tree

3 files changed

+38
-3
lines changed

3 files changed

+38
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ before starting to add changes. Use example [placed in the end of the page](#exa
1111

1212
## [Unreleased]
1313

14+
## [3.14.0]
15+
16+
- [OS-64] Setting a standard value for Automatic purge [#80](https://github.com/OS2Forms/os2forms/pull/80)
17+
1418
## [3.13.3] 2023-12-05
1519

1620
- [#76](https://github.com/OS2Forms/os2forms/pull/76)

modules/os2forms_forloeb/os2forms_forloeb.module

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,14 @@ function _os2forms_forloeb_end_notification_batch_function($processID, $queueID)
144144
function os2forms_forloeb_webform_create(WebformInterface $webform) {
145145
// Set purge of all users submissions.
146146
$webform->setSetting('purge', 'all');
147-
// Set purge of submissions more than 30 days old.
147+
148+
// Set purge of submissions if empty.
148149
if (empty($webform->getSetting('purge_days'))) {
149-
$webform->setSetting('purge_days', '30');
150+
/** @var \Drupal\webform\WebformThirdPartySettingsManagerInterface $third_party_settings_manager */
151+
$third_party_settings_manager = \Drupal::service('webform.third_party_settings_manager');
152+
$os2forms_forloeb_settings = $third_party_settings_manager->getThirdPartySetting('os2forms', 'os2forms_forloeb') ?: 30;
153+
154+
$webform->setSetting('purge_days', $os2forms_forloeb_settings['purge_days']);
150155
}
151156
}
152157

@@ -158,7 +163,11 @@ function os2forms_forloeb_webform_create(WebformInterface $webform) {
158163
function os2forms_forloeb_webform_presave(WebformInterface $webform) {
159164
// Add a purge time frame if not set.
160165
if (empty($webform->getSetting('purge_days'))) {
161-
$webform->setSetting('purge_days', 30);
166+
/** @var \Drupal\webform\WebformThirdPartySettingsManagerInterface $third_party_settings_manager */
167+
$third_party_settings_manager = \Drupal::service('webform.third_party_settings_manager');
168+
$os2forms_forloeb_settings = $third_party_settings_manager->getThirdPartySetting('os2forms', 'os2forms_forloeb') ?: 30;
169+
170+
$webform->setSetting('purge_days', $os2forms_forloeb_settings['purge_days']);
162171
}
163172
}
164173

@@ -374,3 +383,21 @@ function os2forms_forloeb_theme(array &$variables) {
374383
function _os2forms_forloeb_helper(): MaestroHelper {
375384
return Drupal::service(MaestroHelper::class);
376385
}
386+
387+
/**
388+
* Implements hook_form_FORM_ID_alter().
389+
*
390+
* Exposing settings for general OS2forms admin settings.
391+
*/
392+
function os2forms_forloeb_form_os2forms_settings_alter(&$form, FormStateInterface $form_state) {
393+
/** @var \Drupal\webform\WebformThirdPartySettingsManagerInterface $third_party_settings_manager */
394+
$third_party_settings_manager = \Drupal::service('webform.third_party_settings_manager');
395+
$os2forms_forloeb_settings = $third_party_settings_manager->getThirdPartySetting('os2forms', 'os2forms_forloeb') ?: 30;
396+
397+
$form['third_party_settings']['os2forms']['os2forms_forloeb']['purge_days'] = [
398+
'#type' => 'textfield',
399+
'#title' => t('Default number of days to retain submissions'),
400+
'#default_value' => !(empty($os2forms_forloeb_settings)) ? $os2forms_forloeb_settings['purge_days'] : 30,
401+
'#description' => t('Default value is used when creating a new form, after that it is saved on a form level'),
402+
];
403+
}

src/Form/SettingsForm.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
7474
foreach ($settings as $settingKey => $settingValues) {
7575
$savedSettings = $this->thirdPartySettingsManager->getThirdPartySetting($module_key, $settingKey);
7676
if (is_array($settingValues)) {
77+
if (!$savedSettings) {
78+
$savedSettings = [];
79+
}
80+
7781
$savedSettings = array_replace($savedSettings, $settingValues);
7882
}
7983
else {

0 commit comments

Comments
 (0)