From edba2836de4e61c14cd71afac90bf0e48ff13988 Mon Sep 17 00:00:00 2001 From: Liam Williams Date: Mon, 2 Sep 2019 13:47:58 +0100 Subject: [PATCH] 1.2 Beta 3 - multi deletion delay --- XF/Entity/User.php | 12 ++++++++++++ _output/options/_metadata.json | 3 +++ .../liamw_accountdelete_repeat_delay.json | 12 ++++++++++++ _output/phrases/_metadata.json | 18 ++++++++++++++++++ ..._as_you_have_recently_cancelled_pending.txt | 1 + ...option.liamw_accountdelete_repeat_delay.txt | 1 + ...xplain.liamw_accountdelete_repeat_delay.txt | 1 + addon.json | 4 ++-- 8 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 _output/options/liamw_accountdelete_repeat_delay.json create mode 100644 _output/phrases/liamw_accountdelete_you_cannot_delete_your_account_as_you_have_recently_cancelled_pending.txt create mode 100644 _output/phrases/option.liamw_accountdelete_repeat_delay.txt create mode 100644 _output/phrases/option_explain.liamw_accountdelete_repeat_delay.txt diff --git a/XF/Entity/User.php b/XF/Entity/User.php index 8299240..29a8ddd 100644 --- a/XF/Entity/User.php +++ b/XF/Entity/User.php @@ -18,6 +18,18 @@ public function canDeleteSelf(&$error = null) return false; } + if (\XF::options()->liamw_accountdelete_repeat_delay) + { + $recentDeletionInitiation = $this->getRelationFinder('AccountDeletionLogs') + ->order('initiation_date', 'desc')->pluckFrom('initiation_date')->fetch(1)->first(); + + if ($recentDeletionInitiation && $recentDeletionInitiation > \XF::$time - (\XF::options()->liamw_accountdelete_repeat_delay * 24 * 60 * 60)) + { + $error = \XF::phraseDeferred('liamw_accountdelete_you_cannot_delete_your_account_as_you_have_recently_cancelled_pending'); + return false; + } + } + $criteria = $this->app()->criteria('XF:User', \XF::options()->liamw_accountdelete_user_criteria); $criteria->setMatchOnEmpty(true); diff --git a/_output/options/_metadata.json b/_output/options/_metadata.json index f4bb216..42843f1 100644 --- a/_output/options/_metadata.json +++ b/_output/options/_metadata.json @@ -11,6 +11,9 @@ "liamw_accountdelete_reminder_threshold.json": { "hash": "cab36375e3b6bad5aa8721e1c8fc34c8" }, + "liamw_accountdelete_repeat_delay.json": { + "hash": "656604c485098ec9f3fa45d8a2e349ac" + }, "liamw_accountdelete_user_criteria.json": { "hash": "87a141ae393dbf3dbc918e34829fc68b" } diff --git a/_output/options/liamw_accountdelete_repeat_delay.json b/_output/options/liamw_accountdelete_repeat_delay.json new file mode 100644 index 0000000..3c90005 --- /dev/null +++ b/_output/options/liamw_accountdelete_repeat_delay.json @@ -0,0 +1,12 @@ +{ + "edit_format": "spinbox", + "edit_format_params": "min=0\nunits={{ phrase('units_days') }}", + "data_type": "unsigned_integer", + "sub_options": [], + "validation_class": "", + "validation_method": "", + "default_value": "14", + "relations": { + "liamw_memberselfdelete": 25 + } +} \ No newline at end of file diff --git a/_output/phrases/_metadata.json b/_output/phrases/_metadata.json index c5b7b0d..6ec51d1 100644 --- a/_output/phrases/_metadata.json +++ b/_output/phrases/_metadata.json @@ -257,6 +257,12 @@ "version_string": "1.2.0 Beta 1", "hash": "534e329f4b7df5b35a84099f2c395b84" }, + "liamw_accountdelete_you_cannot_delete_your_account_as_you_have_recently_cancelled_pending.txt": { + "global_cache": false, + "version_id": 1020033, + "version_string": "1.2.0 Beta 3", + "hash": "71ea1fb7dd48261a96f52585335216b1" + }, "liamw_accountdelete_you_cannot_delete_your_account_using_this_system_as_you_member_of.txt": { "global_cache": false, "version_id": 1010010, @@ -299,6 +305,12 @@ "version_string": "1.1.0 Alpha", "hash": "0eea4a4aa6ba6334e710a586c48fa0e2" }, + "option.liamw_accountdelete_repeat_delay.txt": { + "global_cache": false, + "version_id": 1020033, + "version_string": "1.2.0 Beta 3", + "hash": "1b1c9fcf0acab14cd086d38a92696e50" + }, "option.liamw_accountdelete_user_criteria.txt": { "global_cache": false, "version_id": 1010035, @@ -329,6 +341,12 @@ "version_string": "1.1.0 Alpha", "hash": "aea2ed409170c4706c95e317591816ea" }, + "option_explain.liamw_accountdelete_repeat_delay.txt": { + "global_cache": false, + "version_id": 1020033, + "version_string": "1.2.0 Beta 3", + "hash": "4e248eb2e7103696390d0b26ba3c37ab" + }, "option_explain.liamw_accountdelete_user_criteria.txt": { "global_cache": false, "version_id": 1010035, diff --git a/_output/phrases/liamw_accountdelete_you_cannot_delete_your_account_as_you_have_recently_cancelled_pending.txt b/_output/phrases/liamw_accountdelete_you_cannot_delete_your_account_as_you_have_recently_cancelled_pending.txt new file mode 100644 index 0000000..ca54fb6 --- /dev/null +++ b/_output/phrases/liamw_accountdelete_you_cannot_delete_your_account_as_you_have_recently_cancelled_pending.txt @@ -0,0 +1 @@ +You cannot delete your account as you have recently cancelled a pending deletion. \ No newline at end of file diff --git a/_output/phrases/option.liamw_accountdelete_repeat_delay.txt b/_output/phrases/option.liamw_accountdelete_repeat_delay.txt new file mode 100644 index 0000000..9a65a5b --- /dev/null +++ b/_output/phrases/option.liamw_accountdelete_repeat_delay.txt @@ -0,0 +1 @@ +Repeated delation delay \ No newline at end of file diff --git a/_output/phrases/option_explain.liamw_accountdelete_repeat_delay.txt b/_output/phrases/option_explain.liamw_accountdelete_repeat_delay.txt new file mode 100644 index 0000000..54d564c --- /dev/null +++ b/_output/phrases/option_explain.liamw_accountdelete_repeat_delay.txt @@ -0,0 +1 @@ +If set to a non-zero value, users will be unable to access to account deletion page for this many days after last requesting their account be deleted. \ No newline at end of file diff --git a/addon.json b/addon.json index 8b25931..f7b3d8f 100644 --- a/addon.json +++ b/addon.json @@ -2,8 +2,8 @@ "legacy_addon_id": "", "title": "Member Self Delete", "description": "Gives board members the ability to delete or disable their accounts.", - "version_id": 1020032, - "version_string": "1.2.0 Beta 2", + "version_id": 1020033, + "version_string": "1.2.0 Beta 3", "dev": "Liam Williams", "dev_url": "https://lw-addons.net", "faq_url": "",