PluginProbe
OttoKit: All-in-One Automation Platform / 1.0.15
OttoKit: All-in-One Automation Platform v1.0.15
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 All 124 releases
suretriggers / functions.php

functions.php in OttoKit: All-in-One Automation Platform 1.0.15, at functions.php

277 lines 8.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 <?php
118 $cookie_name = 'st_trigger_button_clicked_' . esc_attr( (string) $atts['id'] );
119 if ( isset( $_COOKIE[ $cookie_name ] ) && 'yes_' . $user_id == $_COOKIE[ $cookie_name ] ) {
120 ?>
121 <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>
122 <?php
123 } else {
124 ?>
125 <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>
126 <?php
127 }
128 ?>
129 </form>
130 <script>
131 function getCookie(cookieName) {
132 const regex = new RegExp(cookieName + '=([^;]+)');
133 const cookieValue = document.cookie.match(regex);
134 return cookieValue ? cookieValue[1] : null;
135 }
136
137 function st_trigger_ajax(element) {
138 var button = element;
139 button.disabled = true;
140 var form = button.closest("form");
141 var formData = new FormData(form);
142
143 var inputTriggerId = button.parentNode.querySelector('input[name="st_trigger_id"]');
144 var inputLoadingLabel = button.parentNode.querySelector('input[name="st_loading_label"]');
145 var inputClickedLabel = button.parentNode.querySelector('input[name="st_clicked_label"]');
146 var inputButtonLabel = button.parentNode.querySelector('input[name="st_button_label"]');
147
148 var cookiename = 'st_trigger_button_clicked_' + inputTriggerId;
149 var cookie = 'yes_' + inputTriggerId.value;
150 var cookieValue = getCookie(cookiename);
151
152 if (cookieValue === null || cookieValue !== cookie) {
153 button.classList.add('button__loading');
154 if (inputLoadingLabel.value !== '') {
155 button.textContent = inputLoadingLabel.value;
156 }
157 var xhr = new XMLHttpRequest();
158 xhr.open('POST', '<?php echo esc_attr( admin_url( 'admin-ajax.php' ) ); ?>');
159 xhr.onreadystatechange = function() {
160 if (xhr.readyState === XMLHttpRequest.DONE) {
161 if (xhr.status === 200) {
162 button.classList.remove('button__loading');
163 button.disabled = false;
164 if (inputClickedLabel.value !== '') {
165 button.textContent = inputClickedLabel.value;
166 } else {
167 button.textContent = inputButtonLabel.value;
168 }
169 if( xhr.responseText != '' ){
170 var response = JSON.parse(xhr.responseText);
171 if (response.data) {
172 location.href = response.data;
173 }
174 }
175 }
176 }
177 };
178 xhr.send(formData);
179 } else {
180 if (inputClickedLabel.value !== '') {
181 button.textContent = inputClickedLabel.value;
182 }
183 }
184 }
185 </script>
186
187 <?php
188 return ob_get_clean();
189 }
190 add_shortcode( 'st_trigger_button', 'suretrigger_button' );
191
192 /**
193 * SureTrigger Trigger Button custom style.
194 *
195 * @return void
196 */
197 function suretrigger_button_custom_style() {
198 wp_enqueue_style( 'st-trigger-button-style', SURE_TRIGGERS_URL . '/assets/css/st-trigger-button.css', [], SURE_TRIGGERS_VER );
199 }
200 add_action( 'wp_enqueue_scripts', 'suretrigger_button_custom_style' );
201
202 /**
203 * SureTrigger Trigger Button action.
204 *
205 * @return void
206 */
207 function suretrigger_trigger_button_action() {
208
209 // Trigger the custom hook before ajax response.
210 do_action( 'st_trigger_button_before_click_hook' );
211
212 if ( ! isset( $_POST['st_nonce'] ) && ! wp_verify_nonce( wp_strip_all_tags( $_POST['st_nonce'] ), 'suretrigger_form' ) ) {
213 wp_send_json_error();
214 }
215
216 if ( is_user_logged_in() ) {
217 $user_id = get_current_user_id();
218
219 if ( isset( $_POST['st_trigger_id'] ) && ! empty( $_POST['st_trigger_id'] ) ) {
220
221 $st_trigger_id = sanitize_text_field( $_POST['st_trigger_id'] );
222
223 if ( isset( $_POST['st_cookie_duration'] ) || isset( $_POST['st_click'] ) ) {
224 do_action( 'st_trigger_button_action', $st_trigger_id, $user_id, sanitize_text_field( $_POST['st_cookie_duration'] ), $_POST['st_click'] );
225 }
226
227 if ( isset( $_POST['st_login_url'] ) && ! empty( $_POST['st_login_url'] ) ) {
228 wp_send_json_success( esc_url( $_POST['st_login_url'] ) );
229 }
230 }
231 } else {
232 if ( isset( $_POST['st_non_login_url'] ) && ! empty( $_POST['st_non_login_url'] ) ) {
233 wp_send_json_success( esc_url( $_POST['st_non_login_url'] ) );
234 } else {
235 wp_send_json_success( wp_login_url() );
236 }
237 }
238
239 // Trigger the custom hook after ajax response.
240 do_action( 'st_trigger_button_after_click_hook' );
241
242 wp_die();
243 }
244 add_action( 'wp_ajax_handle_trigger_button_click', 'suretrigger_trigger_button_action' );
245 add_action( 'wp_ajax_nopriv_handle_trigger_button_click', 'suretrigger_trigger_button_action' );
246
247 /**
248 * SureTrigger Trigger Button set cookie.
249 *
250 * @param int $st_trigger_id Trigger ID.
251 * @param int $user_id User ID.
252 * @param int $cookie_duration Cookie Duration.
253 *
254 * @return void
255 */
256 function st_trigger_button_set_cookie( $st_trigger_id, $user_id, $cookie_duration ) {
257 // Set the cookie.
258 $cookie_name = 'st_trigger_button_clicked_' . $st_trigger_id;
259 $cookie_value = 'yes_' . $user_id;
260 if ( isset( $cookie_duration ) ) {
261 $expiration = time() + 60 * 60 * 24 * intval( $cookie_duration ); // Set the expiration time as per user requested.
262 } else {
263 $expiration = time() + 60 * 60 * 24 * 15;
264 }
265
266 if ( ! defined( 'COOKIEPATH' ) ) {
267 define( 'COOKIEPATH', '/' );
268 }
269
270 if ( ! defined( 'COOKIE_DOMAIN' ) ) {
271 define( 'COOKIE_DOMAIN', false );
272 }
273
274 setcookie( $cookie_name, $cookie_value, $expiration, COOKIEPATH, COOKIE_DOMAIN );
275 }
276 add_action( 'st_trigger_button_set_cookie', 'st_trigger_button_set_cookie', 10, 3 );
277