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