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

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