From d957a4ff3272cc4f32888b950eb762a8e3b47310 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lucas=20Garc=C3=ADa?= <lucas@codeccoop.org>
Date: Tue, 23 Apr 2024 20:54:55 +0200
Subject: [PATCH] feat: dropdown form id select

---
 includes/class-settings.php | 30 ++++++++++++++++++++++++++++++
 wpct-erp-forms.php          |  3 ---
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/includes/class-settings.php b/includes/class-settings.php
index 18ee8b2..de370a6 100644
--- a/includes/class-settings.php
+++ b/includes/class-settings.php
@@ -15,4 +15,34 @@ class Settings extends Abstract\Settings
 
         $this->register_field('endpoints', $setting_name);
     }
+
+	public function input_render($setting, $field, $value)
+	{
+		if (preg_match('/^endpoints.*form_id$/', $field)) {
+			return $this->render_forms_dropdown($setting, $field, $value);
+		}
+
+		return parent::input_render($setting, $field, $value);
+	}
+
+	private function render_forms_dropdown($setting, $field, $value)
+	{
+		$forms = $this->get_forms();
+		$options = array_map(function ($form) use ($value) {
+			$selected = $form->id == $value ? 'selected' : '';
+			return "<option value='{$form->id}' {$selected}>{$form->title}</option>";
+		}, $forms);
+		return "<select name='{$setting}[{$field}]'>" . implode('', $options) . '</select>';
+	}
+
+	private function get_forms()
+	{
+		global $wpdb;
+		if (apply_filters('wpct_dc_is_plugin_active', false, 'contact-form-7/wp-contact-form-7.php')) {
+			return $wpdb->get_results("SELECT id, post_title title FROM wp_posts WHERE post_status = 'publish'");
+        } elseif (apply_filters('wpct_dc_is_plugin_active', false, 'gravityforms/gravityforms.php')) {
+			return $wpdb->get_results("SELECT id, title FROM wp_gf_form WHERE is_active = TRUE");
+        }
+
+	}
 }
diff --git a/wpct-erp-forms.php b/wpct-erp-forms.php
index eac352d..a0c207e 100755
--- a/wpct-erp-forms.php
+++ b/wpct-erp-forms.php
@@ -36,9 +36,6 @@ require_once 'includes/class-settings.php';
 require_once 'custom-blocks/form/form.php';
 require_once 'custom-blocks/form-control/form-control.php';
 
-require_once 'includes/fields/gf/iban/class-field-adapter.php';
-require_once 'includes/fields/gf/vat-id/class-field-adapter.php';
-
 class Wpct_Erp_Forms extends Abstract\Plugin
 {
     private $_integrations = [];
-- 
GitLab