PluginProbe ʕ •ᴥ•ʔ
AI ChatBot for eCommerce – WoowBot / 3.3.8
AI ChatBot for eCommerce – WoowBot v3.3.8
4.8.2 4.8.1 4.7.9 4.7.7 4.7.8 4.7.6 4.7.5 4.7.4 4.7.1 4.7.0 4.6.1 4.5.9 3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 3.5.0 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.6.9 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.8.8 3.8.9 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.8 4.3.9 4.4.0 4.4.1 4.4.2 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 trunk 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.9.0 3,2,7 3.0.0 3.1.0 3.1.1 3.1.2 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.8 3.2.9 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4
woowbot-woocommerce-chatbot / functions.php
woowbot-woocommerce-chatbot Last commit date
css 3 years ago fonts 3 years ago images 3 years ago js 3 years ago lang 3 years ago qc-support-promo-page 3 years ago class-plugin-deactivate-feedback.php 3 years ago class-qc-free-plugin-upgrade-notice.php 3 years ago functions.php 3 years ago qcld-woowbot-info-page.php 3 years ago qcld-woowbot.php 3 years ago readme.txt 3 years ago woowbot-slick-button.png 3 years ago
functions.php
389 lines
1 <?php
2
3 /**
4 * @param $type
5 * Display recently viewed products
6 */
7 if (!defined('ABSPATH')) exit; // Exit if accessed directly
8
9
10 add_action('wp_footer', 'woo_chatbot_load_footer_html');
11 function woo_chatbot_load_footer_html()
12 { ?>
13 <?php if (get_option('disable_woo_chatbot') != 1 && woo_chatbot_load_controlling()==true): ?>
14 <style>
15 <?php if(get_option('woo_chatbot_custom_css')!=""){echo get_option('woo_chatbot_custom_css'); } ?>
16 <?php
17
18 if (get_option('qcld_woo_chatbot_change_bg') == 1) {
19 if (get_option('qcld_woo_chatbot_board_bg_path') != ""){
20
21 $qcld_woo_chatbot_board_bg_path = get_option('qcld_woo_chatbot_board_bg_path');
22
23 ?>
24
25 .woo-chatbot-ball-inner {
26 background-image: url(<?php echo $qcld_woo_chatbot_board_bg_path;?>) !important;
27 background-size: cover;
28 background-position: center center;
29 }
30 <?php
31 }
32 }
33 ?>
34
35 </style>
36 <div id="woo-chatbot-icon-container">
37 <div id="woo-chatbot-ball-wrapper" style="display:none">
38
39 <div id="woo-chatbot-ball-container" style="display:none" class="woo-chatbot-ball-container">
40 <div class="woo-chatbot-admin">
41 <h4><?php if(get_option('qlcd_woo_chatbot_conversations_with')!=''){echo get_option('qlcd_woo_chatbot_conversations_with');}else{ esc_html_e('Conversations with', 'woochatbot'); } ?></h4>
42 <h3> <?php if(get_option('qlcd_woo_chatbot_agent')!=''){echo get_option('qlcd_woo_chatbot_agent');} ?></h3>
43 </div>
44 <div class="woo-chatbot-ball-inner">
45 <div class="woo-chatbot-messages-wrapper">
46 <ul id="woo-chatbot-messages-container" class="woo-chatbot-messages-container">
47 </ul>
48 </div>
49 </div>
50 <div id="woo-chatbot-editor-container" class="woo-chatbot-editor-container">
51 <input id="woo-chatbot-editor" class="woo-chatbot-editor" required placeholder="<?php esc_html_e('Send a message.', 'woochatbot'); ?>"
52 maxlength="100">
53 <button type="button" id="woo-chatbot-send-message" class="woo-chatbot-button"><?php esc_html_e('send', 'woochatbot'); ?></button>
54 </div>
55 </div>
56 <!--woo-chatbot-ball-container-->
57 <div id="woo-chatbot-ball" class="woo-chatbot-ball">
58 <?php
59
60 if(get_option('woo_chatbot_icon') != 'custom.png'){ ?>
61 <img src="<?php echo QCLD_WOOCHATBOT_IMG_URL . '/' . get_option('woo_chatbot_icon'); ?>"
62 alt="WooChatIcon">
63 <?php }else{?>
64 <img width="60" height="60" src="<?php echo get_option('wp_chatbot_custom_icon_path'); ?>"
65 alt="WooChatIcon">
66 <?php } ?>
67
68
69 </div>
70 <!--container-->
71 </div>
72 <!--woo-chatbot-ball-wrapper-->
73 </div>
74 <?php endif;
75
76 }
77
78 add_action('wp_ajax_qcld_woo_chatbot_keyword', 'qcld_woo_chatbot_keyword');
79 add_action('wp_ajax_nopriv_qcld_woo_chatbot_keyword', 'qcld_woo_chatbot_keyword');
80
81
82 function qcld_woo_chatbot_keyword()
83 {
84 $keyword = sanitize_text_field($_POST['keyword']);
85 $product_per_page=get_option('qlcd_woo_chatbot_ppp')!=''? get_option('qlcd_woo_chatbot_ppp') :10;
86 //Merging all query together.
87 $argu_params = array(
88 'post_type' => 'product',
89 'post_status' => 'publish',
90 'posts_per_page' => $product_per_page,
91 'order' => 'ASC',
92 's' => $keyword,
93 );
94 /******
95 *WP Query Operation to get products.*
96 *******/
97 $product_query = new WP_Query($argu_params);
98 $product_num = $product_query->post_count;
99 $html = '<div class="woo-chatbot-featured-products">';
100
101 $_pf = new WC_Product_Factory();
102 //repeating the products
103 if ($product_num > 0) {
104 //$html .= '<p>sdf sdfdsf : '.$asdfdf.'</p>';
105 $html .= '<ul class="woo-chatbot-products">';
106 while ($product_query->have_posts()) : $product_query->the_post();
107 $product = $_pf->get_product(get_the_ID());
108 //$qcld_thumb = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'shop_thumbnail' );
109 $image = get_the_post_thumbnail(get_the_ID(), 'shop_catalog');
110 if(empty($image)){
111 $image = woocommerce_placeholder_img( 'shop_catalog' );
112 }
113
114 $html .= '<li class="woo-chatbot-product">';
115 $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->get_title()) . '">';
116 $html .= $image . '</a>
117 <div class="woo-chatbot-product-summary">
118 <div class="woo-chatbot-product-table">
119 <div class="woo-chatbot-product-table-cell">
120 <h3 class="woo-chatbot-product-title"><a target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->get_title()) . '">' . esc_attr($product->get_title()) . '</a></h3>
121 <div class="price">' . $product->get_price_html() . '</div>';
122
123 // if ($product->is_type('simple')) {
124 // $html .= '<a target="_blank" href="' . get_site_url() . '?add-to-cart=' . get_the_ID() . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '" class="woo-chatbot-button woo-chatbot-button-cart add_to_cart_button ajax_add_to_cart" data-quantity="1" data-product_id="' . get_the_ID() . '" >Add to Cart</a>';
125 // } else {
126 // $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '" class="woo-chatbot-button woo-chatbot-button-cart" >View Detail</a>';
127 // }
128 $html .= ' </div>
129 </div>
130 </div>
131 </li>';
132 endwhile;
133 wp_reset_postdata();
134 $html .= '</ul>';
135 }
136 $html .= '</div>';
137 $response = array('html' => $html, 'product_num' => $product_num);
138 echo wp_send_json($response);
139 wp_die();
140 }
141
142 add_action('wp_ajax_qcld_woo_chatbot_category', 'qcld_woo_chatbot_category');
143 add_action('wp_ajax_nopriv_qcld_woo_chatbot_category', 'qcld_woo_chatbot_category');
144
145 function qcld_woo_chatbot_category()
146 {
147 $terms = get_terms(array(
148 'taxonomy' => 'product_cat',
149 'hide_empty' => true,
150 ));
151 $html = "";
152 foreach ($terms as $term) {
153
154 $html .= '<span class="qcld-chatbot-product-category" type="button" data-category-slug="' . $term->slug . '" data-category-id="' . $term->term_id . '">' . $term->name . '</span>';
155 }
156 echo wp_send_json($html);
157 wp_die();
158 }
159
160 add_action('wp_ajax_qcld_woo_chatbot_category_products', 'qcld_woo_chatbot_category_products');
161 add_action('wp_ajax_nopriv_qcld_woo_chatbot_category_products', 'qcld_woo_chatbot_category_products');
162 function qcld_woo_chatbot_category_products()
163 {
164 $category_id = sanitize_text_field($_POST['category']);
165 $product_per_page=get_option('qlcd_woo_chatbot_ppp')!=''? get_option('qlcd_woo_chatbot_ppp') :10;
166 //Merging all query together.
167 $argu_params = array(
168 'post_type' => 'product',
169 'post_status' => 'publish',
170 'ignore_sticky_posts' => 1,
171 'posts_per_page' => $product_per_page,
172 'tax_query' => array(
173 array(
174 'taxonomy' => 'product_cat',
175 'field' => 'term_id',
176 'terms' => $category_id,
177 'operator' => 'IN'
178 )
179 )
180 );
181 /******
182 *WP Query Operation to get products.*
183 *******/
184 $product_query = new WP_Query($argu_params);
185 $product_num = $product_query->post_count;
186
187 $_pf = new WC_Product_Factory();
188 //repeating the products
189 $html="";
190 if ($product_num > 0) {
191
192 $html .= '<div class="woo-chatbot-featured-products">';
193 //$html .= '<p>sdf sdfdsf : '.$asdfdf.'</p>';
194 $html .= '<ul class="woo-chatbot-products">';
195 while ($product_query->have_posts()) : $product_query->the_post();
196 $product = $_pf->get_product(get_the_ID());
197 //$qcld_thumb = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'shop_thumbnail' );
198 $html .= '<li class="woo-chatbot-product">';
199 $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '">';
200 $image = get_the_post_thumbnail(get_the_ID(), 'shop_catalog');
201 if(empty($image)){
202 $image = woocommerce_placeholder_img( 'shop_catalog' );
203 }
204
205 $html .= $image . '</a>
206 <div class="woo-chatbot-product-summary">
207 <div class="woo-chatbot-product-table">
208 <div class="woo-chatbot-product-table-cell">
209 <h3 class="woo-chatbot-product-title"><a target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '">' . $product->post->post_title . '</a></h3>
210 <div class="price">' . $product->get_price_html() . '</div>';
211
212 // if ($product->is_type('simple')) {
213 // $html .= '<a target="_blank" href="' . get_site_url() . '?add-to-cart=' . get_the_ID() . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '" class="woo-chatbot-button woo-chatbot-button-cart add_to_cart_button ajax_add_to_cart" data-quantity="1" data-product_id="' . get_the_ID() . '" >Add to Cart</a>';
214 // } else {
215 // $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '" class="woo-chatbot-button woo-chatbot-button-cart" >View Detail</a>';
216 // }
217 $html .= ' </div>
218 </div>
219 </div>
220 </li>';
221 endwhile;
222 wp_reset_postdata();
223 $html .= '</ul>';
224
225 $html .= '</div>';
226 }else{
227 $html.="";
228 }
229 $response = array('html' => $html, 'product_num' => $product_num);
230 echo wp_send_json($response);
231 wp_die();
232
233 }
234 //woo_chatbot load control handler.
235 function woo_chatbot_load_controlling(){
236 $woo_chatbot_load=true;
237 if(woo_chatbot_is_mobile()&& get_option('disable_woo_chatbot_on_mobile')==1){
238 $woo_chatbot_load=false;
239 }
240 if (get_option('wp_chatbot_show_pages') == 'off') {
241 $wp_chatbot_select_pages = unserialize(get_option('wp_chatbot_show_pages_list'));
242 if (is_page() && !empty($wp_chatbot_select_pages)) {
243
244 if (in_array(get_the_ID(), $wp_chatbot_select_pages) == true) {
245
246 $woo_chatbot_load = true;
247 } else {
248 $woo_chatbot_load = false;
249 }
250
251 }
252
253 if(function_exists('is_shop')){
254 if (is_shop() || is_cart() || is_checkout() || 'product' == get_post_type()) {
255 $woo_chatbot_load = false;
256 }
257 }
258
259 }
260 if (get_option('wp_chatbot_show_wpcommerce') == 'off') {
261
262 }
263 //load wpwbot shortcode template and prevent default wpwbot from footer.
264 if (is_page()) {
265 $page_id = get_the_ID();
266 $page = get_post($page_id);
267 if (has_shortcode($page->post_content, 'wpwbot')) {
268 $woo_chatbot_load = false;
269 }
270 }
271
272 $post_list = maybe_unserialize(get_option('wp_chatbot_exclude_post_list'));
273
274 if( is_array( $post_list ) && in_array(get_post_type(), $post_list)){
275 $woo_chatbot_load = false;
276 }
277 if (woo_chatbot_is_mobile() && get_option('disable_wp_chatbot_on_mobile') == 1) {
278 $woo_chatbot_load = false;
279 }
280
281 if (get_option('wp_chatbot_show_home_page') == 'off' && is_home()) {
282 $woo_chatbot_load = false;
283 }
284
285 if (get_option('wp_chatbot_show_posts') == 'off' && 'post' == get_post_type()) {
286 $woo_chatbot_load = false;
287 }
288
289 if(is_admin()){
290 $woo_chatbot_load = false;
291 }
292 return $woo_chatbot_load;
293 }
294 //checking Devices
295 function woo_chatbot_is_mobile(){
296 $useragent=$_SERVER['HTTP_USER_AGENT'];
297 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))){
298 return true;
299 }else{
300 return false;
301 }
302 }
303
304 function qc_fnc_get_ip_address(){
305
306 if (!empty($_SERVER['HTTP_CLIENT_IP']))
307 {
308 $ip_address = $_SERVER['HTTP_CLIENT_IP'];
309 }
310 //whether ip is from proxy
311 elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
312 {
313 $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
314 }
315 //whether ip is from remote address
316 else
317 {
318 $ip_address = $_SERVER['REMOTE_ADDR'];
319 }
320 return $ip_address;
321
322 }
323
324 add_action('wp_ajax_qcld_woo_chatbot_email', 'qcld_woo_chatbot_email');
325 add_action('wp_ajax_nopriv_qcld_woo_chatbot_email', 'qcld_woo_chatbot_email');
326 function qcld_woo_chatbot_email(){
327 $name = trim(sanitize_text_field($_POST['name']));
328 $email = sanitize_email($_POST['email']);
329 $message = sanitize_text_field($_POST['message']);
330 $page = $_POST['page'];
331 $subject = 'Support Request from WoowBot';
332
333 $user_agent = $_SERVER['HTTP_USER_AGENT'];
334 $ip_address = qc_fnc_get_ip_address();
335
336 //Extract Domain
337 $url = get_site_url();
338 $url = parse_url($url);
339 $domain = $url['host'];
340
341 $admin_email = get_option('admin_email');
342 $toEmail = get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email;
343 $fromEmail = "wordpress@" . $domain;
344
345 if(get_option('qlcd_wp_chatbot_admin_from_email') && get_option('qlcd_wp_chatbot_admin_from_email')!=''){
346 $fromEmail = get_option('qlcd_wp_chatbot_admin_from_email');
347 }
348
349 $replyto = $fromEmail;
350
351 //Starting messaging and status.
352 $response['status'] = 'fail';
353 $response['message'] = 'Failed. Unable to send email.';
354 //build email body
355 $bodyContent = "";
356 $bodyContent .= '<p><strong>' . esc_html__('Support Request Details', 'wpchatbot') . ':</strong></p><hr>';
357 $bodyContent .= '<p>' . esc_html__('Name', 'wpchatbot') . ' : ' . esc_html($name) . '</p>';
358 $bodyContent .= '<p>' . esc_html__('Email', 'wpchatbot') . ' : ' . esc_html($email) . '</p>';
359 $bodyContent .= '<p>' . esc_html__('Subject', 'wpchatbot') . ' : ' . esc_html($subject) . '</p>';
360 $bodyContent .= '<p>' . esc_html__('Message', 'wpchatbot') . ' : ' . esc_html($message) . '</p>';
361 $bodyContent .= '<p>' . esc_html__('Page', 'wpchatbot') . ' : ' . ($page) . '</p>';
362 $bodyContent .= '<p>' . esc_html__('User Agent', 'wpchatbot') . ' : ' . ($user_agent) . '</p>';
363 $bodyContent .= '<p>' . esc_html__('IP Address', 'wpchatbot') . ' : ' . ($ip_address) . '</p>';
364 $bodyContent .= '<p>' . esc_html__('Mail Generated on', 'wpchatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
365 $to = $toEmail;
366 $body = $bodyContent;
367 $headers = array();
368 $headers[] = 'Content-Type: text/html; charset=UTF-8';
369 $headers[] = 'From: ' . esc_html($name) . ' <' . esc_html($fromEmail) . '>';
370 $headers[] = 'Reply-To: ' . esc_html($name) . ' <' . esc_html($email) . '>';
371 $result = wp_mail($to, $subject, $body, $headers);
372 $support_email_to_crm_contact = get_option('wpbot_support_mail_to_crm_contact');
373 if($support_email_to_crm_contact){
374 do_action( 'qcld_mailing_list_subscription_success', $name, $email );
375 }
376 if ($result) {
377 $response['status'] = 'success';
378 $response['message'] = 'Email has been sent successfully!';
379 }
380
381
382 echo json_encode($response);
383 die();
384 }
385
386
387
388
389