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

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