PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.0.56
OttoKit: All-in-One Automation Platform v1.0.56
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 / functions.php
suretriggers Last commit date
app 1 year ago assets 3 years ago src 1 year ago autoloader.php 3 years ago changelog.txt 1 year ago functions.php 1 year ago readme.txt 1 year ago suretriggers.php 1 year ago
functions.php
294 lines
1 <?php
2 /**
3 * Global AutomatePlug Functions.
4 *
5 * @package Automateplug
6 */
7
8 /**
9 * Get or prepare user id.
10 *
11 * @return int|mixed|string|void
12 */
13 function ap_get_current_user_id() {
14
15 $user_id = get_current_user_id();
16
17 if ( $user_id ) {
18 return $user_id;
19 }
20
21 if ( ! session_id() ) { //phpcs:ignore
22 session_start(); //phpcs:ignore
23 }
24
25 if ( isset( $_SESSION['ap_user_identifier'] ) ) {
26 return $_SESSION['ap_user_identifier']; //phpcs:ignore
27 }
28
29 $ap_user_id = wp_generate_password( 16, false );
30 $_SESSION['ap_user_identifier'] = $ap_user_id; //phpcs:ignore
31
32 return $_SESSION['ap_user_identifier']; //phpcs:ignore
33
34 }
35
36 /**
37 * Get or prepare user id.
38 *
39 * @param string $email user email.
40 *
41 * @return int|mixed|string|void
42 */
43 function ap_get_user_id_from_email( $email ) {
44
45 if ( empty( $email ) || ! email_exists( $email ) ) {
46 return false;
47 }
48
49 $get_user = get_user_by( 'email', $email );
50 return $get_user->ID;
51
52 }
53
54 add_action(
55 'in_admin_header',
56 function () {
57 if ( isset( $_GET['page'] ) && 'suretriggers' === sanitize_text_field( $_GET['page'] ) ) { // phpcs:ignore
58 remove_all_actions( 'admin_notices' );
59 remove_all_actions( 'all_admin_notices' );
60 }
61 },
62 999
63 );
64
65 add_action( 'wp_login', 'suretrigger_capture_login_time', 10, 2 );
66
67 /**
68 * Login time.
69 *
70 * @param string $user_login user login.
71 * @param object $user user.
72 * @return void
73 */
74 function suretrigger_capture_login_time( $user_login, $user ) {
75 update_user_meta( $user->ID, 'st_last_login', time() );
76 }
77
78 /**
79 * SureTrigger Trigger Button shortcode.
80 *
81 * @param array $atts Attributes.
82 * @param null $content Content.
83 * @return string|bool
84 */
85 function suretrigger_button( $atts, $content = null ) {
86 $atts = shortcode_atts(
87 [
88 'id' => 0,
89 'button_label' => __( 'Click here', 'suretriggers' ),
90 'user_redirect_url' => '',
91 'visitor_redirect_url' => '',
92 'button_class' => 'suretrigger_button',
93 'button_id' => 'suretrigger_button',
94 'click_loading_label' => __( 'Clicking...', 'suretriggers' ),
95 'after_clicked_label' => __( 'Clicked!!', 'suretriggers' ),
96 'click_once' => 'true',
97 'cookie_duration' => '15',
98 ],
99 $atts,
100 'trigger_button'
101 );
102 ob_start();
103 $user_id = get_current_user_id();
104 ?>
105
106 <form method="post" class="suretrigger_button_form" id="suretrigger_button_form_<?php echo esc_attr( (string) $atts['id'] ); ?>">
107 <input type="hidden" name="st_trigger_id" value="<?php echo esc_attr( (string) $atts['id'] ); ?>" />
108 <input type="hidden" name="st_nonce" value="<?php echo esc_attr( wp_create_nonce( 'suretrigger_form' ) ); ?>"/>
109 <input type="hidden" name="st_login_url" value="<?php echo esc_attr( $atts['user_redirect_url'] ); ?>"/>
110 <input type="hidden" name="st_non_login_url" value="<?php echo esc_attr( $atts['visitor_redirect_url'] ); ?>"/>
111 <input type="hidden" name="st_click" value="<?php echo esc_attr( $atts['click_once'] ); ?>"/>
112 <input type="hidden" name="st_button_label" value="<?php echo esc_attr( $atts['button_label'] ); ?>"/>
113 <input type="hidden" name="st_loading_label" value="<?php echo esc_attr( $atts['click_loading_label'] ); ?>"/>
114 <input type="hidden" name="st_clicked_label" value="<?php echo esc_attr( $atts['after_clicked_label'] ); ?>"/>
115 <input type="hidden" name="action" value="handle_trigger_button_click"/>
116 <input type="hidden" name="st_cookie_duration" value="<?php echo esc_attr( $atts['cookie_duration'] ); ?>"/>
117 <input type="hidden" name="st_user_id" value="<?php echo esc_attr( $user_id ); ?>"/>
118 <?php
119 global $post;
120 if ( ! empty( $post ) && is_object( $post ) && isset( $post->ID ) && isset( $post->post_title ) ) {
121 ?>
122 <input type="hidden" name="st_button_post_id" value="<?php echo esc_attr( $post->ID ); ?>"/>
123 <input type="hidden" name="st_button_post_title" value="<?php echo esc_attr( $post->post_title ); ?>"/>
124 <?php
125 }
126 $cookie_name = 'st_trigger_button_clicked_' . esc_attr( (string) $atts['id'] );
127 if ( isset( $_COOKIE[ $cookie_name ] ) && 'yes_' . $user_id == $_COOKIE[ $cookie_name ] ) {
128 ?>
129 <button type="button" class="<?php echo esc_attr( $atts['button_class'] ); ?>" id="<?php echo esc_attr( $atts['button_id'] ); ?>"><?php echo esc_html( $atts['after_clicked_label'] ); ?></button>
130 <?php
131 } else {
132 ?>
133 <button type="button" class="<?php echo esc_attr( $atts['button_class'] ); ?>" id="<?php echo esc_attr( $atts['button_id'] ); ?>" onclick="st_trigger_ajax(this);return false;"><?php echo esc_html( $atts['button_label'] ); ?></button>
134 <?php
135 }
136 ?>
137 </form>
138 <script>
139 function getCookie(cookieName) {
140 const regex = new RegExp(cookieName + '=([^;]+)');
141 const cookieValue = document.cookie.match(regex);
142 return cookieValue ? cookieValue[1] : null;
143 }
144
145 function st_trigger_ajax(element) {
146 var button = element;
147 button.disabled = true;
148 var form = button.closest("form");
149 var formData = new FormData(form);
150
151 var inputTriggerId = button.parentNode.querySelector('input[name="st_trigger_id"]');
152 var inputLoadingLabel = button.parentNode.querySelector('input[name="st_loading_label"]');
153 var inputClickedLabel = button.parentNode.querySelector('input[name="st_clicked_label"]');
154 var inputButtonLabel = button.parentNode.querySelector('input[name="st_button_label"]');
155 var inputUserId = button.parentNode.querySelector('input[name="st_user_id"]');
156
157 var cookiename = 'st_trigger_button_clicked_' + inputTriggerId.value;
158 var cookie = 'yes_' + inputUserId.value;
159 var cookieValue = getCookie(cookiename);
160
161 if (cookieValue === null || cookieValue !== cookie) {
162 button.classList.add('st_trigger_button_loading');
163 if (inputLoadingLabel.value !== '') {
164 button.textContent = inputLoadingLabel.value;
165 }
166 var xhr = new XMLHttpRequest();
167 xhr.open('POST', '<?php echo esc_attr( admin_url( 'admin-ajax.php' ) ); ?>');
168 xhr.onreadystatechange = function() {
169 if (xhr.readyState === XMLHttpRequest.DONE) {
170 if (xhr.status === 200) {
171 button.classList.remove('st_trigger_button_loading');
172 button.disabled = false;
173 if (inputClickedLabel.value !== '') {
174 button.textContent = inputClickedLabel.value;
175 } else {
176 button.textContent = inputButtonLabel.value;
177 }
178 if( xhr.responseText != '' ){
179 var response = JSON.parse(xhr.responseText);
180 if (response.data) {
181 location.href = response.data;
182 }
183 }
184 }
185 }
186 };
187 xhr.send(formData);
188 } else {
189 if (inputClickedLabel.value !== '') {
190 button.textContent = inputClickedLabel.value;
191 }
192 }
193 }
194 </script>
195
196 <?php
197 return ob_get_clean();
198 }
199 add_shortcode( 'st_trigger_button', 'suretrigger_button' );
200
201 /**
202 * SureTrigger Trigger Button custom style.
203 *
204 * @return void
205 */
206 function suretrigger_button_custom_style() {
207 wp_enqueue_style( 'st-trigger-button-style', SURE_TRIGGERS_URL . 'assets/css/st-trigger-button.css', [], SURE_TRIGGERS_VER );
208 }
209 add_action( 'wp_enqueue_scripts', 'suretrigger_button_custom_style' );
210
211 /**
212 * SureTrigger Trigger Button action.
213 *
214 * @return void
215 */
216 function suretrigger_trigger_button_action() {
217
218 // Trigger the custom hook before ajax response.
219 do_action( 'st_trigger_button_before_click_hook' );
220
221 if ( ! isset( $_POST['st_nonce'] ) && ! wp_verify_nonce( wp_strip_all_tags( $_POST['st_nonce'] ), 'suretrigger_form' ) ) {
222 wp_send_json_error();
223 }
224
225 if ( is_user_logged_in() ) {
226 $user_id = get_current_user_id();
227
228 if ( isset( $_POST['st_trigger_id'] ) && ! empty( $_POST['st_trigger_id'] ) ) {
229
230 $st_trigger_id = sanitize_text_field( $_POST['st_trigger_id'] );
231
232 if ( isset( $_POST['st_cookie_duration'] ) || isset( $_POST['st_click'] ) ) {
233 if ( isset( $_POST['st_button_post_id'] ) || isset( $_POST['st_button_post_title'] ) ) {
234 $post_data = [
235 'parent_post_id' => sanitize_text_field( $_POST['st_button_post_id'] ),
236 'parent_post_title' => sanitize_text_field( $_POST['st_button_post_title'] ),
237 ];
238 } else {
239 $post_data = [];
240 }
241 do_action( 'st_trigger_button_action', $st_trigger_id, $user_id, sanitize_text_field( $_POST['st_cookie_duration'] ), $_POST['st_click'], $post_data );
242 }
243
244 if ( isset( $_POST['st_login_url'] ) && ! empty( $_POST['st_login_url'] ) ) {
245 wp_send_json_success( esc_url( $_POST['st_login_url'] ) );
246 }
247 }
248 } else {
249 if ( isset( $_POST['st_non_login_url'] ) && ! empty( $_POST['st_non_login_url'] ) ) {
250 wp_send_json_success( esc_url( $_POST['st_non_login_url'] ) );
251 } else {
252 wp_send_json_success( wp_login_url() );
253 }
254 }
255
256 // Trigger the custom hook after ajax response.
257 do_action( 'st_trigger_button_after_click_hook' );
258
259 wp_die();
260 }
261 add_action( 'wp_ajax_handle_trigger_button_click', 'suretrigger_trigger_button_action' );
262 add_action( 'wp_ajax_nopriv_handle_trigger_button_click', 'suretrigger_trigger_button_action' );
263
264 /**
265 * SureTrigger Trigger Button set cookie.
266 *
267 * @param int $st_trigger_id Trigger ID.
268 * @param int $user_id User ID.
269 * @param int $cookie_duration Cookie Duration.
270 *
271 * @return void
272 */
273 function st_trigger_button_set_cookie( $st_trigger_id, $user_id, $cookie_duration ) {
274 // Set the cookie.
275 $cookie_name = 'st_trigger_button_clicked_' . $st_trigger_id;
276 $cookie_value = 'yes_' . $user_id;
277 if ( isset( $cookie_duration ) ) {
278 $expiration = time() + 60 * 60 * 24 * intval( $cookie_duration ); // Set the expiration time as per user requested.
279 } else {
280 $expiration = time() + 60 * 60 * 24 * 15;
281 }
282
283 if ( ! defined( 'COOKIEPATH' ) ) {
284 define( 'COOKIEPATH', '/' );
285 }
286
287 if ( ! defined( 'COOKIE_DOMAIN' ) ) {
288 define( 'COOKIE_DOMAIN', false );
289 }
290
291 setcookie( $cookie_name, $cookie_value, $expiration, COOKIEPATH, COOKIE_DOMAIN );
292 }
293 add_action( 'st_trigger_button_set_cookie', 'st_trigger_button_set_cookie', 10, 3 );
294