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

1,885 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" qcld_agent="<?php echo esc_url($wp_chatbot_custom_icon_path); ?>" >
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 }
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 echo json_encode($response);
1197 die();
1198 }
1199 // Order Status part.
1200 add_action('wp_ajax_qcld_wb_chatbot_check_user', 'qcld_wb_chatbot_check_user');
1201 add_action('wp_ajax_nopriv_qcld_wb_chatbot_check_user', 'qcld_wb_chatbot_check_user');
1202 function qcld_wb_chatbot_check_user(){
1203 global $wpcommerce;
1204 $user_name = trim(sanitize_text_field($_POST['user_name']));
1205 $response = array();
1206 $response['message'] = "";
1207 if (username_exists($user_name)) {
1208 if (get_option('qlcd_wp_chatbot_order_user') == 'login') {
1209 $response['status'] = "success";
1210 $response['message'] .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_username_thanks')));
1211 $response['html'] .= '<p>' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_username_password'))) . '</p>';
1212 } else if (get_option('qlcd_wp_chatbot_order_user') == 'not_login') {
1213 $response = get_order_by_username($user_name);
1214 }
1215 } else {
1216 $response['status'] = "fail";
1217 $response['message'] .= '<strong>' . $user_name . '</strong> ' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_username_not_exist')));
1218 }
1219 echo wp_send_json($response);
1220 die();
1221 }
1222 function wpb_randmom_message_handle($items){
1223 return $items[rand(0, count($items) - 1)];
1224 }
1225 function qcld_wb_chatbot_func_str_replace($messages = array()){
1226 $refined_mesgses = array();
1227 foreach ($messages as $message) {
1228 $refined_msg = str_replace('\\', '', $message);
1229 array_push($refined_mesgses, $refined_msg);
1230 }
1231 return $refined_mesgses;
1232 }
1233 add_action('wp_ajax_qcld_wb_chatbot_login_user', 'qcld_wb_chatbot_login_user');
1234 add_action('wp_ajax_nopriv_qcld_wb_chatbot_login_user', 'qcld_wb_chatbot_login_user');
1235 function qcld_wb_chatbot_login_user(){
1236 // First check the nonce, if it fails the function will break
1237 check_ajax_referer('wpwbot-order-nonce', 'security');
1238 // Nonce is checked, get the POST data and sign user on
1239 $info = array();
1240 $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1241 $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1242 $info['remember'] = true;
1243 $user_signon = wp_signon($info, false);
1244 $response = array();
1245 if (is_wp_error($user_signon)) {
1246 $response['status'] = "fail";
1247 $response['message'] = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect')));
1248 } else {
1249 $response = get_order_by_username($info['user_login']);
1250 $response['status'] = "success";
1251 }
1252 echo wp_send_json($response);
1253 die();
1254 }
1255 add_action('wp_ajax_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1256 add_action('wp_ajax_nopriv_qcld_wb_chatbot_loged_in_user_orders', 'qcld_wb_chatbot_loged_in_user_orders');
1257 function qcld_wb_chatbot_loged_in_user_orders(){
1258 $current_user = wp_get_current_user();
1259 $user_name = $current_user->user_login;
1260 $response = get_order_by_username($user_name);
1261 echo wp_send_json($response);
1262 die();
1263 }
1264 function get_order_by_username($user_name){
1265 global $post;
1266 $response = array();
1267 $response['status'] .= "success";
1268 $user = get_user_by('login', $user_name);
1269 // The query arguments
1270 $customer_orders = get_posts(array(
1271 'numberposts' => -1,
1272 'meta_key' => '_customer_user',
1273 'meta_value' => $user->ID,
1274 'post_type' => wc_get_order_types(),
1275 'post_status' => array_keys(wc_get_order_statuses()),
1276 'posts_per_page' => 10,
1277 'orderby' => 'date',
1278 ));
1279 $response['order_num'] = count($customer_orders);
1280 $order_html = '';
1281 if ($response['order_num'] > 0) {
1282 $response['message'] .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_found')));
1283 $order_html .= '<div class="wp-chatbot-orders-container">
1284 <div class="wp-chatbot-orders-header">
1285 <div class="order-id">' . __('ID', 'wpchatbot') . '</div>
1286 <div class="order-date">' . __('Date', 'wpchatbot') . ' </div>
1287 <div class="order-items">' . __('Items', 'wpchatbot') . '</div>
1288 <div class="order-status">' . __('Status', 'wpchatbot') . '</div>
1289 </div>';
1290 foreach ($customer_orders as $order) {
1291 //Formatting order summery
1292 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1293 $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1294 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1295 $order_url = '<a href="' . $thanks_parmanlink . '?order_id=' . $order->ID . '" >' . $order->ID . '</a>';
1296 } else {
1297 $order_url = '<a href="' . get_permalink(get_option('wpcommerce_myaccount_page_id')) . '/view-order/' . $order->ID . '" target="_blank" >' . $order->ID . '</a>';
1298 }
1299 $order_html .= '<div class="wp-chatbot-orders-single">
1300 <div class="order-id"> ' . $order_url . '</div>
1301 <div class="order-date"> <p>' . date("m/d/Y", strtotime($order->post_date)) . '</p> </div>
1302 <div class="order-items">';
1303 $singleOrder = new WC_Order($order->ID);
1304 $items = $singleOrder->get_items();
1305 foreach ($items as $item) {
1306 $order_html .= '<p>' . $item["name"] . ' X ' . $item["qty"] . '</p>';
1307 }
1308 $order_html .= '</div>
1309 <div class="order-status">' . strtoupper(end(explode("-", $order->post_status))) . '</div>
1310
1311 </div>';
1312 }
1313 $order_html .= '</div>';
1314 } else {
1315 $response['message'] .= get_option('qlcd_wp_chatbot_sorry') . '! <strong>' . $user_name . '</strong>';
1316 $order_html .= '<p>' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_not_found'))) . '</p>';
1317 }
1318 $response['html'] = $order_html;
1319 return $response;
1320 }
1321 //Recently viewed products
1322 //keeping id in cookies as
1323 function wp_chatbot_track_product_view(){
1324 if (!is_singular('product')) {
1325 return;
1326 }
1327 global $post;
1328 wp_chatbot_view_track_product_by_id($post->ID);
1329 }
1330 function wp_chatbot_view_track_product_by_id($post_id){
1331 if (empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']))
1332 $viewed_products = array();
1333 else
1334 $viewed_products = (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']);
1335 if (!in_array($post_id, $viewed_products)) {
1336 $viewed_products[] = $post_id;
1337 }
1338 if (sizeof($viewed_products) > 15) {
1339 array_shift($viewed_products);
1340 }
1341 // Store for session only
1342 if( function_exists( 'wc_setcookie' ) ){
1343 wc_setcookie('wp_chatbot_wpcommerce_recently_viewed', implode('|', $viewed_products));
1344 }
1345 }
1346 add_action('template_redirect', 'wp_chatbot_track_product_view', 20);
1347 //recent view product ajax
1348 add_action('wp_ajax_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
1349 add_action('wp_ajax_nopriv_qcld_wb_chatbot_recently_viewed_products', 'qcld_wb_chatbot_recently_viewed_products');
1350 function qcld_wb_chatbot_recently_viewed_products(){
1351 // Get wpCommerce Global
1352 $_pf = new WC_Product_Factory();
1353 //show post per page.
1354 $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
1355 $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1356 // Get recently viewed product cookies data
1357 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1358 $viewed_products = array_filter(array_map('absint', $viewed_products));
1359 //get featured products if has.
1360 $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'))));
1361 //Getting recently vieew products.
1362 if (!empty($viewed_products)) {
1363 $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome')));
1364 $product_query = new WP_Query(array(
1365 'posts_per_page' => $product_per_page,
1366 'no_found_rows' => 1,
1367 'post_status' => 'publish',
1368 'post_type' => 'product',
1369 'post__in' => $viewed_products,
1370 ));
1371 //Getting featured products
1372 } else if ($featured_products->post_count > 0) {
1373 $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome')));
1374 $product_query = $featured_products;
1375 } else {
1376 $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1377 //Getting recent products
1378 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1379 }
1380 //$html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))).'</div>';
1381 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1382 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1383 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1384 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1385 } else {
1386 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1387 }
1388 $html = '<div class="wp-chatbot-agent-profile">
1389 <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1390 <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1391 <div class="wp-chatbot-bubble">' . $wp_chatbot_product_title . '</div>
1392 </div>';
1393 if ($product_query->post_count > 0) {
1394 $html .= '<div class="wp-chatbot-products-area">';
1395 $html .= '<ul class="wp-chatbot-products">';
1396 while ($product_query->have_posts()) : $product_query->the_post();
1397 $product = $_pf->get_product(get_the_ID());
1398 $html .= '<li class="wp-chatbot-product">';
1399 $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()) . '">';
1400 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1401 <div class="wp-chatbot-product-summary">
1402 <div class="wp-chatbot-product-table">
1403 <div class="wp-chatbot-product-table-cell">
1404 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1405 <div class="price">' . $product->get_price_html() . '</div>';
1406 $html .= ' </div>
1407 </div>
1408 </div></a>
1409 </li>';
1410 endwhile;
1411 wp_reset_query();
1412 wp_reset_postdata();
1413 $html .= '</ul></div>';
1414 } else {
1415 $html .= '<div class="wp-chatbot-products-area">';
1416 $html .= '<p style="text-align: center">You have no products !';
1417 $html .= '</div>';
1418 }
1419 echo wp_send_json($html);
1420 die();
1421 }
1422 //Recently viewed product shortcode
1423 add_shortcode('wpwbot_products', 'qcld_wb_chatbot_recently_viewed_shortcode');
1424 function qcld_wb_chatbot_recently_viewed_shortcode(){
1425 // Get wpCommerce Global
1426 $_pf = new WC_Product_Factory();
1427 $product_per_page = get_option('qlcd_wp_chatbot_ppp') != '' ? get_option('qlcd_wp_chatbot_ppp') : 10;
1428 $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1429 // Get recently viewed product cookies data
1430 $viewed_products = !empty($_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) ? (array)explode('|', $_COOKIE['wp_chatbot_wpcommerce_recently_viewed']) : array();
1431 $viewed_products = array_filter(array_map('absint', $viewed_products));
1432 //get featured products if has.
1433 $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'))));
1434 //Getting recently vieew products.
1435 if (!empty($viewed_products)) {
1436 $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome')));
1437 $product_query = new WP_Query(array(
1438 'posts_per_page' => $product_per_page,
1439 'no_found_rows' => 1,
1440 'post_status' => 'publish',
1441 'post_type' => 'product',
1442 'post__in' => $viewed_products,
1443 ));
1444 //implementing featured products
1445 } else if ($featured_products->post_count > 0) {
1446 $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_featured_product_welcome')));
1447 $product_query = $featured_products;
1448 } else {
1449 $wp_chatbot_product_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_latest_product_welcome')));
1450 //Getting recent products
1451 $product_query = new WP_Query(array('post_status' => 'publish', 'posts_per_page' => $product_per_page, 'post_type' => 'product', 'orderby' => 'date', 'order' => 'DESC'));
1452 }
1453 //$html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_viewed_product_welcome'))).'</div>';
1454 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1455 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1456 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1457 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1458 } else {
1459 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1460 }
1461 $html = '<div class="wp-chatbot-agent-profile">
1462 <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1463 <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1464 <div class="wp-chatbot-bubble">' . $wp_chatbot_product_title . '</div>
1465 </div>';
1466 if ($product_query->post_count > 0) {
1467 $html .= '<div class="wp-chatbot-products-area">';
1468 $html .= '<ul class="wp-chatbot-products">';
1469 while ($product_query->have_posts()) : $product_query->the_post();
1470 $product = $_pf->get_product(get_the_ID());
1471 $html .= '<li class="wp-chatbot-product">';
1472 $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()) . '">';
1473 $html .= get_the_post_thumbnail(get_the_ID(), 'shop_catalog') . '
1474 <div class="wp-chatbot-product-summary">
1475 <div class="wp-chatbot-product-table">
1476 <div class="wp-chatbot-product-table-cell">
1477 <h3 class="wp-chatbot-product-title">' . $product->post->post_title . '</h3>
1478 <div class="price">' . $product->get_price_html() . '</div>';
1479 $html .= ' </div>
1480 </div>
1481 </div></a>
1482 </li>';
1483 endwhile;
1484 wp_reset_query();
1485 wp_reset_postdata();
1486 $html .= '</ul></div>';
1487 } else {
1488 $html .= '<div class="wp-chatbot-products-area">';
1489 $html .= '<p style="text-align: center">' . __('You have no products', 'wpchatbot') . ' !';
1490 $html .= '</div>';
1491 }
1492 return $html;
1493 }
1494 //Show cart for wp chatbot
1495 add_action('wp_ajax_qcld_wb_chatbot_show_cart', 'qcld_wb_chatbot_show_cart');
1496 add_action('wp_ajax_nopriv_qcld_wb_chatbot_show_cart', 'qcld_wb_chatbot_show_cart');
1497 function qcld_wb_chatbot_show_cart(){
1498 global $wpcommerce;
1499 // $cart_url = $wpcommerce->cart->get_cart_url();
1500 $cart_url = wc_get_cart_url();
1501 $checkout_url = wc_get_checkout_url();
1502 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1503 $items = $wpcommerce->cart->get_cart();
1504 $itemCount = $wpcommerce->cart->cart_contents_count;
1505 $cart_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart')));
1506 $no_cart_item_msg = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1507 //$html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))).'</div>';
1508 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1509 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1510 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1511 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1512 } else {
1513 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1514 }
1515 $html = '<div class="wp-chatbot-agent-profile">
1516 <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1517 <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1518 <div class="wp-chatbot-bubble">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))) . '</div>
1519 </div>';
1520 if ($itemCount >= 1) {
1521 $html .= '<div class ="wp-chatbot-cart-container">';
1522 $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>';
1523 $html .= '<div class ="wp-chatbot-cart-body">';
1524 foreach ($items as $item => $values) {
1525 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1526 //product image
1527 $getProductDetail = wc_get_product($values['product_id']);
1528 $price = get_post_meta($values['product_id'], '_price', true);
1529 $html .= '<div class="wp-chatbot-cart-single">
1530 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1531 $html .= '<div class="qcld-wp-chatbot-cell">';
1532 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1533 $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>';
1534 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1535 }
1536 $html .= ' </div>';//End of cart body
1537 $html .= '<div class="wp-chatbot-cart-single">
1538 <div class="qcld-wp-chatbot-cell"></div>
1539 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1540 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1541 </div>';
1542 $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>';
1543 $html .= ' </div>';
1544 } else {
1545 $html .= '<div class="wp-chatbot-cart-container">';
1546 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1547 $html .= '</div>';
1548 }
1549 $response = array('html' => $html, 'items' => $itemCount);
1550 echo wp_send_json($response);
1551 wp_die();
1552 }
1553 //cart onley for wp chatbot
1554 add_action('wp_ajax_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1555 add_action('wp_ajax_nopriv_qcld_wb_chatbot_only_cart', 'qcld_wb_chatbot_only_cart');
1556 function qcld_wb_chatbot_only_cart(){
1557 global $wpcommerce;
1558 // $cart_url = $wpcommerce->cart->get_cart_url();
1559 $cart_url = wc_get_cart_url();
1560 $checkout_url = wc_get_checkout_url();
1561 //$checkout_url = $wpcommerce->cart->get_checkout_url();
1562 $items = $wpcommerce->cart->get_cart();
1563 $itemCount = $wpcommerce->cart->cart_contents_count;
1564 $no_cart_item_msg = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1565
1566 $html = '';
1567 if ($itemCount >= 1) {
1568 $html .= '<div class ="wp-chatbot-cart-container">';
1569 $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>';
1570 $html .= '<div class ="wp-chatbot-cart-body">';
1571 foreach ($items as $item => $values) {
1572 $cart_item= apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1573 //product image
1574 $getProductDetail = wc_get_product($values['product_id']);
1575 $price = get_post_meta($values['product_id'], '_price', true);
1576 $html .= '<div class="wp-chatbot-cart-single">
1577 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1578 $html .= '<div class="qcld-wp-chatbot-cell">';
1579 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1580 $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>';
1581 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1582 }
1583 $html .= ' </div>';//End of cart body
1584 $html .= '<div class="wp-chatbot-cart-single">
1585 <div class="qcld-wp-chatbot-cell"></div>
1586 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1587 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1588 </div>';
1589 $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>';
1590 $html .= ' </div>';
1591 } else {
1592 $html .= '<div class="wp-chatbot-cart-container">';
1593 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1594 $html .= '</div>';
1595 }
1596 $response = array('html' => $html, 'items' => $itemCount);
1597 echo wp_send_json($response);
1598 wp_die();
1599 }
1600 //Cart show Shortcode
1601 add_shortcode('wpwbot_cart', 'qcld_wb_chatbot_cart_shortcode');
1602 function qcld_wb_chatbot_cart_shortcode(){
1603 global $wpcommerce;
1604 $items = $wpcommerce->cart->get_cart();
1605 $itemCount = $wpcommerce->cart->cart_contents_count;
1606 $cart_title = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_shopping_cart')));
1607 $no_cart_item_msg = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1608 // $html = '<div class="wp-chatbot-widget-bubble">'.wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))).'</div>';
1609 if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') == "custom-agent.png") {
1610 $wp_chatbot_custom_icon_path = get_option('wp_chatbot_custom_agent_path');
1611 } else if (get_option('wp_chatbot_custom_agent_path') != "" && get_option('wp_chatbot_agent_image') != "custom-agent.png") {
1612 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . get_option('wp_chatbot_agent_image');
1613 } else {
1614 $wp_chatbot_custom_icon_path = QCLD_wpCHATBOT_IMG_URL . 'custom-agent.png';
1615 }
1616 $html = '<div class="wp-chatbot-agent-profile">
1617 <div class="wp-chatbot-widget-avatar"><img src="' . $wp_chatbot_custom_icon_path . '" alt=""></div>
1618 <div class="wp-chatbot-widget-agent">' . get_option('qlcd_wp_chatbot_agent') . '</div>
1619 <div class="wp-chatbot-bubble">' . wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_cart_welcome'))) . '</div>
1620 </div>';
1621 if ($itemCount >= 1) {
1622 $html .= '<div class ="wp-chatbot-cart-container">';
1623 $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>';
1624 $html .= '<div class ="wp-chatbot-cart-body">';
1625 foreach ($items as $item => $values) {
1626 $cart_item = apply_filters('wpcommerce_cart_item_product', $values['data'], $values, $item);
1627 //product image
1628 $getProductDetail = wc_get_product($values['product_id']);
1629 $price = get_post_meta($values['product_id'], '_price', true);
1630 $html .= '<div class="wp-chatbot-cart-single">
1631 <div class="qcld-wp-chatbot-cell"> <h3 class="wp-chatbot-title">' . $cart_item->get_title() . '</h3></div>';
1632 $html .= '<div class="qcld-wp-chatbot-cell">';
1633 $html .= '<input class="qcld-wp-chatbot-cart-item-qnty" data-cart-item="' . $item . '" type="number" min="1" value="' . $values['quantity'] . '"></div>';
1634 $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>';
1635 $html .= '<div class="qcld-wp-chatbot-cell"><span data-cart-item="' . $item . '" class="wp-chatbot-remove-cart-item">X</span></div> </div>';
1636 }
1637 $html .= ' </div>';//End of cart body
1638 $html .= '<div class="wp-chatbot-cart-single">
1639 <div class="qcld-wp-chatbot-cell"></div>
1640 <div class="qcld-wp-chatbot-cell"><strong>Total</strong></div>
1641 <div class="qcld-wp-chatbot-cell"><strong>' . $wpcommerce->cart->get_cart_total() . '</strong></div>
1642 </div>';
1643 $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>';
1644 $html .= ' </div>';
1645 } else {
1646 $html .= '<div class="wp-chatbot-cart-container">';
1647 $html .= '<div><p style="text-align:center">' . $no_cart_item_msg . '</p></div>';
1648 $html .= '</div>';
1649 }
1650 // $response=array('html'=>$html,'items'=>$itemCount);
1651 return $html;
1652 }
1653 //Updating the cart items.
1654 add_action('wp_ajax_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1655 add_action('wp_ajax_nopriv_qcld_wb_chatbot_update_cart_item_number', 'qcld_wb_chatbot_update_cart_item_number');
1656 function qcld_wb_chatbot_update_cart_item_number(){
1657 //getting cart items n
1658 $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
1659 $qnty = sanitize_text_field($_POST['qnty']);
1660 global $wpcommerce;
1661 $result = $wpcommerce->cart->set_quantity($cart_item_key, $qnty);
1662 echo wp_send_json($result);
1663 wp_die();
1664 }
1665 //Show item after removing from cart page.
1666 add_action('wp_ajax_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1667 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_item_remove', 'qcld_wb_chatbot_cart_item_remove');
1668 function qcld_wb_chatbot_cart_item_remove(){
1669 //getting cart items n
1670 $cart_item_key = sanitize_text_field($_POST['cart_item']);
1671 global $wpcommerce;
1672 $result = $wpcommerce->cart->remove_cart_item($cart_item_key);
1673 echo wp_send_json($result);
1674 wp_die();
1675 }
1676 //Show cart page by shortcode.
1677 add_action('wp_ajax_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1678 add_action('wp_ajax_nopriv_qcld_wb_chatbot_cart_page', 'qcld_wb_chatbot_cart_page');
1679 function qcld_wb_chatbot_cart_page(){
1680 global $wpcommerce;
1681 $itemCount = $wpcommerce->cart->cart_contents_count;
1682 $html = "";
1683 if ($itemCount < 0) {
1684 $html .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1685 } else {
1686 $html .= do_shortcode("[wpcommerce_cart]");
1687 }
1688 echo wp_send_json($html);
1689 wp_die();
1690 }
1691 //Show checkout page by shortcode.
1692 add_action('wp_ajax_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1693 add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_page', 'qcld_wb_chatbot_checkout_page');
1694 function qcld_wb_chatbot_checkout_page(){
1695 global $wpcommerce;
1696 $itemCount = $wpcommerce->cart->cart_contents_count;
1697 $html = "";
1698 if ($itemCount < 0) {
1699 $status = 'no';
1700 $html .= wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_no_cart_items')));
1701 } else {
1702 $status = 'yes';
1703 $checkout_page_id = get_option('wp_chatbot_app_checkout');
1704 $checkout_parmanlink = esc_url(get_permalink($checkout_page_id));
1705 $html .= $checkout_parmanlink;
1706 }
1707 $response = array('status' => $status, 'html' => $html);
1708 echo wp_send_json($response);
1709 wp_die();
1710 }
1711 //User login on Checkout page.
1712 add_action('wp_ajax_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1713 add_action('wp_ajax_nopriv_qcld_wb_chatbot_checkout_user_login', 'qcld_wb_chatbot_checkout_user_login');
1714 function qcld_wb_chatbot_checkout_user_login(){
1715 // Nonce is checked, get the POST data and sign user on
1716 $info = array();
1717 //$info['nonce'] = $_POST['nonce_val'];
1718 $info['user_login'] = trim(sanitize_text_field($_POST['user_name']));
1719 $info['user_password'] = trim(sanitize_text_field($_POST['user_pass']));
1720 $info['remember'] = true;
1721 $user_signon = wp_signon($info, false);
1722 // $response=$info;
1723 $response = array();
1724 if (is_wp_error($user_signon)) {
1725 // $response['status'] = "fail";
1726 // $response['message'] = wpb_randmom_message_handle(unserialize(get_option('qlcd_wp_chatbot_order_password_incorrect')));
1727 $response = "no";
1728 } else {
1729 $response = "yes";
1730 }
1731 echo wp_send_json($response);
1732 die();
1733 }
1734 // Load template for App Order Thank You page url
1735 function wp_chatbot_load_app_template($template){
1736 if (is_page('wpwbot-mobile-app')) {
1737 return dirname(__FILE__) . '/templates/app-templates/app.php';
1738 }
1739 return $template;
1740 }
1741 add_filter('template_include', 'wp_chatbot_load_app_template', 99);
1742 // Load template for App Order Thank You page url
1743 function wp_chatbot_load_app_order_thankyou_template($template){
1744 if (is_page('wpwbot-app-order-thankyou')) {
1745 return dirname(__FILE__) . '/templates/app-templates/app-order-thankyou.php';
1746 }
1747 return $template;
1748 }
1749 add_filter('template_include', 'wp_chatbot_load_app_order_thankyou_template', 99);
1750 // Load template for App checkout
1751 function wp_chatbot_load_app_checkout_template($template){
1752 if (is_page('wpwbot-app-checkout')) {
1753 return dirname(__FILE__) . '/templates/app-templates/app-checkout.php';
1754 }
1755 return $template;
1756 }
1757 add_filter('template_include', 'wp_chatbot_load_app_checkout_template', 99);
1758 // Create embed page when plugin install or activate
1759 //register_activation_hook(__FILE__, 'wp_chatbot_create_app_order_thankyou_page');
1760 add_action('init', 'wp_chatbot_create_app_checkout_thankyou_page');
1761 function wp_chatbot_create_app_checkout_thankyou_page(){
1762 if (get_option('wp_chatbot_app_pages') == 1) {
1763 //Mobile App page create
1764 if (get_page_by_title('wpwBot Mobile App') == NULL) {
1765 //post status and options
1766 $app_page = array(
1767 'comment_status' => 'closed',
1768 'ping_status' => 'closed',
1769 'post_author' => get_current_user_id(),
1770 'post_date' => date('Y-m-d H:i:s'),
1771 'post_status' => 'publish',
1772 'post_title' => 'wpwBot Mobile App',
1773 'post_name' => 'wpwbot-mobile-app',
1774 'post_type' => 'page',
1775 );
1776 //insert page and save the id
1777 $wpwbot_app = wp_insert_post($app_page, false);
1778 //save the id in the database
1779 update_option('wp_chatbot_app_checkout', $wpwbot_app);
1780 }
1781 //App checkout page create
1782 if (get_page_by_title('wpwBot App Checkout') == NULL) {
1783 //post status and options
1784 $checkout_page = array(
1785 'comment_status' => 'closed',
1786 'ping_status' => 'closed',
1787 'post_author' => get_current_user_id(),
1788 'post_date' => date('Y-m-d H:i:s'),
1789 'post_status' => 'publish',
1790 'post_title' => 'wpwBot App Checkout',
1791 'post_name' => 'wpwbot-app-checkout',
1792 'post_type' => 'page',
1793 );
1794 //insert page and save the id
1795 $app_checkout = wp_insert_post($checkout_page, false);
1796 //save the id in the database
1797 update_option('wp_chatbot_app_checkout', $app_checkout);
1798 }
1799 //App Order thank you page create
1800 if (get_page_by_title('wpwBot App Order Thank You') == NULL) {
1801 //post status and options
1802 $thankyou_page = array(
1803 'comment_status' => 'closed',
1804 'ping_status' => 'closed',
1805 'post_author' => get_current_user_id(),
1806 'post_date' => date('Y-m-d H:i:s'),
1807 'post_status' => 'publish',
1808 'post_title' => 'wpwBot App Order Thank You',
1809 'post_name' => 'wpwbot-app-order-thankyou',
1810 'post_type' => 'page',
1811 );
1812 //insert page and save the id
1813 $app_order_thankyou = wp_insert_post($thankyou_page, false);
1814 //save the id in the database
1815 update_option('wp_chatbot_app_order_thankyou', $app_order_thankyou);
1816 }
1817 }
1818 //Keep tracking from App by cookies
1819 if (isset($_GET['from']) && $_GET['from'] == 'app') {
1820 if (!isset($_COOKIE['from_app'])) {
1821 setcookie('from_app', 'yes', (time() + 3600), '/');
1822 }
1823 }
1824 }
1825 /***
1826 * Override order Thank page for mobile app
1827 */
1828 add_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase', 10, 1);
1829 function qcld_wb_chatbot__redirect_after_purchase($order_get_id){
1830 if (isset($_COOKIE['from_app']) && $_COOKIE['from_app'] == 'yes') {
1831 global $wp;
1832 if (is_checkout() && !empty($wp->query_vars['order-received'])) {
1833 $thanks_page_id = get_option('wp_chatbot_app_order_thankyou');
1834 $thanks_parmanlink = esc_url(get_permalink($thanks_page_id));
1835 wp_redirect($thanks_parmanlink . '?order_id=' . $order_get_id);
1836 exit;
1837 }
1838 } else {
1839 remove_action('wpcommerce_thankyou', 'qcld_wb_chatbot__redirect_after_purchase');
1840 do_action('wpcommerce_thankyou', $order_get_id);
1841 }
1842 }
1843
1844 function qcld_choose_random($array){
1845 return $array[array_rand($array)];
1846 }
1847
1848 //User session count
1849 add_action('wp_ajax_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1850 add_action('wp_ajax_nopriv_qcld_wb_chatbot_session_count', 'qcld_wb_chatbot_session_count');
1851 function qcld_wb_chatbot_session_count(){
1852 // Nonce is checked, get the POST data and sign user on
1853 global $wpdb;
1854 $wpdb->show_errors = true;
1855 $tableuser = $wpdb->prefix.'wpbot_sessions';
1856 $response = array();
1857
1858
1859 $session_exists = $wpdb->get_row("select * from $tableuser where 1 and id = '1'");
1860 if(empty($session_exists)){
1861 $wpdb->insert(
1862 $tableuser,
1863 array(
1864 'session' => 1,
1865 )
1866 );
1867 }else{
1868
1869 $session_id = $session_exists->id;
1870 $wpdb->update(
1871 $tableuser,
1872 array(
1873 'session'=>($session_exists->session+1),
1874 ),
1875 array('id'=>$session_id),
1876 array(
1877 '%d',
1878 ),
1879 array('%d')
1880 );
1881 }
1882
1883 echo wp_send_json($response);
1884 die();
1885 }