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