| @@ -1,109 +1,547 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | /* |
| 3 | -Plugin Name: OnWebChat Live Chat | |
| 4 | -Plugin URI: https://www.onwebchat.com/wp_plugin.php | |
| 5 | -Description: OnWebChat is a live chat system, that helps you communicate with your website's visitors. | |
| 6 | -Author: OnWebChat | |
| 7 | -Version: 1.0 | |
| 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 | 8 | Author URI: https://www.onwebchat.com |
| 9 | 9 | */ |
| 10 | 10 | |
| 11 | -// get logo url | |
| 11 | + | |
| 12 | +/* ---------------------------------------------------- * | |
| 13 | +* Create Settings Page | |
| 14 | +* ---------------------------------------------------- */ | |
| 15 | + | |
| 16 | + | |
| 12 | 17 | define('ONWEBCHAT_SMALL_LOGO', plugins_url( 'images/onwebchat-logo.png' , __FILE__ )); |
| 18 | +define('ONWEBCHAT_SERVER_URL','https://www.onwebchat.com/get-chatid.php'); | |
| 13 | 19 | |
| 20 | + | |
| 21 | +// add styles | |
| 22 | +add_action( 'admin_enqueue_scripts', 'register_plugin_styles' ); | |
| 23 | + | |
| 14 | 24 | // call function on hook admin_menu |
| 15 | 25 | add_action('admin_menu','onwebchat_setup_menu'); |
| 16 | 26 | |
| 27 | +// create login error notice | |
| 28 | +add_action( 'admin_notices', 'onwebchat_login_error' ); | |
| 29 | + | |
| 17 | 30 | // define the settings |
| 18 | 31 | add_action('admin_init','onwebchat_register_setttings'); |
| 19 | 32 | |
| 33 | + | |
| 34 | +/* ---------------------------------------------------- * | |
| 35 | +* Display onWebChat on footer | |
| 36 | +* ---------------------------------------------------- */ | |
| 37 | + | |
| 20 | 38 | // add widget plugin to the footer |
| 21 | 39 | add_action('wp_footer', 'onwebchat_add_script_at_footer'); |
| 22 | 40 | |
| 23 | -// add menu page on admin menu with function onwebchat_init_menu_page() | |
| 41 | + | |
| 42 | +/* ----------------------------------------------------- * | |
| 43 | +* Admin Page registration | |
| 44 | +* ----------------------------------------------------- */ | |
| 45 | + | |
| 24 | 46 | function onwebchat_setup_menu() { |
| 25 | - add_menu_page( 'OnWebChat Settings', 'OnWebChat', 'administrator', 'onwebchat_settings', 'onwebchat_init_menu_page', ONWEBCHAT_SMALL_LOGO); | |
| 47 | + add_menu_page( 'onWebChat Settings', 'onWebChat', 'administrator', 'onwebchat_settings', 'onwebchat_init_menu_page', ONWEBCHAT_SMALL_LOGO); | |
| 26 | 48 | } |
| 27 | 49 | |
| 28 | -// display admin option page | |
| 50 | + | |
| 51 | +/* ------------------------------------------------------ * | |
| 52 | +* Admin Page Display Function | |
| 53 | +* ------------------------------------------------------ */ | |
| 54 | + | |
| 29 | 55 | function onwebchat_init_menu_page() { |
| 30 | -?> | |
| 31 | -<div> | |
| 32 | - <h2>OnWebChat Settings Page</h2> | |
| 33 | -</br> | |
| 34 | - <form action="options.php" method="post"> | |
| 35 | - <?php settings_fields('onwebchat_plugin_option'); ?> | |
| 36 | - <!-- prints all settings inputs we need --> | |
| 37 | - <?php do_settings_sections('onwebchat_plugin'); ?> | |
| 38 | - <input name="Submit" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" /> | |
| 39 | - </form> | |
| 40 | -</div> | |
| 41 | -<?php | |
| 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&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. 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 | |
| 42 | 399 | } |
| 43 | 400 | |
| 44 | -// register the settings to store data | |
| 45 | -function onwebchat_register_setttings() { | |
| 46 | - register_setting( 'onwebchat_plugin_option', 'onwebchat_plugin_option', 'plugin_options_validate' ); | |
| 47 | - //* plugin | |
| 48 | - add_settings_section('plugin_main', 'Install Chat Widget', 'onwebchat_section_text', 'onwebchat_plugin'); | |
| 49 | - //* plugin | |
| 50 | - add_settings_field('plugin_text_string', 'Chat Id:', 'onwebchat_setting_field_text', 'onwebchat_plugin', 'plugin_main'); | |
| 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' ); | |
| 51 | 409 | } |
| 52 | 410 | |
| 53 | -// prints the text of sections | |
| 54 | -function onwebchat_section_text() { | |
| 55 | - echo '<p>To install OnWebChat on your Wordpress site please insert the Chat Id to the following field.</p>'. | |
| 56 | - '<p>You will find Chat Id in settings-page of OnWebChat admin, <a href="https://www.onwebchat.com/login.php" target="_blank">OnWebChat - Admin</a> </p>'; | |
| 57 | -} | |
| 58 | 411 | |
| 59 | -// print the text of section field | |
| 60 | -function onwebchat_setting_field_text() { | |
| 61 | - $options = get_option('onwebchat_plugin_option'); | |
| 62 | - echo "<input id='plugin_text_string' name='onwebchat_plugin_option[text_string]' size='40' type='text' value='{$options['text_string']}' />"; | |
| 63 | -} | |
| 412 | +/* ----------------------------------------------------- * | |
| 413 | +* Tabs Settings Registration | |
| 414 | +* ----------------------------------------------------- */ | |
| 64 | 415 | |
| 65 | -// validate data input | |
| 66 | -function plugin_options_validate($input) { | |
| 67 | - $newinput['text_string'] = trim($input['text_string']); | |
| 416 | +function onwebchat_register_setttings() { | |
| 68 | 417 | |
| 69 | - if(!preg_match('/^[a-f0-9\\/]{35,50}$/i', $newinput['text_string'])) { | |
| 70 | - $newinput['text_string'] = ''; | |
| 71 | - } | |
| 418 | + /******************** Account Tab ************************/ | |
| 419 | + //* register the Chat Id | |
| 420 | + register_setting( 'onwebchat_plugin_option', 'onwebchat_plugin_option'); | |
| 72 | 421 | |
| 73 | - return $newinput; | |
| 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'); | |
| 74 | 431 | } |
| 75 | 432 | |
| 433 | + | |
| 434 | +/* ----------------------------------------------------- * | |
| 435 | +* onWebChat Display Function | |
| 436 | +* ----------------------------------------------------- */ | |
| 437 | + | |
| 76 | 438 | // print chat widget code |
| 77 | 439 | function onwebchat_add_script_at_footer() { |
| 78 | 440 | |
| 79 | - $options = get_option('onwebchat_plugin_option'); | |
| 80 | - $chatId = $options['text_string']; | |
| 81 | - | |
| 82 | - $widgetCode = "<script type='text/javascript'> | |
| 83 | - var onWebChat={ar:[], set: function(a,b){if (typeof onWebChat_==='undefined'){this.ar. | |
| 84 | - push([a,b]);}else{onWebChat_.set(a,b);}},get:function(a){return(onWebChat_.get(a));},w | |
| 85 | - :(function(){ var ga=document.createElement('script'); ga.type = 'text/javascript';ga. | |
| 86 | - async=1;ga.src='//www.onwebchat.com/clientchat/$chatId'; | |
| 87 | - var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga,s);})()} | |
| 88 | - </script>"; | |
| 89 | - | |
| 441 | + $options = get_option('onwebchat_plugin_option'); | |
| 442 | + $chatId = $options['text_string']; | |
| 443 | + //$hideWidget = get_option('onwebchat_plugin_option_hide'); | |
| 444 | + $hideWidget = false; | |
| 90 | 445 | |
| 91 | - //check if user is logged if yes get username, email (all users registered have them) | |
| 92 | - if ( is_user_logged_in() ) { | |
| 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>"; | |
| 93 | 447 | |
| 94 | - global $current_user; | |
| 95 | - get_currentuserinfo(); | |
| 448 | + $apiCode = get_option('onwebchat_plugin_option_api_code'); | |
| 96 | 449 | |
| 97 | - // get user name | |
| 98 | - $onwebchat_user = $current_user->user_login; | |
| 450 | + $apiCode = str_replace('\\','',$apiCode); | |
| 99 | 451 | |
| 100 | - // get user email | |
| 101 | - $onwebchat_email = $current_user->user_email; | |
| 452 | + $apiCode = "<script type='text/javascript'>$apiCode</script>"; | |
| 102 | 453 | |
| 103 | - //add api info | |
| 104 | - $widgetCode = $widgetCode."<script type='text/javascript'>onWebChat.set('name','$onwebchat_user');onWebChat.set('email','$onwebchat_email'); </script>"; | |
| 105 | - } | |
| 106 | - | |
| 107 | - echo $widgetCode; | |
| 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 | + | |
| 108 | 522 | } |
| 109 | -?> | |
| 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 | +?> | |