@@ -89,20 +89,24 @@ public function render() {
if ( is_plugin_active( $details['plugin_slug'] ) ) {
$disable_button = 'disabled';
}
+ // Check if this is actually an addon for something, otherwise bail.
+ if ( ! isset( $details['addon_for'] ) || ! isset( $details['image_filename'] ) ) {
+ break;
+ }
?>
-
+
@@ -128,7 +132,7 @@ public static function get_installable_plugins() {
$plugins = array(
array(
'addon_for' => 'bbpress',
- 'title' => 'BBPress Add-on',
+ 'title' => 'BBPress Extension',
'image_filename' => 'bbpress.png',
'plugin_slug' => 'wp-security-audit-log-add-on-for-bbpress/wsal-bbpress.php',
'plugin_url' => 'https://downloads.wordpress.org/plugin/wp-security-audit-log-add-on-for-bbpress.latest-stable.zip',
@@ -137,13 +141,19 @@ public static function get_installable_plugins() {
),
array(
'addon_for' => 'wpforms',
- 'title' => 'WPForms',
+ 'title' => 'WPForms Extension',
'image_filename' => 'wpforms.png',
'plugin_slug' => 'wp-security-audit-log-add-on-for-wpforms/wsal-wpforms.php',
'plugin_url' => 'https://downloads.wordpress.org/plugin/wp-security-audit-log-add-on-for-wpforms.latest-stable.zip',
'event_tab_id' => '#tab-wpforms',
'plugin_description' => 'Keep a record of when someone adds, modified or delete forms, entries and more in the WPForms plugin.',
),
+ array(
+ 'addon_for' => 'wfcm',
+ 'title' => 'Website File Changes Monitor',
+ 'plugin_slug' => 'website-file-changes-monitor/website-file-changes-monitor.php',
+ 'plugin_url' => 'https://downloads.wordpress.org/plugin/website-file-changes-monitor.latest-stable.zip',
+ ),
);
// runs through a filter so it can be added to programatically.
// NOTE: this means when using we need to test it's still an array.
diff --git a/classes/Views/AuditLog.php b/classes/Views/AuditLog.php
index dfbd4ce0..9734a450 100644
--- a/classes/Views/AuditLog.php
+++ b/classes/Views/AuditLog.php
@@ -272,10 +272,10 @@ public function AdminNoticesPremium() {
}
if ( empty( $addon_names ) ) {
$addon_names .= $addon;
- $button_label = esc_html__( 'Install add-on', 'wp-2fa' );
+ $button_label = esc_html__( 'Install Extension', 'wp-2fa' );
} else {
$addon_names .= ' & ' .$addon;
- $button_label = esc_html__( 'Install add-ons', 'wp-2fa' );
+ $button_label = esc_html__( 'Install Extensions', 'wp-2fa' );
}
$display_notice = true;
}
@@ -376,7 +376,7 @@ private function get_icon_encoded() {
* Method: Get View Name.
*/
public function GetName() {
- return __( 'Activity Log Viewer', 'wp-security-audit-log' );
+ return __( 'Log Viewer', 'wp-security-audit-log' );
}
/**
@@ -1035,9 +1035,9 @@ public function Footer() {
'infiniteScroll' => $this->_plugin->settings->is_infinite_scroll(),
'userView' => ( in_array( $this->user_last_view, $this->supported_view_types(), true ) ) ? $this->user_last_view : 'list',
'installAddonStrings' => array(
- 'defaultButton' => esc_html( 'Install and activate add-on', 'wp-security-audit-log' ),
- 'installingText' => esc_html( 'Installing add-on', 'wp-security-audit-log' ),
- 'otherInstalling' => esc_html( 'Other add-on installing', 'wp-security-audit-log' ),
+ 'defaultButton' => esc_html( 'Install and activate extension', 'wp-security-audit-log' ),
+ 'installingText' => esc_html( 'Installing extension', 'wp-security-audit-log' ),
+ 'otherInstalling' => esc_html( 'Other extension installing', 'wp-security-audit-log' ),
'addonInstalled' => esc_html( 'Installed', 'wp-security-audit-log' ),
'installedReload' => esc_html( 'Installed... reloading page', 'wp-security-audit-log' ),
'buttonError' => esc_html( 'Problem enabling', 'wp-security-audit-log' ),
diff --git a/classes/Views/EmailNotifications.php b/classes/Views/EmailNotifications.php
index 3531af20..b9e70152 100644
--- a/classes/Views/EmailNotifications.php
+++ b/classes/Views/EmailNotifications.php
@@ -25,7 +25,7 @@ class WSAL_Views_EmailNotifications extends WSAL_AbstractView {
* Get View Title.
*/
public function GetTitle() {
- return __( 'Notifications Add-On', 'wp-security-audit-log' );
+ return __( 'Notifications Extension', 'wp-security-audit-log' );
}
/**
diff --git a/classes/Views/ExternalDB.php b/classes/Views/ExternalDB.php
index ced6e073..34ab5402 100644
--- a/classes/Views/ExternalDB.php
+++ b/classes/Views/ExternalDB.php
@@ -25,7 +25,7 @@ class WSAL_Views_ExternalDB extends WSAL_AbstractView {
* Method: Get View Title.
*/
public function GetTitle() {
- return __( 'External DB Add-On', 'wp-security-audit-log' );
+ return __( 'External DB Extension', 'wp-security-audit-log' );
}
/**
diff --git a/classes/Views/Help.php b/classes/Views/Help.php
index f8e92a68..be15f87d 100644
--- a/classes/Views/Help.php
+++ b/classes/Views/Help.php
@@ -197,7 +197,7 @@ public function tab_help() {
-
+
diff --git a/classes/Views/Settings.php b/classes/Views/Settings.php
index 8216faf7..f0f70f9a 100644
--- a/classes/Views/Settings.php
+++ b/classes/Views/Settings.php
@@ -29,13 +29,6 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
*/
public $adapter_msg = '';
- /**
- * Scan settings.
- *
- * @var array
- */
- private $scan_settings = array();
-
/**
* WSAL Setting Tabs.
*
@@ -67,10 +60,6 @@ public function __construct( WpSecurityAuditLog $plugin ) {
add_action( 'wp_ajax_AjaxGetAllUsers', array( $this, 'AjaxGetAllUsers' ) );
add_action( 'wp_ajax_AjaxGetAllRoles', array( $this, 'AjaxGetAllRoles' ) );
add_action( 'wp_ajax_AjaxGetAllCPT', array( $this, 'AjaxGetAllCPT' ) );
- add_action( 'wp_ajax_wsal_scan_add_exception', array( $this, 'scan_add_exception_file' ) );
- add_action( 'wp_ajax_wsal_scan_remove_exception', array( $this, 'scan_remove_exception_file' ) );
- add_action( 'wp_ajax_wsal_manual_scan_now', array( $this, 'run_manual_scan_now' ) );
- add_action( 'wp_ajax_wsal_stop_file_changes_scan', array( $this, 'stop_file_changes_scan' ) );
add_action( 'wp_ajax_wsal_reset_settings', array( $this, 'reset_settings' ) );
add_action( 'wp_ajax_wsal_purge_activity', array( $this, 'purge_activity' ) );
}
@@ -107,10 +96,9 @@ public function setup_settings_tabs() {
'priority' => 20,
),
'file-changes' => array(
- 'name' => __( 'File Integrity Scan', 'wp-security-audit-log' ),
+ 'name' => __( 'File Changes', 'wp-security-audit-log' ),
'link' => add_query_arg( 'tab', 'file-changes', $this->GetUrl() ),
'render' => array( $this, 'tab_file_changes' ),
- 'save' => array( $this, 'tab_file_changes_save' ),
'priority' => 30,
),
'exclude-objects' => array(
@@ -209,27 +197,6 @@ protected function GetTokenType( $token ) {
return $this->_plugin->settings->get_token_type( $token );
}
- /**
- * Method: Load saved settings of this view.
- */
- public function load_file_changes_settings() {
- $default_scan_dirs = array_keys( $this->_plugin->settings->get_server_directories( 'display' ) );
-
- // Load saved settings of this view.
- $this->scan_settings = array(
- 'scan_file_changes' => $this->_plugin->GetGlobalOption( 'scan-file-changes', 'enable' ),
- 'scan_frequency' => $this->_plugin->GetGlobalOption( 'scan-frequency', 'weekly' ),
- 'scan_hour' => $this->_plugin->GetGlobalOption( 'scan-hour', '04' ),
- 'scan_day' => $this->_plugin->GetGlobalOption( 'scan-day', '1' ),
- 'scan_date' => $this->_plugin->GetGlobalOption( 'scan-date', '10' ),
- 'scan_directories' => $this->_plugin->GetGlobalOption( 'scan-directories', $default_scan_dirs ),
- 'scan_excluded_dirs' => $this->_plugin->GetGlobalOption( 'scan-excluded-directories', array( trailingslashit( WP_CONTENT_DIR ) . 'cache' ) ),
- 'scan_excluded_extensions' => $this->_plugin->GetGlobalOption( 'scan-excluded-extensions', array( 'jpg', 'jpeg', 'png', 'bmp', 'pdf', 'txt', 'log', 'mo', 'po', 'mp3', 'wav', 'gif', 'ico', 'jpe', 'psd', 'raw', 'svg', 'tif', 'tiff', 'aif', 'flac', 'm4a', 'oga', 'ogg', 'ra', 'wma', 'asf', 'avi', 'mkv', 'mov', 'mp4', 'mpe', 'mpeg', 'mpg', 'ogv', 'qt', 'rm', 'vob', 'webm', 'wm', 'wmv' ) ),
- 'scan_in_progress' => $this->_plugin->GetGlobalOption( 'scan-in-progress', false ),
- 'scan_file_size_limit' => $this->_plugin->GetGlobalOption( 'scan-file-size-limit', 5 ),
- );
- }
-
/**
* Method: Save settings.
*
@@ -1257,481 +1224,40 @@ private function tab_audit_log_save() {
* Tab: `File Changes`
*/
private function tab_file_changes() {
- // Load file changes settings.
- $this->load_file_changes_settings();
?>
-
-
- Refer to the WordPress file integrity scans feature page for more information.', 'wp-security-audit-log' ), $this->_plugin->allowed_html_tags ); ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
_plugin->SetGlobalOption( 'scan-file-changes', $post_array['wsal-file-changes'] );
-
- // Get file change scan alerts.
- $file_change_events = $this->_plugin->alerts->get_alerts_by_sub_category( 'File Changes' );
- $file_change_events = array_keys( $file_change_events );
-
- // Enable/disable events based on file changes.
- if ( 'disable' === $post_array['wsal-file-changes'] ) {
- // Get disabled events.
- $disabled_events = $this->_plugin->settings->GetDisabledAlerts();
-
- // Merge file changes events.
- $disabled_events = array_merge( $disabled_events, $file_change_events );
-
- // Save the events.
- $this->_plugin->alerts->SetDisabledAlerts( $disabled_events );
- } else {
- // Get disabled events.
- $disabled_events = $this->_plugin->settings->GetDisabledAlerts();
-
- foreach ( $file_change_events as $file_change_event ) {
- // Search for file change events in disabled events.
- $key = array_search( $file_change_event, $disabled_events, true );
-
- // If key is found, then unset it.
- if ( $key ) {
- unset( $disabled_events[ $key ] );
- }
- }
-
- // Save the disabled events.
- $this->_plugin->alerts->SetDisabledAlerts( $disabled_events );
- }
- } else {
- $this->_plugin->SetGlobalOption( 'scan-file-changes', false );
- }
-
- // Check and save scan frequency.
- $this->_plugin->SetGlobalOption( 'scan-frequency', isset( $post_array['wsal-scan-frequency'] ) ? $post_array['wsal-scan-frequency'] : false );
- $this->_plugin->SetGlobalOption( 'scan-hour', isset( $post_array['wsal-scan-hour'] ) ? $post_array['wsal-scan-hour'] : false );
- $this->_plugin->SetGlobalOption( 'scan-day', isset( $post_array['wsal-scan-day'] ) ? $post_array['wsal-scan-day'] : false );
- $this->_plugin->SetGlobalOption( 'scan-date', isset( $post_array['wsal-scan-date'] ) ? $post_array['wsal-scan-date'] : false );
- $this->_plugin->SetGlobalOption( 'scan-file-size-limit', isset( $post_array['wsal-scan-file-size'] ) ? $post_array['wsal-scan-file-size'] : false );
-
- // Check and save scan directories.
- if (
- isset( $post_array['wsal-scan-directories'] )
- && is_array( $post_array['wsal-scan-directories'] )
- ) {
- $scan_directories = array_keys( $post_array['wsal-scan-directories'] );
- $this->_plugin->SetGlobalOption( 'scan-directories', $scan_directories );
- }
- }
-
/**
* Tab: `Exclude Objects`
*/
@@ -2232,7 +1758,14 @@ private function tab_advanced_settings_save() {
$this->_plugin->settings->deactivate_mainwp_child_stealth_mode();
}
- $custom_logging_dir = ( isset( $post_array['wsal-custom-logs-dir'] ) ) ? filter_var( $post_array['wsal-custom-logs-dir'], FILTER_SANITIZE_STRING ) : WSAL_Settings::DEFAULT_LOGGING_DIR;
+ $custom_logging_dir = WSAL_Settings::DEFAULT_LOGGING_DIR;
+ if ( isset( $post_array['wsal-custom-logs-dir'] ) ) {
+ $posted_logging_dir = filter_var( $post_array['wsal-custom-logs-dir'], FILTER_SANITIZE_STRING );
+ if (!empty($posted_logging_dir)) {
+ $custom_logging_dir = $posted_logging_dir;
+ }
+ }
+
if ( ! empty( $custom_logging_dir ) ) {
$custom_logging_path = trailingslashit( get_home_path() ) . ltrim( trailingslashit( $custom_logging_dir ), '/' );
if ( ! is_dir( $custom_logging_path ) || ! is_readable( $custom_logging_path ) || ! is_writable( $custom_logging_path ) ) {
@@ -2335,9 +1868,6 @@ public function Footer() {
'invalidFile' => esc_html__( 'Filename cannot be added because it contains invalid characters.', 'wp-security-audit-log' ),
'invalidFileExt' => esc_html__( 'File extension cannot be added because it contains invalid characters.', 'wp-security-audit-log' ),
'invalidDir' => esc_html__( 'Directory cannot be added because it contains invalid characters.', 'wp-security-audit-log' ),
- 'scanNow' => esc_html__( 'Scan Now', 'wp-security-audit-log' ),
- 'scanFailed' => esc_html__( 'Scan Failed', 'wp-security-audit-log' ),
- 'scanInProgress' => esc_html__( 'Scan in Progress', 'wp-security-audit-log' ),
);
wp_localize_script( 'settings', 'wsal_data', $wsal_data );
wp_enqueue_script( 'settings' );
@@ -2453,357 +1983,6 @@ public function AjaxGetAllCPT() {
exit;
}
- /**
- * Method: Add file to file changes scan exception.
- */
- public function scan_add_exception_file() {
- // Die if user does not have permission to change settings.
- if ( ! $this->_plugin->settings->CurrentUserCan( 'view' ) ) {
- die( 'Access Denied.' );
- }
-
- // Filter $_POST array for security.
- $post_array = filter_input_array( INPUT_POST );
-
- // Get data type to check file or extension.
- if ( ! isset( $post_array['data_type'] ) || empty( $post_array['data_type'] ) ) {
- die( esc_html__( 'Invalid setting type.', 'wp-security-audit-log' ) );
- } else {
- $data_type = $post_array['data_type'];
- }
-
- // Die if nonce verification failed.
- if ( 'file' === $data_type && ! wp_verify_nonce( $post_array['nonce'], 'wsal-scan-exception-file' ) ) {
- die( esc_html__( 'Nonce verification failed.', 'wp-security-audit-log' ) );
- } elseif ( 'extension' === $data_type && ! wp_verify_nonce( $post_array['nonce'], 'wsal-scan-exception-file-type' ) ) {
- die( esc_html__( 'Nonce verification failed.', 'wp-security-audit-log' ) );
- } elseif ( 'dir' === $data_type && ! wp_verify_nonce( $post_array['nonce'], 'wsal-scan-exception-dir' ) ) {
- die( esc_html__( 'Nonce verification failed.', 'wp-security-audit-log' ) );
- }
-
- // Get option type to be excluded.
- if ( 'file' === $data_type ) {
- $excluded_option = $this->_plugin->GetGlobalOption( 'scan_excluded_files', array() );
- } elseif ( 'extension' === $data_type ) {
- $excluded_option = $this->_plugin->GetGlobalOption( 'scan-excluded-extensions', array( 'jpg', 'jpeg', 'png', 'bmp', 'pdf', 'txt', 'log', 'mo', 'po', 'mp3', 'wav' ) );
- } elseif ( 'dir' === $data_type ) {
- $excluded_option = $this->_plugin->GetGlobalOption( 'scan-excluded-directories', array() );
- }
-
- // Check if the file name is set and not empty.
- if ( isset( $post_array['data_name'] ) && ! empty( $post_array['data_name'] ) ) {
- // Check if option already exists.
- if ( ! in_array( $post_array['data_name'], $excluded_option, true ) ) {
- // Add to excluded files array.
- if ( 'dir' === $data_type ) {
- // Prepare directories array.
- // @todo Store this in transient to cache the value. We don't need to load it every time.
- $uploads_dir = wp_upload_dir();
-
- // Server directories.
- $server_dirs = array(
- untrailingslashit( ABSPATH ), // Root directory.
- ABSPATH . 'wp-admin', // WordPress Admin.
- ABSPATH . WPINC, // wp-includes.
- WP_CONTENT_DIR, // wp-content.
- WP_CONTENT_DIR . '/themes', // Themes.
- WP_PLUGIN_DIR, // Plugins.
- $uploads_dir['basedir'], // Uploads.
- );
-
- $dir_name = $post_array['data_name'];
- if ( '/' === substr( $dir_name, -1 ) ) {
- $dir_name = untrailingslashit( $dir_name );
- }
-
- if ( ! in_array( $dir_name, $server_dirs, true ) ) {
- $excluded_option[] = $dir_name;
- } else {
- echo wp_json_encode(
- array(
- 'success' => false,
- 'message' => esc_html__( 'You can exclude this directory using the check boxes above.', 'wp-security-audit-log' ),
- )
- );
- exit();
- }
- } else {
- $excluded_option[] = $post_array['data_name'];
- }
-
- // Save the option.
- if ( 'file' === $data_type ) {
- $this->_plugin->SetGlobalOption( 'scan_excluded_files', $excluded_option );
- } elseif ( 'extension' === $data_type ) {
- $this->_plugin->SetGlobalOption( 'scan-excluded-extensions', $excluded_option );
- } elseif ( 'dir' === $data_type ) {
- $this->_plugin->SetGlobalOption( 'scan-excluded-directories', $excluded_option );
- }
-
- echo wp_json_encode(
- array(
- 'success' => true,
- 'message' => esc_html__( 'Option added to excluded types.', 'wp-security-audit-log' ),
- )
- );
- } else {
- if ( 'file' === $data_type ) {
- $message = esc_html__( 'This file is already excluded from the scan.', 'wp-security-audit-log' );
- } elseif ( 'extension' === $data_type ) {
- $message = esc_html__( 'This file extension is already excluded from the scan.', 'wp-security-audit-log' );
- } elseif ( 'dir' === $data_type ) {
- $message = esc_html__( 'This directory is already excluded from the scan.', 'wp-security-audit-log' );
- }
- echo wp_json_encode(
- array(
- 'success' => false,
- 'message' => $message,
- )
- );
- }
- } else {
- echo wp_json_encode(
- array(
- 'success' => false,
- 'message' => esc_html__( 'Option name is empty.', 'wp-security-audit-log' ),
- )
- );
- }
- exit();
- }
-
- /**
- * Method: Remove files from file changes scan exception.
- */
- public function scan_remove_exception_file() {
- // Die if user does not have permission to change settings.
- if ( ! $this->_plugin->settings->CurrentUserCan( 'view' ) ) {
- die( 'Access Denied.' );
- }
-
- // Filter $_POST array for security.
- $post_array = filter_input_array( INPUT_POST );
-
- // Get data type to check file or extension.
- if ( ! isset( $post_array['data_type'] ) || empty( $post_array['data_type'] ) ) {
- die( esc_html__( 'Invalid setting type.', 'wp-security-audit-log' ) );
- } else {
- $data_type = $post_array['data_type'];
- }
-
- // Die if nonce verification failed.
- if ( 'file' === $data_type && ! wp_verify_nonce( $post_array['nonce'], 'wsal-scan-remove-exception-file' ) ) {
- die( esc_html__( 'Nonce verification failed.', 'wp-security-audit-log' ) );
- } elseif ( 'extension' === $data_type && ! wp_verify_nonce( $post_array['nonce'], 'wsal-scan-remove-exception-file-type' ) ) {
- die( esc_html__( 'Nonce verification failed.', 'wp-security-audit-log' ) );
- } elseif ( 'dir' === $data_type && ! wp_verify_nonce( $post_array['nonce'], 'wsal-scan-remove-exception-dir' ) ) {
- die( esc_html__( 'Nonce verification failed.', 'wp-security-audit-log' ) );
- }
-
- // Get files to be excluded.
- if ( 'file' === $data_type ) {
- $excluded_option = $this->_plugin->GetGlobalOption( 'scan_excluded_files', array() );
- } elseif ( 'extension' === $data_type ) {
- $excluded_option = $this->_plugin->GetGlobalOption( 'scan-excluded-extensions', array( 'jpg', 'jpeg', 'png', 'bmp', 'pdf', 'txt', 'log', 'mo', 'po', 'mp3', 'wav' ) );
- } elseif ( 'dir' === $data_type ) {
- $excluded_option = $this->_plugin->GetGlobalOption( 'scan-excluded-directories', array() );
- }
-
- if ( ! empty( $excluded_option ) && isset( $post_array['data_removed'] ) && ! empty( $post_array['data_removed'] ) ) {
- // Get data_removed.
- $data_removed = $post_array['data_removed'];
-
- // Confirmed array of list to be excluded.
- $to_be_excluded = array();
-
- foreach ( $data_removed as $file ) {
- if ( in_array( $file, $excluded_option, true ) ) {
- $key = array_search( $file, $excluded_option, true );
-
- if ( false !== $key ) {
- $to_be_excluded[] = $excluded_option[ $key ];
- unset( $excluded_option[ $key ] );
- }
- }
- }
-
- // Get excluded scan content.
- $site_content = $this->_plugin->GetGlobalOption( 'site_content' );
- if ( empty( $site_content ) ) {
- $site_content = new stdClass();
- }
- if ( empty( $site_content->skip_files ) ) {
- $site_content->skip_files = array();
- }
- if ( empty( $site_content->skip_extensions ) ) {
- $site_content->skip_extensions = array();
- }
- if ( empty( $site_content->skip_directories ) ) {
- $site_content->skip_directories = array();
- }
-
- // Save the option.
- if ( 'file' === $data_type ) {
- $this->_plugin->SetGlobalOption( 'scan_excluded_files', $excluded_option );
-
- $site_content->skip_files = array_merge( $site_content->skip_files, $to_be_excluded );
- $this->_plugin->SetGlobalOption( 'site_content', $site_content );
- } elseif ( 'extension' === $data_type ) {
- $this->_plugin->SetGlobalOption( 'scan-excluded-extensions', $excluded_option );
-
- $site_content->skip_extensions = array_merge( $site_content->skip_extensions, $to_be_excluded );
- $this->_plugin->SetGlobalOption( 'site_content', $site_content );
- } elseif ( 'dir' === $data_type ) {
- $this->_plugin->SetGlobalOption( 'scan-excluded-directories', $excluded_option );
-
- $site_content->skip_directories = array_merge( $site_content->skip_directories, $to_be_excluded );
- $this->_plugin->SetGlobalOption( 'site_content', $site_content );
- }
-
- echo wp_json_encode(
- array(
- 'success' => true,
- 'message' => esc_html__( 'Option removed from excluded scan types.', 'wp-security-audit-log' ),
- )
- );
- } else {
- echo wp_json_encode(
- array(
- 'success' => false,
- 'message' => esc_html__( 'Something went wrong.', 'wp-security-audit-log' ),
- )
- );
- }
- exit();
- }
-
- /**
- * Method: Run a manual file changes scan.
- */
- public function run_manual_scan_now() {
- // Die if user does not have permission to change settings.
- if ( ! $this->_plugin->settings->CurrentUserCan( 'view' ) ) {
- die( 'Access Denied.' );
- }
-
- // Filter $_POST array for security.
- $post_array = filter_input_array( INPUT_POST );
-
- // Die if nonce verification failed.
- if ( ! wp_verify_nonce( $post_array['nonce'], 'wsal-scan-now' ) ) {
- die( esc_html__( 'Nonce verification failed.', 'wp-security-audit-log' ) );
- }
-
- // Return if a cron is running.
- if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
- echo wp_json_encode(
- array(
- 'success' => false,
- 'message' => esc_html__( 'A cron job is in progress.', 'wp-security-audit-log' ),
- )
- );
- exit();
- }
-
- // Get plugin sensors.
- $sensors = $this->_plugin->sensors->GetSensors();
-
- // Get file changes sensor.
- $file_changes = '';
-
- if ( ! empty( $sensors ) ) {
- foreach ( $sensors as $sensor ) {
- if ( $sensor instanceof WSAL_Sensors_FileChanges ) {
- $file_changes = $sensor;
- }
- }
- }
-
- // Check for file changes sensor.
- if ( ! empty( $file_changes ) && $file_changes instanceof WSAL_Sensors_FileChanges ) {
- // Run a manual scan on all directories.
- for ( $dir = 0; $dir < 7; $dir++ ) {
- if ( ! $this->_plugin->GetGlobalOption( 'stop-scan', false ) ) {
- if ( 0 === $dir ) {
- // Scan started alert.
- $this->_plugin->alerts->Trigger(
- 6033,
- array(
- 'CurrentUserID' => '0',
- 'ScanStatus' => 'started',
- 'EventType' => 'started',
- )
- );
- } elseif ( 6 === $dir ) {
- // Scan stopped.
- $this->_plugin->alerts->Trigger(
- 6033,
- array(
- 'CurrentUserID' => '0',
- 'ScanStatus' => 'stopped',
- 'EventType' => 'stopped',
- )
- );
- }
- $file_changes->detect_file_changes( true, $dir );
- } else {
- break;
- }
- }
- $this->_plugin->SetGlobalOption( 'stop-scan', false );
-
- echo wp_json_encode(
- array(
- 'success' => true,
- 'message' => esc_html__( 'Scan started successfully.', 'wp-security-audit-log' ),
- )
- );
- } else {
- echo wp_json_encode(
- array(
- 'success' => false,
- 'message' => esc_html__( 'Something went wrong.', 'wp-security-audit-log' ),
- )
- );
- }
- exit();
- }
-
- /**
- * Method: Stop a file changes scan.
- */
- public function stop_file_changes_scan() {
- // Die if user does not have permission to change settings.
- if ( ! $this->_plugin->settings->CurrentUserCan( 'view' ) ) {
- die( 'Access Denied.' );
- }
-
- // Filter $_POST array for security.
- $post_array = filter_input_array( INPUT_POST );
-
- // Die if nonce verification failed.
- if ( ! wp_verify_nonce( $post_array['nonce'], 'wsal-stop-scan' ) ) {
- echo wp_json_encode(
- array(
- 'success' => false,
- 'message' => esc_html__( 'Nonce verification failed.', 'wp-security-audit-log' ),
- )
- );
- exit();
- }
-
- // Set stop scan option to true.
- $this->_plugin->SetGlobalOption( 'stop-scan', true );
-
- echo wp_json_encode(
- array(
- 'success' => true,
- 'message' => esc_html__( 'Scan started successfully.', 'wp-security-audit-log' ),
- )
- );
- exit();
- }
-
/**
* Method: Reset plugin settings table.
*/
diff --git a/classes/Views/SetupWizard.php b/classes/Views/SetupWizard.php
index c4af78d3..c9c2e2c1 100644
--- a/classes/Views/SetupWizard.php
+++ b/classes/Views/SetupWizard.php
@@ -774,7 +774,7 @@ private function wsal_step_finish() {
-
+
@@ -858,6 +858,10 @@ private function addons_step() {
if ( is_plugin_active( $details['plugin_slug'] ) ) {
$disable_button = 'disabled';
}
+ // Check if this is actually an addon for something, otherwise bail.
+ if ( ! isset( $details['addon_for'] ) || ! isset( $details['image_filename'] ) ) {
+ break;
+ }
?>
diff --git a/classes/Views/ToggleAlerts.php b/classes/Views/ToggleAlerts.php
index d6794973..a3dac8fa 100644
--- a/classes/Views/ToggleAlerts.php
+++ b/classes/Views/ToggleAlerts.php
@@ -385,6 +385,10 @@ class="nav-tab"
continue; // <- Ignore php alerts.
}
+ if ( __( 'Monitor File Changes', 'wp-security-audit-log' ) === $subname && ! is_plugin_active( 'website-file-changes-monitor/website-file-changes-monitor.php' ) ) {
+ break;
+ }
+
if ( in_array( $alert->type, $obsolete_events, true ) ) {
continue; // <- Ignore promo alerts.
}
@@ -540,7 +544,7 @@ class="alert"
}
// File integrity scan link.
- if ( __( 'File Changes', 'wp-security-audit-log' ) === $subname ) :
+ if ( __( 'Monitor File Changes', 'wp-security-audit-log' ) === $subname && ! is_plugin_active( 'website-file-changes-monitor/website-file-changes-monitor.php' ) ) :
$wsal_settings_page = '';
$redirect_args = array(
'page' => 'wsal-settings',
@@ -553,12 +557,20 @@ class="alert"
}
?>
-
-
-
-
+ |
+
+
+
+
+
+
|
+
diff --git a/css/extensions.css b/css/extensions.css
index d7edc8eb..0645fe9c 100644
--- a/css/extensions.css
+++ b/css/extensions.css
@@ -29,6 +29,18 @@ input[type="submit"] {
padding: 0;
}
+body {
+ /* margin: 0;
+ padding: 0;
+ font-family: 'Roboto', sans-serif;
+ -webkit-font-smoothing: antialiased;
+ font-weight: 400;
+ width: 100%;
+ min-height: 100%;
+ color: #23282d;
+ background: #fff; */
+}
+
a {
outline: none;
text-decoration: none;
@@ -414,13 +426,13 @@ ul.premium-list li:before {
.nav-tabs {
display: -ms-flexbox;
- display: flex;
- -ms-flex-direction: row-reverse;
- flex-direction: row-reverse;
- -ms-flex-wrap: wrap;
+ display: flex;
+ -ms-flex-direction: row-reverse;
+ flex-direction: row-reverse;
+ -ms-flex-wrap: wrap;
flex-wrap: wrap;
justify-content: flex-end;
- padding-bottom: 20px;
+ padding-bottom: 20px;
max-width: 1170px;
}
@@ -433,7 +445,7 @@ ul.premium-list li:before {
.wsal-help-main p {
line-height: 2;
}
-
+
.our-wordpress-plugins {
width: 100%;
max-width: 250px;
@@ -461,9 +473,9 @@ ul.premium-list li:before {
margin: 0;
padding: 20px 0 0;
display: -ms-flexbox;
- display: flex;
- -ms-flex-wrap: wrap;
- flex-wrap: wrap;
+ display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
}
.our-wordpress-plugins ul li{
diff --git a/defaults.php b/defaults.php
index 5ae1b175..6f6241c7 100644
--- a/defaults.php
+++ b/defaults.php
@@ -368,15 +368,6 @@ function wsaldefaults_wsal_init() {
array( 6034, WSAL_CRITICAL, __( 'Purged the activity log', 'wp-security-audit-log' ), __( 'Purged the activity log', 'wp-security-audit-log' ), 'activity-logs', 'deleted' ),
),
- __( 'File Changes', 'wp-security-audit-log' ) => array(
- array( 6028, WSAL_HIGH, __( 'File content has been modified', 'wp-security-audit-log' ), __( 'Content of the file on site modified %LineBreak% File: %File% %LineBreak% Location: %FileLocation%', 'wp-security-audit-log' ), 'file', 'modified' ),
- array( 6029, WSAL_CRITICAL, __( 'File added to the site', 'wp-security-audit-log' ), __( 'File added to site %LineBreak% File: %File% %LineBreak% Location: %FileLocation%', 'wp-security-audit-log' ), 'file', 'added' ),
- array( 6030, WSAL_MEDIUM, __( 'File deleted from the site', 'wp-security-audit-log' ), __( 'File deleted from site %LineBreak% File: %File% %LineBreak% Location: %FileLocation%', 'wp-security-audit-log' ), 'file', 'deleted' ),
- array( 6031, WSAL_INFORMATIONAL, __( 'File not scanned because it is bigger than the maximum file size limit', 'wp-security-audit-log' ), __( 'File not scanned because it is bigger than the maximum file size limit %LineBreak% File: %File% %LineBreak% Location: %FileLocation% %LineBreak% %FileSettings%', 'wp-security-audit-log' ), 'system', 'blocked' ),
- array( 6032, WSAL_INFORMATIONAL, __( 'File integrity scan stopped due to the limit of 1 million files', 'wp-security-audit-log' ), __( 'Your website has more than 1 million files so the file integrity scanner cannot scan them all. Contact support for more information. %LineBreak% %ContactSupport%', 'wp-security-audit-log' ), 'system', 'blocked' ),
- array( 6033, WSAL_INFORMATIONAL, __( 'File integrity scan started/stopped', 'wp-security-audit-log' ), __( 'The file integrity scan has %ScanStatus%.', 'wp-security-audit-log' ), 'system', 'started' ),
- ),
-
__( 'User/Visitor Actions', 'wp-security-audit-log' ) => array(
array( 6007, WSAL_INFORMATIONAL, __( 'User requests non-existing pages (404 Error Pages)', 'wp-security-audit-log' ), __( 'Has requested a non existing page (404 error) %LineBreak% Number of times: %Attempts%', 'wp-security-audit-log' ), 'system', 'opened' ),
array( 6023, WSAL_INFORMATIONAL, __( 'Website Visitor User requests non-existing pages (404 Error Pages)', 'wp-security-audit-log' ), __( 'Website visitor has requested a non existing page (404 error) %LineBreak% Number of times: %Attempts%', 'wp-security-audit-log' ), 'system', 'opened' ),
@@ -577,6 +568,18 @@ function wsaldefaults_wsal_init() {
)
);
+ // Dummy item to hold WFCM installer.
+ if ( function_exists( 'is_plugin_active' ) && ! is_plugin_active( 'website-file-changes-monitor/website-file-changes-monitor.php' ) ) {
+ $file_changes_tab = array (
+ __( 'File Changes', 'wp-security-audit-log' ) => array(
+ __( 'Monitor File Changes', 'wp-security-audit-log' ) => array(
+ array( 99999, WSAL_HIGH, __( 'Dummy', 'wp-security-audit-log' ), __( '', 'wp-security-audit-log' ), 'file', 'modified' ),
+ )
+ ),
+ );
+ $wsal->alerts->RegisterGroup( $file_changes_tab );
+ }
+
// Load Custom alerts.
load_include_custom_file( $wsal );
}
diff --git a/languages/wp-security-audit-log.pot b/languages/wp-security-audit-log.pot
index 719aee72..dfa1802c 100644
--- a/languages/wp-security-audit-log.pot
+++ b/languages/wp-security-audit-log.pot
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
"Project-Id-Version: WP Activity Log\n"
-"POT-Creation-Date: 2020-04-15 17:04+0100\n"
-"PO-Revision-Date: 2020-04-15 17:04+0100\n"
+"POT-Creation-Date: 2020-04-15 16:33+0100\n"
+"PO-Revision-Date: 2020-04-15 16:29+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -50,20 +50,27 @@ msgstr ""
msgid "Contact us"
msgstr ""
-#: classes/AlertManager.php:1107 classes/AuditLogListView.php:332
-#: classes/AuditLogListView.php:366 classes/Views/Settings.php:1183
+#: classes/AlertManager.php:1107 classes/AuditLogListView.php:333
+#: classes/AuditLogListView.php:367 classes/Views/Settings.php:1183
#: classes/WidgetManager.php:76
+#: extensions/search/classes/Filters/UserNameFilter.php:44
+#: extensions/search/classes/Filters/userfirstnamefilter.php:50
+#: extensions/search/classes/Filters/userlastnamefilter.php:50
+#: extensions/users-sessions-management/classes/Views.php:699
msgid "User"
msgstr ""
#: classes/AlertManager.php:1108 classes/AlertManager.php:1898
-#: classes/AuditLogGridView.php:517 classes/AuditLogListView.php:542
+#: classes/AuditLogGridView.php:517 classes/AuditLogListView.php:543
#: defaults.php:354
+#: extensions/email-notifications/classes/DailyNotification.php:240
+#: extensions/email-notifications/classes/Notifier.php:632
+#: extensions/reports/classes/Common.php:658
msgid "System"
msgstr ""
#: classes/AlertManager.php:1109 classes/AuditLogGridView.php:508
-#: classes/AuditLogListView.php:530
+#: classes/AuditLogListView.php:531
msgid "Plugin"
msgstr ""
@@ -157,6 +164,9 @@ msgid "Multisite Network"
msgstr ""
#: classes/AlertManager.php:1133
+#: extensions/email-notifications/classes/Common.php:1146
+#: extensions/search/classes/Filters/IpFilter.php:87
+#: extensions/users-sessions-management/classes/Views.php:898
msgid "IP Address"
msgstr ""
@@ -193,6 +203,7 @@ msgid "Updated"
msgstr ""
#: classes/AlertManager.php:1193
+#: extensions/users-sessions-management/classes/Views.php:706
msgid "Created"
msgstr ""
@@ -200,7 +211,7 @@ msgstr ""
msgid "Modified"
msgstr ""
-#: classes/AlertManager.php:1195
+#: classes/AlertManager.php:1195 extensions/search/search-init.php:332
msgid "Deleted"
msgstr ""
@@ -221,6 +232,7 @@ msgid "Enabled"
msgstr ""
#: classes/AlertManager.php:1200
+#: extensions/email-notifications/classes/Notifications.php:1922
msgid "Disabled"
msgstr ""
@@ -282,23 +294,33 @@ msgstr ""
#: classes/AlertManager.php:1475 classes/Views/ToggleAlerts.php:243
#: classes/Views/ToggleAlerts.php:275 defaults.php:252
+#: extensions/external-db/classes/Mirroring.php:457
+#: extensions/external-db/classes/Mirroring.php:490
+#: extensions/reports/inc/wsal-reporting-view.inc.php:74
msgid "Pages"
msgstr ""
#: classes/AlertManager.php:1475 classes/Views/ToggleAlerts.php:243
#: classes/Views/ToggleAlerts.php:275 defaults.php:212
+#: extensions/external-db/classes/Mirroring.php:457
+#: extensions/external-db/classes/Mirroring.php:490
+#: extensions/reports/inc/wsal-reporting-view.inc.php:74
msgid "Custom Post Types"
msgstr ""
-#: classes/AlertManager.php:1797
+#: classes/AlertManager.php:1797 extensions/reports/classes/Common.php:1556
msgid "System Activity"
msgstr ""
#: classes/AlertManager.php:1857 classes/ConstantManager.php:146
+#: extensions/external-db/classes/Common.php:658
+#: extensions/external-db/classes/Common.php:899
msgid "Unknown error code."
msgstr ""
#: classes/AlertManager.php:1864 classes/AlertManager.php:1876
+#: extensions/reports/classes/Common.php:628
+#: extensions/reports/classes/Common.php:638
msgid "Unknown Site"
msgstr ""
@@ -328,39 +350,47 @@ msgstr ""
#: classes/AuditLogGridView.php:229 classes/AuditLogListView.php:235
#: classes/Views/AuditLog.php:620
+#: extensions/reports/inc/wsal-reporting-view.inc.php:585
msgid "All Sites"
msgstr ""
-#: classes/AuditLogGridView.php:257 classes/AuditLogListView.php:263
+#: classes/AuditLogGridView.php:257 classes/AuditLogListView.php:264
msgid "Live Database"
msgstr ""
-#: classes/AuditLogGridView.php:260 classes/AuditLogListView.php:266
+#: classes/AuditLogGridView.php:260 classes/AuditLogListView.php:267
msgid "Archive Database"
msgstr ""
#: classes/AuditLogGridView.php:314 classes/AuditLogGridView.php:338
-#: classes/AuditLogListView.php:329 classes/AuditLogListView.php:357
+#: classes/AuditLogListView.php:330 classes/AuditLogListView.php:358
msgid "ID"
msgstr ""
#: classes/AuditLogGridView.php:315 classes/AuditLogGridView.php:341
-#: classes/AuditLogListView.php:330 classes/AuditLogListView.php:360
+#: classes/AuditLogListView.php:331 classes/AuditLogListView.php:361
#: classes/Views/Settings.php:1179 classes/Views/ToggleAlerts.php:326
+#: extensions/search/classes/Filters/CodeFilter.php:38
+#: extensions/search/classes/Filters/CodeFilter.php:64
msgid "Severity"
msgstr ""
#: classes/AuditLogGridView.php:316
+#: extensions/search/classes/Filters/CodeFilter.php:71
msgid "Info"
msgstr ""
-#: classes/AuditLogGridView.php:321 classes/AuditLogListView.php:340
-#: classes/AuditLogListView.php:372
+#: classes/AuditLogGridView.php:321 classes/AuditLogListView.php:341
+#: classes/AuditLogListView.php:373
+#: extensions/email-notifications/classes/Common.php:1144
+#: extensions/email-notifications/classes/Common.php:1203
+#: extensions/search/classes/Filters/SiteFilter.php:29
msgid "Site"
msgstr ""
#: classes/AuditLogGridView.php:324 classes/AuditLogGridView.php:347
-#: classes/AuditLogListView.php:343 classes/AuditLogListView.php:381
+#: classes/AuditLogListView.php:344 classes/AuditLogListView.php:382
+#: extensions/email-notifications/classes/Common.php:1177
msgid "Message"
msgstr ""
@@ -368,7 +398,7 @@ msgstr ""
msgid "Grid"
msgstr ""
-#: classes/AuditLogGridView.php:416 classes/AuditLogListView.php:465
+#: classes/AuditLogGridView.php:416 classes/AuditLogListView.php:466
msgid "Disable this type of events."
msgstr ""
@@ -377,26 +407,26 @@ msgid "Message:"
msgstr ""
#: classes/AuditLogGridView.php:459 classes/AuditLogGridView.php:466
-#: classes/AuditLogGridView.php:505 classes/AuditLogListView.php:485
-#: classes/AuditLogListView.php:526
+#: classes/AuditLogGridView.php:505 classes/AuditLogListView.php:486
+#: classes/AuditLogListView.php:527
msgid "Unknown"
msgstr ""
-#: classes/AuditLogGridView.php:490 classes/AuditLogListView.php:511
+#: classes/AuditLogGridView.php:490 classes/AuditLogListView.php:512
msgid "Show me all activity by this User"
msgstr ""
-#: classes/AuditLogGridView.php:511 classes/AuditLogListView.php:534
+#: classes/AuditLogGridView.php:511 classes/AuditLogListView.php:535
#: defaults.php:316
msgid "Plugins"
msgstr ""
-#: classes/AuditLogGridView.php:514 classes/AuditLogListView.php:538
+#: classes/AuditLogGridView.php:514 classes/AuditLogListView.php:539
msgid "Website Visitor"
msgstr ""
#: classes/AuditLogGridView.php:551 classes/AuditLogGridView.php:564
-#: classes/AuditLogListView.php:574 classes/AuditLogListView.php:587
+#: classes/AuditLogListView.php:575 classes/AuditLogListView.php:588
msgid "Show me all activity originating from this IP Address"
msgstr ""
@@ -424,67 +454,82 @@ msgstr ""
msgid "Event Type:"
msgstr ""
-#: classes/AuditLogGridView.php:621 classes/AuditLogListView.php:616
+#: classes/AuditLogGridView.php:621 classes/AuditLogListView.php:617
msgid "View all details of this change"
msgstr ""
#: classes/AuditLogGridView.php:622 classes/AuditLogGridView.php:772
-#: classes/AuditLogListView.php:617 classes/AuditLogListView.php:771
+#: classes/AuditLogListView.php:618 classes/AuditLogListView.php:772
msgid "Alert Data Inspector"
msgstr ""
-#: classes/AuditLogGridView.php:724 classes/AuditLogListView.php:723
+#: classes/AuditLogGridView.php:724 classes/AuditLogListView.php:724
#: classes/Settings.php:1639
msgid "Download the log file"
msgstr ""
-#: classes/AuditLogGridView.php:744 classes/AuditLogListView.php:743
+#: classes/AuditLogGridView.php:744 classes/AuditLogListView.php:744
#: classes/Settings.php:1681
msgid "Download the log file."
msgstr ""
-#: classes/AuditLogGridView.php:752 classes/AuditLogListView.php:751
+#: classes/AuditLogGridView.php:752 classes/AuditLogListView.php:752
#: classes/Settings.php:1694 classes/Settings.php:1937
+#: extensions/email-notifications/classes/Notifier.php:793
msgid "published"
msgstr ""
#. translators: Mailto link for support.
-#: classes/AuditLogGridView.php:780 classes/AuditLogListView.php:779
+#: classes/AuditLogGridView.php:780 classes/AuditLogListView.php:780
#: classes/Settings.php:1720 classes/Settings.php:1963
+#: extensions/email-notifications/classes/Notifier.php:819
+#: extensions/reports/classes/Common.php:552
+#: extensions/users-sessions-management/classes/Common.php:1244
#, php-format
msgid "Contact us on %s for assistance"
msgstr ""
-#: classes/AuditLogGridView.php:914 classes/AuditLogListView.php:913
+#: classes/AuditLogGridView.php:914 classes/AuditLogListView.php:914
+#: extensions/email-notifications/classes/Notifications.php:1956
+#: extensions/email-notifications/classes/Notifications.php:1967
+#: extensions/reports/inc/wsal-reporting-view.inc.php:719
msgid "Select All"
msgstr ""
-#: classes/AuditLogListView.php:331 classes/AuditLogListView.php:363
+#: classes/AuditLogListView.php:332 classes/AuditLogListView.php:364
+#: extensions/search/classes/Filters/DateFilter.php:27
msgid "Date"
msgstr ""
-#: classes/AuditLogListView.php:333 classes/AuditLogListView.php:369
+#: classes/AuditLogListView.php:334 classes/AuditLogListView.php:370
+#: extensions/search/classes/Filters/IpFilter.php:45
msgid "IP"
msgstr ""
-#: classes/AuditLogListView.php:334 classes/AuditLogListView.php:375
+#: classes/AuditLogListView.php:335 classes/AuditLogListView.php:376
+#: extensions/email-notifications/classes/Common.php:1117
+#: extensions/search/classes/Filters/ObjectFilter.php:29
+#: extensions/search/classes/Filters/ObjectFilter.php:53
msgid "Object"
msgstr ""
-#: classes/AuditLogListView.php:335 classes/AuditLogListView.php:378
+#: classes/AuditLogListView.php:336 classes/AuditLogListView.php:379
+#: extensions/email-notifications/classes/Common.php:1118
+#: extensions/search/classes/Filters/EventTypeFilter.php:29
+#: extensions/search/classes/Filters/EventTypeFilter.php:53
msgid "Event Type"
msgstr ""
-#: classes/AuditLogListView.php:440
+#: classes/AuditLogListView.php:441
msgid "Click to toggle."
msgstr ""
-#: classes/AuditLogListView.php:445 classes/Models/Occurrence.php:83
+#: classes/AuditLogListView.php:446 classes/Models/Occurrence.php:83
#: classes/ViewManager.php:469
msgid "Alert message not found."
msgstr ""
-#: classes/AuditLogListView.php:446 classes/Models/Occurrence.php:84
+#: classes/AuditLogListView.php:447 classes/Models/Occurrence.php:84
#: classes/ViewManager.php:470
msgid "Alert description not found."
msgstr ""
@@ -583,6 +628,7 @@ msgstr ""
#: classes/ConstantManager.php:152 classes/ConstantManager.php:158
#: classes/Views/ToggleAlerts.php:446 classes/Views/ToggleAlerts.php:452
+#: extensions/search/classes/Filters/CodeFilter.php:67
msgid "Critical"
msgstr ""
@@ -596,14 +642,17 @@ msgid "Notification"
msgstr ""
#: classes/ConstantManager.php:160 classes/Views/ToggleAlerts.php:454
+#: extensions/search/classes/Filters/CodeFilter.php:68
msgid "High"
msgstr ""
#: classes/ConstantManager.php:162 classes/Views/ToggleAlerts.php:456
+#: extensions/search/classes/Filters/CodeFilter.php:69
msgid "Medium"
msgstr ""
#: classes/ConstantManager.php:164 classes/Views/ToggleAlerts.php:458
+#: extensions/search/classes/Filters/CodeFilter.php:70
msgid "Low"
msgstr ""
@@ -672,6 +721,7 @@ msgstr ""
#: classes/Sensors/WooCommerce.php:1813 classes/Sensors/WooCommerce.php:1847
#: classes/Sensors/WooCommerce.php:1893
+#: extensions/external-db/classes/Settings.php:739
msgid "None"
msgstr ""
@@ -688,42 +738,60 @@ msgid "This function is deprecated"
msgstr ""
#: classes/Settings.php:1596
+#: extensions/email-notifications/classes/Notifier.php:741
+#: extensions/reports/classes/Common.php:493
msgid "View the content changes"
msgstr ""
#: classes/Settings.php:1601 classes/Settings.php:1607
+#: extensions/email-notifications/classes/Notifier.php:746
+#: extensions/email-notifications/classes/Notifier.php:752
+#: extensions/reports/classes/Common.php:498
+#: extensions/reports/classes/Common.php:504
msgid "View post in the editor"
msgstr ""
#: classes/Settings.php:1604
+#: extensions/email-notifications/classes/Notifier.php:749
+#: extensions/reports/classes/Common.php:501
msgid "View Order"
msgstr ""
#: classes/Settings.php:1612
+#: extensions/email-notifications/classes/Notifier.php:755
+#: extensions/reports/classes/Common.php:507
msgid "View category"
msgstr ""
#: classes/Settings.php:1615
+#: extensions/email-notifications/classes/Notifier.php:758
+#: extensions/reports/classes/Common.php:510
msgid "View tag"
msgstr ""
#: classes/Settings.php:1619
+#: extensions/email-notifications/classes/Notifier.php:768
+#: extensions/reports/classes/Common.php:520
msgid "User profile page"
msgstr ""
-#: classes/Settings.php:1732
+#: classes/Settings.php:1732 extensions/reports/classes/Common.php:564
msgid "Increase maximum file size limit"
msgstr ""
-#: classes/Settings.php:1735
+#: classes/Settings.php:1735 extensions/reports/classes/Common.php:567
msgid "Contact Support"
msgstr ""
#: classes/Settings.php:1975
+#: extensions/email-notifications/classes/Notifier.php:830
+#: extensions/email-notifications/classes/Notifier.php:958
msgid "plugin settings"
msgstr ""
#: classes/Settings.php:1978
+#: extensions/email-notifications/classes/Notifier.php:833
+#: extensions/email-notifications/classes/Notifier.php:963
msgid "contact our support"
msgstr ""
@@ -796,7 +864,7 @@ msgstr ""
#: classes/Utilities/PluginInstallAndActivate.php:103
#: classes/Views/SetupWizard.php:260 classes/Views/SetupWizard.php:859
-#: wp-security-audit-log.php:1187
+#: wp-security-audit-log.php:1192
msgid "Extension installed"
msgstr ""
@@ -816,6 +884,16 @@ msgstr ""
#: classes/ViewManager.php:495 classes/Views/Settings.php:259
#: classes/Views/Settings.php:2756 classes/Views/Settings.php:2785
#: classes/Views/SetupWizard.php:83
+#: extensions/email-notifications/classes/Notifications.php:117
+#: extensions/external-db/classes/Connections.php:738
+#: extensions/external-db/classes/Connections.php:772
+#: extensions/external-db/classes/Connections.php:969
+#: extensions/external-db/classes/Settings.php:282
+#: extensions/external-db/classes/Settings.php:373
+#: extensions/external-db/classes/Settings.php:1079
+#: extensions/external-db/classes/Settings.php:1318
+#: extensions/external-db/classes/Settings.php:1382
+#: extensions/external-db/classes/Settings.php:1434
msgid "Access Denied."
msgstr ""
@@ -833,6 +911,20 @@ msgstr ""
#: classes/Views/Settings.php:2541 classes/Views/Settings.php:2543
#: classes/Views/Settings.php:2637 classes/Views/Settings.php:2732
#: classes/Views/SetupWizard.php:96
+#: extensions/email-notifications/classes/Notifications.php:492
+#: extensions/external-db/classes/Connections.php:757
+#: extensions/external-db/classes/Connections.php:953
+#: extensions/external-db/classes/Connections.php:1021
+#: extensions/external-db/classes/Settings.php:312
+#: extensions/external-db/classes/Settings.php:400
+#: extensions/external-db/classes/Settings.php:1148
+#: extensions/external-db/classes/Settings.php:1365
+#: extensions/external-db/classes/Settings.php:1417
+#: extensions/external-db/classes/Settings.php:1450
+#: extensions/reports/classes/Views/Main.php:757
+#: extensions/search/search-init.php:470 extensions/search/search-init.php:541
+#: extensions/users-sessions-management/classes/Views.php:1553
+#: extensions/users-sessions-management/classes/Views.php:1671
msgid "Nonce verification failed."
msgstr ""
@@ -920,11 +1012,11 @@ msgid "No, thank you"
msgstr ""
#: classes/Views/AuditLog.php:275
-msgid "Install extension"
+msgid "Install Extension"
msgstr ""
#: classes/Views/AuditLog.php:278
-msgid "Install extensions"
+msgid "Install Extensions"
msgstr ""
#: classes/Views/AuditLog.php:290
@@ -941,6 +1033,14 @@ msgstr ""
#: classes/Views/AuditLog.php:534 classes/Views/Settings.php:365
#: classes/Views/ToggleAlerts.php:140
+#: extensions/email-notifications/classes/AddNotification.php:246
+#: extensions/email-notifications/classes/AddNotification.php:279
+#: extensions/email-notifications/classes/EditNotification.php:250
+#: extensions/email-notifications/classes/EditNotification.php:254
+#: extensions/email-notifications/classes/EditNotification.php:258
+#: extensions/email-notifications/classes/EditNotification.php:263
+#: extensions/email-notifications/classes/EditNotification.php:291
+#: extensions/external-db/classes/Settings.php:420
msgid "You do not have sufficient permissions to access this page."
msgstr ""
@@ -1476,6 +1576,8 @@ msgid "Advanced Settings"
msgstr ""
#: classes/Views/Settings.php:179 classes/Views/Settings.php:193
+#: extensions/email-notifications/classes/SMSProviderSettings.php:143
+#: extensions/users-sessions-management/classes/Views.php:882
msgid "Settings"
msgstr ""
@@ -1496,10 +1598,17 @@ msgid "Message sent successfully."
msgstr ""
#: classes/Views/Settings.php:381 classes/Views/ToggleAlerts.php:157
+#: extensions/external-db/classes/Settings.php:431
+#: extensions/users-sessions-management/classes/Views.php:670
+#: extensions/users-sessions-management/classes/Views.php:686
msgid "Settings have been saved."
msgstr ""
#: classes/Views/Settings.php:387 classes/Views/ToggleAlerts.php:163
+#: extensions/external-db/classes/Settings.php:436
+#: extensions/users-sessions-management/classes/Views.php:659
+#: extensions/users-sessions-management/classes/Views.php:675
+#: extensions/users-sessions-management/classes/Views.php:691
msgid "Error: "
msgstr ""
@@ -1822,14 +1931,17 @@ msgid "Keep all data"
msgstr ""
#: classes/Views/Settings.php:1030
+#: extensions/external-db/classes/Settings.php:754
msgid "Delete events older than"
msgstr ""
#: classes/Views/Settings.php:1037
+#: extensions/external-db/classes/Settings.php:760
msgid "Months"
msgstr ""
#: classes/Views/Settings.php:1038
+#: extensions/external-db/classes/Settings.php:761
msgid "Years"
msgstr ""
@@ -1920,6 +2032,11 @@ msgid "Audit Log Columns Selection"
msgstr ""
#: classes/Views/Settings.php:1177
+#: extensions/email-notifications/classes/Common.php:1113
+#: extensions/email-notifications/classes/Common.php:1147
+#: extensions/email-notifications/classes/Common.php:1174
+#: extensions/search/classes/Filters/AlertFilter.php:26
+#: extensions/search/classes/Filters/AlertFilter.php:51
msgid "Event ID"
msgstr ""
@@ -2015,14 +2132,17 @@ msgid "Scan Frequency"
msgstr ""
#: classes/Views/Settings.php:1340
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1410
msgid "Daily"
msgstr ""
#: classes/Views/Settings.php:1341
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1411
msgid "Weekly"
msgstr ""
#: classes/Views/Settings.php:1342
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1412
msgid "Monthly"
msgstr ""
@@ -2199,6 +2319,7 @@ msgid "11"
msgstr ""
#: classes/Views/Settings.php:1416
+#: extensions/users-sessions-management/classes/Views.php:1295
msgid "12"
msgstr ""
@@ -2247,6 +2368,7 @@ msgid "23"
msgstr ""
#: classes/Views/Settings.php:1428
+#: extensions/users-sessions-management/classes/Views.php:1296
msgid "24"
msgstr ""
@@ -2755,19 +2877,19 @@ msgstr ""
msgid "Specified value in not an IP address."
msgstr ""
-#: classes/Views/SetupWizard.php:258 wp-security-audit-log.php:1185
+#: classes/Views/SetupWizard.php:258 wp-security-audit-log.php:1190
msgid "Installing, please wait"
msgstr ""
-#: classes/Views/SetupWizard.php:259 wp-security-audit-log.php:1186
+#: classes/Views/SetupWizard.php:259 wp-security-audit-log.php:1191
msgid "Already installed"
msgstr ""
-#: classes/Views/SetupWizard.php:261 wp-security-audit-log.php:1188
+#: classes/Views/SetupWizard.php:261 wp-security-audit-log.php:1193
msgid "Extension activated"
msgstr ""
-#: classes/Views/SetupWizard.php:262 wp-security-audit-log.php:1189
+#: classes/Views/SetupWizard.php:262 wp-security-audit-log.php:1194
msgid "Install failed"
msgstr ""
@@ -2822,6 +2944,10 @@ msgstr ""
#: classes/Views/SetupWizard.php:562 classes/Views/SetupWizard.php:611
#: classes/Views/SetupWizard.php:671 classes/Views/SetupWizard.php:672
#: classes/Views/SetupWizard.php:874 classes/Views/SetupWizard.php:875
+#: extensions/external-db/classes/Connections.php:214
+#: extensions/external-db/classes/Connections.php:565
+#: extensions/external-db/classes/Mirroring.php:286
+#: extensions/external-db/classes/Mirroring.php:601
msgid "Next"
msgstr ""
@@ -3012,6 +3138,7 @@ msgid ""
msgstr ""
#: classes/Views/ToggleAlerts.php:337 defaults.php:417
+#: extensions/email-notifications/classes/Notifications.php:179
msgid "WooCommerce"
msgstr ""
@@ -3184,6 +3311,7 @@ msgid ""
msgstr ""
#: classes/Views/ToggleAlerts.php:654
+#: extensions/users-sessions-management/classes/Views.php:1348
msgid "Save Changes"
msgstr ""
@@ -3198,6 +3326,9 @@ msgid "The %s log level has been successfully loaded and applied."
msgstr ""
#: classes/Views/ToggleAlerts.php:669
+#: extensions/email-notifications/classes/Notifications.php:292
+#: extensions/email-notifications/classes/Notifications.php:898
+#: extensions/email-notifications/classes/Notifications.php:2036
msgid "OK"
msgstr ""
@@ -3260,6 +3391,7 @@ msgid "Users Logins & Sessions Events"
msgstr ""
#: defaults.php:88
+#: extensions/email-notifications/classes/Notifications.php:1365
msgid "User Activity"
msgstr ""
@@ -6729,208 +6861,3566 @@ msgstr ""
msgid "The Security: no advanced settings for authors feature"
msgstr ""
-#. translators: Username
-#: wp-security-audit-log.php:837 wp-security-audit-log.php:864
-#, php-format
-msgid "Hey %1$s"
+#: extensions/class-wsal-extension-manager.php:225
+#: extensions/external-db/classes/Settings.php:109
+#: extensions/external-db/classes/Settings.php:619
+msgid "External Storage"
msgstr ""
-#: wp-security-audit-log.php:838
-msgid ""
-"Never miss an important update! Opt-in to our security and feature updates "
-"notifications, and non-sensitive diagnostic tracking with freemius.com."
+#: extensions/class-wsal-extension-manager.php:266
+#: extensions/class-wsal-extension-manager.php:306
+#: extensions/class-wsal-extension-manager.php:330
+#: extensions/external-db/classes/Mirroring.php:658
+#: extensions/external-db/classes/Settings.php:121
+msgid "Mirroring"
msgstr ""
-#: wp-security-audit-log.php:839 wp-security-audit-log.php:867
-msgid "Note: "
+#: extensions/class-wsal-extension-manager.php:383
+#: extensions/external-db/classes/Settings.php:115
+#: extensions/external-db/classes/Settings.php:871
+msgid "Archiving"
msgstr ""
-#: wp-security-audit-log.php:840 wp-security-audit-log.php:868
-msgid "NO AUDIT LOG ACTIVITY & DATA IS SENT BACK TO OUR SERVERS."
+#: extensions/email-notifications/classes/AddNotification.php:58
+msgid "Add New Email Notification"
msgstr ""
-#. translators: 1: Plugin name. 2: Freemius link.
-#: wp-security-audit-log.php:866
+#: extensions/email-notifications/classes/AddNotification.php:72
+msgid "Add notification"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:236
+#: extensions/email-notifications/classes/EditNotification.php:240
+msgid "Back"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:252
+msgid "You have reached the maximum number of notifications you can add."
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:297
+#: extensions/email-notifications/classes/EditNotification.php:348
+#: extensions/email-notifications/classes/Notifications.php:832
+#: extensions/email-notifications/classes/Notifications.php:952
+#: extensions/email-notifications/classes/Notifications.php:1361
+#: extensions/email-notifications/classes/Notifications.php:1525
+#: extensions/email-notifications/classes/Notifications.php:1619
+#: extensions/email-notifications/classes/Notifications.php:1785
+#: extensions/email-notifications/classes/SMSProviderSettings.php:237
#, php-format
-msgid ""
-"Please help us improve %2$s! If you opt-in, some non-sensitive data about "
-"your usage of %2$s will be sent to %5$s, a diagnostic tracking service we "
-"use. If you skip this, that's okay! %2$s will still work just fine."
+msgid "Click %s to configure Twilio integration for SMS notifications."
msgstr ""
-#. translators: Plugin name
-#: wp-security-audit-log.php:888
+#: extensions/email-notifications/classes/AddNotification.php:297
+#: extensions/email-notifications/classes/EditNotification.php:348
+#: extensions/email-notifications/classes/Notifications.php:832
+#: extensions/email-notifications/classes/Notifications.php:952
+#: extensions/email-notifications/classes/Notifications.php:1361
+#: extensions/email-notifications/classes/Notifications.php:1525
+#: extensions/email-notifications/classes/Notifications.php:1619
+#: extensions/email-notifications/classes/Notifications.php:1785
+#: extensions/email-notifications/classes/SMSProviderSettings.php:237
+msgid "here"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:305
+#: extensions/email-notifications/classes/EditNotification.php:356
#, php-format
msgid ""
-"Get a free 7-day trial of the premium edition of %s. No credit card "
-"required, no commitments!"
+"Configure the triggers that should match for an email and / or SMS "
+"notification to be sent. You can add up to 20 triggers, use the AND and OR "
+"operands, and also group triggers together. Refer to the %s for more "
+"information."
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:305
+#: extensions/email-notifications/classes/EditNotification.php:356
+msgid "Trigger groups documentation"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:310
+#: extensions/email-notifications/classes/EditNotification.php:361
+msgid "Triggers"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:311
+#: extensions/email-notifications/classes/EditNotification.php:362
+msgid "Add Trigger"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:325
+#: extensions/email-notifications/classes/EditNotification.php:405
+msgid "Use default email template"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:330
+#: extensions/email-notifications/classes/EditNotification.php:414
+msgid "Use event specific email template"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:355
+#: extensions/email-notifications/classes/EditNotification.php:447
+#: extensions/external-db/classes/Connections.php:95
+#: extensions/external-db/classes/Mirroring.php:123
+msgid "Name"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:356
+#: extensions/email-notifications/classes/EditNotification.php:448
+#: extensions/email-notifications/classes/Notifications.php:1959
+#: extensions/email-notifications/classes/Notifications.php:1970
+msgid "Title"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:364
+#: extensions/email-notifications/classes/EditNotification.php:456
+#: extensions/email-notifications/classes/Notifications.php:969
+#: extensions/email-notifications/classes/Notifications.php:992
+#: extensions/email-notifications/classes/Notifications.php:1009
+#: extensions/email-notifications/classes/Notifications.php:1026
+#: extensions/email-notifications/classes/Notifications.php:1043
+#: extensions/email-notifications/classes/Notifications.php:1067
+#: extensions/email-notifications/classes/Notifications.php:1091
+#: extensions/email-notifications/classes/Notifications.php:1106
+#: extensions/email-notifications/classes/Notifications.php:1121
+#: extensions/email-notifications/classes/Notifications.php:1143
+#: extensions/email-notifications/classes/Notifications.php:1156
+#: extensions/email-notifications/classes/Notifications.php:1169
+#: extensions/email-notifications/classes/Notifications.php:1182
+#: extensions/email-notifications/classes/Notifications.php:1195
+#: extensions/email-notifications/classes/Notifications.php:1208
+#: extensions/email-notifications/classes/Notifications.php:1232
+#: extensions/email-notifications/classes/Notifications.php:1247
+#: extensions/email-notifications/classes/Notifications.php:1262
+#: extensions/email-notifications/classes/Notifications.php:1277
+#: extensions/email-notifications/classes/Notifications.php:1292
+#: extensions/email-notifications/classes/Notifications.php:1314
+#: extensions/email-notifications/classes/Notifications.php:1379
+#: extensions/email-notifications/classes/Notifications.php:1394
+#: extensions/email-notifications/classes/Notifications.php:1409
+#: extensions/email-notifications/classes/Notifications.php:1433
+#: extensions/email-notifications/classes/Notifications.php:1448
+#: extensions/email-notifications/classes/Notifications.php:1463
+#: extensions/email-notifications/classes/Notifications.php:1478
+#: extensions/email-notifications/classes/Notifications.php:1540
+#: extensions/email-notifications/classes/Notifications.php:1555
+#: extensions/email-notifications/classes/Notifications.php:1570
+#: extensions/email-notifications/classes/Notifications.php:1634
+#: extensions/email-notifications/classes/Notifications.php:1651
+#: extensions/email-notifications/classes/Notifications.php:1668
+#: extensions/email-notifications/classes/Notifications.php:1685
+#: extensions/email-notifications/classes/Notifications.php:1702
+#: extensions/email-notifications/classes/Notifications.php:1719
+#: extensions/email-notifications/classes/Notifications.php:1736
+#: extensions/email-notifications/classes/Notifications.php:1802
+#: extensions/email-notifications/classes/Notifications.php:1819
+#: extensions/email-notifications/classes/Notifications.php:1836
+#: extensions/email-notifications/classes/Notifications.php:1853
+#: extensions/users-sessions-management/classes/Views.php:895
+msgid "Email"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:370
+#: extensions/email-notifications/classes/EditNotification.php:462
+#: extensions/email-notifications/classes/Notifications.php:995
+#: extensions/email-notifications/classes/Notifications.php:1012
+#: extensions/email-notifications/classes/Notifications.php:1029
+#: extensions/email-notifications/classes/Notifications.php:1046
+#: extensions/email-notifications/classes/Notifications.php:1070
+#: extensions/email-notifications/classes/Notifications.php:1094
+#: extensions/email-notifications/classes/Notifications.php:1109
+#: extensions/email-notifications/classes/Notifications.php:1124
+#: extensions/email-notifications/classes/Notifications.php:1146
+#: extensions/email-notifications/classes/Notifications.php:1159
+#: extensions/email-notifications/classes/Notifications.php:1172
+#: extensions/email-notifications/classes/Notifications.php:1185
+#: extensions/email-notifications/classes/Notifications.php:1198
+#: extensions/email-notifications/classes/Notifications.php:1211
+#: extensions/email-notifications/classes/Notifications.php:1235
+#: extensions/email-notifications/classes/Notifications.php:1250
+#: extensions/email-notifications/classes/Notifications.php:1265
+#: extensions/email-notifications/classes/Notifications.php:1280
+#: extensions/email-notifications/classes/Notifications.php:1295
+#: extensions/email-notifications/classes/Notifications.php:1317
+#: extensions/email-notifications/classes/Notifications.php:1382
+#: extensions/email-notifications/classes/Notifications.php:1397
+#: extensions/email-notifications/classes/Notifications.php:1412
+#: extensions/email-notifications/classes/Notifications.php:1436
+#: extensions/email-notifications/classes/Notifications.php:1451
+#: extensions/email-notifications/classes/Notifications.php:1466
+#: extensions/email-notifications/classes/Notifications.php:1481
+#: extensions/email-notifications/classes/Notifications.php:1543
+#: extensions/email-notifications/classes/Notifications.php:1558
+#: extensions/email-notifications/classes/Notifications.php:1573
+#: extensions/email-notifications/classes/Notifications.php:1637
+#: extensions/email-notifications/classes/Notifications.php:1654
+#: extensions/email-notifications/classes/Notifications.php:1671
+#: extensions/email-notifications/classes/Notifications.php:1688
+#: extensions/email-notifications/classes/Notifications.php:1705
+#: extensions/email-notifications/classes/Notifications.php:1722
+#: extensions/email-notifications/classes/Notifications.php:1739
+#: extensions/email-notifications/classes/Notifications.php:1805
+#: extensions/email-notifications/classes/Notifications.php:1822
+#: extensions/email-notifications/classes/Notifications.php:1839
+#: extensions/email-notifications/classes/Notifications.php:1856
+msgid "Mobile Number"
+msgstr ""
+
+#: extensions/email-notifications/classes/AddNotification.php:374
+msgid ""
+"Specify the email addresses, WordPress usernames or phone numbers of those "
+"who should receive the notification once the trigger is matched. To specify "
+"multiple recipients separate them with a comma (,)."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:381
+#: extensions/email-notifications/classes/Common.php:446
+msgid "The form is not valid. Please reload the page and try again."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:392
+#: extensions/email-notifications/classes/Common.php:407
+msgid "The EVENT ID is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:398
+msgid "Internal Error. Please reload the page and try again."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:414
+msgid "The USERNAME is not valid. Maximum of 50 characters allowed."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:420
+msgid "The USERNAME does not exist."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:424
+#: extensions/email-notifications/classes/Common.php:503
+#: extensions/email-notifications/classes/Common.php:523
+#: extensions/email-notifications/classes/Common.php:546
+#: extensions/email-notifications/classes/Common.php:559
+#: extensions/email-notifications/classes/Common.php:573
+#: extensions/email-notifications/classes/Common.php:583
+#, php-format
+msgid "%s is not valid"
msgstr ""
-#. Plugin Name of the plugin/theme
-#: wp-security-audit-log.php:889
-msgid "WP Activity Log"
+#: extensions/email-notifications/classes/Common.php:433
+msgid "Selected USER ROLE is not valid."
msgstr ""
-#: wp-security-audit-log.php:893
-msgid "Start free trial"
+#: extensions/email-notifications/classes/Common.php:440
+msgid "The SOURCE IP is not valid. Maximum of 15 characters allowed."
msgstr ""
-#: wp-security-audit-log.php:961
-#, php-format
-msgid ""
-"You need to activate the licence key to use WP Securitity Audit Log Premium. "
-"%2$s"
+#: extensions/email-notifications/classes/Common.php:455
+msgid "The SOURCE IP is not valid."
msgstr ""
-#: wp-security-audit-log.php:962
-msgid "Activate the licence key now"
+#: extensions/email-notifications/classes/Common.php:464
+msgid "The SOURCE IP fragment is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:481
+msgid "DATE is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:490
+#: extensions/email-notifications/classes/Common.php:496
+msgid "TIME is not valid."
msgstr ""
-#: wp-security-audit-log.php:979
+#: extensions/email-notifications/classes/Common.php:517
+#: extensions/email-notifications/classes/Common.php:540
#, php-format
+msgid "%s was not found"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:534
+msgid "The enviroment is not multisite."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:555
+msgid "Selected POST TYPE is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:568
+msgid "Selected POST STATUS is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:579
+msgid "Selected OBJECT is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:589
+msgid "Selected TYPE is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:814
+#: extensions/email-notifications/classes/Common.php:842
+#: extensions/email-notifications/classes/Common.php:844
+msgid "Title is required."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:851
+msgid "Title is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:861
+msgid "Please add at least one condition."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:909
+#: extensions/email-notifications/classes/Common.php:915
+#: extensions/email-notifications/classes/Common.php:920
+msgid "The form is not valid. Please refresh the page and try again."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:929
+msgid "A trigger's condition must not be longer than 50 characters."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:959
+msgid "Email or Username is required."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:960
+msgid "Mobile number is required."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:965
+msgid "Email or Username is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:972
+msgid "Mobile number is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1024
+#: extensions/email-notifications/classes/Notifications.php:592
+msgid "Notification could not be saved."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1031
+#: extensions/email-notifications/classes/Notifications.php:651
+msgid "Notification successfully saved."
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1109
+#: extensions/email-notifications/classes/Common.php:1171
+msgid "Notification {title} on website {site} triggered"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1110
+#: extensions/email-notifications/classes/Common.php:1172
msgid ""
-"The license is limited to %s sub-sites. You need to upgrade your license to "
-"cover all the sub-sites on this network."
+"Notification {title} was triggered. Below are the "
+"notification details:"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1112
+msgid "Website"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1114
+#: extensions/email-notifications/classes/Common.php:1175
+#: extensions/search/classes/FilterManager.php:474
+#: extensions/users-sessions-management/classes/Views.php:701
+#: extensions/users-sessions-management/classes/Views.php:894
+msgid "Username"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1115
+msgid "User role"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1116
+msgid "IP address"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1119
+msgid "Event Message"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1120
+msgid "Event generated on"
msgstr ""
-#: wp-security-audit-log.php:1089
+#: extensions/email-notifications/classes/Common.php:1122
msgid ""
-"Error: You do not have sufficient permissions to disable this custom field."
+"These email notifications are sent with WP Activity Log, the most comprehensive "
+"WordPress activity log plugin solution."
msgstr ""
-#: wp-security-audit-log.php:1122
-#, php-format
+#: extensions/email-notifications/classes/Common.php:1145
+#: extensions/email-notifications/classes/Common.php:1204
+msgid "User/Role"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1176
+#: extensions/search/classes/FilterManager.php:486
+#: extensions/search/classes/Filters/userrolefilter.php:49
+#: extensions/search/classes/Filters/userrolefilter.php:87
+#: extensions/users-sessions-management/classes/Views.php:899
+msgid "User Role"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1178
+msgid "Generated On"
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1180
msgid ""
-"Custom Field %1$s is no longer being monitored. Enable the monitoring "
-"of this custom field again from the"
+"Monitoring of WordPress and Email Notifications provided by WP Activity Log, WordPress most "
+"comprehensive audit trail plugin."
msgstr ""
-#: wp-security-audit-log.php:1122
-msgid "Excluded Objects"
+#: extensions/email-notifications/classes/Common.php:1205
+msgid "Event"
msgstr ""
-#: wp-security-audit-log.php:1122
-msgid " tab in the plugin settings"
+#: extensions/email-notifications/classes/Common.php:1220
+msgid "Subject "
msgstr ""
-#: wp-security-audit-log.php:1134
-msgid "Error: You do not have sufficient permissions to disable this alert."
+#: extensions/email-notifications/classes/Common.php:1229
+msgid "Body "
+msgstr ""
+
+#: extensions/email-notifications/classes/Common.php:1232
+msgid "HTML is accepted. Available template tags:"
msgstr ""
-#: wp-security-audit-log.php:1158
+#. translators: singular or plural form of a login total count.
+#: extensions/email-notifications/classes/DailyNotification.php:338
#, php-format
-msgid "Alert %1$s is no longer being monitored. %2$s"
+msgid "was %d login"
+msgid_plural "were %d logins"
+msgstr[0] ""
+msgstr[1] ""
+
+#. translators: a number that is total count of unique users in a login group.
+#: extensions/email-notifications/classes/DailyNotification.php:320
+#: extensions/email-notifications/classes/DailyNotification.php:344
+#, php-format
+msgid "%d unique user"
+msgid_plural "%d unique users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: extensions/email-notifications/classes/DailyNotification.php:351
+#, php-format
+msgid ""
+"There %1$s on your site today from %2$s. Below is a list of the users and "
+"the IP addresses they logged in from:"
msgstr ""
-#: wp-security-audit-log.php:1158
+#: extensions/email-notifications/classes/DailyNotification.php:383
msgid ""
-"You can enable this alert again from the Enable/Disable Alerts node in the "
-"plugin menu."
+"There were failed logins due to a wrong password from the following IP "
+"addresses:"
msgstr ""
-#: wp-security-audit-log.php:1259
-#, php-format
+#: extensions/email-notifications/classes/DailyNotification.php:405
msgid ""
-"You are using a version of PHP that is older than %s, which is no longer "
-"supported."
+"There were failed logins due to a wrong username from the following IP "
+"addresses:"
+msgstr ""
+
+#: extensions/email-notifications/classes/EditNotification.php:58
+msgid "Edit Email Notification"
+msgstr ""
+
+#: extensions/email-notifications/classes/EditNotification.php:72
+msgid "Edit Notification"
+msgstr ""
+
+#: extensions/email-notifications/classes/EditNotification.php:239
+#: extensions/email-notifications/classes/Notifications.php:1908
+msgid "Add New"
msgstr ""
-#: wp-security-audit-log.php:1261
+#: extensions/email-notifications/classes/EditNotification.php:270
msgid ""
-"Contact us on plugins@wpwhitesecurity.com to help you switch the version of PHP you "
-"are using."
+"You do not have sufficient permissions to access this page. - INVALID "
+"NOTIFICATION ID"
msgstr ""
-#: wp-security-audit-log.php:1263
+#: extensions/email-notifications/classes/EditNotification.php:466
msgid ""
-"The WP Activity Log plugin is a multisite network tool, so it has to "
-"be activated at network level."
+"Specify the email address or WordPress usernames who should receive the "
+"notification once the trigger is matched. To specify multiple email "
+"addresses or usernames separate them with a comma (,)."
msgstr ""
-#: wp-security-audit-log.php:1265
-msgid "Redirect me to the network dashboard"
+#: extensions/email-notifications/classes/NotificationBuilder.php:76
+#: extensions/email-notifications/classes/Notifications.php:1946
+#: extensions/email-notifications/classes/Notifications.php:2009
+#: extensions/email-notifications/classes/Notifications.php:2024
+#: extensions/external-db/classes/Connections.php:144
+#: extensions/external-db/classes/Mirroring.php:204
+#: extensions/search/search-init.php:330
+msgid "Delete"
msgstr ""
-#: wp-security-audit-log.php:1270
-#, php-format
-msgid "Please install the %s plugin on the MainWP dashboard."
+#: extensions/email-notifications/classes/NotificationBuilder.php:77
+msgid "Save Notification"
msgstr ""
-#: wp-security-audit-log.php:1270
-msgid "Activity Log for MainWP"
+#: extensions/email-notifications/classes/NotificationBuilder.php:78
+msgid "Add Notification"
msgstr ""
-#: wp-security-audit-log.php:1272
-#, php-format
-msgid ""
-"The WP Activity Log should be installed on the child sites only. Refer "
-"to the %s for more information."
+#: extensions/email-notifications/classes/NotificationBuilder.php:79
+msgid "Email Address(es) or WordPress Users:"
msgstr ""
-#: wp-security-audit-log.php:1272
-msgid "getting started guide"
+#: extensions/email-notifications/classes/NotificationBuilder.php:80
+msgid "Phone number(s) for SMS notifications:"
msgstr ""
-#: wp-security-audit-log.php:1358
-msgid ""
-"This plugin uses 3 tables in the WordPress database to store the activity "
-"log and settings. It seems that these tables were not created."
+#: extensions/email-notifications/classes/Notifications.php:158
+msgid "Built-in Notifications"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:163
+msgid "WordPress System"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:167
+msgid "Logins & Users Profiles"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:171
+msgid "Content Changes"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:175
+msgid "Multisite"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:185
+#: extensions/email-notifications/classes/Notifications.php:851
+msgid "Custom Notifications"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:191
+msgid "Notifications Templates"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:197
+#: extensions/email-notifications/classes/Notifications.php:2085
+msgid "Default Email Template"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:201
+#: extensions/email-notifications/classes/Notifications.php:2081
+msgid "Default SMS Template"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:244
+#: extensions/email-notifications/classes/Notifications.php:258
+msgid "Notifications"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:293
+#: extensions/email-notifications/classes/Notifications.php:869
+msgid "Test Notifications"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:294
+msgid "Trigger Builder Test Notification"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:296
+msgid "Please specify an email address or a phone number to test."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:601
+msgid "Email Address and Mobile Number cannot be empty."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:609
+msgid "Email Address or Username is not valid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:619
+msgid "Phone number is not valid."
msgstr ""
-#: wp-security-audit-log.php:1360
+#: extensions/email-notifications/classes/Notifications.php:748
msgid ""
-"This could happen because the database user does not have the right "
-"privileges to create the tables in the database. We recommend you to update "
-"the privileges and try enabling the plugin again."
+"To configure email notifications please contact the administrator of this "
+"multisite network on "
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:757
+msgid "Invalid request."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:763
+msgid "An error occurred while sending the daily summary email."
msgstr ""
-#: wp-security-audit-log.php:1362
+#: extensions/email-notifications/classes/Notifications.php:767
+msgid "Daily summary email sent."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:841
#, php-format
msgid ""
-"If after doing so you still have issues, please send us an email on %s for "
-"assistance."
+"Tick the check box and specify an email address or username to enable a "
+"notification. You can specify a phone number to send a SMS notification as "
+"well (%s). Multiple recipients or numbers should be separated with a comma "
+"(,). Click the Save Notifications button to save the changes."
msgstr ""
-#: wp-security-audit-log.php:1362
-msgid "support@wpsecurityauditlog.com"
+#: extensions/email-notifications/classes/Notifications.php:842
+msgid "Configure Twilio account integration"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:850
+#, php-format
+msgid "You can create your own notification criteria in the %s tab."
msgstr ""
-#: wp-security-audit-log.php:2007
+#: extensions/email-notifications/classes/Notifications.php:870
+msgid "Save Notifications"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:879
msgid ""
-"For security and auditing purposes, a record of all of your logged-in "
-"actions and changes within the WordPress dashboard will be recorded in an "
-"audit log with the WP Activity Log plugin. The audit log also includes the "
-"IP address where you accessed this site from."
+"Specify an email address to where you would like to send a test email "
+"notification:"
msgstr ""
-#: wp-security-audit-log.php:2026
-msgid "Every 6 hours"
+#: extensions/email-notifications/classes/Notifications.php:884
+msgid ""
+"Specify a mobile phone number to where you would like to send a test SMS "
+"notification:"
msgstr ""
-#: wp-security-audit-log.php:2030
-msgid "Every 45 minutes"
+#: extensions/email-notifications/classes/Notifications.php:890
+msgid "Send"
msgstr ""
-#: wp-security-audit-log.php:2034
-msgid "Every 30 minutes"
+#: extensions/email-notifications/classes/Notifications.php:891
+#: extensions/external-db/classes/Connections.php:216
+#: extensions/external-db/classes/Mirroring.php:287
+msgid "Cancel"
msgstr ""
-#: wp-security-audit-log.php:2038
-msgid "Every 15 minutes"
+#: extensions/email-notifications/classes/Notifications.php:955
+msgid "Daily Summary of Activity Log"
msgstr ""
-#: wp-security-audit-log.php:2042
-msgid "Every 10 minutes"
+#: extensions/email-notifications/classes/Notifications.php:966
+msgid "Send me a summary of what happens every day."
msgstr ""
-#: wp-security-audit-log.php:2046
+#: extensions/email-notifications/classes/Notifications.php:970
+msgid "Send Summary Now"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:976
+msgid "Suspicious Activity"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:985
+#: extensions/email-notifications/classes/Notifications.php:1002
+msgid "There are more than"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:987
+msgid "failed WordPress logins for a WordPress user (Event ID 1002)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1004
+msgid "failed logins of non existing users (Event ID 1003)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1019
+msgid "A user generates more than"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1021
+msgid "404 HTTP errors (Event ID 6007)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1036
+msgid "More than"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1038
+msgid "404 HTTP errors are generated by the same IP address (Event ID 6023)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1053
+msgid "WordPress Install Changes"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1062
+msgid "WordPress was updated (Event ID 6004)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1077
+msgid "Website File Changes"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1086
+msgid "File was modified (Event ID 6028)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1101
+msgid "File was added to the website (Event ID 6029)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1116
+msgid "File was deleted from website (Event ID 6030)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1131
+msgid "Plugin Changes Notifications"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1139
+msgid "New plugin is installed (Event ID 5000)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1152
+msgid "Installed plugin is activated (Event ID 5001)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1165
+msgid "Plugin file is modified (Event ID 2051)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1178
+msgid "Installed plugin is deactivated (Event ID 5002)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1191
+msgid "A plugin is uninstalled (Event ID 5003)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1204
+msgid "Installed plugin is upgraded (Event ID 5004)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1218
+msgid "Themes Changes Notifications"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1227
+msgid "New theme is installed (Event ID 5005)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1242
+msgid "Installed theme is activated (Event ID 5006)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1257
+msgid "Theme file is modified (Event ID 2046)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1272
+msgid "A theme is uninstalled (Event ID 5007)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1287
+msgid "Installed theme is updated (Event ID 5031)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1302
+msgid "Critical Events"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1310
+msgid "Critical Event is Generated"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1374
+msgid "User logs in (Event ID 1000)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1389
+msgid "First time user logs in"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1404
+msgid "User changed password (Event ID 4003)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1419
+msgid "User Profile Changes"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1428
+msgid "User changed email address (Event IDs 4005, 4006)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1443
+msgid "User's role has changed (Event ID 4002)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1458
+msgid "User changed the password of another user (Event ID 4004)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1473
+msgid "New user is created (Event IDs 4000, 4001, 4012)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1535
+msgid "New content is published (Event ID 2001)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1550
+msgid "Content in a post, page or custom post type is changed (Event ID 2065)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1565
+msgid ""
+"Anything but content in a post is changed (such as date, category, status, "
+"parent page etc)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1630
+msgid "User granted super admin (Event ID 4008)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1646
+msgid "User revoked super admin (Event ID 4009)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1663
+msgid "User added to site (Event ID 4010)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1680
+msgid "User removed from site (Event ID 4011)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1697
+msgid "Site changes"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1714
+msgid "Activated theme on network (Event ID 5008)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1731
+msgid "Deactivated theme from network (Event ID 5009)"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1797
+msgid "Any product change"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1814
+msgid "Any store settings change"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1831
+msgid "Any coupon code changes"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1848
+msgid "Any orders changes"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1903
+#, php-format
+msgid ""
+"Use the trigger builder to build any type of criteria that triggers email "
+"and / or SMS notifications. Refer to the %s for more detailed information."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1904
+msgid "WordPress notifications documentation"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1921
+#: extensions/reports/classes/HtmlReportGenerator.php:175
+#: extensions/reports/classes/HtmlReportGenerator.php:179
+msgid "All"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1930
+#: extensions/email-notifications/classes/Notifications.php:1932
+#: extensions/email-notifications/classes/Notifications.php:2053
+#: extensions/email-notifications/classes/Notifications.php:2055
+msgid "Search Notifications"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1943
+#: extensions/email-notifications/classes/Notifications.php:2021
+msgid "Bulk actions"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1944
+#: extensions/email-notifications/classes/Notifications.php:2005
+#: extensions/email-notifications/classes/Notifications.php:2022
+#: extensions/external-db/classes/Connections.php:432
+#: extensions/external-db/classes/Mirroring.php:185
+#: extensions/external-db/classes/Settings.php:1345
+msgid "Enable"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1945
+#: extensions/email-notifications/classes/Notifications.php:2003
+#: extensions/email-notifications/classes/Notifications.php:2023
+#: extensions/external-db/classes/Mirroring.php:188
+#: extensions/external-db/classes/Settings.php:1348
+msgid "Disable"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1948
+#: extensions/email-notifications/classes/Notifications.php:2026
+msgid "Apply"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1993
+msgid "Select"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1997
+#: extensions/email-notifications/classes/Notifications.php:1999
+msgid "Edit this notification"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:1999
+msgid "Edit"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2003
+msgid "Disable this notification"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2005
+msgid "Enable this notification"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2009
+msgid "Delete this notification"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2012
+msgid "Send Test Email"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2013
+msgid "Send Test SMS"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2046
+msgid "No notifications found to match your search."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2060
+msgid ""
+"No notifications found. Click the Add New button above to "
+"create one."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2080
+msgid "You can modify the default notification SMS template from here."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2082
+msgid ""
+"This is the default template for SMS notifications. The maximum number of "
+"characters for a SMS is 160, so if you configure longer notifications you "
+"will be charged for multiple SMS notifications."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2084
+msgid "You can modify the default notification email template from here."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2086
+msgid ""
+"This is the default template. You can override this default template with "
+"notification specific template which you can modify when using the Trigger "
+"Builder."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2122
+msgid "Subject"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2127
+msgid "Body"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2152
+msgid "HTML is accepted."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2153
+msgid "Available template tags:"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2175
+msgid "Shorten URLs"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2180
+msgid "Shorten URLs with Bit.ly"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2183
+msgid "Bit.ly Access Token"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2188
+#, php-format
+msgid ""
+"The URL shortener works for URLs in the {message} variable and will not "
+"shorten the URL of the website in the variable {site}. Shorten all URLs in "
+"the message using the %s."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2188
+msgid "Bit.ly URL Shortener API"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2228
+msgid "Template could not be saved."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2230
+msgid "Template successfully saved."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2348
+#: extensions/email-notifications/classes/Notifications.php:2452
+msgid "You do not have sufficient permissions to perform this test."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2367
+msgid "Test email notification from the WP Activity Log plugin."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2368
+msgid ""
+"This is a test email notification sent with the WP Activity Log plugin."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2371
+msgid "Email address is invalid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2378
+msgid ""
+"This is a test SMS notification sent with the WP Activity Log plugin."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2381
+msgid "Phone number is invalid."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2387
+#: extensions/email-notifications/classes/Notifications.php:2481
+msgid "Email sent successfully."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2390
+#: extensions/email-notifications/classes/Notifications.php:2502
+msgid "SMS sent successfully."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2393
+msgid "Email / SMS sent successfully."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2402
+#: extensions/email-notifications/classes/Notifications.php:2500
+#, php-format
+msgid ""
+"There was a problem sending the SMS. Below is the error we got back from the "
+"SMS provider. Please contact us on %s if you need assistance with this issue."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2405
+#, php-format
+msgid ""
+"There are some problems sending the test email / SMS. Please contact us on "
+"%s to assist you with this problem."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2419
+#: extensions/email-notifications/classes/Notifications.php:2512
+msgid "Nonce verification failed. Please refresh and try again."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2464
+msgid "Unknown notification."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2484
+#, php-format
+msgid ""
+"There are some problems sending the test email. Please contact us on %s to "
+"assist you with this problem."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2497
+msgid "Mobile number is not set for this notification."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2505
+#, php-format
+msgid ""
+"There are some problems sending the test SMS. Please contact us on %s to "
+"assist you with this problem."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifications.php:2508
+msgid "Unknown notification type."
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifier.php:761
+#: extensions/reports/classes/Common.php:513
+msgid "View the Forum in editor"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifier.php:764
+#: extensions/reports/classes/Common.php:516
+msgid "View the Topic in editor"
+msgstr ""
+
+#: extensions/email-notifications/classes/Notifier.php:946
+msgid "Contact us on support@wpsecurityauditlog.com for assistance"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:118
+msgid "SMS Provider"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:146
+#: extensions/email-notifications/classes/SMSProviderSettings.php:148
+#: extensions/external-db/classes/Connections.php:138
+msgid "Test"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:169
+msgid ""
+"Configure your Twilio account details to be able to configure and send SMS "
+"notifications."
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:172
+#, php-format
+msgid ""
+"SMS notifications are available in the Professional and Business Plans. %s "
+"to configure and receive SMS notifications."
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:172
+msgid "Upgrade now"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:178
+msgid "Account SID"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:181
+msgid "Enter Account SID"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:185
+#: extensions/email-notifications/classes/SMSProviderSettings.php:200
+#, php-format
+msgid "To view API credentials visit %s"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:193
+msgid "Auth Token"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:196
+msgid "Enter Auth Token"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:208
+msgid "Twilio number / Alphanumeric ID"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:211
+#: extensions/email-notifications/classes/SMSProviderSettings.php:250
+msgid "+16175551212"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:212
+msgid ""
+"Specify a Twilio phone number including the country code (e.g. +16175551212) "
+"or a valid Alphanumeric ID (e.g. WSAL)"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:247
+msgid "Recipient Number"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:251
+msgid "Country code + 10-digit Twilio phone number (i.e. +16175551212)"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:257
+msgid "Message Body"
+msgstr ""
+
+#: extensions/email-notifications/classes/SMSProviderSettings.php:261
+msgid "The text of the message you want to send, limited to 1600 characters."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:18
+#: extensions/external-db/classes/Mirroring.php:18
+#: extensions/external-db/classes/Settings.php:17
+#: extensions/users-sessions-management/classes/Views.php:17
+msgid "You are not allowed to view this page."
+msgstr ""
+
+#. translators: 1- a string wrapped in a link saying to create or configure databases.
+#: extensions/external-db/classes/Connections.php:80
+#, php-format
+msgid ""
+"In this section you can %1$s and services connections. These connections can "
+"be used as external activity log storage, activity log archive or to mirror "
+"the activity log to it. In use connections cannot be deleted."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:84
+msgid "create and configure databases"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:89
+msgid "Create a Connection"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:91
+#: extensions/external-db/classes/Settings.php:104
+msgid "Connections"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:96
+#: extensions/external-db/classes/Mirroring.php:124
+msgid "Type"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:97
+msgid "Used for"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:106
+msgid "No connections so far."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:123
+#: extensions/external-db/classes/Mirroring.php:198
+msgid "Configure"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:136
+msgid "Send a test message"
+msgstr ""
+
+#. Plugin Name of the plugin/theme
+#: extensions/external-db/classes/Connections.php:173
+#: wp-security-audit-log.php:894
+msgid "WP Activity Log"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:175
+#: extensions/external-db/classes/Mirroring.php:252
+msgid "Step 1"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:176
+#: extensions/external-db/classes/Mirroring.php:253
+msgid "Step 2"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:177
+#: extensions/external-db/classes/Mirroring.php:254
+msgid "Step 3"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:184
+msgid "Select the type of connection"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:185
+msgid "Select the type of connection you would like to setup."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:189
+msgid "Type of Connection"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:193
+msgid "MySQL Database"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:194
+msgid "Syslog Server"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:195
+#: extensions/external-db/classes/Mirroring.php:102
+msgid "Slack"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:196
+#: extensions/external-db/classes/Mirroring.php:107
+msgid "Papertrail"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:208
+msgid "Name the connection"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:209
+msgid ""
+"Please specify a friendly name for the connection. Connection names can be "
+"25 characters long and can only contain letters, numbers and underscores."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:213
+msgid "Save Connection"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:233
+#: extensions/external-db/classes/Connections.php:263
+msgid "Configure the connection"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:234
+#: extensions/external-db/classes/Connections.php:264
+msgid "Configure the connection details."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:249
+msgid "No connection name specified!"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:256
+msgid "Configure Connection → "
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:296
+msgid "Connection Name"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:300
+msgid "* Invalid Connection Name"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:313
+msgid "Database Name"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:317
+msgid ""
+"Specify the name of the database where you will store the WordPress Audit "
+"Log."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:322
+msgid "Database User"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:326
+msgid "Specify the username to be used to connect to the database."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:331
+msgid "Database Password"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:335
+msgid ""
+"Specify the password each time you want to submit new changes. For security "
+"reasons, the plugin does not store the password in this form."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:340
+msgid "Database Hostname"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:344
+msgid "Specify the hostname or IP address of the database server."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:349
+msgid "Database Base Prefix"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:359
+msgid ""
+"Specify a prefix for the database tables of the audit log. Ideally this "
+"prefix should be different from the one you use for WordPress so it is not "
+"guessable."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:363
+msgid "Use website URL as table prefix"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:369
+msgid "SSL"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:374
+#: extensions/external-db/classes/Connections.php:385
+msgid "Enable to use SSL to connect with the MySQL server."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:380
+msgid "Client Certificate"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:389
+msgid "CA SSL Certificate (--ssl-ca)"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:392
+msgid "Server SSL Certificate (--ssl-cert)"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:395
+msgid "Client Certificate (--ssl-key)"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:409
+msgid "Destination"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:413
+msgid "* Invalid Papertrail Destination"
+msgstr ""
+
+#. translators: %s: Log destinations link
+#: extensions/external-db/classes/Connections.php:418
+#, php-format
+msgid ""
+"Specify your destination. You can find your Papertrail Destination in the %s "
+"section of your Papertrail account page. It should have the following "
+"format: logs4.papertrailapp.com:54321"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:419
+msgid "Log Destinations"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:427
+msgid "Colorization"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:447
+msgid "Syslog Location"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:453
+msgid "Write to local syslog file"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:458
+msgid "Send messages to remote syslog server"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:462
+msgid "IP Address / Hostname"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:465
+msgid "* Invalid IP/Hostname"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:469
+msgid "Port"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:472
+msgid "* Invalid Port"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:487
+msgid "Bot Name"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:492
+msgid "* Invalid Bot Name"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:493
+msgid ""
+"The name to be used in the slack channel for all the WordPress activity log "
+"events sent from the plugin."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:498
+msgid "WebHook URL"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:503
+msgid "* Invalid WebHook URL"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:507
+#, php-format
+msgid ""
+"If you are not familiar with incoming WebHooks for Slack please refer to %s."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:507
+msgid "Slack help"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:554
+#: extensions/external-db/classes/Mirroring.php:586
+msgid "Connections Wizard"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:555
+#: extensions/external-db/classes/Mirroring.php:588
+msgid "Testing..."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:556
+#: extensions/external-db/classes/Mirroring.php:589
+#: extensions/search/search-init.php:331
+msgid "Deleting..."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:557
+#: extensions/external-db/classes/Mirroring.php:592
+msgid "Connection Failed!"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:558
+#: extensions/external-db/classes/Mirroring.php:593
+msgid "Connected"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:559
+#: extensions/external-db/classes/Mirroring.php:597
+msgid "Are you sure that you want to delete this connection?"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:564
+#: extensions/external-db/classes/Mirroring.php:600
+msgid "Test connection and continue"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:725
+msgid "Connection failed. Please check the configuration again."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:795
+#: extensions/external-db/classes/Connections.php:1004
+#: extensions/external-db/classes/Settings.php:1100
+#: extensions/external-db/classes/Settings.php:1132
+msgid "Successfully connected to database."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:827
+msgid "Successfully connected to Papertrail App."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:834
+msgid "socket_sendto was unable to send activity log events."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:874
+#: extensions/external-db/classes/Connections.php:896
+msgid "Successfully connected to Syslog."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:875
+msgid "Message sent"
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:903
+msgid "Syslog connection testing failed."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:913
+msgid "WP Activity Log connection testing message."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:930
+msgid "Successfully connected to Slack."
+msgstr ""
+
+#: extensions/external-db/classes/Connections.php:945
+msgid "Unknown connection type."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:97
+msgid "external database"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:112
+msgid "Syslog"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:116
+msgid ""
+"In this section you can configure the mirroring of the WordPress to external "
+"databases, services and servers. You can configure multiple mirroring rules."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:117
+msgid "Setup an Activity Log Mirror"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:119
+msgid "The WordPress activity log is currently being mirrored to:"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:125
+#: extensions/external-db/classes/Mirroring.php:397
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1408
+msgid "Frequency"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:135
+#: extensions/external-db/classes/Mirroring.php:213
+msgid "No mirrors so far."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:164
+#: extensions/external-db/classes/Mirroring.php:401
+#: extensions/external-db/classes/Settings.php:928
+msgid "15 minutes"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:167
+#: extensions/external-db/classes/Mirroring.php:402
+#: extensions/external-db/classes/Settings.php:931
+msgid "1 hour"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:170
+#: extensions/external-db/classes/Mirroring.php:403
+#: extensions/external-db/classes/Settings.php:934
+msgid "6 hours"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:173
+#: extensions/external-db/classes/Mirroring.php:404
+#: extensions/external-db/classes/Settings.php:937
+msgid "12 hours"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:176
+#: extensions/external-db/classes/Mirroring.php:405
+#: extensions/external-db/classes/Settings.php:940
+msgid "24 hours"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:200
+msgid "Run Now"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:262
+msgid "Select the connection where to mirror to the activity log"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:263
+#: extensions/external-db/classes/Mirroring.php:323
+msgid ""
+"Please specify a friendly name for the mirroring connection. Connection "
+"names can be 25 characters long, and can only contain letters, numbers and "
+"underscores."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:265
+msgid ""
+"Select one of the connections you have configured to where you want to "
+"mirror the activity log."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:269
+msgid "Configure the frequency"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:270
+msgid "How often do you want to run the mirroring process?"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:273
+msgid "Start once configured?"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:276
+msgid ""
+"Tick this checkbox to enable the mirror and start sending data once set up."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:280
+msgid "Configure Filtering"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:281
+msgid ""
+"Configure any filtering you’d like to apply to this mirroring connection:"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:285
+msgid "Save Mirror"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:304
+msgid "No mirror name specified!"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:313
+msgid "Configure Mirror → "
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:324
+msgid "Configure the mirror"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:325
+msgid "Configure the mirror details."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:348
+msgid "Mirror Name"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:352
+msgid "* Invalid Mirror Name"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:362
+#: extensions/external-db/classes/Settings.php:503
+#: extensions/external-db/classes/Settings.php:685
+msgid "Connection"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:373
+#: extensions/external-db/classes/Settings.php:1173
+msgid "Select a connection"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:431
+msgid "Mirror Events"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:447
+msgid "Send all events"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:452
+msgid "Only send events with these IDs:"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:485
+msgid "Send all events BUT those with these IDs:"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:518
+#, php-format
+msgid "Refer to the %s for more information."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:518
+msgid "list of events and events IDs"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:587
+msgid "Mirroring Wizard"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:590
+msgid "Enabling..."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:591
+msgid "Disabling..."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:594
+msgid "Running..."
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:595
+msgid "Mirror Complete!"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:596
+msgid "Failed!"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:598
+msgid "Are you sure that you want to delete this mirror?"
+msgstr ""
+
+#: extensions/external-db/classes/Mirroring.php:599
+#: extensions/reports/inc/wsal-reporting-view.inc.php:971
+msgid "Select Event Code(s)"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:163
+msgid "External Databases & Services Configuration"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:177
+msgid "DB/Archive/Mirror"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:297
+msgid "Events successfully sent to database."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:304
+msgid "An error occurred while sending events to database."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:392
+msgid "Mirror connection test failed."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:443
+msgid "Please do not close this window while migrating events."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:487
+#: extensions/external-db/classes/Settings.php:669
+#, php-format
+msgid "Read more on %1$s."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:491
+msgid "external storage for activity logs"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:495
+msgid ""
+"In this section you can configure the plugin to store the WordPress activity "
+"log in an external storage rather than the WordPress database. This could be "
+"another database on a remote server."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:501
+msgid "Store WordPress Activity Log in this External Storage"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:510
+msgid "Use Buffer"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:520
+msgid ""
+"Send the events through the buffer so if the connection to the external "
+"database is slow the performance of the website is not affected."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:523
+msgid ""
+"When the buffer is enabled events are sent to the database every 10 minutes, "
+"so the audit log is not updated in real time. Use the button below to clear "
+"the buffer and send the events now."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:526
+msgid "Send Events to Database"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:531
+msgid "Current Connection Details"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:535
+msgid "Currently Connected to database"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:543
+msgid "Save & Test Changes"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:545
+#: extensions/external-db/classes/Settings.php:795
+msgid "Test Connection"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:556
+msgid "Migrate Events to External Storage"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:558
+msgid ""
+"Migrate existing WordPress Security Events from the WordPress database to "
+"the new external database."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:569
+msgid "Migrate Events to WordPress Database"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:571
+msgid ""
+"Remove the external database and start using the WordPress database again. "
+"In the process the events will be automatically migrated to the WordPress "
+"database."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:673
+msgid "archiving activity log data"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:677
+msgid ""
+"In this section you can configure the archiving of old events to an archive "
+"database. Archives events can still be accessed and are included in search "
+"results and reports."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:683
+msgid "Archive the WordPress Activity Log to this Database"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:694
+msgid "Archive events that are older than"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:696
+msgid "Archiving Options"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:710
+msgid "Archive events older than"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:714
+msgid "months"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:717
+msgid "years"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:723
+msgid ""
+"The configured archiving options will override the Security Events Pruning "
+"settings configured in the plugin’s settings."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:729
+msgid "WordPress Activity Log Data Retention"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:730
+msgid ""
+"Once you configure archiving these data retention settings will be used "
+"instead of the ones configured in the plugin's general settings."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:733
+msgid "Activity Log Retention"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:768
+msgid "Next Scheduled Cleanup is in "
+msgstr ""
+
+#. translators: Events Purning Link
+#: extensions/external-db/classes/Settings.php:773
+#, php-format
+msgid "(or %s)"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:774
+msgid "Run Manually"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:796
+msgid "Execute Archiving Now"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:799
+msgid "Reset Archiving Settings"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:800
+msgid ""
+"Click the button below to disable archiving and reset the settings to no "
+"archiving. Note that the archived data will not be deleted."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:801
+msgid "Disable Archiving & Reset Settings"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:917
+msgid "Run the Archiving Process Every"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:946
+msgid "Stop Archiving"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:1047
+msgid "Attention!"
+msgstr ""
+
+#. translators: %1$s: Alerts Pruning Period, %2$s: Alerts Archiving Period
+#: extensions/external-db/classes/Settings.php:1051
+#, php-format
+msgid ""
+"The activity log retention setting is configured to delete events older than "
+"%1$s. This period should be longer than the configured %2$s archiving period "
+"otherwise events will be deleted and not archived."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:1293
+msgid "Resetting..."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:1294
+msgid "Resetting Failed!"
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:1296
+#, php-format
+msgid " So far %d events have been migrated."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:1297
+msgid "WordPress security events successfully migrated to WordPress database."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:1298
+msgid ""
+"WordPress security events successfully migrated to the external database."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:1299
+msgid "No events to migrate."
+msgstr ""
+
+#: extensions/external-db/classes/Settings.php:1338
+msgid "Mirror not found."
+msgstr ""
+
+#: extensions/reports/classes/Common.php:702
+#: extensions/reports/classes/Common.php:706
+#: extensions/reports/classes/Common.php:710
+#: extensions/reports/classes/Common.php:714
+#: extensions/reports/classes/Common.php:718
+#: extensions/reports/classes/Common.php:722
+#: extensions/reports/classes/Common.php:726
+#: extensions/reports/classes/Common.php:730
+#: extensions/reports/classes/Common.php:734
+#: extensions/reports/classes/Common.php:738
+#: extensions/reports/classes/Common.php:742
+#, php-format
+msgid "Internal error. %s key was not found."
+msgstr ""
+
+#: extensions/reports/classes/Common.php:766
+#: extensions/reports/classes/Common.php:1574
+msgid "Please specify at least one Alert Group or specify an Alert Code."
+msgstr ""
+
+#: extensions/reports/classes/Common.php:771
+msgid "Internal Error: Could not detect the type of the report to generate."
+msgstr ""
+
+#: extensions/reports/classes/Common.php:881
+#: extensions/reports/classes/Common.php:915
+#: extensions/reports/classes/Common.php:960
+#: extensions/reports/classes/Common.php:978
+#: extensions/reports/classes/Common.php:1774
+msgid ""
+"There are no alerts that match your filtering criteria. Please try a "
+"different set of rules."
+msgstr ""
+
+#: extensions/reports/classes/Common.php:963
+#: extensions/reports/classes/Common.php:981
+#: extensions/reports/classes/Common.php:1777
+#, php-format
+msgid "Error: The %s path is not accessible."
+msgstr ""
+
+#: extensions/reports/classes/Common.php:1243
+#: extensions/reports/classes/Common.php:1673
+#, php-format
+msgid "%1$s - Website %2$s"
+msgstr ""
+
+#: extensions/reports/classes/Common.php:1246
+#: extensions/reports/classes/Common.php:1676
+#, php-format
+msgid "Week number %1$s - Website %2$s"
+msgstr ""
+
+#: extensions/reports/classes/Common.php:1249
+#: extensions/reports/classes/Common.php:1679
+#, php-format
+msgid "Month %1$s %2$s- Website %3$s"
+msgstr ""
+
+#: extensions/reports/classes/Common.php:1252
+#: extensions/reports/classes/Common.php:1682
+#, php-format
+msgid "Quarter %1$s - Website %2$s"
+msgstr ""
+
+#: extensions/reports/classes/Common.php:1264
+#: extensions/reports/classes/Common.php:1688
+#, php-format
+msgid " - %s Email Report"
+msgstr ""
+
+#: extensions/reports/classes/Common.php:1546
+msgid "Internal Error. Could not retrieve the alerts from the main plugin."
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:108
+#: extensions/reports/classes/HtmlReportGenerator.php:355
+msgid "WP Activity Log Reporter"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:140
+msgid "Report from"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:140
+msgid "website"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:150
+#: extensions/reports/classes/HtmlReportGenerator.php:364
+msgid "Report Details:"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:151
+#: extensions/reports/classes/HtmlReportGenerator.php:365
+msgid "Generated on:"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:152
+#: extensions/reports/classes/HtmlReportGenerator.php:366
+msgid "Generated by:"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:158
+msgid "Site(s)"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:159
+msgid "User(s)"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:160
+msgid "Role(s)"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:161
+msgid "IP address(es)"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:162
+msgid "Alert Groups"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:163
+#: extensions/reports/classes/HtmlReportGenerator.php:370
+msgid "Alert Code(s)"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:164
+#: extensions/reports/classes/HtmlReportGenerator.php:371
+msgid "Start date"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:165
+#: extensions/reports/classes/HtmlReportGenerator.php:372
+msgid "End date"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:166
+msgid "Post Types"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:167
+#: extensions/reports/inc/wsal-reporting-view.inc.php:753
+#: extensions/search/classes/FilterManager.php:494
+#: extensions/search/classes/Filters/poststatusfilter.php:47
+#: extensions/search/classes/Filters/poststatusfilter.php:82
+msgid "Post Status"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:176
+#: extensions/reports/classes/HtmlReportGenerator.php:341
+msgid "From the beginning"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:221
+#: extensions/reports/classes/HtmlReportGenerator.php:367
+msgid "Criteria"
+msgstr ""
+
+#: extensions/reports/classes/HtmlReportGenerator.php:383
+msgid "Results"
+msgstr ""
+
+#: extensions/reports/classes/Views/Main.php:72
+msgid "Reporting"
+msgstr ""
+
+#: extensions/reports/classes/Views/Main.php:86
+msgid "Reports"
+msgstr ""
+
+#: extensions/reports/classes/Views/Main.php:659
+msgid " Generating reports. Please do not close this window"
+msgstr ""
+
+#: extensions/reports/classes/Views/Main.php:672
+msgid ""
+"To generate a report or configure automated scheduled report please contact "
+"the administrator of this multisite network on "
+msgstr ""
+
+#: extensions/reports/classes/Views/Main.php:688
+#, php-format
+msgid ""
+"The %s directory which the Reports plugin uses to create reports in was "
+"either not found or is not accessible."
+msgstr ""
+
+#: extensions/reports/classes/Views/Main.php:689
+#, php-format
+msgid ""
+"In order for the plugin to function, the directory %s must be created and "
+"the plugin should have "
+msgstr ""
+
+#: extensions/reports/classes/Views/Main.php:690
+#, php-format
+msgid ""
+"access to write to this directory, so please configure the following "
+"permissions: 0755. If you have any questions or need further assistance "
+"please %s"
+msgstr ""
+
+#: extensions/reports/classes/Views/Main.php:730
+#: extensions/users-sessions-management/classes/Views.php:1475
+msgid "You do not have sufficient permissions."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:194
+msgid ""
+"You do not have sufficient permissions to access this page - rep plugin."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:198
+msgid "Invalid Request. Please refresh the page and try again."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:211
+msgid "Error (TODO - error message): Please select SITES"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:232
+msgid "Error (TODO - error message): Please select USERS"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:274
+msgid "Error: Please select at least one role"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:303
+msgid "Error: Please select at least one IP address"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:321
+msgid "Error: Please select at least one object"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:338
+msgid "Error: Please select at least one event object"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:423
+msgid "Please select the report format."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:445
+#: extensions/reports/inc/wsal-reporting-view.inc.php:498
+msgid " Generating report. Please do not close this window"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:478
+msgid "Periodic Report successfully saved."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:520
+msgid "Periodic Report successfully Deleted."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:551
+msgid "Generate & Configure Periodic Reports"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:552
+msgid "Statistics Reports"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:572
+msgid "Generate a report"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:575
+msgid "Step 1: Select the type of report"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:581
+msgid "By Site(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:589
+msgid "Specify sites"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:597
+msgid "By User(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:601
+msgid "All Users"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:605
+msgid "Specify users"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:629
+msgid ""
+"Automated verification of usernames is disabled because you have more than "
+"100 users. The process might require a lot of resources to work with a lot "
+"of users. Tick the option below to enable it again."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:634
+msgid "Enable Autocomplete"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:643
+msgid "By Role(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:647
+msgid "All Roles"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:651
+msgid "Specify roles"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:659
+msgid "By IP Address(es)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:663
+msgid "All IP Addresses"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:667
+msgid "Specify IP Addresses"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:675
+msgid "By Object(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:679
+msgid "All Objects"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:683
+msgid "Specify Objects"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:691
+msgid "By Event Type(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:695
+msgid "All Event Types"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:699
+msgid "Specify Event Types"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:707
+msgid "By Event Code(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:725
+msgid "No alerts were found"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:739
+msgid "Posts"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:745
+#: extensions/search/classes/FilterManager.php:498
+#: extensions/search/classes/Filters/posttypefilter.php:46
+#: extensions/search/classes/Filters/posttypefilter.php:85
+msgid "Post Type"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:767
+msgid "Specify Event Codes"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:775
+msgid "By the Below Criteria"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:780
+msgid "Number & List of unique IP addresses per user"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:785
+msgid "Number of Logins per user"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:819
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1678
+msgid "Select site(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:841
+msgid "Select user(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:883
+msgid "Select role(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:905
+msgid "Select IP address(es)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:927
+msgid "Select Objects(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:949
+msgid "Select Type(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1001
+msgid "Select Post Type(s)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1031
+msgid "Select Post Status(es)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1335
+msgid "Step 2: Select the date range"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1337
+msgid ""
+"Note: Do not specify any dates if you are creating a scheduled report or if "
+"you want to generate a report from when you started the audit trail."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1342
+msgid "Start Date"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1345
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1487
+msgid "Select start date"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1351
+msgid "End Date"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1354
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1496
+msgid "Select end date"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1368
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1580
+msgid "Step 3: Select Report Format"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1375
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1586
+msgid "HTML"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1380
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1590
+msgid "CSV"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1387
+msgid "Step 4: Generate Report Now or Configure Periodic Reports"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1390
+msgid "Generate Report Now"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1393
+msgid ""
+" Use the buttons below to use the above criteria for a daily, weekly and "
+"monthly summary report which is sent automatically via email."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1396
+msgid "Email address(es)"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1402
+msgid "Report Name"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1413
+msgid "Quarterly"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1426
+msgid "Configured Periodic Reports"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1429
+msgid ""
+"Below is the list of configured periodic reports. Click on Modify to load "
+"the criteria and configure it above. To save the new criteria as a new "
+"report change the report name and save it. Do not change the report name to "
+"overwrite the existing periodic report."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1432
+msgid ""
+"Note: Use the Send Now button to generate a report with data from the last "
+"90 days if a quarterly report is configured, 30 days if monthly report is "
+"configured and 7 days if weekly report is configured."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1480
+msgid "Step 1: Choose Date Range"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1484
+#: extensions/search/classes/Filters/DateFilter.php:55
+msgid "From"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1493
+msgid "To"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1509
+msgid "Step 2: Choose Criteria"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1512
+msgid "Report for"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1517
+msgid "Number of logins for user"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1522
+msgid "Number of logins for users with the role of"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1527
+msgid "Number of views for user"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1532
+msgid "Number of views for users with the role of"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1537
+msgid "Number of published content for user"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1542
+msgid "Number of published content for users with the role of"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1547
+msgid "Different IP addresses for Usernames"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1552
+msgid "List only IP addresses used during login"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1554
+msgid ""
+"If the above option is enabled the report will only include the IP addresses "
+"from where the user logged in. If it is disabled it will list all the IP "
+"addresses from where the plugin recorded activity originating from the user."
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1613
+msgid "Please specify at least one site"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1622
+msgid "Please specify at least one user"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1631
+msgid "Please specify at least one role"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1640
+msgid "Please specify at least one IP address"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1649
+msgid "Please specify at least one object"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1658
+msgid "Please specify at least one event type"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1667
+msgid "Please specify at least one Alert group or specify an Alert code"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1699
+msgid "Select user"
+msgstr ""
+
+#: extensions/reports/inc/wsal-reporting-view.inc.php:1725
+msgid "Select role"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:210
+msgid ""
+"Refer to the list of "
+"Event IDs for reference."
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:374
+msgid "Do not show this message again"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:375
+msgid "Dismiss this notice."
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:383
+#: extensions/search/search-init.php:333
+msgid "Load Search & Filters"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:386
+#: extensions/search/search-init.php:335
+msgid "Remove"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:395
+msgid "Save Search & Filters"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:400
+msgid "* Invalid Name"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:402
+msgid ""
+"Name can only be 12 characters long and only letters, numbers and underscore "
+"are allowed."
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:405
+msgid "Save"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:411
+#: extensions/search/search-init.php:337
+msgid "Filter View"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:426
+#: extensions/search/classes/FilterManager.php:463
+#: extensions/search/classes/FilterManager.php:537
+msgid ""
+"Refer to the list of Event IDs for reference."
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:438
+msgid ""
+"Refer to the metadata in the activity log for reference."
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:450
+msgid ""
+"Refer to the severity levels in the activity log for "
+"reference."
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:475
+msgid "Filter by username"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:478
+#: extensions/users-sessions-management/classes/Views.php:896
+msgid "First Name"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:479
+msgid "Filter by user first name"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:482
+#: extensions/users-sessions-management/classes/Views.php:897
+msgid "Last Name"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:483
+msgid "Filter by user last name"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:487
+msgid "Filter by user roles"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:490
+msgid "User Filters"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:495
+msgid "Filter by post status"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:499
+msgid "Filter by post type"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:502
+#: extensions/search/classes/Filters/PostIDFilter.php:29
+#: extensions/search/classes/Filters/PostIDFilter.php:57
+msgid "Post ID"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:503
+msgid "Filter by post ID"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:506
+#: extensions/search/classes/Filters/PostNameFilter.php:30
+#: extensions/search/classes/Filters/PostNameFilter.php:55
+msgid "Post Name"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:507
+msgid "Filter by post name"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:510
+msgid "Post Filters"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:519
+msgid "Select Site to view"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:544
+msgid "Select A Specific Site from the Network"
+msgstr ""
+
+#: extensions/search/classes/FilterManager.php:567
+msgid "Enter an IP address to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/AlertWidget.php:38
+msgid "Enter an Event ID to filter - example: 1000"
+msgstr ""
+
+#: extensions/search/classes/Filters/AlertWidget.php:40
+#: extensions/search/classes/Filters/DateWidget.php:38
+#: extensions/search/classes/Filters/IpWidget.php:40
+#: extensions/search/classes/Filters/PostNameWidget.php:38
+#: extensions/search/classes/Filters/postidwidget.php:37
+#: extensions/search/classes/Filters/userfirstnamewidget.php:37
+#: extensions/search/classes/Filters/userlastnamewidget.php:37
+#: extensions/search/classes/Filters/usernamewidget.php:38
+msgid "Add this filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/CodeWidget.php:37
+msgid "Select a Severity to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/DateFilter.php:56
+msgid "Earlier than"
+msgstr ""
+
+#: extensions/search/classes/Filters/DateFilter.php:57
+msgid "On this day"
+msgstr ""
+
+#: extensions/search/classes/Filters/EventTypeWidget.php:30
+msgid "Select an Event Type to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/IpWidget.php:38
+msgid "192.168.128.255"
+msgstr ""
+
+#: extensions/search/classes/Filters/ObjectWidget.php:33
+msgid "Select an Object to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/PostNameWidget.php:36
+msgid "Enter post name to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/PostStatusWidget.php:36
+msgid "Select a post status to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/PostTypeWidget.php:36
+msgid "Select a post type to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/SiteFilter.php:57
+msgid "Sites"
+msgstr ""
+
+#: extensions/search/classes/Filters/SiteWidget.php:33
+msgid "Select a Site to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/UserRoleWidget.php:36
+msgid "Select a user role to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/postidwidget.php:35
+msgid "Enter post ID to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/userfirstnamewidget.php:35
+#: extensions/search/classes/Filters/userlastnamewidget.php:35
+msgid "Enter users first name to filter"
+msgstr ""
+
+#: extensions/search/classes/Filters/usernamewidget.php:36
+msgid "Enter a username to filter"
+msgstr ""
+
+#: extensions/search/search-init.php:207 extensions/search/search-init.php:323
+#: extensions/users-sessions-management/classes/Views.php:913
+msgid "Search"
+msgstr ""
+
+#: extensions/search/search-init.php:324
+msgid ""
+"- Use the free-text search to search for text in the event's message. - "
+"To search for a particular Event ID, user, IP address, Post ID or Type or "
+"use date ranges, use the filters."
+msgstr ""
+
+#: extensions/search/search-init.php:325
+msgid "Clear Search Results"
+msgstr ""
+
+#: extensions/search/search-init.php:326
+msgid "Nothing found!"
+msgstr ""
+
+#: extensions/search/search-init.php:327
+msgid "Load"
+msgstr ""
+
+#: extensions/search/search-init.php:328
+msgid "Loading..."
+msgstr ""
+
+#: extensions/search/search-init.php:329
+msgid "Load & Run"
+msgstr ""
+
+#: extensions/search/search-init.php:334
+msgid "* Invalid IP"
+msgstr ""
+
+#: extensions/search/search-init.php:336
+msgid "Close Filters"
+msgstr ""
+
+#. translators: both placeholders are html formatting strings for itallics
+#: extensions/search/search-init.php:340
+#, php-format
+msgid ""
+"Click the %1$sSearch%2$s button to apply the filters. Click the %1$sClear "
+"Search Results%2$s button to reset the search and filters."
+msgstr ""
+
+#: extensions/search/search-init.php:386
+msgid "Widget could not be found."
+msgstr ""
+
+#: extensions/search/search-init.php:453
+msgid "Saved searches found."
+msgstr ""
+
+#: extensions/search/search-init.php:461 extensions/search/search-init.php:531
+msgid "No saved search found."
+msgstr ""
+
+#: extensions/search/search-init.php:495
+msgid "Search name not specified."
+msgstr ""
+
+#: extensions/search/search-init.php:514
+msgid "Saved search deleted."
+msgstr ""
+
+#: extensions/search/search-init.php:522
+msgid "Saved search not found."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Common.php:903
+#, php-format
+msgid "Multiple Same Users Sessions Alert on %s"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Common.php:909
+#, php-format
+msgid "User Login Attempt Blocked on %s"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Common.php:915
+#, php-format
+msgid ""
+"Click here to login to your WordPress and see all the "
+"logged in sessions and terminate any of them."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Common.php:1237
+msgid "View the changes in data inspector."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:208
+msgid "Users Sessions & Management"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:222
+#: extensions/users-sessions-management/classes/Views.php:879
+msgid "Logged In Users"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:283
+msgid "Logging out..."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:284
+msgid "Refreshing..."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:285
+msgid "This could result in loss of unsaved work. Are you sure?"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:287
+#, php-format
+msgid "out of %s users sessions terminated."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:289
+#: extensions/users-sessions-management/classes/Views.php:603
+msgid "Retrieve user data"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:290
+msgid "Retrieving data"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:291
+msgid "Data retrieved"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:292
+#: extensions/users-sessions-management/classes/Views.php:1071
+msgid "Event ID: "
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:293
+#: extensions/users-sessions-management/classes/Views.php:1074
+msgid "Object: "
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:294
+#: extensions/users-sessions-management/classes/Views.php:1077
+msgid "Event Type: "
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:312
+msgid "Nonce verification failed!"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:359
+msgid "User sessions do not exist."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:533
+#: extensions/users-sessions-management/classes/Views.php:583
+msgid "Nonce verification failed"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:625
+msgid ""
+"To know who is logged in to this website please contact the multisite "
+"network administrator – "
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:643
+msgid "No search results were found."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:650
+msgid "Showing results for "
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:707
+msgid "Expires"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:708
+msgid "Source IP"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:709
+msgid "Last Event"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:710
+#: extensions/users-sessions-management/classes/Views.php:1094
+msgid "Actions"
+msgstr ""
+
+#. translators: Number of sessions
+#: extensions/users-sessions-management/classes/Views.php:850
+#, php-format
+msgid "%s items"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:855
+msgid "Go to the first page"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:856
+msgid "Go to the previous page"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:858
+msgid "of"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:860
+msgid "Go to the next page"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:861
+msgid "Go to the last page"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:873
+msgid "Terminate All Sessions"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:881
+msgid "Users Sessions Management"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:887
+msgid "Total number of sessions with Administrator Role: "
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:939
+msgid "Network-wide Logins"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:956
+msgid "Currently there are no active user sessions on this site."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1026
+msgid "Session ID: "
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1040
+msgid "Click the button above to retrieve the users' IP addresses."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1060
+msgid "IP not found."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1084
+msgid "Click the button above to retrieve the users' last event."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1104
+msgid "Show me this user's events"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1112
+msgid "Terminate Session"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1158
+#, php-format
+msgid ""
+"There are more than %s sessions but the plugin did not retrieve them all "
+"since the server might not have enough resources."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1159
+msgid "Please use the button below to log out all sessions but yours."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1160
+msgid "Logout all sessions but mine"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1178
+msgid ""
+"By default WordPress does not limit how many times the same user can connect "
+"simultaneously. So two different users can login at the same time using the "
+"same username. Use the settings below to limit and also block simultaneous "
+"connections for the same username."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1181
+msgid ""
+"Do you want to allow two or more people to login simultaneously with the "
+"same username?"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1183
+msgid ""
+"By allowing multiple sessions two or more people can login to WordPress "
+"using the same username. By blocking them, once a person is logged in with a "
+"username, if another person tries to login with the same username they will "
+"be blocked."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1188
+msgid "Multiple Sessions"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1200
+msgid "Allow"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1210
+#, php-format
+msgid "Allow up to %s sessions"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1217
+msgid "Block"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1226
+msgid "Allow blocked sessions to override existing sessions"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1230
+msgid "No, do not allow override"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1235
+msgid "Yes and terminate the existing session without warning"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1241
+msgid "Yes, as long as the user knows the override password: "
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1252
+msgid "Configure a Blocked Session Notification for Users"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1254
+msgid ""
+"This error message is shown to users when they try to login with a username "
+"that already has a session and their session is blocked. You can change this "
+"message by editing the text in the below placeholder. Only HTML "
+"code is allowed."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1259
+msgid "Blocked Sessions Error"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1262
+#: extensions/users-sessions-management/users-sessions-management.php:154
+#: extensions/users-sessions-management/users-sessions-management.php:279
+msgid ""
+"ERROR: Your session was blocked with the WP Activity Log "
+"plugin because there is already another user logged in with the same "
+"username. Please contact the site administrator for more information."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1273
+msgid "Do you want to terminate idle sessions automatically?"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1275
+msgid ""
+"If a session has been idle for more than the configured number of hours, it "
+"will be automatically destroyed by the plugin."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1280
+msgid "Terminate Idle Sessions"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1292
+msgid "1"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1293
+msgid "4"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1294
+msgid "8"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1297
+msgid "32"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1298
+msgid "48"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1302
+msgid "terminate sessions if they have been idle for more than"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1308
+msgid " hour"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1308
+#: extensions/users-sessions-management/classes/Views.php:1313
+msgid " hours"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1335
+msgid "Number of logged in sessions to retrieve"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1336
+msgid ""
+"By default the plugin only retrieves information about 100 sessions from the "
+"database. Therefore if currently on your website there are more than 100 "
+"sessions, you will only see the last 100 sessions. This limit is used as a "
+"resource protection. You can increase the number of sessions by using the "
+"setting below."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1339
+msgid "Number of Sessions"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1343
+msgid "(1 to 2,000)"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1358
+msgid "Terminate all logged in sessions"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1359
+msgid ""
+"This will terminate all users' sessions including yours, which could result "
+"in unsaved work. Do you like to proceed?"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1370
+msgid "YES"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1371
+msgid "NO"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1385
+msgid "Users sessions termination is in progress. Please wait..."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1501
+msgid "No sessions."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1510
+msgid "Session destroyed."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1518
+msgid "User session data is not set."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1534
+#: extensions/users-sessions-management/classes/Views.php:1609
+#: extensions/users-sessions-management/classes/Views.php:1692
+msgid "User do not have sufficient permissions."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1642
+#: extensions/users-sessions-management/classes/Views.php:1657
+msgid "Sessions destroyed!"
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1664
+msgid "Users offset is not set."
+msgstr ""
+
+#: extensions/users-sessions-management/classes/Views.php:1702
+msgid "Nonce check failed."
+msgstr ""
+
+#: extensions/users-sessions-management/users-sessions-management.php:126
+msgid "Your session is blocked. You can override it with a password."
+msgstr ""
+
+#: extensions/users-sessions-management/users-sessions-management.php:187
+msgid "Session Override Password"
+msgstr ""
+
+#. translators: Username
+#: wp-security-audit-log.php:842 wp-security-audit-log.php:869
+#, php-format
+msgid "Hey %1$s"
+msgstr ""
+
+#: wp-security-audit-log.php:843
+msgid ""
+"Never miss an important update! Opt-in to our security and feature updates "
+"notifications, and non-sensitive diagnostic tracking with freemius.com."
+msgstr ""
+
+#: wp-security-audit-log.php:844 wp-security-audit-log.php:872
+msgid "Note: "
+msgstr ""
+
+#: wp-security-audit-log.php:845 wp-security-audit-log.php:873
+msgid "NO AUDIT LOG ACTIVITY & DATA IS SENT BACK TO OUR SERVERS."
+msgstr ""
+
+#. translators: 1: Plugin name. 2: Freemius link.
+#: wp-security-audit-log.php:871
+#, php-format
+msgid ""
+"Please help us improve %2$s! If you opt-in, some non-sensitive data about "
+"your usage of %2$s will be sent to %5$s, a diagnostic tracking service we "
+"use. If you skip this, that's okay! %2$s will still work just fine."
+msgstr ""
+
+#. translators: Plugin name
+#: wp-security-audit-log.php:893
+#, php-format
+msgid ""
+"Get a free 7-day trial of the premium edition of %s. No credit card "
+"required, no commitments!"
+msgstr ""
+
+#: wp-security-audit-log.php:898
+msgid "Start free trial"
+msgstr ""
+
+#: wp-security-audit-log.php:966
+#, php-format
+msgid ""
+"You need to activate the licence key to use WP Securitity Audit Log Premium. "
+"%2$s"
+msgstr ""
+
+#: wp-security-audit-log.php:967
+msgid "Activate the licence key now"
+msgstr ""
+
+#: wp-security-audit-log.php:984
+#, php-format
+msgid ""
+"The license is limited to %s sub-sites. You need to upgrade your license to "
+"cover all the sub-sites on this network."
+msgstr ""
+
+#: wp-security-audit-log.php:1094
+msgid ""
+"Error: You do not have sufficient permissions to disable this custom field."
+msgstr ""
+
+#: wp-security-audit-log.php:1127
+#, php-format
+msgid ""
+"Custom Field %1$s is no longer being monitored. Enable the monitoring "
+"of this custom field again from the"
+msgstr ""
+
+#: wp-security-audit-log.php:1127
+msgid "Excluded Objects"
+msgstr ""
+
+#: wp-security-audit-log.php:1127
+msgid " tab in the plugin settings"
+msgstr ""
+
+#: wp-security-audit-log.php:1139
+msgid "Error: You do not have sufficient permissions to disable this alert."
+msgstr ""
+
+#: wp-security-audit-log.php:1163
+#, php-format
+msgid "Alert %1$s is no longer being monitored. %2$s"
+msgstr ""
+
+#: wp-security-audit-log.php:1163
+msgid ""
+"You can enable this alert again from the Enable/Disable Alerts node in the "
+"plugin menu."
+msgstr ""
+
+#: wp-security-audit-log.php:1264
+#, php-format
+msgid ""
+"You are using a version of PHP that is older than %s, which is no longer "
+"supported."
+msgstr ""
+
+#: wp-security-audit-log.php:1266
+msgid ""
+"Contact us on plugins@wpwhitesecurity.com to help you switch the version of PHP you "
+"are using."
+msgstr ""
+
+#: wp-security-audit-log.php:1268
+msgid ""
+"The WP Activity Log plugin is a multisite network tool, so it has to "
+"be activated at network level."
+msgstr ""
+
+#: wp-security-audit-log.php:1270
+msgid "Redirect me to the network dashboard"
+msgstr ""
+
+#: wp-security-audit-log.php:1275
+#, php-format
+msgid "Please install the %s plugin on the MainWP dashboard."
+msgstr ""
+
+#: wp-security-audit-log.php:1275
+msgid "Activity Log for MainWP"
+msgstr ""
+
+#: wp-security-audit-log.php:1277
+#, php-format
+msgid ""
+"The WP Activity Log should be installed on the child sites only. Refer "
+"to the %s for more information."
+msgstr ""
+
+#: wp-security-audit-log.php:1277
+msgid "getting started guide"
+msgstr ""
+
+#: wp-security-audit-log.php:1370
+msgid ""
+"This plugin uses 3 tables in the WordPress database to store the activity "
+"log and settings. It seems that these tables were not created."
+msgstr ""
+
+#: wp-security-audit-log.php:1372
+msgid ""
+"This could happen because the database user does not have the right "
+"privileges to create the tables in the database. We recommend you to update "
+"the privileges and try enabling the plugin again."
+msgstr ""
+
+#: wp-security-audit-log.php:1374
+#, php-format
+msgid ""
+"If after doing so you still have issues, please send us an email on %s for "
+"assistance."
+msgstr ""
+
+#: wp-security-audit-log.php:1374
+msgid "support@wpsecurityauditlog.com"
+msgstr ""
+
+#: wp-security-audit-log.php:2019
+msgid ""
+"For security and auditing purposes, a record of all of your logged-in "
+"actions and changes within the WordPress dashboard will be recorded in an "
+"audit log with the WP Activity Log plugin. The audit log also includes the "
+"IP address where you accessed this site from."
+msgstr ""
+
+#: wp-security-audit-log.php:2038
+msgid "Every 6 hours"
+msgstr ""
+
+#: wp-security-audit-log.php:2042
+msgid "Every 45 minutes"
+msgstr ""
+
+#: wp-security-audit-log.php:2046
+msgid "Every 30 minutes"
+msgstr ""
+
+#: wp-security-audit-log.php:2050
+msgid "Every 15 minutes"
+msgstr ""
+
+#: wp-security-audit-log.php:2054
+msgid "Every 10 minutes"
+msgstr ""
+
+#: wp-security-audit-log.php:2058
msgid "Every 1 minute"
msgstr ""
#. translators: 1. Deprecated method name 2. Version since deprecated
-#: wp-security-audit-log.php:2060
+#: wp-security-audit-log.php:2072
#, php-format
msgid "Method %1$s is deprecated since version %2$s!"
msgstr ""
diff --git a/sdk/class-wsal-browser.php b/sdk/class-wsal-browser.php
index 200ae649..4ac379b6 100644
--- a/sdk/class-wsal-browser.php
+++ b/sdk/class-wsal-browser.php
@@ -616,16 +616,16 @@ public function __construct( $useragent = '' ) {
* Reset all properties
*/
public function reset() {
- $http_user_agent = filter_input( INPUT_SERVER, 'HTTP_USER_AGENT', FILTER_SANITIZE_STRING );
- $this->_agent = ! empty( $http_user_agent ) ? $http_user_agent : '';
+ $http_user_agent = filter_input( INPUT_SERVER, 'HTTP_USER_AGENT', FILTER_SANITIZE_STRING );
+ $this->_agent = ! empty( $http_user_agent ) ? $http_user_agent : '';
$this->_browser_name = $this->BROWSER_UNKNOWN;
- $this->_version = $this->VERSION_UNKNOWN;
- $this->_platform = $this->PLATFORM_UNKNOWN;
- $this->_os = $this->OPERATING_SYSTEM_UNKNOWN;
- $this->_is_aol = false;
- $this->_is_mobile = false;
- $this->_is_robot = false;
- $this->_aol_version = $this->VERSION_UNKNOWN;
+ $this->_version = $this->VERSION_UNKNOWN;
+ $this->_platform = $this->PLATFORM_UNKNOWN;
+ $this->_os = $this->OPERATING_SYSTEM_UNKNOWN;
+ $this->_is_aol = false;
+ $this->_is_mobile = false;
+ $this->_is_robot = false;
+ $this->_aol_version = $this->VERSION_UNKNOWN;
}
/**
@@ -801,10 +801,10 @@ public function isChromeFrame() {
* @return string formatted string with a summary of the browser
*/
public function __toString() {
- $text1 = $this->getUserAgent(); // Grabs the UA (user agent) string.
- $ua_line1 = substr( $text1, 0, 32 ); // The first line we print should only be the first 32 characters of the UA string.
- $text2 = $this->getUserAgent(); // Now we grab it again and save it to a string.
- $towrap_ua = str_replace( $ua_line1, '', $text2 ); // The rest of the printoff (other than first line) is equivolent.
+ $text1 = $this->getUserAgent(); // Grabs the UA (user agent) string.
+ $ua_line1 = substr( $text1, 0, 32 ); // The first line we print should only be the first 32 characters of the UA string.
+ $text2 = $this->getUserAgent(); // Now we grab it again and save it to a string.
+ $towrap_ua = str_replace( $ua_line1, '', $text2 ); // The rest of the printoff (other than first line) is equivolent.
/**
* To the whole string minus the part we printed off. IE
@@ -905,7 +905,7 @@ public function checkBrowsers() {
*/
public function checkBrowserBlackBerry() {
if ( stripos( $this->_agent, 'blackberry' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'BlackBerry' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'BlackBerry' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
$this->_browser_name = $this->BROWSER_BLACKBERRY;
@@ -940,7 +940,7 @@ public function checkForAol() {
*/
public function checkBrowserGoogleBot() {
if ( stripos( $this->_agent, 'googlebot' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'googlebot' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'googlebot' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( str_replace( ';', '', $aversion[0] ) );
$this->_browser_name = $this->BROWSER_GOOGLEBOT;
@@ -957,7 +957,7 @@ public function checkBrowserGoogleBot() {
*/
public function checkBrowserMSNBot() {
if ( stripos( $this->_agent, 'msnbot' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'msnbot' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'msnbot' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( str_replace( ';', '', $aversion[0] ) );
$this->_browser_name = $this->BROWSER_MSNBOT;
@@ -974,15 +974,15 @@ public function checkBrowserMSNBot() {
*/
public function checkBrowserW3CValidator() {
if ( stripos( $this->_agent, 'W3C-checklink' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'W3C-checklink' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'W3C-checklink' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
$this->_browser_name = $this->BROWSER_W3CVALIDATOR;
return true;
} elseif ( stripos( $this->_agent, 'W3C_Validator' ) !== false ) {
// Some of the Validator versions do not delineate w/ a slash - add it back in.
- $ua = str_replace( 'W3C_Validator ', 'W3C_Validator/', $this->_agent );
- $aresult = explode( '/', stristr( $ua, 'W3C_Validator' ) );
+ $ua = str_replace( 'W3C_Validator ', 'W3C_Validator/', $this->_agent );
+ $aresult = explode( '/', stristr( $ua, 'W3C_Validator' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
$this->_browser_name = $this->BROWSER_W3CVALIDATOR;
@@ -998,7 +998,7 @@ public function checkBrowserW3CValidator() {
*/
public function checkBrowserSlurp() {
if ( stripos( $this->_agent, 'slurp' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'Slurp' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'Slurp' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
$this->_browser_name = $this->BROWSER_SLURP;
@@ -1067,7 +1067,7 @@ public function checkBrowserOpera() {
if ( stripos( $this->_agent, 'opera mini' ) !== false ) {
$resultant = stristr( $this->_agent, 'opera mini' );
if ( preg_match( '/\//', $resultant ) ) {
- $aresult = explode( '/', $resultant );
+ $aresult = explode( '/', $resultant );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
} else {
@@ -1082,7 +1082,7 @@ public function checkBrowserOpera() {
if ( preg_match( '/Version\/(10.*)$/', $resultant, $matches ) ) {
$this->setVersion( $matches[1] );
} elseif ( preg_match( '/\//', $resultant ) ) {
- $aresult = explode( '/', str_replace( '(', ' ', $resultant ) );
+ $aresult = explode( '/', str_replace( '(', ' ', $resultant ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
} else {
@@ -1102,7 +1102,7 @@ public function checkBrowserOpera() {
*/
public function checkBrowserChrome() {
if ( stripos( $this->_agent, 'Chrome' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'Chrome' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'Chrome' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
$this->setBrowser( $this->BROWSER_CHROME );
@@ -1119,7 +1119,7 @@ public function checkBrowserChrome() {
*/
public function checkBrowserWebTv() {
if ( stripos( $this->_agent, 'webtv' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'webtv' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'webtv' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
$this->setBrowser( $this->BROWSER_WEBTV );
@@ -1135,7 +1135,7 @@ public function checkBrowserWebTv() {
*/
public function checkBrowserNetPositive() {
if ( stripos( $this->_agent, 'NetPositive' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'NetPositive' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'NetPositive' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( str_replace( array( '(', ')', ';' ), '', $aversion[0] ) );
$this->setBrowser( $this->BROWSER_NETPOSITIVE );
@@ -1151,7 +1151,7 @@ public function checkBrowserNetPositive() {
*/
public function checkBrowserGaleon() {
if ( stripos( $this->_agent, 'galeon' ) !== false ) {
- $aresult = explode( ' ', stristr( $this->_agent, 'galeon' ) );
+ $aresult = explode( ' ', stristr( $this->_agent, 'galeon' ) );
$aversion = explode( '/', $aresult[0] );
$this->setVersion( $aversion[1] );
$this->setBrowser( $this->BROWSER_GALEON );
@@ -1167,7 +1167,7 @@ public function checkBrowserGaleon() {
*/
public function checkBrowserKonqueror() {
if ( stripos( $this->_agent, 'Konqueror' ) !== false ) {
- $aresult = explode( ' ', stristr( $this->_agent, 'Konqueror' ) );
+ $aresult = explode( ' ', stristr( $this->_agent, 'Konqueror' ) );
$aversion = explode( '/', $aresult[0] );
$this->setVersion( $aversion[1] );
$this->setBrowser( $this->BROWSER_KONQUEROR );
@@ -1198,7 +1198,7 @@ public function checkBrowserIcab() {
*/
public function checkBrowserOmniWeb() {
if ( stripos( $this->_agent, 'omniweb' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'omniweb' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'omniweb' ) );
$aversion = explode( ' ', isset( $aresult[1] ) ? $aresult[1] : '' );
$this->setVersion( $aversion[0] );
$this->setBrowser( $this->BROWSER_OMNIWEB );
@@ -1330,7 +1330,7 @@ public function checkBrowserFirefox() {
*/
public function checkBrowserIceweasel() {
if ( stripos( $this->_agent, 'Iceweasel' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'Iceweasel' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'Iceweasel' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
$this->setBrowser( $this->BROWSER_ICEWEASEL );
@@ -1371,7 +1371,7 @@ public function checkBrowserMozilla() {
*/
public function checkBrowserLynx() {
if ( stripos( $this->_agent, 'lynx' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'Lynx' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'Lynx' ) );
$aversion = explode( ' ', ( isset( $aresult[1] ) ? $aresult[1] : '' ) );
$this->setVersion( $aversion[0] );
$this->setBrowser( $this->BROWSER_LYNX );
@@ -1387,7 +1387,7 @@ public function checkBrowserLynx() {
*/
public function checkBrowserAmaya() {
if ( stripos( $this->_agent, 'amaya' ) !== false ) {
- $aresult = explode( '/', stristr( $this->_agent, 'Amaya' ) );
+ $aresult = explode( '/', stristr( $this->_agent, 'Amaya' ) );
$aversion = explode( ' ', $aresult[1] );
$this->setVersion( $aversion[0] );
$this->setBrowser( $this->BROWSER_AMAYA );
diff --git a/sdk/freemius/assets/img/wp-security-audit-log.png b/sdk/freemius/assets/img/wp-security-audit-log.png
new file mode 100644
index 0000000000000000000000000000000000000000..33902b4a99ec9a3199804151277daabfc610406b
GIT binary patch
literal 9380
zcmbW7 4QUc+`00KlZEA}{+QaB(jz&calwp&7Oa
zVAC^^HR3`PEh%~GCB29S(-TgY3nV7Kda%Up*V_yVW&Pf(lEEb+g2F}vzH3}U<6Ea|
zx_%q(oQ|IM(}bJ2&sU25Fw-~t+|Xd1mcpi=wZWK@0!jJ5f4o#&Cxj_$M@PIF3SxQ7
zOTT{)TMNf`s(#DDq8MmRI
zpI_pjo}M0t!4UKJX#NGFY#z(%DMw$%%zy^Q8xj{s6U$-U;wl+7<
z1+s~5ugR)@pr)osp>Ms@w2L7!=HjBFPjQf?j{ph^ir^So+p#o2A*sK=A9-~(RnJ%2
zHhnM&cmaZr9v(cLoaqoY_)P2wE%nod<>k!J`52lNjosbd{f9h+6eQB1q@*OvYsUWm
z>3__4s!4!ae0+?Y+`yNb${4mUVOyFuHYH4v$FTT;Ln+^w`fM8HjNl8%=QKQSvZ&Ynyi)m(NmImC`
zXDfFEpK;J6tF_NQO-xKAppg;`X5$qCv9PjAhhNfBOY{766&fmIk0PnNe4eQ6Ms;c*z
zt^R%USdu-6%WvNvo!liRItqSiY-C*V`FnWS?R8on#qs*F9MIZt5q@v{fyK-y$fln!
z)X(qQ<5j6{r6UvgIXMpUs8J-jtg;fjsE18}JwZ0oi0gcpr~5VCbo
zobX$)h)^XBqQY@y+0Z#4Ff-$U>e|RUnG+WD_4A`|5ttLA<=;jkk!=eLyxqY@fp6-%
z?oEy~)rzorg~Y@}M21GA{OnhK+td}m*)#AxfBsxteAKRybm8a@i{OZy8FcbUofh)_
zA?&w%%QS^rdt$#a#s1;s#8`rsy6ds>yTe~?KAkOwM05nV_cwE=xxyajs8)LHLY%|pE``~-Q|d4&RL}lWnSiLLlarI9r>7oDbIQ^J
z)zcHn)T2MLwKiB^&nJmFSrZktxoNK#2b!`B52q3Q?qdK%1Mnzx#$E~v3i9(8o95uw
zp;Jyr*T!>VWo5`3N5lUT)q|eig
z2z&^)vXU)m3AsEfvd9Xf*Mahii{EUXxlk_;?Vg2uJ#-DOrTRxaD$<57yu;Tg^^~y)
zyKAPi^MS*FXM_=I#-}eUUq8aaVr6A9>L#4~GmLsLx3J*BwtO?V
zHW_gpcgClop)vk0nWin?w-xVM-zsl0->$Z0<3hev*v_9YJ&*%g-VW7U~3tq9?d)n~J-hl=R=PG`ilF*UHApg%n58Rla2vYJjEuyEcXv}^CzC?
z0QIi8fW!1|^LVZ6KHT2}WV7;oAucA)mOuNUD|oUaZ_P?S@cW3O%(SKbOy8bHJ{X=Et6*^FjJ%P>R>oXTg)1EWN
zp7pPg_|?1V>o%Y_lMt(K^$2of&D4nv9192v%HKB_0Zw;RqQJAS47A@HO*L4-9e4Y}
zC%saGAyTL?)|vuFbfM@DJ3(~R{5d*G(WxDZ1<-lu;^NX&XKZeMe|cdwsv(%iHleDZ#hVw)pfs$x<5x5);U_7uf-CKkB?WoC}b0_5XXp9
zCNKRAx*&FQbxlZ2s;#bmzvn_vh1p;!Ea&d+ebRq(Q6a1%)9olICM9*hQKCeJ^`)t$
zMXovdF#&P=1OY9LM5v=BHc9f}aIz3OVk~)w=C6;-!b8tpt*lo6)w+B85YNR$IK23S
z!+dprf#UhaFlNio6MpCC5o9FB3pDE#`E9D|&e*
zj5?y$#chwJ?9weKARw4AxY5wkFf-=-oS~|*E3UnFI{_hk{n-e*aCCCga0~_H=nGtK
zR(dhkLqmT*EH38cs7j?2oX>jbUP*b-ChcUHiEPk4&CQLo;dQg_AgXb5Yufm$T(>|v%tsFtOYcXv?Ck8c
z2OQ==B7+U&nqx4S#4Q8aGq|;{H0I*gGFrp7@ZA_Upv|SWY5>zAg7m@8&dx$Am}%&a
zWG7b$|NO!#9tL0RZ@Hc|IKF!=9g2jJ?Rr>*tNfHq*Q{{(2>}IzBP&Zv52Sz2vrf`27Fyh5blg(6etcL(|iyH@`GWs6sj%m=g|5I*5AfBX=Z&*7{K$J2zL
z8<2@bz&peP=n=@O@+$o(oqF;dEv-neX_L8F0vhO#rP}c1!@qCs75EEtrKRX;{u_7`
z{qMWIb?AEuV!F>Y85tQGemA7f-$|jDk3*aWw#)h^QwCiL!2&Hd0L
z0v2ej76eF2`&VI!fZfNlpFt4>SmphGTn_SJ1Pm3jUjG^)fP^W_6{QqHvaWBlxi0+L
zzJvs$Pb;J|sZ?|`i>Q{wfs&1+q$EP=60P76X9Kp79!8c~2Mi1h>j^)-?v^lLLJ)~Y
zng@T1q2G8Avd0X{E-a9;kzG}Vuw$`R{LCw@wP7zolMK}-c;dja;}fY?$|0!2Fc}uz
zq4}2E_DKN!?DDdvUzX3O?rt(1oqeu!!pKi1Yp(*^>b}|jdz?1BJ~4q`av|CJ6%V}_
zhzm$vUESJl%KP{!7#&Tro&qyk#p1ln{Nq(AtR$eI0YaqQU)U5Vs;S}Xw*Vw&VtFjt
zRI+ja{7fq(Tr;T;zmHq((QFs{)K5$Vbr<|Yfx9>xMI2peX|8xlS5b2$%
zb5Ib;%BTsc%K#jAYlnLzrGE>)5?Ad}MV?iuJet+A(32yTj6a=-ApE#f=;(i~$dW$Q
z=THNYkth>eKHS;i&tO_f!yXkH)wg9w2e^Je6HSgcQ^MEs6%L&mh!OJ_yXM;3+AoML
zDr;;X+Qalo)H)mDm%H$fqAVf_t2<1OIA@l~FDzcqr@zB8KZYxv(9sr@3Tma1v{y}%
ziQv#nPkDRXR?_HIzOWKV6(j^aRQNIRrn@tOKajVFJ#H4tt9af|=EH=+rDz-N(Q#n!
z>fynvvU_|*TBmcA`GEyojf67|PR-}!kehXWBgB-*M%URexhvj+ive+OLb!kX9mN2X
zp3#E}4vvmtkBpQCr10aIJ8|>B{phW-MGsPghL8m&(z6{li2#{%U
z4iqh8RsLzEd%cO6RpQ8U1$C;8yeJT;dOaUkB_*I}G%;Ejgk7|mNk&BK8!V1%A%TLK
zv>rv4sA@Mo2nh<272Jy&Q(D}=Bex_ycGcRvJ3KhJzdy*k4w6?MdnFwP*VNb10pVf<
zoi~b%D{AYl8f7me2!HfyKOPlJ&ii_Ey|dG|yGvo=;NwF~CACe{Yr)CM`Gb~?)II3M
zM!`GI)ocOVwwD=#@s~~{_ypRoZ8S+eq_euBFdfFVB#{&PvJOf7rGcKZ6IXH1x
zWac+1=Zd1g4St(_kmBDn#lQ&fw%Cdp%FHC&hxGKzQh4fGL->1ms=B$qc!E>@(lTRg
z+M$$lE!l=_SM0QG<*cSR8k*w}{e;C>1NemtV`J(X8i`scwE%Q;q-^fMnIUFogLS`F
z$8j+(C=a~B({>>1Fu1djz8|XRP~>VRi|`iX#-mD7+rARrW+BY;Kz3G*BaEL(aVslV^y~nuGvgQUntt~C@
zVrcA5K3B#rxNhcx;!zRR0uvq-?hd{00r|X0(a&d^i;o_ag6<
zEEL@Yjf|**!7sykGfEs9VBk{r4)6tMogGoA5cs9Fm>85kOmWT9#_;qyO=ljvrb*kG0T_mX6Jt$0NYD&s8LzJNufK&^;x@cgjD&-*dk->4qf-yb
zil+sJ2Vn}H5B5R$g`j$)gzc#;{P3r$QrYS`c*n-f|74`v!CdHq&z1r#hE+f(Vs1yU
zOBhj~)HxBYkoC3fH_W-+Bd1tJh?Mhr_5}DZU)~Ekx^atkixMI@6QlD#MnI*BA-k$f
z1w5?#y1V#Or!o=!S1+4RnBLsguOvd(G{6C>{h>k9!aAGhJdqTntR5QzNr8y$%Hm3r
zFQ8EKMvP5rR*#VipWslLhKRmAAkdtj;C{5hS>)*~8$#JX{V_|_bnv*@2f#>e)}=KpH(+F3FnT^J0Uf
z3MuSY@_Np62pka#HCe`
z<_SL7zHy=7Pd-G4h|Yo@(wFicvdbF9MHb(`N~bMLa^dPCAJfx9vioY}Bgf+6&klt4
z`{F5@0*h`RfOtwCg$KeJ$<57W201@P$e#U|TQ~;HNTNvV@{okTwLuy#7N%-M0RSEUz8&=l;3Nd~HVgnGN;t1P|xYXNWm=sO31^5S;be{mKj%*-9yEY;5dc
zXz27A>u)1=rW_Q>E>V~Xn2Ug%*=qxk_r$A$J^TJGO`kI@uXk;#BfN3xZ6lfVWw`O4
zRz3p5NT;jc5JJ%GN416v{C?hzg&y(!N^Qx|z(Co&BS#H#G&h`{EhTvp7pUDENM2
zBF+0D@j5@cA5}mIuabv+nARRP6ajG=aK_=_#P&DUqaQy~sTj~=A?=rVIW>N4
zi75GjeTpW7D#<${hs9`>&a8W4+Cx`U}YjO1~xbEVdtm;fWZ^B@ivI_=B
z6GtXH%jY?!IZf9dAJgBWg}Cr#m3|LoI
zSId_VebCIpMNb=YCAKS%X-VgU+{BiIOnu5`gN}`ldlh7bh(TpIAUD?^zA+yu7#bSp
znd=j@c?AY4r`?0kNODskkV0MAp+tM+FeJsK?IkxN`kqoaVFF|nQNp`XyLxtp@y5kJ
zxrH-SiXOUh9QeU{cl|2@Drt=)13*AXjB1xx3)}bkyYmC};amqqIvco6!o&5FG@W!O*{$;y!*WNFJ&Ut2d086FPK&&!X9S{kBncVUj$7%QX8?VzGIX^qAoi~@B7k3%=0>*p0oi36MG;MBwRB2fX
zyP2T2ihZ-_`WX!vY&*f`7*blS?%23(!!&xPA>#Um^l$$}^JWlw-X3)0%l6GbeiYN$
zTj*F+SXsF}@w?p`KO{ks!IWg&qTCgWw+MrQ5oqGKk{kYBp~djBJdELJ!e?psY`HU_
zuC2`&5t8XFL6aqw-+j+~?;Kh7J~x+R;HS^{
z-4Dy1Ayk|n&;7_Z^k5{vC`l}D^-*zhb=7K!Lw1u)tfAGD
zbRS=-u)V#l40E)D3};*DlseAR#WeSFfFfJ{mG<}RP$}_B6_}EG7MK)tetwSTNVHO+
zY?`p4)o*B^c^e*qMhQ$*_%$^;+rM$kSiqWcHYGY=gtxXfp?PqDGb%M}Fddi@)=^F@2%%7x^<#``jpUCp~k?)ybr_mcy?}?g8aKrxYw%+DH
zm#1X2im9ooJA>{_VDyj-i^#`6S`GEMm+Rf#>2~wTX<0*i(ePKX;!r)mdcn1PpHqv8
zh*mnBgcZ7O>PQ!U1$$=iVDEiMwjPh)U7+*WcEeezd`2~9=3-`VPqMEUBDzle^MK0hGB(e)ur9!xz;
zJG^=?qQw2~-L_fzuBXV6{=)AUn0g^sCmU?Z+#^(W(|=lzq6tmRsGriOST6jF?%?B#r&%fVxmcsJ!$4aT9udgCUwGvYJ^aD?`c7J@aZOAN&hYJ``VP5
z91LEA;Xz@+$+4beR=>)M=tg2zxVMz`i-Qsa=RgVy$_oPgP2V<7%H7V6rrC%!#ee`|
z#xo?;b3@Rn8Dd#Uz?eET_RklMHXH`p!62R~%;W(XK=1qr+H1Jr=IHLOc$-&oz}*Q$
zn`pGl-4C}{r#(GDiCiEAvgTdiQ0SH4wRr2bAOy^APEYH?FU)uFyJ=U=dU)AJ99eA@
zDzH?eF*fW^$Ho%!3qU%5=Pe@q^bIf0&;5OUQ(Sd8?WQT>8AqNQ#xUR}E0pktaj$;B
z9Z`}%@sNRBg_fQ+d)8E9vs@Zqv@@jV=6XcjxH)=$KfJ&KgDN)LLY2KmX#CL%t*$QC
z!0;*Qu|*tu4{yGsOEBe~9r()jrsMSY!Cag>L@E8d^}KFW(YS
z>{{%+X8lYUk49L3ZaGfJ?0r0V*)|7$GY|ojxNok;J`|v>jNBIYdT!O>sAjI^&M;j4
zM-*&c?1vTA^HC4Iy}kAfgi%@X@|QxoeHQ;vtwj#(wX4{cBcCzpDWz<7F9*^15zUW@
z%|-Mht;QWdyRq-x+@1Rhc5W60^J~n5V6Or(H^>qP=>92Wl^E&hOrcO7Pu7wg7ztM{
z4MdZ-LMy>E8))AOZFIF+kUe7I;(5lNu0nr6NlCf8vs37my}TH*DodU~!>-4W8ad_T
zi}ys?I2r2;imjv(dGj`9^a)MjpQuMS*JNa5fz7w(DclZ4rQ4Td<^=>!30s#B5-S*P
zf8xm-TH14$7Zy~@gpO--bHC*M-bA7uk@F;c46|)RMZbD+db%ih(RaHBkgTP*HT+0T
zZ>2F03e$AZ*C%ZSnN^gPeYbDy{e@Zgq2KV}VEZ`k#ir#8bS3Uo7R70V(V`K~rKbE_
z5j^>hU9>amN5{GR=BnNs^%Ytm#>-1*qOUSsTvW6=*Aq!tWAPH)bM0d|mNPoq4vs1W
zo+*?)mbgXNahZS?FGJa1yW$!7!@s)q(2A-p#PFyj(;C@czIo6YVqOv#-Vf_3t*!s=
z-hy>={dgad@b{81{O0E7td0H+J7T#S=_O}up1qfuks}@gxN7KyaZgiTw{>){n+%jo4-Qp&{O&oSBjMuae&d;F
zI|cBaUv@2JX8xJUE>=S4Ck$Y@mv;lfcyB@fWs%<
zoV>Nay<$(fyc|&fq&y=0dma;jRb5y2L}G}EC~j+y+
zAM(Ya0iZ^bGdLA~`?s{Xn9$X3A)#`#{S5kym~3Sj-398df0(8iz45mKq4QX9UeDB2
z7qw_zIQcPQVQTuw3m${Mj^Gp|YAzph+uUPlh!(`_)4%SxuzSchHa50GSa3_C+RGn3
z(6_v*#;K`&^If4#y4t{Ht=R<+4^P48qyCs^PuyDqB)sXa7YhsPyF#IC8cL&ItYmIi
ze`2ETyYs3t<96@nQg>x#@^@u&M?a~0Xi!D#-%aY6xlaai31E=
zD21(G*x3XPOS+k23JQ_xEExN>a`AL&2(*oFB>3@^Tq7-Xcr9vtelAdA8uf${q;7bo
zo`zwJwandBPpHN8SwYg!;LGbs=a$?K&TbAz}7;K)Da^Go-2%%>zuRkwZ~0RiH9ibj#^U7&kHf6-Vj@2F7WG*cw|k^r{WSeQi8xcgv4Mee*zWGC0rf(*e%Y)lNsZCe3m
z!@GVi&3|GEly42ff!?IU$tIKi1yjKqAxe3P6T{mQ-=j1j;`lYMIJJ8RC!IX-C@)Rh
znfF}uHNT=}ZLxeDQO{eq_wV{-ihZ#Q|EZ54-?HhTGsv{qo8^uCHjzx5gKllvf1^s>
z6W$}_r-*?~_1e5AJ0KK2yYA?_qvK*Q4<{vq8B}xPS
zrI;2IF>3&N{!Qt7cj;_q;H=r-)%5f_O^{Cuu9_8kwYC3!ovB5hd3N;yn-_?B^c*HL
TzbJ{mb_A#>Xv){ZEu;Sjxq-&r
literal 0
HcmV?d00001
diff --git a/sdk/freemius/includes/class-freemius.php b/sdk/freemius/includes/class-freemius.php
index 4ee2225f..dd051035 100755
--- a/sdk/freemius/includes/class-freemius.php
+++ b/sdk/freemius/includes/class-freemius.php
@@ -3913,7 +3913,7 @@ function has_api_connectivity( $flush_if_no_connectivity = false ) {
if ( $is_connected ) {
FS_GDPR_Manager::instance()->store_is_required( $pong->is_gdpr_required );
}
-
+
$this->store_connectivity_info( $pong, $is_connected );
return $this->_has_api_connection;
@@ -9546,7 +9546,7 @@ public static function _uninstall_plugin_hook() {
if ( is_object( $fs ) ) {
$fs->remove_sdk_reference();
-
+
self::require_plugin_essentials();
if ( is_plugin_active( $fs->_free_plugin_basename ) ||
@@ -12594,7 +12594,7 @@ function _get_subscription_cancellation_dialog_box_template_params( $is_license_
// Subscription cancellation dialog box is currently not supported for multisite networks.
return array();
}
-
+
if ( $this->is_whitelabeled() ) {
return array();
}
@@ -12690,7 +12690,7 @@ function _add_license_activation() {
! $this->is_premium() &&
/**
* Also handle the case when an upgrade was made using the free version.
- *
+ *
* @author Leo Fajardo (@leorw)
* @since 2.3.2
*/
@@ -12860,7 +12860,7 @@ function _set_beta_mode_ajax_handler() {
*/
function _activate_license_ajax_action() {
$this->_logger->entrance();
-
+
$this->check_ajax_referer( 'activate_license' );
$license_key = trim( fs_request_get( 'license_key' ) );
@@ -12918,7 +12918,7 @@ function _user_change_ajax_action() {
foreach ( $installs_info_by_slug_map as $slug => $install_info ) {
$install_ids[ $slug ] = $install_info['install']->id;
}
-
+
$params['install_ids'] = implode( ',', array_values( $install_ids ) );
$install = $this->get_api_site_scope()->call( $this->add_show_pending( '/' ), 'put', $params );
@@ -12971,7 +12971,7 @@ function _user_change_ajax_action() {
*
* @author Vova Feldman (@svovaf)
* @since 2.3.0
- *
+ *
* @param string $license_key
* @param null|bool $is_marketing_allowed
* @param null|number $plugin_id
diff --git a/sdk/freemius/includes/fs-plugin-info-dialog.php b/sdk/freemius/includes/fs-plugin-info-dialog.php
index 2ab490e4..01bdb12f 100755
--- a/sdk/freemius/includes/fs-plugin-info-dialog.php
+++ b/sdk/freemius/includes/fs-plugin-info-dialog.php
@@ -1628,4 +1628,4 @@ function toggleDropdown( $dropdown, state ) {
iframe_footer();
exit;
}
- }
\ No newline at end of file
+ }
diff --git a/sdk/wsal-freemius.php b/sdk/wsal-freemius.php
index c51129e9..0c96e076 100644
--- a/sdk/wsal-freemius.php
+++ b/sdk/wsal-freemius.php
@@ -34,7 +34,7 @@ function wsal_freemius() {
// Check anonymous mode.
$freemius_state = get_site_option( 'wsal_freemius_state', 'anonymous' );
$is_anonymous = ( 'anonymous' === $freemius_state || 'skipped' === $freemius_state );
- $is_premium = false;
+ $is_premium = true;
$is_anonymous = $is_premium ? false : $is_anonymous;
// Trial arguments.
@@ -49,24 +49,25 @@ function wsal_freemius() {
$wsal_freemius = fs_dynamic_init(
array(
- 'id' => '94',
- 'slug' => 'wp-security-audit-log',
- 'type' => 'plugin',
- 'public_key' => 'pk_d602740d3088272d75906045af9fa',
- 'premium_suffix' => '(Premium)',
- 'is_premium' => $is_premium,
- 'has_addons' => false,
- 'has_paid_plans' => true,
- 'trial' => $trial_args,
- 'has_affiliation' => false,
- 'menu' => array(
+ 'id' => '94',
+ 'slug' => 'wp-security-audit-log',
+ 'type' => 'plugin',
+ 'public_key' => 'pk_d602740d3088272d75906045af9fa',
+ 'premium_suffix' => '(Premium)',
+ 'is_premium' => $is_premium,
+ // If your plugin is a serviceware, set this option to false.
+ 'has_premium_version' => true,
+ 'has_addons' => false,
+ 'has_paid_plans' => true,
+ 'trial' => $trial_args,
+ 'has_affiliation' => false,
+ 'menu' => array(
'slug' => 'wsal-auditlog',
'support' => false,
'affiliation' => false,
'network' => true,
),
- 'anonymous_mode' => $is_anonymous,
- 'live' => true,
+ 'anonymous_mode' => $is_anonymous,
)
);
}
diff --git a/wp-security-audit-log.php b/wp-security-audit-log.php
index db4922a0..b58a0b82 100644
--- a/wp-security-audit-log.php
+++ b/wp-security-audit-log.php
@@ -5,6 +5,7 @@
* Description: Identify WordPress security issues before they become a problem. Keep track of everything happening on your WordPress including WordPress users activity. Similar to Windows Event Log and Linux Syslog, WP Activity Log generates a security alert for everything that happens on your WordPress blogs and websites. Use the Audit Log Viewer included in the plugin to see all the security alerts.
* Author: WP White Security
* Version: 4.1.0
+ * Version: 4.1.1
* Text Domain: wp-security-audit-log
* Author URI: http://www.wpwhitesecurity.com/
* License: GPL2
@@ -46,7 +47,7 @@ class WpSecurityAuditLog {
*
* @var string
*/
- public $version = '4.1.0';
+ public $version = '4.1.1';
// Plugin constants.
const PLG_CLS_PRFX = 'WSAL_';
@@ -788,7 +789,7 @@ public function define_constants() {
}
// Plugin Docs URL.
if ( ! defined( 'WSAL_DOCS_URL' ) ) {
- define( 'WSAL_DOCS_URL', 'https://wpactivitylog.com/support/kb/' );
+ define( 'WSAL_DOCS_URL', 'https://wpactivitylog.com/support/' );
}
// Plugin Issue Reporting URL.
if ( ! defined( 'WSAL_ISSUE_URL' ) ) {
@@ -1211,16 +1212,16 @@ public function load_wsal() {
$this->settings->SetPruningDate( $pruning_date );
}
- $log_404 = $this->GetGlobalOption( 'log-404' );
+ $log_404 = $this->options_helper->get_option_value( 'log-404' );
// If old setting is empty enable 404 logging by default.
if ( false === $log_404 ) {
- $this->SetGlobalOption( 'log-404', 'on' );
+ $this->options_helper->set_option_value( 'log-404', 'on' );
}
- $purge_log_404 = $this->GetGlobalOption( 'purge-404-log' );
+ $purge_log_404 = $this->options_helper->get_option_value( 'purge-404-log' );
// If old setting is empty enable 404 purge log by default.
if ( false === $purge_log_404 ) {
- $this->SetGlobalOption( 'purge-404-log', 'on' );
+ $this->options_helper->set_option_value( 'purge-404-log', 'on' );
}
// Load translations.
@@ -1304,16 +1305,16 @@ public function Install() {
$this->settings->SetDisabledAlerts( array( 2099, 2126 ) );
}
- $log_404 = $this->GetGlobalOption( 'log-404' );
+ $log_404 = $this->options_helper->get_option_value( 'log-404' );
// If old setting is empty enable 404 logging by default.
if ( false === $log_404 ) {
- $this->SetGlobalOption( 'log-404', 'on' );
+ $this->options_helper->set_option_value( 'log-404', 'on' );
}
- $purge_log_404 = $this->GetGlobalOption( 'purge-404-log' );
+ $purge_log_404 = $this->options_helper->get_option_value( 'purge-404-log' );
// If old setting is empty enable 404 purge log by default.
if ( false === $purge_log_404 ) {
- $this->SetGlobalOption( 'purge-404-log', 'on' );
+ $this->options_helper->set_option_value( 'purge-404-log', 'on' );
}
// Install cleanup hook (remove older one if it exists).
@@ -1386,44 +1387,6 @@ public function Update( $old_version, $new_version ) {
$delete_transient_fn( 'wsal-is-advert-dismissed' ); // Delete advert transient.
}
- /**
- * IMPORTANT: VERSION SPECIFIC UPDATE
- *
- * It only needs to run when old version of the plugin is less than 3.2.3
- * & the plugin is being updated to version 3.2.3 or later versions.
- *
- * @since 3.2.3
- */
- if ( version_compare( $old_version, '3.2.3', '<' ) && version_compare( $new_version, '3.2.2', '>' ) ) {
- $this->getConnector()->getAdapter( 'Option' )->update_value_column();
-
- // Migrate file scan options to WSAL Options table.
- $initial_scan_option = 'wsal_is_initial_scan_';
- $initial_scan_option_migrate = 'is_initial_scan_';
- $local_scan_files = 'wsal_local_files_';
- $local_scan_files_migrate = 'local_files_';
-
- for ( $index = 0; $index < 7; $index++ ) {
- // Initial scan option.
- $initial_option_value = get_site_option( $initial_scan_option . $index, 'yes' );
- delete_site_option( $initial_scan_option . $index );
-
- // If option already does not exist then create it.
- if ( ! $this->GetGlobalOption( $initial_scan_option_migrate . $index, false ) ) {
- $this->SetGlobalOption( $initial_scan_option_migrate . $index, $initial_option_value );
- }
-
- // Local files option.
- $local_files_value = get_site_option( $local_scan_files . $index, array() );
- delete_site_option( $local_scan_files . $index );
-
- // If option already does not exist then create it.
- if ( ! $this->GetGlobalOption( $local_scan_files_migrate . $index, false ) ) {
- $this->SetGlobalOption( $local_scan_files_migrate . $index, $local_files_value );
- }
- }
- }
-
/**
* IMPORTANT: VERSION SPECIFIC UPDATE
*
@@ -1520,32 +1483,6 @@ public function Update( $old_version, $new_version ) {
$this->settings->set_frontend_events( $frontend_events );
}
- /**
- * Upgrade routine for versions of the plugin prior to 3.5.2+
- *
- * NOTE: this uses a version compare of 1 minor version in the
- * future to enure that when old crons need removed they are.
- *
- * @since 3.5.2
- */
- if ( version_compare( $old_version, '3.5.2', '<=' ) ) {
- /*
- * Handle remapping old, unprefixed, cron tasks to new ones
- * that have the prefix in the handle.
- *
- * NOTE: Not using 'wsal_init' because `wsalCommonClass`
- * isn't set on WpSecurityAuditLog that early.
- */
- add_action(
- 'init',
- function() {
- require_once 'classes/Update/Task/CronNameRemap.php';
- $cron_name_remapper = new WSAL\Update\Task\CronNameRemap( WpSecurityAuditLog::GetInstance() );
- $cron_name_remapper->run();
- }
- );
- }
-
if ( version_compare( $old_version, '4.0.0', '<=' ) ) {
/*
* Ensure that the grid view 'info' colum is set to display.
@@ -1573,8 +1510,9 @@ function() {
* any for each new version we release.
*
* @since 4.0.3
+ * @since 4.1.0 - updated the compare tag.
*/
- if ( version_compare( $old_version, '4.0.3', '<=' ) ) {
+ if ( version_compare( $old_version, '4.1.0', '<=' ) ) {
require_once 'classes/Update/Task/MoveSettingsToOptionsTable.php';
// run the update routine.
@@ -2121,6 +2059,69 @@ public function wsal_hide_plugin( $plugins ) {
return $plugins;
}
+
+ /**
+ * Temporary autoloader for WSAL classes that somehow bypassed regular means of including
+ * them during the plugin runtime.
+ *
+ * As far as we know, only the UserSessionsTracking object will fall into this autoloader.
+ *
+ * We could optimize the code below by caching the list of extension folders.
+ *
+ * @param string $class Fully qualified class name.
+ *
+ * @return bool
+ */
+ public function autoloader( $class ) {
+ if ( ! preg_match( '/^WSAL_/', $class ) ) {
+ return false;
+ }
+
+ $base_path = plugin_dir_path( __FILE__ );
+ $subfolders = array();
+ $matches = explode( '_', $class );
+ if ( count( $matches ) > 2 ) {
+ // remove first (WSAL) and last one (actual file name)
+ array_shift( $matches );
+ array_pop( $matches );
+ $subfolders = $matches;
+
+ // workaround for MySQL adapter classes
+ if ( count( $subfolders ) == 2 && $subfolders[0] === 'Adapters' && $subfolders[1] === 'MySQL' ) {
+ $class .= 'Adapter';
+ }
+ }
+
+ // use last part of the class name as the actual file name to look for
+ $file_name = substr( $class, strrpos( $class, '_' ) + 1 );
+
+ // try the main "classes" folder first
+ $partial_path_to_file = 'classes' . DIRECTORY_SEPARATOR . implode( DIRECTORY_SEPARATOR, $subfolders ) . DIRECTORY_SEPARATOR . $file_name . '.php';
+ $path_to_file = $base_path . $partial_path_to_file;
+ if ( file_exists( $path_to_file ) ) {
+ require_once $path_to_file;
+
+ return true;
+ }
+
+ if ( ! function_exists( 'list_files' ) ) {
+ require_once ABSPATH . 'wp-admin/includes/file.php';
+ }
+
+ $extension_folders = list_files( $base_path . 'extensions', 1 );
+ foreach ( $extension_folders as $extension_folder ) {
+ if ( ! is_dir( $extension_folder ) ) {
+ continue;
+ }
+
+ $path_to_file = $extension_folder . $partial_path_to_file;
+ if ( file_exists( $path_to_file ) ) {
+ require_once $path_to_file;
+
+ return true;
+ }
+ }
+ }
}
// Begin load sequence.
From 2bca1c0522bd4ec1281ae071f9cc9779c0daf224 Mon Sep 17 00:00:00 2001
From: Danny Jones <59394454+DannyWPWS@users.noreply.github.com>
Date: Tue, 23 Jun 2020 13:54:04 +0100
Subject: [PATCH 02/10] Removing File Changes (Now using WFCM)
---
classes/AbstractSensor.php | 2 +-
classes/AuditLogListView.php | 1 +
classes/Models/Occurrence.php | 6 +-
classes/SensorManager.php | 16 +-
classes/Sensors/MetaData.php | 5 +
.../Utilities/PluginInstallAndActivate.php | 24 +-
classes/Views/AuditLog.php | 12 +-
classes/Views/EmailNotifications.php | 2 +-
classes/Views/ExternalDB.php | 2 +-
classes/Views/Help.php | 2 +-
classes/Views/Settings.php | 875 +---
classes/Views/SetupWizard.php | 6 +-
classes/Views/ToggleAlerts.php | 22 +-
css/extensions.css | 30 +-
defaults.php | 21 +-
languages/wp-security-audit-log.pot | 3800 ++++++++++++++++-
.../assets/img/wp-security-audit-log.png | Bin 0 -> 9380 bytes
.../includes/fs-plugin-info-dialog.php | 2 +-
wp-security-audit-log.php | 88 +-
19 files changed, 3781 insertions(+), 1135 deletions(-)
create mode 100644 sdk/freemius/assets/img/wp-security-audit-log.png
diff --git a/classes/AbstractSensor.php b/classes/AbstractSensor.php
index 64850f1b..15bc378b 100644
--- a/classes/AbstractSensor.php
+++ b/classes/AbstractSensor.php
@@ -24,7 +24,7 @@ abstract class WSAL_AbstractSensor {
/**
* Instance of WpSecurityAuditLog.
*
- * @var object
+ * @var WpSecurityAuditLog
*/
protected $plugin;
diff --git a/classes/AuditLogListView.php b/classes/AuditLogListView.php
index ad5aac9c..a905aad0 100644
--- a/classes/AuditLogListView.php
+++ b/classes/AuditLogListView.php
@@ -245,6 +245,7 @@ public function extra_tablenav( $which ) {
}
}
+
// Switch to live or archive DB.
if ( $this->_plugin->settings->IsArchivingEnabled() ) {
if (
diff --git a/classes/Models/Occurrence.php b/classes/Models/Occurrence.php
index 1b8b95f0..7088d2d1 100644
--- a/classes/Models/Occurrence.php
+++ b/classes/Models/Occurrence.php
@@ -204,6 +204,10 @@ public function GetMessage( $meta_formatter = null, $highlight = false, $meta =
'name' => __( 'BBPress', 'wp-security-audit-log' ),
'event_ids' => array( 8000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8015, 8016, 8017, 8018, 8019, 8020, 8021, 8022, 8023 ),
),
+ 'wfcm' => array(
+ 'name' => __( 'WFCM', 'wp-security-audit-log' ),
+ 'event_ids' => array( 6028, 6029, 6030, 6031, 6032, 6033 ),
+ ),
);
$installer_nonce = wp_create_nonce( 'wsal-install-addon' );
foreach ( $addon_event_codes as $key => $addon ) {
@@ -211,7 +215,7 @@ public function GetMessage( $meta_formatter = null, $highlight = false, $meta =
if ( in_array( $this->alert_id, $addon['event_ids'], true ) ) {
// check key and update message here.
$message = sprintf(
- 'The details of this event are unknown. You need to install the add-on for %1$s to see the details.%2$s%3$sInstall and activate add-on%4$s',
+ 'The details of this event are unknown. You need to install the add-on for %1$s to see the details.%2$s%3$sInstall and activate extension %4$s',
esc_html( $addon['name'] ),
' ',
' |