PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services / 8.3.1
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services v8.3.1
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 8.5.0 8.4.9 All 531 releases
chatbot / functions.php

functions.php in WPBot – AI ChatBot for Live Support, Lead Generation, AI Services 8.3.1, at functions.php

1,876 lines 99.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @param $type
4 * Display wpwBot Icon ball
5 */
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_attr($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_attr($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 function wp_chatbot_load_footer_html(){
63 if ( get_option('disable_wp_chatbot') != 1 && wp_chatbot_load_controlling() === true) {
64
65 ?>
66 <style>
67 <?php if(get_option('wp_chatbot_custom_css')!="") {
68
69 echo wp_strip_all_tags( get_option('wp_chatbot_custom_css') );
70 }
71 ?>
72 </style>
73
74 <?php if (get_option('qcld_wb_chatbot_change_bg') == 1) {
75 if (get_option('qcld_wb_chatbot_board_bg_path') != "") {
76 $qcld_wb_chatbot_board_bg_path = get_option('qcld_wb_chatbot_board_bg_path');
77 } else {
78 $qcld_wb_chatbot_board_bg_path = QCLD_wpCHATBOT_IMG_URL . 'background/background.png';
79 }
80 ?>
81 <style>
82 .wp-chatbot-container {
83 background-image: url(<?php echo esc_url($qcld_wb_chatbot_board_bg_path); ?>) !important;
84 }
85 </style>
86 <?php }
87 $wp_chatbot_enable_rtl = "";
88 if (get_option('enable_wp_chatbot_rtl') == '1') {
89 $wp_chatbot_enable_rtl .= "wp-chatbot-rtl";
90 }
91 $wp_chatbot_enable_mobile_screen = "";
92 // if (get_option('enable_wp_chatbot_mobile_full_screen')==1) {
93 $wp_chatbot_enable_mobile_screen .= "wp-chatbot-mobile-full-screen";
94 // }
95 ?>
96 <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';} ?>">
97 <div id="wp-chatbot-integration-container">
98 <div class="wp-chatbot-integration-button-container">
99 <?php if (get_option('enable_wp_chatbot_skype_floating_icon') == 1) { ?>
100 <a href="skype:<?php echo esc_attr(get_option('enable_wp_chatbot_skype_id')); ?>?chat"><span
101 class="inetegration-skype-btn" title="<?php esc_attr_e('Skype', 'chatbot'); ?>"> </span></a>
102 <?php } ?>
103 <?php if (get_option('enable_wp_chatbot_floating_whats') == 1) { ?>
104 <a href="<?php echo esc_url('https://api.whatsapp.com/send?phone=' . get_option('qlcd_wp_chatbot_whats_num')); ?>"
105 target="_blank"><span class="intergration-whats"
106 title="<?php esc_html_e('WhatsApp', 'chatbot'); ?>"></span></a>
107 <?php } ?>
108 <?php if (get_option('enable_wp_chatbot_floating_viber') == 1) { ?>
109 <a href="<?php echo esc_url('https://live.viber.com/#/' . get_option('qlcd_wp_chatbot_viber_acc')); ?>"
110 target="_blank"><span class="intergration-viber"
111 title="<?php esc_html_e('Viber', 'chatbot'); ?>"></span></a>
112 <?php } ?>
113 <?php if (get_option('enable_wp_chatbot_floating_phone') == 1 && get_option('qlcd_wp_chatbot_phone') != "") { ?>
114 <a href="tel:<?php echo esc_attr(get_option('qlcd_wp_chatbot_phone')); ?>"><span
115 class="intergration-phone"
116 title="<?php esc_html_e('Phone', 'chatbot'); ?>"> </span></a>
117 <?php } ?>
118 <?php if (get_option('enable_wp_chatbot_floating_link') == 1 && get_option('qlcd_wp_chatbot_weblink') != "") { ?>
119 <a href="<?php echo esc_url(get_option('qlcd_wp_chatbot_weblink')); ?>" target="_blank"><span
120 class="intergration-weblink" title="<?php esc_html_e('Web Link', 'chatbot'); ?>"></span></a>
121 <?php } ?>
122 </div>
123 </div>
124 <?php
125 //Get wpcommerce cart
126
127 $qcld_wb_chatbot_theme = get_option('qcld_wb_chatbot_theme');
128 if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/style.css')) {
129 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');
130 wp_enqueue_style('qcld-wp-chatbot-style');
131 }
132 if (file_exists(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php')) {
133 require_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . '/templates/' . $qcld_wb_chatbot_theme . '/template.php');
134 } else {
135 echo "<h2>" . esc_html__('No wpWBot Theme Found!', 'chatbot') . "</h2>";
136 }
137 ?>
138 <?php
139 if (get_option('disable_wp_chatbot_notification') != 1) {
140 ?>
141 <div id="wp-chatbot-notification-container" class="wp-chatbot-notification-container">
142 <div class="wp-chatbot-notification-controller">
143 <span class="wp-chatbot-notification-close">
144 <?php esc_html_e('X', 'chatbot'); ?>
145 </span>
146 </div>
147 <?php
148 $testingTip="";
149 if (get_option('wp_chatbot_agent_image') == "custom-agent.png") {
150 $wp_chatbot_custom_agent_path = get_option('wp_chatbot_custom_agent_path');
151 } else if (get_option('wp_chatbot_agent_image') != "custom-agent.png") {
152 $wp_chatbot_custom_agent_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
153 } else {
154 $wp_chatbot_custom_agent_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
155 }
156 ?>
157 <div class="wp-chatbot-notification-agent-profile">
158 <div class="wp-chatbot-notification-widget-avatar" ><img
159 src="<?php echo esc_attr($wp_chatbot_custom_agent_path); ?>" alt=""></div>
160 <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>
161 </div>
162 <?php
163 //update_option('qlcd_wp_chatbot_notifications','Welcome to WpBot');
164 $notifications = qcld_wb_chatbot_func_str_replace(wp_kses_post(maybe_unserialize(get_option('qlcd_wp_chatbot_notifications'))));
165
166 ?>
167
168 <div class="wp-chatbot-notification-message"><?php echo esc_html($notifications[0]); ?></div>
169 </div>
170 <?php } ?>
171 <!--wp-chatbot-board-container-->
172 <div id="wp-chatbot-ball" class="">
173 <div class="wp-chatbot-ball">
174 <div class="wp-chatbot-ball-animator wp-chatbot-ball-animation-switch"></div>
175 <?php
176 if (get_option('wp_chatbot_icon') == "custom.png") {
177 $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';
178
179 } else if (get_option('wp_chatbot_icon') != "custom.png") {
180 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_icon');
181 } else {
182 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom.png';
183 }
184 ?>
185 <img src="<?php echo esc_url($wp_chatbot_custom_icon_path); ?>"
186 alt="wpChatIcon" qcld_agent="<?php echo esc_url($wp_chatbot_custom_icon_path); ?>" >
187
188 </div>
189 </div>
190 <?php
191 $fb_app_id = get_option('qlcd_wp_chatbot_fb_app_id');
192 $fb_page_id = get_option('qlcd_wp_chatbot_fb_page_id');
193 $fb_mgs_color = get_option('qlcd_wp_chatbot_fb_color') != '' ? get_option('qlcd_wp_chatbot_fb_color') : '#0084ff';
194 $fb_mgs_in = get_option('qlcd_wp_chatbot_fb_in_msg') != '' ? get_option('qlcd_wp_chatbot_fb_in_msg') : 'You are welcome';
195 $fb_mgs_out = get_option('qlcd_wp_chatbot_fb_out_msg') != '' ? get_option('qlcd_wp_chatbot_fb_out_msg') : 'You are not logged in';
196 if (get_option('enable_wp_chatbot_messenger') == 1 && get_option('enable_wp_chatbot_messenger_floating_icon') == 1) {
197 ?>
198 <!-- wp-chatbot-board-container-->
199 <script>
200
201 window.fbAsyncInit = function () {
202 FB.init({
203 appId: '<?php echo esc_js($fb_app_id); ?>',
204 autoLogAppEvents: true,
205 xfbml: true,
206 version: 'v2.12'
207 });
208 };
209
210 (function (d, s, id) {
211 var js, fjs = d.getElementsByTagName(s)[0];
212 if (d.getElementById(id)) return;
213 js = d.createElement(s);
214 js.id = id;
215 js.src = 'https://connect.facebook.net/en_US/sdk.js';
216 fjs.parentNode.insertBefore(js, fjs);
217 }(document, 'script', 'facebook-jssdk'));
218 </script>
219 <div class="fb-customerchat"
220 page_id="<?php echo esc_attr($fb_page_id); ?>"
221 greeting_dialog_display="hide"
222 theme_color="<?php echo esc_attr($fb_mgs_color); ?>"
223 logged_in_greeting="<?php echo esc_attr($fb_mgs_in); ?>"
224 logged_out_greeting="<?php echo esc_attr($fb_mgs_out); ?>"></div>
225 <?php
226 }
227 ?>
228 <!--container-->
229 <!--wp-chatbot-ball-wrapper-->
230 </div>
231
232 <?php
233
234 if ( get_transient( 'qcld_bot_clear_cache' ) ) {
235 echo '<script type="text/javascript">var wpbot_clear_cache = 1 </script>';
236 delete_transient( 'qcld_bot_clear_cache' );
237 }
238
239 }else{
240 ?>
241 <script>
242 var openingHourIsFn = 1;
243 </script>
244 <?php
245 }
246 }
247 //wp_chatbot load control handler.
248 function wp_chatbot_load_controlling(){
249 $wp_chatbot_load = true;
250
251
252 if (get_option('wp_chatbot_show_pages') == 'off') {
253 $wp_chatbot_select_pages = unserialize(get_option('wp_chatbot_show_pages_list'));
254 if (is_page() && !empty($wp_chatbot_select_pages)) {
255
256 if (in_array(get_the_ID(), $wp_chatbot_select_pages) == true) {
257
258 $wp_chatbot_load = true;
259 } else {
260 $wp_chatbot_load = false;
261 }
262
263 }
264
265 if(function_exists('is_shop')){
266 if (is_shop() || is_cart() || is_checkout() || 'product' == get_post_type()) {
267 $wp_chatbot_load = false;
268 }
269 }
270
271 }
272 if (get_option('wp_chatbot_show_wpcommerce') == 'off') {
273
274 }
275 //load wpwbot shortcode template and prevent default wpwbot from footer.
276 if (is_page()) {
277 $page_id = get_the_ID();
278 $page = get_post($page_id);
279 if (has_shortcode($page->post_content, 'wpwbot')) {
280 $wp_chatbot_load = false;
281 }
282 }
283
284 $post_list = maybe_unserialize(get_option('wp_chatbot_exclude_post_list'));
285
286 if( is_array( $post_list ) && in_array(get_post_type(), $post_list)){
287 $wp_chatbot_load = false;
288 }
289 if (wp_chatbot_is_mobile() && get_option('disable_wp_chatbot_on_mobile') == 1) {
290 $wp_chatbot_load = false;
291 }
292
293 if (get_option('wp_chatbot_show_home_page') == 'off' && is_home()) {
294 $wp_chatbot_load = false;
295 }
296
297 if (get_option('wp_chatbot_show_posts') == 'off' && 'post' == get_post_type()) {
298 $wp_chatbot_load = false;
299 }
300
301 if(is_admin()){
302 $wp_chatbot_load = false;
303 }
304 return $wp_chatbot_load;
305 }
306 //checking Devices
307 function wp_chatbot_is_mobile(){
308 $useragent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
309 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))) {
310 return true;
311 } else {
312 return false;
313 }
314 }
315 //Checking wpwbot opening hour
316 function wp_chatbot_check_opening_hours(){
317 $curent_day=strtolower(gmdate('l',strtotime(current_time( 'mysql' ))));
318 $current_time=gmdate('H:i',strtotime(current_time( 'mysql')));
319 $is_wpwbot_open =false;
320 if(get_option('wpwbot_hours')) {
321 $wpwbot_times = wp_kses_post(unserialize(get_option('wpwbot_hours')));
322 if (isset($wpwbot_times[$curent_day])) {
323 $day_times = $wpwbot_times[$curent_day];
324 if (!empty($day_times)) {
325 foreach ($day_times as $day_time) {
326 if(strtotime($current_time) > strtotime($day_time[0]) && strtotime($current_time) < strtotime($day_time[1]) ){
327 $is_wpwbot_open=true;
328 }
329 }
330 }
331 }
332 }
333 return $is_wpwbot_open;
334 }
335
336 /**
337 * wpwBot Search keyword product
338 */
339 add_action('wp_ajax_qcld_wb_chatbot_keyword', 'qcld_wb_chatbot_keyword');
340 add_action('wp_ajax_nopriv_qcld_wb_chatbot_keyword', 'qcld_wb_chatbot_keyword');
341 function qcld_wb_chatbot_keyword(){
342 $keyword = sanitize_text_field(wp_unslash($_POST['keyword']));
343 $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
344 if (get_option('qlcd_wp_chatbot_search_option') == 'standard') {
345 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
346 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
347 //Merging all query together.
348 $argu_params = array(
349 'post_type' => 'product',
350 'post_status' => 'publish',
351 'posts_per_page' => $product_per_page,
352 'orderby' => $product_orderby,
353 'order' => $product_order,
354 's' => $keyword,
355 );
356 /******
357 *WP Query Operation to get products.*
358 *******/
359 $product_query = new WP_Query($argu_params);
360 $product_num = $product_query->post_count;
361 //Getting total product number by string.
362 $total_argu = array('post_type' => 'product', 's' => $keyword, 'posts_per_page' => 100);
363 $total_query = new WP_Query($total_argu);
364 $total_product_num = $total_query->post_count;
365 $html = '<div class="wp-chatbot-products-area">';
366 $_pf = new WC_Product_Factory();
367 //repeating the products
368 if ($product_num > 0) {
369 $html .= '<ul class="wp-chatbot-products">';
370 while ($product_query->have_posts()) : $product_query->the_post();
371 $product = $_pf->get_product(get_the_ID());
372 if (wp_chatbot_product_controlling(get_the_ID()) == true) {
373 $html .= '<li class="wp-chatbot-product">';
374 $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" wp-chatbot-pid= "' . get_the_ID() . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '">';
375 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
376 <div class="wp-chatbot-product-summary">
377 <div class="wp-chatbot-product-table">
378 <div class="wp-chatbot-product-table-cell">
379 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
380 <div class="price">' . $product->get_price_html() . '</div>';
381 $html .= ' </div>
382 </div>
383 </div></a>
384 </li>';
385 }
386 endwhile;
387 wp_reset_postdata();
388 $html .= '</ul>';
389 if ($total_product_num > $product_per_page && $product_per_page > 0 ) {
390 $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>';
391 }
392 }
393 $html .= '</div>';
394 } else if (get_option('qlcd_wp_chatbot_search_option') == 'advanced') {
395 $result = wpwBot_Search::factory()->search($keyword);
396 $products = $result['products'];
397 $product_num = count($result['products']);
398 $total_product_num = $result['total_products'];
399 $more_product_ids = implode(",", $result['more_ids']);
400 $html = '<div class="wp-chatbot-products-area">';
401 $_pf = new WC_Product_Factory();
402 //repeating the products
403 if ($product_num > 0) {
404 $html .= '<ul class="wp-chatbot-products">';
405 foreach ($products as $product) {
406 if (wp_chatbot_product_controlling($product->get_id()) == true) {
407 $html .= '<li class="wp-chatbot-product">';
408 $html .= '<a target="_blank" href="' . get_permalink($product->get_id()) . '" wp-chatbot-pid= "' . $product->get_id() . '" title="' . esc_attr($product->get_title()) . '">';
409 $html .= get_the_post_thumbnail($product->get_id(), 'shop_catalog') . '
410 <div class="wp-chatbot-product-summary">
411 <div class="wp-chatbot-product-table">
412 <div class="wp-chatbot-product-table-cell">
413 <h3 class="wp-chatbot-product-title">' . $product->get_title() . '</h3>
414 <div class="price">' . $product->get_price_html() . '</div>';
415 $html .= ' </div></div></div></a></li>';
416 }
417 }
418 $html .= '</ul>';
419 if ($total_product_num > $product_per_page && $product_per_page > 0) {
420 $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>';
421 }
422 }
423 $html .= '</div>';
424 }
425 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
426 wp_send_json($response);
427
428 }
429 /**
430 * wpwBot Categories
431 */
432 add_action('wp_ajax_qcld_wb_chatbot_category', 'qcld_wb_chatbot_category');
433 add_action('wp_ajax_nopriv_qcld_wb_chatbot_category', 'qcld_wb_chatbot_category');
434 function qcld_wb_chatbot_category(){
435 $category_type="common";
436 if (get_option('wp_chatbot_show_parent_category') != "") {
437 $terms = get_terms( array( 'taxonomy' => 'product_cat', 'parent' => 0, 'hide_empty' => true, 'fields' => 'all' ) );
438 } else {
439 $terms = get_terms( array( 'taxonomy' => 'product_cat', 'hide_empty' => true, 'fields' => 'all' ) );
440 }
441 $html = "";
442 foreach ($terms as $term) {
443 $child_terms=get_terms( array( 'taxonomy' => 'product_cat', 'parent' => $term->term_id, 'hide_empty' => true, 'fields' => 'all' ) );
444 if(get_option('wp_chatbot_show_sub_category')==1 && count($child_terms) >0){
445 $category_type="hasChilds";
446 }
447 $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>';
448 }
449 wp_send_json($html);
450
451 }
452 /**
453 * wpwBot Sub categories
454 */
455 add_action('wp_ajax_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
456 add_action('wp_ajax_nopriv_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
457 function qcld_wb_chatbot_sub_category(){
458 $parent_id = intval( wp_unslash( $_POST['parent_id'] ) );
459 $terms = get_terms( array( 'taxonomy' => 'product_cat', 'parent' => $parent_id, 'hide_empty' => true, 'fields' => 'all' ) );
460 $html = "";
461 foreach ($terms as $term) {
462 $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>';
463 }
464 wp_send_json($html);
465
466 }
467 /**
468 * wpwBot category product
469 */
470 add_action('wp_ajax_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
471 add_action('wp_ajax_nopriv_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
472 function qcld_wb_chatbot_category_products(){
473 $category_id = intval( wp_unslash( $_POST['category'] ) );
474 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
475 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
476 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
477 //Merging all query together.
478 $argu_params = array(
479 'post_type' => 'product',
480 'post_status' => 'publish',
481 'ignore_sticky_posts' => 1,
482 'orderby' => $product_orderby,
483 'order' => $product_order,
484 'posts_per_page' => $product_per_page,
485 'tax_query' => array(
486 array(
487 'taxonomy' => 'product_cat',
488 'field' => 'term_id',
489 'terms' => $category_id,
490 'operator' => 'IN'
491 )
492 )
493 );
494 /******
495 *WP Query Operation to get products.*
496 *******/
497 $product_query = new WP_Query($argu_params);
498 $product_num = $product_query->post_count;
499 //Getting total product number by string.
500 $total_argu = array(
501 'post_type' => 'product',
502 'post_status' => 'publish',
503 'posts_per_page' => 100,
504 'tax_query' => array(
505 array(
506 'taxonomy' => 'product_cat',
507 'field' => 'term_id',
508 'terms' => $category_id,
509 'operator' => 'IN'
510 )
511 )
512 );
513 $total_query = new WP_Query($total_argu);
514 $total_product_num = $total_query->post_count;
515 $_pf = new WC_Product_Factory();
516 //repeating the products
517 $html = '';
518 if ($product_num > 0) {
519 $html .= '<div class="wp-chatbot-products-area">';
520 $html .= '<ul class="wp-chatbot-products">';
521 while ($product_query->have_posts()) : $product_query->the_post();
522 $product = $_pf->get_product(get_the_ID());
523 //$qcld_thumb = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'shop_thumbnail' );
524 $html .= '<li class="wp-chatbot-product">';
525 $html .= '<a class="wp-chatbot-product-url" wp-chatbot-pid= "' . get_the_ID() . '" target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->get_title() ? $product->get_title() : get_the_ID()) . '">';
526 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
527 <div class="wp-chatbot-product-summary">
528 <div class="wp-chatbot-product-table">
529 <div class="wp-chatbot-product-table-cell">
530 <h3 class="wp-chatbot-product-title">' . $product->get_title() . '</h3>
531 <div class="price">' . $product->get_price_html() . '</div>';
532 $html .= ' </div>
533 </div>
534 </div></a>
535 </li>';
536 endwhile;
537 wp_reset_postdata();
538 $html .= '</ul>';
539 if ($total_product_num > $product_per_page && $product_per_page >0) {
540 $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>';
541 }
542 $html .= '</div>';
543 } else {
544 $html = '';
545 }
546 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
547 wp_send_json($response);
548 }
549 /**
550 * wpwBot latest, featured, recent product
551 */
552 add_action('wp_ajax_qcld_wb_chatbot_featured_products', 'qcld_wb_chatbot_featured_products');
553 add_action('wp_ajax_nopriv_qcld_wb_chatbot_featured_products', 'qcld_wb_chatbot_featured_products');
554 function qcld_wb_chatbot_featured_products(){
555 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
556 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
557 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
558 //get featured products query.
559 $argu_params = array('post_status' => 'publish',
560 'posts_per_page' => $product_per_page,
561 'post_type' => 'product',
562 'post_status' => 'publish',
563 'tax_query' => array(array('taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured'))
564 );
565 /******
566 *WP Query Operation to get products.*
567 *******/
568 $product_query = new WP_Query($argu_params);
569 $product_num = $product_query->post_count;
570 //Getting total product number by string.
571 $total_argu = array('post_status' => 'publish',
572 'posts_per_page' => 100,
573 'post_type' => 'product',
574 'post_status' => 'publish',
575 'tax_query' => array(array('taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured',),)
576 );
577 $total_query = new WP_Query($total_argu);
578 $total_product_num = $total_query->post_count;
579 $html = '<div class="wp-chatbot-products-area">';
580 $_pf = new WC_Product_Factory();
581 //repeating the products
582 if ($product_num > 0) {
583 //$html .= '<p>sdf sdfdsf : '.$asdfdf.'</p>';
584 $html .= '<ul class="wp-chatbot-products">';
585 while ($product_query->have_posts()) : $product_query->the_post();
586 $product = $_pf->get_product(get_the_ID());
587 $html .= '<li class="wp-chatbot-product">';
588 $html .= '<a class="wp-chatbot-product-url" wp-chatbot-pid= "' . get_the_ID() . '" target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->get_title() ? $product->get_title() : get_the_ID()) . '">';
589 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
590 <div class="wp-chatbot-product-summary">
591 <div class="wp-chatbot-product-table">
592 <div class="wp-chatbot-product-table-cell">
593 <h3 class="wp-chatbot-product-title">' . $product->get_title() . '</h3>
594 <div class="price">' . $product->get_price_html() . '</div>';
595 $html .= ' </div>
596 </div>
597 </div></a>
598 </li>';
599 endwhile;
600 wp_reset_postdata();
601 $html .= '</ul>';
602 if ($total_product_num > $product_per_page) {
603 $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>';
604 }
605 }
606 $html .= '</div>';
607 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
608 wp_send_json($response);
609 }
610 //Product display controll
611 function wp_chatbot_product_controlling($product_id){
612 $display_product = true;
613 //Controlling Out of Stock product display from back end.
614 $_pf = new WC_Product_Factory();
615 $product = $_pf->get_product($product_id);
616 if ($product->manage_stock == 'yes' && $product->stock_quantity <= 0 && get_option('wp_chatbot_exclude_stock_out_product') == 1) {
617 $display_product = false;
618 }
619 return $display_product;
620 }
621 //Get Sale products
622 add_action('wp_ajax_qcld_wb_chatbot_sale_products', 'qcld_wb_chatbot_sale_products');
623 add_action('wp_ajax_nopriv_qcld_wb_chatbot_sale_products', 'qcld_wb_chatbot_sale_products');
624 function qcld_wb_chatbot_sale_products(){
625 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
626 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
627 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
628 //get sale products query.
629 $argu_params = array(
630 'post_type' => 'product',
631 'post_status' => 'publish',
632 'posts_per_page' => $product_per_page,
633 'meta_query' => array(
634 'relation' => 'OR',
635 array( // Simple products type
636 'key' => '_sale_price',
637 'value' => 0,
638 'compare' => '>',
639 'type' => 'numeric'
640 ),
641 array( // Variable products type
642 'key' => '_min_variation_sale_price',
643 'value' => 0,
644 'compare' => '>',
645 'type' => 'numeric'
646 )
647 )
648 );
649 /******
650 *WP Query Operation to get products.*
651 *******/
652 $product_query = new WP_Query($argu_params);
653 $product_num = $product_query->post_count;
654 //Getting total product number by string.
655 $total_argu = array(
656 'post_type' => 'product',
657 'post_status' => 'publish',
658 'posts_per_page' => 100,
659 'meta_query' => array(
660 'relation' => 'OR',
661 array( // Simple products type
662 'key' => '_sale_price',
663 'value' => 0,
664 'compare' => '>',
665 'type' => 'numeric'
666 ),
667 array( // Variable products type
668 'key' => '_min_variation_sale_price',
669 'value' => 0,
670 'compare' => '>',
671 'type' => 'numeric'
672 )
673 )
674 );
675 $total_query = new WP_Query($total_argu);
676 $total_product_num = $total_query->post_count;
677 $html = '<div class="wp-chatbot-products-area">';
678 $_pf = new WC_Product_Factory();
679 //repeating the products
680 if ($product_num > 0) {
681 //$html .= '<p>sdf sdfdsf : '.$asdfdf.'</p>';
682 $html .= '<ul class="wp-chatbot-products">';
683 while ($product_query->have_posts()) : $product_query->the_post();
684 $product = $_pf->get_product(get_the_ID());
685 $html .= '<li class="wp-chatbot-product">';
686 $html .= '<a class="wp-chatbot-product-url" wp-chatbot-pid= "' . get_the_ID() . '" target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->get_title() ? $product->get_title() : get_the_ID()) . '">';
687 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
688 <div class="wp-chatbot-product-summary">
689 <div class="wp-chatbot-product-table">
690 <div class="wp-chatbot-product-table-cell">
691 <h3 class="wp-chatbot-product-title">' . $product->get_title() . '</h3>
692 <div class="price">' . $product->get_price_html() . '</div>';
693 $html .= ' </div>
694 </div>
695 </div></a>
696 </li>';
697 endwhile;
698 wp_reset_postdata();
699 $html .= '</ul>';
700 if ($total_product_num > $product_per_page) {
701 $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>';
702 }
703 }
704 $html .= '</div>';
705 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
706 wp_send_json($response);
707 }
708 //load more
709 add_action('wp_ajax_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
710 add_action('wp_ajax_nopriv_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
711 function qcld_wb_chatbot_load_more(){
712 $offset = intval( wp_unslash( $_POST['offset'] ) );
713 $search_type = sanitize_text_field( wp_unslash( $_POST['search_type'] ) );
714 $search_term = sanitize_text_field( wp_unslash( $_POST['search_term'] ) );
715 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
716 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
717 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
718 $next_offset = intval($product_per_page + $offset);
719 if ($search_type == 'product' && $search_term != 'featured' && $search_term != 'sale' && get_option('qlcd_wp_chatbot_search_option') == 'advanced') {
720 //if have multiple ids then explode else have single need to array push
721 if (strpos($search_term, ',') !== false) {
722 $product_ids = explode(',', $search_term);
723 } else {
724 $product_ids = array($search_term);
725 }
726 $result = wpwBot_Search::factory()->get_load_more_products($product_ids);
727 $products = $result['products'];
728 $product_num = count($result['products']);
729 $total_product_num = $result['total_products'];
730 $more_product_ids = implode(",", $result['more_ids']);
731 $_pf = new WC_Product_Factory();
732 //repeating the products
733 $html = '';
734 if ($product_num > 0) {
735 foreach ($products as $product) {
736 $html .= '<li class="wp-chatbot-product">';
737 $html .= '<a target="_blank" href="' . get_permalink($product->get_id()) . '" wp-chatbot-pid= "' . $product->get_id() . '" title="' . esc_attr($product->get_title()) . '">';
738 $html .= get_the_post_thumbnail($product->get_id(), 'shop_catalog') . '
739 <div class="wp-chatbot-product-summary">
740 <div class="wp-chatbot-product-table">
741 <div class="wp-chatbot-product-table-cell">
742 <h3 class="wp-chatbot-product-title">' . $product->get_title() . '</h3>
743 <div class="price">' . $product->get_price_html() . '</div>';
744 $html .= ' </div></div></div></a></li>';
745 }
746 }
747 $response = array('html' => $html, 'product_num' => $total_product_num, 'search_term' => $more_product_ids, 'offset' => $next_offset, 'per_page' => $product_per_page);
748 } else {
749 if ($search_type == 'product' && $search_term != 'featured' && $search_term != 'sale') { //For Standard search
750 $argu_params = array(
751 'post_type' => 'product',
752 'post_status' => 'publish',
753 'posts_per_page' => $product_per_page,
754 'offset' => $offset,
755 'orderby' => $product_orderby,
756 'order' => $product_order,
757 's' => $search_term,
758 );
759 } else if ($search_type == 'category') {
760 $argu_params = array(
761 'post_type' => 'product',
762 'post_status' => 'publish',
763 'ignore_sticky_posts' => 1,
764 'posts_per_page' => $product_per_page,
765 'orderby' => $product_orderby,
766 'order' => $product_order,
767 'offset' => $offset,
768 'tax_query' => array(
769 array(
770 'taxonomy' => 'product_cat',
771 'field' => 'term_id',
772 'terms' => $search_term,
773 'operator' => 'IN'
774 )
775 )
776 );
777 } else if ($search_type == 'product' && $search_term == 'featured') {
778 $argu_params = array(
779 'post_type' => 'product',
780 'post_status' => 'publish',
781 'ignore_sticky_posts' => 1,
782 'posts_per_page' => $product_per_page,
783 'orderby' => $product_orderby,
784 'order' => $product_order,
785 'offset' => $offset,
786 'meta_query' => array('key' => '_featured', 'value' => 'yes')
787 );
788 } else if ($search_type == 'product' && $search_term == 'sale') {
789 $argu_params = array(
790 'post_type' => 'product',
791 'post_status' => 'publish',
792 'ignore_sticky_posts' => 1,
793 'posts_per_page' => $product_per_page,
794 'orderby' => $product_orderby,
795 'order' => $product_order,
796 'offset' => $offset,
797 'meta_query' => array(
798 'relation' => 'OR',
799 array( // Simple products type
800 'key' => '_sale_price',
801 'value' => 0,
802 'compare' => '>',
803 'type' => 'numeric'
804 ),
805 array( // Variable products type
806 'key' => '_min_variation_sale_price',
807 'value' => 0,
808 'compare' => '>',
809 'type' => 'numeric'
810 )
811 )
812 );
813 }
814 $product_query = new WP_Query($argu_params);
815 $product_num = $product_query->post_count;
816 $_pf = new WC_Product_Factory();
817 //repeating the products
818 $html = '';
819 if ($product_num > 0) {
820 while ($product_query->have_posts()) : $product_query->the_post();
821 $product = $_pf->get_product(get_the_ID());
822 $html .= '<li class="wp-chatbot-product">';
823 $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" wp-chatbot-pid= "' . get_the_ID() . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '">';
824 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
825 <div class="wp-chatbot-product-summary">
826 <div class="wp-chatbot-product-table">
827 <div class="wp-chatbot-product-table-cell">
828 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
829 <div class="price">' . $product->get_price_html() . '</div>';
830 $html .= ' </div>
831 </div>
832 </div></a>
833 </li>';
834 endwhile;
835 wp_reset_postdata();
836 } else {
837 $html .= '';
838 }
839 $response = array('html' => $html, 'product_num' => $product_num, 'search_term' => $search_term, 'offset' => $next_offset, 'per_page' => $product_per_page);
840 }
841 wp_send_json($response);
842 }
843 //product details
844 add_action('wp_ajax_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
845 add_action('wp_ajax_nopriv_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
846 function qcld_wb_chatbot_product_details(){
847 $product_id = intval( wp_unslash( $_POST['wp_chatbot_pid'] ) );
848 //Tracking product view from chat board
849 wp_chatbot_view_track_product_by_id($product_id);
850 //wpcommerce product factory
851 $wc_pf = new WC_Product_Factory();
852 $product = $wc_pf->get_product($product_id);
853 $product_type = $wc_pf->get_product_type($product_id);
854 $product_title = '<h2 id="wp-chatbot-product-title" ><a target="_blank" href="' . get_permalink($product->get_id()) . '">' . $product->get_title() . '</a></h2>';
855 $product_desc = apply_filters('the_excerpt', $product->post->post_excerpt);//$product->post->post_excerpt;
856 $gallery_ids = $product->get_gallery_image_ids();
857 //images processing..
858 $product_feature_image_id = get_post_thumbnail_id($product_id);
859 $product_feature_image = wp_get_attachment_image_src($product_feature_image_id, 'full');
860 $product_feature_thumb = wp_get_attachment_image_src($product_feature_image_id, 'shop_thumbnail');
861 //$full_img_src = $product_feature_image[0];
862 //$product_image = '<img style="width:500px;height:300px" src="' . $full_img_src . '" >';
863 $product_image = '<div class="wp-chatbot-product-image-large">
864 <a href="' . $product_feature_image[0] . '" id="wp-chatbot-product-image-large-path"><img id="wp-chatbot-product-image-large-src" src="' . $product_feature_image[0] . '" alt="Large Image" title="Zoom Image" /></a>
865 </div>';
866 $product_image .= '<div class="wp-chatbot-product-image-thumbs"><ul>
867 <li class="wp-chatbot-product-active-image-thumbs"><a href="' . $product_feature_image[0] . '" class="wp-chatbot-product-image-thumbs-path"><img class="wp-chatbot-product-image-thumbs-src" src="' . $product_feature_thumb[0] . '" alt="Thumb Image" /></a></li>';
868 if (!empty($gallery_ids)) {
869 foreach ($gallery_ids as $gallery_id) {
870 $gallery_image = wp_get_attachment_image_src($gallery_id, 'full');
871 $gallery_thumb = wp_get_attachment_image_src($gallery_id, 'shop_thumbnail');
872 $product_image .= '<li><a href="' . $gallery_image[0] . '" class="wp-chatbot-product-image-thumbs-path"><img class="wp-chatbot-product-image-thumbs-src" src="' . $gallery_thumb[0] . '" alt="Thumb Image" /></a></li>';
873 }
874 }
875 $product_image .= '</ul></div>';
876 $product_price = '<p class="wp-chatbot-product-price" id="wp-chatbot-product-price">' . $product->get_price_html() . '</p>';
877 $product_sku = '<p class="wp-chatbot-product-sku"> ' . __('SKU', 'chatbot') . ' : ' . $product->get_sku() . '</p>';
878 //if ( $product->is_in_stock() || $product->is_purchasable() )
879 //Handle variable product start
880 $variations = "";
881 $add_cart_button = "";
882 $product_quantity = "";
883 if ($product->is_in_stock()) {
884 if ($product_type == "variable") {
885 //Getting product variation number based details
886 $variations_data = array();
887 foreach ($product->get_children() as $child_id) {
888 $all_cfs = get_post_custom($child_id);
889 array_push($variations_data, array('variation_id' => $child_id, 'variation_data' => $all_cfs));
890 }
891 $variations_data = json_encode($variations_data);
892 $attributes = $product->get_attributes();
893 //Handling Variant & Non Variant products
894 $var_attrs = $product->get_variation_attributes();
895 $varation_names = array();
896 if (!empty($var_attrs)) {
897 foreach ($var_attrs as $key => $value) {
898 array_push($varation_names, $key);
899 }
900 }
901 $debug = $varation_names;
902 foreach ($attributes as $attribute) {
903 /*if (empty($attribute['is_visible']) || ($attribute['is_taxonomy'] && !taxonomy_exists($attribute['name']))) {
904 continue;
905 }*/
906 $title = wc_attribute_label($attribute['name']);
907 $name = $attribute['name'];
908 if ($attribute['is_taxonomy']) {
909 $values = wc_get_product_terms($product->get_id(), $attribute['name'], array('fields' => 'slugs'));
910 } else {
911 $values = array_map('trim', explode(WC_DELIMITER, $attribute['value']));
912 }
913 natsort($values);
914 if (!in_array($name, $varation_names)) {
915 $variations .= '<p><label for="' . sanitize_title($name) . '">' . $title . '</label> ' . ucfirst(implode(",", $values)) . '</p>';
916 } else {
917 $variations .= '<div class="wp-chatbot-variable-' . sanitize_title($name) . '">';
918 $variations .= '<label for="' . sanitize_title($name) . '">' . $title . '</label>';
919 $variations .= '<select id="' . esc_attr(sanitize_title($name)) . '" name="attribute_' . sanitize_title($name) . '" data-attribute_name="attribute_' . sanitize_title($name) . '" class="each_attribute">';
920 $variations .= '<option value="">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_choose_option')))) . '</option>';
921 foreach ($values as $value) {
922 $attr_key = 'attribute_' . sanitize_title( $name );
923 if ( isset( $_REQUEST[ $attr_key ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
924 $selected_value = sanitize_text_field( wp_unslash( $_REQUEST[ $attr_key ] ) );
925 } else {
926 $selected_value = '';
927 }
928 $variations .= '<option value="' . esc_attr(strtolower($value)) . '"' . selected($selected_value, $value, false) . '>' . apply_filters('wpcommerce_variation_option_name', $value) . '</option>';
929 }
930 $variations .= '</select></div>';
931 }
932 }
933 $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="" />';
934 $add_cart_button .= "<input type='hidden' id='wp-chatbot-variation-data' data-product-variation='" . $variations_data . "' />";
935 } else {
936 $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')))) . '" />';
937 }
938 //Handle variable product end.
939 $product_quantity .= '<label for="">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_quantity')))) . '</label>
940 <input type="number" id="vPQuantity" value="1" />';
941 }
942 //$response=$full_size_image;
943 $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);
944 wp_send_json($response);
945 }
946 //Add to cart for variable product.
947 add_action('wp_ajax_qcld_variable_add_to_cart', 'qcld_variable_add_to_cart');
948 add_action('wp_ajax_nopriv_qcld_variable_add_to_cart', 'qcld_variable_add_to_cart');
949 function qcld_variable_add_to_cart(){
950 $product_id = intval( wp_unslash( $_POST['p_id'] ) );
951 $quantity = intval( wp_unslash( $_POST['quantity'] ) );
952 $variations_id = intval( wp_unslash( $_POST['variations_id'] ) );
953 $attrs = isset( $_POST['attributes'] ) ? array_map( 'sanitize_text_field', wp_unslash( (array) $_POST['attributes'] ) ) : array();
954 //echo wp_send_json(array('p_id'=>$product_id,'qnty'=>$quantity,'id'=>$variations_id,'att'=>$attrs));
955 $attributes = array();
956 foreach ($attrs as $attr) {
957 $single = explode("#", $attr);
958 if (isset($single[0])) {
959 $a_name = explode("_", $single[0]);
960 }
961 $attributes[$a_name[2]] = $single[1];
962 }
963 global $wpcommerce;
964 $result = $wpcommerce->cart->add_to_cart($product_id, $quantity, $variations_id, $attributes, null);
965 if ($result != false) {
966 wp_send_json('variable');
967 } else {
968 wp_send_json('error');
969 }
970 }
971 //Add to cart for simple product.
972 add_action('wp_ajax_qcld_wb_chatbot_add_to_cart', 'qcld_wb_chatbot_add_to_cart');
973 add_action('wp_ajax_nopriv_qcld_wb_chatbot_add_to_cart', 'qcld_wb_chatbot_add_to_cart');
974 function qcld_wb_chatbot_add_to_cart(){
975 $product_id = intval( wp_unslash( $_POST['product_id'] ) );
976 $product_quantity = intval( wp_unslash( $_POST['quantity'] ) );
977 global $wpcommerce;
978 $result = $wpcommerce->cart->add_to_cart($product_id, $product_quantity);
979 if ($result != false) {
980 wp_send_json('simple');
981 } else {
982 wp_send_json('error');
983 }
984 }
985 //Support part
986 add_action('wp_ajax_qcld_wb_chatbot_support_email', 'qcld_wb_chatbot_support_email');
987 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_email', 'qcld_wb_chatbot_support_email');
988 function qcld_wb_chatbot_support_email(){
989 $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : '';
990 if ( ! wp_verify_nonce( $nonce, 'qcsecretbotnonceval123qc' ) ) {
991 wp_send_json_error( array( 'error' => esc_html__( 'Error: Invalid nonce verification.', 'chatbot' ) ) );
992 }
993 $name = trim(sanitize_text_field(wp_unslash($_POST['name'])));
994 $email = sanitize_email(wp_unslash($_POST['email']));
995 $message = sanitize_text_field(wp_unslash($_POST['message']));
996 $subject = sanitize_text_field(get_option('qlcd_wp_chatbot_email_sub') != '' ? get_option('qlcd_wp_chatbot_email_sub') : 'Support Email from wpWBot by Client');
997 //Extract Domain
998 $url = get_site_url();
999 $url = wp_parse_url($url);
1000 $domain = $url['host'];
1001 //$admin_email = "admin@" . $domain;
1002 $admin_email = sanitize_email(get_option('admin_email'));
1003 $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
1004
1005
1006 if(get_option('qlcd_wp_chatbot_from_email') && get_option('qlcd_wp_chatbot_from_email')!=''){
1007 $fromEmail = get_option('qlcd_wp_chatbot_from_email');
1008 }else{
1009 $fromEmail = "wordpress@" . $domain;
1010 }
1011 //Starting messaging and status.
1012 $response['status'] = 'fail';
1013 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_fail')));
1014 if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
1015 $response['message'] = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_invalid_email'))));
1016 $response['status'] = 'fail';
1017 } else {
1018 //build email body
1019 $bodyContent = "";
1020 $bodyContent .= '<p><strong>' . __('Support Request Details', 'chatbot') . ':</strong></p><hr>';
1021 $bodyContent .= '<p>' . __('Name', 'chatbot') . ' : ' . $name . '</p>';
1022 $bodyContent .= '<p>' . __('Email', 'chatbot') . ' : ' . $email . '</p>';
1023 $bodyContent .= '<p>' . __('Subject', 'chatbot') . ' : ' . $subject . '</p>';
1024 $bodyContent .= '<p>' . __('Message', 'chatbot') . ' : ' . $message . '</p>';
1025 $bodyContent .= '<p>' . __('Mail Generated on', 'chatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1026 $to = $toEmail;
1027 $body = $bodyContent;
1028 $headers = array();
1029 $headers[] = 'Content-Type: text/html; charset=UTF-8';
1030 $headers[] = 'From: ' . $name . ' <' . $fromEmail . '>';
1031 $headers[] = 'Reply-To: ' . $name . ' <' . $email . '>';
1032 $result = wp_mail($to, $subject, $body, $headers);
1033 if ($result) {
1034 $response['status'] = 'success';
1035 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_sent')));
1036 }
1037
1038 }
1039 echo wp_json_encode($response);
1040 die();
1041 }
1042 //Support Phone
1043 add_action('wp_ajax_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1044 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1045 function qcld_wb_chatbot_support_phone(){
1046 check_ajax_referer('qcsecretbotnonceval123qc', 'nonce');
1047 $name = trim(sanitize_text_field(wp_unslash($_POST['name'])));
1048 $phone =sanitize_text_field(wp_unslash($_POST['phone']));
1049 $subject = 'WPBot Support Mail Request for Call Back';
1050 //Extract Domain
1051 $url = get_site_url();
1052 $url = wp_parse_url($url);
1053 $domain = $url['host'];
1054 //$admin_email = "admin@" . $domain;
1055 $admin_email = get_option('admin_email');
1056 $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
1057
1058
1059 if(get_option('qlcd_wp_chatbot_from_email') && get_option('qlcd_wp_chatbot_from_email')!=''){
1060 $fromEmail = sanitize_email(get_option('qlcd_wp_chatbot_from_email'));
1061 }else{
1062 $fromEmail = "wordpress@" . $domain;
1063 }
1064 //Starting messaging and status.
1065 $response['status'] = 'fail';
1066 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_fail')));
1067 //build email body
1068 $bodyContent = "";
1069 $bodyContent .= '<p><strong>' . __('Support Request Details', 'chatbot') . ':</strong></p><hr>';
1070 $bodyContent .= '<p>' . __('Name', 'chatbot') . ' : ' . $name . '</p>';
1071 $bodyContent .= '<p>' . __('Phone', 'chatbot') . ' : ' . $phone . '</p>';
1072 $bodyContent .= '<p>' . __('Subject', 'chatbot') . ' : ' . $subject . '</p>';
1073 $bodyContent .= '<p>' . __('Message', 'chatbot') . ' : ' . __(' Call me at ', 'chatbot'). $phone . '</p>';
1074 $bodyContent .= '<p>' . __('Mail Generated on', 'chatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1075 $to = $toEmail;
1076 $body = $bodyContent;
1077 $headers = array();
1078 $headers[] = 'Content-Type: text/html; charset=UTF-8';
1079 $headers[] = 'From: ' . $name . ' <' . $fromEmail . '>';
1080 $headers[] = 'Reply-To: ' . $name . ' <' . $fromEmail . '>';
1081 $result = wp_mail($to, $subject, $body, $headers);
1082 if ($result) {
1083 $response['status'] = 'success';
1084 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_sent')));
1085 }
1086 echo wp_json_encode($response);
1087 die();
1088 }
1089 // Order Status part. removed
1090
1091 function wpb_randmom_message_handle($items){
1092 return $items[wp_rand(0, count($items) - 1)];
1093 }
1094 function qcld_wb_chatbot_func_str_replace($messages = array()){
1095 $refined_mesgses = array();
1096 foreach ($messages as $message) {
1097 $refined_msg = str_replace('\\', '', $message);
1098 array_push($refined_mesgses, $refined_msg);
1099 }
1100 return $refined_mesgses;
1101 }
1102 add_action('wp_ajax_qcld_wb_chatbot_login_user', 'qcld_wb_chatbot_login_user');
1103 add_action('wp_ajax_nopriv_qcld_wb_chatbot_login_user', 'qcld_wb_chatbot_login_user');
1104 function qcld_wb_chatbot_login_user(){
1105 // First check the nonce, if it fails the function will break
1106 check_ajax_referer('wpwbot-order-nonce', 'security');
1107 // Nonce is checked, get the POST data and sign user on
1108 $info = array();
1109 $info['user_login'] = trim(sanitize_text_field(wp_unslash($_POST['user_name'])));
1110 $info['user_password'] = trim(sanitize_text_field(wp_unslash($_POST['user_pass'])));
1111 $info['remember'] = true;
1112 $user_signon = wp_signon($info, false);
1113 $response = array();
1114 if (is_wp_error($user_signon)) {
1115 $response['status'] = "fail";
1116 $response['message'] = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect'))));
1117 } else {
1118 $response = get_order_by_username($info['user_login']);
1119 $response['status'] = "success";
1120 }
1121 wp_send_json($response);
1122 }
1123 add_action('wp_ajax_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1124 add_action('wp_ajax_nopriv_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1125 function qcld_wb_chatbot_loged_in_user_orders(){
1126 $current_user = wp_get_current_user();
1127 $user_name = $current_user->user_login;
1128 $response = get_order_by_username($user_name);
1129 wp_send_json($response);
1130 }
1131 function get_order_by_username($user_name){
1132 global $post;
1133 $response = array();
1134 $response['status'] .= "success";
1135 $user = get_user_by('login', $user_name);
1136 // The query arguments
1137 $customer_orders = get_posts(array(
1138 'numberposts' => -1,
1139 'meta_key' => '_customer_user',
1140 'meta_value' => $user->ID,
1141 'post_type' => wc_get_order_types(),
1142 'post_status' => array_keys(wc_get_order_statuses()),
1143 'posts_per_page' => 10,
1144 'orderby' => 'date',
1145 ));
1146 $response['order_num'] = count($customer_orders);
1147 $order_html = '';
1148 if ($response['order_num'] > 0) {
1149 $response['message'] .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_found'))));
1150 $order_html .= '<div class="wp-chatbot-orders-container">
1151 <div class="wp-chatbot-orders-header">
1152 <div class="order-id">' . __('ID', 'chatbot') . '</div>
1153 <div class="order-date">' . __('Date', 'chatbot') . ' </div>
1154 <div class="order-items">' . __('Items', 'chatbot') . '</div>
1155 <div class="order-status">' . __('Status', 'chatbot') . '</div>
1156 </div>';
1157 foreach ($customer_orders as $order) {
1158 //Formatting order summery
1159 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1160 $thanks_page_id = sanitize_text_field(get_option('wp_chatbot_app_order_thankyou'));
1161 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1162 $order_url = '<a href="' . $thanks_parmanlink . '?order_id=' . $order->ID . '" >' . $order->ID . '</a>';
1163 } else {
1164 $order_url = '<a href="' . get_url(get_permalink(get_option('wpcommerce_myaccount_page_id')) . '/view-order/' . $order->ID) . '" target="_blank" >' . $order->ID . '</a>';
1165 }
1166 $order_html .= '<div class="wp-chatbot-orders-single">
1167 <div class="order-id"> ' . $order_url . '</div>
1168 <div class="order-date"> <p>' . gmdate("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1169 <div class="order-items">';
1170 $singleOrder = new WC_Order($order->ID);
1171 $items = $singleOrder->get_items();
1172 foreach ($items as $item) {
1173 $order_html .= '<p>' . $item["name"] . ' X ' . $item["qty"] . '</p>';
1174 }
1175 $order_html .= '</div>
1176 <div class="order-status">' . strtoupper(end(explode("-", $order->post_status))) . '</div>
1177
1178 </div>';
1179 }
1180 $order_html .= '</div>';
1181 } else {
1182 $response['message'] .= get_option('qlcd_wp_chatbot_sorry') . '! <strong>' . $user_name . '</strong>';
1183 $order_html .= '<p>' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_not_found')))) . '</p>';
1184 }
1185 $response['html'] = $order_html;
1186 return $response;
1187 }
1188 //Recently viewed products
1189 //keeping id in cookies as
1190 function wp_chatbot_track_product_view(){
1191 if (!is_singular('product')) {
1192 return;
1193 }
1194 global $post;
1195 wp_chatbot_view_track_product_by_id($post->ID);
1196 }
1197 function wp_chatbot_view_track_product_by_id($post_id){
1198 if (empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']))
1199 $viewed_products = array();
1200 else
1201 $viewed_products = (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']);
1202 if (!in_array($post_id, $viewed_products)) {
1203 $viewed_products[] = $post_id;
1204 }
1205 if (sizeof($viewed_products) > 15) {
1206 array_shift($viewed_products);
1207 }
1208 // Store for session only
1209 if( function_exists( 'wc_setcookie' ) ){
1210 wc_setcookie('wp_chatbot_wpcommerce_recently_viewed', implode('|', $viewed_products));
1211 }
1212 }
1213 add_action('template_redirect', 'wp_chatbot_track_product_view', 20);
1214 //recent view product ajax
1215 add_action('wp_ajax_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
1216 add_action('wp_ajax_nopriv_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
1217 function qcld_wb_chatbot_recently_viewed_products(){
1218 // Get wpCommerce Global
1219 $_pf = new WC_Product_Factory();
1220 //show post per page.
1221 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
1222 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1223 // Get recently viewed product cookies data
1224 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1225 $viewed_products = array_filter(array_map('absint', $viewed_products));
1226 //get featured products if has.
1227 $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'))));
1228 //Getting recently vieew products.
1229 if (!empty($viewed_products)) {
1230 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))));
1231 $product_query = new WP_Query(array(
1232 'posts_per_page' => $product_per_page,
1233 'no_found_rows' => 1,
1234 'post_status' => 'publish',
1235 'post_type' => 'product',
1236 'post__in' => $viewed_products,
1237 ));
1238 //Getting featured products
1239 } else if ($featured_products->post_count > 0) {
1240 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome'))));
1241 $product_query = $featured_products;
1242 } else {
1243 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1244 //Getting recent products
1245 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1246 }
1247 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1248 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1249 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1250 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1251 } else {
1252 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1253 }
1254 $html = '<div class="wp-chatbot-agent-profile">
1255 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1256 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1257 <div class="wp-chatbot-bubble">' . $wp_chatbot_product_title . '</div>
1258 </div>';
1259 if ($product_query->post_count > 0) {
1260 $html .= '<div class="wp-chatbot-products-area">';
1261 $html .= '<ul class="wp-chatbot-products">';
1262 while ($product_query->have_posts()) : $product_query->the_post();
1263 $product = $_pf->get_product(get_the_ID());
1264 $html .= '<li class="wp-chatbot-product">';
1265 $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" wp-chatbot-pid= "' . get_the_ID() . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '">';
1266 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1267 <div class="wp-chatbot-product-summary">
1268 <div class="wp-chatbot-product-table">
1269 <div class="wp-chatbot-product-table-cell">
1270 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1271 <div class="price">' . $product->get_price_html() . '</div>';
1272 $html .= ' </div>
1273 </div>
1274 </div></a>
1275 </li>';
1276 endwhile;
1277 wp_reset_query();
1278 wp_reset_postdata();
1279 $html .= '</ul></div>';
1280 } else {
1281 $html .= '<div class="wp-chatbot-products-area">';
1282 $html .= '<p style="text-align: center">You have no products !';
1283 $html .= '</div>';
1284 }
1285 wp_send_json($html);
1286 }
1287 //Recently viewed product shortcode
1288 add_shortcode('wpwbot_products', 'qcld_wb_chatbot_recently_viewed_shortcode');
1289 function qcld_wb_chatbot_recently_viewed_shortcode(){
1290 // Get wpCommerce Global
1291 $_pf = new WC_Product_Factory();
1292 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
1293 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1294 // Get recently viewed product cookies data
1295 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1296 $viewed_products = array_filter(array_map('absint', $viewed_products));
1297 //get featured products if has.
1298 $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'))));
1299 //Getting recently vieew products.
1300 if (!empty($viewed_products)) {
1301 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))));
1302 $product_query = new WP_Query(array(
1303 'posts_per_page' => $product_per_page,
1304 'no_found_rows' => 1,
1305 'post_status' => 'publish',
1306 'post_type' => 'product',
1307 'post__in' => $viewed_products,
1308 ));
1309 //implementing featured products
1310 } else if ($featured_products->post_count > 0) {
1311 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome'))));
1312 $product_query = $featured_products;
1313 } else {
1314 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1315 //Getting recent products
1316 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1317 }
1318 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1319 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1320 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1321 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1322 } else {
1323 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1324 }
1325 $html = '<div class="wp-chatbot-agent-profile">
1326 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1327 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1328 <div class="wp-chatbot-bubble">' . esc_html($wp_chatbot_product_title) . '</div>
1329 </div>';
1330 if ($product_query->post_count > 0) {
1331 $html .= '<div class="wp-chatbot-products-area">';
1332 $html .= '<ul class="wp-chatbot-products">';
1333 while ($product_query->have_posts()) : $product_query->the_post();
1334 $product = $_pf->get_product(get_the_ID());
1335 $html .= '<li class="wp-chatbot-product">';
1336 $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" wp-chatbot-pid= "' . get_the_ID() . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '">';
1337 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1338 <div class="wp-chatbot-product-summary">
1339 <div class="wp-chatbot-product-table">
1340 <div class="wp-chatbot-product-table-cell">
1341 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1342 <div class="price">' . $product->get_price_html() . '</div>';
1343 $html .= ' </div>
1344 </div>
1345 </div></a>
1346 </li>';
1347 endwhile;
1348 wp_reset_query();
1349 wp_reset_postdata();
1350 $html .= '</ul></div>';
1351 } else {
1352 $html .= '<div class="wp-chatbot-products-area">';
1353 $html .= '<p style="text-align: center">' . __('You have no products', 'chatbot') . ' !';
1354 $html .= '</div>';
1355 }
1356 return $html;
1357 }
1358 //Show cart for wp chatbot
1359 add_action('wp_ajax_qcld_wb_chatbot_show_cart', 'qcld_wb_chatbot_show_cart');
1360 add_action('wp_ajax_nopriv_qcld_wb_chatbot_show_cart', 'qcld_wb_chatbot_show_cart');
1361 function qcld_wb_chatbot_show_cart(){
1362 global $wpcommerce;
1363 // $cart_url = $wpcommerce->cart->get_cart_url();
1364 $cart_url = wc_get_cart_url();
1365 $checkout_url = wc_get_checkout_url();
1366 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1367 $items = $wpcommerce->cart->get_cart();
1368 $itemCount = $wpcommerce->cart->cart_contents_count;
1369 $cart_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart'))));
1370 $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1371 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1372 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1373 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1374 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1375 } else {
1376 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1377 }
1378 $html = '<div class="wp-chatbot-agent-profile">
1379 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1380 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1381 <div class="wp-chatbot-bubble">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome')))) . '</div>
1382 </div>';
1383 if ($itemCount >= 1) {
1384 $html .= '<div class ="wp-chatbot-cart-container">';
1385 $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>';
1386 $html .= '<div class ="wp-chatbot-cart-body">';
1387 foreach ($items as $item => $values) {
1388 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1389 //product image
1390 $getProductDetail = wc_get_product($values['product_id']);
1391 $price = get_post_meta($values['product_id'], '_price', true);
1392 $html .= '<div class="wp-chatbot-cart-single">
1393 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1394 $html .= '<div class="qcld-wp-chatbot-cell">';
1395 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1396 $html .= '<div class="qcld-wp-chatbot-cell"><span class="wp-chatbot-cart-price">' . apply_filters('wpcommerce_cart_item_price', WC()->cart->get_product_price($cart_item), $values, $item) . '</span> </div>';
1397 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1398 }
1399 $html .= ' </div>';//End of cart body
1400 $html .= '<div class="wp-chatbot-cart-single">
1401 <div class="qcld-wp-chatbot-cell"></div>
1402 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1403 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1404 </div>';
1405 $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>';
1406 $html .= ' </div>';
1407 } else {
1408 $html .= '<div class="wp-chatbot-cart-container">';
1409 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1410 $html .= '</div>';
1411 }
1412 $response = array('html' => $html, 'items' => $itemCount);
1413 wp_send_json($response);
1414 }
1415 //cart onley for wp chatbot
1416 add_action('wp_ajax_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1417 add_action('wp_ajax_nopriv_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1418 function qcld_wb_chatbot_only_cart(){
1419 global $wpcommerce;
1420 // $cart_url = $wpcommerce->cart->get_cart_url();
1421 $cart_url = wc_get_cart_url();
1422 $checkout_url = wc_get_checkout_url();
1423 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1424 $items = $wpcommerce->cart->get_cart();
1425 $itemCount = $wpcommerce->cart->cart_contents_count;
1426 $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1427
1428 $html = '';
1429 if ($itemCount >= 1) {
1430 $html .= '<div class ="wp-chatbot-cart-container">';
1431 $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>';
1432 $html .= '<div class ="wp-chatbot-cart-body">';
1433 foreach ($items as $item => $values) {
1434 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1435 //product image
1436 $getProductDetail = wc_get_product($values['product_id']);
1437 $price = get_post_meta($values['product_id'], '_price', true);
1438 $html .= '<div class="wp-chatbot-cart-single">
1439 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1440 $html .= '<div class="qcld-wp-chatbot-cell">';
1441 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1442 $html .= '<div class="qcld-wp-chatbot-cell"><span class="wp-chatbot-cart-price">' . apply_filters('wpcommerce_cart_item_price', WC()->cart->get_product_price($cart_item), $values, $item) . '</span> </div>';
1443 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1444 }
1445 $html .= ' </div>';//End of cart body
1446 $html .= '<div class="wp-chatbot-cart-single">
1447 <div class="qcld-wp-chatbot-cell"></div>
1448 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1449 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1450 </div>';
1451 $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>';
1452 $html .= ' </div>';
1453 } else {
1454 $html .= '<div class="wp-chatbot-cart-container">';
1455 $html .= '<div><p style="text-align:center">' . esc_html($no_cart_item_msg) . '</p></div>';
1456 $html .= '</div>';
1457 }
1458 $response = array('html' => $html, 'items' => $itemCount);
1459 wp_send_json($response);
1460 }
1461 //Cart show Shortcode
1462 add_shortcode('wpwbot_cart', 'qcld_wb_chatbot_cart_shortcode');
1463 function qcld_wb_chatbot_cart_shortcode(){
1464 global $wpcommerce;
1465 $items = $wpcommerce->cart->get_cart();
1466 $itemCount = $wpcommerce->cart->cart_contents_count;
1467 $cart_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart'))));
1468 $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1469 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1470 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1471 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1472 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1473 } else {
1474 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1475 }
1476 $html = '<div class="wp-chatbot-agent-profile">
1477 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1478 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1479 <div class="wp-chatbot-bubble">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome')))) . '</div>
1480 </div>';
1481 if ($itemCount >= 1) {
1482 $html .= '<div class ="wp-chatbot-cart-container">';
1483 $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>';
1484 $html .= '<div class ="wp-chatbot-cart-body">';
1485 foreach ($items as $item => $values) {
1486 $cart_item = apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1487 //product image
1488 $getProductDetail = wc_get_product($values['product_id']);
1489 $price = get_post_meta($values['product_id'], '_price', true);
1490 $html .= '<div class="wp-chatbot-cart-single">
1491 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1492 $html .= '<div class="qcld-wp-chatbot-cell">';
1493 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1494 $html .= '<div class="qcld-wp-chatbot-cell"><span class="wp-chatbot-cart-price">' . apply_filters('wpcommerce_cart_item_price', WC()->cart->get_product_price($cart_item), $values, $item) . '</span> </div>';
1495 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1496 }
1497 $html .= ' </div>';//End of cart body
1498 $html .= '<div class="wp-chatbot-cart-single">
1499 <div class="qcld-wp-chatbot-cell"></div>
1500 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1501 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1502 </div>';
1503 $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>';
1504 $html .= ' </div>';
1505 } else {
1506 $html .= '<div class="wp-chatbot-cart-container">';
1507 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1508 $html .= '</div>';
1509 }
1510 // $response=array('html'=>$html,'items'=>$itemCount);
1511 return $html;
1512 }
1513 //Updating the cart items.
1514 add_action('wp_ajax_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1515 add_action('wp_ajax_nopriv_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1516 function qcld_wb_chatbot_update_cart_item_number(){
1517 //getting cart items n
1518 $cart_item_key = sanitize_text_field(wp_unslash($_POST['cart_item_key']));
1519 $qnty = sanitize_text_field(wp_unslash($_POST['qnty']));
1520 global $wpcommerce;
1521 $result = $wpcommerce->cart->set_quantity($cart_item_key, $qnty);
1522 wp_send_json($result);
1523 }
1524 //Show item after removing from cart page.
1525 add_action('wp_ajax_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1526 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1527 function qcld_wb_chatbot_cart_item_remove(){
1528 //getting cart items n
1529 $cart_item_key = sanitize_text_field(wp_unslash($_POST['cart_item']));
1530 global $wpcommerce;
1531 $result = $wpcommerce->cart->remove_cart_item($cart_item_key);
1532 wp_send_json($result);
1533 }
1534 //Show cart page by shortcode.
1535 add_action('wp_ajax_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1536 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1537 function qcld_wb_chatbot_cart_page(){
1538 global $wpcommerce;
1539 $itemCount = $wpcommerce->cart->cart_contents_count;
1540 $html = "";
1541 if ($itemCount < 0) {
1542 $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1543 } else {
1544 $html .= do_shortcode("[wpcommerce_cart]");
1545 }
1546 wp_send_json($html);
1547 }
1548 //Show checkout page by shortcode.
1549 add_action('wp_ajax_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1550 add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1551 function qcld_wb_chatbot_checkout_page(){
1552 global $wpcommerce;
1553 $itemCount = $wpcommerce->cart->cart_contents_count;
1554 $html = "";
1555 if ($itemCount < 0) {
1556 $status = 'no';
1557 $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1558 } else {
1559 $status = 'yes';
1560 $checkout_page_id = get_option('wp_chatbot_app_checkout');
1561 $checkout_parmanlink = esc_url(get_permalink($checkout_page_id));
1562 $html .= $checkout_parmanlink;
1563 }
1564 $response = array('status' => $status, 'html' => $html);
1565 wp_send_json($response);
1566 }
1567 //_dynamic_intent
1568 function qcld_dynamic_intent(){
1569 global $wpdb;
1570 $intents = array();
1571
1572 $ai_df = get_option('enable_wp_chatbot_dailogflow');
1573 $custom_intent_labels = maybe_unserialize( get_option('qlcd_wp_custon_intent_label'));
1574 if($ai_df==1 && isset($custom_intent_labels[0]) && trim($custom_intent_labels[0])!=''):
1575
1576 foreach($custom_intent_labels as $custom_intent_label):
1577 $intents[] = $custom_intent_label;
1578 endforeach;
1579
1580 endif;
1581
1582
1583
1584 if(class_exists('Qcformbuilder_Forms_Admin')){
1585
1586
1587 $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM ". $wpdb->prefix."wfb_forms WHERE type= %s",'primary')); //DB Call OK, No Caching OK
1588
1589 if(!empty($results)){
1590
1591 foreach($results as $result){
1592 $form = maybe_unserialize($result->config);
1593 $intents[] = $form['name'];
1594 }
1595
1596 }
1597 }
1598
1599 if(!empty($intents)){
1600 return implode(", ", $intents);
1601 }else{
1602 return '';
1603 }
1604
1605 }
1606
1607 //User login on Checkout page.
1608 // add_action('wp_ajax_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1609 // add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1610 // function qcld_wb_chatbot_checkout_user_login(){
1611 // // Nonce is checked, get the POST data and sign user on
1612 // $info = array();
1613 // //$info['nonce'] = $_POST['nonce_val'];
1614 // $info['user_login'] = trim(sanitize_text_field(wp_unslash($_POST['user_name'])));
1615 // $info['user_password'] = trim(sanitize_text_field(wp_unslash($_POST['user_pass'])));
1616 // $info['remember'] = true;
1617 // $user_signon = wp_signon($info, false);
1618 // // $response=$info;
1619 // $response = array();
1620 // if (is_wp_error($user_signon)) {
1621 // // $response['status'] = "fail";
1622 // $response = "no";
1623 // } else {
1624 // $response = "yes";
1625 // }
1626 // wp_send_json($response);
1627 // }
1628 // Load template for App Order Thank You page url
1629 function wp_chatbot_load_app_template($template){
1630 if (is_page('wpwbot-mobile-app')) {
1631 return dirname(__FILE__) . '/templates/app-templates/app.php';
1632 }
1633 return $template;
1634 }
1635 add_filter('template_include', 'wp_chatbot_load_app_template', 99);
1636 // Load template for App Order Thank You page url
1637 function wp_chatbot_load_app_order_thankyou_template($template){
1638 if (is_page('wpwbot-app-order-thankyou')) {
1639 return dirname(__FILE__) . '/templates/app-templates/app-order-thankyou.php';
1640 }
1641 return $template;
1642 }
1643 add_filter('template_include', 'wp_chatbot_load_app_order_thankyou_template', 99);
1644 // Load template for App checkout
1645 function wp_chatbot_load_app_checkout_template($template){
1646 if (is_page('wpwbot-app-checkout')) {
1647 return dirname(__FILE__) . '/templates/app-templates/app-checkout.php';
1648 }
1649 return $template;
1650 }
1651 add_filter('template_include', 'wp_chatbot_load_app_checkout_template', 99);
1652 // Create embed page when plugin install or activate
1653 //register_activation_hook(__FILE__, 'wp_chatbot_create_app_order_thankyou_page');
1654 add_action('init', 'wp_chatbot_create_app_checkout_thankyou_page');
1655 function wp_chatbot_create_app_checkout_thankyou_page(){
1656 if (get_option('wp_chatbot_app_pages') == 1) {
1657 //Mobile App page create
1658 $existing_app = new WP_Query( array( 'post_type' => 'page', 'name' => 'wpwbot-mobile-app', 'post_status' => 'publish', 'posts_per_page' => 1 ) );
1659 if ( ! $existing_app->have_posts() ) {
1660 //post status and options
1661 $app_page = array(
1662 'comment_status' => 'closed',
1663 'ping_status' => 'closed',
1664 'post_author' => get_current_user_id(),
1665 'post_date' => gmdate('Y-m-d H:i:s'),
1666 'post_status' => 'publish',
1667 'post_title' => 'wpwBot Mobile App',
1668 'post_name' => 'wpwbot-mobile-app',
1669 'post_type' => 'page',
1670 );
1671 //insert page and save the id
1672 $wpwbot_app = wp_insert_post($app_page, false);
1673 //save the id in the database
1674 update_option('wp_chatbot_app_checkout', $wpwbot_app);
1675 }
1676 //App checkout page create
1677 $existing_checkout = new WP_Query( array( 'post_type' => 'page', 'name' => 'wpwbot-app-checkout', 'post_status' => 'publish', 'posts_per_page' => 1 ) );
1678 if ( ! $existing_checkout->have_posts() ) {
1679 //post status and options
1680 $checkout_page = array(
1681 'comment_status' => 'closed',
1682 'ping_status' => 'closed',
1683 'post_author' => get_current_user_id(),
1684 'post_date' => gmdate('Y-m-d H:i:s'),
1685 'post_status' => 'publish',
1686 'post_title' => 'wpwBot App Checkout',
1687 'post_name' => 'wpwbot-app-checkout',
1688 'post_type' => 'page',
1689 );
1690 //insert page and save the id
1691 $app_checkout = wp_insert_post($checkout_page, false);
1692 //save the id in the database
1693 update_option('wp_chatbot_app_checkout', $app_checkout);
1694 }
1695 //App Order thank you page create
1696 $existing_thankyou = new WP_Query( array( 'post_type' => 'page', 'name' => 'wpwbot-app-order-thankyou', 'post_status' => 'publish', 'posts_per_page' => 1 ) );
1697 if ( ! $existing_thankyou->have_posts() ) {
1698 //post status and options
1699 $thankyou_page = array(
1700 'comment_status' => 'closed',
1701 'ping_status' => 'closed',
1702 'post_author' => get_current_user_id(),
1703 'post_date' => gmdate('Y-m-d H:i:s'),
1704 'post_status' => 'publish',
1705 'post_title' => 'wpwBot App Order Thank You',
1706 'post_name' => 'wpwbot-app-order-thankyou',
1707 'post_type' => 'page',
1708 );
1709 //insert page and save the id
1710 $app_order_thankyou = wp_insert_post($thankyou_page, false);
1711 //save the id in the database
1712 update_option('wp_chatbot_app_order_thankyou', $app_order_thankyou);
1713 }
1714 }
1715 //Keep tracking from App by cookies
1716 if ( isset( $_GET['from'] ) && sanitize_text_field( wp_unslash( $_GET['from'] ) ) === 'app' ) { // phpcs:ignore WordPress.Security.NonceVerification
1717 if (!isset($_COOKIE['from_app'])) {
1718 setcookie('from_app', 'yes', (time() + 3600), '/');
1719 }
1720 }
1721 }
1722 /***
1723 * Override order Thank page for mobile app
1724 */
1725 add_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase', 10, 1);
1726 function qcld_wb_chatbot__redirect_after_purchase($order_get_id){
1727 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1728 global $wp;
1729 if (is_checkout() && !empty($wp->query_vars['order-received'])) {
1730 $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1731 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1732 wp_safe_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1733 exit;
1734 }
1735 } else {
1736 remove_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase');
1737 do_action('wpcommerce_thankyou', $order_get_id);
1738 }
1739 }
1740
1741 function qcld_choose_random($array){
1742 return $array[array_rand($array)];
1743 }
1744
1745 //User session count
1746 add_action('wp_ajax_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1747 add_action('wp_ajax_nopriv_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1748 function qcld_wb_chatbot_session_count(){
1749 // Nonce is checked, get the POST data and sign user on
1750 check_ajax_referer( 'wp_chatbot', 'nonce' );
1751 global $wpdb;
1752 $wpdb->show_errors = true;
1753 $tableuser = $wpdb->prefix.'wpbot_sessions';
1754 $response = array();
1755
1756
1757 $session_exists = $wpdb->get_row($wpdb->prepare("select * from $tableuser where 1 and id = %d",1)); //DB Call OK, No Caching OK
1758
1759 if(empty($session_exists)){
1760 $wpdb->insert(
1761 $tableuser,
1762 array(
1763 'session' => 1,
1764 )
1765 ); //DB Call OK, No Caching OK
1766 }else{
1767
1768 $session_id = $session_exists->id;
1769
1770 $wpdb->update(
1771 $tableuser,
1772 array(
1773 'session'=>($session_exists->session+1),
1774 ),
1775 array('id'=>$session_id),
1776 array(
1777 '%d',
1778 ),
1779 array('%d')
1780 ); //DB Call OK, No Caching OK
1781
1782 }
1783
1784 wp_send_json($response);
1785 }
1786
1787 /* WPBot Chat History Addon check */
1788 function qcld_wpbot_is_active_chat_history(){
1789
1790 if(function_exists('qcwp_chat_session_menu_fnc') || function_exists( 'qcpdcs_chat_session_menu_fnc' ) ){
1791 return 1;
1792 }else{
1793 return 0;
1794 }
1795
1796 }
1797
1798 function qcld_wpbot_input_validation( $data ) {
1799 $data = html_entity_decode($data);
1800 $data = trim($data);
1801 $data = stripslashes($data);
1802 $data = htmlspecialchars($data);
1803 return $data;
1804 }
1805 add_action('wp_ajax_qcld_small_talk_import', 'qcld_small_talk_import');
1806 function qcld_small_talk_import(){
1807
1808 global $wpdb;
1809
1810 $table = $wpdb->prefix.'wpbot_response';
1811
1812 $csvFile = file(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . 'small_talk.csv');
1813
1814 foreach ($csvFile as $line) {
1815 $line = str_getcsv($line, ',', '"');
1816 $wpdb->insert($table, array(
1817 'query' => $line[0],
1818 'keyword' => $line[1],
1819 'response' => $line[2],
1820 'category'=> $line[3],
1821 'intent'=> '',
1822 //'lang'=> 'en_US',
1823 )); //DB Call OK, No Caching OK
1824 }
1825
1826 $table2 = $wpdb->prefix.'wpbot_response_category';
1827
1828 $wpdb->insert($table2, array(
1829 'name' => 'smalltalk',
1830 )); //DB Call OK, No Caching OK
1831
1832 update_option( 'qcld_small_talk_imported', 'yes' );
1833
1834 }
1835 function sanitize_array( &$array ) {
1836 if (!empty($array)) {
1837 foreach ($array as &$value) {
1838 if( !is_array($value) )
1839 // sanitize if value is not an array
1840 $value = sanitize_text_field( esc_html($value) );
1841 else
1842 // go inside this function again
1843 sanitize_array(esc_html($value));
1844 }
1845 }
1846 return $array;
1847 }
1848 function qcld_wpbot_meta_tags() {
1849 echo '<!-- "This site uses ChatBot for WordPress - WPBot from https://www.wpbot.pro/" -->';
1850 }
1851 add_action('wp_footer', 'qcld_wpbot_meta_tags', 100);
1852
1853 if ( ! function_exists( 'qcld_change_language_from_center' ) ) {
1854 add_action( 'wp_ajax_qcld_change_language_from_center', 'qcld_change_language_from_center' );
1855 add_action( 'wp_ajax_nopriv_qcld_change_language_from_center', 'qcld_change_language_from_center' );
1856 function qcld_change_language_from_center() {
1857 if ( ! current_user_can( 'manage_options' ) ) {
1858 wp_send_json_error( array( 'message' => 'Unauthorized.' ) );
1859 }
1860 $plugin_path = plugin_dir_path( __FILE__ );
1861 include $plugin_path . 'includes/admin/settings-fields.php';
1862 $json_file_path = $plugin_path . 'includes/language-center.json';
1863
1864 $json_string = file_get_contents( $json_file_path );
1865 if ( isset( $_POST['language'] ) ) {
1866 $language = sanitize_text_field( wp_unslash( $_POST['language'] ) );
1867 $language_array= json_decode($json_string)->$language;
1868 update_option( 'wp_chatbot_language_center_language', $language );
1869 wp_send_json_success( array( 'message' => true, 'data' => $language_array, 'language' => $language ) );
1870 } else {
1871 wp_send_json_error( array( 'message' => 'Language not specified.' ) );
1872
1873 }
1874 }
1875 }
1876