PluginProbe ʕ •ᴥ•ʔ
AI ChatBot for eCommerce – WoowBot / 3.3.0
AI ChatBot for eCommerce – WoowBot v3.3.0
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
380 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 <img src="<?php echo QCLD_WOOCHATBOT_IMG_URL . '/' . get_option('woo_chatbot_icon'); ?>"
59 alt="WooChatIcon">
60 </div>
61 <!--container-->
62 </div>
63 <!--woo-chatbot-ball-wrapper-->
64 </div>
65 <?php endif;
66
67 }
68
69 add_action('wp_ajax_qcld_woo_chatbot_keyword', 'qcld_woo_chatbot_keyword');
70 add_action('wp_ajax_nopriv_qcld_woo_chatbot_keyword', 'qcld_woo_chatbot_keyword');
71
72
73 function qcld_woo_chatbot_keyword()
74 {
75 $keyword = sanitize_text_field($_POST['keyword']);
76 $product_per_page=get_option('qlcd_woo_chatbot_ppp')!=''? get_option('qlcd_woo_chatbot_ppp') :10;
77 //Merging all query together.
78 $argu_params = array(
79 'post_type' => 'product',
80 'post_status' => 'publish',
81 'posts_per_page' => $product_per_page,
82 'order' => 'ASC',
83 's' => $keyword,
84 );
85 /******
86 *WP Query Operation to get products.*
87 *******/
88 $product_query = new WP_Query($argu_params);
89 $product_num = $product_query->post_count;
90 $html = '<div class="woo-chatbot-featured-products">';
91
92 $_pf = new WC_Product_Factory();
93 //repeating the products
94 if ($product_num > 0) {
95 //$html .= '<p>sdf sdfdsf : '.$asdfdf.'</p>';
96 $html .= '<ul class="woo-chatbot-products">';
97 while ($product_query->have_posts()) : $product_query->the_post();
98 $product = $_pf->get_product(get_the_ID());
99 //$qcld_thumb = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'shop_thumbnail' );
100 $image = get_the_post_thumbnail(get_the_ID(), 'shop_catalog');
101 if(empty($image)){
102 $image = woocommerce_placeholder_img( 'shop_catalog' );
103 }
104
105 $html .= '<li class="woo-chatbot-product">';
106 $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->get_title()) . '">';
107 $html .= $image . '</a>
108 <div class="woo-chatbot-product-summary">
109 <div class="woo-chatbot-product-table">
110 <div class="woo-chatbot-product-table-cell">
111 <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>
112 <div class="price">' . $product->get_price_html() . '</div>';
113
114 // if ($product->is_type('simple')) {
115 // $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>';
116 // } else {
117 // $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>';
118 // }
119 $html .= ' </div>
120 </div>
121 </div>
122 </li>';
123 endwhile;
124 wp_reset_postdata();
125 $html .= '</ul>';
126 }
127 $html .= '</div>';
128 $response = array('html' => $html, 'product_num' => $product_num);
129 echo wp_send_json($response);
130 wp_die();
131 }
132
133 add_action('wp_ajax_qcld_woo_chatbot_category', 'qcld_woo_chatbot_category');
134 add_action('wp_ajax_nopriv_qcld_woo_chatbot_category', 'qcld_woo_chatbot_category');
135
136 function qcld_woo_chatbot_category()
137 {
138 $terms = get_terms(array(
139 'taxonomy' => 'product_cat',
140 'hide_empty' => true,
141 ));
142 $html = "";
143 foreach ($terms as $term) {
144
145 $html .= '<span class="qcld-chatbot-product-category" type="button" data-category-slug="' . $term->slug . '" data-category-id="' . $term->term_id . '">' . $term->name . '</span>';
146 }
147 echo wp_send_json($html);
148 wp_die();
149 }
150
151 add_action('wp_ajax_qcld_woo_chatbot_category_products', 'qcld_woo_chatbot_category_products');
152 add_action('wp_ajax_nopriv_qcld_woo_chatbot_category_products', 'qcld_woo_chatbot_category_products');
153 function qcld_woo_chatbot_category_products()
154 {
155 $category_id = sanitize_text_field($_POST['category']);
156 $product_per_page=get_option('qlcd_woo_chatbot_ppp')!=''? get_option('qlcd_woo_chatbot_ppp') :10;
157 //Merging all query together.
158 $argu_params = array(
159 'post_type' => 'product',
160 'post_status' => 'publish',
161 'ignore_sticky_posts' => 1,
162 'posts_per_page' => $product_per_page,
163 'tax_query' => array(
164 array(
165 'taxonomy' => 'product_cat',
166 'field' => 'term_id',
167 'terms' => $category_id,
168 'operator' => 'IN'
169 )
170 )
171 );
172 /******
173 *WP Query Operation to get products.*
174 *******/
175 $product_query = new WP_Query($argu_params);
176 $product_num = $product_query->post_count;
177
178 $_pf = new WC_Product_Factory();
179 //repeating the products
180 $html="";
181 if ($product_num > 0) {
182
183 $html .= '<div class="woo-chatbot-featured-products">';
184 //$html .= '<p>sdf sdfdsf : '.$asdfdf.'</p>';
185 $html .= '<ul class="woo-chatbot-products">';
186 while ($product_query->have_posts()) : $product_query->the_post();
187 $product = $_pf->get_product(get_the_ID());
188 //$qcld_thumb = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'shop_thumbnail' );
189 $html .= '<li class="woo-chatbot-product">';
190 $html .= '<a target="_blank" href="' . get_permalink(get_the_ID()) . '" title="' . esc_attr($product->post->post_title ? $product->post->post_title : get_the_ID()) . '">';
191 $image = get_the_post_thumbnail(get_the_ID(), 'shop_catalog');
192 if(empty($image)){
193 $image = woocommerce_placeholder_img( 'shop_catalog' );
194 }
195
196 $html .= $image . '</a>
197 <div class="woo-chatbot-product-summary">
198 <div class="woo-chatbot-product-table">
199 <div class="woo-chatbot-product-table-cell">
200 <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>
201 <div class="price">' . $product->get_price_html() . '</div>';
202
203 // if ($product->is_type('simple')) {
204 // $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>';
205 // } else {
206 // $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>';
207 // }
208 $html .= ' </div>
209 </div>
210 </div>
211 </li>';
212 endwhile;
213 wp_reset_postdata();
214 $html .= '</ul>';
215
216 $html .= '</div>';
217 }else{
218 $html.="";
219 }
220 $response = array('html' => $html, 'product_num' => $product_num);
221 echo wp_send_json($response);
222 wp_die();
223
224 }
225 //woo_chatbot load control handler.
226 function woo_chatbot_load_controlling(){
227 $woo_chatbot_load=true;
228 if(woo_chatbot_is_mobile()&& get_option('disable_woo_chatbot_on_mobile')==1){
229 $woo_chatbot_load=false;
230 }
231 if (get_option('wp_chatbot_show_pages') == 'off') {
232 $wp_chatbot_select_pages = unserialize(get_option('wp_chatbot_show_pages_list'));
233 if (is_page() && !empty($wp_chatbot_select_pages)) {
234
235 if (in_array(get_the_ID(), $wp_chatbot_select_pages) == true) {
236
237 $woo_chatbot_load = true;
238 } else {
239 $woo_chatbot_load = false;
240 }
241
242 }
243
244 if(function_exists('is_shop')){
245 if (is_shop() || is_cart() || is_checkout() || 'product' == get_post_type()) {
246 $woo_chatbot_load = false;
247 }
248 }
249
250 }
251 if (get_option('wp_chatbot_show_wpcommerce') == 'off') {
252
253 }
254 //load wpwbot shortcode template and prevent default wpwbot from footer.
255 if (is_page()) {
256 $page_id = get_the_ID();
257 $page = get_post($page_id);
258 if (has_shortcode($page->post_content, 'wpwbot')) {
259 $woo_chatbot_load = false;
260 }
261 }
262
263 $post_list = maybe_unserialize(get_option('wp_chatbot_exclude_post_list'));
264
265 if( is_array( $post_list ) && in_array(get_post_type(), $post_list)){
266 $woo_chatbot_load = false;
267 }
268 if (woo_chatbot_is_mobile() && get_option('disable_wp_chatbot_on_mobile') == 1) {
269 $woo_chatbot_load = false;
270 }
271
272 if (get_option('wp_chatbot_show_home_page') == 'off' && is_home()) {
273 $woo_chatbot_load = false;
274 }
275
276 if (get_option('wp_chatbot_show_posts') == 'off' && 'post' == get_post_type()) {
277 $woo_chatbot_load = false;
278 }
279
280 if(is_admin()){
281 $woo_chatbot_load = false;
282 }
283 return $woo_chatbot_load;
284 }
285 //checking Devices
286 function woo_chatbot_is_mobile(){
287 $useragent=$_SERVER['HTTP_USER_AGENT'];
288 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))){
289 return true;
290 }else{
291 return false;
292 }
293 }
294
295 function qc_fnc_get_ip_address(){
296
297 if (!empty($_SERVER['HTTP_CLIENT_IP']))
298 {
299 $ip_address = $_SERVER['HTTP_CLIENT_IP'];
300 }
301 //whether ip is from proxy
302 elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
303 {
304 $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
305 }
306 //whether ip is from remote address
307 else
308 {
309 $ip_address = $_SERVER['REMOTE_ADDR'];
310 }
311 return $ip_address;
312
313 }
314
315 add_action('wp_ajax_qcld_woo_chatbot_email', 'qcld_woo_chatbot_email');
316 add_action('wp_ajax_nopriv_qcld_woo_chatbot_email', 'qcld_woo_chatbot_email');
317 function qcld_woo_chatbot_email(){
318 $name = trim(sanitize_text_field($_POST['name']));
319 $email = sanitize_email($_POST['email']);
320 $message = sanitize_text_field($_POST['message']);
321 $page = $_POST['page'];
322 $subject = 'Support Request from WoowBot';
323
324 $user_agent = $_SERVER['HTTP_USER_AGENT'];
325 $ip_address = qc_fnc_get_ip_address();
326
327 //Extract Domain
328 $url = get_site_url();
329 $url = parse_url($url);
330 $domain = $url['host'];
331
332 $admin_email = get_option('admin_email');
333 $toEmail = get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email;
334 $fromEmail = "wordpress@" . $domain;
335
336 if(get_option('qlcd_wp_chatbot_admin_from_email') && get_option('qlcd_wp_chatbot_admin_from_email')!=''){
337 $fromEmail = get_option('qlcd_wp_chatbot_admin_from_email');
338 }
339
340 $replyto = $fromEmail;
341
342 //Starting messaging and status.
343 $response['status'] = 'fail';
344 $response['message'] = 'Failed. Unable to send email.';
345 //build email body
346 $bodyContent = "";
347 $bodyContent .= '<p><strong>' . esc_html__('Support Request Details', 'wpchatbot') . ':</strong></p><hr>';
348 $bodyContent .= '<p>' . esc_html__('Name', 'wpchatbot') . ' : ' . esc_html($name) . '</p>';
349 $bodyContent .= '<p>' . esc_html__('Email', 'wpchatbot') . ' : ' . esc_html($email) . '</p>';
350 $bodyContent .= '<p>' . esc_html__('Subject', 'wpchatbot') . ' : ' . esc_html($subject) . '</p>';
351 $bodyContent .= '<p>' . esc_html__('Message', 'wpchatbot') . ' : ' . esc_html($message) . '</p>';
352 $bodyContent .= '<p>' . esc_html__('Page', 'wpchatbot') . ' : ' . ($page) . '</p>';
353 $bodyContent .= '<p>' . esc_html__('User Agent', 'wpchatbot') . ' : ' . ($user_agent) . '</p>';
354 $bodyContent .= '<p>' . esc_html__('IP Address', 'wpchatbot') . ' : ' . ($ip_address) . '</p>';
355 $bodyContent .= '<p>' . esc_html__('Mail Generated on', 'wpchatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
356 $to = $toEmail;
357 $body = $bodyContent;
358 $headers = array();
359 $headers[] = 'Content-Type: text/html; charset=UTF-8';
360 $headers[] = 'From: ' . esc_html($name) . ' <' . esc_html($fromEmail) . '>';
361 $headers[] = 'Reply-To: ' . esc_html($name) . ' <' . esc_html($email) . '>';
362 $result = wp_mail($to, $subject, $body, $headers);
363 $support_email_to_crm_contact = get_option('wpbot_support_mail_to_crm_contact');
364 if($support_email_to_crm_contact){
365 do_action( 'qcld_mailing_list_subscription_success', $name, $email );
366 }
367 if ($result) {
368 $response['status'] = 'success';
369 $response['message'] = 'Email has been sent successfully!';
370 }
371
372
373 echo json_encode($response);
374 die();
375 }
376
377
378
379
380