diff --git a/includes/Admin/class-admin-settings.php b/includes/Admin/class-admin-settings.php index 60c069b..d39cfa5 100644 --- a/includes/Admin/class-admin-settings.php +++ b/includes/Admin/class-admin-settings.php @@ -78,6 +78,11 @@ public function handle_save(): void 'max_attachment_size_kb' => 'absint', 'max_attachments_per_reply' => 'absint', + // Public-ticket guest policy + 'guest_policy_mode' => 'sanitize_text_field', + 'guest_policy_user_id' => 'absint', + 'guest_policy_signup_url_template' => 'esc_url_raw', + // Maintenance 'activity_purge_days' => 'absint', ]; @@ -105,6 +110,19 @@ public function handle_save(): void } } + // Guest policy mode: reject unknown values, clear fields that don't apply. + $mode = Setting::get('guest_policy_mode', 'unassigned'); + if (! in_array($mode, ['unassigned', 'guest_user', 'prompt_signup'], true)) { + Setting::set('guest_policy_mode', 'unassigned'); + $mode = 'unassigned'; + } + if ($mode !== 'guest_user') { + Setting::set('guest_policy_user_id', ''); + } + if ($mode !== 'prompt_signup') { + Setting::set('guest_policy_signup_url_template', ''); + } + $redirect = admin_url('admin.php?page=escalated-settings&message=saved'); wp_safe_redirect($redirect); exit; diff --git a/templates/admin/settings.php b/templates/admin/settings.php index fd3fe8d..eb05fc0 100644 --- a/templates/admin/settings.php +++ b/templates/admin/settings.php @@ -67,6 +67,53 @@ +
+ +
+ ++ + + + +
+ ++ + + + +
+