PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services / 8.2.1
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services v8.2.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.2.1, at functions.php

1,873 lines 99.3 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 check_ajax_referer('qcsecretbotnonceval123qc', 'nonce');
990 $name = trim(sanitize_text_field(wp_unslash($_POST['name'])));
991 $email = sanitize_email(wp_unslash($_POST['email']));
992 $message = sanitize_text_field(wp_unslash($_POST['message']));
993 $subject = sanitize_text_field(get_option('qlcd_wp_chatbot_email_sub') != '' ? get_option('qlcd_wp_chatbot_email_sub') : 'Support Email from wpWBot by Client');
994 //Extract Domain
995 $url = get_site_url();
996 $url = wp_parse_url($url);
997 $domain = $url['host'];
998 //$admin_email = "admin@" . $domain;
999 $admin_email = sanitize_email(get_option('admin_email'));
1000 $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
1001
1002
1003 if(get_option('qlcd_wp_chatbot_from_email') && get_option('qlcd_wp_chatbot_from_email')!=''){
1004 $fromEmail = get_option('qlcd_wp_chatbot_from_email');
1005 }else{
1006 $fromEmail = "wordpress@" . $domain;
1007 }
1008
1009 //Starting messaging and status.
1010 $response['status'] = 'fail';
1011 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_fail')));
1012 if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
1013 $response['message'] = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_invalid_email'))));
1014 $response['status'] = 'fail';
1015 } else {
1016 //build email body
1017 $bodyContent = "";
1018 $bodyContent .= '<p><strong>' . __('Support Request Details', 'chatbot') . ':</strong></p><hr>';
1019 $bodyContent .= '<p>' . __('Name', 'chatbot') . ' : ' . $name . '</p>';
1020 $bodyContent .= '<p>' . __('Email', 'chatbot') . ' : ' . $email . '</p>';
1021 $bodyContent .= '<p>' . __('Subject', 'chatbot') . ' : ' . $subject . '</p>';
1022 $bodyContent .= '<p>' . __('Message', 'chatbot') . ' : ' . $message . '</p>';
1023 $bodyContent .= '<p>' . __('Mail Generated on', 'chatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1024 $to = $toEmail;
1025 $body = $bodyContent;
1026 $headers = array();
1027 $headers[] = 'Content-Type: text/html; charset=UTF-8';
1028 $headers[] = 'From: ' . $name . ' <' . $fromEmail . '>';
1029 $headers[] = 'Reply-To: ' . $name . ' <' . $email . '>';
1030 $result = wp_mail($to, $subject, $body, $headers);
1031 if ($result) {
1032 $response['status'] = 'success';
1033 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_sent')));
1034 }
1035
1036 }
1037 echo wp_json_encode($response);
1038 die();
1039 }
1040 //Support Phone
1041 add_action('wp_ajax_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1042 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1043 function qcld_wb_chatbot_support_phone(){
1044 check_ajax_referer('qcsecretbotnonceval123qc', 'nonce');
1045 $name = trim(sanitize_text_field(wp_unslash($_POST['name'])));
1046 $phone =sanitize_text_field(wp_unslash($_POST['phone']));
1047 $subject = 'WPBot Support Mail Request for Call Back';
1048 //Extract Domain
1049 $url = get_site_url();
1050 $url = wp_parse_url($url);
1051 $domain = $url['host'];
1052 //$admin_email = "admin@" . $domain;
1053 $admin_email = get_option('admin_email');
1054 $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
1055
1056
1057 if(get_option('qlcd_wp_chatbot_from_email') && get_option('qlcd_wp_chatbot_from_email')!=''){
1058 $fromEmail = sanitize_email(get_option('qlcd_wp_chatbot_from_email'));
1059 }else{
1060 $fromEmail = "wordpress@" . $domain;
1061 }
1062 //Starting messaging and status.
1063 $response['status'] = 'fail';
1064 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_fail')));
1065 //build email body
1066 $bodyContent = "";
1067 $bodyContent .= '<p><strong>' . __('Support Request Details', 'chatbot') . ':</strong></p><hr>';
1068 $bodyContent .= '<p>' . __('Name', 'chatbot') . ' : ' . $name . '</p>';
1069 $bodyContent .= '<p>' . __('Phone', 'chatbot') . ' : ' . $phone . '</p>';
1070 $bodyContent .= '<p>' . __('Subject', 'chatbot') . ' : ' . $subject . '</p>';
1071 $bodyContent .= '<p>' . __('Message', 'chatbot') . ' : ' . __(' Call me at ', 'chatbot'). $phone . '</p>';
1072 $bodyContent .= '<p>' . __('Mail Generated on', 'chatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1073 $to = $toEmail;
1074 $body = $bodyContent;
1075 $headers = array();
1076 $headers[] = 'Content-Type: text/html; charset=UTF-8';
1077 $headers[] = 'From: ' . $name . ' <' . $fromEmail . '>';
1078 $headers[] = 'Reply-To: ' . $name . ' <' . $fromEmail . '>';
1079 $result = wp_mail($to, $subject, $body, $headers);
1080 if ($result) {
1081 $response['status'] = 'success';
1082 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_sent')));
1083 }
1084 echo wp_json_encode($response);
1085 die();
1086 }
1087 // Order Status part. removed
1088
1089 function wpb_randmom_message_handle($items){
1090 return $items[wp_rand(0, count($items) - 1)];
1091 }
1092 function qcld_wb_chatbot_func_str_replace($messages = array()){
1093 $refined_mesgses = array();
1094 foreach ($messages as $message) {
1095 $refined_msg = str_replace('\\', '', $message);
1096 array_push($refined_mesgses, $refined_msg);
1097 }
1098 return $refined_mesgses;
1099 }
1100 add_action('wp_ajax_qcld_wb_chatbot_login_user', 'qcld_wb_chatbot_login_user');
1101 add_action('wp_ajax_nopriv_qcld_wb_chatbot_login_user', 'qcld_wb_chatbot_login_user');
1102 function qcld_wb_chatbot_login_user(){
1103 // First check the nonce, if it fails the function will break
1104 check_ajax_referer('wpwbot-order-nonce', 'security');
1105 // Nonce is checked, get the POST data and sign user on
1106 $info = array();
1107 $info['user_login'] = trim(sanitize_text_field(wp_unslash($_POST['user_name'])));
1108 $info['user_password'] = trim(sanitize_text_field(wp_unslash($_POST['user_pass'])));
1109 $info['remember'] = true;
1110 $user_signon = wp_signon($info, false);
1111 $response = array();
1112 if (is_wp_error($user_signon)) {
1113 $response['status'] = "fail";
1114 $response['message'] = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect'))));
1115 } else {
1116 $response = get_order_by_username($info['user_login']);
1117 $response['status'] = "success";
1118 }
1119 wp_send_json($response);
1120 }
1121 add_action('wp_ajax_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1122 add_action('wp_ajax_nopriv_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1123 function qcld_wb_chatbot_loged_in_user_orders(){
1124 $current_user = wp_get_current_user();
1125 $user_name = $current_user->user_login;
1126 $response = get_order_by_username($user_name);
1127 wp_send_json($response);
1128 }
1129 function get_order_by_username($user_name){
1130 global $post;
1131 $response = array();
1132 $response['status'] .= "success";
1133 $user = get_user_by('login', $user_name);
1134 // The query arguments
1135 $customer_orders = get_posts(array(
1136 'numberposts' => -1,
1137 'meta_key' => '_customer_user',
1138 'meta_value' => $user->ID,
1139 'post_type' => wc_get_order_types(),
1140 'post_status' => array_keys(wc_get_order_statuses()),
1141 'posts_per_page' => 10,
1142 'orderby' => 'date',
1143 ));
1144 $response['order_num'] = count($customer_orders);
1145 $order_html = '';
1146 if ($response['order_num'] > 0) {
1147 $response['message'] .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_found'))));
1148 $order_html .= '<div class="wp-chatbot-orders-container">
1149 <div class="wp-chatbot-orders-header">
1150 <div class="order-id">' . __('ID', 'chatbot') . '</div>
1151 <div class="order-date">' . __('Date', 'chatbot') . ' </div>
1152 <div class="order-items">' . __('Items', 'chatbot') . '</div>
1153 <div class="order-status">' . __('Status', 'chatbot') . '</div>
1154 </div>';
1155 foreach ($customer_orders as $order) {
1156 //Formatting order summery
1157 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1158 $thanks_page_id = sanitize_text_field(get_option('wp_chatbot_app_order_thankyou'));
1159 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1160 $order_url = '<a href="' . $thanks_parmanlink . '?order_id=' . $order->ID . '" >' . $order->ID . '</a>';
1161 } else {
1162 $order_url = '<a href="' . get_url(get_permalink(get_option('wpcommerce_myaccount_page_id')) . '/view-order/' . $order->ID) . '" target="_blank" >' . $order->ID . '</a>';
1163 }
1164 $order_html .= '<div class="wp-chatbot-orders-single">
1165 <div class="order-id"> ' . $order_url . '</div>
1166 <div class="order-date"> <p>' . gmdate("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1167 <div class="order-items">';
1168 $singleOrder = new WC_Order($order->ID);
1169 $items = $singleOrder->get_items();
1170 foreach ($items as $item) {
1171 $order_html .= '<p>' . $item["name"] . ' X ' . $item["qty"] . '</p>';
1172 }
1173 $order_html .= '</div>
1174 <div class="order-status">' . strtoupper(end(explode("-", $order->post_status))) . '</div>
1175
1176 </div>';
1177 }
1178 $order_html .= '</div>';
1179 } else {
1180 $response['message'] .= get_option('qlcd_wp_chatbot_sorry') . '! <strong>' . $user_name . '</strong>';
1181 $order_html .= '<p>' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_not_found')))) . '</p>';
1182 }
1183 $response['html'] = $order_html;
1184 return $response;
1185 }
1186 //Recently viewed products
1187 //keeping id in cookies as
1188 function wp_chatbot_track_product_view(){
1189 if (!is_singular('product')) {
1190 return;
1191 }
1192 global $post;
1193 wp_chatbot_view_track_product_by_id($post->ID);
1194 }
1195 function wp_chatbot_view_track_product_by_id($post_id){
1196 if (empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']))
1197 $viewed_products = array();
1198 else
1199 $viewed_products = (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']);
1200 if (!in_array($post_id, $viewed_products)) {
1201 $viewed_products[] = $post_id;
1202 }
1203 if (sizeof($viewed_products) > 15) {
1204 array_shift($viewed_products);
1205 }
1206 // Store for session only
1207 if( function_exists( 'wc_setcookie' ) ){
1208 wc_setcookie('wp_chatbot_wpcommerce_recently_viewed', implode('|', $viewed_products));
1209 }
1210 }
1211 add_action('template_redirect', 'wp_chatbot_track_product_view', 20);
1212 //recent view product ajax
1213 add_action('wp_ajax_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
1214 add_action('wp_ajax_nopriv_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
1215 function qcld_wb_chatbot_recently_viewed_products(){
1216 // Get wpCommerce Global
1217 $_pf = new WC_Product_Factory();
1218 //show post per page.
1219 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
1220 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1221 // Get recently viewed product cookies data
1222 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1223 $viewed_products = array_filter(array_map('absint', $viewed_products));
1224 //get featured products if has.
1225 $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'))));
1226 //Getting recently vieew products.
1227 if (!empty($viewed_products)) {
1228 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))));
1229 $product_query = new WP_Query(array(
1230 'posts_per_page' => $product_per_page,
1231 'no_found_rows' => 1,
1232 'post_status' => 'publish',
1233 'post_type' => 'product',
1234 'post__in' => $viewed_products,
1235 ));
1236 //Getting featured products
1237 } else if ($featured_products->post_count > 0) {
1238 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome'))));
1239 $product_query = $featured_products;
1240 } else {
1241 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1242 //Getting recent products
1243 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1244 }
1245 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1246 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1247 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1248 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1249 } else {
1250 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1251 }
1252 $html = '<div class="wp-chatbot-agent-profile">
1253 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1254 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1255 <div class="wp-chatbot-bubble">' . $wp_chatbot_product_title . '</div>
1256 </div>';
1257 if ($product_query->post_count > 0) {
1258 $html .= '<div class="wp-chatbot-products-area">';
1259 $html .= '<ul class="wp-chatbot-products">';
1260 while ($product_query->have_posts()) : $product_query->the_post();
1261 $product = $_pf->get_product(get_the_ID());
1262 $html .= '<li class="wp-chatbot-product">';
1263 $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()) . '">';
1264 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1265 <div class="wp-chatbot-product-summary">
1266 <div class="wp-chatbot-product-table">
1267 <div class="wp-chatbot-product-table-cell">
1268 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1269 <div class="price">' . $product->get_price_html() . '</div>';
1270 $html .= ' </div>
1271 </div>
1272 </div></a>
1273 </li>';
1274 endwhile;
1275 wp_reset_query();
1276 wp_reset_postdata();
1277 $html .= '</ul></div>';
1278 } else {
1279 $html .= '<div class="wp-chatbot-products-area">';
1280 $html .= '<p style="text-align: center">You have no products !';
1281 $html .= '</div>';
1282 }
1283 wp_send_json($html);
1284 }
1285 //Recently viewed product shortcode
1286 add_shortcode('wpwbot_products', 'qcld_wb_chatbot_recently_viewed_shortcode');
1287 function qcld_wb_chatbot_recently_viewed_shortcode(){
1288 // Get wpCommerce Global
1289 $_pf = new WC_Product_Factory();
1290 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
1291 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1292 // Get recently viewed product cookies data
1293 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1294 $viewed_products = array_filter(array_map('absint', $viewed_products));
1295 //get featured products if has.
1296 $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'))));
1297 //Getting recently vieew products.
1298 if (!empty($viewed_products)) {
1299 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))));
1300 $product_query = new WP_Query(array(
1301 'posts_per_page' => $product_per_page,
1302 'no_found_rows' => 1,
1303 'post_status' => 'publish',
1304 'post_type' => 'product',
1305 'post__in' => $viewed_products,
1306 ));
1307 //implementing featured products
1308 } else if ($featured_products->post_count > 0) {
1309 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome'))));
1310 $product_query = $featured_products;
1311 } else {
1312 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1313 //Getting recent products
1314 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1315 }
1316 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1317 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1318 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1319 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1320 } else {
1321 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1322 }
1323 $html = '<div class="wp-chatbot-agent-profile">
1324 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1325 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1326 <div class="wp-chatbot-bubble">' . esc_html($wp_chatbot_product_title) . '</div>
1327 </div>';
1328 if ($product_query->post_count > 0) {
1329 $html .= '<div class="wp-chatbot-products-area">';
1330 $html .= '<ul class="wp-chatbot-products">';
1331 while ($product_query->have_posts()) : $product_query->the_post();
1332 $product = $_pf->get_product(get_the_ID());
1333 $html .= '<li class="wp-chatbot-product">';
1334 $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()) . '">';
1335 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1336 <div class="wp-chatbot-product-summary">
1337 <div class="wp-chatbot-product-table">
1338 <div class="wp-chatbot-product-table-cell">
1339 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1340 <div class="price">' . $product->get_price_html() . '</div>';
1341 $html .= ' </div>
1342 </div>
1343 </div></a>
1344 </li>';
1345 endwhile;
1346 wp_reset_query();
1347 wp_reset_postdata();
1348 $html .= '</ul></div>';
1349 } else {
1350 $html .= '<div class="wp-chatbot-products-area">';
1351 $html .= '<p style="text-align: center">' . __('You have no products', 'chatbot') . ' !';
1352 $html .= '</div>';
1353 }
1354 return $html;
1355 }
1356 //Show cart for wp chatbot
1357 add_action('wp_ajax_qcld_wb_chatbot_show_cart', 'qcld_wb_chatbot_show_cart');
1358 add_action('wp_ajax_nopriv_qcld_wb_chatbot_show_cart', 'qcld_wb_chatbot_show_cart');
1359 function qcld_wb_chatbot_show_cart(){
1360 global $wpcommerce;
1361 // $cart_url = $wpcommerce->cart->get_cart_url();
1362 $cart_url = wc_get_cart_url();
1363 $checkout_url = wc_get_checkout_url();
1364 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1365 $items = $wpcommerce->cart->get_cart();
1366 $itemCount = $wpcommerce->cart->cart_contents_count;
1367 $cart_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart'))));
1368 $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1369 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1370 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1371 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1372 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1373 } else {
1374 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1375 }
1376 $html = '<div class="wp-chatbot-agent-profile">
1377 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1378 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1379 <div class="wp-chatbot-bubble">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome')))) . '</div>
1380 </div>';
1381 if ($itemCount >= 1) {
1382 $html .= '<div class ="wp-chatbot-cart-container">';
1383 $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>';
1384 $html .= '<div class ="wp-chatbot-cart-body">';
1385 foreach ($items as $item => $values) {
1386 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1387 //product image
1388 $getProductDetail = wc_get_product($values['product_id']);
1389 $price = get_post_meta($values['product_id'], '_price', true);
1390 $html .= '<div class="wp-chatbot-cart-single">
1391 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1392 $html .= '<div class="qcld-wp-chatbot-cell">';
1393 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1394 $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>';
1395 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1396 }
1397 $html .= ' </div>';//End of cart body
1398 $html .= '<div class="wp-chatbot-cart-single">
1399 <div class="qcld-wp-chatbot-cell"></div>
1400 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1401 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1402 </div>';
1403 $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>';
1404 $html .= ' </div>';
1405 } else {
1406 $html .= '<div class="wp-chatbot-cart-container">';
1407 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1408 $html .= '</div>';
1409 }
1410 $response = array('html' => $html, 'items' => $itemCount);
1411 wp_send_json($response);
1412 }
1413 //cart onley for wp chatbot
1414 add_action('wp_ajax_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1415 add_action('wp_ajax_nopriv_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1416 function qcld_wb_chatbot_only_cart(){
1417 global $wpcommerce;
1418 // $cart_url = $wpcommerce->cart->get_cart_url();
1419 $cart_url = wc_get_cart_url();
1420 $checkout_url = wc_get_checkout_url();
1421 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1422 $items = $wpcommerce->cart->get_cart();
1423 $itemCount = $wpcommerce->cart->cart_contents_count;
1424 $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1425
1426 $html = '';
1427 if ($itemCount >= 1) {
1428 $html .= '<div class ="wp-chatbot-cart-container">';
1429 $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>';
1430 $html .= '<div class ="wp-chatbot-cart-body">';
1431 foreach ($items as $item => $values) {
1432 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1433 //product image
1434 $getProductDetail = wc_get_product($values['product_id']);
1435 $price = get_post_meta($values['product_id'], '_price', true);
1436 $html .= '<div class="wp-chatbot-cart-single">
1437 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1438 $html .= '<div class="qcld-wp-chatbot-cell">';
1439 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1440 $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>';
1441 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1442 }
1443 $html .= ' </div>';//End of cart body
1444 $html .= '<div class="wp-chatbot-cart-single">
1445 <div class="qcld-wp-chatbot-cell"></div>
1446 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1447 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1448 </div>';
1449 $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>';
1450 $html .= ' </div>';
1451 } else {
1452 $html .= '<div class="wp-chatbot-cart-container">';
1453 $html .= '<div><p style="text-align:center">' . esc_html($no_cart_item_msg) . '</p></div>';
1454 $html .= '</div>';
1455 }
1456 $response = array('html' => $html, 'items' => $itemCount);
1457 wp_send_json($response);
1458 }
1459 //Cart show Shortcode
1460 add_shortcode('wpwbot_cart', 'qcld_wb_chatbot_cart_shortcode');
1461 function qcld_wb_chatbot_cart_shortcode(){
1462 global $wpcommerce;
1463 $items = $wpcommerce->cart->get_cart();
1464 $itemCount = $wpcommerce->cart->cart_contents_count;
1465 $cart_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart'))));
1466 $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1467 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1468 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1469 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1470 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1471 } else {
1472 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1473 }
1474 $html = '<div class="wp-chatbot-agent-profile">
1475 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1476 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1477 <div class="wp-chatbot-bubble">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome')))) . '</div>
1478 </div>';
1479 if ($itemCount >= 1) {
1480 $html .= '<div class ="wp-chatbot-cart-container">';
1481 $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>';
1482 $html .= '<div class ="wp-chatbot-cart-body">';
1483 foreach ($items as $item => $values) {
1484 $cart_item = apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1485 //product image
1486 $getProductDetail = wc_get_product($values['product_id']);
1487 $price = get_post_meta($values['product_id'], '_price', true);
1488 $html .= '<div class="wp-chatbot-cart-single">
1489 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1490 $html .= '<div class="qcld-wp-chatbot-cell">';
1491 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1492 $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>';
1493 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1494 }
1495 $html .= ' </div>';//End of cart body
1496 $html .= '<div class="wp-chatbot-cart-single">
1497 <div class="qcld-wp-chatbot-cell"></div>
1498 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1499 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1500 </div>';
1501 $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>';
1502 $html .= ' </div>';
1503 } else {
1504 $html .= '<div class="wp-chatbot-cart-container">';
1505 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1506 $html .= '</div>';
1507 }
1508 // $response=array('html'=>$html,'items'=>$itemCount);
1509 return $html;
1510 }
1511 //Updating the cart items.
1512 add_action('wp_ajax_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1513 add_action('wp_ajax_nopriv_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1514 function qcld_wb_chatbot_update_cart_item_number(){
1515 //getting cart items n
1516 $cart_item_key = sanitize_text_field(wp_unslash($_POST['cart_item_key']));
1517 $qnty = sanitize_text_field(wp_unslash($_POST['qnty']));
1518 global $wpcommerce;
1519 $result = $wpcommerce->cart->set_quantity($cart_item_key, $qnty);
1520 wp_send_json($result);
1521 }
1522 //Show item after removing from cart page.
1523 add_action('wp_ajax_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1524 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1525 function qcld_wb_chatbot_cart_item_remove(){
1526 //getting cart items n
1527 $cart_item_key = sanitize_text_field(wp_unslash($_POST['cart_item']));
1528 global $wpcommerce;
1529 $result = $wpcommerce->cart->remove_cart_item($cart_item_key);
1530 wp_send_json($result);
1531 }
1532 //Show cart page by shortcode.
1533 add_action('wp_ajax_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1534 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1535 function qcld_wb_chatbot_cart_page(){
1536 global $wpcommerce;
1537 $itemCount = $wpcommerce->cart->cart_contents_count;
1538 $html = "";
1539 if ($itemCount < 0) {
1540 $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1541 } else {
1542 $html .= do_shortcode("[wpcommerce_cart]");
1543 }
1544 wp_send_json($html);
1545 }
1546 //Show checkout page by shortcode.
1547 add_action('wp_ajax_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1548 add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1549 function qcld_wb_chatbot_checkout_page(){
1550 global $wpcommerce;
1551 $itemCount = $wpcommerce->cart->cart_contents_count;
1552 $html = "";
1553 if ($itemCount < 0) {
1554 $status = 'no';
1555 $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1556 } else {
1557 $status = 'yes';
1558 $checkout_page_id = get_option('wp_chatbot_app_checkout');
1559 $checkout_parmanlink = esc_url(get_permalink($checkout_page_id));
1560 $html .= $checkout_parmanlink;
1561 }
1562 $response = array('status' => $status, 'html' => $html);
1563 wp_send_json($response);
1564 }
1565 //_dynamic_intent
1566 function qcld_dynamic_intent(){
1567 global $wpdb;
1568 $intents = array();
1569
1570 $ai_df = get_option('enable_wp_chatbot_dailogflow');
1571 $custom_intent_labels = maybe_unserialize( get_option('qlcd_wp_custon_intent_label'));
1572 if($ai_df==1 && isset($custom_intent_labels[0]) && trim($custom_intent_labels[0])!=''):
1573
1574 foreach($custom_intent_labels as $custom_intent_label):
1575 $intents[] = $custom_intent_label;
1576 endforeach;
1577
1578 endif;
1579
1580
1581
1582 if(class_exists('Qcformbuilder_Forms_Admin')){
1583
1584
1585 $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM ". $wpdb->prefix."wfb_forms WHERE type= %s",'primary')); //DB Call OK, No Caching OK
1586
1587 if(!empty($results)){
1588
1589 foreach($results as $result){
1590 $form = maybe_unserialize($result->config);
1591 $intents[] = $form['name'];
1592 }
1593
1594 }
1595 }
1596
1597 if(!empty($intents)){
1598 return implode(", ", $intents);
1599 }else{
1600 return '';
1601 }
1602
1603 }
1604
1605 //User login on Checkout page.
1606 // add_action('wp_ajax_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1607 // add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1608 // function qcld_wb_chatbot_checkout_user_login(){
1609 // // Nonce is checked, get the POST data and sign user on
1610 // $info = array();
1611 // //$info['nonce'] = $_POST['nonce_val'];
1612 // $info['user_login'] = trim(sanitize_text_field(wp_unslash($_POST['user_name'])));
1613 // $info['user_password'] = trim(sanitize_text_field(wp_unslash($_POST['user_pass'])));
1614 // $info['remember'] = true;
1615 // $user_signon = wp_signon($info, false);
1616 // // $response=$info;
1617 // $response = array();
1618 // if (is_wp_error($user_signon)) {
1619 // // $response['status'] = "fail";
1620 // $response = "no";
1621 // } else {
1622 // $response = "yes";
1623 // }
1624 // wp_send_json($response);
1625 // }
1626 // Load template for App Order Thank You page url
1627 function wp_chatbot_load_app_template($template){
1628 if (is_page('wpwbot-mobile-app')) {
1629 return dirname(__FILE__) . '/templates/app-templates/app.php';
1630 }
1631 return $template;
1632 }
1633 add_filter('template_include', 'wp_chatbot_load_app_template', 99);
1634 // Load template for App Order Thank You page url
1635 function wp_chatbot_load_app_order_thankyou_template($template){
1636 if (is_page('wpwbot-app-order-thankyou')) {
1637 return dirname(__FILE__) . '/templates/app-templates/app-order-thankyou.php';
1638 }
1639 return $template;
1640 }
1641 add_filter('template_include', 'wp_chatbot_load_app_order_thankyou_template', 99);
1642 // Load template for App checkout
1643 function wp_chatbot_load_app_checkout_template($template){
1644 if (is_page('wpwbot-app-checkout')) {
1645 return dirname(__FILE__) . '/templates/app-templates/app-checkout.php';
1646 }
1647 return $template;
1648 }
1649 add_filter('template_include', 'wp_chatbot_load_app_checkout_template', 99);
1650 // Create embed page when plugin install or activate
1651 //register_activation_hook(__FILE__, 'wp_chatbot_create_app_order_thankyou_page');
1652 add_action('init', 'wp_chatbot_create_app_checkout_thankyou_page');
1653 function wp_chatbot_create_app_checkout_thankyou_page(){
1654 if (get_option('wp_chatbot_app_pages') == 1) {
1655 //Mobile App page create
1656 $existing_app = new WP_Query( array( 'post_type' => 'page', 'name' => 'wpwbot-mobile-app', 'post_status' => 'publish', 'posts_per_page' => 1 ) );
1657 if ( ! $existing_app->have_posts() ) {
1658 //post status and options
1659 $app_page = array(
1660 'comment_status' => 'closed',
1661 'ping_status' => 'closed',
1662 'post_author' => get_current_user_id(),
1663 'post_date' => gmdate('Y-m-d H:i:s'),
1664 'post_status' => 'publish',
1665 'post_title' => 'wpwBot Mobile App',
1666 'post_name' => 'wpwbot-mobile-app',
1667 'post_type' => 'page',
1668 );
1669 //insert page and save the id
1670 $wpwbot_app = wp_insert_post($app_page, false);
1671 //save the id in the database
1672 update_option('wp_chatbot_app_checkout', $wpwbot_app);
1673 }
1674 //App checkout page create
1675 $existing_checkout = new WP_Query( array( 'post_type' => 'page', 'name' => 'wpwbot-app-checkout', 'post_status' => 'publish', 'posts_per_page' => 1 ) );
1676 if ( ! $existing_checkout->have_posts() ) {
1677 //post status and options
1678 $checkout_page = array(
1679 'comment_status' => 'closed',
1680 'ping_status' => 'closed',
1681 'post_author' => get_current_user_id(),
1682 'post_date' => gmdate('Y-m-d H:i:s'),
1683 'post_status' => 'publish',
1684 'post_title' => 'wpwBot App Checkout',
1685 'post_name' => 'wpwbot-app-checkout',
1686 'post_type' => 'page',
1687 );
1688 //insert page and save the id
1689 $app_checkout = wp_insert_post($checkout_page, false);
1690 //save the id in the database
1691 update_option('wp_chatbot_app_checkout', $app_checkout);
1692 }
1693 //App Order thank you page create
1694 $existing_thankyou = new WP_Query( array( 'post_type' => 'page', 'name' => 'wpwbot-app-order-thankyou', 'post_status' => 'publish', 'posts_per_page' => 1 ) );
1695 if ( ! $existing_thankyou->have_posts() ) {
1696 //post status and options
1697 $thankyou_page = array(
1698 'comment_status' => 'closed',
1699 'ping_status' => 'closed',
1700 'post_author' => get_current_user_id(),
1701 'post_date' => gmdate('Y-m-d H:i:s'),
1702 'post_status' => 'publish',
1703 'post_title' => 'wpwBot App Order Thank You',
1704 'post_name' => 'wpwbot-app-order-thankyou',
1705 'post_type' => 'page',
1706 );
1707 //insert page and save the id
1708 $app_order_thankyou = wp_insert_post($thankyou_page, false);
1709 //save the id in the database
1710 update_option('wp_chatbot_app_order_thankyou', $app_order_thankyou);
1711 }
1712 }
1713 //Keep tracking from App by cookies
1714 if ( isset( $_GET['from'] ) && sanitize_text_field( wp_unslash( $_GET['from'] ) ) === 'app' ) { // phpcs:ignore WordPress.Security.NonceVerification
1715 if (!isset($_COOKIE['from_app'])) {
1716 setcookie('from_app', 'yes', (time() + 3600), '/');
1717 }
1718 }
1719 }
1720 /***
1721 * Override order Thank page for mobile app
1722 */
1723 add_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase', 10, 1);
1724 function qcld_wb_chatbot__redirect_after_purchase($order_get_id){
1725 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1726 global $wp;
1727 if (is_checkout() && !empty($wp->query_vars['order-received'])) {
1728 $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1729 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1730 wp_safe_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1731 exit;
1732 }
1733 } else {
1734 remove_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase');
1735 do_action('wpcommerce_thankyou', $order_get_id);
1736 }
1737 }
1738
1739 function qcld_choose_random($array){
1740 return $array[array_rand($array)];
1741 }
1742
1743 //User session count
1744 add_action('wp_ajax_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1745 add_action('wp_ajax_nopriv_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1746 function qcld_wb_chatbot_session_count(){
1747 // Nonce is checked, get the POST data and sign user on
1748 check_ajax_referer( 'wp_chatbot', 'nonce' );
1749 global $wpdb;
1750 $wpdb->show_errors = true;
1751 $tableuser = $wpdb->prefix.'wpbot_sessions';
1752 $response = array();
1753
1754
1755 $session_exists = $wpdb->get_row($wpdb->prepare("select * from $tableuser where 1 and id = %d",1)); //DB Call OK, No Caching OK
1756
1757 if(empty($session_exists)){
1758 $wpdb->insert(
1759 $tableuser,
1760 array(
1761 'session' => 1,
1762 )
1763 ); //DB Call OK, No Caching OK
1764 }else{
1765
1766 $session_id = $session_exists->id;
1767
1768 $wpdb->update(
1769 $tableuser,
1770 array(
1771 'session'=>($session_exists->session+1),
1772 ),
1773 array('id'=>$session_id),
1774 array(
1775 '%d',
1776 ),
1777 array('%d')
1778 ); //DB Call OK, No Caching OK
1779
1780 }
1781
1782 wp_send_json($response);
1783 }
1784
1785 /* WPBot Chat History Addon check */
1786 function qcld_wpbot_is_active_chat_history(){
1787
1788 if(function_exists('qcwp_chat_session_menu_fnc') || function_exists( 'qcpdcs_chat_session_menu_fnc' ) ){
1789 return 1;
1790 }else{
1791 return 0;
1792 }
1793
1794 }
1795
1796 function qcld_wpbot_input_validation( $data ) {
1797 $data = html_entity_decode($data);
1798 $data = trim($data);
1799 $data = stripslashes($data);
1800 $data = htmlspecialchars($data);
1801 return $data;
1802 }
1803 add_action('wp_ajax_qcld_small_talk_import', 'qcld_small_talk_import');
1804 function qcld_small_talk_import(){
1805
1806 global $wpdb;
1807
1808 $table = $wpdb->prefix.'wpbot_response';
1809
1810 $csvFile = file(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . 'small_talk.csv');
1811
1812 foreach ($csvFile as $line) {
1813 $line = str_getcsv($line, ',', '"');
1814 $wpdb->insert($table, array(
1815 'query' => $line[0],
1816 'keyword' => $line[1],
1817 'response' => $line[2],
1818 'category'=> $line[3],
1819 'intent'=> '',
1820 //'lang'=> 'en_US',
1821 )); //DB Call OK, No Caching OK
1822 }
1823
1824 $table2 = $wpdb->prefix.'wpbot_response_category';
1825
1826 $wpdb->insert($table2, array(
1827 'name' => 'smalltalk',
1828 )); //DB Call OK, No Caching OK
1829
1830 update_option( 'qcld_small_talk_imported', 'yes' );
1831
1832 }
1833 function sanitize_array( &$array ) {
1834 if (!empty($array)) {
1835 foreach ($array as &$value) {
1836 if( !is_array($value) )
1837 // sanitize if value is not an array
1838 $value = sanitize_text_field( esc_html($value) );
1839 else
1840 // go inside this function again
1841 sanitize_array(esc_html($value));
1842 }
1843 }
1844 return $array;
1845 }
1846 function qcld_wpbot_meta_tags() {
1847 echo '<!-- "This site uses ChatBot for WordPress - WPBot from https://www.wpbot.pro/" -->';
1848 }
1849 add_action('wp_footer', 'qcld_wpbot_meta_tags', 100);
1850
1851 if ( ! function_exists( 'qcld_change_language_from_center' ) ) {
1852 add_action( 'wp_ajax_qcld_change_language_from_center', 'qcld_change_language_from_center' );
1853 add_action( 'wp_ajax_nopriv_qcld_change_language_from_center', 'qcld_change_language_from_center' );
1854 function qcld_change_language_from_center() {
1855 if ( ! current_user_can( 'manage_options' ) ) {
1856 wp_send_json_error( array( 'message' => 'Unauthorized.' ) );
1857 }
1858 $plugin_path = plugin_dir_path( __FILE__ );
1859 include $plugin_path . 'includes/admin/settings-fields.php';
1860 $json_file_path = $plugin_path . 'includes/language-center.json';
1861
1862 $json_string = file_get_contents( $json_file_path );
1863 if ( isset( $_POST['language'] ) ) {
1864 $language = sanitize_text_field( wp_unslash( $_POST['language'] ) );
1865 $language_array= json_decode($json_string)->$language;
1866 update_option( 'wp_chatbot_language_center_language', $language );
1867 wp_send_json_success( array( 'message' => true, 'data' => $language_array, 'language' => $language ) );
1868 } else {
1869 wp_send_json_error( array( 'message' => 'Language not specified.' ) );
1870
1871 }
1872 }
1873 }