PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
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 / sureforms / triggers / sureforms-form-submitted.php
suretriggers / src / Integrations / sureforms / triggers Last commit date
sureforms-form-submitted.php 1 day ago
sureforms-form-submitted.php
165 lines
1 <?php
2 /**
3 * SureFormsFormSubmitted.
4 * php version 5.6
5 *
6 * @category SureFormsFormSubmitted
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\SureForms\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18
19 if ( ! class_exists( 'SureFormsFormSubmitted' ) ) :
20
21 /**
22 * SureFormsFormSubmitted
23 *
24 * @category SureFormsFormSubmitted
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 SureFormsFormSubmitted {
34
35
36 /**
37 * Integration type.
38 *
39 * @var string
40 */
41 public $integration = 'SureForms';
42
43
44 /**
45 * Trigger name.
46 *
47 * @var string
48 */
49 public $trigger = 'sureforms_form_submitted';
50
51 use SingletonLoader;
52
53
54 /**
55 * Constructor
56 *
57 * @since 1.0.0
58 */
59 public function __construct() {
60 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
61 }
62
63 /**
64 * Register action.
65 *
66 * @param array $triggers trigger data.
67 * @return array
68 */
69 public function register( $triggers ) {
70
71 $triggers[ $this->integration ][ $this->trigger ] = [
72 'label' => __( 'Form Submitted', 'suretriggers' ),
73 'action' => $this->trigger,
74 'common_action' => 'srfm_form_submit',
75 'function' => [ $this, 'trigger_listener' ],
76 'priority' => 10,
77 'accepted_args' => 1,
78 ];
79 return $triggers;
80
81 }
82
83 /**
84 * Trigger listener
85 *
86 * @param array $response Response Data.
87 * @since 1.0.0
88 *
89 * @return void
90 */
91 public function trigger_listener( $response ) {
92
93 if ( empty( $response ) ) {
94 return;
95 }
96
97 // If entry_id exists, fetch PDF links from the entry extras.
98 if ( ! empty( $response['entry_id'] ) && class_exists( '\SRFM\Inc\Database\Tables\Entries' ) ) {
99 $entry = \SRFM\Inc\Database\Tables\Entries::get( intval( $response['entry_id'] ) );
100 if ( ! empty( $entry['extras']['pdf_links'] ) && is_array( $entry['extras']['pdf_links'] ) ) {
101 $response['pdf_links'] = $entry['extras']['pdf_links'];
102 }
103 }
104
105 if ( ! empty( $response['message'] ) && is_string( $response['message'] ) ) {
106 $trimmed_message = $this->trim_large_message( $response['message'] );
107 if ( null === $trimmed_message ) {
108 unset( $response['message'] );
109 } else {
110 $response['message'] = $trimmed_message;
111 }
112 }
113
114 AutomationController::sure_trigger_handle_trigger(
115 [
116 'trigger' => $this->trigger,
117 'wp_user_id' => ap_get_current_user_id(),
118 'context' => $response,
119 ]
120 );
121 }
122
123 /**
124 * Trim inline base64 media from the confirmation message before it is sent to the SaaS,
125 * as authors pasting images directly into the SureForms success message inflate it enough
126 * to fail SaaS-side processing. Falls back to dropping the whole field if it is still oversized.
127 *
128 * @param string $message Confirmation message markup.
129 * @since 1.0.0
130 *
131 * @return string|null Trimmed message, or null if it should be dropped entirely.
132 */
133 public function trim_large_message( $message ) {
134 $message = (string) preg_replace(
135 '/src=(["\'])(?:data:)?[a-zA-Z0-9\/+.-]+;base64,[A-Za-z0-9+\/=]+\1/i',
136 'src=$1$1',
137 $message
138 );
139
140 /**
141 * Filters the maximum allowed size (in bytes) of the SureForms confirmation message
142 * sent as trigger context. If the message still exceeds this after stripping inline
143 * base64 media, it is dropped entirely rather than sent.
144 *
145 * @param int $max_size Maximum size in bytes. Default 30720 (30KB).
146 */
147 $max_size = apply_filters( 'sure_trigger_sureforms_max_message_size', 30720 );
148
149 if ( strlen( $message ) > $max_size ) {
150 return null;
151 }
152
153 return $message;
154 }
155 }
156
157 /**
158 * Ignore false positive
159 *
160 * @psalm-suppress UndefinedMethod
161 */
162 SureFormsFormSubmitted::get_instance();
163
164 endif;
165