PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.4
OttoKit: All-in-One Automation Platform v1.1.4
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 10 months ago assets 11 months ago languages 10 months ago src 10 months ago autoloader.php 3 years ago changelog.txt 10 months ago functions.php 11 months ago readme.txt 10 months ago suretriggers.php 10 months ago
functions.php
249 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
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_rand( 1000000000, 9999999999 );
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|bool
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 if ( ! $get_user instanceof WP_User ) {
51 return false;
52 }
53 return intval( $get_user->ID );
54
55 }
56
57 add_action(
58 'in_admin_header',
59 function () {
60 if ( isset( $_GET['page'] ) && 'suretriggers' === sanitize_text_field( $_GET['page'] ) ) { // phpcs:ignore
61 remove_all_actions( 'admin_notices' );
62 remove_all_actions( 'all_admin_notices' );
63 }
64 },
65 999
66 );
67
68 add_action( 'wp_login', 'suretrigger_capture_login_time', 10, 2 );
69
70 /**
71 * Login time.
72 *
73 * @param string $user_login user login.
74 * @param object $user user.
75 * @return void
76 */
77 function suretrigger_capture_login_time( $user_login, $user ) {
78 if ( ! property_exists( $user, 'ID' ) ) {
79 return;
80 }
81 update_user_meta( $user->ID, 'st_last_login', time() );
82 }
83
84 /**
85 * SureTrigger Trigger Button shortcode.
86 *
87 * @param array $atts Attributes.
88 * @param null $content Content.
89 * @return string|bool
90 */
91 function suretrigger_button( $atts, $content = null ) {
92 $atts = shortcode_atts(
93 [
94 'id' => 0,
95 'button_label' => __( 'Click here', 'suretriggers' ),
96 'user_redirect_url' => '',
97 'visitor_redirect_url' => '',
98 'button_class' => 'suretrigger_button',
99 'button_id' => 'suretrigger_button',
100 'click_loading_label' => __( 'Clicking...', 'suretriggers' ),
101 'after_clicked_label' => __( 'Clicked!!', 'suretriggers' ),
102 'click_once' => 'true',
103 'cookie_duration' => '15',
104 ],
105 $atts,
106 'trigger_button'
107 );
108 ob_start();
109 $user_id = get_current_user_id();
110 ?>
111
112 <form method="post" class="suretrigger_button_form" id="suretrigger_button_form_<?php echo esc_attr( (string) $atts['id'] ); ?>">
113 <input type="hidden" name="st_trigger_id" value="<?php echo esc_attr( (string) $atts['id'] ); ?>" />
114 <input type="hidden" name="st_nonce" value="<?php echo esc_attr( wp_create_nonce( 'suretrigger_form' ) ); ?>"/>
115 <input type="hidden" name="st_login_url" value="<?php echo esc_attr( $atts['user_redirect_url'] ); ?>"/>
116 <input type="hidden" name="st_non_login_url" value="<?php echo esc_attr( $atts['visitor_redirect_url'] ); ?>"/>
117 <input type="hidden" name="st_click" value="<?php echo esc_attr( $atts['click_once'] ); ?>"/>
118 <input type="hidden" name="st_button_label" value="<?php echo esc_attr( $atts['button_label'] ); ?>"/>
119 <input type="hidden" name="st_loading_label" value="<?php echo esc_attr( $atts['click_loading_label'] ); ?>"/>
120 <input type="hidden" name="st_clicked_label" value="<?php echo esc_attr( $atts['after_clicked_label'] ); ?>"/>
121 <input type="hidden" name="action" value="handle_trigger_button_click"/>
122 <input type="hidden" name="st_cookie_duration" value="<?php echo esc_attr( $atts['cookie_duration'] ); ?>"/>
123 <input type="hidden" name="st_user_id" value="<?php echo esc_attr( (string) $user_id ); ?>"/>
124 <?php
125 global $post;
126 if ( ! empty( $post ) && is_object( $post ) && isset( $post->ID ) && isset( $post->post_title ) ) {
127 ?>
128 <input type="hidden" name="st_button_post_id" value="<?php echo esc_attr( $post->ID ); ?>"/>
129 <input type="hidden" name="st_button_post_title" value="<?php echo esc_attr( $post->post_title ); ?>"/>
130 <?php
131 }
132 $cookie_name = 'st_trigger_button_clicked_' . esc_attr( (string) $atts['id'] );
133 if ( isset( $_COOKIE[ $cookie_name ] ) && 'yes_' . $user_id == $_COOKIE[ $cookie_name ] ) {
134 ?>
135 <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>
136 <?php
137 } else {
138 ?>
139 <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>
140 <?php
141 }
142 ?>
143 </form>
144
145 <?php
146 return ob_get_clean();
147 }
148 add_shortcode( 'st_trigger_button', 'suretrigger_button' );
149
150 /**
151 * SureTrigger Trigger Button custom style.
152 *
153 * @return void
154 */
155 function suretrigger_button_custom_style() {
156 wp_enqueue_style( 'st-trigger-button-style', SURE_TRIGGERS_URL . 'assets/css/st-trigger-button.css', [], SURE_TRIGGERS_VER );
157 wp_enqueue_script( 'st-trigger-button-script', SURE_TRIGGERS_URL . 'assets/js/st-trigger-button.js', [], SURE_TRIGGERS_VER, true );
158 wp_localize_script( 'st-trigger-button-script', 'st_ajax_object', [ 'ajax_url' => admin_url( 'admin-ajax.php' ) ] );
159 }
160 add_action( 'wp_enqueue_scripts', 'suretrigger_button_custom_style' );
161
162 /**
163 * SureTrigger Trigger Button action.
164 *
165 * @return void
166 */
167 function suretrigger_trigger_button_action() {
168
169 // Trigger the custom hook before ajax response.
170 do_action( 'st_trigger_button_before_click_hook' );
171
172 if ( ! isset( $_POST['st_nonce'] ) || ! wp_verify_nonce( wp_strip_all_tags( $_POST['st_nonce'] ), 'suretrigger_form' ) ) {
173 wp_send_json_error( [ 'error' => 'Invalid nonce' ] );
174 }
175
176 if ( is_user_logged_in() ) {
177 $user_id = get_current_user_id();
178
179 if ( isset( $_POST['st_trigger_id'] ) && ! empty( $_POST['st_trigger_id'] ) ) {
180
181 $st_trigger_id = sanitize_text_field( $_POST['st_trigger_id'] );
182
183 $cookie_duration = isset( $_POST['st_cookie_duration'] ) ? sanitize_text_field( $_POST['st_cookie_duration'] ) : '';
184 $st_click = isset( $_POST['st_click'] ) ? sanitize_text_field( $_POST['st_click'] ) : '';
185
186 $post_data = [];
187
188 if ( isset( $_POST['st_button_post_id'] ) ) {
189 $post_data['parent_post_id'] = sanitize_text_field( $_POST['st_button_post_id'] );
190 }
191
192 if ( isset( $_POST['st_button_post_title'] ) ) {
193 $post_data['parent_post_title'] = sanitize_text_field( $_POST['st_button_post_title'] );
194 }
195 do_action( 'st_trigger_button_action', $st_trigger_id, $user_id, sanitize_text_field( $cookie_duration ), $st_click, $post_data );
196
197 if ( isset( $_POST['st_login_url'] ) && ! empty( $_POST['st_login_url'] ) ) {
198 wp_send_json_success( esc_url_raw( $_POST['st_login_url'] ) );
199 }
200 }
201 } else {
202 if ( isset( $_POST['st_non_login_url'] ) && ! empty( $_POST['st_non_login_url'] ) ) {
203 wp_send_json_success( esc_url_raw( $_POST['st_non_login_url'] ) );
204 } else {
205 wp_send_json_success( wp_login_url() );
206 }
207 }
208
209 // Trigger the custom hook after ajax response.
210 do_action( 'st_trigger_button_after_click_hook' );
211
212 wp_die();
213 }
214 add_action( 'wp_ajax_handle_trigger_button_click', 'suretrigger_trigger_button_action' );
215 add_action( 'wp_ajax_nopriv_handle_trigger_button_click', 'suretrigger_trigger_button_action' );
216
217 /**
218 * SureTrigger Trigger Button set cookie.
219 *
220 * @param int $st_trigger_id Trigger ID.
221 * @param int $user_id User ID.
222 * @param int $cookie_duration Cookie Duration.
223 *
224 * @return void
225 */
226 function st_trigger_button_set_cookie( $st_trigger_id, $user_id, $cookie_duration ) {
227 // Set the cookie.
228 $cookie_name = 'st_trigger_button_clicked_' . $st_trigger_id;
229 $cookie_value = 'yes_' . $user_id;
230 if ( isset( $cookie_duration ) ) {
231 $expiration = time() + 60 * 60 * 24 * intval( $cookie_duration ); // Set the expiration time as per user requested.
232 } else {
233 $expiration = time() + 60 * 60 * 24 * 15;
234 }
235
236 if ( ! defined( 'COOKIEPATH' ) ) {
237 define( 'COOKIEPATH', '/' );
238 }
239
240 if ( ! defined( 'COOKIE_DOMAIN' ) ) {
241 define( 'COOKIE_DOMAIN', false );
242 }
243
244 $secure = is_ssl();
245 setcookie( $cookie_name, $cookie_value, $expiration, COOKIEPATH, COOKIE_DOMAIN, $secure, true ); // phpcs:ignore
246
247 }
248 add_action( 'st_trigger_button_set_cookie', 'st_trigger_button_set_cookie', 10, 3 );
249