PluginProbe
Live Chat & AI Chatbot – onWebChat / 3.2.0
Live Chat & AI Chatbot – onWebChat v3.2.0
3.9.2 3.9.3 3.9.1 3.9.0 3.8.4 3.8.2 3.8.1 3.8.0 3.7.2 3.7.1 3.7.0 3.6.0 3.5.5 trunk 1.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 All 48 releases
onwebchat / onwebchat.php

onwebchat.php in Live Chat & AI Chatbot – onWebChat 3.2.0, at onwebchat.php

548 lines 21.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: onWebChat Live Chat
4 Plugin URI: https://www.onwebchat.com/wordpress-live-chat-plugin.php
5 Description: live chat service that helps you communicate with your website's visitors.
6 Author: onWebChat
7 Version: 3.2.0
8 Author URI: https://www.onwebchat.com
9 */
10
11
12 /* ---------------------------------------------------- *
13 * Create Settings Page
14 * ---------------------------------------------------- */
15
16
17 define('ONWEBCHAT_SMALL_LOGO', plugins_url( 'images/onwebchat-logo.png' , __FILE__ ));
18 define('ONWEBCHAT_SERVER_URL','https://www.onwebchat.com/get-chatid.php');
19
20
21 // add styles
22 add_action( 'admin_enqueue_scripts', 'register_plugin_styles' );
23
24 // call function on hook admin_menu
25 add_action('admin_menu','onwebchat_setup_menu');
26
27 // create login error notice
28 add_action( 'admin_notices', 'onwebchat_login_error' );
29
30 // define the settings
31 add_action('admin_init','onwebchat_register_setttings');
32
33
34 /* ---------------------------------------------------- *
35 * Display onWebChat on footer
36 * ---------------------------------------------------- */
37
38 // add widget plugin to the footer
39 add_action('wp_footer', 'onwebchat_add_script_at_footer');
40
41
42 /* ----------------------------------------------------- *
43 * Admin Page registration
44 * ----------------------------------------------------- */
45
46 function onwebchat_setup_menu() {
47 add_menu_page( 'onWebChat Settings', 'onWebChat', 'administrator', 'onwebchat_settings', 'onwebchat_init_menu_page', ONWEBCHAT_SMALL_LOGO);
48 }
49
50
51 /* ------------------------------------------------------ *
52 * Admin Page Display Function
53 * ------------------------------------------------------ */
54
55 function onwebchat_init_menu_page() {
56
57
58 $options = get_option('onwebchat_plugin_option');
59 $chatId = $options['text_string'];
60
61 $isConnected = false;
62 if($chatId !="") {
63 $isConnected = true;
64 }
65
66 $isSecondPage = false;
67
68
69 /*****************************************************************
70 * Ask server for chatId
71 *****************************************************************/
72 if ( isset( $_POST["action"] ) && $_POST["action"] == "login" ) {
73
74
75 // the following lines are added to verify a correct security nonce(token) by using "wp_verify_nonce()"
76 if (! isset($_POST['_wpnonce'])
77 || ! wp_verify_nonce( $_POST['_wpnonce'], 'on_web_chat_nonce')){
78 print 'Sorry, your nonce did not verify.';
79 exit;
80 }
81
82 $options = get_option('onwebchat_plugin_option');
83 $chatId = $options['text_string'];
84 //****************************
85
86 // get username, password and chatId
87 $userName = $_POST["onWebChatUser"];
88
89 if(isset($_POST["onWebChatPass"])) {
90 $userPass = $_POST["onWebChatPass"];
91 }
92
93 $chatId = $_POST["chatId"];
94
95
96 if( isset($_POST["pages-select"])) {
97 $pagesSelect = $_POST["pages-select"];
98 }
99
100 if( isset($_POST["showonpages"])) {
101 $showOnPages = $_POST["showonpages"];
102 }
103
104 if(isset($_POST["hideonpages"])) {
105 $hideOnPages = $_POST["hideonpages"];
106 }
107
108 if(isset($_POST["onwebchat-api"])) {
109 $onwebchatApi = $_POST["onwebchat-api"];
110 }
111
112
113 if(isChatIdValid($chatId)) {
114
115 if ( isset($_POST["isSecondPage"])){
116 $isSecondPage = $_POST["isSecondPage"];
117 }
118
119 //----------- update chatId option ------------
120 $my_options = get_option('onwebchat_plugin_option');
121
122 $my_options['text_string'] = $chatId;
123
124 //Update entire array
125 update_option('onwebchat_plugin_option', $my_options);
126 //-----------------------------------------------
127
128 // remove user email from db
129 if(!$isSecondPage) {
130 update_option( 'onwebchat_plugin_option_user', '');
131 update_option( 'onwebchat_plugin_option_pages_select', 1);
132
133 } else {
134
135 update_option( 'onwebchat_plugin_option_pages_select', $pagesSelect);
136
137 if ($pagesSelect==2){
138 update_option( 'onwebchat_plugin_option_show_pages', $showOnPages);
139 } else if ($pagesSelect==3){
140 update_option( 'onwebchat_plugin_option_hide_pages', $hideOnPages);
141 }
142
143 //TODO update textarea
144 update_option( 'onwebchat_plugin_option_api_code', $onwebchatApi);
145 }
146
147 // move to next page
148 print('<script>window.location.href="admin.php?page=onwebchat_settings"</script>');
149
150 } else {
151
152 // save username at options
153 update_option( 'onwebchat_plugin_option_user', $userName );
154
155 // ask server for chatId
156 $response = wp_remote_post(ONWEBCHAT_SERVER_URL, array(
157 'method' => 'POST',
158 'timeout' => 45,
159 'redirection' => 5,
160 'httpversion' => '1.0',
161 'blocking' => true,
162 'headers' => array(),
163 'body' => array( 'email' => $userName, 'pass' => $userPass ),
164 'cookies' => array()
165 ));
166
167 if ( is_wp_error( $response ) ) {
168 $error_message = $response->get_error_message();
169
170 } else {
171 // If no chatId returned
172 if($response['body'] == '-1') {
173 // display an error for wrong credentials
174 onwebchat_login_error(true);
175
176 } else {
177
178 //----------- update chatId
179 $my_options = get_option('onwebchat_plugin_option');
180
181 $my_options['text_string'] = $response['body'];
182
183 update_option('onwebchat_plugin_option', $my_options);
184 update_option( 'onwebchat_plugin_option_pages_select', 1);
185 //--------------------------------------------
186
187 // move to next page
188 print('<script>window.location.href="admin.php?page=onwebchat_settings"</script>');
189 }
190 }
191 }
192
193 $m_option_hide = false;
194 if(isset($_POST['onwebchat_plugin_option_hide'])) {
195 $m_option_hide = $_POST['onwebchat_plugin_option_hide'];
196 }
197
198 update_option('onwebchat_plugin_option_hide', $m_option_hide); //an einai stin proti selida tote to kanei keno (opote by default den einai epilegmeno)
199
200 }
201
202 //********************************************************************
203
204
205 /*********************************************************************
206 * Disconnect account
207 *********************************************************************/
208 if( isset($_GET["action"]) && $_GET["action"] == "deactivate" && $isConnected) {
209 $isConnected = false;
210
211 $my_options = get_option('onwebchat_plugin_option');
212
213 $my_options['text_string'] = '';
214
215 update_option('onwebchat_plugin_option', $my_options);
216 update_option( 'onwebchat_plugin_option_pages_select', 1);
217
218 $chatIdOption = get_option('onwebchat_plugin_option');
219 $chatId = $chatIdOption['text_string'];
220
221 print('<script>window.location.href="admin.php?page=onwebchat_settings"</script>');
222
223 }
224 //***********************************************************************
225
226
227
228 ?>
229 <div>
230 <h2 style="font-size:22px; color:#59808c">onWebChat <?php ($isConnected == true) ? print 'Settings' : print 'Activation'; ?> </h2>
231
232 <form action="admin.php?page=onwebchat_settings" method="post">
233 <input type="hidden" name="action" value="login">
234 <?php
235
236 //create nonce(token)
237 wp_nonce_field('on_web_chat_nonce');
238
239 // Login Page
240 if($isConnected != true) {
241
242 $chatId = get_option( 'onwebchat_plugin_option' );
243 $chatId = $chatId['text_string'];
244 ?>
245
246 <hr class="small-hr2">
247
248 <h3 class="header-1">Connect with your onWebChat account</h3>
249
250
251
252 <div class="username-div">
253 <!-- sanitize user-provided parameter -->
254 <strong>Email: </strong><input class="username-text-field" type="text" name="onWebChatUser" value="<?php echo esc_attr(get_option( 'onwebchat_plugin_option_user' )); ?>"/>
255 </div>
256
257 <div class="password-div">
258 <strong>Password: </strong><input class="password-text-field" type="password" name="onWebChatPass" value="<?php echo get_option( 'onWebChatPass' ); ?>"/>
259 </div>
260
261 <div style="width: 560px; height: 10px; border-bottom: 1px solid #bfbfbf; text-align: center; margin-top:30px">
262 <span class="header-or" style="font-size: 23px; background-color: #f1f1f1; padding: 0 10px;">
263 OR
264 </span>
265 </div>
266
267
268 <h3 class="header-2">Paste your onWebChat Chat Id</h3>
269 <div class="chatid-div">
270 <strong>Chat Id:</strong> <input class="chatid-text-field" type="text" name="chatId" value="<?php echo $chatId; ?>"/>
271 </div>
272
273 <hr class="small-hr2">
274
275 <div class="new-account-link">
276 <span class="info-star">*</span> If you don't have an account on onWebChat live chat service, you should create one <a href="https://www.onwebchat.com/signup.php" target="_blank">here</a>
277 </div>
278
279
280 <?php
281 }
282
283 // 2nd Page
284 else {
285 $options = get_option('onwebchat_plugin_option_user');
286
287 // display user email
288 if($options!=''){
289 //sanitize user-provided parameter
290 $email = esc_html($options);
291 $html = '<br><h3 class="header-1-p2">Activated for onWebChat account: </h3>';
292 $html .= "<strong class='account-id'>$email</strong> ";
293 }
294
295 // display chatId
296 else {
297 $chatId = get_option( 'onwebchat_plugin_option' );
298 $chatId = $chatId['text_string'];
299 $html = '<br><h3 class="header-1-p2">Activated for onWebChat Chat Id: </h3>';
300 $html .= "<strong class='account-id'>$chatId</strong> ";
301 }
302 $html .= ' <a href="admin.php?page=onwebchat_settings&amp;action=deactivate">Deactivate</a>';
303 //$html .= ' <div class="admin-login-info"> <span>*</span> To connect to onWebChat Operator Console click <a target="_blank" href="https://www.onwebchat.com/login.php">here</a> </div>';
304 echo $html;
305
306 $options = get_option('onwebchat_plugin_option_hide');
307
308 $chatId = get_option( 'onwebchat_plugin_option' );
309 $chatId = $chatId['text_string'];
310
311 //TODO get correct value
312 $onwebchatApi = get_option('onwebchat_plugin_option_api_code');
313 $onwebchatApi = str_replace('\\','',$onwebchatApi);
314 ?>
315 <!-- <div class="hide-div">-->
316 <!-- <strong>Hide Chat Widget:</strong> <input type="checkbox" id="plugin_text_checkbox" name="onwebchat_plugin_option_hide" value="1" --><?php //checked( $options, 1 ); ?><!-- />-->
317 <!-- </div>-->
318
319
320
321 <div class="hide-div">
322 <select id="pages-select" name="pages-select" onchange="onwc_select_change()">
323 <option value="1" <?php selected( get_option('onwebchat_plugin_option_pages_select'), 1 ); ?>>Show chat widget on all pages</option>
324 <option value="2" <?php selected( get_option('onwebchat_plugin_option_pages_select'), 2 ); ?>>Show on the following pages:</option>
325 <option value="3" <?php selected( get_option('onwebchat_plugin_option_pages_select'), 3 ); ?>>Hide on the following pages:</option>
326 <option value="4" <?php selected( get_option('onwebchat_plugin_option_pages_select'), 4 ); ?>>Hide chat widget from all pages</option>
327 </select>
328 </div>
329
330 <div id="onwc_show_on_pages_div" style="display:none">
331 <input id="showonpages" name="showonpages" class="showhidepages" type="text" value="<?php echo esc_attr(get_option( 'onwebchat_plugin_option_show_pages' )); ?>" /><a href="#" style="text-decoration: none;" onmouseover="document.getElementById('help').style.visibility = 'visible'"; ONMOUSEOUT="document.getElementById('help').style.visibility = 'hidden'"><strong><font size="4" face="Arial"> ? </font></strong></a>
332 </div>
333 <div id="onwc_hide_on_pages_div" style="display:none">
334 <input id="hideonpages" name="hideonpages" class="showhidepages" type="text" value="<?php echo esc_attr(get_option( 'onwebchat_plugin_option_hide_pages' )); ?>" /><a href="#" style="text-decoration: none;" onmouseover="document.getElementById('help').style.visibility = 'visible'"; ONMOUSEOUT="document.getElementById('help').style.visibility = 'hidden'"><strong><font size="4" face="Arial"> ? </font></strong></a>
335 </div>
336
337 <div id="help">
338 <span>You can insert multiple pages seperated by space. You can insert a part of the page or URL. e.g. &nbsp; index pric contact.php blog/</span>
339 </div>
340
341 <h3 class="header-2">Write your onWebChat Chat API code</h3>
342 <div class="chatid-div">
343 <strong>onWebChat API:</strong>
344 <br>
345 <!-- sanitize user-provided parameter -->
346 <textarea class="chatid-text-field" style="margin-left: 0px;" rows="10" name="onwebchat-api"><?php echo esc_html($onwebchatApi); ?></textarea>
347 <br>
348 <br>
349 </div>
350
351 <div>
352 <br /><br />
353 </div>
354
355 <!-- hiden fields -->
356 <input class="chatid-text-field-hide" type="text" name="chatId" value="<?php echo esc_attr($chatId); ?>"/>
357 <input class="chatid-text-field-hide" type="text" name="onWebChatUser" value="<?php echo esc_attr(get_option( 'onwebchat_plugin_option_user' )); ?>"/>
358 <input class="chatid-text-field-hide" type="text" name="isSecondPage" value="1"/>
359
360 <div class="new-account-link"> <span>*</span> To connect to onWebChat Operator Console click <a target="_blank" href="https://www.onwebchat.com/login.php">here</a> </div>
361 <?php
362
363
364 }
365
366 // Display the Save Button
367 $html = '<input class="button button-primary" style="margin-left: 230px;" type="submit" value="Save Changes"/>';
368 echo $html;
369 ?>
370 </form>
371 </div>
372
373 <script type="text/javascript">
374
375
376 function onwc_select_change() {
377 var e = document.getElementById("pages-select");
378 var selected = e.options[e.selectedIndex].value;
379 if (selected == 1){
380 document.getElementById("onwc_show_on_pages_div").style.display = "none";
381 document.getElementById("onwc_hide_on_pages_div").style.display = "none";
382 } else if (selected == 2){
383 document.getElementById("onwc_show_on_pages_div").style.display = "block";
384 document.getElementById("onwc_hide_on_pages_div").style.display = "none";
385 } else if (selected == 3){
386 document.getElementById("onwc_show_on_pages_div").style.display = "none";
387 document.getElementById("onwc_hide_on_pages_div").style.display = "block";
388 } else if (selected == 4){
389 document.getElementById("onwc_show_on_pages_div").style.display = "none";
390 document.getElementById("onwc_hide_on_pages_div").style.display = "none";
391 }
392
393 }
394 document.addEventListener('DOMContentLoaded', function() {
395 onwc_select_change();
396 }, false);
397 </script>
398 <?php
399 }
400
401
402 /* ----------------------------------------------------- *
403 * Admin Page Styles Registration
404 * ----------------------------------------------------- */
405
406 function register_plugin_styles() {
407 wp_register_style( 'onwebchat', plugins_url( 'onwebchat/css/onwebchat.css' ) );
408 wp_enqueue_style( 'onwebchat' );
409 }
410
411
412 /* ----------------------------------------------------- *
413 * Tabs Settings Registration
414 * ----------------------------------------------------- */
415
416 function onwebchat_register_setttings() {
417
418 /******************** Account Tab ************************/
419 //* register the Chat Id
420 register_setting( 'onwebchat_plugin_option', 'onwebchat_plugin_option');
421
422 //* register the username
423 register_setting( 'onwebchat_plugin_option', 'onwebchat_plugin_option_user');
424
425 //* register the hide (checkbox)
426 register_setting( 'onwebchat_plugin_option_checkbox', 'onwebchat_plugin_option_hide');
427
428 //TODO api code
429 //* register the api code
430 register_setting( 'onwebchat_plugin_option', 'onwebchat_plugin_option_api_code');
431 }
432
433
434 /* ----------------------------------------------------- *
435 * onWebChat Display Function
436 * ----------------------------------------------------- */
437
438 // print chat widget code
439 function onwebchat_add_script_at_footer() {
440
441 $options = get_option('onwebchat_plugin_option');
442 $chatId = $options['text_string'];
443 //$hideWidget = get_option('onwebchat_plugin_option_hide');
444 $hideWidget = false;
445
446 $widgetCode = "<script type='text/javascript'>var onWebChat={ar:[], set: function(a,b){if (typeof onWebChat_==='undefined'){this.ar.push([a,b]);}else{onWebChat_.set(a,b);}},get:function(a){return(onWebChat_.get(a));},w:(function(){ var ga=document.createElement('script'); ga.type = 'text/javascript';ga.async=1;ga.src='//www.onwebchat.com/clientchat/$chatId';var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga,s);})()}</script>";
447
448 $apiCode = get_option('onwebchat_plugin_option_api_code');
449
450 $apiCode = str_replace('\\','',$apiCode);
451
452 $apiCode = "<script type='text/javascript'>$apiCode</script>";
453
454 $widgetCode .= $apiCode;
455
456
457 //check if user is logged if yes get username, email
458 if ( is_user_logged_in() ) {
459
460 global $current_user;
461 get_currentuserinfo();
462
463 // get user name
464 $onwebchat_user = $current_user->user_login;
465
466 // get user email
467 $onwebchat_email = $current_user->user_email;
468
469 //add api info
470 if ($onwebchat_user != null && $onwebchat_user != "" && $onwebchat_user != "guest" && $onwebchat_user != "Guest") {
471 if ($onwebchat_email != null && $onwebchat_email != ""){
472 $widgetCode = $widgetCode."<script type='text/javascript'>onWebChat.set('name','$onwebchat_user');
473 onWebChat.set('email','$onwebchat_email'); </script>";
474 } else {
475 $widgetCode = $widgetCode."<script type='text/javascript'>onWebChat.set('name','$onwebchat_user');</script>";
476 }
477 }
478 }
479
480 $currentPage = substr( strtolower($_SERVER['SERVER_PROTOCOL']), 0, strpos( strtolower($_SERVER['SERVER_PROTOCOL']), "/") );
481 $currentPage .= ( empty($_SERVER['HTTPS']) ? NULL : ( ($_SERVER['HTTPS'] == "on") ? "s" : NULL) );
482 $currentPage .= "://" . $_SERVER['SERVER_NAME'];
483 $currentPage .= ( $_SERVER['SERVER_PORT'] == 80 ? "" : ":".$_SERVER['SERVER_PORT'] );
484 $currentPage .= $_SERVER['REQUEST_URI'];
485
486 $pagesSelect = get_option('onwebchat_plugin_option_pages_select');
487 $showPages = get_option('onwebchat_plugin_option_show_pages');
488 $showPages = explode(' ', $showPages);
489 $hidePages = get_option('onwebchat_plugin_option_hide_pages');
490 $hidePages = explode(' ', $hidePages);
491
492 $showSelect=true;
493 if ($pagesSelect==1){
494
495 } else if ($pagesSelect==2){
496 $showSelect=false;
497 foreach ($showPages as $page){
498 if ($page !== "") {
499 if (strpos($currentPage, $page) !== false) {
500 $showSelect = true;
501 }
502 }
503 }
504 } else if ($pagesSelect==3){
505 $showSelect=true;
506 foreach ($hidePages as $page){
507 if ($page !== "") {
508 if (strpos($currentPage, $page) !== false) {
509 $showSelect = false;
510 }
511 }
512 }
513 } else if($pagesSelect == 4) {
514 //TODO we hide chat widget from all pages
515 $hideWidget = true;
516 }
517
518 if(!$hideWidget && $showSelect) {
519 echo $widgetCode;
520 }
521
522 }
523
524 /************************************************************************
525 * display error function
526 ***********************************************************************/
527 function onwebchat_login_error($contition = false) {
528 if($contition) {
529 ?>
530 <div class="error">
531 <p><strong>Wrong credentials!</strong> Please enter correct <u>email and password</u> <strong>OR</strong> a valid <u>Chat Id</u>.</p>
532 </div>
533 <?php
534 }
535 else {
536 //display nothing
537 }
538 }
539
540 /************************************************************************
541 * Validate Chat Id function
542 ***********************************************************************/
543 function isChatIdValid($input) {
544 return preg_match('/^[a-f0-9]{32,40}+[\\/]?+[0-9]{0,2}+[\\/]?+[0-9]{0,2}$/i', $input);
545 }
546
547 ?>
548