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

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

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