PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 3.2.9
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v3.2.9
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 8.5.2 All 533 releases
← All changes | functions.php +475 -691 8.7.53.2.9 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;
@@ -376,28 +185,23 @@
376 185 //wp_chatbot load control handler.
377 186 function wp_chatbot_load_controlling(){
378 187 $wp_chatbot_load = true;
379 188
380 -
189 + if (get_option('wp_chatbot_show_home_page') == 'off' && is_home()) {
190 + $wp_chatbot_load = false;
191 + }
192 + if (get_option('wp_chatbot_show_posts') == 'off' && 'post' == get_post_type()) {
193 + $wp_chatbot_load = false;
194 + }
381 195 if (get_option('wp_chatbot_show_pages') == 'off') {
382 196 $wp_chatbot_select_pages = unserialize(get_option('wp_chatbot_show_pages_list'));
383 197 if (is_page() && !empty($wp_chatbot_select_pages)) {
384 -
385 198 if (in_array(get_the_ID(), $wp_chatbot_select_pages) == true) {
386 -
387 199 $wp_chatbot_load = true;
388 200 } else {
389 201 $wp_chatbot_load = false;
390 202 }
391 -
392 203 }
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 204 }
401 205 if (get_option('wp_chatbot_show_wpcommerce') == 'off') {
402 206
403 207 }
@@ -408,34 +212,26 @@
408 212 if (has_shortcode($page->post_content, 'wpwbot')) {
409 213 $wp_chatbot_load = false;
410 214 }
411 215 }
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;
216 + //Opening Hours for wpwBot.
217 + if (get_option('enable_wp_chatbot_opening_hour') == 1) {
218 + if(wp_chatbot_check_opening_hours()==false){
219 + $wp_chatbot_load = false;
220 + }else{
221 + $wp_chatbot_load = true;
222 + }
417 223 }
224 +
418 225 if (wp_chatbot_is_mobile() && get_option('disable_wp_chatbot_on_mobile') == 1) {
419 226 $wp_chatbot_load = false;
420 227 }
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 - }
228 +
433 229 return $wp_chatbot_load;
434 230 }
435 231 //checking Devices
436 232 function wp_chatbot_is_mobile(){
437 - $useragent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
233 + $useragent = $_SERVER['HTTP_USER_AGENT'];
438 234 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 235 return true;
440 236 } else {
441 237 return false;
@@ -442,13 +238,13 @@
442 238 }
443 239 }
444 240 //Checking wpwbot opening hour
445 241 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')));
242 + $curent_day=strtolower(date('l',strtotime(current_time( 'mysql' ))));
243 + $current_time=date('H:i',strtotime(current_time( 'mysql')));
448 244 $is_wpwbot_open =false;
449 245 if(get_option('wpwbot_hours')) {
450 - $wpwbot_times = wp_kses_post(unserialize(get_option('wpwbot_hours')));
246 + $wpwbot_times = unserialize(get_option('wpwbot_hours'));
451 247 if (isset($wpwbot_times[$curent_day])) {
452 248 $day_times = $wpwbot_times[$curent_day];
453 249 if (!empty($day_times)) {
454 250 foreach ($day_times as $day_time) {
@@ -460,8 +256,183 @@
460 256 }
461 257 }
462 258 return $is_wpwbot_open;
463 259 }
260 +//wpwBot shortcode.
261 +add_shortcode('wpwbot', 'wp_chatbot_short_code');
262 +function wp_chatbot_short_code($atts = []){
263 + ob_start();
264 + wp_chatbot_shortcode_dom($atts);
265 + $content = ob_get_clean();
266 + return $content;
267 +}
268 +function wp_chatbot_shortcode_dom($atts){
269 + //Defaults & Set Parameters for shortcode
270 + extract(shortcode_atts(
271 + array(
272 + 'template' => '01',
273 + ), $atts
274 + ));
275 + ?>
276 + <style>
277 + <?php if(get_option('wp_chatbot_custom_css')!=""){echo get_option('wp_chatbot_custom_css'); } ?>
278 + </style>
279 + <?php if (get_option('qcld_wb_chatbot_change_bg') == 1) {
280 + if (get_option('qcld_wb_chatbot_board_bg_path') != "") {
281 + $qcld_wb_chatbot_board_bg_path = get_option('qcld_wb_chatbot_board_bg_path');
282 + } else {
283 + $qcld_wb_chatbot_board_bg_path = QCLD_wpCHATBOT_IMG_URL . 'background/background.png';
284 + }
285 + ?>
286 + <style>
287 + .wp-chatbot-container {
288 + background: url(<?php echo $qcld_wb_chatbot_board_bg_path ;?>) no-repeat top right !important;
289 + }
290 + </style>
291 +<?php }
292 + $wp_chatbot_enable_rtl = "";
293 + if (get_option('enable_wp_chatbot_rtl')) {
294 + $wp_chatbot_enable_rtl .= "wp-chatbot-rtl";
295 + }
296 + ?>
297 + <div id="wp-chatbot-chat-container" class="<?php echo $wp_chatbot_enable_rtl; ?>">
298 + <?php
299 + //Get wpcommerce cart
300 +
301 + $qcld_wb_chatbot_theme = 'template-' . $template;
302 + if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/style.css')) {
303 + 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');
304 + wp_enqueue_style('qcld-wp-chatbot-style');
305 + }
306 + if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php')) {
307 + require_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php');
308 + } else {
309 + echo "<h2>" . __('No wpWBot Theme Found!', 'wpchatbot') . "</h2>";
310 + }
311 + ?>
312 + <?php if (get_option('disable_wp_chatbot') != 1): ?>
313 + <div id="wp-chatbot-notification-container" class="wp-chatbot-notification-container">
314 + <div class="wp-chatbot-notification-controller"> <span class="wp-chatbot-notification-close">X</span> </div>
315 + <?php
316 + if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
317 + $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
318 + } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
319 + $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
320 + } else {
321 + $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
322 + }
323 + ?>
324 + <div class="wp-chatbot-notification-agent-profile">
325 + <div class="wp-chatbot-notification-widget-avatar"><img
326 + src="<?php echo $wp_chatbot_custom_icon_path; ?>" alt=""></div>
327 + <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>
328 + </div>
329 + <div class="wp-chatbot-notification-message"><?php echo wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_notifications'))); ?></div>
330 + </div>
331 + <!--wp-chatbot-board-container-->
332 + <div id="wp-chatbot-ball" class="">
333 + <div class="wp-chatbot-ball">
334 + <div class="wp-chatbot-ball-animator wp-chatbot-ball-animation-switch"></div>
335 + <?php
336 + if (get_option('wp_chatbot_custom_icon_path') != "" && get_option('wp_chatbot_icon') == "custom.png") {
337 + $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_icon_path');
338 + } else if (get_option('wp_chatbot_custom_icon_path') != "" && get_option('wp_chatbot_icon') != "custom.png") {
339 + $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_icon');
340 + } else {
341 + $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom.png';
342 + }
343 + ?>
344 + <img src="<?php echo $wp_chatbot_custom_icon_path; ?>"
345 + alt="wpChatIcon"> <!--<span class="wp-chatbot-ball-cart-items"><?php echo $cart_items_number; ?></span>--> </div>
346 + </div>
347 + <!-- wp-chatbot-board-container-->
348 + <?php endif; ?>
349 + <!--container-->
350 + <!--wp-chatbot-ball-wrapper-->
351 + </div>
352 +<?php } ?>
353 +<?php
354 +//Create shortcode for wpwBot for pages.
355 +add_shortcode('wpbot-page', 'wp_chatbot_page_short_code');
356 +function wp_chatbot_page_short_code(){
357 + ob_start();
358 + wp_chatbot_page_dom();
359 + $content = ob_get_clean();
360 + return $content;
361 +}
362 +function wp_chatbot_page_dom(){ ?>
363 + <style>
364 + <?php if(get_option('wp_chatbot_custom_css')!=""){echo get_option('wp_chatbot_custom_css'); } ?>
365 + </style>
366 + <?php
367 + //Get wpcommerce cart
368 +
369 + $qcld_wb_chatbot_theme = get_option('qcld_wb_chatbot_theme');
370 + $wp_chatbot_enable_rtl = "";
371 + if (get_option('enable_wp_chatbot_rtl') == 1) {
372 + $wp_chatbot_enable_rtl .= "wp-chatbot-rtl";
373 + }
374 + if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/shortcode.php')) {
375 + require_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/shortcode.php');
376 + } else {
377 + echo "<h2>" . __('No WPBot ShortCode Theme Found!', 'wpchatbot') . "</h2>";
378 + }
379 +}
380 +//shortcode for wpWBot mobile app
381 +add_shortcode('wpwbot_app', 'wp_chatbot_mobile_app_short_code');
382 +function wp_chatbot_mobile_app_short_code(){ ?>
383 + <style>
384 + <?php if(get_option('wp_chatbot_custom_css')!=""){echo get_option('wp_chatbot_custom_css'); } ?>
385 + </style>
386 + <?php if (get_option('qcld_wb_chatbot_change_bg') == 1) {
387 + if (get_option('qcld_wb_chatbot_board_bg_path') != "") {
388 + $qcld_wb_chatbot_board_bg_path = get_option('qcld_wb_chatbot_board_bg_path');
389 + } else {
390 + $qcld_wb_chatbot_board_bg_path = QCLD_wpCHATBOT_IMG_URL . 'background/background.png';
391 + }
392 + ?>
393 + <style>
394 + .wp-chatbot-container {
395 + background: url(<?php echo $qcld_wb_chatbot_board_bg_path ;?>) no-repeat top right !important;
396 + }
397 + </style>
398 +<?php }
399 + $wp_chatbot_enable_rtl = "";
400 + if (get_option('enable_wp_chatbot_rtl')) {
401 + $wp_chatbot_enable_rtl .= "wp-chatbot-rtl";
402 + }
403 + ?>
404 + <div id="wp-chatbot-chat-app-shortcode-container" class="<?php echo $wp_chatbot_enable_rtl; ?>">
405 + <?php
406 + // keep traking app template.
407 + $template_app = 'yes';
408 + //Get wpcommerce cart
409 +
410 + //Handling shortcode enqeue and remove features part.
411 + define('wpCOMMERCE', true);
412 + wp_enqueue_script('jquery');
413 +
414 +
415 + wp_enqueue_script('wc-address-i18n');
416 + wp_enqueue_script('wc-country-select');
417 +
418 +
419 + // add the action
420 + if (isset($_GET['from']) && $_GET['from'] == 'app') {
421 + if (!isset($_COOKIE['from_app'])) {
422 + setcookie('from_app', 'yes', time() + 3600);
423 + }
424 + }
425 + $qcld_wb_chatbot_theme = get_option('qcld_wb_chatbot_theme');
426 + if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php')) {
427 + require_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php');
428 + } else {
429 + echo "<h2>" . __('No WPBot Theme Found!', 'wpchatbot') . "</h2>";
430 + }
431 + ?>
432 + </div>
433 + <?php
434 +}
464 435
465 436 /**
466 437 * wpwBot Search keyword product
467 438 */
@@ -467,20 +438,13 @@
467 438 */
468 439 add_action('wp_ajax_qcld_wb_chatbot_keyword', 'qcld_wb_chatbot_keyword');
469 440 add_action('wp_ajax_nopriv_qcld_wb_chatbot_keyword', 'qcld_wb_chatbot_keyword');
470 441 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']));
442 + $keyword = sanitize_text_field($_POST['keyword']);
479 443 $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
480 444 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');
445 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
446 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
483 447 //Merging all query together.
484 448 $argu_params = array(
485 449 'post_type' => 'product',
486 450 'post_status' => 'publish',
@@ -522,9 +486,9 @@
522 486 endwhile;
523 487 wp_reset_postdata();
524 488 $html .= '</ul>';
525 489 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>';
490 + $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 491 }
528 492 }
529 493 $html .= '</div>';
530 494 } else if (get_option('qlcd_wp_chatbot_search_option') == 'advanced') {
@@ -552,16 +516,16 @@
552 516 }
553 517 }
554 518 $html .= '</ul>';
555 519 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>';
520 + $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 521 }
558 522 }
559 523 $html .= '</div>';
560 524 }
561 525 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
562 - wp_send_json($response);
563 -
526 + echo wp_send_json($response);
527 + wp_die();
564 528 }
565 529 /**
566 530 * wpwBot Categories
567 531 */
@@ -569,22 +533,23 @@
569 533 add_action('wp_ajax_nopriv_qcld_wb_chatbot_category', 'qcld_wb_chatbot_category');
570 534 function qcld_wb_chatbot_category(){
571 535 $category_type="common";
572 536 if (get_option('wp_chatbot_show_parent_category') != "") {
573 - $terms = get_terms( array( 'taxonomy' => 'product_cat', 'parent' => 0, 'hide_empty' => true, 'fields' => 'all' ) );
537 + $terms = get_terms('product_cat', array('parent' => 0, 'hide_empty' => true, 'fields' => 'all'));
538 +
574 539 } else {
575 - $terms = get_terms( array( 'taxonomy' => 'product_cat', 'hide_empty' => true, 'fields' => 'all' ) );
540 + $terms = get_terms('product_cat', array('hide_empty' => true, 'fields' => 'all'));
576 541 }
577 542 $html = "";
578 543 foreach ($terms as $term) {
579 - $child_terms=get_terms( array( 'taxonomy' => 'product_cat', 'parent' => $term->term_id, 'hide_empty' => true, 'fields' => 'all' ) );
544 + $child_terms=get_terms('product_cat', array('parent' => $term->term_id, 'hide_empty' => true, 'fields' => 'all'));
580 545 if(get_option('wp_chatbot_show_sub_category')==1 && count($child_terms) >0){
581 546 $category_type="hasChilds";
582 547 }
583 548 $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 549 }
585 - wp_send_json($html);
586 -
550 + echo wp_send_json($html);
551 + wp_die();
587 552 }
588 553 /**
589 554 * wpwBot Sub categories
590 555 */
@@ -590,16 +555,16 @@
590 555 */
591 556 add_action('wp_ajax_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
592 557 add_action('wp_ajax_nopriv_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
593 558 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' ) );
559 + $parent_id = stripslashes($_POST['parent_id']);
560 + $terms = get_terms('product_cat', array('parent' => $parent_id, 'hide_empty' => true, 'fields' => 'all'));
596 561 $html = "";
597 562 foreach ($terms as $term) {
598 563 $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 564 }
600 - wp_send_json($html);
601 -
565 + echo wp_send_json($html);
566 + wp_die();
602 567 }
603 568 /**
604 569 * wpwBot category product
605 570 */
@@ -605,12 +570,12 @@
605 570 */
606 571 add_action('wp_ajax_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
607 572 add_action('wp_ajax_nopriv_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
608 573 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');
574 + $category_id = stripslashes($_POST['category']);
575 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
576 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
577 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
613 578 //Merging all query together.
614 579 $argu_params = array(
615 580 'post_type' => 'product',
616 581 'post_status' => 'publish',
@@ -672,9 +637,9 @@
672 637 endwhile;
673 638 wp_reset_postdata();
674 639 $html .= '</ul>';
675 640 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>';
641 + $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 642 }
678 643 $html .= '</div>';
679 644 } else {
680 645 $html = '';
@@ -679,9 +644,10 @@
679 644 } else {
680 645 $html = '';
681 646 }
682 647 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
683 - wp_send_json($response);
648 + echo wp_send_json($response);
649 + wp_die();
684 650 }
685 651 /**
686 652 * wpwBot latest, featured, recent product
687 653 */
@@ -687,11 +653,11 @@
687 653 */
688 654 add_action('wp_ajax_qcld_wb_chatbot_featured_products', 'qcld_wb_chatbot_featured_products');
689 655 add_action('wp_ajax_nopriv_qcld_wb_chatbot_featured_products', 'qcld_wb_chatbot_featured_products');
690 656 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');
657 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
658 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
659 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
694 660 //get featured products query.
695 661 $argu_params = array('post_status' => 'publish',
696 662 'posts_per_page' => $product_per_page,
697 663 'post_type' => 'product',
@@ -735,14 +701,15 @@
735 701 endwhile;
736 702 wp_reset_postdata();
737 703 $html .= '</ul>';
738 704 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>';
705 + $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 706 }
741 707 }
742 708 $html .= '</div>';
743 709 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
744 - wp_send_json($response);
710 + echo wp_send_json($response);
711 + wp_die();
745 712 }
746 713 //Product display controll
747 714 function wp_chatbot_product_controlling($product_id){
748 715 $display_product = true;
@@ -757,11 +724,11 @@
757 724 //Get Sale products
758 725 add_action('wp_ajax_qcld_wb_chatbot_sale_products', 'qcld_wb_chatbot_sale_products');
759 726 add_action('wp_ajax_nopriv_qcld_wb_chatbot_sale_products', 'qcld_wb_chatbot_sale_products');
760 727 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');
728 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
729 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
730 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
764 731 //get sale products query.
765 732 $argu_params = array(
766 733 'post_type' => 'product',
767 734 'post_status' => 'publish',
@@ -833,25 +800,26 @@
833 800 endwhile;
834 801 wp_reset_postdata();
835 802 $html .= '</ul>';
836 803 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>';
804 + $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 805 }
839 806 }
840 807 $html .= '</div>';
841 808 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
842 - wp_send_json($response);
809 + echo wp_send_json($response);
810 + wp_die();
843 811 }
844 812 //load more
845 813 add_action('wp_ajax_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
846 814 add_action('wp_ajax_nopriv_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
847 815 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');
816 + $offset = stripslashes($_POST['offset']);
817 + $search_type = stripslashes($_POST['search_type']);
818 + $search_term = stripslashes($_POST['search_term']);
819 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
820 + $product_orderby = get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title';
821 + $product_order = get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC';
854 822 $next_offset = intval($product_per_page + $offset);
855 823 if ($search_type == 'product' && $search_term != 'featured' && $search_term != 'sale' && get_option('qlcd_wp_chatbot_search_option') == 'advanced') {
856 824 //if have multiple ids then explode else have single need to array push
857 825 if (strpos($search_term, ',') !== false) {
@@ -973,15 +941,16 @@
973 941 $html .= '';
974 942 }
975 943 $response = array('html' => $html, 'product_num' => $product_num, 'search_term' => $search_term, 'offset' => $next_offset, 'per_page' => $product_per_page);
976 944 }
977 - wp_send_json($response);
945 + echo wp_send_json($response);
946 + wp_die();
978 947 }
979 948 //product details
980 949 add_action('wp_ajax_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
981 950 add_action('wp_ajax_nopriv_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
982 951 function qcld_wb_chatbot_product_details(){
983 - $product_id = intval( wp_unslash( $_POST['wp_chatbot_pid'] ) );
952 + $product_id = stripslashes($_POST['wp_chatbot_pid']);
984 953 //Tracking product view from chat board
985 954 wp_chatbot_view_track_product_by_id($product_id);
986 955 //wpcommerce product factory
987 956 $wc_pf = new WC_Product_Factory();
@@ -1009,9 +978,9 @@
1009 978 }
1010 979 }
1011 980 $product_image .= '</ul></div>';
1012 981 $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>';
982 + $product_sku = '<p class="wp-chatbot-product-sku"> ' . __('SKU', 'wpchatbot') . ' : ' . $product->get_sku() . '</p>';
1014 983 //if ( $product->is_in_stock() || $product->is_purchasable() )
1015 984 //Handle variable product start
1016 985 $variations = "";
1017 986 $add_cart_button = "";
@@ -1052,13 +1021,12 @@
1052 1021 } else {
1053 1022 $variations .= '<div class="wp-chatbot-variable-' . sanitize_title($name) . '">';
1054 1023 $variations .= '<label for="' . sanitize_title($name) . '">' . $title . '</label>';
1055 1024 $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>';
1025 + $variations .= '<option value="">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_choose_option'))) . '</option>';
1057 1026 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 ] ) );
1027 + if (isset($_REQUEST['attribute_' . sanitize_title($name)])) {
1028 + $selected_value = $_REQUEST['attribute_' . sanitize_title($name)];
1061 1029 } else {
1062 1030 $selected_value = '';
1063 1031 }
1064 1032 $variations .= '<option value="' . esc_attr(strtolower($value)) . '"' . selected($selected_value, $value, false) . '>' . apply_filters('wpcommerce_variation_option_name', $value) . '</option>';
@@ -1065,29 +1033,30 @@
1065 1033 }
1066 1034 $variations .= '</select></div>';
1067 1035 }
1068 1036 }
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="" />';
1037 + $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 1038 $add_cart_button .= "<input type='hidden' id='wp-chatbot-variation-data' data-product-variation='" . $variations_data . "' />";
1071 1039 } 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')))) . '" />';
1040 + $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 1041 }
1074 1042 //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>
1043 + $product_quantity .= '<label for="">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity'))) . '</label>
1076 1044 <input type="number" id="vPQuantity" value="1" />';
1077 1045 }
1078 1046 //$response=$full_size_image;
1079 1047 $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);
1048 + echo wp_send_json($response);
1049 + wp_die();
1081 1050 }
1082 1051 //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();
1052 +add_action('wp_ajax_variable_add_to_cart', 'qcld_wb_chatbot_variable_add_to_cart');
1053 +add_action('wp_ajax_nopriv_variable_add_to_cart', 'qcld_wb_chatbot_variable_add_to_cart');
1054 +function qcld_wb_chatbot_variable_add_to_cart(){
1055 + $product_id = stripslashes($_POST['p_id']);
1056 + $quantity = stripslashes($_POST['quantity']);
1057 + $variations_id = stripslashes($_POST['variations_id']);
1058 + $attrs = stripslashes($_POST['attributes']);
1090 1059 //echo wp_send_json(array('p_id'=>$product_id,'qnty'=>$quantity,'id'=>$variations_id,'att'=>$attrs));
1091 1060 $attributes = array();
1092 1061 foreach ($attrs as $attr) {
1093 1062 $single = explode("#", $attr);
@@ -1098,68 +1067,60 @@
1098 1067 }
1099 1068 global $wpcommerce;
1100 1069 $result = $wpcommerce->cart->add_to_cart($product_id, $quantity, $variations_id, $attributes, null);
1101 1070 if ($result != false) {
1102 - wp_send_json('variable');
1071 + echo wp_send_json('variable');
1103 1072 } else {
1104 - wp_send_json('error');
1073 + echo wp_send_json('error');
1105 1074 }
1075 + wp_die();
1106 1076 }
1107 1077 //Add to cart for simple product.
1108 1078 add_action('wp_ajax_qcld_wb_chatbot_add_to_cart', 'qcld_wb_chatbot_add_to_cart');
1109 1079 add_action('wp_ajax_nopriv_qcld_wb_chatbot_add_to_cart', 'qcld_wb_chatbot_add_to_cart');
1110 1080 function qcld_wb_chatbot_add_to_cart(){
1111 - $product_id = intval( wp_unslash( $_POST['product_id'] ) );
1112 - $product_quantity = intval( wp_unslash( $_POST['quantity'] ) );
1081 + $product_id = stripslashes($_POST['product_id']);
1082 + $product_quantity = stripslashes($_POST['quantity']);
1113 1083 global $wpcommerce;
1114 1084 $result = $wpcommerce->cart->add_to_cart($product_id, $product_quantity);
1115 1085 if ($result != false) {
1116 - wp_send_json('simple');
1086 + echo wp_send_json('simple');
1117 1087 } else {
1118 - wp_send_json('error');
1088 + echo wp_send_json('error');
1119 1089 }
1090 + wp_die();
1120 1091 }
1121 1092 //Support part
1122 1093 add_action('wp_ajax_qcld_wb_chatbot_support_email', 'qcld_wb_chatbot_support_email');
1123 1094 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_email', 'qcld_wb_chatbot_support_email');
1124 1095 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');
1096 + $name = trim(sanitize_text_field($_POST['name']));
1097 + $email = sanitize_email($_POST['email']);
1098 + $message = sanitize_text_field($_POST['message']);
1099 + $subject = get_option('qlcd_wp_chatbot_email_sub') != '' ? get_option('qlcd_wp_chatbot_email_sub') : 'Support Email from wpWBot by Client';
1133 1100 //Extract Domain
1134 1101 $url = get_site_url();
1135 - $url = wp_parse_url($url);
1102 + $url = parse_url($url);
1136 1103 $domain = $url['host'];
1137 1104 //$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 - }
1105 + $admin_email = get_option('admin_email');
1106 + $toEmail = get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email;
1107 + $fromEmail = "wordpress@" . $domain;
1147 1108 //Starting messaging and status.
1148 1109 $response['status'] = 'fail';
1149 - $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_fail')));
1110 + $response['message'] = str_replace('\\', '',get_option('qlcd_wp_chatbot_email_fail'));
1150 1111 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'))));
1112 + $response['message'] = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_invalid_email')));
1152 1113 $response['status'] = 'fail';
1153 1114 } else {
1154 1115 //build email body
1155 1116 $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>';
1117 + $bodyContent .= '<p><strong>' . __('Support Request Details', 'wpchatbot') . ':</strong></p><hr>';
1118 + $bodyContent .= '<p>' . __('Name', 'wpchatbot') . ' : ' . $name . '</p>';
1119 + $bodyContent .= '<p>' . __('Email', 'wpchatbot') . ' : ' . $email . '</p>';
1120 + $bodyContent .= '<p>' . __('Subject', 'wpchatbot') . ' : ' . $subject . '</p>';
1121 + $bodyContent .= '<p>' . __('Message', 'wpchatbot') . ' : ' . $message . '</p>';
1122 + $bodyContent .= '<p>' . __('Mail Generated on', 'wpchatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1162 1123 $to = $toEmail;
1163 1124 $body = $bodyContent;
1164 1125 $headers = array();
1165 1126 $headers[] = 'Content-Type: text/html; charset=UTF-8';
@@ -1167,13 +1128,13 @@
1167 1128 $headers[] = 'Reply-To: ' . $name . ' <' . $email . '>';
1168 1129 $result = wp_mail($to, $subject, $body, $headers);
1169 1130 if ($result) {
1170 1131 $response['status'] = 'success';
1171 - $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_sent')));
1132 + $response['message'] = str_replace('\\', '',get_option('qlcd_wp_chatbot_email_sent'));
1172 1133 }
1173 -
1174 1134 }
1175 - echo wp_json_encode($response);
1135 + ob_clean();
1136 + echo json_encode($response);
1176 1137 die();
1177 1138 }
1178 1139 //Support Phone
1179 1140 add_action('wp_ajax_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
@@ -1178,37 +1139,30 @@
1178 1139 //Support Phone
1179 1140 add_action('wp_ajax_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1180 1141 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1181 1142 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']));
1143 + $name = trim(sanitize_text_field($_POST['name']));
1144 + $phone =sanitize_text_field($_POST['phone']);
1185 1145 $subject = 'WPBot Support Mail Request for Call Back';
1186 1146 //Extract Domain
1187 1147 $url = get_site_url();
1188 - $url = wp_parse_url($url);
1148 + $url = parse_url($url);
1189 1149 $domain = $url['host'];
1190 1150 //$admin_email = "admin@" . $domain;
1191 1151 $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 - }
1152 + $toEmail = get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email;
1153 + $fromEmail = "wordpress@" . $domain;
1200 1154 //Starting messaging and status.
1201 1155 $response['status'] = 'fail';
1202 - $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_fail')));
1156 + $response['message'] = str_replace('\\', '',get_option('qlcd_wp_chatbot_phone_fail'));
1203 1157 //build email body
1204 1158 $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>';
1159 + $bodyContent .= '<p><strong>' . __('Support Request Details', 'wpchatbot') . ':</strong></p><hr>';
1160 + $bodyContent .= '<p>' . __('Name', 'wpchatbot') . ' : ' . $name . '</p>';
1161 + $bodyContent .= '<p>' . __('Phone', 'wpchatbot') . ' : ' . $phone . '</p>';
1162 + $bodyContent .= '<p>' . __('Subject', 'wpchatbot') . ' : ' . $subject . '</p>';
1163 + $bodyContent .= '<p>' . __('Message', 'wpchatbot') . ' : ' . __(' Call me at ', 'wpchatbot'). $phone . '</p>';
1164 + $bodyContent .= '<p>' . __('Mail Generated on', 'wpchatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1211 1165 $to = $toEmail;
1212 1166 $body = $bodyContent;
1213 1167 $headers = array();
1214 1168 $headers[] = 'Content-Type: text/html; charset=UTF-8';
@@ -1216,17 +1170,39 @@
1216 1170 $headers[] = 'Reply-To: ' . $name . ' <' . $fromEmail . '>';
1217 1171 $result = wp_mail($to, $subject, $body, $headers);
1218 1172 if ($result) {
1219 1173 $response['status'] = 'success';
1220 - $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_sent')));
1174 + $response['message'] = str_replace('\\', '',get_option('qlcd_wp_chatbot_phone_sent'));
1221 1175 }
1222 - echo wp_json_encode($response);
1176 + ob_clean();
1177 + echo json_encode($response);
1223 1178 die();
1224 1179 }
1225 -// Order Status part. removed
1226 -
1180 +// Order Status part.
1181 +add_action('wp_ajax_qcld_wb_chatbot_check_user', 'qcld_wb_chatbot_check_user');
1182 +add_action('wp_ajax_nopriv_qcld_wb_chatbot_check_user', 'qcld_wb_chatbot_check_user');
1183 +function qcld_wb_chatbot_check_user(){
1184 + global $wpcommerce;
1185 + $user_name = trim(sanitize_text_field($_POST['user_name']));
1186 + $response = array();
1187 + $response['message'] = "";
1188 + if (username_exists($user_name)) {
1189 + if (get_option('qlcd_wp_chatbot_order_user') == 'login') {
1190 + $response['status'] = "success";
1191 + $response['message'] .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_username_thanks')));
1192 + $response['html'] .= '<p>' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_username_password'))) . '</p>';
1193 + } else if (get_option('qlcd_wp_chatbot_order_user') == 'not_login') {
1194 + $response = get_order_by_username($user_name);
1195 + }
1196 + } else {
1197 + $response['status'] = "fail";
1198 + $response['message'] .= '<strong>' . $user_name . '</strong> ' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_username_not_exist')));
1199 + }
1200 + echo wp_send_json($response);
1201 + die();
1202 +}
1227 1203 function wpb_randmom_message_handle($items){
1228 - return $items[wp_rand(0, count($items) - 1)];
1204 + return $items[rand(0, count($items) - 1)];
1229 1205 }
1230 1206 function qcld_wb_chatbot_func_str_replace($messages = array()){
1231 1207 $refined_mesgses = array();
1232 1208 foreach ($messages as $message) {
@@ -1241,21 +1217,22 @@
1241 1217 // First check the nonce, if it fails the function will break
1242 1218 check_ajax_referer('wpwbot-order-nonce', 'security');
1243 1219 // Nonce is checked, get the POST data and sign user on
1244 1220 $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'])));
1221 + $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1222 + $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1247 1223 $info['remember'] = true;
1248 1224 $user_signon = wp_signon($info, false);
1249 1225 $response = array();
1250 1226 if (is_wp_error($user_signon)) {
1251 1227 $response['status'] = "fail";
1252 - $response['message'] = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect'))));
1228 + $response['message'] = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect')));
1253 1229 } else {
1254 1230 $response = get_order_by_username($info['user_login']);
1255 1231 $response['status'] = "success";
1256 1232 }
1257 - wp_send_json($response);
1233 + echo wp_send_json($response);
1234 + die();
1258 1235 }
1259 1236 add_action('wp_ajax_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1260 1237 add_action('wp_ajax_nopriv_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1261 1238 function qcld_wb_chatbot_loged_in_user_orders(){
@@ -1261,9 +1238,10 @@
1261 1238 function qcld_wb_chatbot_loged_in_user_orders(){
1262 1239 $current_user = wp_get_current_user();
1263 1240 $user_name = $current_user->user_login;
1264 1241 $response = get_order_by_username($user_name);
1265 - wp_send_json($response);
1242 + echo wp_send_json($response);
1243 + die();
1266 1244 }
1267 1245 function get_order_by_username($user_name){
1268 1246 global $post;
1269 1247 $response = array();
@@ -1281,28 +1259,28 @@
1281 1259 ));
1282 1260 $response['order_num'] = count($customer_orders);
1283 1261 $order_html = '';
1284 1262 if ($response['order_num'] > 0) {
1285 - $response['message'] .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_found'))));
1263 + $response['message'] .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_found')));
1286 1264 $order_html .= '<div class="wp-chatbot-orders-container">
1287 1265 <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>
1266 + <div class="order-id">' . __('ID', 'wpchatbot') . '</div>
1267 + <div class="order-date">' . __('Date', 'wpchatbot') . ' </div>
1268 + <div class="order-items">' . __('Items', 'wpchatbot') . '</div>
1269 + <div class="order-status">' . __('Status', 'wpchatbot') . '</div>
1292 1270 </div>';
1293 1271 foreach ($customer_orders as $order) {
1294 1272 //Formatting order summery
1295 1273 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1296 - $thanks_page_id = sanitize_text_field(get_option('wp_chatbot_app_order_thankyou'));
1274 + $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1297 1275 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1298 1276 $order_url = '<a href="' . $thanks_parmanlink . '?order_id=' . $order->ID . '" >' . $order->ID . '</a>';
1299 1277 } 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>';
1278 + $order_url = '<a href="' . get_permalink(get_option('wpcommerce_myaccount_page_id')) . '/view-order/' . $order->ID . '" target="_blank" >' . $order->ID . '</a>';
1301 1279 }
1302 1280 $order_html .= '<div class="wp-chatbot-orders-single">
1303 1281 <div class="order-id"> ' . $order_url . '</div>
1304 - <div class="order-date"> <p>' . gmdate("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1282 + <div class="order-date"> <p>' . date("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1305 1283 <div class="order-items">';
1306 1284 $singleOrder = new WC_Order($order->ID);
1307 1285 $items = $singleOrder->get_items();
1308 1286 foreach ($items as $item) {
@@ -1315,9 +1293,9 @@
1315 1293 }
1316 1294 $order_html .= '</div>';
1317 1295 } else {
1318 1296 $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>';
1297 + $order_html .= '<p>' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_not_found'))) . '</p>';
1320 1298 }
1321 1299 $response['html'] = $order_html;
1322 1300 return $response;
1323 1301 }
@@ -1341,11 +1319,9 @@
1341 1319 if (sizeof($viewed_products) > 15) {
1342 1320 array_shift($viewed_products);
1343 1321 }
1344 1322 // Store for session only
1345 - if( function_exists( 'wc_setcookie' ) ){
1346 - wc_setcookie('wp_chatbot_wpcommerce_recently_viewed', implode('|', $viewed_products));
1347 - }
1323 + wc_setcookie('wp_chatbot_wpcommerce_recently_viewed', implode('|', $viewed_products));
1348 1324 }
1349 1325 add_action('template_redirect', 'wp_chatbot_track_product_view', 20);
1350 1326 //recent view product ajax
1351 1327 add_action('wp_ajax_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
@@ -1353,10 +1329,10 @@
1353 1329 function qcld_wb_chatbot_recently_viewed_products(){
1354 1330 // Get wpCommerce Global
1355 1331 $_pf = new WC_Product_Factory();
1356 1332 //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'))));
1333 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
1334 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1359 1335 // Get recently viewed product cookies data
1360 1336 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1361 1337 $viewed_products = array_filter(array_map('absint', $viewed_products));
1362 1338 //get featured products if has.
@@ -1362,9 +1338,9 @@
1362 1338 //get featured products if has.
1363 1339 $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 1340 //Getting recently vieew products.
1365 1341 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'))));
1342 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome')));
1367 1343 $product_query = new WP_Query(array(
1368 1344 'posts_per_page' => $product_per_page,
1369 1345 'no_found_rows' => 1,
1370 1346 'post_status' => 'publish',
@@ -1372,15 +1348,16 @@
1372 1348 'post__in' => $viewed_products,
1373 1349 ));
1374 1350 //Getting featured products
1375 1351 } 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'))));
1352 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome')));
1377 1353 $product_query = $featured_products;
1378 1354 } else {
1379 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1355 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1380 1356 //Getting recent products
1381 1357 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1382 1358 }
1359 + //$html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))).'</div>';
1383 1360 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1384 1361 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1385 1362 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1386 1363 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
@@ -1387,10 +1364,10 @@
1387 1364 } else {
1388 1365 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1389 1366 }
1390 1367 $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>
1368 + <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1369 + <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1393 1370 <div class="wp-chatbot-bubble">' . $wp_chatbot_product_title . '</div>
1394 1371 </div>';
1395 1372 if ($product_query->post_count > 0) {
1396 1373 $html .= '<div class="wp-chatbot-products-area">';
@@ -1402,9 +1379,9 @@
1402 1379 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1403 1380 <div class="wp-chatbot-product-summary">
1404 1381 <div class="wp-chatbot-product-table">
1405 1382 <div class="wp-chatbot-product-table-cell">
1406 - <h3 class="wp-chatbot-product-title">' . esc_html($product->post->post_title) . '</h3>
1383 + <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1407 1384 <div class="price">' . $product->get_price_html() . '</div>';
1408 1385 $html .= ' </div>
1409 1386 </div>
1410 1387 </div></a>
@@ -1417,9 +1394,10 @@
1417 1394 $html .= '<div class="wp-chatbot-products-area">';
1418 1395 $html .= '<p style="text-align: center">You have no products !';
1419 1396 $html .= '</div>';
1420 1397 }
1421 - wp_send_json($html);
1398 + echo wp_send_json($html);
1399 + die();
1422 1400 }
1423 1401 //Recently viewed product shortcode
1424 1402 add_shortcode('wpwbot_products', 'qcld_wb_chatbot_recently_viewed_shortcode');
1425 1403 function qcld_wb_chatbot_recently_viewed_shortcode(){
@@ -1424,10 +1402,10 @@
1424 1402 add_shortcode('wpwbot_products', 'qcld_wb_chatbot_recently_viewed_shortcode');
1425 1403 function qcld_wb_chatbot_recently_viewed_shortcode(){
1426 1404 // Get wpCommerce Global
1427 1405 $_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'))));
1406 + $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
1407 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1430 1408 // Get recently viewed product cookies data
1431 1409 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1432 1410 $viewed_products = array_filter(array_map('absint', $viewed_products));
1433 1411 //get featured products if has.
@@ -1433,9 +1411,9 @@
1433 1411 //get featured products if has.
1434 1412 $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 1413 //Getting recently vieew products.
1436 1414 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'))));
1415 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome')));
1438 1416 $product_query = new WP_Query(array(
1439 1417 'posts_per_page' => $product_per_page,
1440 1418 'no_found_rows' => 1,
1441 1419 'post_status' => 'publish',
@@ -1443,15 +1421,16 @@
1443 1421 'post__in' => $viewed_products,
1444 1422 ));
1445 1423 //implementing featured products
1446 1424 } 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'))));
1425 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome')));
1448 1426 $product_query = $featured_products;
1449 1427 } else {
1450 - $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1428 + $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1451 1429 //Getting recent products
1452 1430 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1453 1431 }
1432 + //$html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))).'</div>';
1454 1433 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1455 1434 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1456 1435 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1457 1436 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
@@ -1458,11 +1437,11 @@
1458 1437 } else {
1459 1438 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1460 1439 }
1461 1440 $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>
1441 + <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1442 + <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1443 + <div class="wp-chatbot-bubble">' . $wp_chatbot_product_title . '</div>
1465 1444 </div>';
1466 1445 if ($product_query->post_count > 0) {
1467 1446 $html .= '<div class="wp-chatbot-products-area">';
1468 1447 $html .= '<ul class="wp-chatbot-products">';
@@ -1473,9 +1452,9 @@
1473 1452 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1474 1453 <div class="wp-chatbot-product-summary">
1475 1454 <div class="wp-chatbot-product-table">
1476 1455 <div class="wp-chatbot-product-table-cell">
1477 - <h3 class="wp-chatbot-product-title">' . esc_html($product->post->post_title) . '</h3>
1456 + <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1478 1457 <div class="price">' . $product->get_price_html() . '</div>';
1479 1458 $html .= ' </div>
1480 1459 </div>
1481 1460 </div></a>
@@ -1485,9 +1464,9 @@
1485 1464 wp_reset_postdata();
1486 1465 $html .= '</ul></div>';
1487 1466 } else {
1488 1467 $html .= '<div class="wp-chatbot-products-area">';
1489 - $html .= '<p style="text-align: center">' . __('You have no products', 'chatbot') . ' !';
1468 + $html .= '<p style="text-align: center">' . __('You have no products', 'wpchatbot') . ' !';
1490 1469 $html .= '</div>';
1491 1470 }
1492 1471 return $html;
1493 1472 }
@@ -1501,10 +1480,11 @@
1501 1480 $checkout_url = wc_get_checkout_url();
1502 1481 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1503 1482 $items = $wpcommerce->cart->get_cart();
1504 1483 $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'))));
1484 + $cart_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart')));
1485 + $no_cart_item_msg = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1486 + //$html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))).'</div>';
1507 1487 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1508 1488 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1509 1489 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1510 1490 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
@@ -1511,15 +1491,15 @@
1511 1491 } else {
1512 1492 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1513 1493 }
1514 1494 $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>
1495 + <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1496 + <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1497 + <div class="wp-chatbot-bubble">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))) . '</div>
1518 1498 </div>';
1519 1499 if ($itemCount >= 1) {
1520 1500 $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>';
1501 + $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 1502 $html .= '<div class ="wp-chatbot-cart-body">';
1523 1503 foreach ($items as $item => $values) {
1524 1504 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1525 1505 //product image
@@ -1537,9 +1517,9 @@
1537 1517 <div class="qcld-wp-chatbot-cell"></div>
1538 1518 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1539 1519 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1540 1520 </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>';
1521 + $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 1522 $html .= ' </div>';
1543 1523 } else {
1544 1524 $html .= '<div class="wp-chatbot-cart-container">';
1545 1525 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
@@ -1545,9 +1525,10 @@
1545 1525 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1546 1526 $html .= '</div>';
1547 1527 }
1548 1528 $response = array('html' => $html, 'items' => $itemCount);
1549 - wp_send_json($response);
1529 + echo wp_send_json($response);
1530 + wp_die();
1550 1531 }
1551 1532 //cart onley for wp chatbot
1552 1533 add_action('wp_ajax_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1553 1534 add_action('wp_ajax_nopriv_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
@@ -1558,14 +1539,14 @@
1558 1539 $checkout_url = wc_get_checkout_url();
1559 1540 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1560 1541 $items = $wpcommerce->cart->get_cart();
1561 1542 $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'))));
1543 + $no_cart_item_msg = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1563 1544
1564 1545 $html = '';
1565 1546 if ($itemCount >= 1) {
1566 1547 $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>';
1548 + $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 1549 $html .= '<div class ="wp-chatbot-cart-body">';
1569 1550 foreach ($items as $item => $values) {
1570 1551 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1571 1552 //product image
@@ -1583,17 +1564,18 @@
1583 1564 <div class="qcld-wp-chatbot-cell"></div>
1584 1565 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1585 1566 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1586 1567 </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>';
1568 + $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 1569 $html .= ' </div>';
1589 1570 } else {
1590 1571 $html .= '<div class="wp-chatbot-cart-container">';
1591 - $html .= '<div><p style="text-align:center">' . esc_html($no_cart_item_msg) . '</p></div>';
1572 + $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1592 1573 $html .= '</div>';
1593 1574 }
1594 1575 $response = array('html' => $html, 'items' => $itemCount);
1595 - wp_send_json($response);
1576 + echo wp_send_json($response);
1577 + wp_die();
1596 1578 }
1597 1579 //Cart show Shortcode
1598 1580 add_shortcode('wpwbot_cart', 'qcld_wb_chatbot_cart_shortcode');
1599 1581 function qcld_wb_chatbot_cart_shortcode(){
@@ -1599,10 +1581,11 @@
1599 1581 function qcld_wb_chatbot_cart_shortcode(){
1600 1582 global $wpcommerce;
1601 1583 $items = $wpcommerce->cart->get_cart();
1602 1584 $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'))));
1585 + $cart_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart')));
1586 + $no_cart_item_msg = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1587 + // $html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))).'</div>';
1605 1588 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1606 1589 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1607 1590 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1608 1591 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
@@ -1609,15 +1592,15 @@
1609 1592 } else {
1610 1593 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1611 1594 }
1612 1595 $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>
1596 + <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1597 + <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1598 + <div class="wp-chatbot-bubble">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))) . '</div>
1616 1599 </div>';
1617 1600 if ($itemCount >= 1) {
1618 1601 $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>';
1602 + $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 1603 $html .= '<div class ="wp-chatbot-cart-body">';
1621 1604 foreach ($items as $item => $values) {
1622 1605 $cart_item = apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1623 1606 //product image
@@ -1635,9 +1618,9 @@
1635 1618 <div class="qcld-wp-chatbot-cell"></div>
1636 1619 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1637 1620 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1638 1621 </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>';
1622 + $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 1623 $html .= ' </div>';
1641 1624 } else {
1642 1625 $html .= '<div class="wp-chatbot-cart-container">';
1643 1626 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
@@ -1649,26 +1632,26 @@
1649 1632 //Updating the cart items.
1650 1633 add_action('wp_ajax_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1651 1634 add_action('wp_ajax_nopriv_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1652 1635 function qcld_wb_chatbot_update_cart_item_number(){
1653 - check_ajax_referer( 'wp_chatbot', 'nonce' );
1654 1636 //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']));
1637 + $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
1638 + $qnty = sanitize_text_field($_POST['qnty']);
1657 1639 global $wpcommerce;
1658 1640 $result = $wpcommerce->cart->set_quantity($cart_item_key, $qnty);
1659 - wp_send_json($result);
1641 + echo wp_send_json($result);
1642 + wp_die();
1660 1643 }
1661 1644 //Show item after removing from cart page.
1662 1645 add_action('wp_ajax_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1663 1646 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1664 1647 function qcld_wb_chatbot_cart_item_remove(){
1665 - check_ajax_referer( 'wp_chatbot', 'nonce' );
1666 1648 //getting cart items n
1667 - $cart_item_key = sanitize_text_field(wp_unslash($_POST['cart_item']));
1649 + $cart_item_key = sanitize_text_field($_POST['cart_item']);
1668 1650 global $wpcommerce;
1669 1651 $result = $wpcommerce->cart->remove_cart_item($cart_item_key);
1670 - wp_send_json($result);
1652 + echo wp_send_json($result);
1653 + wp_die();
1671 1654 }
1672 1655 //Show cart page by shortcode.
1673 1656 add_action('wp_ajax_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1674 1657 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
@@ -1676,13 +1659,14 @@
1676 1659 global $wpcommerce;
1677 1660 $itemCount = $wpcommerce->cart->cart_contents_count;
1678 1661 $html = "";
1679 1662 if ($itemCount < 0) {
1680 - $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1663 + $html .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1681 1664 } else {
1682 1665 $html .= do_shortcode("[wpcommerce_cart]");
1683 1666 }
1684 - wp_send_json($html);
1667 + echo wp_send_json($html);
1668 + wp_die();
1685 1669 }
1686 1670 //Show checkout page by shortcode.
1687 1671 add_action('wp_ajax_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1688 1672 add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
@@ -1691,9 +1675,9 @@
1691 1675 $itemCount = $wpcommerce->cart->cart_contents_count;
1692 1676 $html = "";
1693 1677 if ($itemCount < 0) {
1694 1678 $status = 'no';
1695 - $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1679 + $html .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1696 1680 } else {
1697 1681 $status = 'yes';
1698 1682 $checkout_page_id = get_option('wp_chatbot_app_checkout');
1699 1683 $checkout_parmanlink = esc_url(get_permalink($checkout_page_id));
@@ -1699,71 +1683,34 @@
1699 1683 $checkout_parmanlink = esc_url(get_permalink($checkout_page_id));
1700 1684 $html .= $checkout_parmanlink;
1701 1685 }
1702 1686 $response = array('status' => $status, 'html' => $html);
1703 - wp_send_json($response);
1687 + echo wp_send_json($response);
1688 + wp_die();
1704 1689 }
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 - }
1690 +//User login on Checkout page.
1691 +add_action('wp_ajax_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1692 +add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1693 +function qcld_wb_chatbot_checkout_user_login(){
1694 + // Nonce is checked, get the POST data and sign user on
1695 + $info = array();
1696 + //$info['nonce'] = $_POST['nonce_val'];
1697 + $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1698 + $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1699 + $info['remember'] = true;
1700 + $user_signon = wp_signon($info, false);
1701 + // $response=$info;
1702 + $response = array();
1703 + if (is_wp_error($user_signon)) {
1704 + // $response['status'] = "fail";
1705 + // $response['message'] = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect')));
1706 + $response = "no";
1707 + } else {
1708 + $response = "yes";
1735 1709 }
1736 -
1737 - if(!empty($intents)){
1738 - return implode(", ", $intents);
1739 - }else{
1740 - return '';
1741 - }
1742 -
1710 + echo wp_send_json($response);
1711 + die();
1743 1712 }
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 1713 // Load template for App Order Thank You page url
1767 1714 function wp_chatbot_load_app_template($template){
1768 1715 if (is_page('wpwbot-mobile-app')) {
1769 1716 return dirname(__FILE__) . '/templates/app-templates/app.php';
@@ -1792,16 +1739,15 @@
1792 1739 add_action('init', 'wp_chatbot_create_app_checkout_thankyou_page');
1793 1740 function wp_chatbot_create_app_checkout_thankyou_page(){
1794 1741 if (get_option('wp_chatbot_app_pages') == 1) {
1795 1742 //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() ) {
1743 + if (get_page_by_title('wpwBot Mobile App') == NULL) {
1798 1744 //post status and options
1799 1745 $app_page = array(
1800 1746 'comment_status' => 'closed',
1801 1747 'ping_status' => 'closed',
1802 1748 'post_author' => get_current_user_id(),
1803 - 'post_date' => gmdate('Y-m-d H:i:s'),
1749 + 'post_date' => date('Y-m-d H:i:s'),
1804 1750 'post_status' => 'publish',
1805 1751 'post_title' => 'wpwBot Mobile App',
1806 1752 'post_name' => 'wpwbot-mobile-app',
1807 1753 'post_type' => 'page',
@@ -1811,16 +1757,15 @@
1811 1757 //save the id in the database
1812 1758 update_option('wp_chatbot_app_checkout', $wpwbot_app);
1813 1759 }
1814 1760 //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() ) {
1761 + if (get_page_by_title('wpwBot App Checkout') == NULL) {
1817 1762 //post status and options
1818 1763 $checkout_page = array(
1819 1764 'comment_status' => 'closed',
1820 1765 'ping_status' => 'closed',
1821 1766 'post_author' => get_current_user_id(),
1822 - 'post_date' => gmdate('Y-m-d H:i:s'),
1767 + 'post_date' => date('Y-m-d H:i:s'),
1823 1768 'post_status' => 'publish',
1824 1769 'post_title' => 'wpwBot App Checkout',
1825 1770 'post_name' => 'wpwbot-app-checkout',
1826 1771 'post_type' => 'page',
@@ -1830,16 +1775,15 @@
1830 1775 //save the id in the database
1831 1776 update_option('wp_chatbot_app_checkout', $app_checkout);
1832 1777 }
1833 1778 //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() ) {
1779 + if (get_page_by_title('wpwBot App Order Thank You') == NULL) {
1836 1780 //post status and options
1837 1781 $thankyou_page = array(
1838 1782 'comment_status' => 'closed',
1839 1783 'ping_status' => 'closed',
1840 1784 'post_author' => get_current_user_id(),
1841 - 'post_date' => gmdate('Y-m-d H:i:s'),
1785 + 'post_date' => date('Y-m-d H:i:s'),
1842 1786 'post_status' => 'publish',
1843 1787 'post_title' => 'wpwBot App Order Thank You',
1844 1788 'post_name' => 'wpwbot-app-order-thankyou',
1845 1789 'post_type' => 'page',
@@ -1850,9 +1794,9 @@
1850 1794 update_option('wp_chatbot_app_order_thankyou', $app_order_thankyou);
1851 1795 }
1852 1796 }
1853 1797 //Keep tracking from App by cookies
1854 - if ( isset( $_GET['from'] ) && sanitize_text_field( wp_unslash( $_GET['from'] ) ) === 'app' ) { // phpcs:ignore WordPress.Security.NonceVerification
1798 + if (isset($_GET['from']) && $_GET['from'] == 'app') {
1855 1799 if (!isset($_COOKIE['from_app'])) {
1856 1800 setcookie('from_app', 'yes', (time() + 3600), '/');
1857 1801 }
1858 1802 }
@@ -1866,9 +1810,9 @@
1866 1810 global $wp;
1867 1811 if (is_checkout() && !empty($wp->query_vars['order-received'])) {
1868 1812 $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1869 1813 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1870 - wp_safe_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1814 + wp_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1871 1815 exit;
1872 1816 }
1873 1817 } else {
1874 1818 remove_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase');
@@ -1876,12 +1820,9 @@
1876 1820 }
1877 1821 }
1878 1822
1879 1823 function qcld_choose_random($array){
1880 - if (is_array($array) && !empty($array)) {
1881 - return $array[array_rand($array)];
1882 - }
1883 - return $array;
1824 + return $array[array_rand($array)];
1884 1825 }
1885 1826
1886 1827 //User session count
1887 1828 add_action('wp_ajax_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
@@ -1887,9 +1828,8 @@
1887 1828 add_action('wp_ajax_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1888 1829 add_action('wp_ajax_nopriv_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1889 1830 function qcld_wb_chatbot_session_count(){
1890 1831 // Nonce is checked, get the POST data and sign user on
1891 - check_ajax_referer( 'wp_chatbot', 'nonce' );
1892 1832 global $wpdb;
1893 1833 $wpdb->show_errors = true;
1894 1834 $tableuser = $wpdb->prefix.'wpbot_sessions';
1895 1835 $response = array();
@@ -1894,12 +1834,11 @@
1894 1834 $tableuser = $wpdb->prefix.'wpbot_sessions';
1895 1835 $response = array();
1896 1836
1897 1837
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 -
1838 + $session_exists = $wpdb->get_row("select * from $tableuser where 1 and id = '1'");
1900 1839 if(empty($session_exists)){
1901 - $wpdb->insert( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
1840 + $wpdb->insert(
1902 1841 $tableuser,
1903 1842 array(
1904 1843 'session' => 1,
1905 1844 )
@@ -1906,10 +1845,9 @@
1906 1845 );
1907 1846 }else{
1908 1847
1909 1848 $session_id = $session_exists->id;
1910 -
1911 - $wpdb->update( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
1849 + $wpdb->update(
1912 1850 $tableuser,
1913 1851 array(
1914 1852 'session'=>($session_exists->session+1),
1915 1853 ),
@@ -1918,163 +1856,9 @@
1918 1856 '%d',
1919 1857 ),
1920 1858 array('%d')
1921 1859 );
1922 -
1923 1860 }
1924 1861
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 -
1862 + echo wp_send_json($response);
1863 + die();
1864 +}