PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 7.3.2
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v7.3.2
8.7.8 8.7.7 8.7.6 8.7.5 8.7.4 8.7.3 8.7.2 8.7.1 8.7.0 8.6.9 8.6.8 8.6.7 8.6.6 8.6.5 8.6.4 8.6.2 8.6.1 8.6.0 8.5.9 8.5.8 8.5.7 8.5.6 8.5.5 8.5.4 8.5.3 All 534 releases
← All changes | functions.php +71 -291 8.7.37.3.2 View file →
@@ -3,46 +3,9 @@
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 -}
7 +add_action('wp_footer', 'wp_chatbot_load_footer_html');
45 8 add_action( 'admin_footer', 'qcld_style_for_hide_iframe');
46 9 function qcld_style_for_hide_iframe(){
47 10 ?>
48 11 <script>
@@ -58,62 +21,8 @@
58 21 });
59 22 </script>
60 23 <?php
61 24 }
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 -}
116 25 function wp_chatbot_load_footer_html(){
117 26 if ( get_option('disable_wp_chatbot') != 1 && wp_chatbot_load_controlling() === true) {
118 27
119 28 ?>
@@ -119,9 +28,9 @@
119 28 ?>
120 29 <style>
121 30 <?php if(get_option('wp_chatbot_custom_css')!="") {
122 31
123 - echo wp_strip_all_tags( get_option('wp_chatbot_custom_css') );// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
32 + echo get_option('wp_chatbot_custom_css');
124 33 }
125 34 ?>
126 35 </style>
127 36
@@ -133,27 +42,10 @@
133 42 }
134 43 ?>
135 44 <style>
136 45 .wp-chatbot-container {
137 - background-color: #eceef3 !important;
138 46 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;
142 47 }
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 48 </style>
157 49 <?php }
158 50 $wp_chatbot_enable_rtl = "";
159 51 if (get_option('enable_wp_chatbot_rtl') == '1') {
@@ -163,9 +55,9 @@
163 55 // if (get_option('enable_wp_chatbot_mobile_full_screen')==1) {
164 56 $wp_chatbot_enable_mobile_screen .= "wp-chatbot-mobile-full-screen";
165 57 // }
166 58 ?>
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';} ?>">
59 + <div id="wp-chatbot-chat-container" class="<?php echo esc_attr($wp_chatbot_enable_rtl .' '.$wp_chatbot_enable_mobile_screen); ?>">
168 60 <div id="wp-chatbot-integration-container">
169 61 <div class="wp-chatbot-integration-button-container">
170 62 <?php if (get_option('enable_wp_chatbot_skype_floating_icon') == 1) { ?>
171 63 <a href="skype:<?php echo esc_attr(get_option('enable_wp_chatbot_skype_id')); ?>?chat"><span
@@ -226,9 +118,9 @@
226 118 }
227 119 ?>
228 120 <div class="wp-chatbot-notification-agent-profile">
229 121 <div class="wp-chatbot-notification-widget-avatar" ><img
230 - src="<?php echo esc_url($wp_chatbot_custom_agent_path); ?>" alt=""></div>
122 + src="<?php echo esc_attr($wp_chatbot_custom_agent_path); ?>" alt=""></div>
231 123 <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>
232 124 </div>
233 125 <?php
234 126 //update_option('qlcd_wp_chatbot_notifications','Welcome to WpBot');
@@ -251,72 +143,14 @@
251 143 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_icon');
252 144 } else {
253 145 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom.png';
254 146 }
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 147 ?>
264 148 <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; ?>
149 + alt="wpChatIcon" qcld_agent="<?php echo esc_url($wp_chatbot_custom_icon_path); ?>" >
150 +
275 151 </div>
276 -
277 152 </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 153 <?php
320 154 $fb_app_id = get_option('qlcd_wp_chatbot_fb_app_id');
321 155 $fb_page_id = get_option('qlcd_wp_chatbot_fb_page_id');
322 156 $fb_mgs_color = get_option('qlcd_wp_chatbot_fb_color') != '' ? get_option('qlcd_wp_chatbot_fb_color') : '#0084ff';
@@ -433,9 +267,9 @@
433 267 return $wp_chatbot_load;
434 268 }
435 269 //checking Devices
436 270 function wp_chatbot_is_mobile(){
437 - $useragent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
271 + $useragent = $_SERVER['HTTP_USER_AGENT'];
438 272 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 273 return true;
440 274 } else {
441 275 return false;
@@ -442,10 +276,10 @@
442 276 }
443 277 }
444 278 //Checking wpwbot opening hour
445 279 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')));
280 + $curent_day=strtolower(date('l',strtotime(current_time( 'mysql' ))));
281 + $current_time=date('H:i',strtotime(current_time( 'mysql')));
448 282 $is_wpwbot_open =false;
449 283 if(get_option('wpwbot_hours')) {
450 284 $wpwbot_times = wp_kses_post(unserialize(get_option('wpwbot_hours')));
451 285 if (isset($wpwbot_times[$curent_day])) {
@@ -467,16 +301,9 @@
467 301 */
468 302 add_action('wp_ajax_qcld_wb_chatbot_keyword', 'qcld_wb_chatbot_keyword');
469 303 add_action('wp_ajax_nopriv_qcld_wb_chatbot_keyword', 'qcld_wb_chatbot_keyword');
470 304 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']));
305 + $keyword = sanitize_text_field($_POST['keyword']);
479 306 $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
480 307 if (get_option('qlcd_wp_chatbot_search_option') == 'standard') {
481 308 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
482 309 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
@@ -522,9 +349,9 @@
522 349 endwhile;
523 350 wp_reset_postdata();
524 351 $html .= '</ul>';
525 352 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>';
353 + $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 . '" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more')))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
527 354 }
528 355 }
529 356 $html .= '</div>';
530 357 } else if (get_option('qlcd_wp_chatbot_search_option') == 'advanced') {
@@ -552,9 +379,9 @@
552 379 }
553 380 }
554 381 $html .= '</ul>';
555 382 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>';
383 + $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 . '" >' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_load_more')))) . ' <span id="wp-chatbot-loadmore-loader"></span></button> </p>';
557 384 }
558 385 }
559 386 $html .= '</div>';
560 387 }
@@ -569,15 +396,16 @@
569 396 add_action('wp_ajax_nopriv_qcld_wb_chatbot_category', 'qcld_wb_chatbot_category');
570 397 function qcld_wb_chatbot_category(){
571 398 $category_type="common";
572 399 if (get_option('wp_chatbot_show_parent_category') != "") {
573 - $terms = get_terms( array( 'taxonomy' => 'product_cat', 'parent' => 0, 'hide_empty' => true, 'fields' => 'all' ) );
400 + $terms = get_terms('product_cat', array('parent' => 0, 'hide_empty' => true, 'fields' => 'all'));
401 +
574 402 } else {
575 - $terms = get_terms( array( 'taxonomy' => 'product_cat', 'hide_empty' => true, 'fields' => 'all' ) );
403 + $terms = get_terms('product_cat', array('hide_empty' => true, 'fields' => 'all'));
576 404 }
577 405 $html = "";
578 406 foreach ($terms as $term) {
579 - $child_terms=get_terms( array( 'taxonomy' => 'product_cat', 'parent' => $term->term_id, 'hide_empty' => true, 'fields' => 'all' ) );
407 + $child_terms=get_terms('product_cat', array('parent' => $term->term_id, 'hide_empty' => true, 'fields' => 'all'));
580 408 if(get_option('wp_chatbot_show_sub_category')==1 && count($child_terms) >0){
581 409 $category_type="hasChilds";
582 410 }
583 411 $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>';
@@ -590,10 +418,10 @@
590 418 */
591 419 add_action('wp_ajax_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
592 420 add_action('wp_ajax_nopriv_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
593 421 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' ) );
422 + $parent_id = stripslashes($_POST['parent_id']);
423 + $terms = get_terms('product_cat', array('parent' => $parent_id, 'hide_empty' => true, 'fields' => 'all'));
596 424 $html = "";
597 425 foreach ($terms as $term) {
598 426 $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 427 }
@@ -605,9 +433,9 @@
605 433 */
606 434 add_action('wp_ajax_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
607 435 add_action('wp_ajax_nopriv_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
608 436 function qcld_wb_chatbot_category_products(){
609 - $category_id = intval( wp_unslash( $_POST['category'] ) );
437 + $category_id = stripslashes($_POST['category']);
610 438 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
611 439 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
612 440 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
613 441 //Merging all query together.
@@ -844,11 +672,11 @@
844 672 //load more
845 673 add_action('wp_ajax_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
846 674 add_action('wp_ajax_nopriv_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
847 675 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'] ) );
676 + $offset = stripslashes($_POST['offset']);
677 + $search_type = stripslashes($_POST['search_type']);
678 + $search_term = stripslashes($_POST['search_term']);
851 679 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
852 680 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
853 681 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
854 682 $next_offset = intval($product_per_page + $offset);
@@ -979,9 +807,9 @@
979 807 //product details
980 808 add_action('wp_ajax_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
981 809 add_action('wp_ajax_nopriv_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
982 810 function qcld_wb_chatbot_product_details(){
983 - $product_id = intval( wp_unslash( $_POST['wp_chatbot_pid'] ) );
811 + $product_id = stripslashes($_POST['wp_chatbot_pid']);
984 812 //Tracking product view from chat board
985 813 wp_chatbot_view_track_product_by_id($product_id);
986 814 //wpcommerce product factory
987 815 $wc_pf = new WC_Product_Factory();
@@ -1054,11 +882,10 @@
1054 882 $variations .= '<label for="' . sanitize_title($name) . '">' . $title . '</label>';
1055 883 $variations .= '<select id="' . esc_attr(sanitize_title($name)) . '" name="attribute_' . sanitize_title($name) . '" data-attribute_name="attribute_' . sanitize_title($name) . '" class="each_attribute">';
1056 884 $variations .= '<option value="">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_choose_option')))) . '</option>';
1057 885 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 ] ) );
886 + if (isset($_REQUEST['attribute_' . sanitize_title($name)])) {
887 + $selected_value = $_REQUEST['attribute_' . sanitize_title($name)];
1061 888 } else {
1062 889 $selected_value = '';
1063 890 }
1064 891 $variations .= '<option value="' . esc_attr(strtolower($value)) . '"' . selected($selected_value, $value, false) . '>' . apply_filters('wpcommerce_variation_option_name', $value) . '</option>';
@@ -1082,12 +909,12 @@
1082 909 //Add to cart for variable product.
1083 910 add_action('wp_ajax_qcld_variable_add_to_cart', 'qcld_variable_add_to_cart');
1084 911 add_action('wp_ajax_nopriv_qcld_variable_add_to_cart', 'qcld_variable_add_to_cart');
1085 912 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();
913 + $product_id = stripslashes($_POST['p_id']);
914 + $quantity = stripslashes($_POST['quantity']);
915 + $variations_id = stripslashes($_POST['variations_id']);
916 + $attrs = stripslashes($_POST['attributes']);
1090 917 //echo wp_send_json(array('p_id'=>$product_id,'qnty'=>$quantity,'id'=>$variations_id,'att'=>$attrs));
1091 918 $attributes = array();
1092 919 foreach ($attrs as $attr) {
1093 920 $single = explode("#", $attr);
@@ -1107,10 +934,10 @@
1107 934 //Add to cart for simple product.
1108 935 add_action('wp_ajax_qcld_wb_chatbot_add_to_cart', 'qcld_wb_chatbot_add_to_cart');
1109 936 add_action('wp_ajax_nopriv_qcld_wb_chatbot_add_to_cart', 'qcld_wb_chatbot_add_to_cart');
1110 937 function qcld_wb_chatbot_add_to_cart(){
1111 - $product_id = intval( wp_unslash( $_POST['product_id'] ) );
1112 - $product_quantity = intval( wp_unslash( $_POST['quantity'] ) );
938 + $product_id = stripslashes($_POST['product_id']);
939 + $product_quantity = stripslashes($_POST['quantity']);
1113 940 global $wpcommerce;
1114 941 $result = $wpcommerce->cart->add_to_cart($product_id, $product_quantity);
1115 942 if ($result != false) {
1116 943 wp_send_json('simple');
@@ -1121,19 +948,15 @@
1121 948 //Support part
1122 949 add_action('wp_ajax_qcld_wb_chatbot_support_email', 'qcld_wb_chatbot_support_email');
1123 950 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_email', 'qcld_wb_chatbot_support_email');
1124 951 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']));
952 + $name = trim(sanitize_text_field($_POST['name']));
953 + $email = sanitize_email($_POST['email']);
954 + $message = sanitize_text_field($_POST['message']);
1132 955 $subject = sanitize_text_field(get_option('qlcd_wp_chatbot_email_sub') != '' ? get_option('qlcd_wp_chatbot_email_sub') : 'Support Email from wpWBot by Client');
1133 956 //Extract Domain
1134 957 $url = get_site_url();
1135 - $url = wp_parse_url($url);
958 + $url = parse_url($url);
1136 959 $domain = $url['host'];
1137 960 //$admin_email = "admin@" . $domain;
1138 961 $admin_email = sanitize_email(get_option('admin_email'));
1139 962 $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
@@ -1143,8 +966,9 @@
1143 966 $fromEmail = get_option('qlcd_wp_chatbot_from_email');
1144 967 }else{
1145 968 $fromEmail = "wordpress@" . $domain;
1146 969 }
970 +
1147 971 //Starting messaging and status.
1148 972 $response['status'] = 'fail';
1149 973 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_fail')));
1150 974 if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
@@ -1178,15 +1002,14 @@
1178 1002 //Support Phone
1179 1003 add_action('wp_ajax_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1180 1004 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1181 1005 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']));
1006 + $name = trim(sanitize_text_field($_POST['name']));
1007 + $phone =sanitize_text_field($_POST['phone']);
1185 1008 $subject = 'WPBot Support Mail Request for Call Back';
1186 1009 //Extract Domain
1187 1010 $url = get_site_url();
1188 - $url = wp_parse_url($url);
1011 + $url = parse_url($url);
1189 1012 $domain = $url['host'];
1190 1013 //$admin_email = "admin@" . $domain;
1191 1014 $admin_email = get_option('admin_email');
1192 1015 $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
@@ -1224,9 +1047,9 @@
1224 1047 }
1225 1048 // Order Status part. removed
1226 1049
1227 1050 function wpb_randmom_message_handle($items){
1228 - return $items[wp_rand(0, count($items) - 1)];
1051 + return $items[rand(0, count($items) - 1)];
1229 1052 }
1230 1053 function qcld_wb_chatbot_func_str_replace($messages = array()){
1231 1054 $refined_mesgses = array();
1232 1055 foreach ($messages as $message) {
@@ -1241,10 +1064,10 @@
1241 1064 // First check the nonce, if it fails the function will break
1242 1065 check_ajax_referer('wpwbot-order-nonce', 'security');
1243 1066 // Nonce is checked, get the POST data and sign user on
1244 1067 $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'])));
1068 + $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1069 + $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1247 1070 $info['remember'] = true;
1248 1071 $user_signon = wp_signon($info, false);
1249 1072 $response = array();
1250 1073 if (is_wp_error($user_signon)) {
@@ -1300,9 +1123,9 @@
1300 1123 $order_url = '<a href="' . get_url(get_permalink(get_option('wpcommerce_myaccount_page_id')) . '/view-order/' . $order->ID) . '" target="_blank" >' . $order->ID . '</a>';
1301 1124 }
1302 1125 $order_html .= '<div class="wp-chatbot-orders-single">
1303 1126 <div class="order-id"> ' . $order_url . '</div>
1304 - <div class="order-date"> <p>' . gmdate("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1127 + <div class="order-date"> <p>' . date("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1305 1128 <div class="order-items">';
1306 1129 $singleOrder = new WC_Order($order->ID);
1307 1130 $items = $singleOrder->get_items();
1308 1131 foreach ($items as $item) {
@@ -1402,9 +1225,9 @@
1402 1225 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1403 1226 <div class="wp-chatbot-product-summary">
1404 1227 <div class="wp-chatbot-product-table">
1405 1228 <div class="wp-chatbot-product-table-cell">
1406 - <h3 class="wp-chatbot-product-title">' . esc_html($product->post->post_title) . '</h3>
1229 + <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1407 1230 <div class="price">' . $product->get_price_html() . '</div>';
1408 1231 $html .= ' </div>
1409 1232 </div>
1410 1233 </div></a>
@@ -1473,9 +1296,9 @@
1473 1296 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1474 1297 <div class="wp-chatbot-product-summary">
1475 1298 <div class="wp-chatbot-product-table">
1476 1299 <div class="wp-chatbot-product-table-cell">
1477 - <h3 class="wp-chatbot-product-title">' . esc_html($product->post->post_title) . '</h3>
1300 + <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1478 1301 <div class="price">' . $product->get_price_html() . '</div>';
1479 1302 $html .= ' </div>
1480 1303 </div>
1481 1304 </div></a>
@@ -1649,12 +1472,11 @@
1649 1472 //Updating the cart items.
1650 1473 add_action('wp_ajax_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1651 1474 add_action('wp_ajax_nopriv_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1652 1475 function qcld_wb_chatbot_update_cart_item_number(){
1653 - check_ajax_referer( 'wp_chatbot', 'nonce' );
1654 1476 //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']));
1477 + $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
1478 + $qnty = sanitize_text_field($_POST['qnty']);
1657 1479 global $wpcommerce;
1658 1480 $result = $wpcommerce->cart->set_quantity($cart_item_key, $qnty);
1659 1481 wp_send_json($result);
1660 1482 }
@@ -1661,11 +1483,10 @@
1661 1483 //Show item after removing from cart page.
1662 1484 add_action('wp_ajax_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1663 1485 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1664 1486 function qcld_wb_chatbot_cart_item_remove(){
1665 - check_ajax_referer( 'wp_chatbot', 'nonce' );
1666 1487 //getting cart items n
1667 - $cart_item_key = sanitize_text_field(wp_unslash($_POST['cart_item']));
1488 + $cart_item_key = sanitize_text_field($_POST['cart_item']);
1668 1489 global $wpcommerce;
1669 1490 $result = $wpcommerce->cart->remove_cart_item($cart_item_key);
1670 1491 wp_send_json($result);
1671 1492 }
@@ -1721,9 +1542,9 @@
1721 1542
1722 1543 if(class_exists('Qcformbuilder_Forms_Admin')){
1723 1544
1724 1545
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
1546 + $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM ". $wpdb->prefix."wfb_forms WHERE type= %s",'primary')); //DB Call OK, No Caching OK
1726 1547
1727 1548 if(!empty($results)){
1728 1549
1729 1550 foreach($results as $result){
@@ -1748,10 +1569,10 @@
1748 1569 // function qcld_wb_chatbot_checkout_user_login(){
1749 1570 // // Nonce is checked, get the POST data and sign user on
1750 1571 // $info = array();
1751 1572 // //$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'])));
1573 +// $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1574 +// $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1754 1575 // $info['remember'] = true;
1755 1576 // $user_signon = wp_signon($info, false);
1756 1577 // // $response=$info;
1757 1578 // $response = array();
@@ -1792,16 +1613,15 @@
1792 1613 add_action('init', 'wp_chatbot_create_app_checkout_thankyou_page');
1793 1614 function wp_chatbot_create_app_checkout_thankyou_page(){
1794 1615 if (get_option('wp_chatbot_app_pages') == 1) {
1795 1616 //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() ) {
1617 + if (get_page_by_title('wpwBot Mobile App') == NULL) {
1798 1618 //post status and options
1799 1619 $app_page = array(
1800 1620 'comment_status' => 'closed',
1801 1621 'ping_status' => 'closed',
1802 1622 'post_author' => get_current_user_id(),
1803 - 'post_date' => gmdate('Y-m-d H:i:s'),
1623 + 'post_date' => date('Y-m-d H:i:s'),
1804 1624 'post_status' => 'publish',
1805 1625 'post_title' => 'wpwBot Mobile App',
1806 1626 'post_name' => 'wpwbot-mobile-app',
1807 1627 'post_type' => 'page',
@@ -1811,16 +1631,15 @@
1811 1631 //save the id in the database
1812 1632 update_option('wp_chatbot_app_checkout', $wpwbot_app);
1813 1633 }
1814 1634 //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() ) {
1635 + if (get_page_by_title('wpwBot App Checkout') == NULL) {
1817 1636 //post status and options
1818 1637 $checkout_page = array(
1819 1638 'comment_status' => 'closed',
1820 1639 'ping_status' => 'closed',
1821 1640 'post_author' => get_current_user_id(),
1822 - 'post_date' => gmdate('Y-m-d H:i:s'),
1641 + 'post_date' => date('Y-m-d H:i:s'),
1823 1642 'post_status' => 'publish',
1824 1643 'post_title' => 'wpwBot App Checkout',
1825 1644 'post_name' => 'wpwbot-app-checkout',
1826 1645 'post_type' => 'page',
@@ -1830,16 +1649,15 @@
1830 1649 //save the id in the database
1831 1650 update_option('wp_chatbot_app_checkout', $app_checkout);
1832 1651 }
1833 1652 //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() ) {
1653 + if (get_page_by_title('wpwBot App Order Thank You') == NULL) {
1836 1654 //post status and options
1837 1655 $thankyou_page = array(
1838 1656 'comment_status' => 'closed',
1839 1657 'ping_status' => 'closed',
1840 1658 'post_author' => get_current_user_id(),
1841 - 'post_date' => gmdate('Y-m-d H:i:s'),
1659 + 'post_date' => date('Y-m-d H:i:s'),
1842 1660 'post_status' => 'publish',
1843 1661 'post_title' => 'wpwBot App Order Thank You',
1844 1662 'post_name' => 'wpwbot-app-order-thankyou',
1845 1663 'post_type' => 'page',
@@ -1850,9 +1668,9 @@
1850 1668 update_option('wp_chatbot_app_order_thankyou', $app_order_thankyou);
1851 1669 }
1852 1670 }
1853 1671 //Keep tracking from App by cookies
1854 - if ( isset( $_GET['from'] ) && sanitize_text_field( wp_unslash( $_GET['from'] ) ) === 'app' ) { // phpcs:ignore WordPress.Security.NonceVerification
1672 + if (isset($_GET['from']) && $_GET['from'] == 'app') {
1855 1673 if (!isset($_COOKIE['from_app'])) {
1856 1674 setcookie('from_app', 'yes', (time() + 3600), '/');
1857 1675 }
1858 1676 }
@@ -1866,9 +1684,9 @@
1866 1684 global $wp;
1867 1685 if (is_checkout() && !empty($wp->query_vars['order-received'])) {
1868 1686 $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1869 1687 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1870 - wp_safe_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1688 + wp_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1871 1689 exit;
1872 1690 }
1873 1691 } else {
1874 1692 remove_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase');
@@ -1876,12 +1694,9 @@
1876 1694 }
1877 1695 }
1878 1696
1879 1697 function qcld_choose_random($array){
1880 - if (is_array($array) && !empty($array)) {
1881 - return $array[array_rand($array)];
1882 - }
1883 - return $array;
1698 + return $array[array_rand($array)];
1884 1699 }
1885 1700
1886 1701 //User session count
1887 1702 add_action('wp_ajax_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
@@ -1887,9 +1702,8 @@
1887 1702 add_action('wp_ajax_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1888 1703 add_action('wp_ajax_nopriv_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1889 1704 function qcld_wb_chatbot_session_count(){
1890 1705 // Nonce is checked, get the POST data and sign user on
1891 - check_ajax_referer( 'wp_chatbot', 'nonce' );
1892 1706 global $wpdb;
1893 1707 $wpdb->show_errors = true;
1894 1708 $tableuser = $wpdb->prefix.'wpbot_sessions';
1895 1709 $response = array();
@@ -1894,22 +1708,22 @@
1894 1708 $tableuser = $wpdb->prefix.'wpbot_sessions';
1895 1709 $response = array();
1896 1710
1897 1711
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
1712 + $session_exists = $wpdb->get_row($wpdb->prepare("select * from $tableuser where 1 and id = %d",1)); //DB Call OK, No Caching OK
1899 1713
1900 1714 if(empty($session_exists)){
1901 - $wpdb->insert( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
1715 + $wpdb->insert(
1902 1716 $tableuser,
1903 1717 array(
1904 1718 'session' => 1,
1905 1719 )
1906 - );
1720 + ); //DB Call OK, No Caching OK
1907 1721 }else{
1908 1722
1909 1723 $session_id = $session_exists->id;
1910 1724
1911 - $wpdb->update( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
1725 + $wpdb->update(
1912 1726 $tableuser,
1913 1727 array(
1914 1728 'session'=>($session_exists->session+1),
1915 1729 ),
@@ -1917,9 +1731,9 @@
1917 1731 array(
1918 1732 '%d',
1919 1733 ),
1920 1734 array('%d')
1921 - );
1735 + ); //DB Call OK, No Caching OK
1922 1736
1923 1737 }
1924 1738
1925 1739 wp_send_json($response);
@@ -1927,9 +1741,9 @@
1927 1741
1928 1742 /* WPBot Chat History Addon check */
1929 1743 function qcld_wpbot_is_active_chat_history(){
1930 1744
1931 - if(function_exists('qcwp_chat_session_menu_fnc') || function_exists('qcwp_chat_session_menu_fnc_free') || function_exists( 'qcpdcs_chat_session_menu_fnc' ) ){
1745 + if(function_exists('qcwp_chat_session_menu_fnc') || function_exists( 'qcpdcs_chat_session_menu_fnc' ) ){
1932 1746 return 1;
1933 1747 }else{
1934 1748 return 0;
1935 1749 }
@@ -1944,11 +1758,9 @@
1944 1758 return $data;
1945 1759 }
1946 1760 add_action('wp_ajax_qcld_small_talk_import', 'qcld_small_talk_import');
1947 1761 function qcld_small_talk_import(){
1948 - if ( ! current_user_can( 'manage_options' ) ) {
1949 - wp_die();
1950 - }
1762 +
1951 1763 global $wpdb;
1952 1764
1953 1765 $table = $wpdb->prefix.'wpbot_response';
1954 1766
@@ -1955,10 +1767,9 @@
1955 1767 $csvFile = file(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . 'small_talk.csv');
1956 1768
1957 1769 foreach ($csvFile as $line) {
1958 1770 $line = str_getcsv($line, ',', '"');
1959 - $wpdb->insert( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
1960 - $table, array(
1771 + $wpdb->insert($table, array(
1961 1772 'query' => $line[0],
1962 1773 'keyword' => $line[1],
1963 1774 'response' => $line[2],
1964 1775 'category'=> $line[3],
@@ -1963,17 +1774,16 @@
1963 1774 'response' => $line[2],
1964 1775 'category'=> $line[3],
1965 1776 'intent'=> '',
1966 1777 //'lang'=> 'en_US',
1967 - ));
1778 + )); //DB Call OK, No Caching OK
1968 1779 }
1969 1780
1970 1781 $table2 = $wpdb->prefix.'wpbot_response_category';
1971 1782
1972 - $wpdb->insert( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
1973 - $table2, array(
1783 + $wpdb->insert($table2, array(
1974 1784 'name' => 'smalltalk',
1975 - ));
1785 + )); //DB Call OK, No Caching OK
1976 1786
1977 1787 update_option( 'qcld_small_talk_imported', 'yes' );
1978 1788
1979 1789 }
@@ -1993,35 +1803,5 @@
1993 1803 function qcld_wpbot_meta_tags() {
1994 1804 echo '<!-- "This site uses ChatBot for WordPress - WPBot from https://www.wpbot.pro/" -->';
1995 1805 }
1996 1806 add_action('wp_footer', 'qcld_wpbot_meta_tags', 100);
1997 -
1998 -if ( ! function_exists( 'qcld_change_language_from_center' ) ) {
1999 - add_action( 'wp_ajax_qcld_change_language_from_center', 'qcld_change_language_from_center' );
2000 - add_action( 'wp_ajax_nopriv_qcld_change_language_from_center', 'qcld_change_language_from_center' );
2001 - function qcld_change_language_from_center() {
2002 - if ( ! current_user_can( 'manage_options' ) ) {
2003 - wp_send_json_error( array( 'message' => 'Unauthorized.' ) );
2004 - }
2005 - $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : '';
2006 - if ( ! wp_verify_nonce( $nonce, 'wp_chatbot' ) ) {
2007 - wp_send_json_error( array( 'message' => 'Invalid nonce.' ) );
2008 - }
2009 - $plugin_path = plugin_dir_path( __FILE__ );
2010 - include $plugin_path . 'includes/admin/settings-fields.php';
2011 - $json_file_path = $plugin_path . 'includes/language-center.json';
2012 -
2013 - $json_string = file_get_contents( $json_file_path );
2014 - if ( isset( $_POST['language'] ) ) {
2015 - $language = sanitize_text_field( wp_unslash( $_POST['language'] ) );
2016 - $language_array= json_decode($json_string)->$language;
2017 - update_option( 'wp_chatbot_language_center_language', $language );
2018 - wp_send_json_success( array( 'message' => true, 'data' => $language_array, 'language' => $language ) );
2019 - } else {
2020 - wp_send_json_error( array( 'message' => 'Language not specified.' ) );
2021 -
2022 - }
2023 - }
2024 -}
2025 -
2026 -// AI Actions Chat Preview
2027 1807