From 5a556b3186b45190ba0378b4508231066c7d99e3 Mon Sep 17 00:00:00 2001 From: Matt Gros <3311227+mpge@users.noreply.github.com> Date: Fri, 24 Apr 2026 06:56:54 -0400 Subject: [PATCH] feat(admin): public-ticket guest policy fields in settings page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds guest_policy_mode / guest_policy_user_id / guest_policy_signup_url_template to the existing Escalated settings admin page. WordPress doesn't use Inertia/Vue like the other host adapters — this ports the same capability using the plugin's native templates/admin/settings.php pattern. The sanitization pass rejects unknown mode values and clears stale fields when switching modes so the widget controller only sees settings that actually apply to the currently-selected mode. --- includes/Admin/class-admin-settings.php | 18 ++++++++++ templates/admin/settings.php | 47 +++++++++++++++++++++++++ 2 files changed, 65 insertions(+) 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 @@ + + + + + + + +

+ +

+ +

+ + + + +

+ +

+ + + + +

+ +