PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.0.83
OttoKit: All-in-One Automation Platform v1.0.83
1.1.38 1.1.37 1.1.36 1.1.35 1.1.34 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 / bricks-builder / triggers / bricksbuilder-submit-form.php
suretriggers / src / Integrations / bricks-builder / triggers Last commit date
bricksbuilder-submit-form.php 1 year ago
bricksbuilder-submit-form.php
207 lines
1 <?php
2 /**
3 * UserSubmitsBricksBuilderForm.
4 * php version 5.6
5 *
6 * @category UserSubmitsBricksBuilderForm
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\BricksBuilder\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18
19 if ( ! class_exists( 'UserSubmitsBricksBuilderForm' ) ) :
20
21 /**
22 * UserSubmitsBricksBuilderForm
23 *
24 * @category UserSubmitsBricksBuilderForm
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 class UserSubmitsBricksBuilderForm {
32
33 /**
34 * Integration type.
35 *
36 * @var string
37 */
38 public $integration = 'BricksBuilder';
39
40 /**
41 * Trigger name.
42 *
43 * @var string
44 */
45 public $trigger = 'user_submits_bricks_builder_form';
46
47 use SingletonLoader;
48
49 /**
50 * Constructor
51 *
52 * @since 1.0.0
53 */
54 public function __construct() {
55 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
56 }
57
58 /**
59 * Register action.
60 *
61 * @param array $triggers trigger data.
62 * @return array
63 */
64 public function register( $triggers ) {
65 $triggers[ $this->integration ][ $this->trigger ] = [
66 'label' => __( 'Form Submitted', 'suretriggers' ),
67 'action' => 'user_submits_bricks_builder_form',
68 'common_action' => 'bricksbuilder_after_form_submit',
69 'function' => [ $this, 'trigger_listener' ],
70 'priority' => 10,
71 'accepted_args' => 2,
72 ];
73
74 return $triggers;
75 }
76
77 /**
78 * Change field label.
79 *
80 * @param string $label label.
81 * @return string
82 */
83 public function modify_field_label( $label ) {
84 $label = trim( $label );
85 if ( strpos( $label, ' ' ) !== false ) {
86 $label_str = explode( ' ', $label );
87 $result_str = array_map(
88 function ( $val ) {
89 return strtolower( $val );
90 },
91 $label_str
92 );
93 $label = implode( '_', $result_str );
94 } else {
95 $label = strtolower( $label );
96 }
97 return $label;
98 }
99
100 /**
101 * Trigger listener
102 *
103 * @param array $response The response object.
104 * @param array $obj Bricks Form Object.
105 * @since 1.0.0
106 *
107 * @return void
108 */
109 public function trigger_listener( $response, $obj ) {
110 if ( ! check_ajax_referer( 'bricks-nonce-form', 'nonce', false ) ) {
111 return;
112 }
113 $post_data = sanitize_post( $_POST );
114
115 $files_data = $obj->get_uploaded_files();
116 $context = [];
117 if ( ! empty( $post_data ) ) {
118 $form_id = ( isset( $post_data['formId'] ) ) ? sanitize_text_field( $post_data['formId'] ) : 0;
119 $context['form_id'] = $form_id;
120 $fields = [];
121 $form_fields = [];
122 $file_fields = [];
123 $file_field_labels = [];
124 foreach ( $post_data as $key => $value ) {
125 if ( str_contains( $key, 'form-field-' ) ) {
126 $field_id = str_replace( 'form-field-', '', $key );
127 $fields[ $field_id ] = $value;
128 } else {
129 $fields[ $key ] = $value;
130 }
131 }
132
133 $bricks_settings = (array) get_option( BRICKS_DB_GLOBAL_SETTINGS );
134 if ( array_key_exists( 'postTypes', $bricks_settings ) ) {
135 $bricks_posts = $bricks_settings['postTypes'];
136 } else {
137 $bricks_posts = [];
138 }
139 $bricks_posts[] = 'bricks_template';
140
141 $args = [
142 'post_type' => $bricks_posts,
143 'post_status' => 'publish',
144 'posts_per_page' => -1,
145 ];
146
147 $templates = get_posts( $args );
148
149 if ( ! empty( $templates ) ) { // Check if submitted form has fields.
150 foreach ( $templates as $template ) {
151 $bb_contents = get_post_meta( $template->ID, BRICKS_DB_PAGE_CONTENT, true ); // Fetch form contents.
152 if ( ! empty( $bb_contents ) ) {
153 foreach ( $bb_contents as $content ) {
154 if ( $form_id === $content['id'] ) {
155 $context['template_name'] = html_entity_decode( get_the_title( $template->ID ), ENT_QUOTES, 'UTF-8' );
156 $form_fields = ( isset( $content['settings']['fields'] ) ) ? $content['settings']['fields'] : [];
157 }
158 }
159 }
160 }
161
162 if ( ! empty( $form_fields ) ) {
163 foreach ( $form_fields as $field ) {
164 if ( is_array( $field ) && isset( $field['name'] ) ) {
165 $field_name = str_replace( ' ', '_', $field['name'] );
166 }
167 if ( isset( $fields[ $field['id'] ] ) ) {
168 $fd_label = ! empty( $field['label'] ) ? $field['label'] : $field['id'];
169 $context[ $this->modify_field_label( $fd_label ) ] = $fields[ $field['id'] ];
170 } elseif ( is_array( $field ) && isset( $field_name ) && isset( $fields[ (string) $field_name ] ) ) {
171 $fd_label = ! empty( $field['label'] ) ? $field['label'] : $field_name;
172 $context[ $this->modify_field_label( $fd_label ) ] = $fields[ (string) $field_name ];
173 } else {
174 $file_fields[] = $field['id'];
175 $file_field_labels[ $field['id'] ] = ! empty( $field['label'] ) ? $field['label'] : $field['id'];
176 }
177 }
178 if ( ! empty( $file_fields ) ) {
179 foreach ( $file_fields as $file_field ) {
180 $key = 'form-field-' . $file_field;
181 $label = $file_field_labels[ $file_field ];
182 $urls = [];
183 if ( isset( $files_data[ $key ] ) && is_array( $files_data[ $key ] ) ) {
184 foreach ( $files_data[ $key ] as $value ) {
185 $urls[] = $value['url'];
186 }
187 }
188 $context[ $this->modify_field_label( $label ) ] = $urls;
189 }
190 }
191 }
192 }
193 }
194
195 AutomationController::sure_trigger_handle_trigger(
196 [
197 'trigger' => $this->trigger,
198 'context' => $context,
199 ]
200 );
201 }
202 }
203
204 UserSubmitsBricksBuilderForm::get_instance();
205
206 endif;
207