From 13cce6c3c10c2d011963848ddb1688e222f0e3ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Wed, 1 Dec 2021 08:45:23 +0100 Subject: [PATCH 1/6] Fix to bug on default purge setting not saving. --- os2forms_forloeb.module | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 45345e1..7b2b403 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -128,13 +128,19 @@ function end_notification_batch_function($processID, $queueID) { /** * Implements hook_ENTITY_TYPE_create() - * Sets a global purge setting for all webform submissions to 30 days + * Sets a global purge setting for all webform submissions to 30 days and accepts changes. */ function os2forms_forloeb_webform_create(\Drupal\webform\WebformInterface $webform) { // Set purge of all users submissions. $webform->setSetting('purge', 'all'); // Set purge of submissions more than 30 days old. - $webform->setSetting('purge_days', '30'); + if (empty($webform->getSetting('purge_days'))) { + $webform->setSetting('purge_days', '30'); + } + // Save if time period has been changed. + if ($save_webform) { + $webform->save(); + } } /** From 1104ca9acaf8b1940c108f797509a94e4d93c69d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Tue, 7 Dec 2021 16:06:50 +0100 Subject: [PATCH 2/6] Better handling of submissions purge logic --- os2forms_forloeb.module | 62 +++++++++++++++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 11 deletions(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 7b2b403..558335d 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -128,19 +128,59 @@ function end_notification_batch_function($processID, $queueID) { /** * Implements hook_ENTITY_TYPE_create() - * Sets a global purge setting for all webform submissions to 30 days and accepts changes. + * Sets a global purge setting for all webform submissions to 30 days. */ function os2forms_forloeb_webform_create(\Drupal\webform\WebformInterface $webform) { - // Set purge of all users submissions. - $webform->setSetting('purge', 'all'); - // Set purge of submissions more than 30 days old. - if (empty($webform->getSetting('purge_days'))) { - $webform->setSetting('purge_days', '30'); - } - // Save if time period has been changed. - if ($save_webform) { - $webform->save(); - } + // Set purge of all users submissions. + $webform->setSetting('purge', 'all'); + // Set purge of submissions more than 30 days old. + if (empty($webform->getSetting('purge_days'))) { + $webform->setSetting('purge_days', '30'); + } +} + +/** + * Implements hook_ENTITY_TYPE_update() + * Update webform specific submissions purge settings. + */ +function os2forms_forloeb_webform_presave(WebformInterface $webform) { + // Setup purge setting. + $purge_setting = $webform->getSetting('purge'); + // Set an appropriate default purge setting. + if (!empty($purge_setting)) { + switch ($purge_setting) { + // We need to make sure drafts are purged as well. + case WebformSubmissionStorageInterface::PURGE_COMPLETED: + $purge = WebformSubmissionStorageInterface::PURGE_ALL; + break; + default: + $purge = WebformSubmissionStorageInterface::PURGE_DRAFT; + break; + } + } + else { + $purge = WebformSubmissionStorageInterface::PURGE_DRAFT; + } + // Enable the draft save if not already set. + $draft_setting = $webform->getSetting('draft'); + if ($draft_setting !== WebformInterface::DRAFT_ALL) { + $webform->setSetting('draft', WebformInterface::DRAFT_ALL); + $save_webform = TRUE; + } + // Set purge status to prevent clutter in the db. + if ($purge_setting !== WebformSubmissionStorageInterface::PURGE_ALL || $purge_setting !== WebformSubmissionStorageInterface::PURGE_DRAFT) { + $webform->setSetting('purge', $purge); + $save_webform = TRUE; + } + // Add a purge time frame if not set. + if (empty($webform->getSetting('purge_days'))) { + $webform->setSetting('purge_days', 30); + $save_webform = TRUE; + } + // Save if anything changed. + if ($save_webform) { + $webform->save(); + } } /** From 1486d6ba0a6c48fb2bff58e4281c40d08b037452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Tue, 7 Dec 2021 19:22:08 +0100 Subject: [PATCH 3/6] Refactor and webform save error --- os2forms_forloeb.module | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 558335d..4a6edef 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -143,35 +143,7 @@ function os2forms_forloeb_webform_create(\Drupal\webform\WebformInterface $webfo * Implements hook_ENTITY_TYPE_update() * Update webform specific submissions purge settings. */ -function os2forms_forloeb_webform_presave(WebformInterface $webform) { - // Setup purge setting. - $purge_setting = $webform->getSetting('purge'); - // Set an appropriate default purge setting. - if (!empty($purge_setting)) { - switch ($purge_setting) { - // We need to make sure drafts are purged as well. - case WebformSubmissionStorageInterface::PURGE_COMPLETED: - $purge = WebformSubmissionStorageInterface::PURGE_ALL; - break; - default: - $purge = WebformSubmissionStorageInterface::PURGE_DRAFT; - break; - } - } - else { - $purge = WebformSubmissionStorageInterface::PURGE_DRAFT; - } - // Enable the draft save if not already set. - $draft_setting = $webform->getSetting('draft'); - if ($draft_setting !== WebformInterface::DRAFT_ALL) { - $webform->setSetting('draft', WebformInterface::DRAFT_ALL); - $save_webform = TRUE; - } - // Set purge status to prevent clutter in the db. - if ($purge_setting !== WebformSubmissionStorageInterface::PURGE_ALL || $purge_setting !== WebformSubmissionStorageInterface::PURGE_DRAFT) { - $webform->setSetting('purge', $purge); - $save_webform = TRUE; - } +function os2forms_forloeb_webform_presave(\Drupal\webform\WebformInterface $webform) { // Add a purge time frame if not set. if (empty($webform->getSetting('purge_days'))) { $webform->setSetting('purge_days', 30); From ab8e12353e5067741458a06578f42fb1502946bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Tue, 7 Dec 2021 19:37:11 +0100 Subject: [PATCH 4/6] Small change to purge logic --- os2forms_forloeb.module | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 4a6edef..6966014 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -148,10 +148,10 @@ function os2forms_forloeb_webform_presave(\Drupal\webform\WebformInterface $webf if (empty($webform->getSetting('purge_days'))) { $webform->setSetting('purge_days', 30); $save_webform = TRUE; - } - // Save if anything changed. - if ($save_webform) { - $webform->save(); + // Save if anything changed. + if ($save_webform) { + $webform->save(); + } } } From 441bf10be237e05a7368d18ddf67399fe9be75e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Wed, 8 Dec 2021 09:05:48 +0100 Subject: [PATCH 5/6] Remove save_webform check logic to always save changes. --- os2forms_forloeb.module | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 6966014..7e0fa12 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -147,12 +147,10 @@ function os2forms_forloeb_webform_presave(\Drupal\webform\WebformInterface $webf // Add a purge time frame if not set. if (empty($webform->getSetting('purge_days'))) { $webform->setSetting('purge_days', 30); - $save_webform = TRUE; // Save if anything changed. - if ($save_webform) { - $webform->save(); - } + $webform->save(); } + } /** From 642823629aab8b8b5dedbefc3c7d07fb51219df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mads=20N=C3=B8rgaard?= Date: Wed, 8 Dec 2021 09:41:15 +0100 Subject: [PATCH 6/6] Refactor upon review --- os2forms_forloeb.module | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/os2forms_forloeb.module b/os2forms_forloeb.module index 7e0fa12..e4d1c40 100644 --- a/os2forms_forloeb.module +++ b/os2forms_forloeb.module @@ -140,17 +140,14 @@ function os2forms_forloeb_webform_create(\Drupal\webform\WebformInterface $webfo } /** - * Implements hook_ENTITY_TYPE_update() + * Implements hook_ENTITY_TYPE_presave() * Update webform specific submissions purge settings. */ function os2forms_forloeb_webform_presave(\Drupal\webform\WebformInterface $webform) { // Add a purge time frame if not set. if (empty($webform->getSetting('purge_days'))) { $webform->setSetting('purge_days', 30); - // Save if anything changed. - $webform->save(); } - } /**