PluginProbe ʕ •ᴥ•ʔ
AI ChatBot for eCommerce – WoowBot / 3.2.6
AI ChatBot for eCommerce – WoowBot v3.2.6
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 4 years ago fonts 4 years ago images 4 years ago js 4 years ago lang 4 years ago qc-support-promo-page 4 years ago class-plugin-deactivate-feedback.php 4 years ago class-qc-free-plugin-upgrade-notice.php 4 years ago functions.php 4 years ago qcld-woowbot-info-page.php 4 years ago qcld-woowbot.php 4 years ago readme.txt 4 years ago woowbot-slick-button.png 4 years ago
functions.php
328 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 return $woo_chatbot_load;
232 }
233 //checking Devices
234 function woo_chatbot_is_mobile(){
235 $useragent=$_SERVER['HTTP_USER_AGENT'];
236 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))){
237 return true;
238 }else{
239 return false;
240 }
241 }
242
243 function qc_fnc_get_ip_address(){
244
245 if (!empty($_SERVER['HTTP_CLIENT_IP']))
246 {
247 $ip_address = $_SERVER['HTTP_CLIENT_IP'];
248 }
249 //whether ip is from proxy
250 elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
251 {
252 $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
253 }
254 //whether ip is from remote address
255 else
256 {
257 $ip_address = $_SERVER['REMOTE_ADDR'];
258 }
259 return $ip_address;
260
261 }
262
263 add_action('wp_ajax_qcld_woo_chatbot_email', 'qcld_woo_chatbot_email');
264 add_action('wp_ajax_nopriv_qcld_woo_chatbot_email', 'qcld_woo_chatbot_email');
265 function qcld_woo_chatbot_email(){
266 $name = trim(sanitize_text_field($_POST['name']));
267 $email = sanitize_email($_POST['email']);
268 $message = sanitize_text_field($_POST['message']);
269 $page = $_POST['page'];
270 $subject = 'Support Request from WoowBot';
271
272 $user_agent = $_SERVER['HTTP_USER_AGENT'];
273 $ip_address = qc_fnc_get_ip_address();
274
275 //Extract Domain
276 $url = get_site_url();
277 $url = parse_url($url);
278 $domain = $url['host'];
279
280 $admin_email = get_option('admin_email');
281 $toEmail = get_option('qlcd_wp_chatbot_admin_email') != '' ? get_option('qlcd_wp_chatbot_admin_email') : $admin_email;
282 $fromEmail = "wordpress@" . $domain;
283
284 if(get_option('qlcd_wp_chatbot_admin_from_email') && get_option('qlcd_wp_chatbot_admin_from_email')!=''){
285 $fromEmail = get_option('qlcd_wp_chatbot_admin_from_email');
286 }
287
288 $replyto = $fromEmail;
289
290 //Starting messaging and status.
291 $response['status'] = 'fail';
292 $response['message'] = 'Failed. Unable to send email.';
293 //build email body
294 $bodyContent = "";
295 $bodyContent .= '<p><strong>' . esc_html__('Support Request Details', 'wpchatbot') . ':</strong></p><hr>';
296 $bodyContent .= '<p>' . esc_html__('Name', 'wpchatbot') . ' : ' . esc_html($name) . '</p>';
297 $bodyContent .= '<p>' . esc_html__('Email', 'wpchatbot') . ' : ' . esc_html($email) . '</p>';
298 $bodyContent .= '<p>' . esc_html__('Subject', 'wpchatbot') . ' : ' . esc_html($subject) . '</p>';
299 $bodyContent .= '<p>' . esc_html__('Message', 'wpchatbot') . ' : ' . esc_html($message) . '</p>';
300 $bodyContent .= '<p>' . esc_html__('Page', 'wpchatbot') . ' : ' . ($page) . '</p>';
301 $bodyContent .= '<p>' . esc_html__('User Agent', 'wpchatbot') . ' : ' . ($user_agent) . '</p>';
302 $bodyContent .= '<p>' . esc_html__('IP Address', 'wpchatbot') . ' : ' . ($ip_address) . '</p>';
303 $bodyContent .= '<p>' . esc_html__('Mail Generated on', 'wpchatbot') . ': ' . current_time('F j, Y, g:i a') . '</p>';
304 $to = $toEmail;
305 $body = $bodyContent;
306 $headers = array();
307 $headers[] = 'Content-Type: text/html; charset=UTF-8';
308 $headers[] = 'From: ' . esc_html($name) . ' <' . esc_html($fromEmail) . '>';
309 $headers[] = 'Reply-To: ' . esc_html($name) . ' <' . esc_html($email) . '>';
310 $result = wp_mail($to, $subject, $body, $headers);
311 $support_email_to_crm_contact = get_option('wpbot_support_mail_to_crm_contact');
312 if($support_email_to_crm_contact){
313 do_action( 'qcld_mailing_list_subscription_success', $name, $email );
314 }
315 if ($result) {
316 $response['status'] = 'success';
317 $response['message'] = 'Email has been sent successfully!';
318 }
319
320
321 echo json_encode($response);
322 die();
323 }
324
325
326
327
328