PluginProbe
WANotifier for Forms and Actions / trunk
WANotifier for Forms and Actions vtrunk
3.1.0 3.0.4 2.7.10 2.7.11 2.7.12 2.7.13 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 3.0.0 3.0.1 3.0.2 3.0.3 trunk 0.1.0 0.1.1 1.0.0 1.0.1 1.0.2 1.0.3 All 66 releases
notifier / includes / classes / integrations / class-notifier-forminator.php

class-notifier-forminator.php in WANotifier for Forms and Actions trunk, at includes/classes/integrations/class-notifier-forminator.php

154 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit;
4 }
5
6 class Notifier_Forminator {
7
8 /**
9 * Init
10 */
11 public static function init() {
12 add_filter( 'notifier_notification_triggers', array( __CLASS__, 'add_triggers'), 10 );
13 }
14
15 /**
16 * Add notification triggers
17 */
18 public static function add_triggers( $existing_triggers ) {
19
20 if ( ! class_exists( 'Forminator' ) || ! post_type_exists( 'forminator_forms' ) ) {
21 return $existing_triggers;
22 }
23
24 $triggers = array();
25
26 $form_ids = get_posts(array(
27 'post_type' => 'forminator_forms',
28 'post_status' => 'publish',
29 'numberposts' => -1,
30 'fields' => 'ids'
31 ));
32
33 foreach ( $form_ids as $form_id ) {
34
35 $trigger_id = 'forminator_' . $form_id;
36 $title = get_the_title( $form_id );
37
38 $triggers[] = array(
39 'id' => $trigger_id,
40 'label' => 'Form "' . $title . '" is submitted',
41 'description' => 'Trigger notification when <b>' . $title . '</b> form is submitted.',
42 'merge_tags' => self::get_merge_tags( $form_id ),
43 'recipient_fields' => self::get_recipient_fields( $form_id ),
44 'action' => array(
45 'hook' => 'forminator_form_after_save_entry',
46 'args_num' => 2,
47 'callback' => function ( $form_id_hook, $response ) use ( $trigger_id, $form_id ) {
48 if ( (int) $form_id_hook !== (int) $form_id ) {
49 return;
50 }
51
52 $sanitized_data = array();
53
54 if ( isset( $_POST ) ) {
55 foreach ( $_POST as $key => $value ) {
56
57 if ( is_array( $value ) ) {
58 $sanitized_data[ $key ] = notifier_sanitize_array( $value );
59 } else {
60 $sanitized_data[ $key ] = sanitize_text_field( $value );
61 }
62 }
63 }
64
65 Notifier_Notification_Triggers::send_trigger_request(
66 $trigger_id,
67 $sanitized_data
68 );
69 }
70 )
71 );
72 }
73
74 $existing_triggers['Forminator Forms'] = $triggers;
75
76 return $existing_triggers;
77 }
78
79 /**
80 * Get merge tags
81 */
82 public static function get_merge_tags( $form_id ) {
83
84 $merge_tags = Notifier_Notification_Merge_Tags::get_merge_tags();
85 $form_settings = get_post_meta( $form_id, 'forminator_form_meta', true );
86
87 if ( ! empty( $form_settings['fields'] ) ) {
88
89 foreach ( $form_settings['fields'] as $field ) {
90
91 if ( empty( $field['element_id'] ) ) {
92 continue;
93 }
94
95 $field_name = $field['element_id'];
96
97 $merge_tags['Forminator Forms'][] = array(
98 'id' => 'forminator_' . $form_id . '_' . $field_name,
99 'label' => $field_name,
100 'preview_value'=> '',
101 'return_type' => 'text',
102 'value' => function ( $sanitized_data ) use ( $field_name ) {
103
104 $value = isset( $sanitized_data[$field_name] ) ? $sanitized_data[$field_name] : '';
105
106 if ( is_array( $value ) ) {
107 $value = implode(', ', $value);
108 }
109
110 return html_entity_decode( sanitize_text_field( $value ) );
111 }
112 );
113 }
114 }
115
116 return $merge_tags;
117 }
118
119 /**
120 * Get recipient fields
121 */
122 public static function get_recipient_fields( $form_id ) {
123
124 $recipient_fields = array();
125
126 $form_settings = get_post_meta( $form_id, 'forminator_form_meta', true );
127
128 if ( ! empty( $form_settings['fields'] ) ) {
129
130 foreach ( $form_settings['fields'] as $field ) {
131
132 if ( $field['type'] !== 'phone' ) {
133 continue;
134 }
135
136 $field_name = $field['element_id'];
137
138 $recipient_fields['Forminator Forms'][] = array(
139 'id' => 'forminator_' . $form_id . '_' . $field_name,
140 'label' => $field_name,
141 'value' => function ( $sanitized_data ) use ( $field_name ) {
142
143 $value = isset( $sanitized_data[$field_name] ) ? $sanitized_data[$field_name] : '';
144
145 return html_entity_decode( sanitize_text_field( $value ) );
146 }
147 );
148 }
149 }
150
151 return $recipient_fields;
152 }
153
154 }