PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / bricksforge / triggers / form-submitted.php
suretriggers / src / Integrations / bricksforge / triggers Last commit date
form-submitted.php 1 month ago
form-submitted.php
155 lines
1 <?php
2 /**
3 * BricksforgeFormSubmitted.
4 * php version 5.6
5 *
6 * @category BricksforgeFormSubmitted
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\Bricksforge\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18
19 if ( ! class_exists( 'BricksforgeFormSubmitted' ) ) :
20
21 /**
22 * BricksforgeFormSubmitted
23 *
24 * @category BricksforgeFormSubmitted
25 * @package SureTriggers
26 * @author BSF <username@example.com>
27 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
28 * @link https://www.brainstormforce.com/
29 * @since 1.0.0
30 *
31 * @psalm-suppress UndefinedTrait
32 */
33 class BricksforgeFormSubmitted {
34
35 /**
36 * Integration type.
37 *
38 * @var string
39 */
40 public $integration = 'Bricksforge';
41
42 /**
43 * Trigger name.
44 *
45 * @var string
46 */
47 public $trigger = 'bricksforge_form_submitted';
48
49 use SingletonLoader;
50
51 /**
52 * Constructor
53 *
54 * @since 1.0.0
55 */
56 public function __construct() {
57 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
58 }
59
60 /**
61 * Register action.
62 *
63 * @param array $triggers trigger data.
64 * @return array
65 */
66 public function register( $triggers ) {
67 $triggers[ $this->integration ][ $this->trigger ] = [
68 'label' => __( 'Form Submitted', 'suretriggers' ),
69 'action' => 'bricksforge_form_submitted',
70 'common_action' => 'bricksforge/pro_forms/after_submit',
71 'function' => [ $this, 'trigger_listener' ],
72 'priority' => 10,
73 'accepted_args' => 2,
74 ];
75
76 return $triggers;
77 }
78
79 /**
80 * Trigger listener
81 *
82 * Fires after a Bricksforge Pro Form is submitted successfully.
83 * $form_data is the Pro Forms handler object; calling get_fields() returns
84 * an array keyed by 'formId' and 'form-field-{field_id}'.
85 *
86 * @param mixed $form_data Bricksforge Pro Forms handler object or form data array.
87 * @param mixed $results Results of all form actions after submission.
88 * @since 1.0.0
89 *
90 * @return void
91 */
92 public function trigger_listener( $form_data, $results ) {
93 $fields = [];
94
95 if ( is_object( $form_data ) && method_exists( $form_data, 'get_fields' ) ) {
96 $raw = $form_data->get_fields();
97 if ( is_array( $raw ) ) {
98 $fields = $raw;
99 }
100 } elseif ( is_array( $form_data ) ) {
101 $fields = $form_data;
102 }
103
104 if ( empty( $fields ) ) {
105 return;
106 }
107
108 $context = [];
109
110 // Extract form ID — Bricksforge uses 'formId' (camelCase) in get_fields().
111 if ( isset( $fields['formId'] ) && ( is_string( $fields['formId'] ) || is_numeric( $fields['formId'] ) ) ) {
112 $context['form_id'] = sanitize_text_field( (string) $fields['formId'] );
113 } elseif ( isset( $fields['form_id'] ) && ( is_string( $fields['form_id'] ) || is_numeric( $fields['form_id'] ) ) ) {
114 $context['form_id'] = sanitize_text_field( (string) $fields['form_id'] );
115 }
116
117 // Extract submitted field values.
118 // Bricksforge prefixes field keys with 'form-field-'; strip this prefix
119 // so the context key matches the Field ID the user configured.
120 foreach ( $fields as $key => $value ) {
121 if ( ! is_string( $key ) ) {
122 continue;
123 }
124
125 if ( 'formId' === $key || 'form_id' === $key ) {
126 // Already handled above.
127 continue;
128 }
129
130 if ( strpos( $key, 'form-field-' ) === 0 ) {
131 $field_key = substr( $key, 11 ); // strip 'form-field-' (11 chars).
132 $context[ $field_key ] = $value;
133 } else {
134 $context[ $key ] = $value;
135 }
136 }
137
138 AutomationController::sure_trigger_handle_trigger(
139 [
140 'trigger' => $this->trigger,
141 'context' => $context,
142 ]
143 );
144 }
145 }
146
147 /**
148 * Ignore false positive
149 *
150 * @psalm-suppress UndefinedMethod
151 */
152 BricksforgeFormSubmitted::get_instance();
153
154 endif;
155