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

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

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