Google Authenticator – WordPress Two Factor Authentication (2FA) - Version 5.4.23

Version Description

  • Google Authenticator - Two Factor Authentication (2FA, OTP) :
  • Call support with technical team
  • Email and SMS transaction sync
  • Feedback form on network deactivate
  • Enable/Disable 2FA fix
  • 2FA added for superadmin role
Download this release

Release Info

Developer cyberlord92
Plugin Icon 128x128 Google Authenticator – WordPress Two Factor Authentication (2FA)
Version 5.4.23
Comparing to
See all releases

Code changes from version 5.4.22 to 5.4.23

controllers/support.php CHANGED
@@ -27,25 +27,51 @@
27
  //Function to handle support form submit
28
  function wpns_handle_support_form($email,$query,$phone)
29
  {
30
-
31
- if( empty($email) || empty($query) )
32
- {
33
- do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'SUCCESS');
 
 
 
 
 
 
34
  return;
35
- }
36
-
37
-
38
- $query = sanitize_text_field( $query );
39
  $email = sanitize_text_field( $email );
40
  $phone = sanitize_text_field( $phone );
41
- $contact_us = new MocURL();
42
- $submited = json_decode($contact_us->submit_contact_us($email, $phone, $query),true);
43
 
44
- if(json_last_error() == JSON_ERROR_NONE && $submited)
45
- {
46
- do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
47
- return;
48
- }
49
-
50
- do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
51
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  //Function to handle support form submit
28
  function wpns_handle_support_form($email,$query,$phone)
29
  {
30
+ $call_setup = false;
31
+ if(array_key_exists('2fa_setup_call',$_POST)===true){
32
+ $time_zone = sanitize_text_field($_POST['mo_2fa_setup_call_timezone']);
33
+ $call_date = sanitize_text_field($_POST['mo_2fa_setup_call_date']);
34
+ $call_time = sanitize_text_field($_POST['mo_2fa_setup_call_time']);
35
+ $call_setup = true;
36
+ }
37
+ $send_configuration = (isset($_POST['mo2f_send_configuration'])?$_POST['mo2f_send_configuration']:0);
38
+ if(empty($email) || empty($query)){
39
+ do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'SUCCESS');
40
  return;
41
+ }
42
+ $query = sanitize_text_field( $query );
 
 
43
  $email = sanitize_text_field( $email );
44
  $phone = sanitize_text_field( $phone );
45
+ $contact_us = new MocURL();
 
46
 
47
+ if($send_configuration)
48
+ $query = $query.MoWpnsUtility::mo_2fa_send_configuration(true);
49
+ else
50
+ $query = $query.MoWpnsUtility::mo_2fa_send_configuration();
51
+
52
+ if($call_setup == false) {
53
+ $query = $query.'<br><br>';
54
+ if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
55
+ do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
56
+ } else {
57
+ $submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query),true);
58
+ }
59
+ } else {
60
+
61
+ $local_timezone='Asia/Kolkata';
62
+ $call_datetime=$call_date.$call_time;
63
+ $convert_datetime = strtotime ( $call_datetime );
64
+ $ist_date = new DateTime(date ( 'Y-m-d H:i:s' , $convert_datetime ), new DateTimeZone($time_zone));
65
+ $ist_date->setTimezone(new DateTimeZone($local_timezone));
66
+
67
+
68
+ $query = $query . '<br><br>' .'Meeting Details: '.'('.$time_zone.') '. date('d M, Y H:i',$convert_datetime). ' [IST Time -> '. $ist_date->format('d M, Y H:i').']'.'<br><br>';
69
+ $submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query, true),true);
70
+
71
+ }
72
+ if(json_last_error() == JSON_ERROR_NONE && $submited){
73
+ do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
74
+ }else{
75
+ do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
76
+ }
77
+ }
controllers/twofa/two_factor_ajax.php CHANGED
@@ -195,11 +195,11 @@ function mo2f_shift_to_onprem(){
195
 
196
  $enable = sanitize_text_field($_POST['mo2f_enable_2fa']);
197
  if($enable == 'true'){
198
- update_site_option('mo2f_activate_plugin' , true);
199
  wp_send_json('true');
200
  }
201
  else{
202
- update_site_option('mo2f_activate_plugin' , false);
203
  wp_send_json('false');
204
  }
205
  }
195
 
196
  $enable = sanitize_text_field($_POST['mo2f_enable_2fa']);
197
  if($enable == 'true'){
198
+ update_option('mo2f_activate_plugin' , true);
199
  wp_send_json('true');
200
  }
201
  else{
202
+ update_option('mo2f_activate_plugin' , false);
203
  wp_send_json('false');
204
  }
205
  }
database/database_functions_2fa.php CHANGED
@@ -169,7 +169,13 @@ class Mo2fDB {
169
 
170
  return;
171
  }
172
-
 
 
 
 
 
 
173
 
174
  function check_if_table_exists( ) {
175
  global $wpdb;
169
 
170
  return;
171
  }
172
+ function get_no_of_2fa_users() {
173
+ global $wpdb;
174
+ $count=$wpdb->query(
175
+ "SELECT * FROM `". $this->userDetailsTable."`WHERE `mo2f_2factor_enable_2fa_byusers`=1 "
176
+ );
177
+ return $count;
178
+ }
179
 
180
  function check_if_table_exists( ) {
181
  global $wpdb;
handler/feedback_form.php CHANGED
@@ -87,6 +87,7 @@ class FeedbackHandler
87
  $rate_value = "--";
88
  $message .= ', [Rating :' . $rate_value . ']';
89
 
 
90
  $email = isset($_POST['query_mail'])? $_POST['query_mail']: '';
91
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
92
  $email = get_option('mo2f_email');
87
  $rate_value = "--";
88
  $message .= ', [Rating :' . $rate_value . ']';
89
 
90
+ $message .= MoWpnsUtility::mo_2fa_send_configuration();
91
  $email = isset($_POST['query_mail'])? $_POST['query_mail']: '';
92
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
93
  $email = get_option('mo2f_email');
handler/twofa/two_fa_pass2login.php CHANGED
@@ -418,13 +418,13 @@ class Miniorange_Password_2Factor_Login {
418
  $parameters = $email;
419
  }
420
  if($selected_2factor_method == 'SMS AND EMAIL'){
421
- $content = json_decode($customer->send_otp_token($parameters,$currentMethod,get_site_option( 'mo2f_customerKey'),get_site_option( 'mo2f_api_key')), true);
422
  }
423
  else if($selected_2factor_method == 'OTP OVER EMAIL'){
424
- $content = json_decode($customer->send_otp_token($email,$currentMethod,get_site_option( 'mo2f_customerKey'),get_site_option( 'mo2f_api_key')), true);
425
  }
426
  else{
427
- $content = json_decode($customer->send_otp_token($phone,$currentMethod,get_site_option( 'mo2f_customerKey'),get_site_option( 'mo2f_api_key')), true);
428
 
429
  }
430
  if(json_last_error() == JSON_ERROR_NONE) { /* Generate otp token */
@@ -1033,7 +1033,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
1033
  $current_user = get_userdata($currentUserId);
1034
  $email = $current_user->user_email;
1035
  $response = $this->create_user_in_miniOrange($currentUserId,$email,$selected_method);
1036
- if($response['status']=='ERROR') {
1037
  $mo2fa_login_status = 'MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS';
1038
  $mo2fa_login_message=$response['message'].'Skip the two-factor for login';
1039
  }
@@ -2299,6 +2299,16 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
2299
  $content = '';
2300
  $response = [];
2301
  $otpLIMiTE = 0;
 
 
 
 
 
 
 
 
 
 
2302
  if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')>0 or $mo2f_second_factor != 'EMAIL')
2303
  {
2304
  if($mo2f_second_factor == 'OTP Over SMS')
@@ -2460,6 +2470,11 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
2460
  if(get_option('mo2fa_'.$role)=='1')
2461
  $twofactor_enabled=1;
2462
  }
 
 
 
 
 
2463
 
2464
  if ( $is_customer_admin && $twofactor_enabled ) {
2465
  $mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $currentuser->ID );
418
  $parameters = $email;
419
  }
420
  if($selected_2factor_method == 'SMS AND EMAIL'){
421
+ $content = json_decode($customer->send_otp_token($parameters,$currentMethod,get_option( 'mo2f_customerKey'),get_option( 'mo2f_api_key')), true);
422
  }
423
  else if($selected_2factor_method == 'OTP OVER EMAIL'){
424
+ $content = json_decode($customer->send_otp_token($email,$currentMethod,get_option( 'mo2f_customerKey'),get_option( 'mo2f_api_key')), true);
425
  }
426
  else{
427
+ $content = json_decode($customer->send_otp_token($phone,$currentMethod,get_option( 'mo2f_customerKey'),get_option( 'mo2f_api_key')), true);
428
 
429
  }
430
  if(json_last_error() == JSON_ERROR_NONE) { /* Generate otp token */
1033
  $current_user = get_userdata($currentUserId);
1034
  $email = $current_user->user_email;
1035
  $response = $this->create_user_in_miniOrange($currentUserId,$email,$selected_method);
1036
+ if(!is_null($response) && $response['status']=='ERROR') {
1037
  $mo2fa_login_status = 'MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS';
1038
  $mo2fa_login_message=$response['message'].'Skip the two-factor for login';
1039
  }
2299
  $content = '';
2300
  $response = [];
2301
  $otpLIMiTE = 0;
2302
+
2303
+ if((MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option') == 0 and $mo2f_second_factor == 'EMAIL') or (get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z') == 0 and $mo2f_second_factor =='SMS'))
2304
+ {
2305
+ if(get_option('mo2f_customerKey'))
2306
+ {
2307
+ $obj = new wpns_ajax();
2308
+ $obj->wpns_check_transaction();
2309
+ }
2310
+ }
2311
+
2312
  if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')>0 or $mo2f_second_factor != 'EMAIL')
2313
  {
2314
  if($mo2f_second_factor == 'OTP Over SMS')
2470
  if(get_option('mo2fa_'.$role)=='1')
2471
  $twofactor_enabled=1;
2472
  }
2473
+ if ($twofactor_enabled!=1 && is_super_admin( $currentuser->ID )){
2474
+ if(get_site_option('mo2fa_superadmin')==1){
2475
+ $twofactor_enabled=1;
2476
+ }
2477
+ }
2478
 
2479
  if ( $is_customer_admin && $twofactor_enabled ) {
2480
  $mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $currentuser->ID );
handler/twofa/two_fa_settings.php CHANGED
@@ -127,6 +127,9 @@ class Miniorange_Authentication {
127
 
128
  $userid = wp_get_current_user()->ID;
129
  add_option('mo2f_onprem_admin' , $userid );
 
 
 
130
  // Deciding on On-Premise solution
131
  $is_NC=MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
132
  $is_NNC=MoWpnsUtility::get_mo2f_db_option('mo2f_is_NNC', 'get_option');
127
 
128
  $userid = wp_get_current_user()->ID;
129
  add_option('mo2f_onprem_admin' , $userid );
130
+ if(is_multisite()){
131
+ add_site_option('mo2fa_superadmin',1);
132
+ }
133
  // Deciding on On-Premise solution
134
  $is_NC=MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
135
  $is_NNC=MoWpnsUtility::get_mo2f_db_option('mo2f_is_NNC', 'get_option');
helper/curl.php CHANGED
@@ -34,8 +34,8 @@ class MocURL
34
  return $response;
35
  }
36
 
37
- function submit_contact_us( $q_email, $q_phone, $query )
38
- {
39
  $current_user = wp_get_current_user();
40
  $url = MoWpnsConstants::HOST_NAME . "/moas/rest/customer/contact-us";
41
 
@@ -51,8 +51,10 @@ class MocURL
51
  $customer_feature = "V3";
52
  }
53
  global $moWpnsUtility;
54
- $query = '[WordPress 2 Factor Authentication Plugin: ' .$onprem.$customer_feature . ' - V '.MO2F_VERSION.'- Ticket Id:'.$moWpnsUtility->getFeatureStatus().']: ' . $query;
55
-
 
 
56
  $fields = array(
57
  'firstName' => $current_user->user_firstname,
58
  'lastName' => $current_user->user_lastname,
34
  return $response;
35
  }
36
 
37
+ function submit_contact_us( $q_email, $q_phone, $query, $call_setup=false)
38
+ {
39
  $current_user = wp_get_current_user();
40
  $url = MoWpnsConstants::HOST_NAME . "/moas/rest/customer/contact-us";
41
 
51
  $customer_feature = "V3";
52
  }
53
  global $moWpnsUtility;
54
+ if($call_setup)
55
+ $query = '[Call Request - WordPress 2 Factor Authentication Plugin: ' .$onprem.$customer_feature . ' - V '.MO2F_VERSION.'- Ticket Id:'.$moWpnsUtility->getFeatureStatus().']: ' . $query;
56
+ else
57
+ $query = '[WordPress 2 Factor Authentication Plugin: ' .$onprem.$customer_feature . ' - V '.MO2F_VERSION.'- Ticket Id:'.$moWpnsUtility->getFeatureStatus().']: ' . $query;
58
  $fields = array(
59
  'firstName' => $current_user->user_firstname,
60
  'lastName' => $current_user->user_lastname,
helper/utility.php CHANGED
@@ -297,7 +297,10 @@ class MoWpnsUtility
297
  $status.="B1";
298
  if(get_site_option('mo2f_two_factor'))
299
  $status.="TF1";
300
-
 
 
 
301
  $status.="R".rand(0,1000);
302
  return $status;
303
  }
@@ -334,5 +337,47 @@ class MoWpnsUtility
334
 
335
  $guestcustomer->guest_audit();
336
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
337
 
338
  }
297
  $status.="B1";
298
  if(get_site_option('mo2f_two_factor'))
299
  $status.="TF1";
300
+ if(time()-get_site_option("mo_2fa_pnp")<2592000)
301
+ $status.='U1';
302
+ if(mo2f_is_customer_registered())
303
+ $status.="CT";
304
  $status.="R".rand(0,1000);
305
  return $status;
306
  }
337
 
338
  $guestcustomer->guest_audit();
339
  }
340
+ public static function mo_2fa_send_configuration($send_all_configuration=false){
341
+ global $Mo2fdbQueries;
342
+ $user_object = wp_get_current_user();
343
+ $mo2f_configured_2FA_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user_object->ID );
344
+ $key = get_option('mo2f_customerKey');
345
+ $is_plugin_active_for_network = is_plugin_active_for_network( MoWpnsConstants::TWO_FACTOR_SETTINGS);
346
+ $is_onprem = get_option('is_onprem');
347
+ $WAFEnabled = get_option('WAFEnabled');
348
+ $WAFLevel = get_option('WAF');
349
+ $NoOf2faUsers = $Mo2fdbQueries->get_no_of_2fa_users();
350
+ $EmailTransactions = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
351
+ $SMSTransactions = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')?get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z'):0;
352
+ $SQLInjection = get_option('SQLInjection');
353
+ $XSSAttack = get_option('XSSAttack');
354
+ $RFIAttack = get_option('RFIAttack');
355
+ $LFIAttack = get_option('LFIAttack');
356
+ $Rate_request = get_option('Rate_request');
357
+ $limitAttack = get_option('limitAttack');
358
+ $RCEAttack = get_option('RCEAttack');
359
+ $mo_wpns_countrycodes = get_option('mo_wpns_countrycodes');
360
+ $mo2f_enable_brute_force = get_site_option('mo2f_enable_brute_force');
361
+ $space = "'<span>&nbsp;&nbsp;&nbsp;</span>";
362
+
363
+ $plugin_configuration ="<br><br><I>Plugin Configuration :-</I>".$space."On-premise:'".($is_onprem?"Yes":"No"). $space."2FA method:'" . ($mo2f_configured_2FA_method==''?"Not selected":$mo2f_configured_2FA_method).$space."No. of 2FA users :'".$NoOf2faUsers.$space."Remaining Email transaction:'".$EmailTransactions.$space."Remaining SMS Transactions:'".$SMSTransactions.$space."WAF enabled:'".$WAFEnabled.($WAFEnabled?$space."WAF level : '".$WAFLevel:"").$space.(is_multisite()?"Multisite Enabled:"."'Yes'":"Single-site:"."'Yes").$space."Brute force enabled : '".($mo2f_enable_brute_force?"Yes":"No").((mo2f_is_customer_registered())?($space."Customer Key:'".$key):($space."Customer Registered:'No"));
364
+ if(is_multisite()){
365
+ $plugin_configuration = $plugin_configuration.$space.($is_plugin_active_for_network?"Network activated:'Yes":"Site activated:'Yes");
366
+ }
367
+ if(!$send_all_configuration)
368
+ return $plugin_configuration."'";
369
+
370
+ $plugin_configuration = $plugin_configuration.$space."SQL Injection:'".$SQLInjection .$space."XSS Attack:'".$XSSAttack.$space."RFI Attack:'".$RFIAttack.$space."Rate request:'".$Rate_request.$space."Limit Attack:'".$limitAttack.$space."RCE Attack:'".$RCEAttack;
371
+
372
+ $plugin_configuration = get_option('mo_wpns_countrycodes')?$plugin_configuration.$space."mo_wpns_countrycodes:'".$mo_wpns_countrycodes:$plugin_configuration.$space."Country Blocking:'Disabled";
373
+
374
+ $browser_block = array('mo_wpns_block_chrome','mo_wpns_block_firefox','mo_wpns_block_ie','mo_wpns_block_safari','mo_wpns_block_opera','mo_wpns_block_edge');
375
+ foreach($browser_block as $browser){
376
+ if(get_option($browser))
377
+ $plugin_configuration = $plugin_configuration.$space.$browser.":'".get_option($browser);
378
+ }
379
+ $plugin_configuration=$plugin_configuration.$space."Plugin_version:'" . MO2F_VERSION.$space. "PHP_version:'" . phpversion().$space."Wordpress_version:" . get_bloginfo('version');
380
+ return $plugin_configuration;
381
+ }
382
 
383
  }
includes/css/datetime-style-settings.css ADDED
@@ -0,0 +1,576 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * jQuery Timepicker
3
+ * http://timepicker.co
4
+ * https://cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.css
5
+ * Enhances standard form input fields helping users to select (or type) times.
6
+ *
7
+ * Copyright (c) 2016 Willington Vega; Licensed MIT, GPL
8
+ */
9
+
10
+ .ui-timepicker-container {
11
+ position: absolute;
12
+ overflow: hidden;
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ .ui-timepicker {
17
+ box-sizing: content-box;
18
+ display: block;
19
+ height: 205px;
20
+ list-style: none outside none;
21
+ margin: 0;
22
+ padding: 0 1px;
23
+ text-align: center;
24
+ }
25
+
26
+ .ui-timepicker-viewport {
27
+ box-sizing: content-box;
28
+ display: block;
29
+ height: 148px;
30
+ margin: 0;
31
+ padding: 0;
32
+ overflow: auto;
33
+ overflow-x: hidden; /* IE */
34
+ }
35
+
36
+ .ui-timepicker-standard {
37
+ /* overwrites .ui-widget */
38
+ font-family: Verdana,Arial,sans-serif;
39
+ font-size: 1.1em;
40
+ /* overwrites .ui-widget-content */
41
+ background-color: #FFF;
42
+ border: 1px solid #AAA;
43
+ color: #222;
44
+ /* overwrites .ui-menu */
45
+ margin: 0;
46
+ padding: 2px;
47
+ height: 155px !important;
48
+ }
49
+ .ui-timepicker-standard a {
50
+ border: 1px solid transparent;
51
+ color: #222;
52
+ display: block;
53
+ padding: 0.2em 0.4em;
54
+ text-decoration: none;
55
+ }
56
+ .ui-timepicker-standard .ui-state-hover {
57
+ /* overwrites .ui-state-hover */
58
+ background-color: #DADADA;
59
+ border: 1px solid #999;
60
+ font-weight: normal;
61
+ color: #212121;
62
+ }
63
+ .ui-timepicker-standard .ui-menu-item {
64
+ /* overwrites .ui-menu and .ui-menu-item */
65
+ /*clear: left;
66
+ float: left;*/
67
+ margin: 0;
68
+ padding: 0;
69
+ }
70
+
71
+ .ui-timepicker-corners,
72
+ .ui-timepicker-corners .ui-corner-all {
73
+ -moz-border-radius: 4px;
74
+ -webkit-border-radius: 4px;
75
+ border-radius: 4px;
76
+ }
77
+
78
+ .ui-timepicker-hidden {
79
+ /* overwrites .ui-helper-hidden */
80
+ display: none;
81
+ }
82
+
83
+ .ui-timepicker-no-scrollbar .ui-timepicker {
84
+ border: none;
85
+ }
86
+
87
+
88
+
89
+ /* ADDED FOR TIMEZONE DROPDOWN - https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css */
90
+
91
+ .select2-container {
92
+ box-sizing: border-box;
93
+ display: inline-block;
94
+ margin: 0;
95
+ width: 90% !important;
96
+ position: relative;
97
+ vertical-align: middle; }
98
+ .select2-container .select2-selection--single {
99
+ box-sizing: border-box;
100
+ cursor: pointer;
101
+ display: block;
102
+ height: 28px;
103
+ user-select: none;
104
+ -webkit-user-select: none; }
105
+ .select2-container .select2-selection--single .select2-selection__rendered {
106
+ display: block;
107
+ padding-left: 8px;
108
+ padding-right: 20px;
109
+ overflow: hidden;
110
+ text-overflow: ellipsis;
111
+ white-space: nowrap; }
112
+ .select2-container .select2-selection--single .select2-selection__clear {
113
+ position: relative; }
114
+ .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
115
+ padding-right: 8px;
116
+ padding-left: 20px; }
117
+ .select2-container .select2-selection--multiple {
118
+ box-sizing: border-box;
119
+ cursor: pointer;
120
+ display: block;
121
+ min-height: 32px;
122
+ user-select: none;
123
+ -webkit-user-select: none; }
124
+ .select2-container .select2-selection--multiple .select2-selection__rendered {
125
+ display: inline-block;
126
+ overflow: hidden;
127
+ padding-left: 8px;
128
+ text-overflow: ellipsis;
129
+ white-space: nowrap; }
130
+ .select2-container .select2-search--inline {
131
+ float: left; }
132
+ .select2-container .select2-search--inline .select2-search__field {
133
+ box-sizing: border-box;
134
+ border: none;
135
+ font-size: 100%;
136
+ margin-top: 5px;
137
+ padding: 0; }
138
+ .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
139
+ -webkit-appearance: none; }
140
+
141
+ .select2-dropdown {
142
+ background-color: white;
143
+ border: 1px solid #aaa;
144
+ border-radius: 4px;
145
+ box-sizing: border-box;
146
+ display: block;
147
+ position: absolute;
148
+ left: -100000px;
149
+ width: 100%;
150
+ z-index: 1051; }
151
+
152
+ .select2-results {
153
+ display: block; }
154
+
155
+ .select2-results__options {
156
+ list-style: none;
157
+ margin: 0;
158
+ padding: 0; }
159
+
160
+ .select2-results__option {
161
+ padding: 6px;
162
+ user-select: none;
163
+ -webkit-user-select: none; }
164
+ .select2-results__option[aria-selected] {
165
+ cursor: pointer; }
166
+
167
+ .select2-container--open .select2-dropdown {
168
+ left: 0; }
169
+
170
+ .select2-container--open .select2-dropdown--above {
171
+ border-bottom: none;
172
+ border-bottom-left-radius: 0;
173
+ border-bottom-right-radius: 0; }
174
+
175
+ .select2-container--open .select2-dropdown--below {
176
+ border-top: none;
177
+ border-top-left-radius: 0;
178
+ border-top-right-radius: 0; }
179
+
180
+ .select2-search--dropdown {
181
+ display: block;
182
+ padding: 4px; }
183
+ .select2-search--dropdown .select2-search__field {
184
+ padding: 4px;
185
+ width: 100%;
186
+ box-sizing: border-box; }
187
+ .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
188
+ -webkit-appearance: none; }
189
+ .select2-search--dropdown.select2-search--hide {
190
+ display: none; }
191
+
192
+ .select2-close-mask {
193
+ border: 0;
194
+ margin: 0;
195
+ padding: 0;
196
+ display: block;
197
+ position: fixed;
198
+ left: 0;
199
+ top: 0;
200
+ min-height: 100%;
201
+ min-width: 100%;
202
+ height: auto;
203
+ width: auto;
204
+ opacity: 0;
205
+ z-index: 99;
206
+ background-color: #fff;
207
+ filter: alpha(opacity=0); }
208
+
209
+ .select2-hidden-accessible {
210
+ border: 0 !important;
211
+ clip: rect(0 0 0 0) !important;
212
+ height: 1px !important;
213
+ margin: -1px !important;
214
+ overflow: hidden !important;
215
+ padding: 0 !important;
216
+ position: absolute !important;
217
+ width: 1px !important; }
218
+
219
+ .select2-container--default .select2-selection--single {
220
+ background-color: #fff;
221
+ border: 1px solid #aaa;
222
+ border-radius: 4px; }
223
+ .select2-container--default .select2-selection--single .select2-selection__rendered {
224
+ color: #444;
225
+ line-height: 28px; }
226
+ .select2-container--default .select2-selection--single .select2-selection__clear {
227
+ cursor: pointer;
228
+ float: right;
229
+ font-weight: bold; }
230
+ .select2-container--default .select2-selection--single .select2-selection__placeholder {
231
+ color: #999; }
232
+ .select2-container--default .select2-selection--single .select2-selection__arrow {
233
+ height: 26px;
234
+ position: absolute;
235
+ top: 1px;
236
+ right: 1px;
237
+ width: 20px; }
238
+ .select2-container--default .select2-selection--single .select2-selection__arrow b {
239
+ border-color: #888 transparent transparent transparent;
240
+ border-style: solid;
241
+ border-width: 5px 4px 0 4px;
242
+ height: 0;
243
+ left: 50%;
244
+ margin-left: -4px;
245
+ margin-top: -2px;
246
+ position: absolute;
247
+ top: 50%;
248
+ width: 0; }
249
+
250
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
251
+ float: left; }
252
+
253
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
254
+ left: 1px;
255
+ right: auto; }
256
+
257
+ .select2-container--default.select2-container--disabled .select2-selection--single {
258
+ background-color: #eee;
259
+ cursor: default; }
260
+ .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
261
+ display: none; }
262
+
263
+ .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
264
+ border-color: transparent transparent #888 transparent;
265
+ border-width: 0 4px 5px 4px; }
266
+
267
+ .select2-container--default .select2-selection--multiple {
268
+ background-color: white;
269
+ border: 1px solid #aaa;
270
+ border-radius: 4px;
271
+ cursor: text; }
272
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered {
273
+ box-sizing: border-box;
274
+ list-style: none;
275
+ margin: 0;
276
+ padding: 0 5px;
277
+ width: 100%; }
278
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
279
+ list-style: none; }
280
+ .select2-container--default .select2-selection--multiple .select2-selection__placeholder {
281
+ color: #999;
282
+ margin-top: 5px;
283
+ float: left; }
284
+ .select2-container--default .select2-selection--multiple .select2-selection__clear {
285
+ cursor: pointer;
286
+ float: right;
287
+ font-weight: bold;
288
+ margin-top: 5px;
289
+ margin-right: 10px; }
290
+ .select2-container--default .select2-selection--multiple .select2-selection__choice {
291
+ background-color: #e4e4e4;
292
+ border: 1px solid #aaa;
293
+ border-radius: 4px;
294
+ cursor: default;
295
+ float: left;
296
+ margin-right: 5px;
297
+ margin-top: 5px;
298
+ padding: 0 5px; }
299
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
300
+ color: #999;
301
+ cursor: pointer;
302
+ display: inline-block;
303
+ font-weight: bold;
304
+ margin-right: 2px; }
305
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
306
+ color: #333; }
307
+
308
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
309
+ float: right; }
310
+
311
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
312
+ margin-left: 5px;
313
+ margin-right: auto; }
314
+
315
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
316
+ margin-left: 2px;
317
+ margin-right: auto; }
318
+
319
+ .select2-container--default.select2-container--focus .select2-selection--multiple {
320
+ border: solid black 1px;
321
+ outline: 0; }
322
+
323
+ .select2-container--default.select2-container--disabled .select2-selection--multiple {
324
+ background-color: #eee;
325
+ cursor: default; }
326
+
327
+ .select2-container--default.select2-container--disabled .select2-selection__choice__remove {
328
+ display: none; }
329
+
330
+ .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
331
+ border-top-left-radius: 0;
332
+ border-top-right-radius: 0; }
333
+
334
+ .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
335
+ border-bottom-left-radius: 0;
336
+ border-bottom-right-radius: 0; }
337
+
338
+ .select2-container--default .select2-search--dropdown .select2-search__field {
339
+ border: 1px solid #aaa; }
340
+
341
+ .select2-container--default .select2-search--inline .select2-search__field {
342
+ background: transparent;
343
+ border: none;
344
+ outline: 0;
345
+ box-shadow: none;
346
+ -webkit-appearance: textfield; }
347
+
348
+ .select2-container--default .select2-results > .select2-results__options {
349
+ max-height: 200px;
350
+ overflow-y: auto; }
351
+
352
+ .select2-container--default .select2-results__option[role=group] {
353
+ padding: 0; }
354
+
355
+ .select2-container--default .select2-results__option[aria-disabled=true] {
356
+ color: #999; }
357
+
358
+ .select2-container--default .select2-results__option[aria-selected=true] {
359
+ background-color: #ddd; }
360
+
361
+ .select2-container--default .select2-results__option .select2-results__option {
362
+ padding-left: 1em; }
363
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
364
+ padding-left: 0; }
365
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
366
+ margin-left: -1em;
367
+ padding-left: 2em; }
368
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
369
+ margin-left: -2em;
370
+ padding-left: 3em; }
371
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
372
+ margin-left: -3em;
373
+ padding-left: 4em; }
374
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
375
+ margin-left: -4em;
376
+ padding-left: 5em; }
377
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
378
+ margin-left: -5em;
379
+ padding-left: 6em; }
380
+
381
+ .select2-container--default .select2-results__option--highlighted[aria-selected] {
382
+ background-color: #5897fb;
383
+ color: white; }
384
+
385
+ .select2-container--default .select2-results__group {
386
+ cursor: default;
387
+ display: block;
388
+ padding: 6px; }
389
+
390
+ .select2-container--classic .select2-selection--single {
391
+ background-color: #f7f7f7;
392
+ border: 1px solid #aaa;
393
+ border-radius: 4px;
394
+ outline: 0;
395
+ background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
396
+ background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
397
+ background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
398
+ background-repeat: repeat-x;
399
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
400
+ .select2-container--classic .select2-selection--single:focus {
401
+ border: 1px solid #5897fb; }
402
+ .select2-container--classic .select2-selection--single .select2-selection__rendered {
403
+ color: #444;
404
+ line-height: 28px; }
405
+ .select2-container--classic .select2-selection--single .select2-selection__clear {
406
+ cursor: pointer;
407
+ float: right;
408
+ font-weight: bold;
409
+ margin-right: 10px; }
410
+ .select2-container--classic .select2-selection--single .select2-selection__placeholder {
411
+ color: #999; }
412
+ .select2-container--classic .select2-selection--single .select2-selection__arrow {
413
+ background-color: #ddd;
414
+ border: none;
415
+ border-left: 1px solid #aaa;
416
+ border-top-right-radius: 4px;
417
+ border-bottom-right-radius: 4px;
418
+ height: 26px;
419
+ position: absolute;
420
+ top: 1px;
421
+ right: 1px;
422
+ width: 20px;
423
+ background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
424
+ background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
425
+ background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
426
+ background-repeat: repeat-x;
427
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
428
+ .select2-container--classic .select2-selection--single .select2-selection__arrow b {
429
+ border-color: #888 transparent transparent transparent;
430
+ border-style: solid;
431
+ border-width: 5px 4px 0 4px;
432
+ height: 0;
433
+ left: 50%;
434
+ margin-left: -4px;
435
+ margin-top: -2px;
436
+ position: absolute;
437
+ top: 50%;
438
+ width: 0; }
439
+
440
+ .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
441
+ float: left; }
442
+
443
+ .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
444
+ border: none;
445
+ border-right: 1px solid #aaa;
446
+ border-radius: 0;
447
+ border-top-left-radius: 4px;
448
+ border-bottom-left-radius: 4px;
449
+ left: 1px;
450
+ right: auto; }
451
+
452
+ .select2-container--classic.select2-container--open .select2-selection--single {
453
+ border: 1px solid #5897fb; }
454
+ .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
455
+ background: transparent;
456
+ border: none; }
457
+ .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
458
+ border-color: transparent transparent #888 transparent;
459
+ border-width: 0 4px 5px 4px; }
460
+
461
+ .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
462
+ border-top: none;
463
+ border-top-left-radius: 0;
464
+ border-top-right-radius: 0;
465
+ background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
466
+ background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
467
+ background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
468
+ background-repeat: repeat-x;
469
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
470
+
471
+ .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
472
+ border-bottom: none;
473
+ border-bottom-left-radius: 0;
474
+ border-bottom-right-radius: 0;
475
+ background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
476
+ background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
477
+ background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
478
+ background-repeat: repeat-x;
479
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
480
+
481
+ .select2-container--classic .select2-selection--multiple {
482
+ background-color: white;
483
+ border: 1px solid #aaa;
484
+ border-radius: 4px;
485
+ cursor: text;
486
+ outline: 0; }
487
+ .select2-container--classic .select2-selection--multiple:focus {
488
+ border: 1px solid #5897fb; }
489
+ .select2-container--classic .select2-selection--multiple .select2-selection__rendered {
490
+ list-style: none;
491
+ margin: 0;
492
+ padding: 0 5px; }
493
+ .select2-container--classic .select2-selection--multiple .select2-selection__clear {
494
+ display: none; }
495
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice {
496
+ background-color: #e4e4e4;
497
+ border: 1px solid #aaa;
498
+ border-radius: 4px;
499
+ cursor: default;
500
+ float: left;
501
+ margin-right: 5px;
502
+ margin-top: 5px;
503
+ padding: 0 5px; }
504
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
505
+ color: #888;
506
+ cursor: pointer;
507
+ display: inline-block;
508
+ font-weight: bold;
509
+ margin-right: 2px; }
510
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
511
+ color: #555; }
512
+
513
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
514
+ float: right; }
515
+
516
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
517
+ margin-left: 5px;
518
+ margin-right: auto; }
519
+
520
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
521
+ margin-left: 2px;
522
+ margin-right: auto; }
523
+
524
+ .select2-container--classic.select2-container--open .select2-selection--multiple {
525
+ border: 1px solid #5897fb; }
526
+
527
+ .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
528
+ border-top: none;
529
+ border-top-left-radius: 0;
530
+ border-top-right-radius: 0; }
531
+
532
+ .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
533
+ border-bottom: none;
534
+ border-bottom-left-radius: 0;
535
+ border-bottom-right-radius: 0; }
536
+
537
+ .select2-container--classic .select2-search--dropdown .select2-search__field {
538
+ border: 1px solid #aaa;
539
+ outline: 0; }
540
+
541
+ .select2-container--classic .select2-search--inline .select2-search__field {
542
+ outline: 0;
543
+ box-shadow: none; }
544
+
545
+ .select2-container--classic .select2-dropdown {
546
+ background-color: white;
547
+ border: 1px solid transparent; }
548
+
549
+ .select2-container--classic .select2-dropdown--above {
550
+ border-bottom: none; }
551
+
552
+ .select2-container--classic .select2-dropdown--below {
553
+ border-top: none; }
554
+
555
+ .select2-container--classic .select2-results > .select2-results__options {
556
+ max-height: 200px;
557
+ overflow-y: auto; }
558
+
559
+ .select2-container--classic .select2-results__option[role=group] {
560
+ padding: 0; }
561
+
562
+ .select2-container--classic .select2-results__option[aria-disabled=true] {
563
+ color: grey; }
564
+
565
+ .select2-container--classic .select2-results__option--highlighted[aria-selected] {
566
+ background-color: #3875d7;
567
+ color: white; }
568
+
569
+ .select2-container--classic .select2-results__group {
570
+ cursor: default;
571
+ display: block;
572
+ padding: 6px; }
573
+
574
+ .select2-container--classic.select2-container--open .select2-dropdown {
575
+ border-color: #5897fb; }
576
+
includes/css/datetime-style-settings.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ui-timepicker-container{position:absolute;overflow:hidden;box-sizing:border-box}.ui-timepicker{box-sizing:content-box;display:block;height:205px;list-style:none outside none;margin:0;padding:0 1px;text-align:center}.ui-timepicker-viewport{box-sizing:content-box;display:block;height:148px;margin:0;padding:0;overflow:auto;overflow-x:hidden}.ui-timepicker-standard{font-family:Verdana,Arial,sans-serif;font-size:1.1em;background-color:#fff;border:1px solid #aaa;color:#222;margin:0;padding:2px;height:155px!important}.ui-timepicker-standard a{border:1px solid transparent;color:#222;display:block;padding:.2em .4em;text-decoration:none}.ui-timepicker-standard .ui-state-hover{background-color:#dadada;border:1px solid #999;font-weight:400;color:#212121}.ui-timepicker-standard .ui-menu-item{margin:0;padding:0}.ui-timepicker-corners,.ui-timepicker-corners .ui-corner-all{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.ui-timepicker-hidden{display:none}.ui-timepicker-no-scrollbar .ui-timepicker{border:none}.select2-container{box-sizing:border-box;display:inline-block;margin:0;width:90%!important;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid #000 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
includes/css/jquery-ui.min.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ * http://jqueryui.com
2
+ * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
3
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
4
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default;max-height:100px;overflow-y:auto;overflow-x:hidden}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup>.ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup>.ui-controlgroup-item.ui-visual-focus,.ui-controlgroup>.ui-controlgroup-item:focus{z-index:9999}.ui-controlgroup-vertical>.ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label+.ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label+.ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc(100% - 2.4em)}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-next-hover,.ui-datepicker .ui-datepicker-prev-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-next span,.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td a,.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw,.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==);height:100%;opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:0 0;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0 0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:700}.ui-widget-header a{color:#333}.ui-button,.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,html .ui-button.ui-state-disabled:active,html .ui-button.ui-state-disabled:hover{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:400;color:#454545}.ui-button,.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button{color:#454545;text-decoration:none}.ui-button:focus,.ui-button:hover,.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #ccc;background:#ededed;font-weight:400;color:#2b2b2b}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,a.ui-button:focus,a.ui-button:hover{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active{border:1px solid #003eff;background:#007fff;font-weight:400;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:3px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
includes/css/jquery.ui.css CHANGED
@@ -741,3 +741,178 @@ button.ui-button::-moz-focus-inner {
741
  filter: Alpha(Opacity=30); /* support: IE8 */
742
  border-radius: 8px;
743
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
741
  filter: Alpha(Opacity=30); /* support: IE8 */
742
  border-radius: 8px;
743
  }
744
+ .ui-datepicker {
745
+ width: 17em;
746
+ padding: .2em .2em 0;
747
+ display: none;
748
+ }
749
+ .ui-datepicker .ui-datepicker-header {
750
+ position: relative;
751
+ padding: .2em 0;
752
+ }
753
+ .ui-datepicker .ui-datepicker-prev,
754
+ .ui-datepicker .ui-datepicker-next {
755
+ position: absolute;
756
+ top: 2px;
757
+ width: 1.8em;
758
+ height: 1.8em;
759
+ }
760
+ .ui-datepicker .ui-datepicker-prev-hover,
761
+ .ui-datepicker .ui-datepicker-next-hover {
762
+ top: 1px;
763
+ }
764
+ .ui-datepicker .ui-datepicker-prev {
765
+ left: 2px;
766
+ }
767
+ .ui-datepicker .ui-datepicker-next {
768
+ right: 2px;
769
+ }
770
+ .ui-datepicker .ui-datepicker-prev-hover {
771
+ left: 1px;
772
+ }
773
+ .ui-datepicker .ui-datepicker-next-hover {
774
+ right: 1px;
775
+ }
776
+ .ui-datepicker .ui-datepicker-prev span,
777
+ .ui-datepicker .ui-datepicker-next span {
778
+ display: block;
779
+ position: absolute;
780
+ left: 50%;
781
+ margin-left: -8px;
782
+ top: 50%;
783
+ margin-top: -8px;
784
+ }
785
+ .ui-datepicker .ui-datepicker-title {
786
+ margin: 0 2.3em;
787
+ line-height: 1.8em;
788
+ text-align: center;
789
+ }
790
+ .ui-datepicker .ui-datepicker-title select {
791
+ font-size: 1em;
792
+ margin: 1px 0;
793
+ }
794
+ .ui-datepicker select.ui-datepicker-month,
795
+ .ui-datepicker select.ui-datepicker-year {
796
+ width: 45%;
797
+ }
798
+ .ui-datepicker table {
799
+ width: 100%;
800
+ font-size: .9em;
801
+ border-collapse: collapse;
802
+ margin: 0 0 .4em;
803
+ }
804
+ .ui-datepicker th {
805
+ padding: .7em .3em;
806
+ text-align: center;
807
+ font-weight: bold;
808
+ border: 0;
809
+ }
810
+ .ui-datepicker td {
811
+ border: 0;
812
+ padding: 1px;
813
+ }
814
+ .ui-datepicker td span,
815
+ .ui-datepicker td a {
816
+ display: block;
817
+ padding: .2em;
818
+ text-align: right;
819
+ text-decoration: none;
820
+ }
821
+ .ui-datepicker .ui-datepicker-buttonpane {
822
+ background-image: none;
823
+ margin: .7em 0 0 0;
824
+ padding: 0 .2em;
825
+ border-left: 0;
826
+ border-right: 0;
827
+ border-bottom: 0;
828
+ }
829
+ .ui-datepicker .ui-datepicker-buttonpane button {
830
+ float: right;
831
+ margin: .5em .2em .4em;
832
+ cursor: pointer;
833
+ padding: .2em .6em .3em .6em;
834
+ width: auto;
835
+ overflow: visible;
836
+ }
837
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
838
+ float: left;
839
+ }
840
+
841
+ /* with multiple calendars */
842
+ .ui-datepicker.ui-datepicker-multi {
843
+ width: auto;
844
+ }
845
+ .ui-datepicker-multi .ui-datepicker-group {
846
+ float: left;
847
+ }
848
+ .ui-datepicker-multi .ui-datepicker-group table {
849
+ width: 95%;
850
+ margin: 0 auto .4em;
851
+ }
852
+ .ui-datepicker-multi-2 .ui-datepicker-group {
853
+ width: 50%;
854
+ }
855
+ .ui-datepicker-multi-3 .ui-datepicker-group {
856
+ width: 33.3%;
857
+ }
858
+ .ui-datepicker-multi-4 .ui-datepicker-group {
859
+ width: 25%;
860
+ }
861
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
862
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
863
+ border-left-width: 0;
864
+ }
865
+ .ui-datepicker-multi .ui-datepicker-buttonpane {
866
+ clear: left;
867
+ }
868
+ .ui-datepicker-row-break {
869
+ clear: both;
870
+ width: 100%;
871
+ font-size: 0;
872
+ }
873
+
874
+ /* RTL support */
875
+ .ui-datepicker-rtl {
876
+ direction: rtl;
877
+ }
878
+ .ui-datepicker-rtl .ui-datepicker-prev {
879
+ right: 2px;
880
+ left: auto;
881
+ }
882
+ .ui-datepicker-rtl .ui-datepicker-next {
883
+ left: 2px;
884
+ right: auto;
885
+ }
886
+ .ui-datepicker-rtl .ui-datepicker-prev:hover {
887
+ right: 1px;
888
+ left: auto;
889
+ }
890
+ .ui-datepicker-rtl .ui-datepicker-next:hover {
891
+ left: 1px;
892
+ right: auto;
893
+ }
894
+ .ui-datepicker-rtl .ui-datepicker-buttonpane {
895
+ clear: right;
896
+ }
897
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button {
898
+ float: left;
899
+ }
900
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
901
+ .ui-datepicker-rtl .ui-datepicker-group {
902
+ float: right;
903
+ }
904
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
905
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
906
+ border-right-width: 0;
907
+ border-left-width: 1px;
908
+ }
909
+
910
+ /* Icons */
911
+ .ui-datepicker .ui-icon {
912
+ display: block;
913
+ text-indent: -99999px;
914
+ overflow: hidden;
915
+ background-repeat: no-repeat;
916
+ left: .5em;
917
+ top: .3em;
918
+ }
includes/css/style_settings.css CHANGED
@@ -838,7 +838,7 @@
838
  margin-top: 10px;
839
  padding: 5px 2px;
840
  height: auto;
841
- width: 25%;
842
  }
843
  .mo_wpns_small_layout_waf{
844
  margin: 10px;
@@ -1039,10 +1039,10 @@ h2.mo_wpns_nav-tab-wrapper
1039
  padding: 5px 20px;
1040
  background-color: #FFFFFF;
1041
  border: 1px solid #CCCCCC;
1042
- width: 290px;
1043
  margin-left: 1%;
1044
  float: left;
1045
- text-align: center;
1046
  border: 2px solid lightseagreen;
1047
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1048
  }
@@ -1708,17 +1708,7 @@ h2.mo_wpns_nav-tab-wrapper
1708
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1709
  font-weight: 600;
1710
  }
1711
- .mo_wpns_support_layout{
1712
- /*padding: 5px 20px;*/
1713
- background-color: #FFFFFF;
1714
- border: 1px solid #CCCCCC;
1715
- /*float: left;*/
1716
- width: 90%;
1717
- margin-left: 1%;
1718
- float: left;
1719
- height: 480px;
1720
- border: 2px solid lightseagreen;
1721
- box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1722
 
1723
  /* background-color: #4CAF50;
1724
  border: none;
@@ -3498,4 +3488,76 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
3498
  font-size: 25px;
3499
  color: #ffffff;
3500
  margin-left: 15px;
3501
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
838
  margin-top: 10px;
839
  padding: 5px 2px;
840
  height: auto;
841
+ width: 29%;
842
  }
843
  .mo_wpns_small_layout_waf{
844
  margin: 10px;
1039
  padding: 5px 20px;
1040
  background-color: #FFFFFF;
1041
  border: 1px solid #CCCCCC;
1042
+ /*width: 290px;*/
1043
  margin-left: 1%;
1044
  float: left;
1045
+ /*text-align: center;*/
1046
  border: 2px solid lightseagreen;
1047
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1048
  }
1708
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1709
  font-weight: 600;
1710
  }
1711
+
 
 
 
 
 
 
 
 
 
 
1712
 
1713
  /* background-color: #4CAF50;
1714
  border: none;
3488
  font-size: 25px;
3489
  color: #ffffff;
3490
  margin-left: 15px;
3491
+ }
3492
+ .call-setup-div{
3493
+ background: #F2F5FF;
3494
+ border-radius: 5px;
3495
+ margin-top: 10px;
3496
+ margin-bottom: 15px;
3497
+ padding-top: 10px;
3498
+ border-style: solid;
3499
+ border-color: #2f6062;
3500
+ padding-left: 10px;
3501
+ }
3502
+ /* The switch - the box around the slider */
3503
+ .switch {
3504
+ position: relative;
3505
+ display: inline-block;
3506
+ width: 60px;
3507
+ height: 34px;
3508
+ }
3509
+
3510
+ /* Hide default HTML checkbox */
3511
+ .switch input {
3512
+ opacity: 0;
3513
+ width: 0;
3514
+ height: 0;
3515
+ }
3516
+
3517
+ /* The slider */
3518
+ .slider {
3519
+ position: absolute;
3520
+ cursor: pointer;
3521
+ top: 0;
3522
+ left: 0;
3523
+ right: 0;
3524
+ bottom: 0;
3525
+ background-color: #ccc;
3526
+ -webkit-transition: .4s;
3527
+ transition: .4s;
3528
+ }
3529
+
3530
+ .slider:before {
3531
+ position: absolute;
3532
+ content: "";
3533
+ height: 26px;
3534
+ width: 26px;
3535
+ left: 4px;
3536
+ bottom: 4px;
3537
+ background-color: white;
3538
+ -webkit-transition: .4s;
3539
+ transition: .4s;
3540
+ }
3541
+
3542
+ input:checked + .slider {
3543
+ background-color: #2196F3;
3544
+ }
3545
+
3546
+ input:focus + .slider {
3547
+ box-shadow: 0 0 1px #2196F3;
3548
+ }
3549
+
3550
+ input:checked + .slider:before {
3551
+ -webkit-transform: translateX(26px);
3552
+ -ms-transform: translateX(26px);
3553
+ transform: translateX(26px);
3554
+ }
3555
+
3556
+ /* Rounded sliders */
3557
+ .slider.round {
3558
+ border-radius: 34px;
3559
+ }
3560
+
3561
+ .slider.round:before {
3562
+ border-radius: 50%;
3563
+ }
includes/js/custom-ajax-mepr.js CHANGED
@@ -26,13 +26,12 @@ jQuery(document).ready(function()
26
 
27
  const otp_over_email = '<label for="mo2f_reg_email">OTP Over Email&nbsp;<span class="required">*</span></label> <input type="text" name="mo2f_email_otp" id="mo2f_email_otp" placeholder="Enter OTP sent on email" />';
28
  const otp_over_sms = '<label for="mo2f_reg_sms">OTP Over SMS&nbsp;<span class="required">*</span></label> <input type="text" name="mo2f_phone_otp" id="mo2f_phone_otp" placeholder="Enter OTP sent on phone number" />';
29
- authType = 'email';
30
 
31
  switch (authType)
32
  {
33
  case 'phone':
34
- jQuery(phoneSelector).wrap( "<div class='buttonInsidePhone'></div>" );
35
- jQuery(phoneSelector).after('<button class="mo2f_send_phoneotp_button" id="mo2f_send_ajax_sms">Send OTP</button><button class="mo2ftimerSMS" id ="mo2ftimerSMS" style="display:none;">00</button>');
36
  mo2f_ajax_before_reg();
37
  break;
38
 
@@ -44,8 +43,8 @@ jQuery(document).ready(function()
44
 
45
  case 'both':
46
  isBoth = true;
47
- jQuery(phoneSelector).wrap( "<div class='buttonInsidePhone'></div>" );
48
- jQuery(phoneSelector).after('<button class="mo2f_send_phoneotp_button" id="mo2f_send_ajax_sms">Send OTP</button><button class="mo2ftimerSMS" id ="mo2ftimerSMS" style="display:none;">00</button>');
49
  jQuery(emailSelector).wrap( "<div class='buttonInsideEmail'></div>" );
50
  jQuery(emailSelector).after('<button class="mo2f_send_emailotp_button" id="mo2f_send_ajax_email">Send OTP</button><button class="mo2ftimerEmail" id ="mo2ftimerEmail" style="display:none;">00</button>');
51
  mo2f_ajax_before_reg();
@@ -101,7 +100,9 @@ jQuery(document).ready(function()
101
 
102
  jQuery("#mo2f_send_ajax_sms").click(function(e){
103
  e.preventDefault();
104
- var mo2f_phone = jQuery(phoneSelector).val();
 
 
105
  if (validatePhone(mo2f_phone))
106
  {
107
  jQuery("#mo2f_send_ajax_sms").html("Sending");
@@ -120,7 +121,8 @@ jQuery(document).ready(function()
120
  timeLeftSMS = 30;
121
  timerIdSMS = setInterval(sms_countdown, 1000);
122
  jQuery("#mo2f_send_ajax_sms").attr('disabled',true);
123
- jQuery(".buttonInsidePhone").after(otp_over_sms);
 
124
  }
125
  else if(response.status=='ERROR'){
126
  jQuery("#mo2f_error").empty();
26
 
27
  const otp_over_email = '<label for="mo2f_reg_email">OTP Over Email&nbsp;<span class="required">*</span></label> <input type="text" name="mo2f_email_otp" id="mo2f_email_otp" placeholder="Enter OTP sent on email" />';
28
  const otp_over_sms = '<label for="mo2f_reg_sms">OTP Over SMS&nbsp;<span class="required">*</span></label> <input type="text" name="mo2f_phone_otp" id="mo2f_phone_otp" placeholder="Enter OTP sent on phone number" />';
 
29
 
30
  switch (authType)
31
  {
32
  case 'phone':
33
+ jQuery(".iti").wrap( "<div class='buttonInsidePhone'></div>" );
34
+ jQuery(".iti").after('<button class="mo2f_send_phoneotp_button" id="mo2f_send_ajax_sms">Send OTP</button><button class="mo2ftimerSMS" id ="mo2ftimerSMS" style="display:none;">00</button>');
35
  mo2f_ajax_before_reg();
36
  break;
37
 
43
 
44
  case 'both':
45
  isBoth = true;
46
+ jQuery(".iti").wrap( "<div class='buttonInsidePhone'></div>" );
47
+ jQuery(".iti").after('<button class="mo2f_send_phoneotp_button" id="mo2f_send_ajax_sms">Send OTP</button><button class="mo2ftimerSMS" id ="mo2ftimerSMS" style="display:none;">00</button>');
48
  jQuery(emailSelector).wrap( "<div class='buttonInsideEmail'></div>" );
49
  jQuery(emailSelector).after('<button class="mo2f_send_emailotp_button" id="mo2f_send_ajax_email">Send OTP</button><button class="mo2ftimerEmail" id ="mo2ftimerEmail" style="display:none;">00</button>');
50
  mo2f_ajax_before_reg();
100
 
101
  jQuery("#mo2f_send_ajax_sms").click(function(e){
102
  e.preventDefault();
103
+ var mo2f_phone=jQuery(phoneSelector).val();
104
+ var mo2f_country=iti.getSelectedCountryData().dialCode;
105
+ mo2f_phone='+'+mo2f_country+mo2f_phone;
106
  if (validatePhone(mo2f_phone))
107
  {
108
  jQuery("#mo2f_send_ajax_sms").html("Sending");
121
  timeLeftSMS = 30;
122
  timerIdSMS = setInterval(sms_countdown, 1000);
123
  jQuery("#mo2f_send_ajax_sms").attr('disabled',true);
124
+ if(typeof jQuery('#mo2f_phone_otp').val() == 'undefined')
125
+ jQuery(".buttonInsidePhone").after(otp_over_sms);
126
  }
127
  else if(response.status=='ERROR'){
128
  jQuery("#mo2f_error").empty();
includes/lib/mo-2fa-options-enum.php CHANGED
@@ -77,3 +77,359 @@ class mo_2fa_options_enum_pointers extends Mo2FABasicEnum{
77
  }
78
 
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  }
78
 
79
 
80
+ class mo_2fa_time_zones {
81
+
82
+ public static $time_zones = array(
83
+ "(GMT-11:00) Niue Time" => "Pacific/Niue",
84
+ "(GMT-11:00) Samoa Standard Time" => "Pacific/Pago_Pago",
85
+ "(GMT-10:00) Cook Islands Standard Time" => "Pacific/Rarotonga",
86
+ "(GMT-10:00) Hawaii-Aleutian Standard Time" => "Pacific/Honolulu",
87
+ "(GMT-10:00) Tahiti Time" => "Pacific/Tahiti",
88
+ "(GMT-09:30) Marquesas Time" => "Pacific/Marquesas",
89
+ "(GMT-09:00) Gambier Time" => "Pacific/Gambier",
90
+ "(GMT-09:00) Hawaii-Aleutian Time (Adak)" => "America/Adak",
91
+ "(GMT-08:00) Alaska Time - Anchorage" => "America/Anchorage",
92
+ "(GMT-08:00) Alaska Time - Juneau" => "America/Juneau",
93
+ "(GMT-08:00) Alaska Time - Metlakatla" => "America/Metlakatla",
94
+ "(GMT-08:00) Alaska Time - Nome" => "America/Nome",
95
+ "(GMT-08:00) Alaska Time - Sitka" => "America/Sitka",
96
+ "(GMT-08:00) Alaska Time - Yakutat" => "America/Yakutat",
97
+ "(GMT-08:00) Pitcairn Time" => "Pacific/Pitcairn",
98
+ "(GMT-07:00) Mexican Pacific Standard Time" => "America/Hermosillo",
99
+ "(GMT-07:00) Mountain Standard Time - Creston" => "America/Creston",
100
+ "(GMT-07:00) Mountain Standard Time - Dawson" => "America/Dawson",
101
+ "(GMT-07:00) Mountain Standard Time - Dawson Creek" => "America/Dawson_Creek",
102
+ "(GMT-07:00) Mountain Standard Time - Fort Nelson" => "America/Fort_Nelson",
103
+ "(GMT-07:00) Mountain Standard Time - Phoenix" => "America/Phoenix",
104
+ "(GMT-07:00) Mountain Standard Time - Whitehorse" => "America/Whitehorse",
105
+ "(GMT-07:00) Pacific Time - Los Angeles" => "America/Los_Angeles",
106
+ "(GMT-07:00) Pacific Time - Tijuana" => "America/Tijuana",
107
+ "(GMT-07:00) Pacific Time - Vancouver" => "America/Vancouver",
108
+ "(GMT-06:00) Central Standard Time - Belize" => "America/Belize",
109
+ "(GMT-06:00) Central Standard Time - Costa Rica" => "America/Costa_Rica",
110
+ "(GMT-06:00) Central Standard Time - El Salvador" => "America/El_Salvador",
111
+ "(GMT-06:00) Central Standard Time - Guatemala" => "America/Guatemala",
112
+ "(GMT-06:00) Central Standard Time - Managua" => "America/Managua",
113
+ "(GMT-06:00) Central Standard Time - Regina" => "America/Regina",
114
+ "(GMT-06:00) Central Standard Time - Swift Current" => "America/Swift_Current",
115
+ "(GMT-06:00) Central Standard Time - Tegucigalpa" => "America/Tegucigalpa",
116
+ "(GMT-06:00) Easter Island Time" => "Pacific/Easter",
117
+ "(GMT-06:00) Galapagos Time" => "Pacific/Galapagos",
118
+ "(GMT-06:00) Mexican Pacific Time - Chihuahua" => "America/Chihuahua",
119
+ "(GMT-06:00) Mexican Pacific Time - Mazatlan" => "America/Mazatlan",
120
+ "(GMT-06:00) Mountain Time - Boise" => "America/Boise",
121
+ "(GMT-06:00) Mountain Time - Cambridge Bay" => "America/Cambridge_Bay",
122
+ "(GMT-06:00) Mountain Time - Denver" => "America/Denver",
123
+ "(GMT-06:00) Mountain Time - Edmonton" => "America/Edmonton",
124
+ "(GMT-06:00) Mountain Time - Inuvik" => "America/Inuvik",
125
+ "(GMT-06:00) Mountain Time - Ojinaga" => "America/Ojinaga",
126
+ "(GMT-06:00) Mountain Time - Yellowknife" => "America/Yellowknife",
127
+ "(GMT-05:00) Acre Standard Time - Eirunepe" => "America/Eirunepe",
128
+ "(GMT-05:00) Acre Standard Time - Rio Branco" => "America/Rio_Branco",
129
+ "(GMT-05:00) Central Time - Bahia Banderas" => "America/Bahia_Banderas",
130
+ "(GMT-05:00) Central Time - Beulah, North Dakota" => "America/North_Dakota/Beulah",
131
+ "(GMT-05:00) Central Time - Center, North Dakota" => "America/North_Dakota/Center",
132
+ "(GMT-05:00) Central Time - Chicago" => "America/Chicago",
133
+ "(GMT-05:00) Central Time - Knox, Indiana" => "America/Indiana/Knox",
134
+ "(GMT-05:00) Central Time - Matamoros" => "America/Matamoros",
135
+ "(GMT-05:00) Central Time - Menominee" => "America/Menominee",
136
+ "(GMT-05:00) Central Time - Merida" => "America/Merida",
137
+ "(GMT-05:00) Central Time - Mexico City" => "America/Mexico_City",
138
+ "(GMT-05:00) Central Time - Monterrey" => "America/Monterrey",
139
+ "(GMT-05:00) Central Time - New Salem, North Dakota" => "America/North_Dakota/New_Salem",
140
+ "(GMT-05:00) Central Time - Rainy River" => "America/Rainy_River",
141
+ "(GMT-05:00) Central Time - Rankin Inlet" => "America/Rankin_Inlet",
142
+ "(GMT-05:00) Central Time - Resolute" => "America/Resolute",
143
+ "(GMT-05:00) Central Time - Tell City, Indiana" => "America/Indiana/Tell_City",
144
+ "(GMT-05:00) Central Time - Winnipeg" => "America/Winnipeg",
145
+ "(GMT-05:00) Colombia Standard Time" => "America/Bogota",
146
+ "(GMT-05:00) Eastern Standard Time - Atikokan" => "America/Atikokan",
147
+ "(GMT-05:00) Eastern Standard Time - Cancun" => "America/Cancun",
148
+ "(GMT-05:00) Eastern Standard Time - Jamaica" => "America/Jamaica",
149
+ "(GMT-05:00) Eastern Standard Time - Panama" => "America/Panama",
150
+ "(GMT-05:00) Ecuador Time" => "America/Guayaquil",
151
+ "(GMT-05:00) Peru Standard Time" => "America/Lima",
152
+ "(GMT-04:00) Amazon Standard Time - Boa Vista" => "America/Boa_Vista",
153
+ "(GMT-04:00) Amazon Standard Time - Campo Grande" => "America/Campo_Grande",
154
+ "(GMT-04:00) Amazon Standard Time - Cuiaba" => "America/Cuiaba",
155
+ "(GMT-04:00) Amazon Standard Time - Manaus" => "America/Manaus",
156
+ "(GMT-04:00) Amazon Standard Time - Porto Velho" => "America/Porto_Velho",
157
+ "(GMT-04:00) Atlantic Standard Time - Barbados" => "America/Barbados",
158
+ "(GMT-04:00) Atlantic Standard Time - Blanc-Sablon" => "America/Blanc-Sablon",
159
+ "(GMT-04:00) Atlantic Standard Time - Cura�ao" => "America/Curacao",
160
+ "(GMT-04:00) Atlantic Standard Time - Martinique" => "America/Martinique",
161
+ "(GMT-04:00) Atlantic Standard Time - Port of Spain" => "America/Port_of_Spain",
162
+ "(GMT-04:00) Atlantic Standard Time - Puerto Rico" => "America/Puerto_Rico",
163
+ "(GMT-04:00) Atlantic Standard Time - Santo Domingo" => "America/Santo_Domingo",
164
+ "(GMT-04:00) Bolivia Time" => "America/La_Paz",
165
+ "(GMT-04:00) Chile Time" => "America/Santiago",
166
+ "(GMT-04:00) Cuba Time" => "America/Havana",
167
+ "(GMT-04:00) Eastern Time - Detroit" => "America/Detroit",
168
+ "(GMT-04:00) Eastern Time - Grand Turk" => "America/Grand_Turk",
169
+ "(GMT-04:00) Eastern Time - Indianapolis" => "America/Indiana/Indianapolis",
170
+ "(GMT-04:00) Eastern Time - Iqaluit" => "America/Iqaluit",
171
+ "(GMT-04:00) Eastern Time - Louisville" => "America/Kentucky/Louisville",
172
+ "(GMT-04:00) Eastern Time - Marengo, Indiana" => "America/Indiana/Marengo",
173
+ "(GMT-04:00) Eastern Time - Monticello, Kentucky" => "America/Kentucky/Monticello",
174
+ "(GMT-04:00) Eastern Time - Nassau" => "America/Nassau",
175
+ "(GMT-04:00) Eastern Time - New York" => "America/New_York",
176
+ "(GMT-04:00) Eastern Time - Nipigon" => "America/Nipigon",
177
+ "(GMT-04:00) Eastern Time - Pangnirtung" => "America/Pangnirtung",
178
+ "(GMT-04:00) Eastern Time - Petersburg, Indiana" => "America/Indiana/Petersburg",
179
+ "(GMT-04:00) Eastern Time - Port-au-Prince" => "America/Port-au-Prince",
180
+ "(GMT-04:00) Eastern Time - Thunder Bay" => "America/Thunder_Bay",
181
+ "(GMT-04:00) Eastern Time - Toronto" => "America/Toronto",
182
+ "(GMT-04:00) Eastern Time - Vevay, Indiana" => "America/Indiana/Vevay",
183
+ "(GMT-04:00) Eastern Time - Vincennes, Indiana" => "America/Indiana/Vincennes",
184
+ "(GMT-04:00) Eastern Time - Winamac, Indiana" => "America/Indiana/Winamac",
185
+ "(GMT-04:00) Guyana Time" => "America/Guyana",
186
+ "(GMT-04:00) Paraguay Time" => "America/Asuncion",
187
+ "(GMT-04:00) Venezuela Time" => "America/Caracas",
188
+ "(GMT-03:00) Argentina Standard Time - Buenos Aires" => "America/Argentina/Buenos_Aires",
189
+ "(GMT-03:00) Argentina Standard Time - Catamarca" => "America/Argentina/Catamarca",
190
+ "(GMT-03:00) Argentina Standard Time - Cordoba" => "America/Argentina/Cordoba",
191
+ "(GMT-03:00) Argentina Standard Time - Jujuy" => "America/Argentina/Jujuy",
192
+ "(GMT-03:00) Argentina Standard Time - La Rioja" => "America/Argentina/La_Rioja",
193
+ "(GMT-03:00) Argentina Standard Time - Mendoza" => "America/Argentina/Mendoza",
194
+ "(GMT-03:00) Argentina Standard Time - Rio Gallegos" => "America/Argentina/Rio_Gallegos",
195
+ "(GMT-03:00) Argentina Standard Time - Salta" => "America/Argentina/Salta",
196
+ "(GMT-03:00) Argentina Standard Time - San Juan" => "America/Argentina/San_Juan",
197
+ "(GMT-03:00) Argentina Standard Time - San Luis" => "America/Argentina/San_Luis",
198
+ "(GMT-03:00) Argentina Standard Time - Tucuman" => "America/Argentina/Tucuman",
199
+ "(GMT-03:00) Argentina Standard Time - Ushuaia" => "America/Argentina/Ushuaia",
200
+ "(GMT-03:00) Atlantic Time - Bermuda" => "Atlantic/Bermuda",
201
+ "(GMT-03:00) Atlantic Time - Glace Bay" => "America/Glace_Bay",
202
+ "(GMT-03:00) Atlantic Time - Goose Bay" => "America/Goose_Bay",
203
+ "(GMT-03:00) Atlantic Time - Halifax" => "America/Halifax",
204
+ "(GMT-03:00) Atlantic Time - Moncton" => "America/Moncton",
205
+ "(GMT-03:00) Atlantic Time - Thule" => "America/Thule",
206
+ "(GMT-03:00) Brasilia Standard Time - Araguaina" => "America/Araguaina",
207
+ "(GMT-03:00) Brasilia Standard Time - Bahia" => "America/Bahia",
208
+ "(GMT-03:00) Brasilia Standard Time - Belem" => "America/Belem",
209
+ "(GMT-03:00) Brasilia Standard Time - Fortaleza" => "America/Fortaleza",
210
+ "(GMT-03:00) Brasilia Standard Time - Maceio" => "America/Maceio",
211
+ "(GMT-03:00) Brasilia Standard Time - Recife" => "America/Recife",
212
+ "(GMT-03:00) Brasilia Standard Time - Santarem" => "America/Santarem",
213
+ "(GMT-03:00) Brasilia Standard Time - Sao Paulo" => "America/Sao_Paulo",
214
+ "(GMT-03:00) Chile Time" => "America/Santiago",
215
+ "(GMT-03:00) Falkland Islands Standard Time" => "Atlantic/Stanley",
216
+ "(GMT-03:00) French Guiana Time" => "America/Cayenne",
217
+ "(GMT-03:00) Palmer Time" => "Antarctica/Palmer",
218
+ "(GMT-03:00) Punta Arenas Time" => "America/Punta_Arenas",
219
+ "(GMT-03:00) Rothera Time" => "Antarctica/Rothera",
220
+ "(GMT-03:00) Suriname Time" => "America/Paramaribo",
221
+ "(GMT-03:00) Uruguay Standard Time" => "America/Montevideo",
222
+ "(GMT-02:30) Newfoundland Time" => "America/St_Johns",
223
+ "(GMT-02:00) Fernando de Noronha Standard Time" => "America/Noronha",
224
+ "(GMT-02:00) South Georgia Time" => "Atlantic/South_Georgia",
225
+ "(GMT-02:00) St. Pierre & Miquelon Time" => "America/Miquelon",
226
+ "(GMT-02:00) West Greenland Time" => "America/Nuuk",
227
+ "(GMT-01:00) Cape Verde Standard Time" => "Atlantic/Cape_Verde",
228
+ "(GMT+00:00) Azores Time" => "Atlantic/Azores",
229
+ "(GMT+00:00) Coordinated Universal Time" => "UTC",
230
+ "(GMT+00:00) East Greenland Time" => "America/Scoresbysund",
231
+ "(GMT+00:00) Greenwich Mean Time" => "Etc/GMT",
232
+ "(GMT+00:00) Greenwich Mean Time - Abidjan" => "Africa/Abidjan",
233
+ "(GMT+00:00) Greenwich Mean Time - Accra" => "Africa/Accra",
234
+ "(GMT+00:00) Greenwich Mean Time - Bissau" => "Africa/Bissau",
235
+ "(GMT+00:00) Greenwich Mean Time - Danmarkshavn" => "America/Danmarkshavn",
236
+ "(GMT+00:00) Greenwich Mean Time - Monrovia" => "Africa/Monrovia",
237
+ "(GMT+00:00) Greenwich Mean Time - Reykjavik" => "Atlantic/Reykjavik",
238
+ "(GMT+00:00) Greenwich Mean Time - S�o Tom�" => "Africa/Sao_Tome",
239
+ "(GMT+01:00) Central European Standard Time - Algiers" => "Africa/Algiers",
240
+ "(GMT+01:00) Central European Standard Time - Tunis" => "Africa/Tunis",
241
+ "(GMT+01:00) Ireland Time" => "Europe/Dublin",
242
+ "(GMT+01:00) Morocco Time" => "Africa/Casablanca",
243
+ "(GMT+01:00) United Kingdom Time" => "Europe/London",
244
+ "(GMT+01:00) West Africa Standard Time - Lagos" => "Africa/Lagos",
245
+ "(GMT+01:00) West Africa Standard Time - Ndjamena" => "Africa/Ndjamena",
246
+ "(GMT+01:00) Western European Time - Canary" => "Atlantic/Canary",
247
+ "(GMT+01:00) Western European Time - Faroe" => "Atlantic/Faroe",
248
+ "(GMT+01:00) Western European Time - Lisbon" => "Europe/Lisbon",
249
+ "(GMT+01:00) Western European Time - Madeira" => "Atlantic/Madeira",
250
+ "(GMT+01:00) Western Sahara Time" => "Africa/El_Aaiun",
251
+ "(GMT+02:00) Central Africa Time - Khartoum" => "Africa/Khartoum",
252
+ "(GMT+02:00) Central Africa Time - Maputo" => "Africa/Maputo",
253
+ "(GMT+02:00) Central Africa Time - Windhoek" => "Africa/Windhoek",
254
+ "(GMT+02:00) Central European Time - Amsterdam" => "Europe/Amsterdam",
255
+ "(GMT+02:00) Central European Time - Andorra" => "Europe/Andorra",
256
+ "(GMT+02:00) Central European Time - Belgrade" => "Europe/Belgrade",
257
+ "(GMT+02:00) Central European Time - Berlin" => "Europe/Berlin",
258
+ "(GMT+02:00) Central European Time - Brussels" => "Europe/Brussels",
259
+ "(GMT+02:00) Central European Time - Budapest" => "Europe/Budapest",
260
+ "(GMT+02:00) Central European Time - Ceuta" => "Africa/Ceuta",
261
+ "(GMT+02:00) Central European Time - Copenhagen" => "Europe/Copenhagen",
262
+ "(GMT+02:00) Central European Time - Gibraltar" => "Europe/Gibraltar",
263
+ "(GMT+02:00) Central European Time - Luxembourg" => "Europe/Luxembourg",
264
+ "(GMT+02:00) Central European Time - Madrid" => "Europe/Madrid",
265
+ "(GMT+02:00) Central European Time - Malta" => "Europe/Malta",
266
+ "(GMT+02:00) Central European Time - Monaco" => "Europe/Monaco",
267
+ "(GMT+02:00) Central European Time - Oslo" => "Europe/Oslo",
268
+ "(GMT+02:00) Central European Time - Paris" => "Europe/Paris",
269
+ "(GMT+02:00) Central European Time - Prague" => "Europe/Prague",
270
+ "(GMT+02:00) Central European Time - Rome" => "Europe/Rome",
271
+ "(GMT+02:00) Central European Time - Stockholm" => "Europe/Stockholm",
272
+ "(GMT+02:00) Central European Time - Tirane" => "Europe/Tirane",
273
+ "(GMT+02:00) Central European Time - Vienna" => "Europe/Vienna",
274
+ "(GMT+02:00) Central European Time - Warsaw" => "Europe/Warsaw",
275
+ "(GMT+02:00) Central European Time - Zurich" => "Europe/Zurich",
276
+ "(GMT+02:00) Eastern European Standard Time - Cairo" => "Africa/Cairo",
277
+ "(GMT+02:00) Eastern European Standard Time - Kaliningrad" => "Europe/Kaliningrad",
278
+ "(GMT+02:00) Eastern European Standard Time - Tripoli" => "Africa/Tripoli",
279
+ "(GMT+02:00) South Africa Standard Time" => "Africa/Johannesburg",
280
+ "(GMT+02:00) Troll Time" => "Antarctica/Troll",
281
+ "(GMT+03:00) Arabian Standard Time - Baghdad" => "Asia/Baghdad",
282
+ "(GMT+03:00) Arabian Standard Time - Qatar" => "Asia/Qatar",
283
+ "(GMT+03:00) Arabian Standard Time - Riyadh" => "Asia/Riyadh",
284
+ "(GMT+03:00) East Africa Time - Juba" => "Africa/Juba",
285
+ "(GMT+03:00) East Africa Time - Nairobi" => "Africa/Nairobi",
286
+ "(GMT+03:00) Eastern European Time - Amman" => "Asia/Amman",
287
+ "(GMT+03:00) Eastern European Time - Athens" => "Europe/Athens",
288
+ "(GMT+03:00) Eastern European Time - Beirut" => "Asia/Beirut",
289
+ "(GMT+03:00) Eastern European Time - Bucharest" => "Europe/Bucharest",
290
+ "(GMT+03:00) Eastern European Time - Chisinau" => "Europe/Chisinau",
291
+ "(GMT+03:00) Eastern European Time - Damascus" => "Asia/Damascus",
292
+ "(GMT+03:00) Eastern European Time - Gaza" => "Asia/Gaza",
293
+ "(GMT+03:00) Eastern European Time - Hebron" => "Asia/Hebron",
294
+ "(GMT+03:00) Eastern European Time - Helsinki" => "Europe/Helsinki",
295
+ "(GMT+03:00) Eastern European Time - Kiev" => "Europe/Kiev",
296
+ "(GMT+03:00) Eastern European Time - Nicosia" => "Asia/Nicosia",
297
+ "(GMT+03:00) Eastern European Time - Riga" => "Europe/Riga",
298
+ "(GMT+03:00) Eastern European Time - Sofia" => "Europe/Sofia",
299
+ "(GMT+03:00) Eastern European Time - Tallinn" => "Europe/Tallinn",
300
+ "(GMT+03:00) Eastern European Time - Uzhhorod" => "Europe/Uzhgorod",
301
+ "(GMT+03:00) Eastern European Time - Vilnius" => "Europe/Vilnius",
302
+ "(GMT+03:00) Eastern European Time - Zaporozhye" => "Europe/Zaporozhye",
303
+ "(GMT+03:00) Famagusta Time" => "Asia/Famagusta",
304
+ "(GMT+03:00) Israel Time" => "Asia/Jerusalem",
305
+ "(GMT+03:00) Kirov Time" => "Europe/Kirov",
306
+ "(GMT+03:00) Moscow Standard Time - Minsk" => "Europe/Minsk",
307
+ "(GMT+03:00) Moscow Standard Time - Moscow" => "Europe/Moscow",
308
+ "(GMT+03:00) Moscow Standard Time - Simferopol" => "Europe/Simferopol",
309
+ "(GMT+03:00) Syowa Time" => "Antarctica/Syowa",
310
+ "(GMT+03:00) Turkey Time" => "Europe/Istanbul",
311
+ "(GMT+04:00) Armenia Standard Time" => "Asia/Yerevan",
312
+ "(GMT+04:00) Astrakhan Time" => "Europe/Astrakhan",
313
+ "(GMT+04:00) Azerbaijan Standard Time" => "Asia/Baku",
314
+ "(GMT+04:00) Georgia Standard Time" => "Asia/Tbilisi",
315
+ "(GMT+04:00) Gulf Standard Time" => "Asia/Dubai",
316
+ "(GMT+04:00) Mauritius Standard Time" => "Indian/Mauritius",
317
+ "(GMT+04:00) R�union Time" => "Indian/Reunion",
318
+ "(GMT+04:00) Samara Standard Time" => "Europe/Samara",
319
+ "(GMT+04:00) Saratov Time" => "Europe/Saratov",
320
+ "(GMT+04:00) Seychelles Time" => "Indian/Mahe",
321
+ "(GMT+04:00) Ulyanovsk Time" => "Europe/Ulyanovsk",
322
+ "(GMT+04:00) Volgograd Standard Time" => "Europe/Volgograd",
323
+ "(GMT+04:30) Afghanistan Time" => "Asia/Kabul",
324
+ "(GMT+04:30) Iran Time" => "Asia/Tehran",
325
+ "(GMT+05:00) French Southern & Antarctic Time" => "Indian/Kerguelen",
326
+ "(GMT+05:00) Maldives Time" => "Indian/Maldives",
327
+ "(GMT+05:00) Mawson Time" => "Antarctica/Mawson",
328
+ "(GMT+05:00) Pakistan Standard Time" => "Asia/Karachi",
329
+ "(GMT+05:00) Tajikistan Time" => "Asia/Dushanbe",
330
+ "(GMT+05:00) Turkmenistan Standard Time" => "Asia/Ashgabat",
331
+ "(GMT+05:00) Uzbekistan Standard Time - Samarkand" => "Asia/Samarkand",
332
+ "(GMT+05:00) Uzbekistan Standard Time - Tashkent" => "Asia/Tashkent",
333
+ "(GMT+05:00) West Kazakhstan Time - Aqtau" => "Asia/Aqtau",
334
+ "(GMT+05:00) West Kazakhstan Time - Aqtobe" => "Asia/Aqtobe",
335
+ "(GMT+05:00) West Kazakhstan Time - Atyrau" => "Asia/Atyrau",
336
+ "(GMT+05:00) West Kazakhstan Time - Oral" => "Asia/Oral",
337
+ "(GMT+05:00) West Kazakhstan Time - Qyzylorda" => "Asia/Qyzylorda",
338
+ "(GMT+05:00) Yekaterinburg Standard Time" => "Asia/Yekaterinburg",
339
+ "(GMT+05:30) Indian Standard Time - Colombo" => "Asia/Colombo",
340
+ "(GMT+05:30) Indian Standard Time - Kolkata" => "Asia/Kolkata",
341
+ "(GMT+05:45) Nepal Time" => "Asia/Kathmandu",
342
+ "(GMT+06:00) Bangladesh Standard Time" => "Asia/Dhaka",
343
+ "(GMT+06:00) Bhutan Time" => "Asia/Thimphu",
344
+ "(GMT+06:00) East Kazakhstan Time - Almaty" => "Asia/Almaty",
345
+ "(GMT+06:00) East Kazakhstan Time - Kostanay" => "Asia/Qostanay",
346
+ "(GMT+06:00) Indian Ocean Time" => "Indian/Chagos",
347
+ "(GMT+06:00) Kyrgyzstan Time" => "Asia/Bishkek",
348
+ "(GMT+06:00) Omsk Standard Time" => "Asia/Omsk",
349
+ "(GMT+06:00) Urumqi Time" => "Asia/Urumqi",
350
+ "(GMT+06:00) Vostok Time" => "Antarctica/Vostok",
351
+ "(GMT+06:30) Cocos Islands Time" => "Indian/Cocos",
352
+ "(GMT+06:30) Myanmar Time" => "Asia/Yangon",
353
+ "(GMT+07:00) Barnaul Time" => "Asia/Barnaul",
354
+ "(GMT+07:00) Christmas Island Time" => "Indian/Christmas",
355
+ "(GMT+07:00) Davis Time" => "Antarctica/Davis",
356
+ "(GMT+07:00) Hovd Standard Time" => "Asia/Hovd",
357
+ "(GMT+07:00) Indochina Time - Bangkok" => "Asia/Bangkok",
358
+ "(GMT+07:00) Indochina Time - Ho Chi Minh City" => "Asia/Ho_Chi_Minh",
359
+ "(GMT+07:00) Krasnoyarsk Standard Time - Krasnoyarsk" => "Asia/Krasnoyarsk",
360
+ "(GMT+07:00) Krasnoyarsk Standard Time - Novokuznetsk" => "Asia/Novokuznetsk",
361
+ "(GMT+07:00) Novosibirsk Standard Time" => "Asia/Novosibirsk",
362
+ "(GMT+07:00) Tomsk Time" => "Asia/Tomsk",
363
+ "(GMT+07:00) Western Indonesia Time - Jakarta" => "Asia/Jakarta",
364
+ "(GMT+07:00) Western Indonesia Time - Pontianak" => "Asia/Pontianak",
365
+ "(GMT+08:00) Australian Western Standard Time - Casey" => "Antarctica/Casey",
366
+ "(GMT+08:00) Australian Western Standard Time - Perth" => "Australia/Perth",
367
+ "(GMT+08:00) Brunei Darussalam Time" => "Asia/Brunei",
368
+ "(GMT+08:00) Central Indonesia Time" => "Asia/Makassar",
369
+ "(GMT+08:00) China Standard Time - Macao" => "Asia/Macau",
370
+ "(GMT+08:00) China Standard Time - Shanghai" => "Asia/Shanghai",
371
+ "(GMT+08:00) Hong Kong Standard Time" => "Asia/Hong_Kong",
372
+ "(GMT+08:00) Irkutsk Standard Time" => "Asia/Irkutsk",
373
+ "(GMT+08:00) Malaysia Time - Kuala Lumpur" => "Asia/Kuala_Lumpur",
374
+ "(GMT+08:00) Malaysia Time - Kuching" => "Asia/Kuching",
375
+ "(GMT+08:00) Philippine Standard Time" => "Asia/Manila",
376
+ "(GMT+08:00) Singapore Standard Time" => "Asia/Singapore",
377
+ "(GMT+08:00) Taipei Standard Time" => "Asia/Taipei",
378
+ "(GMT+08:00) Ulaanbaatar Standard Time - Choibalsan" => "Asia/Choibalsan",
379
+ "(GMT+08:00) Ulaanbaatar Standard Time - Ulaanbaatar" => "Asia/Ulaanbaatar",
380
+ "(GMT+08:45) Australian Central Western Standard Time" => "Australia/Eucla",
381
+ "(GMT+09:00) East Timor Time" => "Asia/Dili",
382
+ "(GMT+09:00) Eastern Indonesia Time" => "Asia/Jayapura",
383
+ "(GMT+09:00) Japan Standard Time" => "Asia/Tokyo",
384
+ "(GMT+09:00) Korean Standard Time - Pyongyang" => "Asia/Pyongyang",
385
+ "(GMT+09:00) Korean Standard Time - Seoul" => "Asia/Seoul",
386
+ "(GMT+09:00) Palau Time" => "Pacific/Palau",
387
+ "(GMT+09:00) Yakutsk Standard Time - Chita" => "Asia/Chita",
388
+ "(GMT+09:00) Yakutsk Standard Time - Khandyga" => "Asia/Khandyga",
389
+ "(GMT+09:00) Yakutsk Standard Time - Yakutsk" => "Asia/Yakutsk",
390
+ "(GMT+09:30) Australian Central Standard Time" => "Australia/Darwin",
391
+ "(GMT+09:30) Central Australia Time - Adelaide" => "Australia/Adelaide",
392
+ "(GMT+09:30) Central Australia Time - Broken Hill" => "Australia/Broken_Hill",
393
+ "(GMT+10:00) Australian Eastern Standard Time - Brisbane" => "Australia/Brisbane",
394
+ "(GMT+10:00) Australian Eastern Standard Time - Lindeman" => "Australia/Lindeman",
395
+ "(GMT+10:00) Chamorro Standard Time" => "Pacific/Guam",
396
+ "(GMT+10:00) Chuuk Time" => "Pacific/Chuuk",
397
+ "(GMT+10:00) Dumont-d�Urville Time" => "Antarctica/DumontDUrville",
398
+ "(GMT+10:00) Eastern Australia Time - Currie" => "Australia/Currie",
399
+ "(GMT+10:00) Eastern Australia Time - Hobart" => "Australia/Hobart",
400
+ "(GMT+10:00) Eastern Australia Time - Melbourne" => "Australia/Melbourne",
401
+ "(GMT+10:00) Eastern Australia Time - Sydney" => "Australia/Sydney",
402
+ "(GMT+10:00) Papua New Guinea Time" => "Pacific/Port_Moresby",
403
+ "(GMT+10:00) Vladivostok Standard Time - Ust-Nera" => "Asia/Ust-Nera",
404
+ "(GMT+10:00) Vladivostok Standard Time - Vladivostok" => "Asia/Vladivostok",
405
+ "(GMT+10:30) Lord Howe Time" => "Australia/Lord_Howe",
406
+ "(GMT+11:00) Bougainville Time" => "Pacific/Bougainville",
407
+ "(GMT+11:00) Kosrae Time" => "Pacific/Kosrae",
408
+ "(GMT+11:00) Macquarie Island Time" => "Antarctica/Macquarie",
409
+ "(GMT+11:00) Magadan Standard Time" => "Asia/Magadan",
410
+ "(GMT+11:00) New Caledonia Standard Time" => "Pacific/Noumea",
411
+ "(GMT+11:00) Norfolk Island Time" => "Pacific/Norfolk",
412
+ "(GMT+11:00) Ponape Time" => "Pacific/Pohnpei",
413
+ "(GMT+11:00) Sakhalin Standard Time" => "Asia/Sakhalin",
414
+ "(GMT+11:00) Solomon Islands Time" => "Pacific/Guadalcanal",
415
+ "(GMT+11:00) Srednekolymsk Time" => "Asia/Srednekolymsk",
416
+ "(GMT+11:00) Vanuatu Standard Time" => "Pacific/Efate",
417
+ "(GMT+12:00) Anadyr Standard Time" => "Asia/Anadyr",
418
+ "(GMT+12:00) Fiji Time" => "Pacific/Fiji",
419
+ "(GMT+12:00) Gilbert Islands Time" => "Pacific/Tarawa",
420
+ "(GMT+12:00) Marshall Islands Time - Kwajalein" => "Pacific/Kwajalein",
421
+ "(GMT+12:00) Marshall Islands Time - Majuro" => "Pacific/Majuro",
422
+ "(GMT+12:00) Nauru Time" => "Pacific/Nauru",
423
+ "(GMT+12:00) New Zealand Time" => "Pacific/Auckland",
424
+ "(GMT+12:00) Petropavlovsk-Kamchatski Standard Time" => "Asia/Kamchatka",
425
+ "(GMT+12:00) Tuvalu Time" => "Pacific/Funafuti",
426
+ "(GMT+12:00) Wake Island Time" => "Pacific/Wake",
427
+ "(GMT+12:00) Wallis & Futuna Time" => "Pacific/Wallis",
428
+ "(GMT+12:45) Chatham Time" => "Pacific/Chatham",
429
+ "(GMT+13:00) Apia Time" => "Pacific/Apia",
430
+ "(GMT+13:00) Phoenix Islands Time" => "Pacific/Enderbury",
431
+ "(GMT+13:00) Tokelau Time" => "Pacific/Fakaofo",
432
+ "(GMT+13:00) Tonga Standard Time" => "Pacific/Tongatapu",
433
+ "(GMT+14:00) Line Islands Time" => "Pacific/Kiritimati"
434
+ );
435
+ }
miniorange_2_factor_settings.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: miniOrange 2 Factor Authentication
4
  * Plugin URI: https://miniorange.com
5
  * Description: This plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 3 User in the free version of the plugin.
6
- * Version: 5.4.22
7
  * Author: miniOrange
8
  * Author URI: https://miniorange.com
9
  * Text Domain: miniorange-2-factor-authentication
@@ -11,7 +11,7 @@
11
  */
12
  include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'database'.DIRECTORY_SEPARATOR.'mo2f_db_options.php';
13
  define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
14
- define( 'MO2F_VERSION', '5.4.22' );
15
  define( 'MO2F_TEST_MODE', false );
16
  define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
17
  class Miniorange_twoFactor{
@@ -285,6 +285,7 @@
285
  wp_enqueue_style( 'mo_wpns_admin_settings_datatable_style' , plugins_url('includes/css/jquery.dataTables.min.css', __FILE__));
286
  wp_enqueue_style( 'mo_wpns_button_settings_style' , plugins_url('includes/css/button_styles.css',__FILE__));
287
  wp_enqueue_style( 'mo_wpns_popup_settings_style' , plugins_url('includes/css/popup.css',__FILE__));
 
288
  $file = plugin_dir_path( __FILE__ ) .'controllers'.DIRECTORY_SEPARATOR. 'pointers.php';
289
 
290
  $tour_started=get_option('mo2f_tour_started',0);
@@ -320,6 +321,11 @@
320
  wp_enqueue_script( 'mo_wpns_admin_datatable_script' , plugins_url('includes/js/jquery.dataTables.min.js', __FILE__ ), array('jquery'));
321
  wp_enqueue_script( 'mo_wpns_qrcode_script', plugins_url( "/includes/jquery-qrcode/jquery-qrcode.js", __FILE__ ) );
322
  wp_enqueue_script( 'mo_wpns_min_qrcode_script', plugins_url( "/includes/jquery-qrcode/jquery-qrcode.min.js", __FILE__ ) );
 
 
 
 
 
323
  }
324
  }
325
 
3
  * Plugin Name: miniOrange 2 Factor Authentication
4
  * Plugin URI: https://miniorange.com
5
  * Description: This plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 3 User in the free version of the plugin.
6
+ * Version: 5.4.23
7
  * Author: miniOrange
8
  * Author URI: https://miniorange.com
9
  * Text Domain: miniorange-2-factor-authentication
11
  */
12
  include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'database'.DIRECTORY_SEPARATOR.'mo2f_db_options.php';
13
  define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
14
+ define( 'MO2F_VERSION', '5.4.23' );
15
  define( 'MO2F_TEST_MODE', false );
16
  define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
17
  class Miniorange_twoFactor{
285
  wp_enqueue_style( 'mo_wpns_admin_settings_datatable_style' , plugins_url('includes/css/jquery.dataTables.min.css', __FILE__));
286
  wp_enqueue_style( 'mo_wpns_button_settings_style' , plugins_url('includes/css/button_styles.css',__FILE__));
287
  wp_enqueue_style( 'mo_wpns_popup_settings_style' , plugins_url('includes/css/popup.css',__FILE__));
288
+ wp_enqueue_style( 'mo_2fa_time_settings_style' , plugins_url('includes/css/datetime-style-settings.min.css', __FILE__));
289
  $file = plugin_dir_path( __FILE__ ) .'controllers'.DIRECTORY_SEPARATOR. 'pointers.php';
290
 
291
  $tour_started=get_option('mo2f_tour_started',0);
321
  wp_enqueue_script( 'mo_wpns_admin_datatable_script' , plugins_url('includes/js/jquery.dataTables.min.js', __FILE__ ), array('jquery'));
322
  wp_enqueue_script( 'mo_wpns_qrcode_script', plugins_url( "/includes/jquery-qrcode/jquery-qrcode.js", __FILE__ ) );
323
  wp_enqueue_script( 'mo_wpns_min_qrcode_script', plugins_url( "/includes/jquery-qrcode/jquery-qrcode.min.js", __FILE__ ) );
324
+ wp_enqueue_script('jquery-ui-core');
325
+ wp_enqueue_script('jquery-ui-autocomplete');
326
+ wp_enqueue_script('jquery-ui-datepicker');
327
+ wp_enqueue_script('mo_2fa_select2_script', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js');
328
+ wp_enqueue_script('mo_2fa_timepicker_script', 'https://cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js');
329
  }
330
  }
331
 
readme.txt CHANGED
@@ -1,73 +1,84 @@
1
  === Google Authenticator - WordPress Two Factor Authentication (2FA , MFA) ===
2
 
3
- Contributors: cyberlord92, twofactor
4
  Tags: google authenticator, two factor authentication, two factor, 2FA,two-step verification, mobile verification,OTP, two-step verification, mobile verification,two factor,Two step verification, 2FA, TFA, MFA, 2 factor authentication, Remember Device, OTP,WordPress otp, two step authentication,Clef,SMS, email, signup security, two factor auth, Mobile Authentication, strong authentication, 2 step authentication, mobile verification,Multifactor authentication, passwordless login, one time passcode, soft token Authentication, QR Code Authentication, email verification, KBA, Security Questions,2FA, login OTP, login with SMS, mobile login, phone login, OTP login, mobile verification,knowledge based authentication,authy, authy two factor,yubico,Two-Factor Authentication,WordPress otp, security,user security, ​Twilio WordPress, SMS gateway, Solutions Infini, Clickatell, BulkSMS, MSG91, Nexmo, SMS Country, message, woocommerce, website security, login security, multi factor authentication, multi factor,wordfence, IP Blocking, IP Whitelisting, login Audits, woocommerce, SMS login, passwordless login, auth, login with OTP WordPress, OTP, two-step authentication, Mobile Authentication,passwordless login, one time passcode, email verification, security, website security, login security, multi-factor authentication,, woocommerce, smartphone,WordPress otp, register with OTP, user OTP verification, SMS OTP, OTP Email, registration with OTP verification, registration verification,smartphone authentication
5
  Donate link: https://miniorange.com/
6
  Requires at least: 3.0.1
7
  Tested up to: 5.5
8
  Requires PHP: 5.3.0
9
- Stable tag: 5.4.22
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
13
- 2FA,OTP on login and Registration for all forms with SMS, Email, other Apps like Microsoft, Duo, LastPass & more. Supports Email verificaion, SMS Verification, QR Code, Push Notification and Security Questions.
14
 
15
  == Description ==
16
 
17
- Have a completely Secure login to your WordPress website using this FREE, Simple & very easy to setup plugin. It provides two factor authentication (2FA, MFA) whenever login to your WordPress website ensuring no unauthorised access to your website.
18
 
19
  = User Identity Verification or OTP Verification =
20
- Login and Registration: Verify users on login and Registration with different authentication methods like SMS Verification, Email, Google Authenticator, Authy Authenticator, Duo, Microsoft Authenticator, TOTP Based Authenticator, Security Questions and many others. Easy OTP Verification with SMS Verification and Email Verification.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
  = Third Party Custom SMS Gateway =
23
  Premium plugin supports any third party custom SMS Gateway. If you don't have your own SMS gateway you can use miniOrange gateway. Send SMS all over the world.
24
  * Some Famous Gateways Supported:
25
- * Twilio
26
- * Clickatell
27
- * ClickSend
28
- * SendGrid
29
- * Plivo
30
- * GatewayApi
31
 
32
  Others not listed gateway can be tested on our site, Test your Gateway: [Custom Gateway](https://login.xecurify.com/moas/login?redirectUrl=https://login.xecurify.com/moas/admin/customer/smsconfig)
33
 
34
  = All Registartion Forms Supported =
35
- OTP Verification on all the Registration and Login forms to verify users. Use this shortcode for Registration([mo2f_enable_register]). Settings in <b>Two Factor -> Registration Forms</b>.
36
-
37
- <h4>Supports variety of WordPress forms and plugins</h4>
38
- * Woocommerce : [Woocommerce](https://wordpress.org/plugins/woocommerce/)
39
- * BuddyPress: [BuddyPress form](https://wordpress.org/plugins/buddypress/)
40
- * bbpress: [bbpress form](https://wordpress.org/plugins/bbpress/)
41
- * Ultimate Member – User Profile & Membership: [Ultimate Member – User Profile & Membership Form](https://wordpress.org/plugins/ultimate-member/)
42
- * Restrict Content Pro: [Restrict Content Pro Form](https://wordpress.org/plugins/restrict-content/)
43
- * My theme Login: [My theme Login Form](https://wordpress.org/plugins/theme-my-login/)
44
- * User Registration – Custom Registration: [User Registration – Custom Registration Form](https://wordpress.org/plugins/bbpress/)
45
- * Custom Login Page Customizer: [Custom Login Page Customizer Form](https://wordpress.org/plugins/loginpress/)
46
- * Admin Custom Login: [Admin Custom Login Form](https://wordpress.org/plugins/admin-custom-login/)
47
- * RegistrationMagic – Custom Registration :[RegistrationMagic – Custom Registration Forms](https://wordpress.org/plugins/custom-registration-form-builder-with-submission-manager/)
48
- * Digimember
49
- * Paid Membership Pro
50
- * Memberpress Pro
51
- * And many more
52
 
53
 
54
  = FREE Plugin Features =
55
- * Simplified & easy user interface.
56
- * Two Factor Authentication (2FA) for **3 User** forever FREE!
57
- * **Variety of Authentication Methods:** Any App supporting TOTP algorithm like Google, Authy, LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA)
58
  * Includes Language Translation Support. Supports a wide variety of languages
59
- * Passwordless login or login with phone number
60
- * This plugin Supports standard TOTP + HOTP protocols for Authentication Methods.
61
  * Two Factor Authentication (2FA) allows authentication on login page itself for Google Authenticator & miniOrange Soft Token.
62
  * Brute force attack prevention & IP Blocking.
63
  * User login Monitorning.
64
  * RCP Login and Registration Suppport
65
  * OTP Verification of Ulimate Member Registartion form
 
66
 
67
  = Standard Plugin Features =
68
 
69
- * Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
70
- * **Available Authentication Methods:** Google, Authy, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification. *( SMS credits need to be purchased as per the need)*
71
  * Includes language Translation Support. Supports wide variety of languages.
72
  * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login. [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
73
  * **Backup Method:** KBA(Security Questions)
@@ -77,8 +88,8 @@ OTP Verification on all the Registration and Login forms to verify users. Use th
77
 
78
  = Premium Plugin Features =
79
 
80
- * Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
81
- * **Available Authentication Methods:** Google, Authy, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification, Hardware Token, Whatsapp based 2fa(Add-on), Telegram Based 2fa. *( SMS and Email credits need to be purchased as per the need)*
82
  * Language Translation Support
83
  * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
84
  * **Backup Methods:** KBA(Security Questions), OTP Over Email, Backup Codes [Guide](https://docs.miniorange.com/documentation/want-configure-backup-methods-users-can-configure-case-locked-site-not-able-log)
@@ -86,7 +97,7 @@ OTP Verification on all the Registration and Login forms to verify users. Use th
86
  * Force Two factor for users [Guide](https://docs.miniorange.com/documentation/enforce-2fa-users)
87
  * Email notification to users asking them to set up Two Factor Authentication (2FA) [Guide](https://docs.miniorange.com/documentation/want-send-email-notification-users-setting-2-factor)
88
  * User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions), Customize account name in Google Authenticator app [Guide](https://docs.miniorange.com/documentation/google-authenticator-app-name).
89
- * Enable Two Factor Authentication (2FA) for specific Users/User Roles [Guide](https://docs.miniorange.com/documentation/enable-two-factor-based-roles)
90
  * Choose specific authentication methods for Users [Guide](https://docs.miniorange.com/documentation/specific-set-authentication-methods-based-role)
91
  * Set Privacy Policy for users [Guide](https://docs.miniorange.com/documentation/privacy-policy-site)
92
  * App Specific Password to login from mobile Apps
@@ -95,13 +106,13 @@ OTP Verification on all the Registration and Login forms to verify users. Use th
95
 
96
  = Enterprise Plugin Features =
97
 
98
- * Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
99
- * **Available Authentication Methods:** Google, Authy, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification, Hardware Token. *( SMS and Email credits need to be purchased as per the need)*
100
  * Language Translation Support
101
  * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login.
102
  * **Backup Methods:** KBA(Security Questions), OTP Over Email, Backup Codes
103
  * Multisite compatible.
104
- * Email notification to users asking them to set up Two Factor Authentication (2FA).
105
  * User role based redirection after Login, Custom Security Questions (KBA), Customize account name in Google Authenticator app.
106
  * Enable Two Factor Authentication (2FA) for specific Users/User Roles
107
  * Choose specific authentication methods for Users
@@ -111,7 +122,7 @@ OTP Verification on all the Registration and Login forms to verify users. Use th
111
  * File protection & strong password
112
 
113
 
114
- = Prevent Account Sharing Between Users =
115
  Many video sharing and E-learning platforms want to prevent sharing of account between the users. This can be done using miniOrange Two factor plugin. Also, e-learning portals can use this to their advantage. It can be used on any websites which create and sell courses. It can be integrated with plugins like Learndash.
116
  Other sites like premium video content or any premium content where you want users not to share passwords between friends and Family then you can go for this solution.
117
 
@@ -165,11 +176,13 @@ Adding to this, you can also use the same account on multiple applications and y
165
  * On-Demand ShortCodes for specific functionalities ( like for enabling 2FA for specific pages)
166
 
167
  = Apps Supported by the plugin =
168
- * miniOrange Authenticator App.
169
- * Google Authenticator App.
170
- * Duo Authenticator App.
171
- * Microsoft Authenticator Authenticator App.
172
- * Authy 2-Factor Authentication App [STANDARD / PREMIUM FEATURE]
 
 
173
 
174
  <h4>Useful blog posts about two factor authenticaion plugin </h4>
175
  *[Beginner’s Guide: How to Add Two-Factor Authentication to WordPress](https://themeisle.com/blog/how-to-add-two-factor-authentication-to-wordpress/)
@@ -325,14 +338,27 @@ miniOrange authentication service has 15+ authentication methods.One time passco
325
 
326
  == Screenshots ==
327
 
328
- 1. Setup different 2-Factor methods.
329
- 2. Enable or Disable 2-factor for Users.
330
- 3. 2 Factor Authentication prompt during Login.
 
 
 
 
 
331
 
332
  == Changelog ==
333
 
 
 
 
 
 
 
 
 
334
  = 5.4.22 =
335
- * Google Authenticator-Two Factor Authentication (2FA, OTP) :
336
  * Backup Codes
337
  * Sanitization and JS improvements
338
  * SMS and Email Sync
@@ -340,33 +366,33 @@ miniOrange authentication service has 15+ authentication methods.One time passco
340
  * Telegram based Two factor in Premium plugin
341
 
342
  = 5.4.21 =
343
- * Google Authenticator-Two Factor Authentication (2FA, SMS) :
344
  * Sanitization of some input values.
345
 
346
  = 5.4.20 =
347
- * Google Authenticator-Two Factor Authentication (2FA, SMS) :
348
  * Google Authenticator Qr code fix.
349
  * My theme login Login fix.
350
 
351
  = 5.4.19 =
352
- * Google Authenticator-Two Factor Authentication (2FA, OTP) : Google Authenticator cloud fix.
353
 
354
  = 5.4.18 =
355
- * Google Authenticator-Two Factor Authentication (2FA, OTP) :
356
  *Added missing file
357
 
358
  = 5.4.17 =
359
- * Google Authenticator-Two Factor Authentication (2FA, OTP) :
360
  *Digimember Form Support
361
  *Memberpress Form Support
362
  *SMS Verification Support
363
  *OTP Verification on Woocommerce Registration
364
 
365
  = 5.4.16 =
366
- * Google Authenticator-Two Factor Authentication (2FA, OTP) : Quick form fix.
367
 
368
  = 5.4.15 =
369
- * Google Authenticator-Two Factor Authentication (2FA, OTP) :
370
  * Theme My Login plugin Support
371
  * Ultimate Memember Registration Support
372
  * Woocommerce Registration Support
@@ -374,407 +400,407 @@ miniOrange authentication service has 15+ authentication methods.One time passco
374
  * Restrict Content Pro Login and Registration
375
 
376
  = 5.4.14 =
377
- * Google Authenticator-Two Factor Authentication (2FA, OTP) : Performance improvement with fixes in Security Questions. And User Email verification and Phone Verification issues resolved.
378
 
379
  = 5.4.13 =
380
- * Google Authenticator-Two Factor Authentication (2FA, MFA) : Support Form Improvement.
381
 
382
  = 5.4.11 =
383
- * Google Authenticator-Two Factor Authentication (2FA, TFA) : Feedback Issue fix.
384
 
385
  = 5.4.9 =
386
- * Google Authenticator-Two Factor Authentication (2FA, MFA) : User Experience, new support form and Security disabled by default. Added New Methods for users to choose.
387
 
388
  = 5.4.8 =
389
- * Google Authenticator-Two Factor Authentication (2FA, TFA) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
390
  = 5.4.7 =
391
- * Google Authenticator-Two Factor Authentication (2FA) : Fixing warnings and adding minor changes in the plans.
392
 
393
  = 5.4.6 =
394
- * Google Authenticator-Two Factor Authentication (2FA) : Improving Google Authenticator and adding Payment options.
395
 
396
  = 5.4.5 =
397
- * Google Authenticator-Two Factor Authentication (2FA) : Security and MFA UI updates.
398
 
399
  = 5.4.4 =
400
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor : Woocommerce login page integration.
401
 
402
  = 5.4.3 =
403
- * Google Authenticator-Two Factor Authentication (2FA , Two Factor) : Session issue fix for customers using Two Factor.
404
 
405
  = 5.4.2 =
406
- * Google Authenticator-Two Factor Authentication (2FA) : Warning for cloud customer moving to on-premise Two factor.
407
 
408
  = 5.4.1 =
409
- * Google Authenticator-Two Factor Authentication (2FA) : Headers sent issue is security firewall.
410
 
411
  = 5.4.0 =
412
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor FAQ Fix and OTP code convinence.
413
 
414
  = 5.3.26 =
415
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor On-premise FAQ update.
416
 
417
  = 5.3.25 =
418
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor On-premise support form.
419
 
420
  = 5.3.24 =
421
- * Google Authenticator-Two Factor Authentication (2FA) : On-premise two factor released with multiple users support for some authentication methods.
422
 
423
  = 5.3.23 =
424
- * Google Authenticator-Two Factor Authentication (2FA) : Scanner : Timing and caching issue fix.
425
  * Disable 2fa on Woocommerce login.
426
  * Login with Username only fix.
427
 
428
  = 5.3.22 =
429
- * Google Authenticator-Two Factor Authentication (2FA) : Antivirus : Fixing Cache issues and adding nonce.
430
 
431
  = 5.3.21 =
432
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor : Choice between Two factor and Security.
433
 
434
  = 5.3.20 =
435
- * Google Authenticator-Two Factor Authentication (2FA) : Anti Malware : Fixing issue faced by users during scan.
436
 
437
  = 5.3.19 =
438
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Giving users choice of two factor.
439
 
440
  = 5.3.18 =
441
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Virus and Firewall : Fix Scan.
442
 
443
  = 5.3.17 =
444
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Virus : Improved Stop Scan.
445
 
446
  = 5.3.16 =
447
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Virus : Stop Scan.
448
 
449
  = 5.3.15 =
450
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Malware : schedule scan.
451
 
452
  = 5.3.14 =
453
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Malware : Adding more signatures.
454
 
455
  = 5.3.13 =
456
- * Google Authenticator-Two Factor Authentication (2FA) : Security : fix UI Issue and improving 2fa.
457
 
458
  = 5.3.12 =
459
- * Google Authenticator-Two Factor Authentication (2FA) : Security : backup table fix.
460
 
461
  = 5.3.11 =
462
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Limiting Firewall, Malware, backup and login security for users not needing it.
463
 
464
  = 5.3.10 =
465
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Moved to Old WAF version minor issues.
466
 
467
  = 5.3.9 =
468
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Web application Firewall Sql Injections report and monitoring.
469
 
470
 
471
  = 5.3.8 =
472
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Malware Scanner Fix.
473
 
474
  = 5.3.7 =
475
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Two factor login with username fix.
476
 
477
  = 5.3.6 =
478
- * Google Authenticator-Two Factor Authentication (2FA) : Anti virus zip file fix.
479
 
480
  = 5.3.5 =
481
- * Google Authenticator-Two Factor Authentication (2FA) : Backup URL Fix and space issue in google authenticator.
482
 
483
  = 5.3.4 =
484
- * Google Authenticator-Two Factor Authentication (2FA) : CSS fix for Malware Scanner, Security and firewall.
485
 
486
  = 5.3.3 =
487
- * Google Authenticator-Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
488
 
489
  = 5.3.2 =
490
- * Google Authenticator-Two Factor Authentication (2FA) : File Changes.
491
 
492
  = 5.3.1 =
493
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix.
494
 
495
  = 5.3.0 =
496
- * Google Authenticator-Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
497
 
498
  = 5.2.6 =
499
- * Google Authenticator-Two Factor Authentication (2FA) : Fixed conflict and filter issues.
500
 
501
  = 5.2.5 =
502
- * Google Authenticator-Two Factor Authentication (2FA) : Some warnings in remote post.
503
 
504
  = 5.2.4 =
505
- * Google Authenticator-Two Factor Authentication (2FA) : Removed curl calls and unncessary files.
506
 
507
  = 5.2.3 =
508
- * Google Authenticator-Two Factor Authentication (2FA) : Fix for some users facing issues in api calls.
509
 
510
  = 5.2.2 =
511
- * Google Authenticator-Two Factor Authentication (2FA) : Adding File Protection and Strong Password feature.
512
 
513
  = 5.2.1 =
514
- * Google Authenticator-Two Factor Authentication (2FA) : UI changes for description.
515
 
516
  = 5.2.0 =
517
- * Google Authenticator-Two Factor Authentication (2FA) : UI changes with more description.
518
 
519
  = 5.1.22 =
520
- * Google Authenticator-Two Factor Authentication (2FA) : UI Fixes.
521
 
522
  = 5.1.21 =
523
- * Google Authenticator-Two Factor Authentication (2FA) : Login Redirect.
524
 
525
  = 5.1.20 =
526
- * Google Authenticator-Two Factor Authentication (2FA) : Minor Bug fix.
527
 
528
  = 5.1.19 =
529
- * Google Authenticator-Two Factor Authentication (2FA) : Adding basic Security Features Monitorning, IP blocking and login transaction report.
530
 
531
  = 5.1.18 =
532
- * Google Authenticator-Two Factor Authentication (2FA) : Object access error for lower PHP versions.
533
 
534
  = 5.1.17 =
535
- * Google Authenticator-Two Factor Authentication (2FA) : Minor Bug fix and Documentation changes.
536
 
537
  = 5.1.16 =
538
- * Google Authenticator-Two Factor Authentication (2FA) : Login redirect fix.
539
 
540
  = 5.1.15 =
541
- * Google Authenticator-Two Factor Authentication (2FA) : UI Fixes.
542
 
543
  = 5.1.14 =
544
- * Google Authenticator-Two Factor Authentication (2FA) : Database Error Fix and Custom Redirect.
545
 
546
  = 5.1.12 =
547
- * Google Authenticator-Two Factor Authentication (2FA) : Removing redundant code.
548
 
549
  = 5.1.11 =
550
- * Google Authenticator-Two Factor Authentication (2FA) : Password Pattern Fix.
551
 
552
  = 5.1.10 =
553
- * Google Authenticator-Two Factor Authentication (2FA) : Javascript Error fixes.
554
 
555
  = 5.1.9 =
556
- * Google Authenticator-Two Factor Authentication (2FA) : Added visual tour and security fixes.
557
 
558
  = 5.1.8 =
559
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix for Validation.
560
 
561
  = 5.1.7 =
562
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix for DB error after Update.
563
 
564
  = 5.1.6 =
565
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix for DB error.
566
 
567
  = 5.1.5 =
568
- * Google Authenticator-Two Factor Authentication (2FA) : UI changes.
569
 
570
  = 5.1.4 =
571
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fixes for redirect to login page issues.
572
 
573
  = 5.1.3 =
574
- * Google Authenticator-Two Factor Authentication (2FA) : Minor bug fixes.
575
 
576
  = 5.1.2 =
577
- * Google Authenticator-Two Factor Authentication (2FA) : Changes in registration flow.
578
 
579
  = 5.1.1 =
580
- * Google Authenticator-Two Factor Authentication (2FA) : Minor changes.
581
 
582
  = 5.1.0 =
583
- * Google Authenticator-Two Factor Authentication (2FA) : Added new user plans.
584
 
585
  = 5.0.17 =
586
- * Google Authenticator-Two Factor Authentication (2FA) : Minor Bug fix.
587
 
588
  = 5.0.16 =
589
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fixes.
590
 
591
  = 5.0.15 =
592
- * Google Authenticator-Two Factor Authentication (2FA) : Added Google Authenticator option in the WP login page itself.
593
 
594
  = 5.0.14 =
595
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fixs.
596
 
597
  = 5.0.13 =
598
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fix and code optimization.
599
 
600
  = 5.0.12 =
601
- * Google Authenticator-Two Factor Authentication (2FA) : Added GDPR Compliance.
602
 
603
  = 5.0.11 =
604
- * Google Authenticator-Two Factor Authentication (2FA) : Readme Update.
605
 
606
  = 5.0.10 =
607
- * Google Authenticator-Two Factor Authentication (2FA) : Added Proxy Setup feature.
608
 
609
  = 5.0.9 =
610
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fix for "The loopback request to your site failed." error.
611
 
612
  = 5.0.8 =
613
- * Google Authenticator-Two Factor Authentication (2FA) : Changes for 2FA Free plugin for 1 user forever.
614
 
615
  = 5.0.7 =
616
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fix for User Registration and other plugin conflicts in Dashboard.
617
 
618
  = 5.0.6 =
619
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fix for existing customers who upgraded from 4.5.x version to versions between 5.0.0 and 5.0.4 and are facing issues with the Account Setup Tab.
620
 
621
  = 5.0.5 =
622
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix for user entry during plugin update.
623
 
624
  = 5.0.4 =
625
- * Google Authenticator-Two Factor Authentication (2FA) : Workaround for errors during sending of OTP during registration.
626
 
627
  = 5.0.3 =
628
- * Google Authenticator-Two Factor Authentication (2FA) : Minor fix for removing warings.
629
 
630
  = 5.0.2 =
631
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix.
632
 
633
  = 5.0.1 =
634
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix.
635
 
636
  = 5.0.0 =
637
- * Google Authenticator-Two Factor Authentication (2FA) : New UI Interface, 2-factor authentication for Unlimited Users.
638
  * This is a major release.
639
 
640
  = 4.6.2 =
641
- * Google Authenticator-Two Factor Authentication (2FA) : Plugin registration fixes and minor warning fixes.
642
 
643
  = 4.6.1 =
644
- * Google Authenticator-Two Factor Authentication (2FA) : Login error fix. Please skip version 4.5.9 and update to version 4.6.1
645
 
646
  = 4.5.9 =
647
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fixes for customers who were getting redirected to the login page after the two factor authentication.
648
 
649
  = 4.5.8 =
650
- * Google Authenticator-Two Factor Authentication (2FA) : Tested upto 4.9.4 and Removed External links.
651
 
652
  = 4.5.7 =
653
- * Google Authenticator-Two Factor Authentication (2FA) : Minor bug fixes.
654
 
655
  = 4.5.6 =
656
- * Google Authenticator-Two Factor Authentication (2FA) : Tested upto Wordpress 4.9.
657
 
658
  = 4.5.5 =
659
- * Google Authenticator-Two Factor Authentication (2FA) : 404 bug fixes.
660
 
661
  = 4.5.4 =
662
- * Google Authenticator-Two Factor Authentication (2FA) : Better UI of Login Pages, Fixed Redirection issue. Fixed the error in the last version (4.5.3) for the customers who were getting undefined action error.
663
 
664
  = 4.5.3 =
665
- * Google Authenticator-Two Factor Authentication (2FA) : Changed UI of the Login Pages, Redirect to Login Page bug fixes.
666
 
667
  = 4.5.2 =
668
- * Google Authenticator-Two Factor Authentication (2FA) : Readme Update: Description Update
669
 
670
  = 4.5.1 =
671
- * Google Authenticator-Two Factor Authentication (2FA) : Updated the new Authenticator App's link and the 'How to Setup Tab' tab.
672
 
673
  = 4.5.0 =
674
- * Google Authenticator-Two Factor Authentication (2FA) : Fix Google Authenticator configuration issue.
675
 
676
  = 4.4.9 =
677
- * Google Authenticator-Two Factor Authentication (2FA) : Added Alert Message for SMS Transactions only when authentication method is OTP over SMS.
678
 
679
  = 4.4.8 =
680
- * Google Authenticator-Two Factor Authentication (2FA) : Added Alert Message for SMS Transactions. Fixed Remember Device flow and confliction with themes. Added support for multiple instances of wordpress.
681
 
682
  = 4.4.7 =
683
- * Google Authenticator-Two Factor Authentication (2FA) : Updated the error message for 2-factor configuration.
684
 
685
  = 4.4.6 =
686
- * Google Authenticator-Two Factor Authentication (2FA) : Instructions for login in case user get locked out.
687
 
688
 
689
  = 4.4.5 =
690
- * Google Authenticator-Two Factor Authentication (2FA) : Fixed the issue of session variable on the login with username page.
691
 
692
  = 4.4.4 =
693
- * Google Authenticator-Two Factor Authentication (2FA) : Added alert messages for OTP over SMS usages.
694
 
695
  = 4.4.3 =
696
- * Google Authenticator-Two Factor Authentication (2FA) : Fixed the login flow for third party Apps that supports XML-RPC.
697
 
698
  = 4.4 =
699
- * Google Authenticator-Two Factor Authentication (2FA):
700
  * Compatibility with Limit Login Attempts.
701
  * New User Interface for login.
702
 
703
  = 4.3.1 =
704
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Compatible upto 4.7
705
 
706
  = 4.3.0 =
707
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Updated miniOrange APIs.
708
 
709
  = 4.2.9 =
710
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Tested upto WordPress 4.6.
711
 
712
  = 4.2.7 =
713
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Session Warnig fix in the last version for some of the users.
714
 
715
  = 4.2.6 =
716
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Compatible with wordpress caching.
717
 
718
  = 4.2.5 =
719
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Improved the session handler.
720
 
721
  = 4.2.4 =
722
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Updated faq for limit login attempt type of plugins.
723
 
724
  = 4.2.3 =
725
- * Google Authenticator-Two Factor Authentication ( 2FA ):
726
  * Improved Error handling during Account Creation.
727
 
728
  = 4.2.2 =
729
- * Google Authenticator-Two Factor Authentication ( 2FA ):
730
  * Registration Flow fixes
731
 
732
  = 4.2.1 =
733
- * Google Authenticator-Two Factor Authentication ( 2FA ):
734
  * Change of status during login with phone flow and tested with WP 4.5
735
 
736
  = 4.2.0 =
737
- * Google Authenticator-Two Factor Authentication ( 2FA ):
738
  * Mark as tested on Wordpress 4.5
739
 
740
  = 4.1.8 =
741
- * Google Authenticator-Two Factor Authentication ( 2FA ):
742
  * Changed the location of images used for demo. Now being loaded from the site having SSL certificate.
743
 
744
  = 4.1.7 =
745
- * Google Authenticator-Two Factor Authentication ( 2FA ):
746
  * Improved Error Handling for Remember Device.
747
 
748
  = 4.1.6 =
749
- * Google Authenticator-Two Factor Authentication ( 2FA ):
750
  * Licensing Plan Updated.
751
 
752
  = 4.1.5 =
753
- * Google Authenticator-Two Factor Authentication ( 2FA ):
754
  * Added Forgot Password functionality for miniOrange customer admin.
755
  * Added warning message for the users who are using lower version of php.
756
  * Added functionlity to change the customer email.
757
 
758
  = 4.1.4 =
759
- * Google Authenticator-Two Factor Authentication ( 2FA ):
760
  * Added an option for admin to enable or disable login for XML-RPC supported applications.
761
 
762
  = 4.1.3 =
763
- * Google Authenticator-Two Factor Authentication ( 2FA ):
764
  * Fixed CSS Conflict with the plugins in the admin dashboard.
765
  * More intuitive UI for woocommerce login.
766
  * Tested front-end login with themes like wordpress default theme,
767
  customizr theme,zerif-lite theme,accesspress store theme,ishop theme and many more.
768
 
769
  = 4.1.2 =
770
- * Google Authenticator-Two Factor Authentication ( 2FA ): Google Authenticator for Windows phone
771
  * Fixed CSS conflict with front-end of site if woocommerce is not enabled.
772
 
773
  = 4.1.1 =
774
- * Google Authenticator-Two Factor Authentication ( 2FA ): Adding Validation in choosing Security Questions (KBA).
775
 
776
  = 4.1.0 =
777
- * Google Authenticator-Two Factor Authentication ( 2FA ): Features added.
778
  multisite support
779
  Custom login redirection
780
  Authy 2-Factor Authentication as separate authentication method
@@ -883,8 +909,16 @@ More descriptive setup messages and UI changes.
883
 
884
  == Upgrade Notice ==
885
 
 
 
 
 
 
 
 
 
886
  = 5.4.22 =
887
- * Google Authenticator-Two Factor Authentication (2FA, OTP) :
888
  * Backup Codes
889
  * Sanitization and JS improvements
890
  * SMS and Email Sync
@@ -892,33 +926,33 @@ More descriptive setup messages and UI changes.
892
  * Telegram based Two factor in Premium plugin
893
 
894
  = 5.4.21 =
895
- * Google Authenticator-Two Factor Authentication (2FA, SMS) :
896
  * Sanitization of some input values.
897
 
898
  = 5.4.20 =
899
- * Google Authenticator-Two Factor Authentication (2FA, SMS) :
900
  * Google Authenticator Qr code fix.
901
  * My theme login Login fix.
902
 
903
  = 5.4.19 =
904
- * Google Authenticator-Two Factor Authentication (2FA, OTP) : Google Authenticator cloud fix.
905
 
906
  = 5.4.18 =
907
- * Google Authenticator-Two Factor Authentication (2FA, OTP) :
908
  * Added missing file
909
 
910
  = 5.4.17 =
911
- * Google Authenticator-Two Factor Authentication (2FA, OTP) :
912
  *Digimember Form Support
913
  *Memberpress Form Support
914
  *SMS Verification Support
915
  *OTP Verification on Woocommerce Registration
916
 
917
  = 5.4.16 =
918
- * Google Authenticator-Two Factor Authentication (2FA, OTP) : Quick form fix.
919
 
920
  = 5.4.15 =
921
- * Google Authenticator-Two Factor Authentication (2FA, OTP) :
922
  * Theme My Login plugin Support
923
  * Ultimate Memember Registration Support
924
  * Woocommerce Registration Support
@@ -926,323 +960,323 @@ More descriptive setup messages and UI changes.
926
  * Restrict Content Pro Login and Registration
927
 
928
  = 5.4.14 =
929
- * Google Authenticator-Two Factor Authentication (2FA, MFA) : Performance improvement with fixes in Security Questions. And User Email verification and Phone Verification issues resolved.
930
 
931
  = 5.4.13 =
932
- * Google Authenticator-Two Factor Authentication (2FA, TFA) : Support Form Improvement.
933
 
934
  = 5.4.11 =
935
- * Google Authenticator-Two Factor Authentication (2FA, MFA) : Feedback Issue fix.
936
 
937
  = 5.4.9 =
938
- * Google Authenticator-Two Factor Authentication (2FA, TFA) : User Experience, new support form and Security disabled by default. Added New Methods for users to choose.
939
 
940
  = 5.4.8 =
941
- * Google Authenticator-Two Factor Authentication (2FA, OTP Verification) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
942
 
943
  = 5.4.7 =
944
- * Google Authenticator-Two Factor Authentication (2FA, SMS Verification) : Fixing warnings and adding minor changes in the plans.
945
 
946
  = 5.4.6 =
947
- * Google Authenticator-Two Factor Authentication (2FA) : Improving Google Authenticator and adding Payment options.
948
 
949
  = 5.4.5 =
950
- * Google Authenticator-Two Factor Authentication (2FA) : Security and MFA UI updates.
951
 
952
  = 5.4.4 =
953
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor : Woocommerce login page integration.
954
 
955
  = 5.4.3 =
956
- * Google Authenticator-Two Factor Authentication (2FA) : Session issue fix for customers using Two Factor.
957
 
958
  = 5.4.2 =
959
- * Google Authenticator-Two Factor Authentication (2FA) : Warning for cloud customer moving to on-premise Two factor
960
 
961
  = 5.4.0 =
962
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor FAQ Fix and OTP code convinence.
963
 
964
  = 5.3.26 =
965
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor On-premise FAQ update.
966
 
967
  = 5.3.25 =
968
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor On-premise support form.
969
 
970
  = 5.3.24 =
971
- * Google Authenticator-Two Factor Authentication (2FA) : On-premise two factor released with multiple user support for some authentication methods.
972
 
973
  = 5.3.23 =
974
- * Google Authenticator-Two Factor Authentication (2FA) : Scanner : Timing and caching issue fix.
975
  * Disable 2fa on Woocommerce login.
976
  * Login with Username only fix.
977
 
978
  = 5.3.22 =
979
- * Google Authenticator-Two Factor Authentication (2FA) : Antivirus : Fixing Cache issues and adding nonce.
980
 
981
  = 5.3.21 =
982
- * Google Authenticator-Two Factor Authentication (2FA) : Two Factor : Choice between Two factor and Security.
983
 
984
  = 5.3.20 =
985
- * Google Authenticator-Two Factor Authentication (2FA) : Anti Malware : Fixing issue faced by users during scan.
986
 
987
  = 5.3.19 =
988
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Giving users choice of two factor.
989
 
990
  = 5.3.18 =
991
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Virus and Firewall : Fix Scan.
992
 
993
  = 5.3.17 =
994
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Virus : Improved Stop Scan.
995
 
996
  = 5.3.16 =
997
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Virus : Stop Scan.
998
 
999
  = 5.3.15 =
1000
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Malware : schedule scan.
1001
 
1002
  = 5.3.14 =
1003
- * Google Authenticator-Two Factor Authentication (2FA) : Anti-Malware : Adding more signatures.
1004
 
1005
  = 5.3.13 =
1006
- * Google Authenticator-Two Factor Authentication (2FA) : Security : fix UI Issue and improving 2fa.
1007
 
1008
  = 5.3.12 =
1009
- * Google Authenticator-Two Factor Authentication (2FA) : Security : backup table fix.
1010
 
1011
  = 5.3.11 =
1012
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Limiting Firewall, Malware, backup and login security for users not needing it.
1013
 
1014
  = 5.3.10 =
1015
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Moved to Old WAF version minor issues..
1016
 
1017
  = 5.3.9 =
1018
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Web application Firewall Sql Injections report and monitoring.
1019
 
1020
 
1021
  = 5.3.8 =
1022
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Malware Scanner Fix.
1023
 
1024
  = 5.3.7 =
1025
- * Google Authenticator-Two Factor Authentication (2FA) : Security : Two factor login with username fix.
1026
 
1027
  = 5.3.6 =
1028
- * Google Authenticator-Two Factor Authentication (2FA) : Anti virus zip file fix.
1029
 
1030
  = 5.3.5 =
1031
- * Google Authenticator-Two Factor Authentication (2FA) : Backup URL Fix and space issue in google authenticator.
1032
 
1033
  = 5.3.4 =
1034
- * Google Authenticator-Two Factor Authentication (2FA) : CSS fix for Malware Scanner, Security and firewall.
1035
 
1036
  = 5.3.3 =
1037
- * Google Authenticator-Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
1038
 
1039
  = 5.3.2 =
1040
- * Google Authenticator-Two Factor Authentication (2FA) : File Changes.
1041
 
1042
  = 5.3.1 =
1043
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix.
1044
 
1045
  = 5.3.0 =
1046
- * Google Authenticator-Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
1047
 
1048
  = 5.2.6 =
1049
- * Google Authenticator-Two Factor Authentication (2FA) : Fixed conflict and filter issues.
1050
 
1051
  = 5.2.5 =
1052
- * Google Authenticator-Two Factor Authentication (2FA) : Some warnings in remote post.
1053
 
1054
  = 5.2.4 =
1055
- * Google Authenticator-Two Factor Authentication (2FA) : Removed curl calls and unncessary files.
1056
 
1057
  = 5.2.3 =
1058
- * Google Authenticator-Two Factor Authentication (2FA) : Fix for some users facing issues in api calls.
1059
 
1060
  = 5.2.2 =
1061
- * Google Authenticator-Two Factor Authentication (2FA) : Adding File Protection and Strong Password feature.
1062
 
1063
  = 5.2.1 =
1064
- * Google Authenticator-Two Factor Authentication (2FA) : UI changes for description.
1065
 
1066
  = 5.2.0 =
1067
- * Google Authenticator-Two Factor Authentication (2FA) : UI changes with more description.
1068
 
1069
  = 5.1.22 =
1070
- * Google Authenticator-Two Factor Authentication (2FA) : UI Fixes.
1071
 
1072
  = 5.1.21 =
1073
- * Google Authenticator-Two Factor Authentication (2FA) : Login Redirect.
1074
 
1075
  = 5.1.20 =
1076
- * Google Authenticator-Two Factor Authentication (2FA) : Minor Bug fix.
1077
 
1078
  = 5.1.19 =
1079
- * Google Authenticator-Two Factor Authentication (2FA) : Adding basic Security Features Monitorning, IP blocking and login transaction report.
1080
 
1081
  = 5.1.18 =
1082
- * Google Authenticator-Two Factor Authentication (2FA) : Object access error for lower PHP versions.
1083
 
1084
  = 5.1.17 =
1085
- * Google Authenticator-Two Factor Authentication (2FA) : Minor Bug fix and Documentation changes.
1086
 
1087
  = 5.1.16 =
1088
- * Google Authenticator-Two Factor Authentication (2FA) : Login redirect fix.
1089
 
1090
  = 5.1.15 =
1091
- * Google Authenticator-Two Factor Authentication (2FA) : UI Fixes.
1092
 
1093
  = 5.1.14 =
1094
- * Google Authenticator-Two Factor Authentication (2FA) : Database Error Fix and Custom Redirect.
1095
 
1096
  = 5.1.12 =
1097
- * Google Authenticator-Two Factor Authentication (2FA) : Removing redundant code.
1098
 
1099
  = 5.1.11 =
1100
- * Google Authenticator-Two Factor Authentication (2FA) : Password Pattern Fix.
1101
 
1102
  = 5.1.10 =
1103
- * Google Authenticator-Two Factor Authentication (2FA) : Javascript Error fixes.
1104
 
1105
  = 5.1.9 =
1106
- * Google Authenticator-Two Factor Authentication (2FA) : Added visual tour and security fixes.
1107
 
1108
  = 5.1.8 =
1109
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix for Validation.
1110
 
1111
  = 5.1.7 =
1112
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix for DB error after Update.
1113
 
1114
  = 5.1.6 =
1115
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix for DB error.
1116
 
1117
  = 5.1.5 =
1118
- * Google Authenticator-Two Factor Authentication (2FA) : UI changes.
1119
 
1120
  = 5.1.4 =
1121
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fixes for redirect to login page issues.
1122
 
1123
  = 5.1.3 =
1124
- * Google Authenticator-Two Factor Authentication (2FA) : Minor bug fixes.
1125
 
1126
  = 5.1.2 =
1127
- * Google Authenticator-Two Factor Authentication (2FA) : Changes in registration flow.
1128
 
1129
  = 5.1.1 =
1130
- * Google Authenticator-Two Factor Authentication (2FA) : Minor changes.
1131
 
1132
  = 5.1.0 =
1133
- * Google Authenticator-Two Factor Authentication (2FA) : Added new user plans
1134
 
1135
  = 5.0.17 =
1136
- * Google Authenticator-Two Factor Authentication (2FA) : Minor Bug fix.
1137
 
1138
  = 5.0.16 =
1139
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fixes.
1140
 
1141
  = 5.0.15 =
1142
- * Google Authenticator-Two Factor Authentication (2FA) : Added Google Authenticator option in the WP login page itself.
1143
 
1144
  = 5.0.14 =
1145
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fixs.
1146
 
1147
  = 5.0.13 =
1148
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fix and code optimization.
1149
 
1150
  = 5.0.12 =
1151
- * Google Authenticator-Two Factor Authentication (2FA) : Added GDPR Compliance.
1152
 
1153
  = 5.0.11 =
1154
- * Google Authenticator-Two Factor Authentication (2FA) : Readme Update.
1155
 
1156
  = 5.0.10 =
1157
- * Google Authenticator-Two Factor Authentication (2FA) : Added Proxy Setup feature.
1158
 
1159
  = 5.0.9 =
1160
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fix for "The loopback request to your site failed." error.
1161
 
1162
  = 5.0.8 =
1163
- * Google Authenticator-Two Factor Authentication (2FA) : Changes for 2FA Free plugin for 1 user forever.
1164
 
1165
  = 5.0.7 =
1166
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fix for User Registration and other plugin conflicts in Dashboard.
1167
 
1168
  = 5.0.6 =
1169
- * Google Authenticator-Two Factor Authentication (2FA) : Bug Fix for existing customers who upgraded from 4.5.x version to versions between 5.0.0 and 5.0.4 and are facing issues with the Account Setup Tab.
1170
 
1171
  = 5.0.5 =
1172
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix for user entry during plugin update.
1173
 
1174
  = 5.0.4 =
1175
- * Google Authenticator-Two Factor Authentication (2FA) : Workaround for errors during sending of OTP during registration.
1176
 
1177
  = 5.0.3 =
1178
- * Google Authenticator-Two Factor Authentication (2FA) : Minor fix for removing warings.
1179
 
1180
  = 5.0.2 =
1181
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix.
1182
 
1183
  = 5.0.1 =
1184
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fix.
1185
 
1186
  = 5.0.0 =
1187
- * Google Authenticator-Two Factor Authentication (2FA) : New UI Interface, 2-factor authentication for Unlimited Users.
1188
  * This is a major release.
1189
 
1190
  = 4.6.2 =
1191
- * Google Authenticator-Two Factor Authentication (2FA) : Plugin registration fixes and minor warning fixes.
1192
 
1193
  = 4.6.1 =
1194
- * Google Authenticator-Two Factor Authentication (2FA) : Login error fix. Please skip version 4.5.9 and update to version 4.6.1
1195
 
1196
  = 4.5.9 =
1197
- * Google Authenticator-Two Factor Authentication (2FA) : Bug fixes for customers who were getting redirected to the login page after the two factor authentication.
1198
 
1199
  = 4.5.8 =
1200
- * Google Authenticator-Two Factor Authentication (2FA) : Tested upto 4.9.4 and Removed External links.
1201
 
1202
  = 4.5.7 =
1203
- * Google Authenticator-Two Factor Authentication (2FA) : Minor bug fixes.
1204
 
1205
  = 4.5.6 =
1206
- * Google Authenticator-Two Factor Authentication (2FA) : Tested upto Wordpress 4.9.
1207
 
1208
  = 4.5.5 =
1209
- * Google Authenticator-Two Factor Authentication (2FA) : 404 bug fixes.
1210
 
1211
  = 4.5.4 =
1212
- * Google Authenticator-Two Factor Authentication (2FA) : Better UI of Login Pages, Fixed Redirection issue. Fixed the error in the last version (4.5.3) for the customers who were getting undefined action error.
1213
 
1214
  = 4.4.3 =
1215
- * Google Authenticator-Two Factor Authentication (2FA) : Fixed the login flow for third party Apps that supports XML-RPC.
1216
 
1217
  = 4.4 =
1218
- * Google Authenticator-Two Factor Authentication (2FA):
1219
  * Note: This is very important update having altogether new UI and compatibility with Limit Login Attempts. After updating, please do not logout from your admin dashboard. Try to login from another browser and if you face any issue , please contact us at info@miniorange.com
1220
  * Compatibility with Limit Login Attempts.
1221
  * New User Interface for login.
1222
 
1223
  = 4.3.2 =
1224
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Revised licensing cost for users.
1225
 
1226
  = 4.3.1 =
1227
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Compatible upto 4.7
1228
 
1229
  = 4.3.0 =
1230
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Updated miniOrange APIs.
1231
 
1232
  = 4.2.9 =
1233
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Tested upto WordPress 4.6.
1234
 
1235
  = 4.2.7 =
1236
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Session Warnig fix in the last version for some of the users.
1237
 
1238
  = 4.2.6 =
1239
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Compatible with wordpress caching.
1240
 
1241
  = 4.2.5 =
1242
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Improved the session handler.
1243
 
1244
  = 4.2.4 =
1245
- * Google Authenticator-Two Factor Authentication (2FA, MFA): Updated faq for limit login attempt type of plugins.
1246
 
1247
  = 4.2.3 =
1248
  * Two Factor Authentication ( 2FA ):
1
  === Google Authenticator - WordPress Two Factor Authentication (2FA , MFA) ===
2
 
3
+ Contributors: cyberlord92, twofactor, hsn97
4
  Tags: google authenticator, two factor authentication, two factor, 2FA,two-step verification, mobile verification,OTP, two-step verification, mobile verification,two factor,Two step verification, 2FA, TFA, MFA, 2 factor authentication, Remember Device, OTP,WordPress otp, two step authentication,Clef,SMS, email, signup security, two factor auth, Mobile Authentication, strong authentication, 2 step authentication, mobile verification,Multifactor authentication, passwordless login, one time passcode, soft token Authentication, QR Code Authentication, email verification, KBA, Security Questions,2FA, login OTP, login with SMS, mobile login, phone login, OTP login, mobile verification,knowledge based authentication,authy, authy two factor,yubico,Two-Factor Authentication,WordPress otp, security,user security, ​Twilio WordPress, SMS gateway, Solutions Infini, Clickatell, BulkSMS, MSG91, Nexmo, SMS Country, message, woocommerce, website security, login security, multi factor authentication, multi factor,wordfence, IP Blocking, IP Whitelisting, login Audits, woocommerce, SMS login, passwordless login, auth, login with OTP WordPress, OTP, two-step authentication, Mobile Authentication,passwordless login, one time passcode, email verification, security, website security, login security, multi-factor authentication,, woocommerce, smartphone,WordPress otp, register with OTP, user OTP verification, SMS OTP, OTP Email, registration with OTP verification, registration verification,smartphone authentication
5
  Donate link: https://miniorange.com/
6
  Requires at least: 3.0.1
7
  Tested up to: 5.5
8
  Requires PHP: 5.3.0
9
+ Stable tag: 5.4.23
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
13
+ Google Authenticator, OTP verificaion - SMS and Email, Apps like Microsoft, Duo, LastPass & more on login and Registration for all forms. Google AUthenticator also Supports QR Code, Push Notification and Security Questions along with the Google Authenticator itself.
14
 
15
  == Description ==
16
 
17
+ Google Authenticator - Two Factor Authentication (2FA) plugin provides a completely Secure login to your WordPress website. Google Authenticator- Two Factor Authentication (2FA) is a FREE, Simple & very easy to setup plugin. Google Authenticator provides two factor authentication (2FA, MFA) whenever login to your WordPress website ensuring no unauthorised access to your website. Google Authenticator can be configured for any TOTP based Authentication Method.
18
 
19
  = User Identity Verification or OTP Verification =
20
+ Login and Registration: Verify users on login and Registration with different authentication methods like Google Authenticator, SMS Verification, Email, Authy Authenticator, Duo Authenticator, Microsoft Authenticator, TOTP Based Authenticator, Security Questions and many others. Easy OTP Verification with SMS Verification and Email Verification.
21
+
22
+ = Google Authenticator and other 2FA sync on multiple websites =
23
+ You would not need to configure Google Authenticator and other 2FA methods from second site onword. Just login with miniOrange account and your 2FA will automatically get set. This is available for Google Authenticator, Duo Authenticator, Microsoft Authenticator, Securty Questions, LastPass, Authy, miniOrange methods, OTP over SMS, OTP over Email. It is supported only if you are using our cloud services.
24
+
25
+ == Plugin Integrations and Support ==
26
+ * [Woocommerce](https://wordpress.org/plugins/woocommerce/) (Login Woocommerce using Google Authenticator - Two Factor Authentication (2FA))
27
+ * [BuddyPress form](https://wordpress.org/plugins/buddypress/) (Login BuddyPress using Google Authenticator - Two Factor Authentication (2FA))
28
+ * [bbpress form](https://wordpress.org/plugins/bbpress/) (Login bbpress using Google Authenticator - Two Factor Authentication (2FA))
29
+ * [Digimember](https://digimember.com/) (Login Digimember using Google Authenticator - Two Factor Authentication (2FA))
30
+ * [Paid Memberships Pro](https://wordpress.org/plugins/paid-memberships-pro/) (Login Paid Memberships Pro using Google Authenticator - Two Factor Authentication (2FA))
31
+ * [Memberpress Pro](https://memberpress.com/) (Login Memberpress Pro using Google Authenticator - Two Factor Authentication (2FA))
32
+ * [Ultimate Member – User Profile & Membership Form](https://wordpress.org/plugins/ultimate-member/) (Login Ultimate Member – User Profile & Membership using Google Authenticator - Two Factor Authentication (2FA))
33
+ * [LearnDash](https://www.learndash.com/) (Login LearnDash using Google Authenticator - Two Factor Authentication (2FA))
34
+ * [LearnPress](https://wordpress.org/plugins/learnpress/) (Login LearnPress using Google Authenticator - Two Factor Authentication (2FA))
35
+ * [LifterLMS](https://wordpress.org/plugins/lifterlms/) (Login LifterLMS using Google Authenticator - Two Factor Authentication (2FA))
36
+ * [Dokan](https://wordpress.org/plugins/dokan-lite/) (Login Dokan using Google Authenticator - Two Factor Authentication (2FA))
37
+ * And many more
38
+
39
+ == WordPress login and registration forms support and integration ==
40
+ * [Restrict Content Pro Form](https://wordpress.org/plugins/restrict-content/) (Register and Login Restrict Content Pro using Google Authenticator - Two Factor Authentication (2FA))
41
+ * [My theme Login Form](https://wordpress.org/plugins/theme-my-login/) (Login My theme Login using Google Authenticator - Two Factor Authentication (2FA))
42
+ * [User Registration – Custom Registration Form](https://wordpress.org/plugins/bbpress/) (Register and Login User Registration – Custom Registration using Google Authenticator - Two Factor Authentication (2FA))
43
+ * [Custom Login Page Customizer Form](https://wordpress.org/plugins/loginpress/) (Login Custom Login Page Customizer using Google Authenticator - Two Factor Authentication (2FA))
44
+ * [Admin Custom Login Form](https://wordpress.org/plugins/admin-custom-login/) (Login Admin Custom Login using Google Authenticator - Two Factor Authentication (2FA))
45
+ * [RegistrationMagic – Custom Registration Forms](https://wordpress.org/plugins/custom-registration-form-builder-with-submission-manager/) (Register and Login RegistrationMagic – Custom Registration using Google Authenticator - Two Factor Authentication (2FA))
46
+ * And many more
47
 
48
  = Third Party Custom SMS Gateway =
49
  Premium plugin supports any third party custom SMS Gateway. If you don't have your own SMS gateway you can use miniOrange gateway. Send SMS all over the world.
50
  * Some Famous Gateways Supported:
51
+ * Twilio : [Twilio](https://www.twilio.com/)
52
+ * Clickatell : [Clickatell](https://www.clickatell.com/)
53
+ * ClickSend : [ClickSend](https://www.clicksend.com/)
54
+ * SendGrid : [SendGrid](https://sendgrid.com/)
55
+ * Plivo : [Plivo](https://www.plivo.com/)
56
+ * GatewayApi : [GatewayApi](https://gatewayapi.com/)
57
 
58
  Others not listed gateway can be tested on our site, Test your Gateway: [Custom Gateway](https://login.xecurify.com/moas/login?redirectUrl=https://login.xecurify.com/moas/admin/customer/smsconfig)
59
 
60
  = All Registartion Forms Supported =
61
+ OTP Verification on all the Registration and Google Authenticator, Security Questions, Prevent Account Sharing, Push Notifications on all the Login forms to verify users. Use this shortcode for Registration([mo2f_enable_register]). Settings in <b>Two Factor -> Registration Forms</b>.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
 
63
 
64
  = FREE Plugin Features =
65
+ * Simplified & easy user interface to setup Google Authenticator and other 2FA methods.
66
+ * Google Authenticator - Two Factor Authentication (2FA) for **3 User** forever FREE!
67
+ * **Variety of Authentication Methods:** Any App supporting TOTP algorithm like Google Authenticator, Authy Authenticator, LastPass Authenticator, Microsoft Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA)
68
  * Includes Language Translation Support. Supports a wide variety of languages
69
+ * Passwordless login or login with phone number, supported for Google Authenticator and other 2FA methods.
70
+ * This plugin Supports standard TOTP + HOTP protocols for Authentication Methods. Any TOTP protocol based authenticator app can be configured using Google Authenticator option in the plugin.
71
  * Two Factor Authentication (2FA) allows authentication on login page itself for Google Authenticator & miniOrange Soft Token.
72
  * Brute force attack prevention & IP Blocking.
73
  * User login Monitorning.
74
  * RCP Login and Registration Suppport
75
  * OTP Verification of Ulimate Member Registartion form
76
+ * Recovery codes in case you are locked out.
77
 
78
  = Standard Plugin Features =
79
 
80
+ * Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
81
+ * **Available Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification. *( SMS credits need to be purchased as per the need)*
82
  * Includes language Translation Support. Supports wide variety of languages.
83
  * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login. [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
84
  * **Backup Method:** KBA(Security Questions)
88
 
89
  = Premium Plugin Features =
90
 
91
+ * Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
92
+ * **Available Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification, Hardware Token, Whatsapp based 2fa(Add-on), Telegram Based 2fa. *( SMS and Email credits need to be purchased as per the need)*
93
  * Language Translation Support
94
  * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
95
  * **Backup Methods:** KBA(Security Questions), OTP Over Email, Backup Codes [Guide](https://docs.miniorange.com/documentation/want-configure-backup-methods-users-can-configure-case-locked-site-not-able-log)
97
  * Force Two factor for users [Guide](https://docs.miniorange.com/documentation/enforce-2fa-users)
98
  * Email notification to users asking them to set up Two Factor Authentication (2FA) [Guide](https://docs.miniorange.com/documentation/want-send-email-notification-users-setting-2-factor)
99
  * User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions), Customize account name in Google Authenticator app [Guide](https://docs.miniorange.com/documentation/google-authenticator-app-name).
100
+ * Enable Google Authenticator - Two Factor Authentication (2FA) for specific Users/User Roles [Guide](https://docs.miniorange.com/documentation/enable-two-factor-based-roles)
101
  * Choose specific authentication methods for Users [Guide](https://docs.miniorange.com/documentation/specific-set-authentication-methods-based-role)
102
  * Set Privacy Policy for users [Guide](https://docs.miniorange.com/documentation/privacy-policy-site)
103
  * App Specific Password to login from mobile Apps
106
 
107
  = Enterprise Plugin Features =
108
 
109
+ * Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
110
+ * **Available Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification, Hardware Token. *( SMS and Email credits need to be purchased as per the need)*
111
  * Language Translation Support
112
  * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login.
113
  * **Backup Methods:** KBA(Security Questions), OTP Over Email, Backup Codes
114
  * Multisite compatible.
115
+ * Email notification to users asking them to set up Google Authenticator - Two Factor Authentication (2FA).
116
  * User role based redirection after Login, Custom Security Questions (KBA), Customize account name in Google Authenticator app.
117
  * Enable Two Factor Authentication (2FA) for specific Users/User Roles
118
  * Choose specific authentication methods for Users
122
  * File protection & strong password
123
 
124
 
125
+ == Prevent Account Sharing Between Users ==
126
  Many video sharing and E-learning platforms want to prevent sharing of account between the users. This can be done using miniOrange Two factor plugin. Also, e-learning portals can use this to their advantage. It can be used on any websites which create and sell courses. It can be integrated with plugins like Learndash.
127
  Other sites like premium video content or any premium content where you want users not to share passwords between friends and Family then you can go for this solution.
128
 
176
  * On-Demand ShortCodes for specific functionalities ( like for enabling 2FA for specific pages)
177
 
178
  = Apps Supported by the plugin =
179
+ * Google Authenticator
180
+ * miniOrange Authenticator
181
+ * Duo Authenticator
182
+ * Microsoft Authenticator
183
+ * Authy 2-Factor Authenticator
184
+ * LastPass Authenticator
185
+ * FreeOTP Authenticator
186
 
187
  <h4>Useful blog posts about two factor authenticaion plugin </h4>
188
  *[Beginner’s Guide: How to Add Two-Factor Authentication to WordPress](https://themeisle.com/blog/how-to-add-two-factor-authentication-to-wordpress/)
338
 
339
  == Screenshots ==
340
 
341
+ 1. Google Authenticator (2FA) - Setup different 2-Factor methods
342
+ 2. Google Authenticator (2FA) - Test 2 factor configured
343
+ 3. Google Authenticator (2FA) - 2 Factor Authentication methods available
344
+ 4. Google Authenticator (2FA) - Google Authenticator login
345
+ 5. Google Authenticator (2FA) - QR code 2 Factor login
346
+ 6. Google Authenticator (2FA) - miniOrange Authenticator login
347
+ 7. Google Authenticator (2FA) - Push notification login
348
+ 8. Google Authenticator (2FA) - Remember device and personalization add-ons
349
 
350
  == Changelog ==
351
 
352
+ = 5.4.23 =
353
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
354
+ * Call support with technical team
355
+ * Email and SMS transaction sync
356
+ * Feedback form on network deactivate
357
+ * Enable/Disable 2FA fix
358
+ * 2FA added for superadmin role
359
+
360
  = 5.4.22 =
361
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
362
  * Backup Codes
363
  * Sanitization and JS improvements
364
  * SMS and Email Sync
366
  * Telegram based Two factor in Premium plugin
367
 
368
  = 5.4.21 =
369
+ * Google Authenticator - Two Factor Authentication (2FA, SMS) :
370
  * Sanitization of some input values.
371
 
372
  = 5.4.20 =
373
+ * Google Authenticator - Two Factor Authentication (2FA, SMS) :
374
  * Google Authenticator Qr code fix.
375
  * My theme login Login fix.
376
 
377
  = 5.4.19 =
378
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) : Google Authenticator cloud fix.
379
 
380
  = 5.4.18 =
381
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
382
  *Added missing file
383
 
384
  = 5.4.17 =
385
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
386
  *Digimember Form Support
387
  *Memberpress Form Support
388
  *SMS Verification Support
389
  *OTP Verification on Woocommerce Registration
390
 
391
  = 5.4.16 =
392
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) : Quick form fix.
393
 
394
  = 5.4.15 =
395
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
396
  * Theme My Login plugin Support
397
  * Ultimate Memember Registration Support
398
  * Woocommerce Registration Support
400
  * Restrict Content Pro Login and Registration
401
 
402
  = 5.4.14 =
403
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) : Performance improvement with fixes in Security Questions. And User Email verification and Phone Verification issues resolved.
404
 
405
  = 5.4.13 =
406
+ * Google Authenticator - Two Factor Authentication (2FA, MFA) : Support Form Improvement.
407
 
408
  = 5.4.11 =
409
+ * Google Authenticator - Two Factor Authentication (2FA, TFA) : Feedback Issue fix.
410
 
411
  = 5.4.9 =
412
+ * Google Authenticator - Two Factor Authentication (2FA, MFA) : User Experience, new support form and Security disabled by default. Added New Methods for users to choose.
413
 
414
  = 5.4.8 =
415
+ * Google Authenticator - Two Factor Authentication (2FA, TFA) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
416
  = 5.4.7 =
417
+ * Google Authenticator - Two Factor Authentication (2FA) : Fixing warnings and adding minor changes in the plans.
418
 
419
  = 5.4.6 =
420
+ * Google Authenticator - Two Factor Authentication (2FA) : Improving Google Authenticator and adding Payment options.
421
 
422
  = 5.4.5 =
423
+ * Google Authenticator - Two Factor Authentication (2FA) : Security and MFA UI updates.
424
 
425
  = 5.4.4 =
426
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor : Woocommerce login page integration.
427
 
428
  = 5.4.3 =
429
+ * Google Authenticator - Two Factor Authentication (2FA , Two Factor) : Session issue fix for customers using Two Factor.
430
 
431
  = 5.4.2 =
432
+ * Google Authenticator - Two Factor Authentication (2FA) : Warning for cloud customer moving to on-premise Two factor.
433
 
434
  = 5.4.1 =
435
+ * Google Authenticator - Two Factor Authentication (2FA) : Headers sent issue is security firewall.
436
 
437
  = 5.4.0 =
438
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor FAQ Fix and OTP code convinence.
439
 
440
  = 5.3.26 =
441
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise FAQ update.
442
 
443
  = 5.3.25 =
444
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise support form.
445
 
446
  = 5.3.24 =
447
+ * Google Authenticator - Two Factor Authentication (2FA) : On-premise two factor released with multiple users support for some authentication methods.
448
 
449
  = 5.3.23 =
450
+ * Google Authenticator - Two Factor Authentication (2FA) : Scanner : Timing and caching issue fix.
451
  * Disable 2fa on Woocommerce login.
452
  * Login with Username only fix.
453
 
454
  = 5.3.22 =
455
+ * Google Authenticator - Two Factor Authentication (2FA) : Antivirus : Fixing Cache issues and adding nonce.
456
 
457
  = 5.3.21 =
458
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor : Choice between Two factor and Security.
459
 
460
  = 5.3.20 =
461
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti Malware : Fixing issue faced by users during scan.
462
 
463
  = 5.3.19 =
464
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Giving users choice of two factor.
465
 
466
  = 5.3.18 =
467
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus and Firewall : Fix Scan.
468
 
469
  = 5.3.17 =
470
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Improved Stop Scan.
471
 
472
  = 5.3.16 =
473
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Stop Scan.
474
 
475
  = 5.3.15 =
476
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : schedule scan.
477
 
478
  = 5.3.14 =
479
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : Adding more signatures.
480
 
481
  = 5.3.13 =
482
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : fix UI Issue and improving 2fa.
483
 
484
  = 5.3.12 =
485
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : backup table fix.
486
 
487
  = 5.3.11 =
488
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Limiting Firewall, Malware, backup and login security for users not needing it.
489
 
490
  = 5.3.10 =
491
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Moved to Old WAF version minor issues.
492
 
493
  = 5.3.9 =
494
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Web application Firewall Sql Injections report and monitoring.
495
 
496
 
497
  = 5.3.8 =
498
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Malware Scanner Fix.
499
 
500
  = 5.3.7 =
501
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Two factor login with username fix.
502
 
503
  = 5.3.6 =
504
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti virus zip file fix.
505
 
506
  = 5.3.5 =
507
+ * Google Authenticator - Two Factor Authentication (2FA) : Backup URL Fix and space issue in google authenticator.
508
 
509
  = 5.3.4 =
510
+ * Google Authenticator - Two Factor Authentication (2FA) : CSS fix for Malware Scanner, Security and firewall.
511
 
512
  = 5.3.3 =
513
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
514
 
515
  = 5.3.2 =
516
+ * Google Authenticator - Two Factor Authentication (2FA) : File Changes.
517
 
518
  = 5.3.1 =
519
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
520
 
521
  = 5.3.0 =
522
+ * Google Authenticator - Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
523
 
524
  = 5.2.6 =
525
+ * Google Authenticator - Two Factor Authentication (2FA) : Fixed conflict and filter issues.
526
 
527
  = 5.2.5 =
528
+ * Google Authenticator - Two Factor Authentication (2FA) : Some warnings in remote post.
529
 
530
  = 5.2.4 =
531
+ * Google Authenticator - Two Factor Authentication (2FA) : Removed curl calls and unncessary files.
532
 
533
  = 5.2.3 =
534
+ * Google Authenticator - Two Factor Authentication (2FA) : Fix for some users facing issues in api calls.
535
 
536
  = 5.2.2 =
537
+ * Google Authenticator - Two Factor Authentication (2FA) : Adding File Protection and Strong Password feature.
538
 
539
  = 5.2.1 =
540
+ * Google Authenticator - Two Factor Authentication (2FA) : UI changes for description.
541
 
542
  = 5.2.0 =
543
+ * Google Authenticator - Two Factor Authentication (2FA) : UI changes with more description.
544
 
545
  = 5.1.22 =
546
+ * Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
547
 
548
  = 5.1.21 =
549
+ * Google Authenticator - Two Factor Authentication (2FA) : Login Redirect.
550
 
551
  = 5.1.20 =
552
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
553
 
554
  = 5.1.19 =
555
+ * Google Authenticator - Two Factor Authentication (2FA) : Adding basic Security Features Monitorning, IP blocking and login transaction report.
556
 
557
  = 5.1.18 =
558
+ * Google Authenticator - Two Factor Authentication (2FA) : Object access error for lower PHP versions.
559
 
560
  = 5.1.17 =
561
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix and Documentation changes.
562
 
563
  = 5.1.16 =
564
+ * Google Authenticator - Two Factor Authentication (2FA) : Login redirect fix.
565
 
566
  = 5.1.15 =
567
+ * Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
568
 
569
  = 5.1.14 =
570
+ * Google Authenticator - Two Factor Authentication (2FA) : Database Error Fix and Custom Redirect.
571
 
572
  = 5.1.12 =
573
+ * Google Authenticator - Two Factor Authentication (2FA) : Removing redundant code.
574
 
575
  = 5.1.11 =
576
+ * Google Authenticator - Two Factor Authentication (2FA) : Password Pattern Fix.
577
 
578
  = 5.1.10 =
579
+ * Google Authenticator - Two Factor Authentication (2FA) : Javascript Error fixes.
580
 
581
  = 5.1.9 =
582
+ * Google Authenticator - Two Factor Authentication (2FA) : Added visual tour and security fixes.
583
 
584
  = 5.1.8 =
585
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for Validation.
586
 
587
  = 5.1.7 =
588
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error after Update.
589
 
590
  = 5.1.6 =
591
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error.
592
 
593
  = 5.1.5 =
594
+ * Google Authenticator - Two Factor Authentication (2FA) : UI changes.
595
 
596
  = 5.1.4 =
597
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for redirect to login page issues.
598
 
599
  = 5.1.3 =
600
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
601
 
602
  = 5.1.2 =
603
+ * Google Authenticator - Two Factor Authentication (2FA) : Changes in registration flow.
604
 
605
  = 5.1.1 =
606
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor changes.
607
 
608
  = 5.1.0 =
609
+ * Google Authenticator - Two Factor Authentication (2FA) : Added new user plans.
610
 
611
  = 5.0.17 =
612
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
613
 
614
  = 5.0.16 =
615
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes.
616
 
617
  = 5.0.15 =
618
+ * Google Authenticator - Two Factor Authentication (2FA) : Added Google Authenticator option in the WP login page itself.
619
 
620
  = 5.0.14 =
621
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fixs.
622
 
623
  = 5.0.13 =
624
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix and code optimization.
625
 
626
  = 5.0.12 =
627
+ * Google Authenticator - Two Factor Authentication (2FA) : Added GDPR Compliance.
628
 
629
  = 5.0.11 =
630
+ * Google Authenticator - Two Factor Authentication (2FA) : Readme Update.
631
 
632
  = 5.0.10 =
633
+ * Google Authenticator - Two Factor Authentication (2FA) : Added Proxy Setup feature.
634
 
635
  = 5.0.9 =
636
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for "The loopback request to your site failed." error.
637
 
638
  = 5.0.8 =
639
+ * Google Authenticator - Two Factor Authentication (2FA) : Changes for 2FA Free plugin for 1 user forever.
640
 
641
  = 5.0.7 =
642
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for User Registration and other plugin conflicts in Dashboard.
643
 
644
  = 5.0.6 =
645
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for existing customers who upgraded from 4.5.x version to versions between 5.0.0 and 5.0.4 and are facing issues with the Account Setup Tab.
646
 
647
  = 5.0.5 =
648
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for user entry during plugin update.
649
 
650
  = 5.0.4 =
651
+ * Google Authenticator - Two Factor Authentication (2FA) : Workaround for errors during sending of OTP during registration.
652
 
653
  = 5.0.3 =
654
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor fix for removing warings.
655
 
656
  = 5.0.2 =
657
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
658
 
659
  = 5.0.1 =
660
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
661
 
662
  = 5.0.0 =
663
+ * Google Authenticator - Two Factor Authentication (2FA) : New UI Interface, 2-factor authentication for Unlimited Users.
664
  * This is a major release.
665
 
666
  = 4.6.2 =
667
+ * Google Authenticator - Two Factor Authentication (2FA) : Plugin registration fixes and minor warning fixes.
668
 
669
  = 4.6.1 =
670
+ * Google Authenticator - Two Factor Authentication (2FA) : Login error fix. Please skip version 4.5.9 and update to version 4.6.1
671
 
672
  = 4.5.9 =
673
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for customers who were getting redirected to the login page after the two factor authentication.
674
 
675
  = 4.5.8 =
676
+ * Google Authenticator - Two Factor Authentication (2FA) : Tested upto 4.9.4 and Removed External links.
677
 
678
  = 4.5.7 =
679
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
680
 
681
  = 4.5.6 =
682
+ * Google Authenticator - Two Factor Authentication (2FA) : Tested upto Wordpress 4.9.
683
 
684
  = 4.5.5 =
685
+ * Google Authenticator - Two Factor Authentication (2FA) : 404 bug fixes.
686
 
687
  = 4.5.4 =
688
+ * Google Authenticator - Two Factor Authentication (2FA) : Better UI of Login Pages, Fixed Redirection issue. Fixed the error in the last version (4.5.3) for the customers who were getting undefined action error.
689
 
690
  = 4.5.3 =
691
+ * Google Authenticator - Two Factor Authentication (2FA) : Changed UI of the Login Pages, Redirect to Login Page bug fixes.
692
 
693
  = 4.5.2 =
694
+ * Google Authenticator - Two Factor Authentication (2FA) : Readme Update: Description Update
695
 
696
  = 4.5.1 =
697
+ * Google Authenticator - Two Factor Authentication (2FA) : Updated the new Authenticator App's link and the 'How to Setup Tab' tab.
698
 
699
  = 4.5.0 =
700
+ * Google Authenticator - Two Factor Authentication (2FA) : Fix Google Authenticator configuration issue.
701
 
702
  = 4.4.9 =
703
+ * Google Authenticator - Two Factor Authentication (2FA) : Added Alert Message for SMS Transactions only when authentication method is OTP over SMS.
704
 
705
  = 4.4.8 =
706
+ * Google Authenticator - Two Factor Authentication (2FA) : Added Alert Message for SMS Transactions. Fixed Remember Device flow and confliction with themes. Added support for multiple instances of wordpress.
707
 
708
  = 4.4.7 =
709
+ * Google Authenticator - Two Factor Authentication (2FA) : Updated the error message for 2-factor configuration.
710
 
711
  = 4.4.6 =
712
+ * Google Authenticator - Two Factor Authentication (2FA) : Instructions for login in case user get locked out.
713
 
714
 
715
  = 4.4.5 =
716
+ * Google Authenticator - Two Factor Authentication (2FA) : Fixed the issue of session variable on the login with username page.
717
 
718
  = 4.4.4 =
719
+ * Google Authenticator - Two Factor Authentication (2FA) : Added alert messages for OTP over SMS usages.
720
 
721
  = 4.4.3 =
722
+ * Google Authenticator - Two Factor Authentication (2FA) : Fixed the login flow for third party Apps that supports XML-RPC.
723
 
724
  = 4.4 =
725
+ * Google Authenticator - Two Factor Authentication (2FA):
726
  * Compatibility with Limit Login Attempts.
727
  * New User Interface for login.
728
 
729
  = 4.3.1 =
730
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible upto 4.7
731
 
732
  = 4.3.0 =
733
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated miniOrange APIs.
734
 
735
  = 4.2.9 =
736
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Tested upto WordPress 4.6.
737
 
738
  = 4.2.7 =
739
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Session Warnig fix in the last version for some of the users.
740
 
741
  = 4.2.6 =
742
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible with wordpress caching.
743
 
744
  = 4.2.5 =
745
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Improved the session handler.
746
 
747
  = 4.2.4 =
748
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated faq for limit login attempt type of plugins.
749
 
750
  = 4.2.3 =
751
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
752
  * Improved Error handling during Account Creation.
753
 
754
  = 4.2.2 =
755
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
756
  * Registration Flow fixes
757
 
758
  = 4.2.1 =
759
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
760
  * Change of status during login with phone flow and tested with WP 4.5
761
 
762
  = 4.2.0 =
763
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
764
  * Mark as tested on Wordpress 4.5
765
 
766
  = 4.1.8 =
767
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
768
  * Changed the location of images used for demo. Now being loaded from the site having SSL certificate.
769
 
770
  = 4.1.7 =
771
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
772
  * Improved Error Handling for Remember Device.
773
 
774
  = 4.1.6 =
775
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
776
  * Licensing Plan Updated.
777
 
778
  = 4.1.5 =
779
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
780
  * Added Forgot Password functionality for miniOrange customer admin.
781
  * Added warning message for the users who are using lower version of php.
782
  * Added functionlity to change the customer email.
783
 
784
  = 4.1.4 =
785
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
786
  * Added an option for admin to enable or disable login for XML-RPC supported applications.
787
 
788
  = 4.1.3 =
789
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
790
  * Fixed CSS Conflict with the plugins in the admin dashboard.
791
  * More intuitive UI for woocommerce login.
792
  * Tested front-end login with themes like wordpress default theme,
793
  customizr theme,zerif-lite theme,accesspress store theme,ishop theme and many more.
794
 
795
  = 4.1.2 =
796
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Google Authenticator for Windows phone
797
  * Fixed CSS conflict with front-end of site if woocommerce is not enabled.
798
 
799
  = 4.1.1 =
800
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Adding Validation in choosing Security Questions (KBA).
801
 
802
  = 4.1.0 =
803
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Features added.
804
  multisite support
805
  Custom login redirection
806
  Authy 2-Factor Authentication as separate authentication method
909
 
910
  == Upgrade Notice ==
911
 
912
+ = 5.4.23 =
913
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
914
+ * Call support with technical team
915
+ * Email and SMS transaction sync
916
+ * Feedback form on network deactivate
917
+ * Enable/Disable 2FA fix
918
+ * 2FA added for superadmin role
919
+
920
  = 5.4.22 =
921
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
922
  * Backup Codes
923
  * Sanitization and JS improvements
924
  * SMS and Email Sync
926
  * Telegram based Two factor in Premium plugin
927
 
928
  = 5.4.21 =
929
+ * Google Authenticator - Two Factor Authentication (2FA, SMS) :
930
  * Sanitization of some input values.
931
 
932
  = 5.4.20 =
933
+ * Google Authenticator - Two Factor Authentication (2FA, SMS) :
934
  * Google Authenticator Qr code fix.
935
  * My theme login Login fix.
936
 
937
  = 5.4.19 =
938
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) : Google Authenticator cloud fix.
939
 
940
  = 5.4.18 =
941
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
942
  * Added missing file
943
 
944
  = 5.4.17 =
945
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
946
  *Digimember Form Support
947
  *Memberpress Form Support
948
  *SMS Verification Support
949
  *OTP Verification on Woocommerce Registration
950
 
951
  = 5.4.16 =
952
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) : Quick form fix.
953
 
954
  = 5.4.15 =
955
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
956
  * Theme My Login plugin Support
957
  * Ultimate Memember Registration Support
958
  * Woocommerce Registration Support
960
  * Restrict Content Pro Login and Registration
961
 
962
  = 5.4.14 =
963
+ * Google Authenticator - Two Factor Authentication (2FA, MFA) : Performance improvement with fixes in Security Questions. And User Email verification and Phone Verification issues resolved.
964
 
965
  = 5.4.13 =
966
+ * Google Authenticator - Two Factor Authentication (2FA, TFA) : Support Form Improvement.
967
 
968
  = 5.4.11 =
969
+ * Google Authenticator - Two Factor Authentication (2FA, MFA) : Feedback Issue fix.
970
 
971
  = 5.4.9 =
972
+ * Google Authenticator - Two Factor Authentication (2FA, TFA) : User Experience, new support form and Security disabled by default. Added New Methods for users to choose.
973
 
974
  = 5.4.8 =
975
+ * Google Authenticator - Two Factor Authentication (2FA, OTP Verification) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
976
 
977
  = 5.4.7 =
978
+ * Google Authenticator - Two Factor Authentication (2FA, SMS Verification) : Fixing warnings and adding minor changes in the plans.
979
 
980
  = 5.4.6 =
981
+ * Google Authenticator - Two Factor Authentication (2FA) : Improving Google Authenticator and adding Payment options.
982
 
983
  = 5.4.5 =
984
+ * Google Authenticator - Two Factor Authentication (2FA) : Security and MFA UI updates.
985
 
986
  = 5.4.4 =
987
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor : Woocommerce login page integration.
988
 
989
  = 5.4.3 =
990
+ * Google Authenticator - Two Factor Authentication (2FA) : Session issue fix for customers using Two Factor.
991
 
992
  = 5.4.2 =
993
+ * Google Authenticator - Two Factor Authentication (2FA) : Warning for cloud customer moving to on-premise Two factor
994
 
995
  = 5.4.0 =
996
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor FAQ Fix and OTP code convinence.
997
 
998
  = 5.3.26 =
999
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise FAQ update.
1000
 
1001
  = 5.3.25 =
1002
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise support form.
1003
 
1004
  = 5.3.24 =
1005
+ * Google Authenticator - Two Factor Authentication (2FA) : On-premise two factor released with multiple user support for some authentication methods.
1006
 
1007
  = 5.3.23 =
1008
+ * Google Authenticator - Two Factor Authentication (2FA) : Scanner : Timing and caching issue fix.
1009
  * Disable 2fa on Woocommerce login.
1010
  * Login with Username only fix.
1011
 
1012
  = 5.3.22 =
1013
+ * Google Authenticator - Two Factor Authentication (2FA) : Antivirus : Fixing Cache issues and adding nonce.
1014
 
1015
  = 5.3.21 =
1016
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor : Choice between Two factor and Security.
1017
 
1018
  = 5.3.20 =
1019
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti Malware : Fixing issue faced by users during scan.
1020
 
1021
  = 5.3.19 =
1022
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Giving users choice of two factor.
1023
 
1024
  = 5.3.18 =
1025
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus and Firewall : Fix Scan.
1026
 
1027
  = 5.3.17 =
1028
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Improved Stop Scan.
1029
 
1030
  = 5.3.16 =
1031
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Stop Scan.
1032
 
1033
  = 5.3.15 =
1034
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : schedule scan.
1035
 
1036
  = 5.3.14 =
1037
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : Adding more signatures.
1038
 
1039
  = 5.3.13 =
1040
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : fix UI Issue and improving 2fa.
1041
 
1042
  = 5.3.12 =
1043
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : backup table fix.
1044
 
1045
  = 5.3.11 =
1046
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Limiting Firewall, Malware, backup and login security for users not needing it.
1047
 
1048
  = 5.3.10 =
1049
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Moved to Old WAF version minor issues..
1050
 
1051
  = 5.3.9 =
1052
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Web application Firewall Sql Injections report and monitoring.
1053
 
1054
 
1055
  = 5.3.8 =
1056
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Malware Scanner Fix.
1057
 
1058
  = 5.3.7 =
1059
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Two factor login with username fix.
1060
 
1061
  = 5.3.6 =
1062
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti virus zip file fix.
1063
 
1064
  = 5.3.5 =
1065
+ * Google Authenticator - Two Factor Authentication (2FA) : Backup URL Fix and space issue in google authenticator.
1066
 
1067
  = 5.3.4 =
1068
+ * Google Authenticator - Two Factor Authentication (2FA) : CSS fix for Malware Scanner, Security and firewall.
1069
 
1070
  = 5.3.3 =
1071
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
1072
 
1073
  = 5.3.2 =
1074
+ * Google Authenticator - Two Factor Authentication (2FA) : File Changes.
1075
 
1076
  = 5.3.1 =
1077
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
1078
 
1079
  = 5.3.0 =
1080
+ * Google Authenticator - Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
1081
 
1082
  = 5.2.6 =
1083
+ * Google Authenticator - Two Factor Authentication (2FA) : Fixed conflict and filter issues.
1084
 
1085
  = 5.2.5 =
1086
+ * Google Authenticator - Two Factor Authentication (2FA) : Some warnings in remote post.
1087
 
1088
  = 5.2.4 =
1089
+ * Google Authenticator - Two Factor Authentication (2FA) : Removed curl calls and unncessary files.
1090
 
1091
  = 5.2.3 =
1092
+ * Google Authenticator - Two Factor Authentication (2FA) : Fix for some users facing issues in api calls.
1093
 
1094
  = 5.2.2 =
1095
+ * Google Authenticator - Two Factor Authentication (2FA) : Adding File Protection and Strong Password feature.
1096
 
1097
  = 5.2.1 =
1098
+ * Google Authenticator - Two Factor Authentication (2FA) : UI changes for description.
1099
 
1100
  = 5.2.0 =
1101
+ * Google Authenticator - Two Factor Authentication (2FA) : UI changes with more description.
1102
 
1103
  = 5.1.22 =
1104
+ * Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
1105
 
1106
  = 5.1.21 =
1107
+ * Google Authenticator - Two Factor Authentication (2FA) : Login Redirect.
1108
 
1109
  = 5.1.20 =
1110
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
1111
 
1112
  = 5.1.19 =
1113
+ * Google Authenticator - Two Factor Authentication (2FA) : Adding basic Security Features Monitorning, IP blocking and login transaction report.
1114
 
1115
  = 5.1.18 =
1116
+ * Google Authenticator - Two Factor Authentication (2FA) : Object access error for lower PHP versions.
1117
 
1118
  = 5.1.17 =
1119
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix and Documentation changes.
1120
 
1121
  = 5.1.16 =
1122
+ * Google Authenticator - Two Factor Authentication (2FA) : Login redirect fix.
1123
 
1124
  = 5.1.15 =
1125
+ * Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
1126
 
1127
  = 5.1.14 =
1128
+ * Google Authenticator - Two Factor Authentication (2FA) : Database Error Fix and Custom Redirect.
1129
 
1130
  = 5.1.12 =
1131
+ * Google Authenticator - Two Factor Authentication (2FA) : Removing redundant code.
1132
 
1133
  = 5.1.11 =
1134
+ * Google Authenticator - Two Factor Authentication (2FA) : Password Pattern Fix.
1135
 
1136
  = 5.1.10 =
1137
+ * Google Authenticator - Two Factor Authentication (2FA) : Javascript Error fixes.
1138
 
1139
  = 5.1.9 =
1140
+ * Google Authenticator - Two Factor Authentication (2FA) : Added visual tour and security fixes.
1141
 
1142
  = 5.1.8 =
1143
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for Validation.
1144
 
1145
  = 5.1.7 =
1146
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error after Update.
1147
 
1148
  = 5.1.6 =
1149
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error.
1150
 
1151
  = 5.1.5 =
1152
+ * Google Authenticator - Two Factor Authentication (2FA) : UI changes.
1153
 
1154
  = 5.1.4 =
1155
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for redirect to login page issues.
1156
 
1157
  = 5.1.3 =
1158
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
1159
 
1160
  = 5.1.2 =
1161
+ * Google Authenticator - Two Factor Authentication (2FA) : Changes in registration flow.
1162
 
1163
  = 5.1.1 =
1164
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor changes.
1165
 
1166
  = 5.1.0 =
1167
+ * Google Authenticator - Two Factor Authentication (2FA) : Added new user plans
1168
 
1169
  = 5.0.17 =
1170
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
1171
 
1172
  = 5.0.16 =
1173
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes.
1174
 
1175
  = 5.0.15 =
1176
+ * Google Authenticator - Two Factor Authentication (2FA) : Added Google Authenticator option in the WP login page itself.
1177
 
1178
  = 5.0.14 =
1179
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fixs.
1180
 
1181
  = 5.0.13 =
1182
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix and code optimization.
1183
 
1184
  = 5.0.12 =
1185
+ * Google Authenticator - Two Factor Authentication (2FA) : Added GDPR Compliance.
1186
 
1187
  = 5.0.11 =
1188
+ * Google Authenticator - Two Factor Authentication (2FA) : Readme Update.
1189
 
1190
  = 5.0.10 =
1191
+ * Google Authenticator - Two Factor Authentication (2FA) : Added Proxy Setup feature.
1192
 
1193
  = 5.0.9 =
1194
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for "The loopback request to your site failed." error.
1195
 
1196
  = 5.0.8 =
1197
+ * Google Authenticator - Two Factor Authentication (2FA) : Changes for 2FA Free plugin for 1 user forever.
1198
 
1199
  = 5.0.7 =
1200
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for User Registration and other plugin conflicts in Dashboard.
1201
 
1202
  = 5.0.6 =
1203
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for existing customers who upgraded from 4.5.x version to versions between 5.0.0 and 5.0.4 and are facing issues with the Account Setup Tab.
1204
 
1205
  = 5.0.5 =
1206
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for user entry during plugin update.
1207
 
1208
  = 5.0.4 =
1209
+ * Google Authenticator - Two Factor Authentication (2FA) : Workaround for errors during sending of OTP during registration.
1210
 
1211
  = 5.0.3 =
1212
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor fix for removing warings.
1213
 
1214
  = 5.0.2 =
1215
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
1216
 
1217
  = 5.0.1 =
1218
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
1219
 
1220
  = 5.0.0 =
1221
+ * Google Authenticator - Two Factor Authentication (2FA) : New UI Interface, 2-factor authentication for Unlimited Users.
1222
  * This is a major release.
1223
 
1224
  = 4.6.2 =
1225
+ * Google Authenticator - Two Factor Authentication (2FA) : Plugin registration fixes and minor warning fixes.
1226
 
1227
  = 4.6.1 =
1228
+ * Google Authenticator - Two Factor Authentication (2FA) : Login error fix. Please skip version 4.5.9 and update to version 4.6.1
1229
 
1230
  = 4.5.9 =
1231
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for customers who were getting redirected to the login page after the two factor authentication.
1232
 
1233
  = 4.5.8 =
1234
+ * Google Authenticator - Two Factor Authentication (2FA) : Tested upto 4.9.4 and Removed External links.
1235
 
1236
  = 4.5.7 =
1237
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
1238
 
1239
  = 4.5.6 =
1240
+ * Google Authenticator - Two Factor Authentication (2FA) : Tested upto Wordpress 4.9.
1241
 
1242
  = 4.5.5 =
1243
+ * Google Authenticator - Two Factor Authentication (2FA) : 404 bug fixes.
1244
 
1245
  = 4.5.4 =
1246
+ * Google Authenticator - Two Factor Authentication (2FA) : Better UI of Login Pages, Fixed Redirection issue. Fixed the error in the last version (4.5.3) for the customers who were getting undefined action error.
1247
 
1248
  = 4.4.3 =
1249
+ * Google Authenticator - Two Factor Authentication (2FA) : Fixed the login flow for third party Apps that supports XML-RPC.
1250
 
1251
  = 4.4 =
1252
+ * Google Authenticator - Two Factor Authentication (2FA):
1253
  * Note: This is very important update having altogether new UI and compatibility with Limit Login Attempts. After updating, please do not logout from your admin dashboard. Try to login from another browser and if you face any issue , please contact us at info@miniorange.com
1254
  * Compatibility with Limit Login Attempts.
1255
  * New User Interface for login.
1256
 
1257
  = 4.3.2 =
1258
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Revised licensing cost for users.
1259
 
1260
  = 4.3.1 =
1261
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible upto 4.7
1262
 
1263
  = 4.3.0 =
1264
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated miniOrange APIs.
1265
 
1266
  = 4.2.9 =
1267
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Tested upto WordPress 4.6.
1268
 
1269
  = 4.2.7 =
1270
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Session Warnig fix in the last version for some of the users.
1271
 
1272
  = 4.2.6 =
1273
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible with wordpress caching.
1274
 
1275
  = 4.2.5 =
1276
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Improved the session handler.
1277
 
1278
  = 4.2.4 =
1279
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated faq for limit login attempt type of plugins.
1280
 
1281
  = 4.2.3 =
1282
  * Two Factor Authentication ( 2FA ):
uninstall.php CHANGED
@@ -136,6 +136,7 @@
136
  delete_option('mo_wpns_dbversion');
137
  delete_option('backup_created_time');
138
 
 
139
  delete_site_option('mo2f_visit_waf');
140
  delete_site_option('mo2f_visit_login_and_spam');
141
  delete_site_option('mo2f_visit_malware');
@@ -207,6 +208,8 @@
207
  $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mo2f_network_email_sent_audit" );
208
  $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mo2f_network_transactions" );
209
  $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mo2f_network_whitelisted_ips" );
 
 
210
 
211
  if ( ! is_multisite() )
212
  {
@@ -248,7 +251,6 @@
248
  delete_option( 'mo2f_phone' );
249
  delete_option( 'mo2f_existing_user_values_updated' );
250
  delete_option( 'mo2f_login_option_updated' );
251
- delete_option( 'mo2f_dbversion' );
252
  delete_option( 'mo2f_bug_fix_done' );
253
  delete_option( 'mo2f_feedback_form' );
254
  delete_option( 'mo2f_enable_2fa_prompt_on_login_page' );
136
  delete_option('mo_wpns_dbversion');
137
  delete_option('backup_created_time');
138
 
139
+ delete_site_option('mo2fa_superadmin');
140
  delete_site_option('mo2f_visit_waf');
141
  delete_site_option('mo2f_visit_login_and_spam');
142
  delete_site_option('mo2f_visit_malware');
208
  $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mo2f_network_email_sent_audit" );
209
  $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mo2f_network_transactions" );
210
  $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mo2f_network_whitelisted_ips" );
211
+ delete_option( 'mo2f_dbversion' );
212
+ delete_site_option("mo_2fa_pnp");
213
 
214
  if ( ! is_multisite() )
215
  {
251
  delete_option( 'mo2f_phone' );
252
  delete_option( 'mo2f_existing_user_values_updated' );
253
  delete_option( 'mo2f_login_option_updated' );
 
254
  delete_option( 'mo2f_bug_fix_done' );
255
  delete_option( 'mo2f_feedback_form' );
256
  delete_option( 'mo2f_enable_2fa_prompt_on_login_page' );
views/feedback_form.php CHANGED
@@ -147,11 +147,16 @@
147
  </div>
148
 
149
  </div>
150
-
151
- <script>
152
- jQuery('a[aria-label="Deactivate miniOrange 2 Factor Authentication"]').click(function () {
153
-
154
- var mo_modal = document.getElementById('wpns_feedback_modal');
 
 
 
 
 
155
 
156
  var span = document.getElementsByClassName("mo_wpns_close")[0];
157
 
147
  </div>
148
 
149
  </div>
150
+ <?php $is_plugin_network_active=is_plugin_active_for_network( MoWpnsConstants::TWO_FACTOR_SETTINGS);?>
151
+
152
+ <script>
153
+ var network_active = '<?php echo $is_plugin_network_active;?>';
154
+ if(network_active)
155
+ var plugin_active_label = 'a[aria-label="Network Deactivate miniOrange 2 Factor Authentication"]';
156
+ else
157
+ var plugin_active_label = 'a[aria-label="Deactivate miniOrange 2 Factor Authentication"]';
158
+ jQuery(plugin_active_label).click(function () {
159
+ var mo_modal = document.getElementById('wpns_feedback_modal');
160
 
161
  var span = document.getElementsByClassName("mo_wpns_close")[0];
162
 
views/support.php CHANGED
@@ -1,8 +1,11 @@
1
  <?php
2
-
 
3
 
4
- echo'
5
- <div class="mo_wpns_divided_layout_2">
 
 
6
 
7
  <div class="mo_wpns_support_layout" id="mo_wpns_support_layout_tour">
8
 
@@ -26,11 +29,71 @@ echo'
26
  </td>
27
  </tr>
28
  </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  <input type="submit" name="send_query" id="send_query" value="Submit Query" style="margin-bottom:3%;" class="mo_wpns_button mo_wpns_button1" />
30
  </form>
31
  <br />
32
  </div>
33
- </div>
 
 
 
 
34
  <script>
35
  function moSharingSizeValidate(e){
36
  var t=parseInt(e.value.trim());t>60?e.value=60:10>t&&(e.value=10)
@@ -50,4 +113,70 @@ echo'
50
  function moLoginHeightValidate(e){
51
  var t=parseInt(e.value.trim());t>50?e.value=50:35>t&&(e.value=35)
52
  }
53
- </script>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
+ global $mo2f_dirName;
3
+ require_once $mo2f_dirName . DIRECTORY_SEPARATOR.'includes'. DIRECTORY_SEPARATOR.'lib'. DIRECTORY_SEPARATOR.'mo-2fa-options-enum.php';
4
 
5
+ echo '
6
+ <meta charset="UTF-8">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ <div class="mo_wpns_divided_layout_2">
9
 
10
  <div class="mo_wpns_support_layout" id="mo_wpns_support_layout_tour">
11
 
29
  </td>
30
  </tr>
31
  </table>
32
+ <br />
33
+
34
+ <div class="call-setup-div">
35
+ <h3 style="margin-top: 0px; margin-left: 5px;">Setup a Call / Screen-share session with miniOrange Technical Team</h3>
36
+
37
+
38
+ <label class="switch">
39
+ <input type="checkbox" id="2fa_setup_call" name="2fa_setup_call">
40
+ <span class="slider round"></span>
41
+ </label>
42
+ <span style="padding-left:5px; font-size: 15px;">
43
+ <b><label for="2fa_setup_call"></label>Enable this option to setup a call</b><br><br>
44
+ </span>
45
+
46
+
47
+ <div id="call_setup_dets" style="margin-left: 5px; margin-top: 5px;">
48
+ <div>
49
+ <div style="width: 26%; float:left;"><strong>TimeZone<font color="#FF0000">*&nbsp</font>&nbsp; : &nbsp;</strong> </div>
50
+
51
+ <div style="width: 74% !important; float: left">
52
+ <select id="js-timezone" name="mo_2fa_setup_call_timezone" style="width:93%;">';
53
+ $zones = mo_2fa_time_zones::$time_zones;
54
+ echo ' <option value="" selected disabled>-------Select your timezone------</option>';
55
+ foreach($zones as $zone=>$value) {
56
+ echo '<option value="'.$value.'">'. $zone.' </option>';
57
+ }
58
+ echo '
59
+ </select>
60
+ </div>
61
+ </div>
62
+ <br><br><br>
63
+ <div style="width: 50%; float: left; position: relative;">
64
+ <strong> Date<font color="#FF0000">*</font>:</strong><br>
65
+
66
+ <input style="width: 90% !important;" type="text" id="datepicker" class="mo_2fa_table_textbox" placeholder="Select Meeting Date" autocomplete="off" name="mo_2fa_setup_call_date">
67
+ </div>
68
+ <div style="width: 50%; float: left; position: relative;">
69
+ <strong> Time (24-hour)<font color="#FF0000">*</font>:</strong><br>
70
+ <input style="width: 90% !important;" type="text" id="timepicker" placeholder="Select Meeting Time" class="mo_2fa_table_textbox" autocomplete="off" name="mo_2fa_setup_call_time">
71
+ </div>
72
+ <br><br><br>
73
+ <div>
74
+ <p style="margin-right: 20px; margin-bottom: 10px; margin-top: 15px; margin-left: 5px;">
75
+ <b><font color="#dc143c">Call and Meeting details will be sent to your email. Please verify the email before submitting your query. Check the spam folder for any email.</font></b>
76
+ </p>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ <div id="mo_2fa_plugin_configuration">
81
+ <input type="hidden" name="mo_2fa_plugin_configuration" value="mo2f_send_plugin_configuration"/>
82
+ <input type="checkbox" id="mo2f_send_configuration"
83
+ name="mo2f_send_configuration"
84
+ value="1" checked
85
+ <h3>Send plugin Configuration</h3>
86
+ <br /><br />
87
+ </div>
88
  <input type="submit" name="send_query" id="send_query" value="Submit Query" style="margin-bottom:3%;" class="mo_wpns_button mo_wpns_button1" />
89
  </form>
90
  <br />
91
  </div>
92
+ </div>';?>
93
+
94
+
95
+
96
+
97
  <script>
98
  function moSharingSizeValidate(e){
99
  var t=parseInt(e.value.trim());t>60?e.value=60:10>t&&(e.value=10)
113
  function moLoginHeightValidate(e){
114
  var t=parseInt(e.value.trim());t>50?e.value=50:35>t&&(e.value=35)
115
  }
116
+ var min_time = "00:00";
117
+
118
+ jQuery( function() {
119
+
120
+ jQuery("#call_setup_dets").hide();
121
+ jQuery("#2fa_setup_call").click(function() {
122
+ if(jQuery(this).is(":checked")) {
123
+ jQuery("#call_setup_dets").show();
124
+ document.getElementById("js-timezone").required = true;
125
+ document.getElementById("datepicker").required = true;
126
+ document.getElementById("timepicker").required = true;
127
+ document.getElementById("query").required = false;
128
+
129
+ var date = new Date();
130
+ var hrs = date.getHours();
131
+ var mins = date.getMinutes();
132
+ if(hrs == 23 && mins > 30){
133
+ jQuery("#datepicker").datepicker("option", "minDate", 1);
134
+ jQuery("#datepicker").datepicker("setDate", +1);
135
+ jQuery("#timepicker").timepicker("option", "minTime", "00:00");
136
+ } else{
137
+ jQuery("#datepicker").datepicker("option", "minDate", 0);
138
+ jQuery("#datepicker").datepicker("setDate", new Date());
139
+ }
140
+ } else {
141
+ jQuery("#call_setup_dets").hide();
142
+ document.getElementById("timepicker").required = false;
143
+ document.getElementById("datepicker").required = false;
144
+ document.getElementById("js-timezone").required = false;
145
+ document.getElementById("query").required = true;
146
+ }
147
+ });
148
+
149
+ jQuery( "#datepicker" ).datepicker({
150
+ minDate: 0,
151
+ dateFormat: "M dd, yy"
152
+ });
153
+
154
+
155
+ jQuery("#datepicker").datepicker().on("change", function (ev) {
156
+ var sel_date = jQuery(this).val();
157
+ var selected_date = new Date(sel_date);
158
+ var today_date = new Date();
159
+
160
+ if( (selected_date.getDate() == today_date.getDate()) && (selected_date.getMonth() == today_date.getMonth()) ){
161
+ jQuery("#timepicker").timepicker("option", "minTime", new Date());
162
+ }
163
+ else{
164
+ jQuery("#timepicker").timepicker("option", "minTime", "00:00");
165
+ }
166
+ });
167
+
168
+ jQuery("#timepicker").timepicker({
169
+ timeFormat: "HH:mm",
170
+ interval: 30,
171
+ minTime: new Date(),
172
+ disableTextInput: true,
173
+ dynamic: false,
174
+ dropdown: true,
175
+ scrollbar: true,
176
+ forceRoundTime: true
177
+ });
178
+ });
179
+
180
+ jQuery(function() { jQuery("#js-timezone").select2(); });
181
+
182
+ </script>
views/twofa/two_fa_unlimittedUser.php CHANGED
@@ -15,19 +15,22 @@ function miniorange_2_factor_user_roles($current_user) {
15
 
16
  </div></span><br /><br />
17
  <?php
 
 
 
 
18
  foreach($wp_roles->role_names as $id => $name) {
19
  $setting = get_site_option('mo2fa_'.$id);
20
  ?>
21
  <div>
22
  <input type="checkbox" name="role" value="<?php echo 'mo2fa_'.$id; ?>"
23
  <?php
24
- if($id=='administrator'){
25
- if(get_site_option('mo2fa_administrator'))
26
- echo 'checked' ;
27
- else{
28
- echo 'unchecked';
29
- }
30
- }
31
  else{
32
  echo 'disabled' ;
33
  }
15
 
16
  </div></span><br /><br />
17
  <?php
18
+ if(is_multisite()){
19
+ $first_role=array('superadmin'=>'Superadmin');
20
+ $wp_roles->role_names = array_merge($first_role,$wp_roles->role_names);
21
+ }
22
  foreach($wp_roles->role_names as $id => $name) {
23
  $setting = get_site_option('mo2fa_'.$id);
24
  ?>
25
  <div>
26
  <input type="checkbox" name="role" value="<?php echo 'mo2fa_'.$id; ?>"
27
  <?php
28
+ if($id=='administrator' || $id=='superadmin'){
29
+ if(get_site_option('mo2fa_'.$id))
30
+ echo 'checked' ;
31
+ else
32
+ echo 'unchecked';
33
+ }
 
34
  else{
35
  echo 'disabled' ;
36
  }
views/upgrade.php CHANGED
@@ -2,6 +2,7 @@
2
  global $Mo2fdbQueries;
3
  $user = wp_get_current_user();
4
  $is_NC = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
 
5
  $is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
6
 
7
  if ($_GET['page'] == 'mo_2fa_upgrade') {
2
  global $Mo2fdbQueries;
3
  $user = wp_get_current_user();
4
  $is_NC = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
5
+ update_site_option("mo_2fa_pnp",time());
6
  $is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
7
 
8
  if ($_GET['page'] == 'mo_2fa_upgrade') {