PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services / 3.4.4
WPBot – AI ChatBot for Live Support, Lead Generation, AI Services v3.4.4
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 3.4.4, at functions.php

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