PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services / 7.2.1
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services v7.2.1
8.7.5 8.7.4 8.7.3 8.7.2 8.7.1 8.7.0 8.6.9 8.6.8 8.6.7 8.6.6 8.6.5 8.6.4 8.6.2 8.6.1 8.6.0 8.5.9 8.5.8 8.5.7 8.5.6 8.5.5 8.5.4 8.5.3 8.5.2 8.5.0 8.4.9 All 531 releases
chatbot / functions.php

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

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