PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services / 7.9.6
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services v7.9.6
8.7.5 8.7.4 8.7.3 8.7.2 8.7.1 8.7.0 8.6.9 8.6.8 8.6.7 8.6.6 8.6.5 8.6.4 8.6.2 8.6.1 8.6.0 8.5.9 8.5.8 8.5.7 8.5.6 8.5.5 8.5.4 8.5.3 8.5.2 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 7.9.6, at functions.php

1,868 lines 100.0 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 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(date('l',strtotime(current_time( 'mysql' ))));
318 $current_time=date('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($_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('product_cat', array('parent' => 0, 'hide_empty' => true, 'fields' => 'all'));
438
439 } else {
440 $terms = get_terms('product_cat', array('hide_empty' => true, 'fields' => 'all'));
441 }
442 $html = "";
443 foreach ($terms as $term) {
444 $child_terms=get_terms('product_cat', array('parent' => $term->term_id, 'hide_empty' => true, 'fields' => 'all'));
445 if(get_option('wp_chatbot_show_sub_category')==1 && count($child_terms) >0){
446 $category_type="hasChilds";
447 }
448 $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>';
449 }
450 wp_send_json($html);
451
452 }
453 /**
454 * wpwBot Sub categories
455 */
456 add_action('wp_ajax_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
457 add_action('wp_ajax_nopriv_qcld_wb_chatbot_sub_category', 'qcld_wb_chatbot_sub_category');
458 function qcld_wb_chatbot_sub_category(){
459 $parent_id = stripslashes($_POST['parent_id']);
460 $terms = get_terms('product_cat', array('parent' => $parent_id, 'hide_empty' => true, 'fields' => 'all'));
461 $html = "";
462 foreach ($terms as $term) {
463 $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>';
464 }
465 wp_send_json($html);
466
467 }
468 /**
469 * wpwBot category product
470 */
471 add_action('wp_ajax_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
472 add_action('wp_ajax_nopriv_qcld_wb_chatbot_category_products', 'qcld_wb_chatbot_category_products');
473 function qcld_wb_chatbot_category_products(){
474 $category_id = stripslashes($_POST['category']);
475 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
476 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
477 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
478 //Merging all query together.
479 $argu_params = array(
480 'post_type' => 'product',
481 'post_status' => 'publish',
482 'ignore_sticky_posts' => 1,
483 'orderby' => $product_orderby,
484 'order' => $product_order,
485 'posts_per_page' => $product_per_page,
486 'tax_query' => array(
487 array(
488 'taxonomy' => 'product_cat',
489 'field' => 'term_id',
490 'terms' => $category_id,
491 'operator' => 'IN'
492 )
493 )
494 );
495 /******
496 *WP Query Operation to get products.*
497 *******/
498 $product_query = new WP_Query($argu_params);
499 $product_num = $product_query->post_count;
500 //Getting total product number by string.
501 $total_argu = array(
502 'post_type' => 'product',
503 'post_status' => 'publish',
504 'posts_per_page' => 100,
505 'tax_query' => array(
506 array(
507 'taxonomy' => 'product_cat',
508 'field' => 'term_id',
509 'terms' => $category_id,
510 'operator' => 'IN'
511 )
512 )
513 );
514 $total_query = new WP_Query($total_argu);
515 $total_product_num = $total_query->post_count;
516 $_pf = new WC_Product_Factory();
517 //repeating the products
518 $html = '';
519 if ($product_num > 0) {
520 $html .= '<div class="wp-chatbot-products-area">';
521 $html .= '<ul class="wp-chatbot-products">';
522 while ($product_query->have_posts()) : $product_query->the_post();
523 $product = $_pf->get_product(get_the_ID());
524 //$qcld_thumb = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'shop_thumbnail' );
525 $html .= '<li class="wp-chatbot-product">';
526 $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()) . '">';
527 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
528 <div class="wp-chatbot-product-summary">
529 <div class="wp-chatbot-product-table">
530 <div class="wp-chatbot-product-table-cell">
531 <h3 class="wp-chatbot-product-title">' . $product->get_title() . '</h3>
532 <div class="price">' . $product->get_price_html() . '</div>';
533 $html .= ' </div>
534 </div>
535 </div></a>
536 </li>';
537 endwhile;
538 wp_reset_postdata();
539 $html .= '</ul>';
540 if ($total_product_num > $product_per_page && $product_per_page >0) {
541 $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>';
542 }
543 $html .= '</div>';
544 } else {
545 $html = '';
546 }
547 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
548 wp_send_json($response);
549 }
550 /**
551 * wpwBot latest, featured, recent product
552 */
553 add_action('wp_ajax_qcld_wb_chatbot_featured_products', 'qcld_wb_chatbot_featured_products');
554 add_action('wp_ajax_nopriv_qcld_wb_chatbot_featured_products', 'qcld_wb_chatbot_featured_products');
555 function qcld_wb_chatbot_featured_products(){
556 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
557 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
558 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
559 //get featured products query.
560 $argu_params = array('post_status' => 'publish',
561 'posts_per_page' => $product_per_page,
562 'post_type' => 'product',
563 'post_status' => 'publish',
564 'tax_query' => array(array('taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured'))
565 );
566 /******
567 *WP Query Operation to get products.*
568 *******/
569 $product_query = new WP_Query($argu_params);
570 $product_num = $product_query->post_count;
571 //Getting total product number by string.
572 $total_argu = array('post_status' => 'publish',
573 'posts_per_page' => 100,
574 'post_type' => 'product',
575 'post_status' => 'publish',
576 'tax_query' => array(array('taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured',),)
577 );
578 $total_query = new WP_Query($total_argu);
579 $total_product_num = $total_query->post_count;
580 $html = '<div class="wp-chatbot-products-area">';
581 $_pf = new WC_Product_Factory();
582 //repeating the products
583 if ($product_num > 0) {
584 //$html .= '<p>sdf sdfdsf : '.$asdfdf.'</p>';
585 $html .= '<ul class="wp-chatbot-products">';
586 while ($product_query->have_posts()) : $product_query->the_post();
587 $product = $_pf->get_product(get_the_ID());
588 $html .= '<li class="wp-chatbot-product">';
589 $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()) . '">';
590 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
591 <div class="wp-chatbot-product-summary">
592 <div class="wp-chatbot-product-table">
593 <div class="wp-chatbot-product-table-cell">
594 <h3 class="wp-chatbot-product-title">' . $product->get_title() . '</h3>
595 <div class="price">' . $product->get_price_html() . '</div>';
596 $html .= ' </div>
597 </div>
598 </div></a>
599 </li>';
600 endwhile;
601 wp_reset_postdata();
602 $html .= '</ul>';
603 if ($total_product_num > $product_per_page) {
604 $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>';
605 }
606 }
607 $html .= '</div>';
608 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
609 wp_send_json($response);
610 }
611 //Product display controll
612 function wp_chatbot_product_controlling($product_id){
613 $display_product = true;
614 //Controlling Out of Stock product display from back end.
615 $_pf = new WC_Product_Factory();
616 $product = $_pf->get_product($product_id);
617 if ($product->manage_stock == 'yes' && $product->stock_quantity <= 0 && get_option('wp_chatbot_exclude_stock_out_product') == 1) {
618 $display_product = false;
619 }
620 return $display_product;
621 }
622 //Get Sale products
623 add_action('wp_ajax_qcld_wb_chatbot_sale_products', 'qcld_wb_chatbot_sale_products');
624 add_action('wp_ajax_nopriv_qcld_wb_chatbot_sale_products', 'qcld_wb_chatbot_sale_products');
625 function qcld_wb_chatbot_sale_products(){
626 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
627 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
628 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
629 //get sale products query.
630 $argu_params = array(
631 'post_type' => 'product',
632 'post_status' => 'publish',
633 'posts_per_page' => $product_per_page,
634 'meta_query' => array(
635 'relation' => 'OR',
636 array( // Simple products type
637 'key' => '_sale_price',
638 'value' => 0,
639 'compare' => '>',
640 'type' => 'numeric'
641 ),
642 array( // Variable products type
643 'key' => '_min_variation_sale_price',
644 'value' => 0,
645 'compare' => '>',
646 'type' => 'numeric'
647 )
648 )
649 );
650 /******
651 *WP Query Operation to get products.*
652 *******/
653 $product_query = new WP_Query($argu_params);
654 $product_num = $product_query->post_count;
655 //Getting total product number by string.
656 $total_argu = array(
657 'post_type' => 'product',
658 'post_status' => 'publish',
659 'posts_per_page' => 100,
660 'meta_query' => array(
661 'relation' => 'OR',
662 array( // Simple products type
663 'key' => '_sale_price',
664 'value' => 0,
665 'compare' => '>',
666 'type' => 'numeric'
667 ),
668 array( // Variable products type
669 'key' => '_min_variation_sale_price',
670 'value' => 0,
671 'compare' => '>',
672 'type' => 'numeric'
673 )
674 )
675 );
676 $total_query = new WP_Query($total_argu);
677 $total_product_num = $total_query->post_count;
678 $html = '<div class="wp-chatbot-products-area">';
679 $_pf = new WC_Product_Factory();
680 //repeating the products
681 if ($product_num > 0) {
682 //$html .= '<p>sdf sdfdsf : '.$asdfdf.'</p>';
683 $html .= '<ul class="wp-chatbot-products">';
684 while ($product_query->have_posts()) : $product_query->the_post();
685 $product = $_pf->get_product(get_the_ID());
686 $html .= '<li class="wp-chatbot-product">';
687 $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()) . '">';
688 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
689 <div class="wp-chatbot-product-summary">
690 <div class="wp-chatbot-product-table">
691 <div class="wp-chatbot-product-table-cell">
692 <h3 class="wp-chatbot-product-title">' . $product->get_title() . '</h3>
693 <div class="price">' . $product->get_price_html() . '</div>';
694 $html .= ' </div>
695 </div>
696 </div></a>
697 </li>';
698 endwhile;
699 wp_reset_postdata();
700 $html .= '</ul>';
701 if ($total_product_num > $product_per_page) {
702 $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>';
703 }
704 }
705 $html .= '</div>';
706 $response = array('html' => $html, 'product_num' => $total_product_num, 'per_page' => $product_per_page);
707 wp_send_json($response);
708 }
709 //load more
710 add_action('wp_ajax_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
711 add_action('wp_ajax_nopriv_qcld_wb_chatbot_load_more', 'qcld_wb_chatbot_load_more');
712 function qcld_wb_chatbot_load_more(){
713 $offset = stripslashes($_POST['offset']);
714 $search_type = stripslashes($_POST['search_type']);
715 $search_term = stripslashes($_POST['search_term']);
716 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
717 $product_orderby = sanitize_text_field(get_option('qlcd_wp_chatbot_product_orderby') != '' ? get_option('qlcd_wp_chatbot_product_orderby') : 'title');
718 $product_order = sanitize_text_field(get_option('qlcd_wp_chatbot_product_order') != '' ? get_option('qlcd_wp_chatbot_product_order') : 'ASC');
719 $next_offset = intval($product_per_page + $offset);
720 if ($search_type == 'product' && $search_term != 'featured' && $search_term != 'sale' && get_option('qlcd_wp_chatbot_search_option') == 'advanced') {
721 //if have multiple ids then explode else have single need to array push
722 if (strpos($search_term, ',') !== false) {
723 $product_ids = explode(',', $search_term);
724 } else {
725 $product_ids = array($search_term);
726 }
727 $result = wpwBot_Search::factory()->get_load_more_products($product_ids);
728 $products = $result['products'];
729 $product_num = count($result['products']);
730 $total_product_num = $result['total_products'];
731 $more_product_ids = implode(",", $result['more_ids']);
732 $_pf = new WC_Product_Factory();
733 //repeating the products
734 $html = '';
735 if ($product_num > 0) {
736 foreach ($products as $product) {
737 $html .= '<li class="wp-chatbot-product">';
738 $html .= '<a target="_blank" href="' . get_permalink($product->get_id()) . '" wp-chatbot-pid= "' . $product->get_id() . '" title="' . esc_attr($product->get_title()) . '">';
739 $html .= get_the_post_thumbnail($product->get_id(), 'shop_catalog') . '
740 <div class="wp-chatbot-product-summary">
741 <div class="wp-chatbot-product-table">
742 <div class="wp-chatbot-product-table-cell">
743 <h3 class="wp-chatbot-product-title">' . $product->get_title() . '</h3>
744 <div class="price">' . $product->get_price_html() . '</div>';
745 $html .= ' </div></div></div></a></li>';
746 }
747 }
748 $response = array('html' => $html, 'product_num' => $total_product_num, 'search_term' => $more_product_ids, 'offset' => $next_offset, 'per_page' => $product_per_page);
749 } else {
750 if ($search_type == 'product' && $search_term != 'featured' && $search_term != 'sale') { //For Standard search
751 $argu_params = array(
752 'post_type' => 'product',
753 'post_status' => 'publish',
754 'posts_per_page' => $product_per_page,
755 'offset' => $offset,
756 'orderby' => $product_orderby,
757 'order' => $product_order,
758 's' => $search_term,
759 );
760 } else if ($search_type == 'category') {
761 $argu_params = array(
762 'post_type' => 'product',
763 'post_status' => 'publish',
764 'ignore_sticky_posts' => 1,
765 'posts_per_page' => $product_per_page,
766 'orderby' => $product_orderby,
767 'order' => $product_order,
768 'offset' => $offset,
769 'tax_query' => array(
770 array(
771 'taxonomy' => 'product_cat',
772 'field' => 'term_id',
773 'terms' => $search_term,
774 'operator' => 'IN'
775 )
776 )
777 );
778 } else if ($search_type == 'product' && $search_term == 'featured') {
779 $argu_params = array(
780 'post_type' => 'product',
781 'post_status' => 'publish',
782 'ignore_sticky_posts' => 1,
783 'posts_per_page' => $product_per_page,
784 'orderby' => $product_orderby,
785 'order' => $product_order,
786 'offset' => $offset,
787 'meta_query' => array('key' => '_featured', 'value' => 'yes')
788 );
789 } else if ($search_type == 'product' && $search_term == 'sale') {
790 $argu_params = array(
791 'post_type' => 'product',
792 'post_status' => 'publish',
793 'ignore_sticky_posts' => 1,
794 'posts_per_page' => $product_per_page,
795 'orderby' => $product_orderby,
796 'order' => $product_order,
797 'offset' => $offset,
798 'meta_query' => array(
799 'relation' => 'OR',
800 array( // Simple products type
801 'key' => '_sale_price',
802 'value' => 0,
803 'compare' => '>',
804 'type' => 'numeric'
805 ),
806 array( // Variable products type
807 'key' => '_min_variation_sale_price',
808 'value' => 0,
809 'compare' => '>',
810 'type' => 'numeric'
811 )
812 )
813 );
814 }
815 $product_query = new WP_Query($argu_params);
816 $product_num = $product_query->post_count;
817 $_pf = new WC_Product_Factory();
818 //repeating the products
819 $html = '';
820 if ($product_num > 0) {
821 while ($product_query->have_posts()) : $product_query->the_post();
822 $product = $_pf->get_product(get_the_ID());
823 $html .= '<li class="wp-chatbot-product">';
824 $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()) . '">';
825 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
826 <div class="wp-chatbot-product-summary">
827 <div class="wp-chatbot-product-table">
828 <div class="wp-chatbot-product-table-cell">
829 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
830 <div class="price">' . $product->get_price_html() . '</div>';
831 $html .= ' </div>
832 </div>
833 </div></a>
834 </li>';
835 endwhile;
836 wp_reset_postdata();
837 } else {
838 $html .= '';
839 }
840 $response = array('html' => $html, 'product_num' => $product_num, 'search_term' => $search_term, 'offset' => $next_offset, 'per_page' => $product_per_page);
841 }
842 wp_send_json($response);
843 }
844 //product details
845 add_action('wp_ajax_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
846 add_action('wp_ajax_nopriv_qcld_wb_chatbot_product_details', 'qcld_wb_chatbot_product_details');
847 function qcld_wb_chatbot_product_details(){
848 $product_id = stripslashes($_POST['wp_chatbot_pid']);
849 //Tracking product view from chat board
850 wp_chatbot_view_track_product_by_id($product_id);
851 //wpcommerce product factory
852 $wc_pf = new WC_Product_Factory();
853 $product = $wc_pf->get_product($product_id);
854 $product_type = $wc_pf->get_product_type($product_id);
855 $product_title = '<h2 id="wp-chatbot-product-title" ><a target="_blank" href="' . get_permalink($product->get_id()) . '">' . $product->get_title() . '</a></h2>';
856 $product_desc = apply_filters('the_excerpt', $product->post->post_excerpt);//$product->post->post_excerpt;
857 $gallery_ids = $product->get_gallery_image_ids();
858 //images processing..
859 $product_feature_image_id = get_post_thumbnail_id($product_id);
860 $product_feature_image = wp_get_attachment_image_src($product_feature_image_id, 'full');
861 $product_feature_thumb = wp_get_attachment_image_src($product_feature_image_id, 'shop_thumbnail');
862 //$full_img_src = $product_feature_image[0];
863 //$product_image = '<img style="width:500px;height:300px" src="' . $full_img_src . '" >';
864 $product_image = '<div class="wp-chatbot-product-image-large">
865 <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>
866 </div>';
867 $product_image .= '<div class="wp-chatbot-product-image-thumbs"><ul>
868 <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>';
869 if (!empty($gallery_ids)) {
870 foreach ($gallery_ids as $gallery_id) {
871 $gallery_image = wp_get_attachment_image_src($gallery_id, 'full');
872 $gallery_thumb = wp_get_attachment_image_src($gallery_id, 'shop_thumbnail');
873 $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>';
874 }
875 }
876 $product_image .= '</ul></div>';
877 $product_price = '<p class="wp-chatbot-product-price" id="wp-chatbot-product-price">' . $product->get_price_html() . '</p>';
878 $product_sku = '<p class="wp-chatbot-product-sku"> ' . __('SKU', 'chatbot') . ' : ' . $product->get_sku() . '</p>';
879 //if ( $product->is_in_stock() || $product->is_purchasable() )
880 //Handle variable product start
881 $variations = "";
882 $add_cart_button = "";
883 $product_quantity = "";
884 if ($product->is_in_stock()) {
885 if ($product_type == "variable") {
886 //Getting product variation number based details
887 $variations_data = array();
888 foreach ($product->get_children() as $child_id) {
889 $all_cfs = get_post_custom($child_id);
890 array_push($variations_data, array('variation_id' => $child_id, 'variation_data' => $all_cfs));
891 }
892 $variations_data = json_encode($variations_data);
893 $attributes = $product->get_attributes();
894 //Handling Variant & Non Variant products
895 $var_attrs = $product->get_variation_attributes();
896 $varation_names = array();
897 if (!empty($var_attrs)) {
898 foreach ($var_attrs as $key => $value) {
899 array_push($varation_names, $key);
900 }
901 }
902 $debug = $varation_names;
903 foreach ($attributes as $attribute) {
904 /*if (empty($attribute['is_visible']) || ($attribute['is_taxonomy'] && !taxonomy_exists($attribute['name']))) {
905 continue;
906 }*/
907 $title = wc_attribute_label($attribute['name']);
908 $name = $attribute['name'];
909 if ($attribute['is_taxonomy']) {
910 $values = wc_get_product_terms($product->get_id(), $attribute['name'], array('fields' => 'slugs'));
911 } else {
912 $values = array_map('trim', explode(WC_DELIMITER, $attribute['value']));
913 }
914 natsort($values);
915 if (!in_array($name, $varation_names)) {
916 $variations .= '<p><label for="' . sanitize_title($name) . '">' . $title . '</label> ' . ucfirst(implode(",", $values)) . '</p>';
917 } else {
918 $variations .= '<div class="wp-chatbot-variable-' . sanitize_title($name) . '">';
919 $variations .= '<label for="' . sanitize_title($name) . '">' . $title . '</label>';
920 $variations .= '<select id="' . esc_attr(sanitize_title($name)) . '" name="attribute_' . sanitize_title($name) . '" data-attribute_name="attribute_' . sanitize_title($name) . '" class="each_attribute">';
921 $variations .= '<option value="">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_choose_option')))) . '</option>';
922 foreach ($values as $value) {
923 if (isset($_REQUEST['attribute_' . sanitize_title($name)])) {
924 $selected_value = $_REQUEST['attribute_' . sanitize_title($name)];
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 = stripslashes($_POST['p_id']);
951 $quantity = stripslashes($_POST['quantity']);
952 $variations_id = stripslashes($_POST['variations_id']);
953 $attrs = stripslashes($_POST['attributes']);
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 = stripslashes($_POST['product_id']);
976 $product_quantity = stripslashes($_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 $name = trim(sanitize_text_field($_POST['name']));
990 $email = sanitize_email($_POST['email']);
991 $message = sanitize_text_field($_POST['message']);
992 $subject = sanitize_text_field(get_option('qlcd_wp_chatbot_email_sub') != '' ? get_option('qlcd_wp_chatbot_email_sub') : 'Support Email from wpWBot by Client');
993 //Extract Domain
994 $url = get_site_url();
995 $url = parse_url($url);
996 $domain = $url['host'];
997 //$admin_email = "admin@" . $domain;
998 $admin_email = sanitize_email(get_option('admin_email'));
999 $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
1000
1001
1002 if(get_option('qlcd_wp_chatbot_from_email') && get_option('qlcd_wp_chatbot_from_email')!=''){
1003 $fromEmail = get_option('qlcd_wp_chatbot_from_email');
1004 }else{
1005 $fromEmail = "wordpress@" . $domain;
1006 }
1007
1008 //Starting messaging and status.
1009 $response['status'] = 'fail';
1010 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_fail')));
1011 if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
1012 $response['message'] = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_invalid_email'))));
1013 $response['status'] = 'fail';
1014 } else {
1015 //build email body
1016 $bodyContent = "";
1017 $bodyContent .= '<p><strong>' . __('Support Request Details', 'chatbot') . ':</strong></p><hr>';
1018 $bodyContent .= '<p>' . __('Name', 'chatbot') . ' : ' . $name . '</p>';
1019 $bodyContent .= '<p>' . __('Email', 'chatbot') . ' : ' . $email . '</p>';
1020 $bodyContent .= '<p>' . __('Subject', 'chatbot') . ' : ' . $subject . '</p>';
1021 $bodyContent .= '<p>' . __('Message', 'chatbot') . ' : ' . $message . '</p>';
1022 $bodyContent .= '<p>' . __('Mail Generated on', 'chatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1023 $to = $toEmail;
1024 $body = $bodyContent;
1025 $headers = array();
1026 $headers[] = 'Content-Type: text/html; charset=UTF-8';
1027 $headers[] = 'From: ' . $name . ' <' . $fromEmail . '>';
1028 $headers[] = 'Reply-To: ' . $name . ' <' . $email . '>';
1029 $result = wp_mail($to, $subject, $body, $headers);
1030 if ($result) {
1031 $response['status'] = 'success';
1032 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_email_sent')));
1033 }
1034
1035 }
1036 echo wp_json_encode($response);
1037 die();
1038 }
1039 //Support Phone
1040 add_action('wp_ajax_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1041 add_action('wp_ajax_nopriv_qcld_wb_chatbot_support_phone', 'qcld_wb_chatbot_support_phone');
1042 function qcld_wb_chatbot_support_phone(){
1043 $name = trim(sanitize_text_field($_POST['name']));
1044 $phone =sanitize_text_field($_POST['phone']);
1045 $subject = 'WPBot Support Mail Request for Call Back';
1046 //Extract Domain
1047 $url = get_site_url();
1048 $url = parse_url($url);
1049 $domain = $url['host'];
1050 //$admin_email = "admin@" . $domain;
1051 $admin_email = get_option('admin_email');
1052 $toEmail = sanitize_email(get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email);
1053
1054
1055 if(get_option('qlcd_wp_chatbot_from_email') && get_option('qlcd_wp_chatbot_from_email')!=''){
1056 $fromEmail = sanitize_email(get_option('qlcd_wp_chatbot_from_email'));
1057 }else{
1058 $fromEmail = "wordpress@" . $domain;
1059 }
1060 //Starting messaging and status.
1061 $response['status'] = 'fail';
1062 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_fail')));
1063 //build email body
1064 $bodyContent = "";
1065 $bodyContent .= '<p><strong>' . __('Support Request Details', 'chatbot') . ':</strong></p><hr>';
1066 $bodyContent .= '<p>' . __('Name', 'chatbot') . ' : ' . $name . '</p>';
1067 $bodyContent .= '<p>' . __('Phone', 'chatbot') . ' : ' . $phone . '</p>';
1068 $bodyContent .= '<p>' . __('Subject', 'chatbot') . ' : ' . $subject . '</p>';
1069 $bodyContent .= '<p>' . __('Message', 'chatbot') . ' : ' . __(' Call me at ', 'chatbot'). $phone . '</p>';
1070 $bodyContent .= '<p>' . __('Mail Generated on', 'chatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
1071 $to = $toEmail;
1072 $body = $bodyContent;
1073 $headers = array();
1074 $headers[] = 'Content-Type: text/html; charset=UTF-8';
1075 $headers[] = 'From: ' . $name . ' <' . $fromEmail . '>';
1076 $headers[] = 'Reply-To: ' . $name . ' <' . $fromEmail . '>';
1077 $result = wp_mail($to, $subject, $body, $headers);
1078 if ($result) {
1079 $response['status'] = 'success';
1080 $response['message'] = str_replace('\\', '',wp_kses_post(get_option('qlcd_wp_chatbot_phone_sent')));
1081 }
1082 echo wp_json_encode($response);
1083 die();
1084 }
1085 // Order Status part. removed
1086
1087 function wpb_randmom_message_handle($items){
1088 return $items[rand(0, count($items) - 1)];
1089 }
1090 function qcld_wb_chatbot_func_str_replace($messages = array()){
1091 $refined_mesgses = array();
1092 foreach ($messages as $message) {
1093 $refined_msg = str_replace('\\', '', $message);
1094 array_push($refined_mesgses, $refined_msg);
1095 }
1096 return $refined_mesgses;
1097 }
1098 add_action('wp_ajax_qcld_wb_chatbot_login_user', 'qcld_wb_chatbot_login_user');
1099 add_action('wp_ajax_nopriv_qcld_wb_chatbot_login_user', 'qcld_wb_chatbot_login_user');
1100 function qcld_wb_chatbot_login_user(){
1101 // First check the nonce, if it fails the function will break
1102 check_ajax_referer('wpwbot-order-nonce', 'security');
1103 // Nonce is checked, get the POST data and sign user on
1104 $info = array();
1105 $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1106 $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1107 $info['remember'] = true;
1108 $user_signon = wp_signon($info, false);
1109 $response = array();
1110 if (is_wp_error($user_signon)) {
1111 $response['status'] = "fail";
1112 $response['message'] = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect'))));
1113 } else {
1114 $response = get_order_by_username($info['user_login']);
1115 $response['status'] = "success";
1116 }
1117 wp_send_json($response);
1118 }
1119 add_action('wp_ajax_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1120 add_action('wp_ajax_nopriv_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1121 function qcld_wb_chatbot_loged_in_user_orders(){
1122 $current_user = wp_get_current_user();
1123 $user_name = $current_user->user_login;
1124 $response = get_order_by_username($user_name);
1125 wp_send_json($response);
1126 }
1127 function get_order_by_username($user_name){
1128 global $post;
1129 $response = array();
1130 $response['status'] .= "success";
1131 $user = get_user_by('login', $user_name);
1132 // The query arguments
1133 $customer_orders = get_posts(array(
1134 'numberposts' => -1,
1135 'meta_key' => '_customer_user',
1136 'meta_value' => $user->ID,
1137 'post_type' => wc_get_order_types(),
1138 'post_status' => array_keys(wc_get_order_statuses()),
1139 'posts_per_page' => 10,
1140 'orderby' => 'date',
1141 ));
1142 $response['order_num'] = count($customer_orders);
1143 $order_html = '';
1144 if ($response['order_num'] > 0) {
1145 $response['message'] .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_found'))));
1146 $order_html .= '<div class="wp-chatbot-orders-container">
1147 <div class="wp-chatbot-orders-header">
1148 <div class="order-id">' . __('ID', 'chatbot') . '</div>
1149 <div class="order-date">' . __('Date', 'chatbot') . ' </div>
1150 <div class="order-items">' . __('Items', 'chatbot') . '</div>
1151 <div class="order-status">' . __('Status', 'chatbot') . '</div>
1152 </div>';
1153 foreach ($customer_orders as $order) {
1154 //Formatting order summery
1155 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1156 $thanks_page_id = sanitize_text_field(get_option('wp_chatbot_app_order_thankyou'));
1157 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1158 $order_url = '<a href="' . $thanks_parmanlink . '?order_id=' . $order->ID . '" >' . $order->ID . '</a>';
1159 } else {
1160 $order_url = '<a href="' . get_url(get_permalink(get_option('wpcommerce_myaccount_page_id')) . '/view-order/' . $order->ID) . '" target="_blank" >' . $order->ID . '</a>';
1161 }
1162 $order_html .= '<div class="wp-chatbot-orders-single">
1163 <div class="order-id"> ' . $order_url . '</div>
1164 <div class="order-date"> <p>' . date("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1165 <div class="order-items">';
1166 $singleOrder = new WC_Order($order->ID);
1167 $items = $singleOrder->get_items();
1168 foreach ($items as $item) {
1169 $order_html .= '<p>' . $item["name"] . ' X ' . $item["qty"] . '</p>';
1170 }
1171 $order_html .= '</div>
1172 <div class="order-status">' . strtoupper(end(explode("-", $order->post_status))) . '</div>
1173
1174 </div>';
1175 }
1176 $order_html .= '</div>';
1177 } else {
1178 $response['message'] .= get_option('qlcd_wp_chatbot_sorry') . '! <strong>' . $user_name . '</strong>';
1179 $order_html .= '<p>' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_not_found')))) . '</p>';
1180 }
1181 $response['html'] = $order_html;
1182 return $response;
1183 }
1184 //Recently viewed products
1185 //keeping id in cookies as
1186 function wp_chatbot_track_product_view(){
1187 if (!is_singular('product')) {
1188 return;
1189 }
1190 global $post;
1191 wp_chatbot_view_track_product_by_id($post->ID);
1192 }
1193 function wp_chatbot_view_track_product_by_id($post_id){
1194 if (empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']))
1195 $viewed_products = array();
1196 else
1197 $viewed_products = (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']);
1198 if (!in_array($post_id, $viewed_products)) {
1199 $viewed_products[] = $post_id;
1200 }
1201 if (sizeof($viewed_products) > 15) {
1202 array_shift($viewed_products);
1203 }
1204 // Store for session only
1205 if( function_exists( 'wc_setcookie' ) ){
1206 wc_setcookie('wp_chatbot_wpcommerce_recently_viewed', implode('|', $viewed_products));
1207 }
1208 }
1209 add_action('template_redirect', 'wp_chatbot_track_product_view', 20);
1210 //recent view product ajax
1211 add_action('wp_ajax_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
1212 add_action('wp_ajax_nopriv_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
1213 function qcld_wb_chatbot_recently_viewed_products(){
1214 // Get wpCommerce Global
1215 $_pf = new WC_Product_Factory();
1216 //show post per page.
1217 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
1218 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1219 // Get recently viewed product cookies data
1220 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1221 $viewed_products = array_filter(array_map('absint', $viewed_products));
1222 //get featured products if has.
1223 $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'))));
1224 //Getting recently vieew products.
1225 if (!empty($viewed_products)) {
1226 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))));
1227 $product_query = new WP_Query(array(
1228 'posts_per_page' => $product_per_page,
1229 'no_found_rows' => 1,
1230 'post_status' => 'publish',
1231 'post_type' => 'product',
1232 'post__in' => $viewed_products,
1233 ));
1234 //Getting featured products
1235 } else if ($featured_products->post_count > 0) {
1236 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome'))));
1237 $product_query = $featured_products;
1238 } else {
1239 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1240 //Getting recent products
1241 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1242 }
1243 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1244 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1245 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1246 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1247 } else {
1248 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1249 }
1250 $html = '<div class="wp-chatbot-agent-profile">
1251 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1252 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1253 <div class="wp-chatbot-bubble">' . $wp_chatbot_product_title . '</div>
1254 </div>';
1255 if ($product_query->post_count > 0) {
1256 $html .= '<div class="wp-chatbot-products-area">';
1257 $html .= '<ul class="wp-chatbot-products">';
1258 while ($product_query->have_posts()) : $product_query->the_post();
1259 $product = $_pf->get_product(get_the_ID());
1260 $html .= '<li class="wp-chatbot-product">';
1261 $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()) . '">';
1262 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1263 <div class="wp-chatbot-product-summary">
1264 <div class="wp-chatbot-product-table">
1265 <div class="wp-chatbot-product-table-cell">
1266 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1267 <div class="price">' . $product->get_price_html() . '</div>';
1268 $html .= ' </div>
1269 </div>
1270 </div></a>
1271 </li>';
1272 endwhile;
1273 wp_reset_query();
1274 wp_reset_postdata();
1275 $html .= '</ul></div>';
1276 } else {
1277 $html .= '<div class="wp-chatbot-products-area">';
1278 $html .= '<p style="text-align: center">You have no products !';
1279 $html .= '</div>';
1280 }
1281 wp_send_json($html);
1282 }
1283 //Recently viewed product shortcode
1284 add_shortcode('wpwbot_products', 'qcld_wb_chatbot_recently_viewed_shortcode');
1285 function qcld_wb_chatbot_recently_viewed_shortcode(){
1286 // Get wpCommerce Global
1287 $_pf = new WC_Product_Factory();
1288 $product_per_page = sanitize_text_field(get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10);
1289 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1290 // Get recently viewed product cookies data
1291 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1292 $viewed_products = array_filter(array_map('absint', $viewed_products));
1293 //get featured products if has.
1294 $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'))));
1295 //Getting recently vieew products.
1296 if (!empty($viewed_products)) {
1297 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))));
1298 $product_query = new WP_Query(array(
1299 'posts_per_page' => $product_per_page,
1300 'no_found_rows' => 1,
1301 'post_status' => 'publish',
1302 'post_type' => 'product',
1303 'post__in' => $viewed_products,
1304 ));
1305 //implementing featured products
1306 } else if ($featured_products->post_count > 0) {
1307 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome'))));
1308 $product_query = $featured_products;
1309 } else {
1310 $wp_chatbot_product_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome'))));
1311 //Getting recent products
1312 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1313 }
1314 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1315 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1316 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1317 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1318 } else {
1319 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1320 }
1321 $html = '<div class="wp-chatbot-agent-profile">
1322 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1323 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1324 <div class="wp-chatbot-bubble">' . esc_html($wp_chatbot_product_title) . '</div>
1325 </div>';
1326 if ($product_query->post_count > 0) {
1327 $html .= '<div class="wp-chatbot-products-area">';
1328 $html .= '<ul class="wp-chatbot-products">';
1329 while ($product_query->have_posts()) : $product_query->the_post();
1330 $product = $_pf->get_product(get_the_ID());
1331 $html .= '<li class="wp-chatbot-product">';
1332 $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()) . '">';
1333 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1334 <div class="wp-chatbot-product-summary">
1335 <div class="wp-chatbot-product-table">
1336 <div class="wp-chatbot-product-table-cell">
1337 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1338 <div class="price">' . $product->get_price_html() . '</div>';
1339 $html .= ' </div>
1340 </div>
1341 </div></a>
1342 </li>';
1343 endwhile;
1344 wp_reset_query();
1345 wp_reset_postdata();
1346 $html .= '</ul></div>';
1347 } else {
1348 $html .= '<div class="wp-chatbot-products-area">';
1349 $html .= '<p style="text-align: center">' . __('You have no products', 'chatbot') . ' !';
1350 $html .= '</div>';
1351 }
1352 return $html;
1353 }
1354 //Show cart for wp chatbot
1355 add_action('wp_ajax_qcld_wb_chatbot_show_cart', 'qcld_wb_chatbot_show_cart');
1356 add_action('wp_ajax_nopriv_qcld_wb_chatbot_show_cart', 'qcld_wb_chatbot_show_cart');
1357 function qcld_wb_chatbot_show_cart(){
1358 global $wpcommerce;
1359 // $cart_url = $wpcommerce->cart->get_cart_url();
1360 $cart_url = wc_get_cart_url();
1361 $checkout_url = wc_get_checkout_url();
1362 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1363 $items = $wpcommerce->cart->get_cart();
1364 $itemCount = $wpcommerce->cart->cart_contents_count;
1365 $cart_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart'))));
1366 $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1367 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1368 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1369 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1370 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1371 } else {
1372 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1373 }
1374 $html = '<div class="wp-chatbot-agent-profile">
1375 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1376 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1377 <div class="wp-chatbot-bubble">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome')))) . '</div>
1378 </div>';
1379 if ($itemCount >= 1) {
1380 $html .= '<div class ="wp-chatbot-cart-container">';
1381 $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>';
1382 $html .= '<div class ="wp-chatbot-cart-body">';
1383 foreach ($items as $item => $values) {
1384 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1385 //product image
1386 $getProductDetail = wc_get_product($values['product_id']);
1387 $price = get_post_meta($values['product_id'], '_price', true);
1388 $html .= '<div class="wp-chatbot-cart-single">
1389 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1390 $html .= '<div class="qcld-wp-chatbot-cell">';
1391 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1392 $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>';
1393 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1394 }
1395 $html .= ' </div>';//End of cart body
1396 $html .= '<div class="wp-chatbot-cart-single">
1397 <div class="qcld-wp-chatbot-cell"></div>
1398 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1399 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1400 </div>';
1401 $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>';
1402 $html .= ' </div>';
1403 } else {
1404 $html .= '<div class="wp-chatbot-cart-container">';
1405 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1406 $html .= '</div>';
1407 }
1408 $response = array('html' => $html, 'items' => $itemCount);
1409 wp_send_json($response);
1410 }
1411 //cart onley for wp chatbot
1412 add_action('wp_ajax_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1413 add_action('wp_ajax_nopriv_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1414 function qcld_wb_chatbot_only_cart(){
1415 global $wpcommerce;
1416 // $cart_url = $wpcommerce->cart->get_cart_url();
1417 $cart_url = wc_get_cart_url();
1418 $checkout_url = wc_get_checkout_url();
1419 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1420 $items = $wpcommerce->cart->get_cart();
1421 $itemCount = $wpcommerce->cart->cart_contents_count;
1422 $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1423
1424 $html = '';
1425 if ($itemCount >= 1) {
1426 $html .= '<div class ="wp-chatbot-cart-container">';
1427 $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>';
1428 $html .= '<div class ="wp-chatbot-cart-body">';
1429 foreach ($items as $item => $values) {
1430 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1431 //product image
1432 $getProductDetail = wc_get_product($values['product_id']);
1433 $price = get_post_meta($values['product_id'], '_price', true);
1434 $html .= '<div class="wp-chatbot-cart-single">
1435 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1436 $html .= '<div class="qcld-wp-chatbot-cell">';
1437 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1438 $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>';
1439 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1440 }
1441 $html .= ' </div>';//End of cart body
1442 $html .= '<div class="wp-chatbot-cart-single">
1443 <div class="qcld-wp-chatbot-cell"></div>
1444 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1445 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1446 </div>';
1447 $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>';
1448 $html .= ' </div>';
1449 } else {
1450 $html .= '<div class="wp-chatbot-cart-container">';
1451 $html .= '<div><p style="text-align:center">' . esc_html($no_cart_item_msg) . '</p></div>';
1452 $html .= '</div>';
1453 }
1454 $response = array('html' => $html, 'items' => $itemCount);
1455 wp_send_json($response);
1456 }
1457 //Cart show Shortcode
1458 add_shortcode('wpwbot_cart', 'qcld_wb_chatbot_cart_shortcode');
1459 function qcld_wb_chatbot_cart_shortcode(){
1460 global $wpcommerce;
1461 $items = $wpcommerce->cart->get_cart();
1462 $itemCount = $wpcommerce->cart->cart_contents_count;
1463 $cart_title = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart'))));
1464 $no_cart_item_msg = wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1465 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1466 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1467 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1468 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1469 } else {
1470 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1471 }
1472 $html = '<div class="wp-chatbot-agent-profile">
1473 <div class="wp-chatbot-widget-avatar"><img src="' . esc_url($wp_chatbot_custom_icon_path) . '" alt=""></div>
1474 <div class="wp-chatbot-widget-agent">' . esc_html(get_option('qlcd_wp_chatbot_agent')) . '</div>
1475 <div class="wp-chatbot-bubble">' . wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome')))) . '</div>
1476 </div>';
1477 if ($itemCount >= 1) {
1478 $html .= '<div class ="wp-chatbot-cart-container">';
1479 $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>';
1480 $html .= '<div class ="wp-chatbot-cart-body">';
1481 foreach ($items as $item => $values) {
1482 $cart_item = apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1483 //product image
1484 $getProductDetail = wc_get_product($values['product_id']);
1485 $price = get_post_meta($values['product_id'], '_price', true);
1486 $html .= '<div class="wp-chatbot-cart-single">
1487 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1488 $html .= '<div class="qcld-wp-chatbot-cell">';
1489 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1490 $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>';
1491 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1492 }
1493 $html .= ' </div>';//End of cart body
1494 $html .= '<div class="wp-chatbot-cart-single">
1495 <div class="qcld-wp-chatbot-cell"></div>
1496 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1497 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1498 </div>';
1499 $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>';
1500 $html .= ' </div>';
1501 } else {
1502 $html .= '<div class="wp-chatbot-cart-container">';
1503 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1504 $html .= '</div>';
1505 }
1506 // $response=array('html'=>$html,'items'=>$itemCount);
1507 return $html;
1508 }
1509 //Updating the cart items.
1510 add_action('wp_ajax_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1511 add_action('wp_ajax_nopriv_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1512 function qcld_wb_chatbot_update_cart_item_number(){
1513 //getting cart items n
1514 $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
1515 $qnty = sanitize_text_field($_POST['qnty']);
1516 global $wpcommerce;
1517 $result = $wpcommerce->cart->set_quantity($cart_item_key, $qnty);
1518 wp_send_json($result);
1519 }
1520 //Show item after removing from cart page.
1521 add_action('wp_ajax_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1522 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1523 function qcld_wb_chatbot_cart_item_remove(){
1524 //getting cart items n
1525 $cart_item_key = sanitize_text_field($_POST['cart_item']);
1526 global $wpcommerce;
1527 $result = $wpcommerce->cart->remove_cart_item($cart_item_key);
1528 wp_send_json($result);
1529 }
1530 //Show cart page by shortcode.
1531 add_action('wp_ajax_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1532 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1533 function qcld_wb_chatbot_cart_page(){
1534 global $wpcommerce;
1535 $itemCount = $wpcommerce->cart->cart_contents_count;
1536 $html = "";
1537 if ($itemCount < 0) {
1538 $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1539 } else {
1540 $html .= do_shortcode("[wpcommerce_cart]");
1541 }
1542 wp_send_json($html);
1543 }
1544 //Show checkout page by shortcode.
1545 add_action('wp_ajax_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1546 add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1547 function qcld_wb_chatbot_checkout_page(){
1548 global $wpcommerce;
1549 $itemCount = $wpcommerce->cart->cart_contents_count;
1550 $html = "";
1551 if ($itemCount < 0) {
1552 $status = 'no';
1553 $html .= wp_kses_post(wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items'))));
1554 } else {
1555 $status = 'yes';
1556 $checkout_page_id = get_option('wp_chatbot_app_checkout');
1557 $checkout_parmanlink = esc_url(get_permalink($checkout_page_id));
1558 $html .= $checkout_parmanlink;
1559 }
1560 $response = array('status' => $status, 'html' => $html);
1561 wp_send_json($response);
1562 }
1563 //_dynamic_intent
1564 function qcld_dynamic_intent(){
1565 global $wpdb;
1566 $intents = array();
1567
1568 $ai_df = get_option('enable_wp_chatbot_dailogflow');
1569 $custom_intent_labels = maybe_unserialize( get_option('qlcd_wp_custon_intent_label'));
1570 if($ai_df==1 && isset($custom_intent_labels[0]) && trim($custom_intent_labels[0])!=''):
1571
1572 foreach($custom_intent_labels as $custom_intent_label):
1573 $intents[] = $custom_intent_label;
1574 endforeach;
1575
1576 endif;
1577
1578
1579
1580 if(class_exists('Qcformbuilder_Forms_Admin')){
1581
1582
1583 $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM ". $wpdb->prefix."wfb_forms WHERE type= %s",'primary')); //DB Call OK, No Caching OK
1584
1585 if(!empty($results)){
1586
1587 foreach($results as $result){
1588 $form = maybe_unserialize($result->config);
1589 $intents[] = $form['name'];
1590 }
1591
1592 }
1593 }
1594
1595 if(!empty($intents)){
1596 return implode(", ", $intents);
1597 }else{
1598 return '';
1599 }
1600
1601 }
1602
1603 //User login on Checkout page.
1604 // add_action('wp_ajax_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1605 // add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1606 // function qcld_wb_chatbot_checkout_user_login(){
1607 // // Nonce is checked, get the POST data and sign user on
1608 // $info = array();
1609 // //$info['nonce'] = $_POST['nonce_val'];
1610 // $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1611 // $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1612 // $info['remember'] = true;
1613 // $user_signon = wp_signon($info, false);
1614 // // $response=$info;
1615 // $response = array();
1616 // if (is_wp_error($user_signon)) {
1617 // // $response['status'] = "fail";
1618 // $response = "no";
1619 // } else {
1620 // $response = "yes";
1621 // }
1622 // wp_send_json($response);
1623 // }
1624 // Load template for App Order Thank You page url
1625 function wp_chatbot_load_app_template($template){
1626 if (is_page('wpwbot-mobile-app')) {
1627 return dirname(__FILE__) . '/templates/app-templates/app.php';
1628 }
1629 return $template;
1630 }
1631 add_filter('template_include', 'wp_chatbot_load_app_template', 99);
1632 // Load template for App Order Thank You page url
1633 function wp_chatbot_load_app_order_thankyou_template($template){
1634 if (is_page('wpwbot-app-order-thankyou')) {
1635 return dirname(__FILE__) . '/templates/app-templates/app-order-thankyou.php';
1636 }
1637 return $template;
1638 }
1639 add_filter('template_include', 'wp_chatbot_load_app_order_thankyou_template', 99);
1640 // Load template for App checkout
1641 function wp_chatbot_load_app_checkout_template($template){
1642 if (is_page('wpwbot-app-checkout')) {
1643 return dirname(__FILE__) . '/templates/app-templates/app-checkout.php';
1644 }
1645 return $template;
1646 }
1647 add_filter('template_include', 'wp_chatbot_load_app_checkout_template', 99);
1648 // Create embed page when plugin install or activate
1649 //register_activation_hook(__FILE__, 'wp_chatbot_create_app_order_thankyou_page');
1650 add_action('init', 'wp_chatbot_create_app_checkout_thankyou_page');
1651 function wp_chatbot_create_app_checkout_thankyou_page(){
1652 if (get_option('wp_chatbot_app_pages') == 1) {
1653 //Mobile App page create
1654 if (get_page_by_title('wpwBot Mobile App') == NULL) {
1655 //post status and options
1656 $app_page = array(
1657 'comment_status' => 'closed',
1658 'ping_status' => 'closed',
1659 'post_author' => get_current_user_id(),
1660 'post_date' => date('Y-m-d H:i:s'),
1661 'post_status' => 'publish',
1662 'post_title' => 'wpwBot Mobile App',
1663 'post_name' => 'wpwbot-mobile-app',
1664 'post_type' => 'page',
1665 );
1666 //insert page and save the id
1667 $wpwbot_app = wp_insert_post($app_page, false);
1668 //save the id in the database
1669 update_option('wp_chatbot_app_checkout', $wpwbot_app);
1670 }
1671 //App checkout page create
1672 if (get_page_by_title('wpwBot App Checkout') == NULL) {
1673 //post status and options
1674 $checkout_page = array(
1675 'comment_status' => 'closed',
1676 'ping_status' => 'closed',
1677 'post_author' => get_current_user_id(),
1678 'post_date' => date('Y-m-d H:i:s'),
1679 'post_status' => 'publish',
1680 'post_title' => 'wpwBot App Checkout',
1681 'post_name' => 'wpwbot-app-checkout',
1682 'post_type' => 'page',
1683 );
1684 //insert page and save the id
1685 $app_checkout = wp_insert_post($checkout_page, false);
1686 //save the id in the database
1687 update_option('wp_chatbot_app_checkout', $app_checkout);
1688 }
1689 //App Order thank you page create
1690 if (get_page_by_title('wpwBot App Order Thank You') == NULL) {
1691 //post status and options
1692 $thankyou_page = array(
1693 'comment_status' => 'closed',
1694 'ping_status' => 'closed',
1695 'post_author' => get_current_user_id(),
1696 'post_date' => date('Y-m-d H:i:s'),
1697 'post_status' => 'publish',
1698 'post_title' => 'wpwBot App Order Thank You',
1699 'post_name' => 'wpwbot-app-order-thankyou',
1700 'post_type' => 'page',
1701 );
1702 //insert page and save the id
1703 $app_order_thankyou = wp_insert_post($thankyou_page, false);
1704 //save the id in the database
1705 update_option('wp_chatbot_app_order_thankyou', $app_order_thankyou);
1706 }
1707 }
1708 //Keep tracking from App by cookies
1709 if (isset($_GET['from']) && $_GET['from'] == 'app') {
1710 if (!isset($_COOKIE['from_app'])) {
1711 setcookie('from_app', 'yes', (time() + 3600), '/');
1712 }
1713 }
1714 }
1715 /***
1716 * Override order Thank page for mobile app
1717 */
1718 add_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase', 10, 1);
1719 function qcld_wb_chatbot__redirect_after_purchase($order_get_id){
1720 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1721 global $wp;
1722 if (is_checkout() && !empty($wp->query_vars['order-received'])) {
1723 $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1724 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1725 wp_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1726 exit;
1727 }
1728 } else {
1729 remove_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase');
1730 do_action('wpcommerce_thankyou', $order_get_id);
1731 }
1732 }
1733
1734 function qcld_choose_random($array){
1735 return $array[array_rand($array)];
1736 }
1737
1738 //User session count
1739 add_action('wp_ajax_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1740 add_action('wp_ajax_nopriv_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1741 function qcld_wb_chatbot_session_count(){
1742 // Nonce is checked, get the POST data and sign user on
1743 check_ajax_referer( 'wp_chatbot', 'nonce' );
1744 global $wpdb;
1745 $wpdb->show_errors = true;
1746 $tableuser = $wpdb->prefix.'wpbot_sessions';
1747 $response = array();
1748
1749
1750 $session_exists = $wpdb->get_row($wpdb->prepare("select * from $tableuser where 1 and id = %d",1)); //DB Call OK, No Caching OK
1751
1752 if(empty($session_exists)){
1753 $wpdb->insert(
1754 $tableuser,
1755 array(
1756 'session' => 1,
1757 )
1758 ); //DB Call OK, No Caching OK
1759 }else{
1760
1761 $session_id = $session_exists->id;
1762
1763 $wpdb->update(
1764 $tableuser,
1765 array(
1766 'session'=>($session_exists->session+1),
1767 ),
1768 array('id'=>$session_id),
1769 array(
1770 '%d',
1771 ),
1772 array('%d')
1773 ); //DB Call OK, No Caching OK
1774
1775 }
1776
1777 wp_send_json($response);
1778 }
1779
1780 /* WPBot Chat History Addon check */
1781 function qcld_wpbot_is_active_chat_history(){
1782
1783 if(function_exists('qcwp_chat_session_menu_fnc') || function_exists( 'qcpdcs_chat_session_menu_fnc' ) ){
1784 return 1;
1785 }else{
1786 return 0;
1787 }
1788
1789 }
1790
1791 function qcld_wpbot_input_validation( $data ) {
1792 $data = html_entity_decode($data);
1793 $data = trim($data);
1794 $data = stripslashes($data);
1795 $data = htmlspecialchars($data);
1796 return $data;
1797 }
1798 add_action('wp_ajax_qcld_small_talk_import', 'qcld_small_talk_import');
1799 function qcld_small_talk_import(){
1800
1801 global $wpdb;
1802
1803 $table = $wpdb->prefix.'wpbot_response';
1804
1805 $csvFile = file(QCLD_wpCHATBOT_PLUGIN_DIR_PATH . 'small_talk.csv');
1806
1807 foreach ($csvFile as $line) {
1808 $line = str_getcsv($line, ',', '"');
1809 $wpdb->insert($table, array(
1810 'query' => $line[0],
1811 'keyword' => $line[1],
1812 'response' => $line[2],
1813 'category'=> $line[3],
1814 'intent'=> '',
1815 //'lang'=> 'en_US',
1816 )); //DB Call OK, No Caching OK
1817 }
1818
1819 $table2 = $wpdb->prefix.'wpbot_response_category';
1820
1821 $wpdb->insert($table2, array(
1822 'name' => 'smalltalk',
1823 )); //DB Call OK, No Caching OK
1824
1825 update_option( 'qcld_small_talk_imported', 'yes' );
1826
1827 }
1828 function sanitize_array( &$array ) {
1829 if (!empty($array)) {
1830 foreach ($array as &$value) {
1831 if( !is_array($value) )
1832 // sanitize if value is not an array
1833 $value = sanitize_text_field( esc_html($value) );
1834 else
1835 // go inside this function again
1836 sanitize_array(esc_html($value));
1837 }
1838 }
1839 return $array;
1840 }
1841 function qcld_wpbot_meta_tags() {
1842 echo '<!-- "This site uses ChatBot for WordPress - WPBot from https://www.wpbot.pro/" -->';
1843 }
1844 add_action('wp_footer', 'qcld_wpbot_meta_tags', 100);
1845
1846 if ( ! function_exists( 'qcld_change_language_from_center' ) ) {
1847 add_action( 'wp_ajax_qcld_change_language_from_center', 'qcld_change_language_from_center' );
1848 add_action( 'wp_ajax_nopriv_qcld_change_language_from_center', 'qcld_change_language_from_center' );
1849 function qcld_change_language_from_center() {
1850 if ( ! current_user_can( 'manage_options' ) ) {
1851 wp_send_json_error( array( 'message' => 'Unauthorized.' ) );
1852 }
1853 $plugin_path = plugin_dir_path( __FILE__ );
1854 include $plugin_path . 'includes/admin/settings-fields.php';
1855 $json_file_path = $plugin_path . 'includes/language center.json'; // Adjust path as needed
1856
1857 $json_string = file_get_contents( $json_file_path );
1858 if ( isset( $_POST['language'] ) ) {
1859 $language = sanitize_text_field( wp_unslash( $_POST['language'] ) );
1860 $language_array= json_decode($json_string)->$language;
1861 update_option( 'wp_chatbot_language_center_language', $language );
1862 wp_send_json_success( array( 'message' => true, 'data' => $language_array, 'language' => $language ) );
1863 } else {
1864 wp_send_json_error( array( 'message' => 'Language not specified.' ) );
1865
1866 }
1867 }
1868 }