PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 2.4.0
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v2.4.0
8.7.8 8.7.7 8.7.6 8.7.5 8.7.4 8.7.3 8.7.2 8.7.1 8.7.0 8.6.9 8.6.8 8.6.7 8.6.6 8.6.5 8.6.4 8.6.2 8.6.1 8.6.0 8.5.9 8.5.8 8.5.7 8.5.6 8.5.5 8.5.4 8.5.3 All 534 releases
← All changes | functions.php +471 -732 8.7.52.4.0 View file →
@@ -3,129 +3,18 @@
3 3 * @param $type
4 4 * Display wpwBot Icon ball
5 5 */
6 6 if (!defined('ABSPATH')) exit; // Exit if accessed directly
7 -
8 -
9 -function qcld_custom_search_form( $form ) {
10 - // Add a hidden input to limit search to 'product' post type
11 - if (get_option('wp_chatbot_agent_image') == "custom-agent.png") {
12 - $wp_chatbot_custom_agent_path = get_option('wp_chatbot_custom_agent_path');
13 - } else if (get_option('wp_chatbot_agent_image') != "custom-agent.png") {
14 - $wp_chatbot_custom_agent_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
15 - } else {
16 - $wp_chatbot_custom_agent_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
17 - }
18 - $hidden_field = '<a class="wp-chatbot qc_wpbot_chat_link" id="wp-chatbot-search-btn" data-search-type="product" data-search-term="" style="max-height: 50px; margin-left: 10px;padding: 0 !important;position: absolute;top: -9px;right: -60px;"><img src="'. esc_url($wp_chatbot_custom_agent_path) .'" alt=""></a>';
19 - $block_content = str_replace( '</form>', $hidden_field . '</form>', $form );
20 - return $block_content;
21 -}
22 -if(get_option('wpbot_enable_on_search') == 1 && (get_option('disable_floating_button') != '1') && get_option('disable_wp_chatbot') != 1 ){
23 - add_filter( 'get_search_form', 'qcld_custom_search_form' );
24 - add_filter( 'render_block_core/search', 'qcld_modify_gutenberg_search_block', 10, 2 );
25 -}
26 -
27 -
28 -function qcld_modify_gutenberg_search_block( $block_content, $block ) {
29 - // Add a hidden input to limit search to 'product' post type
30 - if (get_option('wp_chatbot_agent_image') == "custom-agent.png") {
31 - $wp_chatbot_custom_agent_path = get_option('wp_chatbot_custom_agent_path');
32 - } else if (get_option('wp_chatbot_agent_image') != "custom-agent.png") {
33 - $wp_chatbot_custom_agent_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
34 - } else {
35 - $wp_chatbot_custom_agent_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
36 - }
37 - $hidden_field = '<button type="button" class="wp-chatbot qc_wpbot_chat_link" id="wp-chatbot-search-btn" data-search-type="product" data-search-term="" style="max-height: 50px; margin-left: 10px;padding: 0 !important"><img src="'. esc_url($wp_chatbot_custom_agent_path) .'" alt=""></button>';
38 - // Inject the hidden field before the closing </form> tag
39 - $block_content = str_replace( '</div></form>', $hidden_field . '</div></form>', $block_content );
40 - return $block_content;
41 -}
42 -if(get_option('disable_floating_button') != '1'){
43 - add_action('wp_footer', 'wp_chatbot_load_footer_html');
44 -}
45 -add_action( 'admin_footer', 'qcld_style_for_hide_iframe');
46 -function qcld_style_for_hide_iframe(){
47 -?>
48 - <script>
49 - jQuery( document ).ready(function() {
50 - setInterval(function(){
51 - if(document.querySelector('.wp-block-legacy-widget__edit-preview-iframe')){
52 - document.querySelector('.wp-block-legacy-widget__edit-preview-iframe').addEventListener("load", ev => {
53 - jQuery('.wp-block-legacy-widget__edit-preview-iframe').contents().find('#wp-chatbot-chat-container').hide();
54 - });
55 -
56 - }
57 - }, 500);
58 - });
59 - </script>
60 -<?php
61 -}
62 -/**
63 - * Extract a YouTube video ID from common URL formats.
64 - *
65 - * @param string $url YouTube watch, embed, short, or youtu.be URL.
66 - * @return string Video ID or empty string.
67 - */
68 -if ( ! function_exists( 'qcld_wpbot_extract_youtube_id' ) ) {
69 - function qcld_wpbot_extract_youtube_id( $url ) {
70 - $url = trim( (string) $url );
71 - if ( $url === '' ) {
72 - return '';
73 - }
74 -
75 - if ( preg_match( '/(?:youtube\.com\/(?:embed\/|shorts\/|live\/|watch\?(?:.*&)?v=)|youtu\.be\/)([A-Za-z0-9_-]{11})/', $url, $matches ) ) {
76 - return $matches[1];
77 - }
78 -
79 - $path = (string) wp_parse_url( $url, PHP_URL_PATH );
80 - $base = basename( $path );
81 - if ( preg_match( '/^[A-Za-z0-9_-]{11}$/', $base ) ) {
82 - return $base;
83 - }
84 -
85 - return '';
86 - }
87 -}
88 -if ( ! function_exists( 'qcld_wpbot_youtube_icon_embed_src' ) ) {
89 - function qcld_wpbot_youtube_icon_embed_src( $url ) {
90 - $video_id = qcld_wpbot_extract_youtube_id( $url );
91 - if ( $video_id === '' ) {
92 - return '';
93 - }
94 -
95 - return add_query_arg(
96 - array(
97 - 'autoplay' => '1',
98 - 'mute' => '1',
99 - 'loop' => '1',
100 - 'playlist' => $video_id,
101 - 'controls' => '0',
102 - 'showinfo' => '0',
103 - 'rel' => '0',
104 - 'fs' => '0',
105 - 'iv_load_policy' => '3',
106 - 'cc_load_policy' => '0',
107 - 'disablekb' => '1',
108 - 'playsinline' => '1',
109 - 'modestbranding' => '1',
110 - 'color' => 'white',
111 - ),
112 - 'https://www.youtube.com/embed/' . rawurlencode( $video_id )
113 - );
114 - }
115 -}
7 +add_action('wp_footer', 'wp_chatbot_load_footer_html');
116 8 function wp_chatbot_load_footer_html(){
117 - if ( get_option('disable_wp_chatbot') != 1 && wp_chatbot_load_controlling() === true) {
118 -
9 + if (get_option('disable_wp_chatbot') != 1 && wp_chatbot_load_controlling() == true) {
119 10 ?>
120 11 <style>
121 12 <?php if(get_option('wp_chatbot_custom_css')!="") {
122 -
123 - echo wp_strip_all_tags( get_option('wp_chatbot_custom_css') );// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
13 + echo get_option('wp_chatbot_custom_css');
124 14 }
125 15 ?>
126 16 </style>
127 -
128 17 <?php if (get_option('qcld_wb_chatbot_change_bg') == 1) {
129 18 if (get_option('qcld_wb_chatbot_board_bg_path') != "") {
130 19 $qcld_wb_chatbot_board_bg_path = get_option('qcld_wb_chatbot_board_bg_path');
131 20 } else {
@@ -133,63 +22,47 @@
133 22 }
134 23 ?>
135 24 <style>
136 25 .wp-chatbot-container {
137 - background-color: #eceef3 !important;
138 - background-image: url(<?php echo esc_url($qcld_wb_chatbot_board_bg_path); ?>) !important;
139 - background-size: cover !important;
140 - background-position: center !important;
141 - background-repeat: no-repeat !important;
26 + background-image: url(<?php echo $qcld_wb_chatbot_board_bg_path;
27 +?>) !important;
142 28 }
143 - .wp-chatbot-template-01 #wp-chatbot-board-container,
144 - .wp-chatbot-template-01 .wp-chatbot-board-container {
145 - background-color: #eceef3 !important;
146 - background-image: none !important;
147 - }
148 - .wp-chatbot-template-01 #wp-chatbot-board-container::before,
149 - .wp-chatbot-template-01 .wp-chatbot-board-container::before {
150 - background-color: #eceef3 !important;
151 - background-image: url(<?php echo esc_url($qcld_wb_chatbot_board_bg_path); ?>) !important;
152 - background-size: cover !important;
153 - background-position: center !important;
154 - background-repeat: no-repeat !important;
155 - }
156 29 </style>
157 30 <?php }
158 31 $wp_chatbot_enable_rtl = "";
159 - if (get_option('enable_wp_chatbot_rtl') == '1') {
32 + if (get_option('enable_wp_chatbot_rtl')) {
160 33 $wp_chatbot_enable_rtl .= "wp-chatbot-rtl";
161 34 }
162 35 $wp_chatbot_enable_mobile_screen = "";
163 - // if (get_option('enable_wp_chatbot_mobile_full_screen')==1) {
36 + if (get_option('enable_wp_chatbot_mobile_full_screen')==1) {
164 37 $wp_chatbot_enable_mobile_screen .= "wp-chatbot-mobile-full-screen";
165 - // }
38 + }
166 39 ?>
167 - <div id="wp-chatbot-chat-container" class="<?php echo esc_attr($wp_chatbot_enable_rtl .' '.$wp_chatbot_enable_mobile_screen); ?>" style="<?php if(get_option('disable_floating_button') == '1'){ echo 'display:none';} ?>">
40 + <div id="wp-chatbot-chat-container" class="<?php echo $wp_chatbot_enable_rtl .' '.$wp_chatbot_enable_mobile_screen; ?>">
168 41 <div id="wp-chatbot-integration-container">
169 42 <div class="wp-chatbot-integration-button-container">
170 43 <?php if (get_option('enable_wp_chatbot_skype_floating_icon') == 1) { ?>
171 - <a href="skype:<?php echo esc_attr(get_option('enable_wp_chatbot_skype_id')); ?>?chat"><span
172 - class="inetegration-skype-btn" title="<?php esc_attr_e('Skype', 'chatbot'); ?>"> </span></a>
44 + <a href="skype:<?php echo get_option('enable_wp_chatbot_skype_id'); ?>?chat"><span
45 + class="inetegration-skype-btn" title="<?php _e('Skype', 'wpchatbot'); ?>"> </span></a>
173 46 <?php } ?>
174 47 <?php if (get_option('enable_wp_chatbot_floating_whats') == 1) { ?>
175 - <a href="<?php echo esc_url('https://api.whatsapp.com/send?phone=' . get_option('qlcd_wp_chatbot_whats_num')); ?>"
48 + <a href="<?php echo 'https://api.whatsapp.com/send?phone=' . get_option('qlcd_wp_chatbot_whats_num'); ?>"
176 49 target="_blank"><span class="intergration-whats"
177 - title="<?php esc_html_e('WhatsApp', 'chatbot'); ?>"></span></a>
50 + title="<?php _e('WhatsApp', 'wpchatbot'); ?>"></span></a>
178 51 <?php } ?>
179 52 <?php if (get_option('enable_wp_chatbot_floating_viber') == 1) { ?>
180 - <a href="<?php echo esc_url('https://live.viber.com/#/' . get_option('qlcd_wp_chatbot_viber_acc')); ?>"
53 + <a href="<?php echo 'https://live.viber.com/#/' . get_option('qlcd_wp_chatbot_viber_acc'); ?>"
181 54 target="_blank"><span class="intergration-viber"
182 - title="<?php esc_html_e('Viber', 'chatbot'); ?>"></span></a>
55 + title="<?php _e('Viber', 'wpchatbot'); ?>"></span></a>
183 56 <?php } ?>
184 57 <?php if (get_option('enable_wp_chatbot_floating_phone') == 1 && get_option('qlcd_wp_chatbot_phone') != "") { ?>
185 - <a href="tel:<?php echo esc_attr(get_option('qlcd_wp_chatbot_phone')); ?>"><span
58 + <a href="tel:<?php echo get_option('qlcd_wp_chatbot_phone'); ?>"><span
186 59 class="intergration-phone"
187 - title="<?php esc_html_e('Phone', 'chatbot'); ?>"> </span></a>
60 + title="<?php _e('Phone', 'wpchatbot'); ?>"> </span></a>
188 61 <?php } ?>
189 62 <?php if (get_option('enable_wp_chatbot_floating_link') == 1 && get_option('qlcd_wp_chatbot_weblink') != "") { ?>
190 - <a href="<?php echo esc_url(get_option('qlcd_wp_chatbot_weblink')); ?>" target="_blank"><span
191 - class="intergration-weblink" title="<?php esc_html_e('Web Link', 'chatbot'); ?>"></span></a>
63 + <a href="<?php echo get_option('qlcd_wp_chatbot_weblink'); ?>" target="_blank"><span
64 + class="intergration-weblink" title="<?php _e('Web Link', 'wpchatbot'); ?>"></span></a>
192 65 <?php } ?>
193 66 </div>
194 67 </div>
195 68 <?php
@@ -202,9 +75,9 @@
202 75 }
203 76 if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php')) {
204 77 require_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php');
205 78 } else {
206 - echo "<h2>" . esc_html__('No wpWBot Theme Found!', 'chatbot') . "</h2>";
79 + echo "<h2>" . __('No wpWBot Theme Found!', 'wpchatbot') . "</h2>";
207 80 }
208 81 ?>
209 82 <?php
210 83 if (get_option('disable_wp_chatbot_notification') != 1) {
@@ -209,13 +82,11 @@
209 82 <?php
210 83 if (get_option('disable_wp_chatbot_notification') != 1) {
211 84 ?>
212 85 <div id="wp-chatbot-notification-container" class="wp-chatbot-notification-container">
213 - <div class="wp-chatbot-notification-controller">
214 - <span class="wp-chatbot-notification-close">
215 - <?php esc_html_e('X', 'chatbot'); ?>
216 - </span>
217 - </div>
86 + <div class="wp-chatbot-notification-controller"> <span class="wp-chatbot-notification-close">
87 + <?php _e('X', 'wpchatbot'); ?>
88 + </span></div>
218 89 <?php
219 90 $testingTip="";
220 91 if (get_option('wp_chatbot_agent_image') == "custom-agent.png") {
221 92 $wp_chatbot_custom_agent_path = get_option('wp_chatbot_custom_agent_path');
@@ -226,18 +97,18 @@
226 97 }
227 98 ?>
228 99 <div class="wp-chatbot-notification-agent-profile">
229 100 <div class="wp-chatbot-notification-widget-avatar" ><img
230 - src="<?php echo esc_url($wp_chatbot_custom_agent_path); ?>" alt=""></div>
231 - <div class="wp-chatbot-notification-welcome"><?php echo wp_kses_post(wpb_randmom_message_handle(maybe_unserialize(get_option('qlcd_wp_chatbot_welcome')))) . ' <strong>' . esc_html(get_option('qlcd_wp_chatbot_host')) . '</strong>'; ?></div>
101 + src="<?php echo $wp_chatbot_custom_agent_path; ?>" alt=""></div>
102 + <div class="wp-chatbot-notification-welcome"><?php echo wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_welcome'))) . ' <strong>' . get_option('qlcd_wp_chatbot_host') . '</strong>'; ?></div>
232 103 </div>
233 104 <?php
234 105 //update_option('qlcd_wp_chatbot_notifications','Welcome to WpBot');
235 - $notifications = qcld_wb_chatbot_func_str_replace(wp_kses_post(maybe_unserialize(get_option('qlcd_wp_chatbot_notifications'))));
106 + $notifications = qcld_wb_chatbot_func_str_replace(unserialize(get_option('qlcd_wp_chatbot_notifications')));
236 107
237 108 ?>
238 109
239 - <div class="wp-chatbot-notification-message"><?php echo esc_html($notifications[0]); ?></div>
110 + <div class="wp-chatbot-notification-message"><?php echo $notifications[0]; ?></div>
240 111 </div>
241 112 <?php } ?>
242 113 <!--wp-chatbot-board-container-->
243 114 <div id="wp-chatbot-ball" class="">
@@ -244,79 +115,20 @@
244 115 <div class="wp-chatbot-ball">
245 116 <div class="wp-chatbot-ball-animator wp-chatbot-ball-animation-switch"></div>
246 117 <?php
247 118 if (get_option('wp_chatbot_icon') == "custom.png") {
248 - $wp_chatbot_custom_icon_path = (!empty(get_option('wp_chatbot_custom_icon_path'))) ? get_option('wp_chatbot_custom_icon_path') : QCLD_wpCHATBOT_IMG_URL . 'icon-1.png';
249 -
119 + $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_icon_path');
250 120 } else if (get_option('wp_chatbot_icon') != "custom.png") {
251 121 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_icon');
252 122 } else {
253 123 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom.png';
254 124 }
255 - $_wpbot_icon_video = get_option('wp_chatbot_icon_video', '');
256 - $_wpbot_video_is_youtube = ( strpos( $_wpbot_icon_video, 'youtube.com' ) !== false || strpos( $_wpbot_icon_video, 'youtu.be' ) !== false );
257 - $_wpbot_youtube_embed_src = $_wpbot_video_is_youtube ? qcld_wpbot_youtube_icon_embed_src( $_wpbot_icon_video ) : '';
258 - $_wpbot_video_delay_ms = absint( get_option( 'wp_chatbot_icon_video_delay', 0 ) ) * 1000;
259 -
260 - $wp_chatbot_ball_is_youtube = ($_wpbot_icon_video !== '' && (strpos($_wpbot_icon_video, 'youtube.com') !== false || strpos($_wpbot_icon_video, 'youtu.be') !== false));
261 - $wp_chatbot_ball_is_video = ($_wpbot_icon_video !== '' && !$wp_chatbot_ball_is_youtube);
262 - $wp_chatbot_ball_has_video = ($wp_chatbot_ball_is_youtube || $wp_chatbot_ball_is_video);
263 125 ?>
264 - <img src="<?php echo esc_url($wp_chatbot_custom_icon_path); ?>"
265 - alt="wpChatIcon" qcld_agent="<?php echo esc_url($wp_chatbot_custom_icon_path); ?>"
266 - id="wp-chatbot-ball-icon-img"
267 - <?php if ($wp_chatbot_ball_has_video) { echo 'style="display:none;"'; } ?> >
268 - <?php if ( $_wpbot_icon_video !== '' ) : ?>
269 - <?php if ( $_wpbot_video_is_youtube && $_wpbot_youtube_embed_src !== '' ) : ?>
270 - <iframe class="wpbot-icon-video" src="<?php echo $_wpbot_video_delay_ms > 0 ? 'about:blank' : esc_url( $_wpbot_youtube_embed_src ); ?>" data-wpbot-yt-src="<?php echo esc_url( $_wpbot_youtube_embed_src ); ?>" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture"></iframe>
271 - <?php elseif ( ! $_wpbot_video_is_youtube ) : ?>
272 - <video class="wpbot-icon-video" src="<?php echo esc_url( $_wpbot_icon_video ); ?>" autoplay muted loop playsinline preload="auto"></video>
273 - <?php endif; ?>
274 - <?php endif; ?>
126 + <img src="<?php echo $wp_chatbot_custom_icon_path; ?>"
127 + alt="wpChatIcon">
128 +
275 129 </div>
276 -
277 130 </div>
278 - <?php
279 - if ( $_wpbot_icon_video !== '' ) :
280 - ?>
281 - <script>
282 - (function(){
283 - var wpbotDelay = <?php echo (int) $_wpbot_video_delay_ms; ?>;
284 - function wpbotForcePlay(){
285 - var v = document.querySelector('#wp-chatbot-ball video.wpbot-icon-video');
286 - if( v ){
287 - v.muted = true;
288 - v.volume = 0;
289 - v.loop = true;
290 - var tries = 0, maxTries = 30;
291 - var timer = setInterval(function(){
292 - tries++;
293 - v.play().then(function(){ clearInterval(timer); }).catch(function(){});
294 - if( tries >= maxTries ) clearInterval(timer);
295 - }, 300);
296 - }
297 - var yt = document.querySelector('#wp-chatbot-ball iframe.wpbot-icon-video');
298 - if( yt ){
299 - var ytSrc = yt.getAttribute('data-wpbot-yt-src');
300 - if( ytSrc && ( !yt.getAttribute('src') || yt.getAttribute('src') === 'about:blank' || yt.getAttribute('src').indexOf('autoplay=1') === -1 ) ){
301 - yt.setAttribute('src', ytSrc);
302 - }
303 - }
304 - }
305 - function wpbotDelayedPlay(){
306 - setTimeout(wpbotForcePlay, wpbotDelay);
307 - }
308 - if( document.readyState === 'loading' ){
309 - document.addEventListener('DOMContentLoaded', wpbotDelayedPlay);
310 - } else {
311 - wpbotDelayedPlay();
312 - }
313 - window.addEventListener('load', function(){
314 - setTimeout(wpbotForcePlay, wpbotDelay);
315 - });
316 - })();
317 - </script>
318 - <?php endif; ?>
319 131 <?php
320 132 $fb_app_id = get_option('qlcd_wp_chatbot_fb_app_id');
321 133 $fb_page_id = get_option('qlcd_wp_chatbot_fb_page_id');
322 134 $fb_mgs_color = get_option('qlcd_wp_chatbot_fb_color') != '' ? get_option('qlcd_wp_chatbot_fb_color') : '#0084ff';
@@ -325,18 +137,16 @@
325 137 if (get_option('enable_wp_chatbot_messenger') == 1 && get_option('enable_wp_chatbot_messenger_floating_icon') == 1) {
326 138 ?>
327 139 <!-- wp-chatbot-board-container-->
328 140 <script>
329 -
330 141 window.fbAsyncInit = function () {
331 142 FB.init({
332 - appId: '<?php echo esc_js($fb_app_id); ?>',
143 + appId: '<?php echo $fb_app_id;?>',
333 144 autoLogAppEvents: true,
334 145 xfbml: true,
335 146 version: 'v2.12'
336 147 });
337 148 };
338 -
339 149 (function (d, s, id) {
340 150 var js, fjs = d.getElementsByTagName(s)[0];
341 151 if (d.getElementById(id)) return;
342 152 js = d.createElement(s);
@@ -345,13 +155,13 @@
345 155 fjs.parentNode.insertBefore(js, fjs);
346 156 }(document, 'script', 'facebook-jssdk'));
347 157 </script>
348 158 <div class="fb-customerchat"
349 - page_id="<?php echo esc_attr($fb_page_id); ?>"
159 + page_id="<?php echo $fb_page_id; ?>"
350 160 greeting_dialog_display="hide"
351 - theme_color="<?php echo esc_attr($fb_mgs_color); ?>"
352 - logged_in_greeting="<?php echo esc_attr($fb_mgs_in); ?>"
353 - logged_out_greeting="<?php echo esc_attr($fb_mgs_out); ?>"></div>
161 + theme_color="<?php echo $fb_mgs_color; ?>"
162 + logged_in_greeting="<?php echo $fb_mgs_in; ?>"
163 + logged_out_greeting="<?php echo $fb_mgs_out; ?>"></div>
354 164 <?php
355 165 }
356 166 ?>
357 167 <!--container-->
@@ -356,16 +166,15 @@
356 166 ?>
357 167 <!--container-->
358 168 <!--wp-chatbot-ball-wrapper-->
359 169 </div>
360 -
170 + <audio id="wp-chatbot-proactive-audio" <?php if (get_option('enable_wp_chatbot_sound_initial') == 1) {
171 + echo "autoplay";
172 + } ?>>
173 + <source src="<?php echo QCLD_wpCHATBOT_IMG_URL; ?>pro-active.mp3">
174 + </source>
175 + </audio>
361 176 <?php
362 -
363 - if ( get_transient( 'qcld_bot_clear_cache' ) ) {
364 - echo '<script type="text/javascript">var wpbot_clear_cache = 1 </script>';
365 - delete_transient( 'qcld_bot_clear_cache' );
366 - }
367 -
368 177 }else{
369 178 ?>
370 179 <script>
371 180 var openingHourIsFn = 1;
@@ -375,29 +184,26 @@
375 184 }
376 185 //wp_chatbot load control handler.
377 186 function wp_chatbot_load_controlling(){
378 187 $wp_chatbot_load = true;
379 -
380 -
188 + if (wp_chatbot_is_mobile() && get_option('disable_wp_chatbot_on_mobile') == 1) {
189 + $wp_chatbot_load = false;
190 + }
191 + if (get_option('wp_chatbot_show_home_page') == 'off' && is_home()) {
192 + $wp_chatbot_load = false;
193 + }
194 + if (get_option('wp_chatbot_show_posts') == 'off' && 'post' == get_post_type()) {
195 + $wp_chatbot_load = false;
196 + }
381 197 if (get_option('wp_chatbot_show_pages') == 'off') {
382 198 $wp_chatbot_select_pages = unserialize(get_option('wp_chatbot_show_pages_list'));
383 199 if (is_page() && !empty($wp_chatbot_select_pages)) {
384 -
385 200 if (in_array(get_the_ID(), $wp_chatbot_select_pages) == true) {
386 -
387 201 $wp_chatbot_load = true;
388 202 } else {
389 203 $wp_chatbot_load = false;
390 204 }
391 -
392 205 }
393 -
394 - if(function_exists('is_shop')){
395 - if (is_shop() || is_cart() || is_checkout() || 'product' == get_post_type()) {
396 - $wp_chatbot_load = false;
397 - }
398 - }
399 -
400 206 }
401 207 if (get_option('wp_chatbot_show_wpcommerce') == 'off') {
402 208
403 209 }
@@ -408,34 +214,22 @@
408 214 if (has_shortcode($page->post_content, 'wpwbot')) {
409 215 $wp_chatbot_load = false;
410 216 }
411 217 }
412 -
413 - $post_list = maybe_unserialize(get_option('wp_chatbot_exclude_post_list'));
414 -
415 - if( is_array( $post_list ) && in_array(get_post_type(), $post_list)){
416 - $wp_chatbot_load = false;
218 + //Opening Hours for wpwBot.
219 + if (get_option('enable_wp_chatbot_opening_hour') == 1) {
220 + if(wp_chatbot_check_opening_hours()==false){
221 + $wp_chatbot_load = false;
222 + }else{
223 + $wp_chatbot_load = true;
224 + }
417 225 }
418 - if (wp_chatbot_is_mobile() && get_option('disable_wp_chatbot_on_mobile') == 1) {
419 - $wp_chatbot_load = false;
420 - }
421 -
422 - if (get_option('wp_chatbot_show_home_page') == 'off' && is_home()) {
423 - $wp_chatbot_load = false;
424 - }
425 -
426 - if (get_option('wp_chatbot_show_posts') == 'off' && 'post' == get_post_type()) {
427 - $wp_chatbot_load = false;
428 - }
429 -
430 - if(is_admin()){
431 - $wp_chatbot_load = false;
432 - }
226 +
433 227 return $wp_chatbot_load;
434 228 }
435 229 //checking Devices
436 230 function wp_chatbot_is_mobile(){
437 - $useragent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
231 + $useragent = $_SERVER['HTTP_USER_AGENT'];
438 232 if (preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i', $useragent) || preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i', substr($useragent, 0, 4))) {
439 233 return true;
440 234 } else {
441 235 return false;
@@ -442,13 +236,13 @@
442 236 }
443 237 }
444 238 //Checking wpwbot opening hour
445 239 function wp_chatbot_check_opening_hours(){
446 - $curent_day=strtolower(gmdate('l',strtotime(current_time( 'mysql' ))));
447 - $current_time=gmdate('H:i',strtotime(current_time( 'mysql')));
240 + $curent_day=strtolower(date('l',strtotime(current_time( 'mysql' ))));
241 + $current_time=date('H:i',strtotime(current_time( 'mysql')));
448 242 $is_wpwbot_open =false;
449 243 if(get_option('wpwbot_hours')) {
450 - $wpwbot_times = wp_kses_post(unserialize(get_option('wpwbot_hours')));
244 + $wpwbot_times = unserialize(get_option('wpwbot_hours'));
451 245 if (isset($wpwbot_times[$curent_day])) {
452 246 $day_times = $wpwbot_times[$curent_day];
453 247 if (!empty($day_times)) {
454 248 foreach ($day_times as $day_time) {
@@ -460,8 +254,183 @@
460 254 }
461 255 }
462 256 return $is_wpwbot_open;
463 257 }
258 +//wpwBot shortcode.
259 +add_shortcode('wpwbot', 'wp_chatbot_short_code');
260 +function wp_chatbot_short_code($atts = []){
261 + ob_start();
262 + wp_chatbot_shortcode_dom($atts);
263 + $content = ob_get_clean();
264 + return $content;
265 +}
266 +function wp_chatbot_shortcode_dom($atts){
267 + //Defaults & Set Parameters for shortcode
268 + extract(shortcode_atts(
269 + array(
270 + 'template' => '01',
271 + ), $atts
272 + ));
273 + ?>
274 + <style>
275 + <?php if(get_option('wp_chatbot_custom_css')!=""){echo get_option('wp_chatbot_custom_css'); } ?>
276 + </style>
277 + <?php if (get_option('qcld_wb_chatbot_change_bg') == 1) {
278 + if (get_option('qcld_wb_chatbot_board_bg_path') != "") {
279 + $qcld_wb_chatbot_board_bg_path = get_option('qcld_wb_chatbot_board_bg_path');
280 + } else {
281 + $qcld_wb_chatbot_board_bg_path = QCLD_wpCHATBOT_IMG_URL . 'background/background.png';
282 + }
283 + ?>
284 + <style>
285 + .wp-chatbot-container {
286 + background: url(<?php echo $qcld_wb_chatbot_board_bg_path ;?>) no-repeat top right !important;
287 + }
288 + </style>
289 +<?php }
290 + $wp_chatbot_enable_rtl = "";
291 + if (get_option('enable_wp_chatbot_rtl')) {
292 + $wp_chatbot_enable_rtl .= "wp-chatbot-rtl";
293 + }
294 + ?>
295 + <div id="wp-chatbot-chat-container" class="<?php echo $wp_chatbot_enable_rtl; ?>">
296 + <?php
297 + //Get wpcommerce cart
298 +
299 + $qcld_wb_chatbot_theme = 'template-' . $template;
300 + if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/style.css')) {
301 + wp_register_style('qcld-wp-chatbot-style', plugins_url(basename(plugin_dir_path(__FILE__)) . '/templates/' . $qcld_wb_chatbot_theme . '/style.css', basename(__FILE__)), '', QCLD_wpCHATBOT_VERSION, 'screen');
302 + wp_enqueue_style('qcld-wp-chatbot-style');
303 + }
304 + if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php')) {
305 + require_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php');
306 + } else {
307 + echo "<h2>" . __('No wpWBot Theme Found!', 'wpchatbot') . "</h2>";
308 + }
309 + ?>
310 + <?php if (get_option('disable_wp_chatbot') != 1): ?>
311 + <div id="wp-chatbot-notification-container" class="wp-chatbot-notification-container">
312 + <div class="wp-chatbot-notification-controller"> <span class="wp-chatbot-notification-close">X</span> </div>
313 + <?php
314 + if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
315 + $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
316 + } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
317 + $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
318 + } else {
319 + $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
320 + }
321 + ?>
322 + <div class="wp-chatbot-notification-agent-profile">
323 + <div class="wp-chatbot-notification-widget-avatar"><img
324 + src="<?php echo $wp_chatbot_custom_icon_path; ?>" alt=""></div>
325 + <div class="wp-chatbot-notification-welcome"><?php echo wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_welcome'))) . ' <strong>' . get_option('qlcd_wp_chatbot_host') . '</strong>'; ?></div>
326 + </div>
327 + <div class="wp-chatbot-notification-message"><?php echo wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_notifications'))); ?></div>
328 + </div>
329 + <!--wp-chatbot-board-container-->
330 + <div id="wp-chatbot-ball" class="">
331 + <div class="wp-chatbot-ball">
332 + <div class="wp-chatbot-ball-animator wp-chatbot-ball-animation-switch"></div>
333 + <?php
334 + if (get_option('wp_chatbot_custom_icon_path') != "" && get_option('wp_chatbot_icon') == "custom.png") {
335 + $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_icon_path');
336 + } else if (get_option('wp_chatbot_custom_icon_path') != "" && get_option('wp_chatbot_icon') != "custom.png") {
337 + $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_icon');
338 + } else {
339 + $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom.png';
340 + }
341 + ?>
342 + <img src="<?php echo $wp_chatbot_custom_icon_path; ?>"
343 + alt="wpChatIcon"> <!--<span class="wp-chatbot-ball-cart-items"><?php echo $cart_items_number; ?></span>--> </div>
344 + </div>
345 + <!-- wp-chatbot-board-container-->
346 + <?php endif; ?>
347 + <!--container-->
348 + <!--wp-chatbot-ball-wrapper-->
349 + </div>
350 +<?php } ?>
351 +<?php
352 +//Create shortcode for wpwBot for pages.
353 +add_shortcode('wpbot-page', 'wp_chatbot_page_short_code');
354 +function wp_chatbot_page_short_code(){
355 + ob_start();
356 + wp_chatbot_page_dom();
357 + $content = ob_get_clean();
358 + return $content;
359 +}
360 +function wp_chatbot_page_dom(){ ?>
361 + <style>
362 + <?php if(get_option('wp_chatbot_custom_css')!=""){echo get_option('wp_chatbot_custom_css'); } ?>
363 + </style>
364 + <?php
365 + //Get wpcommerce cart
366 +
367 + $qcld_wb_chatbot_theme = get_option('qcld_wb_chatbot_theme');
368 + $wp_chatbot_enable_rtl = "";
369 + if (get_option('enable_wp_chatbot_rtl') == 1) {
370 + $wp_chatbot_enable_rtl .= "wp-chatbot-rtl";
371 + }
372 + if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/shortcode.php')) {
373 + require_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/shortcode.php');
374 + } else {
375 + echo "<h2>" . __('No WPBot ShortCode Theme Found!', 'wpchatbot') . "</h2>";
376 + }
377 +}
378 +//shortcode for wpWBot mobile app
379 +add_shortcode('wpwbot_app', 'wp_chatbot_mobile_app_short_code');
380 +function wp_chatbot_mobile_app_short_code(){ ?>
381 + <style>
382 + <?php if(get_option('wp_chatbot_custom_css')!=""){echo get_option('wp_chatbot_custom_css'); } ?>
383 + </style>
384 + <?php if (get_option('qcld_wb_chatbot_change_bg') == 1) {
385 + if (get_option('qcld_wb_chatbot_board_bg_path') != "") {
386 + $qcld_wb_chatbot_board_bg_path = get_option('qcld_wb_chatbot_board_bg_path');
387 + } else {
388 + $qcld_wb_chatbot_board_bg_path = QCLD_wpCHATBOT_IMG_URL . 'background/background.png';
389 + }
390 + ?>
391 + <style>
392 + .wp-chatbot-container {
393 + background: url(<?php echo $qcld_wb_chatbot_board_bg_path ;?>) no-repeat top right !important;
394 + }
395 + </style>
396 +<?php }
397 + $wp_chatbot_enable_rtl = "";
398 + if (get_option('enable_wp_chatbot_rtl')) {
399 + $wp_chatbot_enable_rtl .= "wp-chatbot-rtl";
400 + }
401 + ?>
402 + <div id="wp-chatbot-chat-app-shortcode-container" class="<?php echo $wp_chatbot_enable_rtl; ?>">
403 + <?php
404 + // keep traking app template.
405 + $template_app = 'yes';
406 + //Get wpcommerce cart
407 +
408 + //Handling shortcode enqeue and remove features part.
409 + define('wpCOMMERCE', true);
410 + wp_enqueue_script('jquery');
411 +
412 +
413 + wp_enqueue_script('wc-address-i18n');
414 + wp_enqueue_script('wc-country-select');
415 +
416 +
417 + // add the action
418 + if (isset($_GET['from']) && $_GET['from'] == 'app') {
419 + if (!isset($_COOKIE['from_app'])) {
420 + setcookie('from_app', 'yes', time() + 3600);
421 + }
422 + }
423 + $qcld_wb_chatbot_theme = get_option('qcld_wb_chatbot_theme');
424 + if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php')) {
425 + require_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php');
426 + } else {
427 + echo "<h2>" . __('No WPBot Theme Found!', 'wpchatbot') . "</h2>";
428 + }
429 + ?>
430 + </div>
431 + <?php
432 +}
464 433
465 434 /**
466 435 * wpwBot Search keyword product
467 436 */
@@ -467,20 +436,13 @@
467 436 */
468 437 add_action('wp_ajax_qcld_wb_chatbot_keyword', 'qcld_wb_chatbot_keyword');
469 438 add_action('wp_ajax_nopriv_qcld_wb_chatbot_keyword', 'qcld_wb_chatbot_keyword');
470 439 function qcld_wb_chatbot_keyword(){
471 - // Verify nonce for security
472 - $nonce = isset($_POST['security']) ? sanitize_text_field(wp_unslash($_POST['security'])) : (isset($_POST['nonce']) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : '');
473 - if ( ! wp_verify_nonce( $nonce, 'wp_chatbot' ) && ! wp_verify_nonce( $nonce, 'qcsecretbotnonceval123qc' ) ) {
474 - wp_send_json_error( array( 'status' => 'fail', 'message' => 'Security check failed.' ) );
475 - wp_die();
476 - }
477 -
478 - $keyword = sanitize_text_field(wp_unslash($_POST['keyword']));
440 + $keyword = sanitize_text_field($_POST['keyword']);
479 441 $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
480 442 if (get_option('qlcd_wp_chatbot_search_option') == 'standard') {
481 - $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
482 - $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
443 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
444 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
483 445 //Merging all query together.
484 446 $argu_params = array(
485 447 'post_type' => 'product',
486 448 'post_status' => 'publish',
@@ -522,9 +484,9 @@
522 484 endwhile;
523 485 wp_reset_postdata();
524 486 $html .= '</ul>';
525 487 if ($total_product_num > $product_per_page && $product_per_page > 0 ) {
526 - $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="product" data-search-term="' . esc_attr($keyword) . '" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more')))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
488 + $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="product" data-search-term="' . $keyword . '" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more'))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
527 489 }
528 490 }
529 491 $html .= '</div>';
530 492 } else if (get_option('qlcd_wp_chatbot_search_option') == 'advanced') {
@@ -552,16 +514,16 @@
552 514 }
553 515 }
554 516 $html .= '</ul>';
555 517 if ($total_product_num > $product_per_page && $product_per_page > 0) {
556 - $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="product" data-search-term="' . esc_attr($more_product_ids) . '" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more')))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
518 + $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="product" data-search-term="' . $more_product_ids . '" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more'))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
557 519 }
558 520 }
559 521 $html .= '</div>';
560 522 }
561 523 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
562 - wp_send_json($response);
563 -
524 + echo wp_send_json($response);
525 + wp_die();
564 526 }
565 527 /**
566 528 * wpwBot Categories
567 529 */
@@ -569,22 +531,23 @@
569 531 add_action('wp_ajax_nopriv_qcld_wb_chatbot_category', 'qcld_wb_chatbot_category');
570 532 function qcld_wb_chatbot_category(){
571 533 $category_type="common";
572 534 if (get_option('wp_chatbot_show_parent_category') != "") {
573 - $terms = get_terms( array( 'taxonomy' => 'product_cat', 'parent' => 0, 'hide_empty' => true, 'fields' => 'all' ) );
535 + $terms = get_terms('product_cat', array('parent' => 0, 'hide_empty' => true, 'fields' => 'all'));
536 +
574 537 } else {
575 - $terms = get_terms( array( 'taxonomy' => 'product_cat', 'hide_empty' => true, 'fields' => 'all' ) );
538 + $terms = get_terms('product_cat', array('hide_empty' => true, 'fields' => 'all'));
576 539 }
577 540 $html = "";
578 541 foreach ($terms as $term) {
579 - $child_terms=get_terms( array( 'taxonomy' => 'product_cat', 'parent' => $term->term_id, 'hide_empty' => true, 'fields' => 'all' ) );
542 + $child_terms=get_terms('product_cat', array('parent' => $term->term_id, 'hide_empty' => true, 'fields' => 'all'));
580 543 if(get_option('wp_chatbot_show_sub_category')==1 && count($child_terms) >0){
581 544 $category_type="hasChilds";
582 545 }
583 546 $html .= '<span class="qcld-chatbot-product-category" data-category-type="' . $category_type . '" data-category-slug="' . $term->slug . '" data-category-id="' . $term->term_id . '">' . $term->name . '</span>';
584 547 }
585 - wp_send_json($html);
586 -
548 + echo wp_send_json($html);
549 + wp_die();
587 550 }
588 551 /**
589 552 * wpwBot Sub categories
590 553 */
@@ -590,16 +553,16 @@
590 553 */
591 554 add_action('wp_ajax_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
592 555 add_action('wp_ajax_nopriv_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
593 556 function qcld_wb_chatbot_sub_category(){
594 - $parent_id = intval( wp_unslash( $_POST['parent_id'] ) );
595 - $terms = get_terms( array( 'taxonomy' => 'product_cat', 'parent' => $parent_id, 'hide_empty' => true, 'fields' => 'all' ) );
557 + $parent_id = stripslashes($_POST['parent_id']);
558 + $terms = get_terms('product_cat', array('parent' => $parent_id, 'hide_empty' => true, 'fields' => 'all'));
596 559 $html = "";
597 560 foreach ($terms as $term) {
598 561 $html .= '<span class="qcld-chatbot-product-category" data-category-type="common" data-category-slug="' . $term->slug . '" data-category-id="' . $term->term_id . '">' . $term->name . '</span>';
599 562 }
600 - wp_send_json($html);
601 -
563 + echo wp_send_json($html);
564 + wp_die();
602 565 }
603 566 /**
604 567 * wpwBot category product
605 568 */
@@ -605,12 +568,12 @@
605 568 */
606 569 add_action('wp_ajax_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
607 570 add_action('wp_ajax_nopriv_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
608 571 function qcld_wb_chatbot_category_products(){
609 - $category_id = intval( wp_unslash( $_POST['category'] ) );
610 - $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
611 - $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
612 - $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
572 + $category_id = stripslashes($_POST['category']);
573 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
574 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
575 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
613 576 //Merging all query together.
614 577 $argu_params = array(
615 578 'post_type' => 'product',
616 579 'post_status' => 'publish',
@@ -672,9 +635,9 @@
672 635 endwhile;
673 636 wp_reset_postdata();
674 637 $html .= '</ul>';
675 638 if ($total_product_num > $product_per_page && $product_per_page >0) {
676 - $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="category" data-search-term="' . $category_id . '" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more')))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
639 + $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="category" data-search-term="' . $category_id . '" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more'))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
677 640 }
678 641 $html .= '</div>';
679 642 } else {
680 643 $html = '';
@@ -679,9 +642,10 @@
679 642 } else {
680 643 $html = '';
681 644 }
682 645 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
683 - wp_send_json($response);
646 + echo wp_send_json($response);
647 + wp_die();
684 648 }
685 649 /**
686 650 * wpwBot latest, featured, recent product
687 651 */
@@ -687,11 +651,11 @@
687 651 */
688 652 add_action('wp_ajax_qcld_wb_chatbot_featured_products', 'qcld_wb_chatbot_featured_products');
689 653 add_action('wp_ajax_nopriv_qcld_wb_chatbot_featured_products', 'qcld_wb_chatbot_featured_products');
690 654 function qcld_wb_chatbot_featured_products(){
691 - $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
692 - $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
693 - $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
655 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
656 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
657 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
694 658 //get featured products query.
695 659 $argu_params = array('post_status' => 'publish',
696 660 'posts_per_page' => $product_per_page,
697 661 'post_type' => 'product',
@@ -735,14 +699,15 @@
735 699 endwhile;
736 700 wp_reset_postdata();
737 701 $html .= '</ul>';
738 702 if ($total_product_num > $product_per_page) {
739 - $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="product" data-search-term="featured" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more')))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
703 + $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="product" data-search-term="featured" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more'))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
740 704 }
741 705 }
742 706 $html .= '</div>';
743 707 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
744 - wp_send_json($response);
708 + echo wp_send_json($response);
709 + wp_die();
745 710 }
746 711 //Product display controll
747 712 function wp_chatbot_product_controlling($product_id){
748 713 $display_product = true;
@@ -757,11 +722,11 @@
757 722 //Get Sale products
758 723 add_action('wp_ajax_qcld_wb_chatbot_sale_products', 'qcld_wb_chatbot_sale_products');
759 724 add_action('wp_ajax_nopriv_qcld_wb_chatbot_sale_products', 'qcld_wb_chatbot_sale_products');
760 725 function qcld_wb_chatbot_sale_products(){
761 - $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
762 - $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
763 - $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
726 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
727 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
728 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
764 729 //get sale products query.
765 730 $argu_params = array(
766 731 'post_type' => 'product',
767 732 'post_status' => 'publish',
@@ -833,25 +798,26 @@
833 798 endwhile;
834 799 wp_reset_postdata();
835 800 $html .= '</ul>';
836 801 if ($total_product_num > $product_per_page) {
837 - $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="product" data-search-term="sale" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more')))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
802 + $html .= '<p style="text-align: center"><button type="button" id="wp-chatbot-loadmore" data-offset="' . $product_per_page . '" data-search-type="product" data-search-term="sale" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more'))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
838 803 }
839 804 }
840 805 $html .= '</div>';
841 806 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
842 - wp_send_json($response);
807 + echo wp_send_json($response);
808 + wp_die();
843 809 }
844 810 //load more
845 811 add_action('wp_ajax_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
846 812 add_action('wp_ajax_nopriv_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
847 813 function qcld_wb_chatbot_load_more(){
848 - $offset = intval( wp_unslash( $_POST['offset'] ) );
849 - $search_type = sanitize_text_field( wp_unslash( $_POST['search_type'] ) );
850 - $search_term = sanitize_text_field( wp_unslash( $_POST['search_term'] ) );
851 - $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
852 - $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
853 - $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
814 + $offset = stripslashes($_POST['offset']);
815 + $search_type = stripslashes($_POST['search_type']);
816 + $search_term = stripslashes($_POST['search_term']);
817 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
818 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
819 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
854 820 $next_offset = intval($product_per_page + $offset);
855 821 if ($search_type == 'product' && $search_term != 'featured' && $search_term != 'sale' && get_option('qlcd_wp_chatbot_search_option') == 'advanced') {
856 822 //if have multiple ids then explode else have single need to array push
857 823 if (strpos($search_term, ',') !== false) {
@@ -973,15 +939,16 @@
973 939 $html .= '';
974 940 }
975 941 $response = array('html' => $html, 'product_num' => $product_num, 'search_term' => $search_term, 'offset' => $next_offset, 'per_page' => $product_per_page);
976 942 }
977 - wp_send_json($response);
943 + echo wp_send_json($response);
944 + wp_die();
978 945 }
979 946 //product details
980 947 add_action('wp_ajax_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
981 948 add_action('wp_ajax_nopriv_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
982 949 function qcld_wb_chatbot_product_details(){
983 - $product_id = intval( wp_unslash( $_POST['wp_chatbot_pid'] ) );
950 + $product_id = stripslashes($_POST['wp_chatbot_pid']);
984 951 //Tracking product view from chat board
985 952 wp_chatbot_view_track_product_by_id($product_id);
986 953 //wpcommerce product factory
987 954 $wc_pf = new WC_Product_Factory();
@@ -1009,9 +976,9 @@
1009 976 }
1010 977 }
1011 978 $product_image .= '</ul></div>';
1012 979 $product_price = '<p class="wp-chatbot-product-price" id="wp-chatbot-product-price">' . $product->get_price_html() . '</p>';
1013 - $product_sku = '<p class="wp-chatbot-product-sku"> ' . __('SKU', 'chatbot') . ' : ' . $product->get_sku() . '</p>';
980 + $product_sku = '<p class="wp-chatbot-product-sku"> ' . __('SKU', 'wpchatbot') . ' : ' . $product->get_sku() . '</p>';
1014 981 //if ( $product->is_in_stock() || $product->is_purchasable() )
1015 982 //Handle variable product start
1016 983 $variations = "";
1017 984 $add_cart_button = "";
@@ -1052,13 +1019,12 @@
1052 1019 } else {
1053 1020 $variations .= '<div class="wp-chatbot-variable-' . sanitize_title($name) . '">';
1054 1021 $variations .= '<label for="' . sanitize_title($name) . '">' . $title . '</label>';
1055 1022 $variations .= '<select id="' . esc_attr(sanitize_title($name)) . '" name="attribute_' . sanitize_title($name) . '" data-attribute_name="attribute_' . sanitize_title($name) . '" class="each_attribute">';
1056 - $variations .= '<option value="">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_choose_option')))) . '</option>';
1023 + $variations .= '<option value="">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_choose_option'))) . '</option>';
1057 1024 foreach ($values as $value) {
1058 - $attr_key = 'attribute_' . sanitize_title( $name );
1059 - if ( isset( $_REQUEST[ $attr_key ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
1060 - $selected_value = sanitize_text_field( wp_unslash( $_REQUEST[ $attr_key ] ) );
1025 + if (isset($_REQUEST['attribute_' . sanitize_title($name)])) {
1026 + $selected_value = $_REQUEST['attribute_' . sanitize_title($name)];
1061 1027 } else {
1062 1028 $selected_value = '';
1063 1029 }
1064 1030 $variations .= '<option value="' . esc_attr(strtolower($value)) . '"' . selected($selected_value, $value, false) . '>' . apply_filters('wpcommerce_variation_option_name', $value) . '</option>';
@@ -1065,29 +1031,30 @@
1065 1031 }
1066 1032 $variations .= '</select></div>';
1067 1033 }
1068 1034 }
1069 - $add_cart_button .= '<input type="button" id="wp-chatbot-variation-add-to-cart" wp-chatbot-product-id="' . $product_id . '" value="' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_add_to_cart')))) . '" variation_id="" />';
1035 + $add_cart_button .= '<input type="button" id="wp-chatbot-variation-add-to-cart" wp-chatbot-product-id="' . $product_id . '" value="' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_add_to_cart'))) . '" variation_id="" />';
1070 1036 $add_cart_button .= "<input type='hidden' id='wp-chatbot-variation-data' data-product-variation='" . $variations_data . "' />";
1071 1037 } else {
1072 - $add_cart_button .= '<input type="button" id="wp-chatbot-add-cart-button" wp-chatbot-product-id="' . $product_id . '" value="' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_add_to_cart')))) . '" />';
1038 + $add_cart_button .= '<input type="button" id="wp-chatbot-add-cart-button" wp-chatbot-product-id="' . $product_id . '" value="' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_add_to_cart'))) . '" />';
1073 1039 }
1074 1040 //Handle variable product end.
1075 - $product_quantity .= '<label for="">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity')))) . '</label>
1041 + $product_quantity .= '<label for="">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity'))) . '</label>
1076 1042 <input type="number" id="vPQuantity" value="1" />';
1077 1043 }
1078 1044 //$response=$full_size_image;
1079 1045 $response = array('title' => $product_title, 'description' => $product_desc, 'image' => $product_image, 'price' => $product_price, 'sku' => $product_sku, 'quantity' => $product_quantity, 'buttton' => $add_cart_button, 'variation' => $variations, 'type' => $product_type, 'debug' => $debug);
1080 - wp_send_json($response);
1046 + echo wp_send_json($response);
1047 + wp_die();
1081 1048 }
1082 1049 //Add to cart for variable product.
1083 -add_action('wp_ajax_qcld_variable_add_to_cart', 'qcld_variable_add_to_cart');
1084 -add_action('wp_ajax_nopriv_qcld_variable_add_to_cart', 'qcld_variable_add_to_cart');
1085 -function qcld_variable_add_to_cart(){
1086 - $product_id = intval( wp_unslash( $_POST['p_id'] ) );
1087 - $quantity = intval( wp_unslash( $_POST['quantity'] ) );
1088 - $variations_id = intval( wp_unslash( $_POST['variations_id'] ) );
1089 - $attrs = isset( $_POST['attributes'] ) ? array_map( 'sanitize_text_field', wp_unslash( (array) $_POST['attributes'] ) ) : array();
1050 +add_action('wp_ajax_variable_add_to_cart', 'qcld_wb_chatbot_variable_add_to_cart');
1051 +add_action('wp_ajax_nopriv_variable_add_to_cart', 'qcld_wb_chatbot_variable_add_to_cart');
1052 +function qcld_wb_chatbot_variable_add_to_cart(){
1053 + $product_id = stripslashes($_POST['p_id']);
1054 + $quantity = stripslashes($_POST['quantity']);
1055 + $variations_id = stripslashes($_POST['variations_id']);
1056 + $attrs = stripslashes($_POST['attributes']);
1090 1057 //echo wp_send_json(array('p_id'=>$product_id,'qnty'=>$quantity,'id'=>$variations_id,'att'=>$attrs));
1091 1058 $attributes = array();
1092 1059 foreach ($attrs as $attr) {
1093 1060 $single = explode("#", $attr);
@@ -1098,68 +1065,60 @@
1098 1065 }
1099 1066 global $wpcommerce;
1100 1067 $result = $wpcommerce->cart->add_to_cart($product_id, $quantity, $variations_id, $attributes, null);
1101 1068 if ($result != false) {
1102 - wp_send_json('variable');
1069 + echo wp_send_json('variable');
1103 1070 } else {
1104 - wp_send_json('error');
1071 + echo wp_send_json('error');
1105 1072 }
1073 + wp_die();
1106 1074 }
1107 1075 //Add to cart for simple product.
1108 1076 add_action('wp_ajax_qcld_wb_chatbot_add_to_cart', 'qcld_wb_chatbot_add_to_cart');
1109 1077 add_action('wp_ajax_nopriv_qcld_wb_chatbot_add_to_cart', 'qcld_wb_chatbot_add_to_cart');
1110 1078 function qcld_wb_chatbot_add_to_cart(){
1111 - $product_id = intval( wp_unslash( $_POST['product_id'] ) );
1112 - $product_quantity = intval( wp_unslash( $_POST['quantity'] ) );
1079 + $product_id = stripslashes($_POST['product_id']);
1080 + $product_quantity = stripslashes($_POST['quantity']);
1113 1081 global $wpcommerce;
1114 1082 $result = $wpcommerce->cart->add_to_cart($product_id, $product_quantity);
1115 1083 if ($result != false) {
1116 - wp_send_json('simple');
1084 + echo wp_send_json('simple');
1117 1085 } else {
1118 - wp_send_json('error');
1086 + echo wp_send_json('error');
1119 1087 }
1088 + wp_die();
1120 1089 }
1121 1090 //Support part
1122 1091 add_action('wp_ajax_qcld_wb_chatbot_support_email', 'qcld_wb_chatbot_support_email');
1123 1092 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_email', 'qcld_wb_chatbot_support_email');
1124 1093 function qcld_wb_chatbot_support_email(){
1125 - $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : '';
1126 - if ( ! wp_verify_nonce( $nonce, 'qcsecretbotnonceval123qc' ) ) {
1127 - wp_send_json_error( array( 'error' => esc_html__( 'Error: Invalid nonce verification.', 'chatbot' ) ) );
1128 - }
1129 - $name = trim(sanitize_text_field(wp_unslash($_POST['name'])));
1130 - $email = sanitize_email(wp_unslash($_POST['email']));
1131 - $message = sanitize_text_field(wp_unslash($_POST['message']));
1132 - $subject = sanitize_text_field(get_option('qlcd_wp_chatbot_email_sub') != '' ? get_option('qlcd_wp_chatbot_email_sub') : 'Support Email from wpWBot by Client');
1094 + $name = trim(sanitize_text_field($_POST['name']));
1095 + $email = sanitize_email($_POST['email']);
1096 + $message = sanitize_text_field($_POST['message']);
1097 + $subject = get_option('qlcd_wp_chatbot_email_sub') != '' ? get_option('qlcd_wp_chatbot_email_sub') : 'Support Email from wpWBot by Client';
1133 1098 //Extract Domain
1134 1099 $url = get_site_url();
1135 - $url = wp_parse_url($url);
1100 + $url = parse_url($url);
1136 1101 $domain = $url['host'];
1137 1102 //$admin_email = "admin@" . $domain;
1138 - $admin_email = sanitize_email(get_option('admin_email'));
1139 - $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
1140 -
1141 -
1142 - if(get_option('qlcd_wp_chatbot_from_email') && get_option('qlcd_wp_chatbot_from_email')!=''){
1143 - $fromEmail = get_option('qlcd_wp_chatbot_from_email');
1144 - }else{
1145 - $fromEmail = "wordpress@" . $domain;
1146 - }
1103 + $admin_email = get_option('admin_email');
1104 + $toEmail = get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email;
1105 + $fromEmail = "wordpress@" . $domain;
1147 1106 //Starting messaging and status.
1148 1107 $response['status'] = 'fail';
1149 - $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_fail')));
1108 + $response['message'] = str_replace('\\', '',get_option('qlcd_wp_chatbot_email_fail'));
1150 1109 if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
1151 - $response['message'] = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_invalid_email'))));
1110 + $response['message'] = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_invalid_email')));
1152 1111 $response['status'] = 'fail';
1153 1112 } else {
1154 1113 //build email body
1155 1114 $bodyContent = "";
1156 - $bodyContent .= '<p><strong>' . __('Support Request Details', 'chatbot') . ':</strong></p><hr>';
1157 - $bodyContent .= '<p>' . __('Name', 'chatbot') . ' : ' . $name . '</p>';
1158 - $bodyContent .= '<p>' . __('Email', 'chatbot') . ' : ' . $email . '</p>';
1159 - $bodyContent .= '<p>' . __('Subject', 'chatbot') . ' : ' . $subject . '</p>';
1160 - $bodyContent .= '<p>' . __('Message', 'chatbot') . ' : ' . $message . '</p>';
1161 - $bodyContent .= '<p>' . __('Mail Generated on', 'chatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1115 + $bodyContent .= '<p><strong>' . __('Support Request Details', 'wpchatbot') . ':</strong></p><hr>';
1116 + $bodyContent .= '<p>' . __('Name', 'wpchatbot') . ' : ' . $name . '</p>';
1117 + $bodyContent .= '<p>' . __('Email', 'wpchatbot') . ' : ' . $email . '</p>';
1118 + $bodyContent .= '<p>' . __('Subject', 'wpchatbot') . ' : ' . $subject . '</p>';
1119 + $bodyContent .= '<p>' . __('Message', 'wpchatbot') . ' : ' . $message . '</p>';
1120 + $bodyContent .= '<p>' . __('Mail Generated on', 'wpchatbot') . ': ' . date('F j, Y, g:i a') . '</p>';
1162 1121 $to = $toEmail;
1163 1122 $body = $bodyContent;
1164 1123 $headers = array();
1165 1124 $headers[] = 'Content-Type: text/html; charset=UTF-8';
@@ -1167,13 +1126,13 @@
1167 1126 $headers[] = 'Reply-To: ' . $name . ' <' . $email . '>';
1168 1127 $result = wp_mail($to, $subject, $body, $headers);
1169 1128 if ($result) {
1170 1129 $response['status'] = 'success';
1171 - $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_sent')));
1130 + $response['message'] = str_replace('\\', '',get_option('qlcd_wp_chatbot_email_sent'));
1172 1131 }
1173 -
1174 1132 }
1175 - echo wp_json_encode($response);
1133 + ob_clean();
1134 + echo json_encode($response);
1176 1135 die();
1177 1136 }
1178 1137 //Support Phone
1179 1138 add_action('wp_ajax_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
@@ -1178,37 +1137,30 @@
1178 1137 //Support Phone
1179 1138 add_action('wp_ajax_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1180 1139 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1181 1140 function qcld_wb_chatbot_support_phone(){
1182 - check_ajax_referer('qcsecretbotnonceval123qc', 'nonce');
1183 - $name = trim(sanitize_text_field(wp_unslash($_POST['name'])));
1184 - $phone =sanitize_text_field(wp_unslash($_POST['phone']));
1141 + $name = trim(sanitize_text_field($_POST['name']));
1142 + $phone =sanitize_text_field($_POST['phone']);
1185 1143 $subject = 'WPBot Support Mail Request for Call Back';
1186 1144 //Extract Domain
1187 1145 $url = get_site_url();
1188 - $url = wp_parse_url($url);
1146 + $url = parse_url($url);
1189 1147 $domain = $url['host'];
1190 1148 //$admin_email = "admin@" . $domain;
1191 1149 $admin_email = get_option('admin_email');
1192 - $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
1193 -
1194 -
1195 - if(get_option('qlcd_wp_chatbot_from_email') && get_option('qlcd_wp_chatbot_from_email')!=''){
1196 - $fromEmail = sanitize_email(get_option('qlcd_wp_chatbot_from_email'));
1197 - }else{
1198 - $fromEmail = "wordpress@" . $domain;
1199 - }
1150 + $toEmail = get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email;
1151 + $fromEmail = "wordpress@" . $domain;
1200 1152 //Starting messaging and status.
1201 1153 $response['status'] = 'fail';
1202 - $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_fail')));
1154 + $response['message'] = str_replace('\\', '',get_option('qlcd_wp_chatbot_phone_fail'));
1203 1155 //build email body
1204 1156 $bodyContent = "";
1205 - $bodyContent .= '<p><strong>' . __('Support Request Details', 'chatbot') . ':</strong></p><hr>';
1206 - $bodyContent .= '<p>' . __('Name', 'chatbot') . ' : ' . $name . '</p>';
1207 - $bodyContent .= '<p>' . __('Phone', 'chatbot') . ' : ' . $phone . '</p>';
1208 - $bodyContent .= '<p>' . __('Subject', 'chatbot') . ' : ' . $subject . '</p>';
1209 - $bodyContent .= '<p>' . __('Message', 'chatbot') . ' : ' . __(' Call me at ', 'chatbot'). $phone . '</p>';
1210 - $bodyContent .= '<p>' . __('Mail Generated on', 'chatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1157 + $bodyContent .= '<p><strong>' . __('Support Request Details', 'wpchatbot') . ':</strong></p><hr>';
1158 + $bodyContent .= '<p>' . __('Name', 'wpchatbot') . ' : ' . $name . '</p>';
1159 + $bodyContent .= '<p>' . __('Phone', 'wpchatbot') . ' : ' . $phone . '</p>';
1160 + $bodyContent .= '<p>' . __('Subject', 'wpchatbot') . ' : ' . $subject . '</p>';
1161 + $bodyContent .= '<p>' . __('Message', 'wpchatbot') . ' : ' . __(' Call me at ', 'wpchatbot'). $phone . '</p>';
1162 + $bodyContent .= '<p>' . __('Mail Generated on', 'wpchatbot') . ': ' . date('F j, Y, g:i a') . '</p>';
1211 1163 $to = $toEmail;
1212 1164 $body = $bodyContent;
1213 1165 $headers = array();
1214 1166 $headers[] = 'Content-Type: text/html; charset=UTF-8';
@@ -1216,17 +1168,39 @@
1216 1168 $headers[] = 'Reply-To: ' . $name . ' <' . $fromEmail . '>';
1217 1169 $result = wp_mail($to, $subject, $body, $headers);
1218 1170 if ($result) {
1219 1171 $response['status'] = 'success';
1220 - $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_sent')));
1172 + $response['message'] = str_replace('\\', '',get_option('qlcd_wp_chatbot_phone_sent'));
1221 1173 }
1222 - echo wp_json_encode($response);
1174 + ob_clean();
1175 + echo json_encode($response);
1223 1176 die();
1224 1177 }
1225 -// Order Status part. removed
1226 -
1178 +// Order Status part.
1179 +add_action('wp_ajax_qcld_wb_chatbot_check_user', 'qcld_wb_chatbot_check_user');
1180 +add_action('wp_ajax_nopriv_qcld_wb_chatbot_check_user', 'qcld_wb_chatbot_check_user');
1181 +function qcld_wb_chatbot_check_user(){
1182 + global $wpcommerce;
1183 + $user_name = trim(sanitize_text_field($_POST['user_name']));
1184 + $response = array();
1185 + $response['message'] = "";
1186 + if (username_exists($user_name)) {
1187 + if (get_option('qlcd_wp_chatbot_order_user') == 'login') {
1188 + $response['status'] = "success";
1189 + $response['message'] .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_username_thanks')));
1190 + $response['html'] .= '<p>' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_username_password'))) . '</p>';
1191 + } else if (get_option('qlcd_wp_chatbot_order_user') == 'not_login') {
1192 + $response = get_order_by_username($user_name);
1193 + }
1194 + } else {
1195 + $response['status'] = "fail";
1196 + $response['message'] .= '<strong>' . $user_name . '</strong> ' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_username_not_exist')));
1197 + }
1198 + echo wp_send_json($response);
1199 + die();
1200 +}
1227 1201 function wpb_randmom_message_handle($items){
1228 - return $items[wp_rand(0, count($items) - 1)];
1202 + return $items[rand(0, count($items) - 1)];
1229 1203 }
1230 1204 function qcld_wb_chatbot_func_str_replace($messages = array()){
1231 1205 $refined_mesgses = array();
1232 1206 foreach ($messages as $message) {
@@ -1241,21 +1215,22 @@
1241 1215 // First check the nonce, if it fails the function will break
1242 1216 check_ajax_referer('wpwbot-order-nonce', 'security');
1243 1217 // Nonce is checked, get the POST data and sign user on
1244 1218 $info = array();
1245 - $info['user_login'] = trim(sanitize_text_field(wp_unslash($_POST['user_name'])));
1246 - $info['user_password'] = trim(sanitize_text_field(wp_unslash($_POST['user_pass'])));
1219 + $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1220 + $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1247 1221 $info['remember'] = true;
1248 1222 $user_signon = wp_signon($info, false);
1249 1223 $response = array();
1250 1224 if (is_wp_error($user_signon)) {
1251 1225 $response['status'] = "fail";
1252 - $response['message'] = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect'))));
1226 + $response['message'] = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect')));
1253 1227 } else {
1254 1228 $response = get_order_by_username($info['user_login']);
1255 1229 $response['status'] = "success";
1256 1230 }
1257 - wp_send_json($response);
1231 + echo wp_send_json($response);
1232 + die();
1258 1233 }
1259 1234 add_action('wp_ajax_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1260 1235 add_action('wp_ajax_nopriv_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1261 1236 function qcld_wb_chatbot_loged_in_user_orders(){
@@ -1261,9 +1236,10 @@
1261 1236 function qcld_wb_chatbot_loged_in_user_orders(){
1262 1237 $current_user = wp_get_current_user();
1263 1238 $user_name = $current_user->user_login;
1264 1239 $response = get_order_by_username($user_name);
1265 - wp_send_json($response);
1240 + echo wp_send_json($response);
1241 + die();
1266 1242 }
1267 1243 function get_order_by_username($user_name){
1268 1244 global $post;
1269 1245 $response = array();
@@ -1281,28 +1257,28 @@
1281 1257 ));
1282 1258 $response['order_num'] = count($customer_orders);
1283 1259 $order_html = '';
1284 1260 if ($response['order_num'] > 0) {
1285 - $response['message'] .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_found'))));
1261 + $response['message'] .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_found')));
1286 1262 $order_html .= '<div class="wp-chatbot-orders-container">
1287 1263 <div class="wp-chatbot-orders-header">
1288 - <div class="order-id">' . __('ID', 'chatbot') . '</div>
1289 - <div class="order-date">' . __('Date', 'chatbot') . ' </div>
1290 - <div class="order-items">' . __('Items', 'chatbot') . '</div>
1291 - <div class="order-status">' . __('Status', 'chatbot') . '</div>
1264 + <div class="order-id">' . __('ID', 'wpchatbot') . '</div>
1265 + <div class="order-date">' . __('Date', 'wpchatbot') . ' </div>
1266 + <div class="order-items">' . __('Items', 'wpchatbot') . '</div>
1267 + <div class="order-status">' . __('Status', 'wpchatbot') . '</div>
1292 1268 </div>';
1293 1269 foreach ($customer_orders as $order) {
1294 1270 //Formatting order summery
1295 1271 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1296 - $thanks_page_id = sanitize_text_field(get_option('wp_chatbot_app_order_thankyou'));
1272 + $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1297 1273 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1298 1274 $order_url = '<a href="' . $thanks_parmanlink . '?order_id=' . $order->ID . '" >' . $order->ID . '</a>';
1299 1275 } else {
1300 - $order_url = '<a href="' . get_url(get_permalink(get_option('wpcommerce_myaccount_page_id')) . '/view-order/' . $order->ID) . '" target="_blank" >' . $order->ID . '</a>';
1276 + $order_url = '<a href="' . get_permalink(get_option('wpcommerce_myaccount_page_id')) . '/view-order/' . $order->ID . '" target="_blank" >' . $order->ID . '</a>';
1301 1277 }
1302 1278 $order_html .= '<div class="wp-chatbot-orders-single">
1303 1279 <div class="order-id"> ' . $order_url . '</div>
1304 - <div class="order-date"> <p>' . gmdate("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1280 + <div class="order-date"> <p>' . date("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1305 1281 <div class="order-items">';
1306 1282 $singleOrder = new WC_Order($order->ID);
1307 1283 $items = $singleOrder->get_items();
1308 1284 foreach ($items as $item) {
@@ -1315,9 +1291,9 @@
1315 1291 }
1316 1292 $order_html .= '</div>';
1317 1293 } else {
1318 1294 $response['message'] .= get_option('qlcd_wp_chatbot_sorry') . '! <strong>' . $user_name . '</strong>';
1319 - $order_html .= '<p>' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_not_found')))) . '</p>';
1295 + $order_html .= '<p>' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_not_found'))) . '</p>';
1320 1296 }
1321 1297 $response['html'] = $order_html;
1322 1298 return $response;
1323 1299 }
@@ -1341,11 +1317,9 @@
1341 1317 if (sizeof($viewed_products) > 15) {
1342 1318 array_shift($viewed_products);
1343 1319 }
1344 1320 // Store for session only
1345 - if( function_exists( 'wc_setcookie' ) ){
1346 - wc_setcookie('wp_chatbot_wpcommerce_recently_viewed', implode('|', $viewed_products));
1347 - }
1321 + wc_setcookie('wp_chatbot_wpcommerce_recently_viewed', implode('|', $viewed_products));
1348 1322 }
1349 1323 add_action('template_redirect', 'wp_chatbot_track_product_view', 20);
1350 1324 //recent view product ajax
1351 1325 add_action('wp_ajax_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
@@ -1353,10 +1327,10 @@
1353 1327 function qcld_wb_chatbot_recently_viewed_products(){
1354 1328 // Get wpCommerce Global
1355 1329 $_pf = new WC_Product_Factory();
1356 1330 //show post per page.
1357 - $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
1358 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1331 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
1332 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1359 1333 // Get recently viewed product cookies data
1360 1334 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1361 1335 $viewed_products = array_filter(array_map('absint', $viewed_products));
1362 1336 //get featured products if has.
@@ -1362,9 +1336,9 @@
1362 1336 //get featured products if has.
1363 1337 $featured_products = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'tax_query' => array(array('taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured'))));
1364 1338 //Getting recently vieew products.
1365 1339 if (!empty($viewed_products)) {
1366 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))));
1340 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome')));
1367 1341 $product_query = new WP_Query(array(
1368 1342 'posts_per_page' => $product_per_page,
1369 1343 'no_found_rows' => 1,
1370 1344 'post_status' => 'publish',
@@ -1372,15 +1346,16 @@
1372 1346 'post__in' => $viewed_products,
1373 1347 ));
1374 1348 //Getting featured products
1375 1349 } else if ($featured_products->post_count > 0) {
1376 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome'))));
1350 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome')));
1377 1351 $product_query = $featured_products;
1378 1352 } else {
1379 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1353 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1380 1354 //Getting recent products
1381 1355 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1382 1356 }
1357 + //$html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))).'</div>';
1383 1358 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1384 1359 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1385 1360 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1386 1361 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
@@ -1387,10 +1362,10 @@
1387 1362 } else {
1388 1363 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1389 1364 }
1390 1365 $html = '<div class="wp-chatbot-agent-profile">
1391 - <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1392 - <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1366 + <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1367 + <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1393 1368 <div class="wp-chatbot-bubble">' . $wp_chatbot_product_title . '</div>
1394 1369 </div>';
1395 1370 if ($product_query->post_count > 0) {
1396 1371 $html .= '<div class="wp-chatbot-products-area">';
@@ -1402,9 +1377,9 @@
1402 1377 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1403 1378 <div class="wp-chatbot-product-summary">
1404 1379 <div class="wp-chatbot-product-table">
1405 1380 <div class="wp-chatbot-product-table-cell">
1406 - <h3 class="wp-chatbot-product-title">' . esc_html($product->post->post_title) . '</h3>
1381 + <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1407 1382 <div class="price">' . $product->get_price_html() . '</div>';
1408 1383 $html .= ' </div>
1409 1384 </div>
1410 1385 </div></a>
@@ -1417,9 +1392,10 @@
1417 1392 $html .= '<div class="wp-chatbot-products-area">';
1418 1393 $html .= '<p style="text-align: center">You have no products !';
1419 1394 $html .= '</div>';
1420 1395 }
1421 - wp_send_json($html);
1396 + echo wp_send_json($html);
1397 + die();
1422 1398 }
1423 1399 //Recently viewed product shortcode
1424 1400 add_shortcode('wpwbot_products', 'qcld_wb_chatbot_recently_viewed_shortcode');
1425 1401 function qcld_wb_chatbot_recently_viewed_shortcode(){
@@ -1424,10 +1400,10 @@
1424 1400 add_shortcode('wpwbot_products', 'qcld_wb_chatbot_recently_viewed_shortcode');
1425 1401 function qcld_wb_chatbot_recently_viewed_shortcode(){
1426 1402 // Get wpCommerce Global
1427 1403 $_pf = new WC_Product_Factory();
1428 - $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
1429 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1404 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
1405 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1430 1406 // Get recently viewed product cookies data
1431 1407 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1432 1408 $viewed_products = array_filter(array_map('absint', $viewed_products));
1433 1409 //get featured products if has.
@@ -1433,9 +1409,9 @@
1433 1409 //get featured products if has.
1434 1410 $featured_products = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'tax_query' => array(array('taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured'))));
1435 1411 //Getting recently vieew products.
1436 1412 if (!empty($viewed_products)) {
1437 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))));
1413 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome')));
1438 1414 $product_query = new WP_Query(array(
1439 1415 'posts_per_page' => $product_per_page,
1440 1416 'no_found_rows' => 1,
1441 1417 'post_status' => 'publish',
@@ -1443,15 +1419,16 @@
1443 1419 'post__in' => $viewed_products,
1444 1420 ));
1445 1421 //implementing featured products
1446 1422 } else if ($featured_products->post_count > 0) {
1447 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome'))));
1423 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome')));
1448 1424 $product_query = $featured_products;
1449 1425 } else {
1450 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1426 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1451 1427 //Getting recent products
1452 1428 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1453 1429 }
1430 + //$html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))).'</div>';
1454 1431 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1455 1432 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1456 1433 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1457 1434 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
@@ -1458,11 +1435,11 @@
1458 1435 } else {
1459 1436 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1460 1437 }
1461 1438 $html = '<div class="wp-chatbot-agent-profile">
1462 - <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1463 - <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1464 - <div class="wp-chatbot-bubble">' . esc_html($wp_chatbot_product_title) . '</div>
1439 + <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1440 + <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1441 + <div class="wp-chatbot-bubble">' . $wp_chatbot_product_title . '</div>
1465 1442 </div>';
1466 1443 if ($product_query->post_count > 0) {
1467 1444 $html .= '<div class="wp-chatbot-products-area">';
1468 1445 $html .= '<ul class="wp-chatbot-products">';
@@ -1473,9 +1450,9 @@
1473 1450 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1474 1451 <div class="wp-chatbot-product-summary">
1475 1452 <div class="wp-chatbot-product-table">
1476 1453 <div class="wp-chatbot-product-table-cell">
1477 - <h3 class="wp-chatbot-product-title">' . esc_html($product->post->post_title) . '</h3>
1454 + <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1478 1455 <div class="price">' . $product->get_price_html() . '</div>';
1479 1456 $html .= ' </div>
1480 1457 </div>
1481 1458 </div></a>
@@ -1485,9 +1462,9 @@
1485 1462 wp_reset_postdata();
1486 1463 $html .= '</ul></div>';
1487 1464 } else {
1488 1465 $html .= '<div class="wp-chatbot-products-area">';
1489 - $html .= '<p style="text-align: center">' . __('You have no products', 'chatbot') . ' !';
1466 + $html .= '<p style="text-align: center">' . __('You have no products', 'wpchatbot') . ' !';
1490 1467 $html .= '</div>';
1491 1468 }
1492 1469 return $html;
1493 1470 }
@@ -1501,10 +1478,11 @@
1501 1478 $checkout_url = wc_get_checkout_url();
1502 1479 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1503 1480 $items = $wpcommerce->cart->get_cart();
1504 1481 $itemCount = $wpcommerce->cart->cart_contents_count;
1505 - $cart_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart'))));
1506 - $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1482 + $cart_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart')));
1483 + $no_cart_item_msg = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1484 + //$html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))).'</div>';
1507 1485 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1508 1486 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1509 1487 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1510 1488 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
@@ -1511,15 +1489,15 @@
1511 1489 } else {
1512 1490 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1513 1491 }
1514 1492 $html = '<div class="wp-chatbot-agent-profile">
1515 - <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1516 - <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1517 - <div class="wp-chatbot-bubble">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome')))) . '</div>
1493 + <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1494 + <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1495 + <div class="wp-chatbot-bubble">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))) . '</div>
1518 1496 </div>';
1519 1497 if ($itemCount >= 1) {
1520 1498 $html .= '<div class ="wp-chatbot-cart-container">';
1521 - $html .= '<div class="wp-chatbot-cart-header"><div class="qcld-wp-chatbot-cell">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_title')))) . '</div><div class="qcld-wp-chatbot-cell">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity')))) . '</div><div class="qcld-wp-chatbot-cell">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_price')))) . '</div><div class="qcld-wp-chatbot-cell"></div></div>';
1499 + $html .= '<div class="wp-chatbot-cart-header"><div class="qcld-wp-chatbot-cell">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_title'))) . '</div><div class="qcld-wp-chatbot-cell">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity'))) . '</div><div class="qcld-wp-chatbot-cell">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_price'))) . '</div><div class="qcld-wp-chatbot-cell"></div></div>';
1522 1500 $html .= '<div class ="wp-chatbot-cart-body">';
1523 1501 foreach ($items as $item => $values) {
1524 1502 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1525 1503 //product image
@@ -1537,9 +1515,9 @@
1537 1515 <div class="qcld-wp-chatbot-cell"></div>
1538 1516 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1539 1517 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1540 1518 </div>';
1541 - $html .= '<div class="wp-chatbot-cart-footer"><div class="qcld-wp-chatbot-cart-page"><a class="wp-chatbot-cart-link" href="' . $cart_url . '" target="_blank" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_link')))) . '</a></div><div class="qcld-wp-chatbot-checkout"><a class="wp-chatbot-checkout-link" href="' . $checkout_url . '" target="_blank" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_checkout_link')))) . '</a></div></div>';
1519 + $html .= '<div class="wp-chatbot-cart-footer"><div class="qcld-wp-chatbot-cart-page"><a class="wp-chatbot-cart-link" href="' . $cart_url . '" target="_blank" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_link'))) . '</a></div><div class="qcld-wp-chatbot-checkout"><a class="wp-chatbot-checkout-link" href="' . $checkout_url . '" target="_blank" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_checkout_link'))) . '</a></div></div>';
1542 1520 $html .= ' </div>';
1543 1521 } else {
1544 1522 $html .= '<div class="wp-chatbot-cart-container">';
1545 1523 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
@@ -1545,9 +1523,10 @@
1545 1523 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1546 1524 $html .= '</div>';
1547 1525 }
1548 1526 $response = array('html' => $html, 'items' => $itemCount);
1549 - wp_send_json($response);
1527 + echo wp_send_json($response);
1528 + wp_die();
1550 1529 }
1551 1530 //cart onley for wp chatbot
1552 1531 add_action('wp_ajax_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1553 1532 add_action('wp_ajax_nopriv_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
@@ -1558,14 +1537,14 @@
1558 1537 $checkout_url = wc_get_checkout_url();
1559 1538 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1560 1539 $items = $wpcommerce->cart->get_cart();
1561 1540 $itemCount = $wpcommerce->cart->cart_contents_count;
1562 - $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1541 + $no_cart_item_msg = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1563 1542
1564 1543 $html = '';
1565 1544 if ($itemCount >= 1) {
1566 1545 $html .= '<div class ="wp-chatbot-cart-container">';
1567 - $html .= '<div class="wp-chatbot-cart-header"><div class="qcld-wp-chatbot-cell">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_title')))) . '</div><div class="qcld-wp-chatbot-cell">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity')))) . '</div><div class="qcld-wp-chatbot-cell">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_price')))) . '</div><div class="qcld-wp-chatbot-cell"></div></div>';
1546 + $html .= '<div class="wp-chatbot-cart-header"><div class="qcld-wp-chatbot-cell">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_title'))) . '</div><div class="qcld-wp-chatbot-cell">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity'))) . '</div><div class="qcld-wp-chatbot-cell">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_price'))) . '</div><div class="qcld-wp-chatbot-cell"></div></div>';
1568 1547 $html .= '<div class ="wp-chatbot-cart-body">';
1569 1548 foreach ($items as $item => $values) {
1570 1549 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1571 1550 //product image
@@ -1583,17 +1562,18 @@
1583 1562 <div class="qcld-wp-chatbot-cell"></div>
1584 1563 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1585 1564 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1586 1565 </div>';
1587 - $html .= '<div class="wp-chatbot-cart-footer"><div class="qcld-wp-chatbot-cart-page"><a class="wp-chatbot-cart-link" href="' . $cart_url . '" target="_blank" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_link')))) . '</a></div><div class="qcld-wp-chatbot-checkout"><a class="wp-chatbot-checkout-link" href="' . $checkout_url . '" target="_blank" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_checkout_link')))) . '</a></div></div>';
1566 + $html .= '<div class="wp-chatbot-cart-footer"><div class="qcld-wp-chatbot-cart-page"><a class="wp-chatbot-cart-link" href="' . $cart_url . '" target="_blank" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_link'))) . '</a></div><div class="qcld-wp-chatbot-checkout"><a class="wp-chatbot-checkout-link" href="' . $checkout_url . '" target="_blank" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_checkout_link'))) . '</a></div></div>';
1588 1567 $html .= ' </div>';
1589 1568 } else {
1590 1569 $html .= '<div class="wp-chatbot-cart-container">';
1591 - $html .= '<div><p style="text-align:center">' . esc_html($no_cart_item_msg) . '</p></div>';
1570 + $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1592 1571 $html .= '</div>';
1593 1572 }
1594 1573 $response = array('html' => $html, 'items' => $itemCount);
1595 - wp_send_json($response);
1574 + echo wp_send_json($response);
1575 + wp_die();
1596 1576 }
1597 1577 //Cart show Shortcode
1598 1578 add_shortcode('wpwbot_cart', 'qcld_wb_chatbot_cart_shortcode');
1599 1579 function qcld_wb_chatbot_cart_shortcode(){
@@ -1599,10 +1579,11 @@
1599 1579 function qcld_wb_chatbot_cart_shortcode(){
1600 1580 global $wpcommerce;
1601 1581 $items = $wpcommerce->cart->get_cart();
1602 1582 $itemCount = $wpcommerce->cart->cart_contents_count;
1603 - $cart_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart'))));
1604 - $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1583 + $cart_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart')));
1584 + $no_cart_item_msg = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1585 + // $html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))).'</div>';
1605 1586 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1606 1587 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1607 1588 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1608 1589 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
@@ -1609,15 +1590,15 @@
1609 1590 } else {
1610 1591 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1611 1592 }
1612 1593 $html = '<div class="wp-chatbot-agent-profile">
1613 - <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1614 - <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1615 - <div class="wp-chatbot-bubble">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome')))) . '</div>
1594 + <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1595 + <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1596 + <div class="wp-chatbot-bubble">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))) . '</div>
1616 1597 </div>';
1617 1598 if ($itemCount >= 1) {
1618 1599 $html .= '<div class ="wp-chatbot-cart-container">';
1619 - $html .= '<div class="wp-chatbot-cart-header"><div class="qcld-wp-chatbot-cell">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_title')))) . '</div><div class="qcld-wp-chatbot-cell">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity')))) . '</div><div class="qcld-wp-chatbot-cell">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_price')))) . '</div> <div class="qcld-wp-chatbot-cell"></div> </div>';
1600 + $html .= '<div class="wp-chatbot-cart-header"><div class="qcld-wp-chatbot-cell">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_title'))) . '</div><div class="qcld-wp-chatbot-cell">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity'))) . '</div><div class="qcld-wp-chatbot-cell">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_price'))) . '</div> <div class="qcld-wp-chatbot-cell"></div> </div>';
1620 1601 $html .= '<div class ="wp-chatbot-cart-body">';
1621 1602 foreach ($items as $item => $values) {
1622 1603 $cart_item = apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1623 1604 //product image
@@ -1635,9 +1616,9 @@
1635 1616 <div class="qcld-wp-chatbot-cell"></div>
1636 1617 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1637 1618 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1638 1619 </div>';
1639 - $html .= '<div class="wp-chatbot-cart-footer"><div class="qcld-wp-chatbot-cart-page"><a href="' . site_url() . '/cart" target="_blank" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_link')))) . '</a></div><div class="qcld-wp-chatbot-checkout"><a href="' . site_url() . '/checkout" target="_blank">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_checkout_link')))) . '</a></div></div>';
1620 + $html .= '<div class="wp-chatbot-cart-footer"><div class="qcld-wp-chatbot-cart-page"><a href="' . site_url() . '/cart" target="_blank" >' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_link'))) . '</a></div><div class="qcld-wp-chatbot-checkout"><a href="' . site_url() . '/checkout" target="_blank">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_checkout_link'))) . '</a></div></div>';
1640 1621 $html .= ' </div>';
1641 1622 } else {
1642 1623 $html .= '<div class="wp-chatbot-cart-container">';
1643 1624 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
@@ -1649,26 +1630,26 @@
1649 1630 //Updating the cart items.
1650 1631 add_action('wp_ajax_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1651 1632 add_action('wp_ajax_nopriv_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1652 1633 function qcld_wb_chatbot_update_cart_item_number(){
1653 - check_ajax_referer( 'wp_chatbot', 'nonce' );
1654 1634 //getting cart items n
1655 - $cart_item_key = sanitize_text_field(wp_unslash($_POST['cart_item_key']));
1656 - $qnty = sanitize_text_field(wp_unslash($_POST['qnty']));
1635 + $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
1636 + $qnty = sanitize_text_field($_POST['qnty']);
1657 1637 global $wpcommerce;
1658 1638 $result = $wpcommerce->cart->set_quantity($cart_item_key, $qnty);
1659 - wp_send_json($result);
1639 + echo wp_send_json($result);
1640 + wp_die();
1660 1641 }
1661 1642 //Show item after removing from cart page.
1662 1643 add_action('wp_ajax_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1663 1644 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1664 1645 function qcld_wb_chatbot_cart_item_remove(){
1665 - check_ajax_referer( 'wp_chatbot', 'nonce' );
1666 1646 //getting cart items n
1667 - $cart_item_key = sanitize_text_field(wp_unslash($_POST['cart_item']));
1647 + $cart_item_key = sanitize_text_field($_POST['cart_item']);
1668 1648 global $wpcommerce;
1669 1649 $result = $wpcommerce->cart->remove_cart_item($cart_item_key);
1670 - wp_send_json($result);
1650 + echo wp_send_json($result);
1651 + wp_die();
1671 1652 }
1672 1653 //Show cart page by shortcode.
1673 1654 add_action('wp_ajax_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1674 1655 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
@@ -1676,13 +1657,14 @@
1676 1657 global $wpcommerce;
1677 1658 $itemCount = $wpcommerce->cart->cart_contents_count;
1678 1659 $html = "";
1679 1660 if ($itemCount < 0) {
1680 - $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1661 + $html .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1681 1662 } else {
1682 1663 $html .= do_shortcode("[wpcommerce_cart]");
1683 1664 }
1684 - wp_send_json($html);
1665 + echo wp_send_json($html);
1666 + wp_die();
1685 1667 }
1686 1668 //Show checkout page by shortcode.
1687 1669 add_action('wp_ajax_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1688 1670 add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
@@ -1691,9 +1673,9 @@
1691 1673 $itemCount = $wpcommerce->cart->cart_contents_count;
1692 1674 $html = "";
1693 1675 if ($itemCount < 0) {
1694 1676 $status = 'no';
1695 - $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1677 + $html .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1696 1678 } else {
1697 1679 $status = 'yes';
1698 1680 $checkout_page_id = get_option('wp_chatbot_app_checkout');
1699 1681 $checkout_parmanlink = esc_url(get_permalink($checkout_page_id));
@@ -1699,71 +1681,34 @@
1699 1681 $checkout_parmanlink = esc_url(get_permalink($checkout_page_id));
1700 1682 $html .= $checkout_parmanlink;
1701 1683 }
1702 1684 $response = array('status' => $status, 'html' => $html);
1703 - wp_send_json($response);
1685 + echo wp_send_json($response);
1686 + wp_die();
1704 1687 }
1705 -//_dynamic_intent
1706 -function qcld_dynamic_intent(){
1707 - global $wpdb;
1708 - $intents = array();
1709 -
1710 - $ai_df = get_option('enable_wp_chatbot_dailogflow');
1711 - $custom_intent_labels = maybe_unserialize( get_option('qlcd_wp_custon_intent_label'));
1712 - if($ai_df==1 && isset($custom_intent_labels[0]) && trim($custom_intent_labels[0])!=''):
1713 -
1714 - foreach($custom_intent_labels as $custom_intent_label):
1715 - $intents[] = $custom_intent_label;
1716 - endforeach;
1717 -
1718 - endif;
1719 -
1720 -
1721 -
1722 - if(class_exists('Qcformbuilder_Forms_Admin')){
1723 -
1724 -
1725 - $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM ". $wpdb->prefix."wfb_forms WHERE type= %s",'primary')); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
1726 -
1727 - if(!empty($results)){
1728 -
1729 - foreach($results as $result){
1730 - $form = maybe_unserialize($result->config);
1731 - $intents[] = $form['name'];
1732 - }
1733 -
1734 - }
1688 +//User login on Checkout page.
1689 +add_action('wp_ajax_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1690 +add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1691 +function qcld_wb_chatbot_checkout_user_login(){
1692 + // Nonce is checked, get the POST data and sign user on
1693 + $info = array();
1694 + //$info['nonce'] = $_POST['nonce_val'];
1695 + $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1696 + $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1697 + $info['remember'] = true;
1698 + $user_signon = wp_signon($info, false);
1699 + // $response=$info;
1700 + $response = array();
1701 + if (is_wp_error($user_signon)) {
1702 + // $response['status'] = "fail";
1703 + // $response['message'] = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect')));
1704 + $response = "no";
1705 + } else {
1706 + $response = "yes";
1735 1707 }
1736 -
1737 - if(!empty($intents)){
1738 - return implode(", ", $intents);
1739 - }else{
1740 - return '';
1741 - }
1742 -
1708 + echo wp_send_json($response);
1709 + die();
1743 1710 }
1744 -
1745 -//User login on Checkout page.
1746 -// add_action('wp_ajax_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1747 -// add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1748 -// function qcld_wb_chatbot_checkout_user_login(){
1749 -// // Nonce is checked, get the POST data and sign user on
1750 -// $info = array();
1751 -// //$info['nonce'] = $_POST['nonce_val'];
1752 -// $info['user_login'] = trim(sanitize_text_field(wp_unslash($_POST['user_name'])));
1753 -// $info['user_password'] = trim(sanitize_text_field(wp_unslash($_POST['user_pass'])));
1754 -// $info['remember'] = true;
1755 -// $user_signon = wp_signon($info, false);
1756 -// // $response=$info;
1757 -// $response = array();
1758 -// if (is_wp_error($user_signon)) {
1759 -// // $response['status'] = "fail";
1760 -// $response = "no";
1761 -// } else {
1762 -// $response = "yes";
1763 -// }
1764 -// wp_send_json($response);
1765 -// }
1766 1711 // Load template for App Order Thank You page url
1767 1712 function wp_chatbot_load_app_template($template){
1768 1713 if (is_page('wpwbot-mobile-app')) {
1769 1714 return dirname(__FILE__) . '/templates/app-templates/app.php';
@@ -1792,16 +1737,15 @@
1792 1737 add_action('init', 'wp_chatbot_create_app_checkout_thankyou_page');
1793 1738 function wp_chatbot_create_app_checkout_thankyou_page(){
1794 1739 if (get_option('wp_chatbot_app_pages') == 1) {
1795 1740 //Mobile App page create
1796 - $existing_app = new WP_Query( array( 'post_type' => 'page', 'name' => 'wpwbot-mobile-app', 'post_status' => 'publish', 'posts_per_page' => 1 ) );
1797 - if ( ! $existing_app->have_posts() ) {
1741 + if (get_page_by_title('wpwBot Mobile App') == NULL) {
1798 1742 //post status and options
1799 1743 $app_page = array(
1800 1744 'comment_status' => 'closed',
1801 1745 'ping_status' => 'closed',
1802 1746 'post_author' => get_current_user_id(),
1803 - 'post_date' => gmdate('Y-m-d H:i:s'),
1747 + 'post_date' => date('Y-m-d H:i:s'),
1804 1748 'post_status' => 'publish',
1805 1749 'post_title' => 'wpwBot Mobile App',
1806 1750 'post_name' => 'wpwbot-mobile-app',
1807 1751 'post_type' => 'page',
@@ -1811,16 +1755,15 @@
1811 1755 //save the id in the database
1812 1756 update_option('wp_chatbot_app_checkout', $wpwbot_app);
1813 1757 }
1814 1758 //App checkout page create
1815 - $existing_checkout = new WP_Query( array( 'post_type' => 'page', 'name' => 'wpwbot-app-checkout', 'post_status' => 'publish', 'posts_per_page' => 1 ) );
1816 - if ( ! $existing_checkout->have_posts() ) {
1759 + if (get_page_by_title('wpwBot App Checkout') == NULL) {
1817 1760 //post status and options
1818 1761 $checkout_page = array(
1819 1762 'comment_status' => 'closed',
1820 1763 'ping_status' => 'closed',
1821 1764 'post_author' => get_current_user_id(),
1822 - 'post_date' => gmdate('Y-m-d H:i:s'),
1765 + 'post_date' => date('Y-m-d H:i:s'),
1823 1766 'post_status' => 'publish',
1824 1767 'post_title' => 'wpwBot App Checkout',
1825 1768 'post_name' => 'wpwbot-app-checkout',
1826 1769 'post_type' => 'page',
@@ -1830,16 +1773,15 @@
1830 1773 //save the id in the database
1831 1774 update_option('wp_chatbot_app_checkout', $app_checkout);
1832 1775 }
1833 1776 //App Order thank you page create
1834 - $existing_thankyou = new WP_Query( array( 'post_type' => 'page', 'name' => 'wpwbot-app-order-thankyou', 'post_status' => 'publish', 'posts_per_page' => 1 ) );
1835 - if ( ! $existing_thankyou->have_posts() ) {
1777 + if (get_page_by_title('wpwBot App Order Thank You') == NULL) {
1836 1778 //post status and options
1837 1779 $thankyou_page = array(
1838 1780 'comment_status' => 'closed',
1839 1781 'ping_status' => 'closed',
1840 1782 'post_author' => get_current_user_id(),
1841 - 'post_date' => gmdate('Y-m-d H:i:s'),
1783 + 'post_date' => date('Y-m-d H:i:s'),
1842 1784 'post_status' => 'publish',
1843 1785 'post_title' => 'wpwBot App Order Thank You',
1844 1786 'post_name' => 'wpwbot-app-order-thankyou',
1845 1787 'post_type' => 'page',
@@ -1850,9 +1792,9 @@
1850 1792 update_option('wp_chatbot_app_order_thankyou', $app_order_thankyou);
1851 1793 }
1852 1794 }
1853 1795 //Keep tracking from App by cookies
1854 - if ( isset( $_GET['from'] ) && sanitize_text_field( wp_unslash( $_GET['from'] ) ) === 'app' ) { // phpcs:ignore WordPress.Security.NonceVerification
1796 + if (isset($_GET['from']) && $_GET['from'] == 'app') {
1855 1797 if (!isset($_COOKIE['from_app'])) {
1856 1798 setcookie('from_app', 'yes', (time() + 3600), '/');
1857 1799 }
1858 1800 }
@@ -1866,9 +1808,9 @@
1866 1808 global $wp;
1867 1809 if (is_checkout() && !empty($wp->query_vars['order-received'])) {
1868 1810 $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1869 1811 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1870 - wp_safe_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1812 + wp_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1871 1813 exit;
1872 1814 }
1873 1815 } else {
1874 1816 remove_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase');
@@ -1873,208 +1815,5 @@
1873 1815 } else {
1874 1816 remove_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase');
1875 1817 do_action('wpcommerce_thankyou', $order_get_id);
1876 1818 }
1877 -}
1878 -
1879 -function qcld_choose_random($array){
1880 - if (is_array($array) && !empty($array)) {
1881 - return $array[array_rand($array)];
1882 - }
1883 - return $array;
1884 -}
1885 -
1886 -//User session count
1887 -add_action('wp_ajax_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1888 -add_action('wp_ajax_nopriv_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1889 -function qcld_wb_chatbot_session_count(){
1890 - // Nonce is checked, get the POST data and sign user on
1891 - check_ajax_referer( 'wp_chatbot', 'nonce' );
1892 - global $wpdb;
1893 - $wpdb->show_errors = true;
1894 - $tableuser = $wpdb->prefix.'wpbot_sessions';
1895 - $response = array();
1896 -
1897 -
1898 - $session_exists = $wpdb->get_row($wpdb->prepare("select * from {$tableuser} where 1 and id = %d",1)); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, PluginCheck.Security.DirectDB.UnescapedDBParameter
1899 -
1900 - if(empty($session_exists)){
1901 - $wpdb->insert( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
1902 - $tableuser,
1903 - array(
1904 - 'session' => 1,
1905 - )
1906 - );
1907 - }else{
1908 -
1909 - $session_id = $session_exists->id;
1910 -
1911 - $wpdb->update( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
1912 - $tableuser,
1913 - array(
1914 - 'session'=>($session_exists->session+1),
1915 - ),
1916 - array('id'=>$session_id),
1917 - array(
1918 - '%d',
1919 - ),
1920 - array('%d')
1921 - );
1922 -
1923 - }
1924 -
1925 - wp_send_json($response);
1926 -}
1927 -
1928 -/* WPBot Chat History Addon check */
1929 -function qcld_wpbot_is_active_chat_history(){
1930 -
1931 - if(function_exists('qcwp_chat_session_menu_fnc') || function_exists('qcwp_chat_session_menu_fnc_free') || function_exists( 'qcpdcs_chat_session_menu_fnc' ) ){
1932 - return 1;
1933 - }else{
1934 - return 0;
1935 - }
1936 -
1937 -}
1938 -
1939 -/**
1940 - * Safely sanitize chatbot conversation input.
1941 - *
1942 - * SECURITY FIX (CVE WPBot Stored XSS ≤ 8.6.9):
1943 - * The previous order was: wp_kses() → html_entity_decode() → htmlspecialchars().
1944 - * An attacker could submit entity-encoded payloads (&lt;img onerror=...&gt;) that
1945 - * bypassed wp_kses (which saw inert text), were then decoded back into live markup
1946 - * by html_entity_decode(), and survived into storage and the admin UI.
1947 - *
1948 - * Correct order: html_entity_decode() FIRST → wp_kses() → htmlspecialchars().
1949 - * wp_kses() now sees the real decoded markup and strips forbidden tags/attributes.
1950 - *
1951 - * @param string $data Raw conversation string (already wp_unslash'd by caller).
1952 - * @return string Sanitized, entity-encoded string safe for DB storage.
1953 - */
1954 -function qcld_wpbot_input_validation( $data ) {
1955 - // 1. Decode any entity-encoded HTML so wp_kses sees the real markup.
1956 - $data = html_entity_decode( $data, ENT_QUOTES | ENT_HTML5, 'UTF-8' );
1957 - $data = trim( $data );
1958 - $data = stripslashes( $data );
1959 - // 2. Sanitize with a strict allowlist — NOW operating on decoded markup.
1960 - $data = wp_kses( $data, wpbot_get_safe_conversation_tags() );
1961 - // 3. Re-encode for safe DB storage; admin.js decodes for rendering.
1962 - $data = htmlspecialchars( $data, ENT_QUOTES | ENT_HTML5, 'UTF-8' );
1963 - return $data;
1964 -}
1965 -
1966 -/**
1967 - * Returns the strict HTML allowlist for chatbot conversation content.
1968 - *
1969 - * Critically: no event-handler attributes (onerror, onclick, onload, etc.) are
1970 - * allowed — wp_kses strips any attribute not explicitly listed here.
1971 - * 'img' is intentionally omitted; bot responses that include images should use
1972 - * safe URLs only and can be re-added with only 'src', 'alt', 'class' if needed.
1973 - *
1974 - * @return array<string, array<string, bool>>
1975 - */
1976 -function wpbot_get_safe_conversation_tags() {
1977 - return array(
1978 - 'ul' => array( 'class' => true ),
1979 - 'ol' => array( 'class' => true ),
1980 - 'li' => array( 'class' => true, 'id' => true ),
1981 - 'div' => array( 'class' => true, 'id' => true ),
1982 - 'span' => array( 'class' => true, 'id' => true ),
1983 - 'p' => array( 'class' => true ),
1984 - 'br' => array(),
1985 - 'strong' => array(),
1986 - 'em' => array(),
1987 - 'b' => array(),
1988 - 'i' => array(),
1989 - 'a' => array(
1990 - 'href' => true,
1991 - 'target' => true,
1992 - 'rel' => true,
1993 - 'class' => true,
1994 - ),
1995 - // 'img' intentionally excluded — prevents onerror/onload injection.
1996 - // Add back with only 'src','alt','class' if bot image responses are needed.
1997 - );
1998 -}
1999 -add_action('wp_ajax_qcld_small_talk_import', 'qcld_small_talk_import');
2000 -function qcld_small_talk_import(){
2001 - if ( ! current_user_can( 'manage_options' ) ) {
2002 - wp_die();
2003 - }
2004 - global $wpdb;
2005 -
2006 - $table = $wpdb->prefix.'wpbot_response';
2007 -
2008 - $csvFile = file(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . 'small_talk.csv');
2009 -
2010 - foreach ($csvFile as $line) {
2011 - $line = str_getcsv($line, ',', '"');
2012 - $wpdb->insert( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
2013 - $table, array(
2014 - 'query' => $line[0],
2015 - 'keyword' => $line[1],
2016 - 'response' => $line[2],
2017 - 'category'=> $line[3],
2018 - 'intent'=> '',
2019 - //'lang'=> 'en_US',
2020 - ));
2021 - }
2022 -
2023 - $table2 = $wpdb->prefix.'wpbot_response_category';
2024 -
2025 - $wpdb->insert( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
2026 - $table2, array(
2027 - 'name' => 'smalltalk',
2028 - ));
2029 -
2030 - update_option( 'qcld_small_talk_imported', 'yes' );
2031 -
2032 -}
2033 -function sanitize_array( &$array ) {
2034 - if (!empty($array)) {
2035 - foreach ($array as &$value) {
2036 - if( !is_array($value) )
2037 - // sanitize if value is not an array
2038 - $value = sanitize_text_field( esc_html($value) );
2039 - else
2040 - // go inside this function again
2041 - sanitize_array(esc_html($value));
2042 - }
2043 - }
2044 - return $array;
2045 -}
2046 -function qcld_wpbot_meta_tags() {
2047 - echo '<!-- "This site uses ChatBot for WordPress - WPBot from https://www.wpbot.pro/" -->';
2048 -}
2049 -add_action('wp_footer', 'qcld_wpbot_meta_tags', 100);
2050 -
2051 -if ( ! function_exists( 'qcld_change_language_from_center' ) ) {
2052 - add_action( 'wp_ajax_qcld_change_language_from_center', 'qcld_change_language_from_center' );
2053 - add_action( 'wp_ajax_nopriv_qcld_change_language_from_center', 'qcld_change_language_from_center' );
2054 - function qcld_change_language_from_center() {
2055 - if ( ! current_user_can( 'manage_options' ) ) {
2056 - wp_send_json_error( array( 'message' => 'Unauthorized.' ) );
2057 - }
2058 - $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : '';
2059 - if ( ! wp_verify_nonce( $nonce, 'wp_chatbot' ) ) {
2060 - wp_send_json_error( array( 'message' => 'Invalid nonce.' ) );
2061 - }
2062 - $plugin_path = plugin_dir_path( __FILE__ );
2063 - include $plugin_path . 'includes/admin/settings-fields.php';
2064 - $json_file_path = $plugin_path . 'includes/language-center.json';
2065 -
2066 - $json_string = file_get_contents( $json_file_path );
2067 - if ( isset( $_POST['language'] ) ) {
2068 - $language = sanitize_text_field( wp_unslash( $_POST['language'] ) );
2069 - $language_array= json_decode($json_string)->$language;
2070 - update_option( 'wp_chatbot_language_center_language', $language );
2071 - wp_send_json_success( array( 'message' => true, 'data' => $language_array, 'language' => $language ) );
2072 - } else {
2073 - wp_send_json_error( array( 'message' => 'Language not specified.' ) );
2074 -
2075 - }
2076 - }
2077 -}
2078 -
2079 -// AI Actions Chat Preview
2080 -
1819 +}