WP Security Audit Log - Version 4.2.0

Version Description

(2021-02-11) =

Release notes: WP Activity Log 4.2: Support for all date & time formats & other major updates

New features * New date & time module that supports any type of date and time format that WordPress supports. * An all new activity log dashboard widget. * Added activity log coverage for several new WordPress settings, including automatic updates settings, date and time settings and application passwords.

Improved activity log coverage * New event IDs for changes in posts * ID 2129: User added / changed / removed a post's excerpt * ID 2130: User added / changed / removed a post's featured image

  • New event IDs for changes in WordPress settings

    • ID 6035: Changed the "Your homepage displays" WordPress setting
    • ID 6036: Changed the homepage in the WordPress setting
    • ID 6037: Changed the posts page in the WordPress settings
    • ID 6040: Changed the Timezone in the WordPress settings
    • ID 6041: Changed the Date format in the WordPress settings
    • ID 6042: Changed the Time format in the WordPress settings
    • ID 6044: User changed the WordPress automatic update settings
  • New event IDs for application passwords

    • ID 4025: User added / removed application password from own profile
    • ID 4026: User added / removed application password from another user's profile
    • ID 4027: User revoked all application passwords from own profile
    • ID 4028: User revoked all application passwords from another user's profile
  • New event IDs for multisite network settings

    • ID 7007: The setting Allow site administrators to add new users to their site was enabled / disabled
    • ID 7008: The value of the Site upload space setting was changed
    • ID 7009: The value of the file size allowed in the site upload space setting was changed
    • ID 7010: Changed the list of allowed file types on the network
    • ID 7011: Changed the value of the maximum upload file size network setting
  • Other new event IDs

    • ID 1010: User requested a password reset.

Improvements * Improved coverage of users logins, logout and failed logins activity on custom login pages. * Standardized the text, format and metadata formatting of all the activity log events. * Drastically improved the coverage of the activity logs sensors with a number of new event IDs. * Redesigned the activity logs extension UI. * Support for URL rewrites and page names (correct page title reported even if the page is a URL rewrite). * Default activity log SMS notifications template updated. * Plugins version numbers are now reported in the activity log (for example when a plugin is updated). * Users who hide the plugin from plugins page now get a notification when a plugin update is available. * Consolidated the code that generates the activity log messages. * Merged the Help and Contact us pages in the plugin menu. * Improved the Reports filters queries to address timeout issues on very big websites. * Replaced the "SHOW TABLES" queries for much better plugin performance. * Removed the "/uploads/wp-activity-log/" directory in the free edition. This is only required in premium edition. * Support for CloudFlare HTTP headers - plugin reports correct IP when behind CloudFlare CDN or firewall (more info on firewalls support)[https://wpactivitylog.com/support/kb/support-reverse-proxies-web-application-firewalls/]. * Reports, Email & SMS notifications and other modules now fully support metadata which contains the space character. For example the user role Shop Manager. * Remove support for custom sensors. Custom event IDs in activity log now only supported via activity log extension plugin. * Completely removed the code of the old promotional events (stopped using them in 2017). * Removed the request log file setting. The request log file can now be enabled via a filter. * Removed the working directory location setting from plugin settings. Instead introduced a new wp-config.php constant: WSAL_WORKING_DIR_PATH
* Plugin now using WP_CONTENT_DIR instead of ABSPATH were applicable (better supported by WordPress specific web hosts). * Added event text to event IDs 1001 and 1001. * The system information file now also includes all of the plugin's settings saved in the wp_options table. * Simplified the process that retrieves filnames. * Several under the hood performance improvements (removed obsolete code, improved sensors etc)

Bug fixes * Event ID 1000 (user login) still logged when IP address is excluded. * Change in page template was not being logged with event ID 2048. * Event ID 2002 was not always reported in some edge cases. * Plugin's directory in uploads was not being created when website was hosted on Flywheel and WordPress.com. * Date & time were missing in CSV reports when using some specific date and time formats in WordPress. * Super admin role was also shown for administrators on single site setup. * Plugin was not showing the correct total of sessions when deleting all sessions. * Plugin was generating a PHP error when a network site was deleted. * No event was being reported when installing activity log extensions for third party plugins. * Plugin installation was not running correctly when installed alongside the Website File Changes Monitor plugin. * The setting to configure the number of failed logins to keep a log of was reset to default each time the settings page was saved. * Wrong variable was used in licensing notifications, resulting in misleading error responses when license failed to activate.

Refer to the complete plugin changelog for more detailed information about what was new, improved and fixed in previous versions of the WP Activity Log plugin.

Download this release

Release Info

Developer WPWhiteSecurity
Plugin Icon 128x128 WP Security Audit Log
Version 4.2.0
Comparing to
See all releases

Code changes from version 4.1.5.2 to 4.2.0

Files changed (47) hide show
  1. classes/AbstractLogger.php +2 -2
  2. classes/Adapters/MySQL/ActiveRecordAdapter.php +3 -12
  3. classes/Alert.php +3 -3
  4. classes/AlertManager.php +62 -31
  5. classes/AuditLogGridView.php +9 -173
  6. classes/AuditLogListView.php +7 -163
  7. classes/Connector/MySQLDB.php +2 -1
  8. classes/Loggers/Database.php +2 -2
  9. classes/SensorManager.php +4 -9
  10. classes/Sensors/Content.php +154 -71
  11. classes/Sensors/Database.php +62 -30
  12. classes/Sensors/FrontendLogin.php +0 -84
  13. classes/Sensors/LogInOut.php +20 -33
  14. classes/Sensors/Menus.php +38 -27
  15. classes/Sensors/MetaData.php +4 -1
  16. classes/Sensors/Multisite.php +79 -15
  17. classes/Sensors/PhpErrors.php +0 -177
  18. classes/Sensors/PluginsThemes.php +7 -3
  19. classes/Sensors/Request.php +0 -120
  20. classes/Sensors/System.php +153 -0
  21. classes/Sensors/UserProfile.php +94 -0
  22. classes/Settings.php +406 -576
  23. classes/ThirdPartyExtensions/GravityFormsExtension.php +2 -2
  24. classes/Uninstall.php +4 -21
  25. classes/Utilities/DateTimeFormatter.php +171 -0
  26. classes/Utilities/Emailer.php +3 -2
  27. classes/Utilities/PluginInstallAndActivate.php +34 -32
  28. classes/Views/AuditLog.php +3 -3
  29. classes/Views/Help.php +29 -1
  30. classes/Views/Settings.php +1 -100
  31. classes/Views/SetupWizard.php +4 -4
  32. classes/Views/ToggleAlerts.php +98 -49
  33. classes/WidgetManager.php +8 -3
  34. classes/index.php +4 -0
  35. css/index.php +4 -0
  36. defaults.php +148 -123
  37. img/index.php +4 -0
  38. index.php +4 -0
  39. js/auditlog.js +1 -1
  40. js/index.php +4 -0
  41. js/jquery.plugin.min.js +9 -0
  42. languages/wp-security-audit-log.pot +1370 -1176
  43. readme.txt +83 -7
  44. sdk/freemius/includes/class-freemius.php +9 -9
  45. sdk/freemius/templates/contact.php +1 -1
  46. sdk/index.php +4 -0
  47. wp-security-audit-log.php +61 -47
classes/AbstractLogger.php CHANGED
@@ -10,14 +10,14 @@ abstract class WSAL_AbstractLogger {
10
  /**
11
  * Instance of WpSecurityAuditLog.
12
  *
13
- * @var object
14
  */
15
  protected $plugin;
16
 
17
  /**
18
  * Method: Constructor.
19
  *
20
- * @param object $plugin - Instance of WpSecurityAuditLog.
21
  * @since 1.0.0
22
  */
23
  public function __construct( WpSecurityAuditLog $plugin ) {
10
  /**
11
  * Instance of WpSecurityAuditLog.
12
  *
13
+ * @var WpSecurityAuditLog
14
  */
15
  protected $plugin;
16
 
17
  /**
18
  * Method: Constructor.
19
  *
20
+ * @param WpSecurityAuditLog $plugin - Instance of WpSecurityAuditLog.
21
  * @since 1.0.0
22
  */
23
  public function __construct( WpSecurityAuditLog $plugin ) {
classes/Adapters/MySQL/ActiveRecordAdapter.php CHANGED
@@ -438,7 +438,7 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
438
  * @return string
439
  */
440
  protected function _GetUninstallQuery() {
441
- return 'DROP TABLE ' . $this->GetTable();
442
  }
443
 
444
  /**
@@ -625,18 +625,9 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
625
  $sql .= " LIMIT {$_limit}";
626
  }
627
  $results = $_wpdb->get_results( $sql );
628
-
629
  if ( ! empty( $results ) ) {
630
- foreach ( $results as $row ) {
631
- $sql = "SELECT t6.ID FROM $wpdb->users AS t6 WHERE t6.user_login = \"$row->user_id\"";
632
- $user_id = $wpdb->get_var( $sql );
633
- if ( null == $user_id ) {
634
- $sql = "SELECT t4.ID FROM $wpdb->users AS t4 WHERE t4.ID = \"$row->user_id\"";
635
- $user_id = $wpdb->get_var( $sql );
636
- }
637
- $row->user_id = $user_id;
638
- $results['lastDate'] = $row->created_on;
639
- }
640
  }
641
 
642
  return $results;
438
  * @return string
439
  */
440
  protected function _GetUninstallQuery() {
441
+ return 'DROP TABLE IF EXISTS ' . $this->GetTable();
442
  }
443
 
444
  /**
625
  $sql .= " LIMIT {$_limit}";
626
  }
627
  $results = $_wpdb->get_results( $sql );
 
628
  if ( ! empty( $results ) ) {
629
+ $last_item = end( $results );
630
+ $results['lastDate'] = $last_item->created_on;
 
 
 
 
 
 
 
 
631
  }
632
 
633
  return $results;
classes/Alert.php CHANGED
@@ -122,7 +122,7 @@ final class WSAL_Alert {
122
  * @param mixed $highlight - (Optional) Highlight format.
123
  * @return string The expanded message.
124
  */
125
- protected function GetFormattedMesg( $orig_mesg, $meta_data = array(), $meta_formatter = null, $occurrence_id = 0, $highlight = null ) {
126
  // Tokenize message with regex.
127
  $message = preg_split( '/(%.*?%)/', (string) $orig_mesg, -1, PREG_SPLIT_DELIM_CAPTURE );
128
  if ( ! is_array( $message ) ) {
@@ -155,7 +155,7 @@ final class WSAL_Alert {
155
  * @param mixed $highlight - (Optional) Highlight format.
156
  * @return string Fully formatted message.
157
  */
158
- public function GetMessage( $meta_data = array(), $meta_formatter = null, $mesg = null, $occurrence_id = 0, $highlight = false ) {
159
- return $this->GetFormattedMesg( is_null( $mesg ) ? $this->mesg : $mesg, $meta_data, $meta_formatter, $occurrence_id, $highlight );
160
  }
161
  }
122
  * @param mixed $highlight - (Optional) Highlight format.
123
  * @return string The expanded message.
124
  */
125
+ protected function GetFormattedMesg( $orig_mesg, $meta_data = array(), $meta_formatter = null, $occurrence_id = 0, $highlight = null, $context = false ) {
126
  // Tokenize message with regex.
127
  $message = preg_split( '/(%.*?%)/', (string) $orig_mesg, -1, PREG_SPLIT_DELIM_CAPTURE );
128
  if ( ! is_array( $message ) ) {
155
  * @param mixed $highlight - (Optional) Highlight format.
156
  * @return string Fully formatted message.
157
  */
158
+ public function GetMessage( $meta_data = array(), $meta_formatter = null, $mesg = null, $occurrence_id = 0, $highlight = false, $context = false ) {
159
+ return $this->GetFormattedMesg( is_null( $mesg ) ? $this->mesg : $mesg, $meta_data, $meta_formatter, $occurrence_id, $highlight, $context );
160
  }
161
  }
classes/AlertManager.php CHANGED
@@ -89,6 +89,11 @@ final class WSAL_AlertManager {
89
  */
90
  public $ignored_cpts = array();
91
 
 
 
 
 
 
92
  /**
93
  * Create new AlertManager instance.
94
  *
@@ -139,20 +144,6 @@ final class WSAL_AlertManager {
139
  );
140
 
141
  $this->date_format = $this->plugin->settings()->GetDateFormat();
142
- $this->datetime_format = $this->plugin->settings()->GetDatetimeFormat( false );
143
- $timezone = $this->plugin->settings()->GetTimezone();
144
-
145
- if ( '0' === $timezone ) {
146
- $timezone = 'utc';
147
- } elseif ( '1' === $timezone ) {
148
- $timezone = 'wp';
149
- }
150
-
151
- if ( 'utc' === $timezone ) {
152
- $this->gmt_offset_sec = date( 'Z' );
153
- } else {
154
- $this->gmt_offset_sec = get_option( 'gmt_offset' ) * ( 60 * 60 );
155
- }
156
  }
157
 
158
  /**
@@ -321,18 +312,53 @@ final class WSAL_AlertManager {
321
  * @param callable $cond - A future condition callback (receives an object of type WSAL_AlertManager as parameter).
322
  */
323
  public function TriggerIf( $type, $data, $cond = null ) {
 
324
  $username = null;
325
  $roles = [];
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  if ( 1000 === $type ) {
327
  // when event 1000 is triggered, the user is not logged in
328
  // we need to extract the username and user roles from the event data
329
  $username = array_key_exists( 'Username', $data ) ? $data['Username'] : null;
330
  $roles = array_key_exists( 'CurrentUserRoles', $data ) ? $data['CurrentUserRoles'] : [];
 
 
 
 
 
 
 
 
331
  } else {
332
  $username = wp_get_current_user()->user_login;
333
  $roles = $this->plugin->settings()->GetCurrentUserRoles();
334
  }
335
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
  if ( $this->CheckEnableUserRoles( $username, $roles ) ) {
337
  $this->_pipeline[] = array(
338
  'type' => $type,
@@ -1225,6 +1251,8 @@ final class WSAL_AlertManager {
1225
  'unblocked' => __( 'Unblocked', 'wp-security-audit-log' ),
1226
  'renamed' => __( 'Renamed', 'wp-security-audit-log' ),
1227
  'duplicated' => __( 'Duplicated', 'wp-security-audit-log' ),
 
 
1228
  );
1229
  // sort the types alphabetically.
1230
  asort( $types );
@@ -1273,9 +1301,11 @@ final class WSAL_AlertManager {
1273
  /**
1274
  * Filter query for MWPAL.
1275
  *
1276
- * @param WSAL_Models_OccurrenceQuery $query - Events query.
1277
- * @param array $query_args - Query args.
 
1278
  * @return WSAL_Models_OccurrenceQuery
 
1279
  */
1280
  private function filter_query( $query, $query_args ) {
1281
  if ( isset( $query_args['search_term'] ) && $query_args['search_term'] ) {
@@ -1297,8 +1327,7 @@ final class WSAL_AlertManager {
1297
  if ( 'event' === $prefix ) {
1298
  $query->addORCondition( array( 'alert_id = %s' => $value ) );
1299
  } elseif ( in_array( $prefix, array( 'from', 'to', 'on' ), true ) ) {
1300
- $date_format = WpSecurityAuditLog::GetInstance()->settings->GetDateFormat();
1301
- $date = DateTime::createFromFormat( $date_format, $value[0] );
1302
  $date->setTime( 0, 0 ); // Reset time to 00:00:00.
1303
  $date_string = $date->format( 'U' );
1304
 
@@ -1687,7 +1716,9 @@ final class WSAL_AlertManager {
1687
  * Create statistics unique IPs report.
1688
  *
1689
  * @param array $filters - Filters.
 
1690
  * @return array
 
1691
  */
1692
  private function generate_statistics_unique_ips( $filters ) {
1693
  $date_start = ! empty( $filters['date-range']['start'] ) ? $filters['date-range']['start'] : null;
@@ -1845,20 +1876,24 @@ final class WSAL_AlertManager {
1845
  /**
1846
  * Get alert details.
1847
  *
1848
- * @param int $entry_id - Entry ID.
1849
- * @param int $alert_id - Alert ID.
1850
- * @param int $site_id - Site ID.
1851
- * @param string $created_on - Alert generation time.
1852
- * @param int $user_id - User id.
1853
- * @param string|array $roles - User roles.
1854
- * @param string $ip - IP address of the user.
1855
- * @param string $ua - User agent.
 
1856
  * @return array|false details
 
1857
  */
1858
  private function get_alert_details( $entry_id, $alert_id, $site_id, $created_on, $user_id = null, $roles = null, $ip = '', $ua = '' ) {
1859
  // Must be a new instance every time, otherwise the alert message is not retrieved properly.
1860
  $occurrence = new WSAL_Models_Occurrence();
1861
 
 
 
1862
  // Get alert details.
1863
  $code = $this->GetAlert( $alert_id );
1864
  $code = $code ? $code->code : 0;
@@ -1918,11 +1953,7 @@ final class WSAL_AlertManager {
1918
  'blog_name' => $blog_name,
1919
  'blog_url' => $blog_url,
1920
  'alert_id' => $alert_id,
1921
- 'date' => str_replace(
1922
- '$$$',
1923
- substr( number_format( fmod( (int) $created_on + $this->gmt_offset_sec, 1 ), 3 ), 2 ),
1924
- date( $this->datetime_format, (int) $created_on + $this->gmt_offset_sec )
1925
- ),
1926
  'code' => $const->name,
1927
  'message' => $occurrence->GetAlert()->GetMessage( $occurrence->GetMetaArray(), array( $this->plugin->settings, 'meta_formatter' ), $occurrence->_cachedmessage ),
1928
  'user_name' => $username,
89
  */
90
  public $ignored_cpts = array();
91
 
92
+ /**
93
+ * @var string Date format.
94
+ */
95
+ private $date_format;
96
+
97
  /**
98
  * Create new AlertManager instance.
99
  *
144
  );
145
 
146
  $this->date_format = $this->plugin->settings()->GetDateFormat();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  }
148
 
149
  /**
312
  * @param callable $cond - A future condition callback (receives an object of type WSAL_AlertManager as parameter).
313
  */
314
  public function TriggerIf( $type, $data, $cond = null ) {
315
+
316
  $username = null;
317
  $roles = [];
318
+
319
+ // if user switching plugin class exists and filter is set to disable then try get the old user.
320
+ if ( apply_filters( 'wsal_disable_user_switching_plugin_tracking', false ) && class_exists( 'user_switching' ) ) {
321
+ $old_user = user_switching::get_old_user();
322
+ if ( isset( $old_user->user_login ) ) {
323
+ // looks like this is a switched user so setup original user
324
+ // values for use when logging.
325
+ $username = $old_user->user_login;
326
+ $data['Username'] = $old_user->user_login;
327
+ $data['CurrentUserID'] = $old_user->ID;
328
+ }
329
+ }
330
+
331
  if ( 1000 === $type ) {
332
  // when event 1000 is triggered, the user is not logged in
333
  // we need to extract the username and user roles from the event data
334
  $username = array_key_exists( 'Username', $data ) ? $data['Username'] : null;
335
  $roles = array_key_exists( 'CurrentUserRoles', $data ) ? $data['CurrentUserRoles'] : [];
336
+ } elseif ( class_exists( 'user_switching' ) && isset( $old_user ) && false !== $old_user ) {
337
+ // looks like this is a switched user so setup original user
338
+ // roles and values for later user.
339
+ $roles = $old_user->roles;
340
+ if ( function_exists( 'is_super_admin' ) && is_super_admin() ) {
341
+ $roles[] = 'superadmin';
342
+ }
343
+ $data['CurrentUserRoles'] = $roles;
344
  } else {
345
  $username = wp_get_current_user()->user_login;
346
  $roles = $this->plugin->settings()->GetCurrentUserRoles();
347
  }
348
 
349
+ // Check if IP is disabled.
350
+ if ( $this->IsDisabledIP() ) {
351
+ return;
352
+ }
353
+
354
+ // Check if PostType index is set in data array.
355
+ if ( isset( $data['PostType'] ) && ! empty( $data['PostType'] ) ) {
356
+ // If the post type is disabled then return.
357
+ if ( $this->is_disabled_post_type( $data['PostType'] ) ) {
358
+ return;
359
+ }
360
+ }
361
+
362
  if ( $this->CheckEnableUserRoles( $username, $roles ) ) {
363
  $this->_pipeline[] = array(
364
  'type' => $type,
1251
  'unblocked' => __( 'Unblocked', 'wp-security-audit-log' ),
1252
  'renamed' => __( 'Renamed', 'wp-security-audit-log' ),
1253
  'duplicated' => __( 'Duplicated', 'wp-security-audit-log' ),
1254
+ 'submitted' => __( 'Submitted', 'wp-security-audit-log' ),
1255
+ 'revoked' => __( 'Revoked', 'wp-security-audit-log' ),
1256
  );
1257
  // sort the types alphabetically.
1258
  asort( $types );
1301
  /**
1302
  * Filter query for MWPAL.
1303
  *
1304
+ * @param WSAL_Models_OccurrenceQuery $query - Events query.
1305
+ * @param array $query_args - Query args.
1306
+ *
1307
  * @return WSAL_Models_OccurrenceQuery
1308
+ * @throws Freemius_Exception
1309
  */
1310
  private function filter_query( $query, $query_args ) {
1311
  if ( isset( $query_args['search_term'] ) && $query_args['search_term'] ) {
1327
  if ( 'event' === $prefix ) {
1328
  $query->addORCondition( array( 'alert_id = %s' => $value ) );
1329
  } elseif ( in_array( $prefix, array( 'from', 'to', 'on' ), true ) ) {
1330
+ $date = DateTime::createFromFormat( $this->date_format, $value[0] );
 
1331
  $date->setTime( 0, 0 ); // Reset time to 00:00:00.
1332
  $date_string = $date->format( 'U' );
1333
 
1716
  * Create statistics unique IPs report.
1717
  *
1718
  * @param array $filters - Filters.
1719
+ *
1720
  * @return array
1721
+ * @throws Freemius_Exception
1722
  */
1723
  private function generate_statistics_unique_ips( $filters ) {
1724
  $date_start = ! empty( $filters['date-range']['start'] ) ? $filters['date-range']['start'] : null;
1876
  /**
1877
  * Get alert details.
1878
  *
1879
+ * @param int $entry_id - Entry ID.
1880
+ * @param int $alert_id - Alert ID.
1881
+ * @param int $site_id - Site ID.
1882
+ * @param string $created_on - Alert generation time.
1883
+ * @param int $user_id - User id.
1884
+ * @param string|array $roles - User roles.
1885
+ * @param string $ip - IP address of the user.
1886
+ * @param string $ua - User agent.
1887
+ *
1888
  * @return array|false details
1889
+ * @throws Exception
1890
  */
1891
  private function get_alert_details( $entry_id, $alert_id, $site_id, $created_on, $user_id = null, $roles = null, $ip = '', $ua = '' ) {
1892
  // Must be a new instance every time, otherwise the alert message is not retrieved properly.
1893
  $occurrence = new WSAL_Models_Occurrence();
1894
 
1895
+ $user_id = ( ! is_numeric( $user_id ) && null !== $user_id ) ? WSAL_Rep_Util_S::swap_login_for_id( $user_id ) : $user_id;
1896
+
1897
  // Get alert details.
1898
  $code = $this->GetAlert( $alert_id );
1899
  $code = $code ? $code->code : 0;
1953
  'blog_name' => $blog_name,
1954
  'blog_url' => $blog_url,
1955
  'alert_id' => $alert_id,
1956
+ 'date' => WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime( $created_on ),
 
 
 
 
1957
  'code' => $const->name,
1958
  'message' => $occurrence->GetAlert()->GetMessage( $occurrence->GetMetaArray(), array( $this->plugin->settings, 'meta_formatter' ), $occurrence->_cachedmessage ),
1959
  'user_name' => $username,
classes/AuditLogGridView.php CHANGED
@@ -31,13 +31,6 @@ class WSAL_AuditLogGridView extends WP_List_Table {
31
  */
32
  protected $_plugin;
33
 
34
- /**
35
- * GMT Offset
36
- *
37
- * @var string
38
- */
39
- protected $_gmt_offset_sec = 0;
40
-
41
  /**
42
  * Current Alert ID
43
  *
@@ -93,24 +86,6 @@ class WSAL_AuditLogGridView extends WP_List_Table {
93
  public function __construct( $plugin, $query_args ) {
94
  $this->_plugin = $plugin;
95
  $this->query_args = $query_args;
96
- $timezone = $this->_plugin->settings()->GetTimezone();
97
-
98
- /**
99
- * Transform timezone values.
100
- *
101
- * @since 3.2.3
102
- */
103
- if ( '0' === $timezone ) {
104
- $timezone = 'utc';
105
- } elseif ( '1' === $timezone ) {
106
- $timezone = 'wp';
107
- }
108
-
109
- if ( 'utc' === $timezone ) {
110
- $this->_gmt_offset_sec = date( 'Z' );
111
- } else {
112
- $this->_gmt_offset_sec = get_option( 'gmt_offset' ) * HOUR_IN_SECONDS;
113
- }
114
 
115
  parent::__construct(
116
  array(
@@ -131,8 +106,7 @@ class WSAL_AuditLogGridView extends WP_List_Table {
131
 
132
 
133
  protected function get_table_classes() {
134
- $table_classes = array( 'widefat', 'fixed', 'striped', $this->_args['plural'], 'wsal-table', 'wsal-table-grid' );
135
- return $table_classes;
136
  }
137
 
138
  /**
@@ -385,9 +359,6 @@ class WSAL_AuditLogGridView extends WP_List_Table {
385
  * @param string $column_name - Name of the column.
386
  */
387
  public function column_default( $item, $column_name ) {
388
- // Get date format.
389
- $datetime_format = $this->_plugin->settings()->GetDatetimeFormat();
390
-
391
  // Store meta if not set.
392
  if ( ! isset( $this->item_meta[ $item->getId() ] ) ) {
393
  $this->item_meta[ $item->getId() ] = $item->GetMetaArray();
@@ -432,32 +403,19 @@ class WSAL_AuditLogGridView extends WP_List_Table {
432
  ?>
433
  <table id="Event<?php echo absint( $item->id ); ?>">
434
  <td class="wsal-grid-text-header"><?php esc_html_e( 'Message:', 'alm-' ); ?></td>
435
- <td class="wsal-grid-text-data"><?php echo wp_kses_post( $item->GetMessage( array( $this->_plugin->settings, 'meta_formatter' ), false, $this->item_meta[ $item->getId() ] ) ); ?></td>
436
  </table>
437
  <?php
438
  }
439
  return ob_get_clean();
440
  case 'info':
441
- $date_format = $this->_plugin->settings()->GetDateFormat();
442
- $show_microseconds = $this->_plugin->settings()->get_show_milliseconds();
443
- if ( ! $show_microseconds ) {
444
- // remove the microseconds placeholder from format string.
445
- $datetime_format = str_replace( '.$$$', '', $datetime_format );
446
- }
447
- $eventdate = $item->created_on ? (
448
- str_replace(
449
- '$$$',
450
- substr( number_format( fmod( $item->created_on + $this->_gmt_offset_sec, 1 ), 3 ), 2 ),
451
- date( $date_format, $item->created_on + $this->_gmt_offset_sec )
452
- )
453
- ) : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
454
- $eventtime = $item->created_on ? (
455
- str_replace(
456
- '$$$',
457
- substr( number_format( fmod( $item->created_on + $this->_gmt_offset_sec, 1 ), 3 ), 2 ),
458
- date( get_option( 'time_format' ), $item->created_on + $this->_gmt_offset_sec )
459
- )
460
- ) : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
461
 
462
  $username = $item->GetUsername( $this->item_meta[ $item->getId() ] ); // Get username.
463
  $user = get_user_by( 'login', $username ); // Get user.
@@ -646,127 +604,6 @@ class WSAL_AuditLogGridView extends WP_List_Table {
646
  return ( 'asc' === $this->_order ) ? $result : -$result;
647
  }
648
 
649
- /**
650
- * Method: Meta data formatter.
651
- *
652
- * @param string $name - Name of the data.
653
- * @param mixed $value - Value of the data.
654
- * @return string
655
- * @deprecated 3.3
656
- */
657
- public function meta_formatter( $name, $value ) {
658
- switch ( true ) {
659
- case '%Message%' == $name:
660
- return esc_html( $value );
661
-
662
- case '%PromoMessage%' == $name:
663
- return '<p class="promo-alert">' . $value . '</p>';
664
-
665
- case '%PromoLink%' == $name:
666
- case '%CommentLink%' == $name:
667
- case '%CommentMsg%' == $name:
668
- return $value;
669
-
670
- case '%MetaLink%' == $name:
671
- if ( ! empty( $value ) ) {
672
- return "<a href=\"#\" data-disable-custom-nonce='" . wp_create_nonce( 'disable-custom-nonce' . $value ) . "' onclick=\"return WsalDisableCustom(this, '" . $value . "');\"> Exclude Custom Field from the Monitoring</a>";
673
- } else {
674
- return '';
675
- }
676
-
677
- case '%RevisionLink%' === $name:
678
- $check_value = (string) $value;
679
- if ( 'NULL' !== $check_value ) {
680
- return ' Click <a target="_blank" href="' . esc_url( $value ) . '">here</a> to see the content changes.';
681
- } else {
682
- return false;
683
- }
684
-
685
- case '%EditorLinkPost%' == $name:
686
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">post</a>';
687
-
688
- case '%EditorLinkPage%' == $name:
689
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">page</a>';
690
-
691
- case '%CategoryLink%' == $name:
692
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">category</a>';
693
-
694
- case '%TagLink%' == $name:
695
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">tag</a>';
696
-
697
- case '%EditorLinkForum%' == $name:
698
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">forum</a>';
699
-
700
- case '%EditorLinkTopic%' == $name:
701
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">topic</a>';
702
-
703
- case in_array( $name, array( '%MetaValue%', '%MetaValueOld%', '%MetaValueNew%' ) ):
704
- return '<strong>' . (
705
- strlen( $value ) > 50 ? ( esc_html( substr( $value, 0, 50 ) ) . '&hellip;' ) : esc_html( $value )
706
- ) . '</strong>';
707
-
708
- case '%ClientIP%' == $name:
709
- if ( is_string( $value ) ) {
710
- return '<strong>' . str_replace( array( '"', '[', ']' ), '', $value ) . '</strong>';
711
- } else {
712
- return '<i>unknown</i>';
713
- }
714
-
715
- case '%LogFileLink%' === $name: // Failed login file link.
716
- return '';
717
-
718
- case '%Attempts%' === $name: // Failed login attempts.
719
- $check_value = (int) $value;
720
- if ( 0 === $check_value ) {
721
- return '';
722
- } else {
723
- return $value;
724
- }
725
-
726
- case '%LogFileText%' === $name: // Failed login file text.
727
- return '<a href="javascript:;" onclick="download_failed_login_log( this )" data-download-nonce="' . esc_attr( wp_create_nonce( 'wsal-download-failed-logins' ) ) . '" title="' . esc_html__( 'Download the log file.', 'wp-security-audit-log' ) . '">' . esc_html__( 'Download the log file.', 'wp-security-audit-log' ) . '</a>';
728
-
729
- case strncmp( $value, 'http://', 7 ) === 0:
730
- case strncmp( $value, 'https://', 8 ) === 0:
731
- return '<a href="' . esc_html( $value ) . '" title="' . esc_html( $value ) . '" target="_blank">' . esc_html( $value ) . '</a>';
732
-
733
- case '%PostStatus%' === $name:
734
- if ( ! empty( $value ) && 'publish' === $value ) {
735
- return '<strong>' . esc_html__( 'published', 'wp-security-audit-log' ) . '</strong>';
736
- } else {
737
- return '<strong>' . esc_html( $value ) . '</strong>';
738
- }
739
-
740
- case '%multisite_text%' === $name:
741
- if ( $this->is_multisite() && $value ) {
742
- $site_info = get_blog_details( $value, true );
743
- if ( $site_info ) {
744
- return ' on site <a href="' . esc_url( $site_info->siteurl ) . '">' . esc_html( $site_info->blogname ) . '</a>';
745
- }
746
- return;
747
- }
748
- return;
749
-
750
- case '%ReportText%' === $name:
751
- return;
752
-
753
- case '%ChangeText%' === $name:
754
- $url = admin_url( 'admin-ajax.php' ) . '?action=AjaxInspector&amp;occurrence=' . $this->current_alert_id;
755
- return ' View the changes in <a class="thickbox" title="' . __( 'Alert Data Inspector', 'wp-security-audit-log' ) . '"'
756
- . ' href="' . $url . '&amp;TB_iframe=true&amp;width=600&amp;height=550">data inspector.</a>';
757
-
758
- case '%ScanError%' === $name:
759
- if ( 'NULL' === $value ) {
760
- return false;
761
- }
762
- /* translators: Mailto link for support. */
763
- return ' with errors. ' . sprintf( __( 'Contact us on %s for assistance', 'wp-security-audit-log' ), '<a href="mailto:support@wpsecurityauditlog.com" target="_blank">support@wpsecurityauditlog.com</a>' );
764
-
765
- default:
766
- return '<strong>' . esc_html( $value ) . '</strong>';
767
- }
768
- }
769
-
770
  /**
771
  * Method: Check if multisite.
772
  *
@@ -1042,7 +879,6 @@ class WSAL_AuditLogGridView extends WP_List_Table {
1042
  $tmp = new WSAL_Models_Occurrence();
1043
  // Making sure the field exists to order by.
1044
  if ( isset( $tmp->{$order_by} ) ) {
1045
- // TODO: We used to use a custom comparator ... is it safe to let MySQL do the ordering now?.
1046
  $query->addOrderBy( $order_by, $is_descending );
1047
  } else {
1048
  $query->addOrderBy( 'created_on', true );
31
  */
32
  protected $_plugin;
33
 
 
 
 
 
 
 
 
34
  /**
35
  * Current Alert ID
36
  *
86
  public function __construct( $plugin, $query_args ) {
87
  $this->_plugin = $plugin;
88
  $this->query_args = $query_args;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
  parent::__construct(
91
  array(
106
 
107
 
108
  protected function get_table_classes() {
109
+ return array( 'widefat', 'fixed', 'striped', $this->_args['plural'], 'wsal-table', 'wsal-table-grid' );
 
110
  }
111
 
112
  /**
359
  * @param string $column_name - Name of the column.
360
  */
361
  public function column_default( $item, $column_name ) {
 
 
 
362
  // Store meta if not set.
363
  if ( ! isset( $this->item_meta[ $item->getId() ] ) ) {
364
  $this->item_meta[ $item->getId() ] = $item->GetMetaArray();
403
  ?>
404
  <table id="Event<?php echo absint( $item->id ); ?>">
405
  <td class="wsal-grid-text-header"><?php esc_html_e( 'Message:', 'alm-' ); ?></td>
406
+ <td class="wsal-grid-text-data"><?php echo $item->GetMessage( array( $this->_plugin->settings, 'meta_formatter' ), false, $this->item_meta[ $item->getId() ] ); ?></td>
407
  </table>
408
  <?php
409
  }
410
  return ob_get_clean();
411
  case 'info':
412
+ $eventdate = $item->created_on
413
+ ? WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime($item->created_on, 'date' )
414
+ : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
415
+
416
+ $eventtime = $item->created_on
417
+ ? WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime($item->created_on, 'time' )
418
+ : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
 
 
 
 
 
 
 
 
 
 
 
 
 
419
 
420
  $username = $item->GetUsername( $this->item_meta[ $item->getId() ] ); // Get username.
421
  $user = get_user_by( 'login', $username ); // Get user.
604
  return ( 'asc' === $this->_order ) ? $result : -$result;
605
  }
606
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
607
  /**
608
  * Method: Check if multisite.
609
  *
879
  $tmp = new WSAL_Models_Occurrence();
880
  // Making sure the field exists to order by.
881
  if ( isset( $tmp->{$order_by} ) ) {
 
882
  $query->addOrderBy( $order_by, $is_descending );
883
  } else {
884
  $query->addOrderBy( 'created_on', true );
classes/AuditLogListView.php CHANGED
@@ -31,13 +31,6 @@ class WSAL_AuditLogListView extends WP_List_Table {
31
  */
32
  protected $_plugin;
33
 
34
- /**
35
- * GMT Offset
36
- *
37
- * @var string
38
- */
39
- protected $_gmt_offset_sec = 0;
40
-
41
  /**
42
  * Current Alert ID
43
  *
@@ -93,24 +86,6 @@ class WSAL_AuditLogListView extends WP_List_Table {
93
  public function __construct( $plugin, $query_args ) {
94
  $this->_plugin = $plugin;
95
  $this->query_args = $query_args;
96
- $timezone = $this->_plugin->settings()->GetTimezone();
97
-
98
- /**
99
- * Transform timezone values.
100
- *
101
- * @since 3.2.3
102
- */
103
- if ( '0' === $timezone ) {
104
- $timezone = 'utc';
105
- } elseif ( '1' === $timezone ) {
106
- $timezone = 'wp';
107
- }
108
-
109
- if ( 'utc' === $timezone ) {
110
- $this->_gmt_offset_sec = date( 'Z' );
111
- } else {
112
- $this->_gmt_offset_sec = get_option( 'gmt_offset' ) * HOUR_IN_SECONDS;
113
- }
114
 
115
  parent::__construct(
116
  array(
@@ -413,13 +388,12 @@ class WSAL_AuditLogListView extends WP_List_Table {
413
  /**
414
  * Method: Get default column values.
415
  *
416
- * @param WSAL_Models_Occurrence $item - Column item.
417
- * @param string $column_name - Name of the column.
 
 
418
  */
419
  public function column_default( $item, $column_name ) {
420
- // Get date format.
421
- $datetime_format = $this->_plugin->settings()->GetDatetimeFormat();
422
-
423
  // Store meta if not set.
424
  if ( ! isset( $this->item_meta[ $item->getId() ] ) ) {
425
  $this->item_meta[ $item->getId() ] = $item->GetMetaArray();
@@ -462,18 +436,9 @@ class WSAL_AuditLogListView extends WP_List_Table {
462
 
463
  return '<a class="tooltip" href="#" data-tooltip="' . esc_html( $const->name ) . '"><span class="log-type log-type-' . $const->value . '"></span></a>';
464
  case 'crtd':
465
- $show_milliseconds = $this->_plugin->settings()->get_show_milliseconds();
466
- if ( ! $show_milliseconds ) {
467
- // remove the milliseconds placeholder from format string.
468
- $datetime_format = str_replace( '.$$$', '', $datetime_format );
469
- }
470
- return $item->created_on ? (
471
- str_replace(
472
- '$$$',
473
- substr( number_format( fmod( $item->created_on + $this->_gmt_offset_sec, 1 ), 3 ), 2 ),
474
- date( $datetime_format, $item->created_on + $this->_gmt_offset_sec )
475
- )
476
- ) : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
477
  case 'user':
478
  $username = $item->GetUsername( $this->item_meta[ $item->getId() ] ); // Get username.
479
  $user = get_user_by( 'login', $username ); // Get user.
@@ -642,127 +607,6 @@ class WSAL_AuditLogListView extends WP_List_Table {
642
  return ( 'asc' === $this->_order ) ? $result : -$result;
643
  }
644
 
645
- /**
646
- * Method: Meta data formatter.
647
- *
648
- * @param string $name - Name of the data.
649
- * @param mixed $value - Value of the data.
650
- * @return string
651
- * @deprecated 3.3
652
- */
653
- public function meta_formatter( $name, $value ) {
654
- switch ( true ) {
655
- case '%Message%' == $name:
656
- return esc_html( $value );
657
-
658
- case '%PromoMessage%' == $name:
659
- return '<p class="promo-alert">' . $value . '</p>';
660
-
661
- case '%PromoLink%' == $name:
662
- case '%CommentLink%' == $name:
663
- case '%CommentMsg%' == $name:
664
- return $value;
665
-
666
- case '%MetaLink%' == $name:
667
- if ( ! empty( $value ) ) {
668
- return "<a href=\"#\" data-disable-custom-nonce='" . wp_create_nonce( 'disable-custom-nonce' . $value ) . "' onclick=\"return WsalDisableCustom(this, '" . $value . "');\"> Exclude Custom Field from the Monitoring</a>";
669
- } else {
670
- return '';
671
- }
672
-
673
- case '%RevisionLink%' === $name:
674
- $check_value = (string) $value;
675
- if ( 'NULL' !== $check_value ) {
676
- return ' Click <a target="_blank" href="' . esc_url( $value ) . '">here</a> to see the content changes.';
677
- } else {
678
- return false;
679
- }
680
-
681
- case '%EditorLinkPost%' == $name:
682
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">post</a>';
683
-
684
- case '%EditorLinkPage%' == $name:
685
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">page</a>';
686
-
687
- case '%CategoryLink%' == $name:
688
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">category</a>';
689
-
690
- case '%TagLink%' == $name:
691
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">tag</a>';
692
-
693
- case '%EditorLinkForum%' == $name:
694
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">forum</a>';
695
-
696
- case '%EditorLinkTopic%' == $name:
697
- return ' View the <a target="_blank" href="' . esc_url( $value ) . '">topic</a>';
698
-
699
- case in_array( $name, array( '%MetaValue%', '%MetaValueOld%', '%MetaValueNew%' ) ):
700
- return '<strong>' . (
701
- strlen( $value ) > 50 ? ( esc_html( substr( $value, 0, 50 ) ) . '&hellip;' ) : esc_html( $value )
702
- ) . '</strong>';
703
-
704
- case '%ClientIP%' == $name:
705
- if ( is_string( $value ) ) {
706
- return '<strong>' . str_replace( array( '"', '[', ']' ), '', $value ) . '</strong>';
707
- } else {
708
- return '<i>unknown</i>';
709
- }
710
-
711
- case '%LogFileLink%' === $name: // Failed login file link.
712
- return '';
713
-
714
- case '%Attempts%' === $name: // Failed login attempts.
715
- $check_value = (int) $value;
716
- if ( 0 === $check_value ) {
717
- return '';
718
- } else {
719
- return $value;
720
- }
721
-
722
- case '%LogFileText%' === $name: // Failed login file text.
723
- return '<a href="javascript:;" onclick="download_failed_login_log( this )" data-download-nonce="' . esc_attr( wp_create_nonce( 'wsal-download-failed-logins' ) ) . '" title="' . esc_html__( 'Download the log file.', 'wp-security-audit-log' ) . '">' . esc_html__( 'Download the log file.', 'wp-security-audit-log' ) . '</a>';
724
-
725
- case strncmp( $value, 'http://', 7 ) === 0:
726
- case strncmp( $value, 'https://', 8 ) === 0:
727
- return '<a href="' . esc_html( $value ) . '" title="' . esc_html( $value ) . '" target="_blank">' . esc_html( $value ) . '</a>';
728
-
729
- case '%PostStatus%' === $name:
730
- if ( ! empty( $value ) && 'publish' === $value ) {
731
- return '<strong>' . esc_html__( 'published', 'wp-security-audit-log' ) . '</strong>';
732
- } else {
733
- return '<strong>' . esc_html( $value ) . '</strong>';
734
- }
735
-
736
- case '%multisite_text%' === $name:
737
- if ( $this->is_multisite() && $value ) {
738
- $site_info = get_blog_details( $value, true );
739
- if ( $site_info ) {
740
- return ' on site <a href="' . esc_url( $site_info->siteurl ) . '">' . esc_html( $site_info->blogname ) . '</a>';
741
- }
742
- return;
743
- }
744
- return;
745
-
746
- case '%ReportText%' === $name:
747
- return;
748
-
749
- case '%ChangeText%' === $name:
750
- $url = admin_url( 'admin-ajax.php' ) . '?action=AjaxInspector&amp;occurrence=' . $this->current_alert_id;
751
- return ' View the changes in <a class="thickbox" title="' . __( 'Alert Data Inspector', 'wp-security-audit-log' ) . '"'
752
- . ' href="' . $url . '&amp;TB_iframe=true&amp;width=600&amp;height=550">data inspector.</a>';
753
-
754
- case '%ScanError%' === $name:
755
- if ( 'NULL' === $value ) {
756
- return false;
757
- }
758
- /* translators: Mailto link for support. */
759
- return ' with errors. ' . sprintf( __( 'Contact us on %s for assistance', 'wp-security-audit-log' ), '<a href="mailto:support@wpsecurityauditlog.com" target="_blank">support@wpsecurityauditlog.com</a>' );
760
-
761
- default:
762
- return '<strong>' . esc_html( $value ) . '</strong>';
763
- }
764
- }
765
-
766
  /**
767
  * Method: Check if multisite.
768
  *
31
  */
32
  protected $_plugin;
33
 
 
 
 
 
 
 
 
34
  /**
35
  * Current Alert ID
36
  *
86
  public function __construct( $plugin, $query_args ) {
87
  $this->_plugin = $plugin;
88
  $this->query_args = $query_args;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
  parent::__construct(
91
  array(
388
  /**
389
  * Method: Get default column values.
390
  *
391
+ * @param WSAL_Models_Occurrence $item - Column item.
392
+ * @param string $column_name - Name of the column.
393
+ *
394
+ * @return string
395
  */
396
  public function column_default( $item, $column_name ) {
 
 
 
397
  // Store meta if not set.
398
  if ( ! isset( $this->item_meta[ $item->getId() ] ) ) {
399
  $this->item_meta[ $item->getId() ] = $item->GetMetaArray();
436
 
437
  return '<a class="tooltip" href="#" data-tooltip="' . esc_html( $const->name ) . '"><span class="log-type log-type-' . $const->value . '"></span></a>';
438
  case 'crtd':
439
+ return $item->created_on
440
+ ? WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime( $item->created_on, 'datetime', true, true )
441
+ : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
 
 
 
 
 
 
 
 
 
442
  case 'user':
443
  $username = $item->GetUsername( $this->item_meta[ $item->getId() ] ); // Get username.
444
  $user = get_user_by( 'login', $username ); // Get user.
607
  return ( 'asc' === $this->_order ) ? $result : -$result;
608
  }
609
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
610
  /**
611
  * Method: Check if multisite.
612
  *
classes/Connector/MySQLDB.php CHANGED
@@ -152,7 +152,8 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
152
  public function isInstalled() {
153
  $wpdb = $this->getConnection();
154
  $table = $wpdb->base_prefix . 'wsal_occurrences';
155
- return $table === $wpdb->get_var( "SHOW TABLES LIKE '" . $table . "'" );
 
156
  }
157
 
158
  /**
152
  public function isInstalled() {
153
  $wpdb = $this->getConnection();
154
  $table = $wpdb->base_prefix . 'wsal_occurrences';
155
+ $db_result = $wpdb->query( "SELECT COUNT(1) FROM {$table};");
156
+ return 1 === $db_result;
157
  }
158
 
159
  /**
classes/Loggers/Database.php CHANGED
@@ -51,8 +51,8 @@ class WSAL_Loggers_Database extends WSAL_AbstractLogger {
51
  * @param bool $override_buffer - (Optional) Override buffer to log event immediately.
52
  */
53
  public function Log( $type, $data = array(), $date = null, $siteid = null, $migrated = false, $override_buffer = false ) {
54
- // Is this a php alert, and if so, are we logging such alerts?
55
- if ( $type < 0010 && ! $this->plugin->settings()->IsPhpErrorLoggingEnabled() ) {
56
  return;
57
  }
58
 
51
  * @param bool $override_buffer - (Optional) Override buffer to log event immediately.
52
  */
53
  public function Log( $type, $data = array(), $date = null, $siteid = null, $migrated = false, $override_buffer = false ) {
54
+ // PHP alerts logging was deprecated in version 4.2.0
55
+ if ( $type < 0010 ) {
56
  return;
57
  }
58
 
classes/SensorManager.php CHANGED
@@ -43,11 +43,6 @@ final class WSAL_SensorManager extends WSAL_AbstractSensor {
43
  $this->AddFromFile( $file );
44
  }
45
 
46
- /**
47
- * Load Custom Sensor files from {plugin working dir}/custom-sensors/
48
- */
49
- $uploads_dir_path = $plugin->settings()->get_working_dir_path( 'custom-sensors', true, true );
50
-
51
  /*
52
  * Get an array of directories to loop through to add custom sensors.
53
  *
@@ -56,7 +51,7 @@ final class WSAL_SensorManager extends WSAL_AbstractSensor {
56
  *
57
  * @since 3.5.1 - Added the `wsal_custom_sensors_classes_dirs` filter.
58
  */
59
- $paths = apply_filters( 'wsal_custom_sensors_classes_dirs', array( $uploads_dir_path ) );
60
  foreach ( $paths as $inc_path ) {
61
  // Check directory.
62
  if ( is_dir( $inc_path ) && is_readable( $inc_path ) ) {
@@ -194,7 +189,7 @@ final class WSAL_SensorManager extends WSAL_AbstractSensor {
194
 
195
  $frontend_events = WSAL_Settings::get_frontend_events();
196
 
197
- // Check to see if LogInOut, FrontendLogin, and FrontendRegister sensors should load on login page.
198
  if ( WpSecurityAuditLog::is_login_screen() ) {
199
  if ( 'FrontendRegister' === $filename && ! empty( $frontend_events['register'] )
200
  || 'LogInOut' === $filename ) {
@@ -214,7 +209,7 @@ final class WSAL_SensorManager extends WSAL_AbstractSensor {
214
  *
215
  * @param array $public_sensors - List of sensors to be loaded for visitors.
216
  */
217
- $public_sensors = apply_filters( 'wsal_load_public_sensors', array( 'FrontendLogin', 'FrontendRegister' ) );
218
  if ( WpSecurityAuditLog::is_frontend() && ! is_user_logged_in() && ! in_array( $filename, $public_sensors, true ) ) {
219
  return false;
220
  }
@@ -287,7 +282,7 @@ final class WSAL_SensorManager extends WSAL_AbstractSensor {
287
  }
288
  break;
289
 
290
- case 'FrontendLogin':
291
  if ( is_user_logged_in() || empty( $frontend_events['login'] ) ) {
292
  $load_sensor = false;
293
  }
43
  $this->AddFromFile( $file );
44
  }
45
 
 
 
 
 
 
46
  /*
47
  * Get an array of directories to loop through to add custom sensors.
48
  *
51
  *
52
  * @since 3.5.1 - Added the `wsal_custom_sensors_classes_dirs` filter.
53
  */
54
+ $paths = apply_filters( 'wsal_custom_sensors_classes_dirs', array() );
55
  foreach ( $paths as $inc_path ) {
56
  // Check directory.
57
  if ( is_dir( $inc_path ) && is_readable( $inc_path ) ) {
189
 
190
  $frontend_events = WSAL_Settings::get_frontend_events();
191
 
192
+ // Check to see if LogInOut, and FrontendRegister sensors should load on login page.
193
  if ( WpSecurityAuditLog::is_login_screen() ) {
194
  if ( 'FrontendRegister' === $filename && ! empty( $frontend_events['register'] )
195
  || 'LogInOut' === $filename ) {
209
  *
210
  * @param array $public_sensors - List of sensors to be loaded for visitors.
211
  */
212
+ $public_sensors = apply_filters( 'wsal_load_public_sensors', array( 'FrontendRegister', 'LogInOut' ) );
213
  if ( WpSecurityAuditLog::is_frontend() && ! is_user_logged_in() && ! in_array( $filename, $public_sensors, true ) ) {
214
  return false;
215
  }
282
  }
283
  break;
284
 
285
+ case 'LogInOut':
286
  if ( is_user_logged_in() || empty( $frontend_events['login'] ) ) {
287
  $load_sensor = false;
288
  }
classes/Sensors/Content.php CHANGED
@@ -73,6 +73,13 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
73
  */
74
  protected $old_status = null;
75
 
 
 
 
 
 
 
 
76
  /**
77
  * Listening to events using WP hooks.
78
  */
@@ -93,7 +100,10 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
93
  add_action( 'create_post_tag', array( $this, 'event_tag_creation' ), 10, 1 );
94
  add_action( 'pre_delete_term', array( $this, 'check_taxonomy_term_deletion' ), 10, 2 );
95
  add_filter( 'wp_update_term_data', array( $this, 'event_update_term_data' ), 10, 4 );
96
- add_action( 'updated_post_meta', array( $this, 'check_template_change' ), 10, 4 );
 
 
 
97
 
98
  // Check if MainWP Child Plugin exists.
99
  if ( WpSecurityAuditLog::is_mainwp_active() ) {
@@ -114,13 +124,14 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
114
 
115
  // If post exists.
116
  if ( ! empty( $post ) && $post instanceof WP_Post ) {
117
- $this->_old_post = $post;
118
- $this->_old_link = get_permalink( $post_id );
119
- $this->_old_tmpl = $this->get_post_template( $this->_old_post );
120
- $this->_old_cats = $this->get_post_categories( $this->_old_post );
121
- $this->_old_tags = $this->get_post_tags( $this->_old_post );
122
- $this->_old_stky = in_array( $post_id, get_option( 'sticky_posts' ), true );
123
- $this->old_status = $post->post_status;
 
124
  }
125
  }
126
 
@@ -293,10 +304,11 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
293
  if ( empty( $request_params['action'] ) && isset( $request_params['page'] ) ) {
294
  $event = 5025;
295
  $event_data = array(
296
- 'PostID' => $post->ID,
297
- 'PostType' => $post->post_type,
298
- 'PostTitle' => $post->post_title,
299
- 'Username' => 'Plugins',
 
300
  );
301
  }
302
 
@@ -443,12 +455,14 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
443
  public function viewing_post() {
444
  // Retrieve the current post object.
445
  $post = get_queried_object();
 
446
  if ( is_user_logged_in() && ! is_admin() ) {
447
  if ( $this->check_other_sensors( $post ) ) {
448
  return $post->post_title;
449
  }
450
 
451
  $current_path = isset( $_SERVER['REQUEST_URI'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : false;
 
452
  if (
453
  ! empty( $_SERVER['HTTP_REFERER'] )
454
  && ! empty( $current_path )
@@ -462,6 +476,12 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
462
  $edit_link = $this->get_editor_link( $post ); // Get editor link.
463
  $post_data = $this->get_post_event_data( $post ); // Get event post data.
464
 
 
 
 
 
 
 
465
  // Set editor link.
466
  $post_data[ $edit_link['name'] ] = $edit_link['value'];
467
  $this->plugin->alerts->Trigger( 2101, $post_data );
@@ -664,38 +684,90 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
664
  * @param string $meta_key Meta key.
665
  * @param mixed $meta_value Meta value.
666
  */
667
- public function check_template_change( $meta_id, $post_id, $meta_key, $meta_value ) {
668
- if ( '_wp_page_template' !== $meta_key ) {
669
  return;
670
  }
671
 
672
- if ( ! $post_id ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
673
  return;
674
  }
675
 
676
- $post = get_post( $post_id );
677
- $old_tmpl = ucwords( str_replace( array( '-', '_' ), ' ', basename( $this->_old_tmpl, '.php' ) ) );
678
- $new_tmpl_path = $this->get_post_template( $post );
679
- $new_tmpl = ucwords( str_replace( array( '-', '_' ), ' ', basename( $new_tmpl_path, '.php' ) ) );
680
 
681
- if ( $old_tmpl !== $new_tmpl ) {
682
- $editor_link = $this->get_editor_link( $post );
683
- $this->plugin->alerts->Trigger(
684
- 2048,
685
- array(
686
- 'PostID' => $post->ID,
687
- 'PostType' => $post->post_type,
688
- 'PostTitle' => $post->post_title,
689
- 'PostStatus' => $post->post_status,
690
- 'PostDate' => $post->post_date,
691
- 'OldTemplate' => $old_tmpl,
692
- 'NewTemplate' => $new_tmpl,
693
- 'OldTemplatePath' => $this->_old_tmpl,
694
- 'NewTemplatePath' => $new_tmpl_path,
695
- $editor_link['name'] => $editor_link['value'],
696
- )
697
- );
698
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
699
  }
700
 
701
  /**
@@ -1221,8 +1293,12 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
1221
  * @param WP_Post $post - The post.
1222
  */
1223
  protected function check_tags_change( $old_tags, $new_tags, $post ) {
 
 
 
 
1224
  $intersection = array_intersect( $old_tags, $new_tags );
1225
- if ( count( $intersection ) === count( $old_tags ) ) {
1226
  // no change, let's leave
1227
  return;
1228
  }
@@ -1290,14 +1366,6 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
1290
  return 0; // Return if any Yoast alert has or will trigger.
1291
  }
1292
  }
1293
-
1294
- // Get post meta events.
1295
- $meta_events = array( 2053, 2054, 2055, 2062, 2016, 2120, 2119, 2131, 2132 );
1296
- foreach ( $meta_events as $meta_event ) {
1297
- if ( $this->plugin->alerts->WillOrHasTriggered( $meta_event ) ) {
1298
- return 0; // Return if any meta event has or will trigger.
1299
- }
1300
- }
1301
  }
1302
 
1303
  $event_data = $this->get_post_event_data( $oldpost );
@@ -1305,12 +1373,29 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
1305
  $event_data[ $editor_link['name'] ] = $editor_link['value'];
1306
  $event_data['RevisionLink'] = $this->get_post_revision( $post_id, $oldpost );
1307
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1308
  if ( 2002 === $event ) {
1309
- if ( ! $this->was_triggered_recently( 2112 ) ) {
1310
- if ( $content_changed ) {
1311
- $this->plugin->alerts->TriggerIf( $event, $event_data, array( $this, 'must_not_contain_events' ) );
1312
- }
1313
- }
1314
  } else {
1315
  $this->plugin->alerts->Trigger( $event, $event_data );
1316
  }
@@ -1318,6 +1403,25 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
1318
  }
1319
  }
1320
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1321
  /**
1322
  * Ignore post from BBPress, WooCommerce Plugin
1323
  * Triggered on the Sensors
@@ -1394,27 +1498,6 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
1394
  return ! empty( $revision_id ) ? add_query_arg( 'revision', $revision_id, admin_url( 'revision.php' ) ) : null;
1395
  }
1396
 
1397
- /**
1398
- * Method: This function make sures that alert 2016
1399
- * has not been triggered before triggering categories
1400
- * & tags events.
1401
- *
1402
- * @param WSAL_AlertManager $manager - WSAL Alert Manager.
1403
- * @return bool
1404
- */
1405
- public function must_not_contain_events( WSAL_AlertManager $manager ) {
1406
- if ( $manager->WillOrHasTriggered( 2016 )
1407
- || $manager->WillOrHasTriggered( 2048 )
1408
- || $manager->WillOrHasTriggered( 2049 )
1409
- || $manager->WillOrHasTriggered( 2050 )
1410
- || $manager->WillOrHasTriggered( 2119 )
1411
- || $manager->WillOrHasTriggered( 2120 )
1412
- || $manager->WillOrHasTriggered( 2017 ) ) {
1413
- return false;
1414
- }
1415
- return true;
1416
- }
1417
-
1418
  /**
1419
  * Log post stuck/unstuck events.
1420
  *
73
  */
74
  protected $old_status = null;
75
 
76
+ /**
77
+ * Old Post Meta.
78
+ *
79
+ * @var string
80
+ */
81
+ protected $old_meta = null;
82
+
83
  /**
84
  * Listening to events using WP hooks.
85
  */
100
  add_action( 'create_post_tag', array( $this, 'event_tag_creation' ), 10, 1 );
101
  add_action( 'pre_delete_term', array( $this, 'check_taxonomy_term_deletion' ), 10, 2 );
102
  add_filter( 'wp_update_term_data', array( $this, 'event_update_term_data' ), 10, 4 );
103
+ add_filter( 'add_post_metadata', array( $this, 'check_changed_meta' ), 10, 4 );
104
+ add_filter( 'delete_post_metadata', array( $this, 'check_changed_meta' ), 10, 4 );
105
+ add_filter( 'updated_post_meta', array( $this, 'check_changed_meta' ), 10, 4 );
106
+
107
 
108
  // Check if MainWP Child Plugin exists.
109
  if ( WpSecurityAuditLog::is_mainwp_active() ) {
124
 
125
  // If post exists.
126
  if ( ! empty( $post ) && $post instanceof WP_Post ) {
127
+ $this->_old_post = $post;
128
+ $this->_old_link = get_permalink( $post_id );
129
+ $this->_old_tmpl = $this->get_post_template( $this->_old_post );
130
+ $this->_old_cats = $this->get_post_categories( $this->_old_post );
131
+ $this->_old_tags = $this->get_post_tags( $this->_old_post );
132
+ $this->_old_stky = in_array( $post_id, get_option( 'sticky_posts' ), true );
133
+ $this->old_status = $post->post_status;
134
+ $this->old_meta = get_post_meta( $post_id );
135
  }
136
  }
137
 
304
  if ( empty( $request_params['action'] ) && isset( $request_params['page'] ) ) {
305
  $event = 5025;
306
  $event_data = array(
307
+ 'PostID' => $post->ID,
308
+ 'PostType' => $post->post_type,
309
+ 'PostTitle' => $post->post_title,
310
+ 'PostStatus' => $post->post_status,
311
+ 'Username' => 'Plugins',
312
  );
313
  }
314
 
455
  public function viewing_post() {
456
  // Retrieve the current post object.
457
  $post = get_queried_object();
458
+
459
  if ( is_user_logged_in() && ! is_admin() ) {
460
  if ( $this->check_other_sensors( $post ) ) {
461
  return $post->post_title;
462
  }
463
 
464
  $current_path = isset( $_SERVER['REQUEST_URI'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : false;
465
+
466
  if (
467
  ! empty( $_SERVER['HTTP_REFERER'] )
468
  && ! empty( $current_path )
476
  $edit_link = $this->get_editor_link( $post ); // Get editor link.
477
  $post_data = $this->get_post_event_data( $post ); // Get event post data.
478
 
479
+ // Update post URL based on current actual path.
480
+ $full_current_path = home_url( $current_path );
481
+ if ( $full_current_path !== $post_data['PostUrl'] ) {
482
+ $post_data['PostUrl'] = esc_url( $full_current_path );
483
+ }
484
+
485
  // Set editor link.
486
  $post_data[ $edit_link['name'] ] = $edit_link['value'];
487
  $this->plugin->alerts->Trigger( 2101, $post_data );
684
  * @param string $meta_key Meta key.
685
  * @param mixed $meta_value Meta value.
686
  */
687
+ public function check_changed_meta( $meta_id, $post_id, $meta_key, $meta_value ) {
688
+ if ( ! $post_id ) {
689
  return;
690
  }
691
 
692
+ switch ( $meta_key ) {
693
+ case '_wp_page_template':
694
+ $this->check_template_change( $post_id, $meta_value );
695
+ break;
696
+ case '_thumbnail_id':
697
+ $this->check_featured_image_change( $post_id, $meta_value );
698
+ break;
699
+ default:
700
+ // no other meta keys supported here.
701
+ }
702
+ }
703
+
704
+ /**
705
+ * Check Page Template Update.
706
+ *
707
+ * @param int $post_id Post ID.
708
+ * @param mixed $meta_value Meta value.
709
+ */
710
+ public function check_template_change( $post_id, $meta_value ) {
711
+ $post = get_post( $post_id );
712
+ $old_tmpl = ( $this->_old_tmpl && 'page' !== basename( $this->_old_tmpl, '.php' ) ) ? ucwords( str_replace( array( '-', '_' ), ' ', basename( $this->_old_tmpl, '.php' ) ) ) : __( 'Default template', 'wp-security-audit-log' );
713
+ $new_tmpl = ( $meta_value ) ? ucwords( str_replace( array( '-', '_' ), ' ', basename( $meta_value ) ) ) : __( 'Default', 'wp-security-audit-log' );
714
+
715
+ if ( $old_tmpl !== $new_tmpl ) {
716
+ $editor_link = $this->get_editor_link( $post );
717
+ $this->plugin->alerts->Trigger(
718
+ 2048,
719
+ array(
720
+ 'PostID' => $post->ID,
721
+ 'PostType' => $post->post_type,
722
+ 'PostTitle' => $post->post_title,
723
+ 'PostStatus' => $post->post_status,
724
+ 'PostDate' => $post->post_date,
725
+ 'OldTemplate' => $old_tmpl,
726
+ 'NewTemplate' => $new_tmpl,
727
+ $editor_link['name'] => $editor_link['value'],
728
+ )
729
+ );
730
+ }
731
+ }
732
+
733
+ /**
734
+ * Check Post Featured Image Update.
735
+ *
736
+ * @param int $post_id Post ID.
737
+ * @param mixed $meta_value Meta value.
738
+ */
739
+ public function check_featured_image_change( $post_id, $meta_value ) {
740
+ $previous_featured_image = ( isset( $this->old_meta['_thumbnail_id'][0] ) ) ? wp_get_attachment_metadata( $this->old_meta['_thumbnail_id'][0] ) : false;
741
+ $new_featured_image = wp_get_attachment_metadata( $meta_value );
742
+
743
+ if ( empty( $new_featured_image['file'] ) && empty( $previous_featured_image['file'] ) ) {
744
  return;
745
  }
746
 
747
+ $event_type = 'modified';
 
 
 
748
 
749
+ if ( empty( $previous_featured_image['file'] ) && ! empty( $new_featured_image['file'] ) ) {
750
+ $event_type = 'added';
751
+ } elseif ( ! empty( $previous_featured_image['file'] ) && empty( $new_featured_image['file'] ) ) {
752
+ $event_type = 'removed';
 
 
 
 
 
 
 
 
 
 
 
 
 
753
  }
754
+
755
+ $post = get_post( $post_id );
756
+ $editor_link = $this->get_editor_link( $post );
757
+ $this->plugin->alerts->Trigger(
758
+ 2130,
759
+ array(
760
+ 'PostID' => $post->ID,
761
+ 'PostType' => $post->post_type,
762
+ 'PostTitle' => $post->post_title,
763
+ 'PostStatus' => $post->post_status,
764
+ 'PostDate' => $post->post_date,
765
+ 'previous_image' => ( $previous_featured_image['file'] ) ? $previous_featured_image['file'] : __( 'No previous image', 'wp-security-audit-log' ),
766
+ 'new_image' => ( $new_featured_image['file'] ) ? $new_featured_image['file'] : __( 'No image', 'wp-security-audit-log' ),
767
+ $editor_link['name'] => $editor_link['value'],
768
+ 'EventType' => $event_type,
769
+ )
770
+ );
771
  }
772
 
773
  /**
1293
  * @param WP_Post $post - The post.
1294
  */
1295
  protected function check_tags_change( $old_tags, $new_tags, $post ) {
1296
+ // Ensure old_tags is not null.
1297
+ if ( ! $old_tags ) {
1298
+ $old_tags = [];
1299
+ }
1300
  $intersection = array_intersect( $old_tags, $new_tags );
1301
+ if ( count( $intersection ) === count( $old_tags ) && count( $old_tags ) === count( $new_tags ) ) {
1302
  // no change, let's leave
1303
  return;
1304
  }
1366
  return 0; // Return if any Yoast alert has or will trigger.
1367
  }
1368
  }
 
 
 
 
 
 
 
 
1369
  }
1370
 
1371
  $event_data = $this->get_post_event_data( $oldpost );
1373
  $event_data[ $editor_link['name'] ] = $editor_link['value'];
1374
  $event_data['RevisionLink'] = $this->get_post_revision( $post_id, $oldpost );
1375
 
1376
+ // Check excerpt change.
1377
+ $old_post_excerpt = $oldpost->post_excerpt;
1378
+ $post_excerpt = get_post_field( 'post_excerpt', $post_id );
1379
+
1380
+ if ( empty( $old_post_excerpt ) && ! empty( $post_excerpt ) ) {
1381
+ $event_data['EventType'] = 'added';
1382
+ } elseif ( ! empty( $old_post_excerpt ) && empty( $post_excerpt ) ) {
1383
+ $event_data['EventType'] = 'removed';
1384
+ } elseif ( $old_post_excerpt !== $post_excerpt ) {
1385
+ $event_data['EventType'] = 'modified';
1386
+ }
1387
+
1388
+ if ( $old_post_excerpt !== $post_excerpt ) {
1389
+ $event = 2129;
1390
+ // We are purposfully showing an empty, not NULL value.
1391
+ $event_data['old_post_excerpt'] = ( $old_post_excerpt ) ? $old_post_excerpt : ' ';
1392
+ $event_data['post_excerpt'] = ( $post_excerpt ) ? $post_excerpt : ' ';
1393
+ }
1394
+
1395
  if ( 2002 === $event ) {
1396
+ // If we reach this point, we no longer need to check if the content has changed as we already have an event to handle it.
1397
+ // So trigger 2002 regardess and "something" has changed in the post, we just dont detect it elsewhere.
1398
+ $this->plugin->alerts->TriggerIf( $event, $event_data, array( $this, 'ignore_other_post_events' ) );
 
 
1399
  } else {
1400
  $this->plugin->alerts->Trigger( $event, $event_data );
1401
  }
1403
  }
1404
  }
1405
 
1406
+ /**
1407
+ * Method: Ensure no other post-related events are being fired, or have recently been fired.
1408
+ *
1409
+ * @param WSAL_AlertManager $manager - WSAL Alert Manager.
1410
+ * @return bool
1411
+ */
1412
+ public function ignore_other_post_events( WSAL_AlertManager $manager ) {
1413
+
1414
+ $post_events = array_keys( $this->plugin->alerts->get_alerts_by_sub_category( 'Content' ) );
1415
+
1416
+ foreach ( $post_events as $event ) {
1417
+ if ( $manager->WillOrHasTriggered( $event) || $this->was_triggered_recently( $event ) ) {
1418
+ return false;
1419
+ }
1420
+ }
1421
+
1422
+ return true;
1423
+ }
1424
+
1425
  /**
1426
  * Ignore post from BBPress, WooCommerce Plugin
1427
  * Triggered on the Sensors
1498
  return ! empty( $revision_id ) ? add_query_arg( 'revision', $revision_id, admin_url( 'revision.php' ) ) : null;
1499
  }
1500
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1501
  /**
1502
  * Log post stuck/unstuck events.
1503
  *
classes/Sensors/Database.php CHANGED
@@ -64,10 +64,8 @@ class WSAL_Sensors_Database extends WSAL_AbstractSensor {
64
  * Listening to events using WP hooks.
65
  */
66
  public function HookEvents() {
67
- if ( $this->plugin->IsInstalled() ) {
68
- add_action( 'dbdelta_queries', array( $this, 'EventDBDeltaQuery' ) );
69
- add_filter( 'query', array( $this, 'EventDropQuery' ) );
70
- }
71
  }
72
 
73
  /**
@@ -81,25 +79,22 @@ class WSAL_Sensors_Database extends WSAL_AbstractSensor {
81
  if ( ! self::$enabled ) {
82
  return $query;
83
  }
84
- global $wpdb;
85
  $table_names = array();
86
  $str = explode( ' ', $query );
87
  $query_type = '';
88
- if ( preg_match( '|DROP TABLE ([^ ]*)|', $query ) ) {
89
- if ( ! empty( $str[4] ) ) {
90
- array_push( $table_names, $str[4] );
91
- } else {
92
- array_push( $table_names, $str[2] );
 
 
93
  }
94
- $query_type = 'delete';
95
- } elseif ( preg_match( '/CREATE TABLE (IF NOT EXISTS)? ([^ ]*)/i', $query, $matches ) ) {
96
  $table_name = $matches[count($matches) - 1];
97
- $table_exists_query = $wpdb->prepare(
98
- "SHOW TABLES LIKE %s;",
99
- $table_name
100
- );
101
-
102
- if ( $table_name !== $wpdb->get_var( $table_exists_query ) ) {
103
  /**
104
  * Some plugins keep trying to create tables even
105
  * when they already exist - would result in too
@@ -337,17 +332,13 @@ class WSAL_Sensors_Database extends WSAL_AbstractSensor {
337
  'delete' => array(),
338
  );
339
 
340
- global $wpdb;
341
  foreach ( $queries as $qry ) {
342
  $qry = str_replace( '`', '', $qry );
343
  $str = explode( ' ', $qry );
344
- if ( preg_match( '/CREATE TABLE (IF NOT EXISTS)? ([^ ]*)/i', $qry, $matches ) ) {
345
  $table_name = $matches[count($matches) - 1];
346
- $table_exists_query = $wpdb->prepare(
347
- "SHOW TABLES LIKE %s;",
348
- $table_name
349
- );
350
- if ( $table_name !== $wpdb->get_var( $table_exists_query ) ) {
351
  /**
352
  * Some plugins keep trying to create tables even
353
  * when they already exist- would result in too
@@ -357,11 +348,12 @@ class WSAL_Sensors_Database extends WSAL_AbstractSensor {
357
  }
358
  } elseif ( preg_match( '|ALTER TABLE ([^ ]*)|', $qry ) ) {
359
  array_push( $query_types['update'], $str[2] );
360
- } elseif ( preg_match( '|DROP TABLE ([^ ]*)|', $qry ) ) {
361
- if ( ! empty( $str[4] ) ) {
362
- array_push( $query_types['delete'], $str[4] );
363
- } else {
364
- array_push( $query_types['delete'], $str[2] );
 
365
  }
366
  }
367
  }
@@ -396,4 +388,44 @@ class WSAL_Sensors_Database extends WSAL_AbstractSensor {
396
  return $plugin_name;
397
  }
398
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  }
64
  * Listening to events using WP hooks.
65
  */
66
  public function HookEvents() {
67
+ add_action( 'dbdelta_queries', array( $this, 'EventDBDeltaQuery' ) );
68
+ add_filter( 'query', array( $this, 'EventDropQuery' ) );
 
 
69
  }
70
 
71
  /**
79
  if ( ! self::$enabled ) {
80
  return $query;
81
  }
82
+
83
  $table_names = array();
84
  $str = explode( ' ', $query );
85
  $query_type = '';
86
+ if ( preg_match( '|DROP TABLE( IF EXISTS)? ([^ ]*)|', $query ) ) {
87
+ $table_name = empty( $str[4] ) ? $str[2] : $str[4];
88
+ // only log when the table exists as some plugins try to delete tables even if they don't exist
89
+ if ( $this->is_table_operation_check_enabled($table_name, 'delete')
90
+ && $this->check_if_table_exists( $table_name ) ) {
91
+ array_push( $table_names, $table_name );
92
+ $query_type = 'delete';
93
  }
94
+ } elseif ( preg_match( '/CREATE TABLE( IF NOT EXISTS)? ([^ ]*)/i', $query, $matches ) || preg_match( '/CREATE TABLE ([^ ]*)/i', $query, $matches ) ) {
 
95
  $table_name = $matches[count($matches) - 1];
96
+ if ( $this->is_table_operation_check_enabled($table_name, 'create')
97
+ && ! $this->check_if_table_exists($table_name) ) {
 
 
 
 
98
  /**
99
  * Some plugins keep trying to create tables even
100
  * when they already exist - would result in too
332
  'delete' => array(),
333
  );
334
 
 
335
  foreach ( $queries as $qry ) {
336
  $qry = str_replace( '`', '', $qry );
337
  $str = explode( ' ', $qry );
338
+ if ( preg_match( '/CREATE TABLE( IF NOT EXISTS)? ([^ ]*)/i', $qry, $matches ) ) {
339
  $table_name = $matches[count($matches) - 1];
340
+ if ( $this->is_table_operation_check_enabled($table_name, 'create')
341
+ && ! $this->check_if_table_exists( $table_name ) ) {
 
 
 
342
  /**
343
  * Some plugins keep trying to create tables even
344
  * when they already exist- would result in too
348
  }
349
  } elseif ( preg_match( '|ALTER TABLE ([^ ]*)|', $qry ) ) {
350
  array_push( $query_types['update'], $str[2] );
351
+ } elseif ( preg_match( '|DROP TABLE( IF EXISTS)? ([^ ]*)|', $qry ) ) {
352
+ $table_name = empty( $str[4] ) ? $str[2] : $str[4];
353
+ // only log when the table exists as some plugins try to delete tables even if they don't exist
354
+ if ( $this->is_table_operation_check_enabled($table_name, 'delete')
355
+ && $this->check_if_table_exists( $table_name ) ) {
356
+ array_push( $query_types['delete'], $table_name );
357
  }
358
  }
359
  }
388
  return $plugin_name;
389
  }
390
  }
391
+
392
+ /**
393
+ * Checks if a table exists in the WordPress database by running a SELECT query instead of former solution using
394
+ * SHOW TABLES. The previous solution has proven to be memory intense in shared hosting environments.
395
+ *
396
+ * @param string $table_name Table name.
397
+ *
398
+ * @return bool True if the table exists. False otherwise.
399
+ * @since 4.2.0
400
+ */
401
+ private function check_if_table_exists( $table_name ) {
402
+ try {
403
+ global $wpdb;
404
+ $db_result = $wpdb->query( "SELECT COUNT(1) FROM {$table_name};" );
405
+
406
+ return ( 1 === $db_result );
407
+ } catch (Exception $e) {
408
+ return false;
409
+ }
410
+ }
411
+
412
+ /**
413
+ * Checks if alerts for certain query type are enabled or not.
414
+ *
415
+ * This is used to prevent unnecessary table existence checks. These checks should not take place
416
+ * if a specific alert is not enabled. Unfortunately if the alert is enabled or not is being checked
417
+ * too late.
418
+ *
419
+ * @param string $table_name
420
+ * @param string $query_type
421
+ *
422
+ * @return bool
423
+ * @see WSAL_AlertManager::_CommitItem()
424
+ * @since 4.2.0
425
+ */
426
+ private function is_table_operation_check_enabled( $table_name, $query_type ) {
427
+ $actor = $this->GetActor( [ $table_name ] );
428
+ $eventCode = $this->GetEventCode( $actor, $query_type );
429
+ return $this->plugin->alerts->IsEnabled( $eventCode );
430
+ }
431
  }
classes/Sensors/FrontendLogin.php DELETED
@@ -1,84 +0,0 @@
1
- <?php
2
- /**
3
- * Frontend user login sensor.
4
- *
5
- * @package wsal
6
- */
7
-
8
- if ( ! defined( 'ABSPATH' ) ) {
9
- exit; // Exit if accessed directly.
10
- }
11
-
12
- /**
13
- * Frontend user login sensor.
14
- */
15
- class WSAL_Sensors_FrontendLogin extends WSAL_AbstractSensor {
16
-
17
- /**
18
- * Listening to events using WP hooks.
19
- */
20
- public function HookEvents() {
21
- add_action( 'set_auth_cookie', array( $this, 'event_login' ), 10, 6 );
22
- }
23
-
24
- /**
25
- * Event Login.
26
- *
27
- * @param string $auth_cookie Authentication cookie value.
28
- * @param int $expire The time the login grace period expires as a UNIX timestamp.
29
- * Default is 12 hours past the cookie's expiration time.
30
- * @param int $expiration The time when the authentication cookie expires as a UNIX timestamp.
31
- * Default is 14 days from now.
32
- * @param int $user_id User ID.
33
- * @param string $scheme Authentication scheme. Values include 'auth' or 'secure_auth'.
34
- * @param string $token User's session token to use for this cookie.
35
- */
36
- public function event_login( $auth_cookie, $expire, $expiration, $user_id, $scheme, $token ) {
37
-
38
- $user = get_user_by( 'id', $user_id );
39
- if ( ! is_a( $user, '\WP_User' ) ) {
40
- // not a user logging in, return early.
41
- return;
42
- }
43
-
44
- $user_login = $user->data->user_login;
45
- $user_roles = $this->plugin->settings()->GetCurrentUserRoles( $user->roles );
46
-
47
- if ( $this->plugin->settings()->IsLoginSuperAdmin( $user_login ) ) {
48
- $user_roles[] = 'superadmin';
49
- }
50
-
51
- $alert_data = array(
52
- 'Username' => $user_login,
53
- 'CurrentUserRoles' => $user_roles,
54
- );
55
-
56
- // @todo attach this using a filter, it should also remove the need for duplicated function hash_token below
57
- if ( class_exists( 'WSAL_UserSessions_Helpers' ) ) {
58
- $alert_data['SessionID'] = $this->hash_token( $token );
59
- }
60
-
61
- $this->plugin->alerts->Trigger(
62
- 1000,
63
- $alert_data,
64
- true
65
- );
66
- }
67
-
68
- /**
69
- * Hashes the given session token.
70
- *
71
- * NOTE: This is how core session manager does it.
72
- *
73
- * @param string $token Session token to hash.
74
- * @return string A hash of the session token (a verifier).
75
- */
76
- public static function hash_token( $token ) {
77
- // If ext/hash is not present, use sha1() instead.
78
- if ( function_exists( 'hash' ) ) {
79
- return hash( 'sha256', $token );
80
- } else {
81
- return sha1( $token );
82
- }
83
- }
84
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
classes/Sensors/LogInOut.php CHANGED
@@ -52,6 +52,7 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
52
  add_action( 'wp_login_failed', array( $this, 'EventLoginFailure' ) );
53
  add_action( 'clear_auth_cookie', array( $this, 'GetCurrentUser' ), 10 );
54
  add_filter( 'wp_login_blocked', array( $this, 'EventLoginBlocked' ), 10, 1 );
 
55
 
56
  if ( WpSecurityAuditLog::is_twofactor_active() ) {
57
  add_action( 'login_redirect', array( $this, 'event_2fa_login' ), 10, 1 );
@@ -60,6 +61,7 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
60
  if ( WpSecurityAuditLog::is_plugin_active( 'user-switching/user-switching.php' ) ) {
61
  add_action( 'switch_to_user', array( $this, 'user_switched_event' ), 10, 2 );
62
  }
 
63
  }
64
 
65
  /**
@@ -501,39 +503,6 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
501
  }
502
  }
503
 
504
- /**
505
- * Event login blocked.
506
- *
507
- * @param string $username - Username.
508
- */
509
- public function EventLoginBlocked( $username ) {
510
- // try get the user object first by login and then by email.
511
- $user = get_user_by( 'login', $username );
512
- if ( ! $user ) {
513
- $user = get_user_by( 'email', $username );
514
- }
515
- // bail early if we could not get a WP_User.
516
- if ( ! is_a( $user, '\WP_User' ) ) {
517
- return;
518
- }
519
-
520
- // get the users roles.
521
- $user_roles = $this->plugin->settings()->GetCurrentUserRoles( $user->roles );
522
- if ( $this->plugin->settings()->IsLoginSuperAdmin( $username ) ) {
523
- $user_roles[] = 'superadmin';
524
- }
525
-
526
- // record a login blocked event.
527
- $this->plugin->alerts->Trigger(
528
- 1004,
529
- array(
530
- 'Username' => $user->user_login,
531
- 'CurrentUserRoles' => $user_roles,
532
- ),
533
- true
534
- );
535
- }
536
-
537
  /**
538
  * User Switched.
539
  *
@@ -561,4 +530,22 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
561
  )
562
  );
563
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
564
  }
52
  add_action( 'wp_login_failed', array( $this, 'EventLoginFailure' ) );
53
  add_action( 'clear_auth_cookie', array( $this, 'GetCurrentUser' ), 10 );
54
  add_filter( 'wp_login_blocked', array( $this, 'EventLoginBlocked' ), 10, 1 );
55
+ add_action( 'lostpassword_post', array( $this, 'event_user_requested_pw_reset' ), 10, 2 );
56
 
57
  if ( WpSecurityAuditLog::is_twofactor_active() ) {
58
  add_action( 'login_redirect', array( $this, 'event_2fa_login' ), 10, 1 );
61
  if ( WpSecurityAuditLog::is_plugin_active( 'user-switching/user-switching.php' ) ) {
62
  add_action( 'switch_to_user', array( $this, 'user_switched_event' ), 10, 2 );
63
  }
64
+
65
  }
66
 
67
  /**
503
  }
504
  }
505
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
506
  /**
507
  * User Switched.
508
  *
530
  )
531
  );
532
  }
533
+
534
+ /**
535
+ * User has requested a password reset.
536
+ *
537
+ * @param object $errors Current WP_errors objtect.
538
+ * @param object $user User making the request.
539
+ */
540
+ public function event_user_requested_pw_reset( $errors, $user ) {
541
+ $user_roles = $this->plugin->settings()->GetCurrentUserRoles( $user->roles );
542
+ $this->plugin->alerts->Trigger(
543
+ 1010,
544
+ array(
545
+ 'Username' => $user->user_login,
546
+ 'CurrentUserRoles' => $user_roles,
547
+ ),
548
+ true
549
+ );
550
+ }
551
  }
classes/Sensors/Menus.php CHANGED
@@ -110,7 +110,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
110
  return false;
111
  }
112
 
113
- $this->EventModifiedItems( $post_array['menu-item-object'][ $menu_item_db_id ], $post_array['menu-item-title'][ $menu_item_db_id ], $post_array['menu-name'] );
114
  }
115
  }
116
  $old_menu_items[ $item_id ] = array(
@@ -138,7 +138,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
138
  // Add Items to the menu.
139
  if ( count( $added_items ) > 0 && wp_verify_nonce( $post_array['update-nav-menu-nonce'], 'update-nav_menu' ) ) {
140
  if ( in_array( $menu_item_db_id, $added_items ) ) {
141
- $this->EventAddItems( $post_array['menu-item-object'][ $menu_item_db_id ], $post_array['menu-item-title'][ $menu_item_db_id ], $post_array['menu-name'] );
142
  }
143
  }
144
  $removed_items = array_diff( array_keys( $old_menu_items ), $new_menu_items );
@@ -147,7 +147,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
147
  if ( count( $removed_items ) > 0 && wp_verify_nonce( $post_array['update-nav-menu-nonce'], 'update-nav_menu' ) ) {
148
  if ( array_search( $menu_item_db_id, $new_menu_items ) == ( count( $new_menu_items ) - 1 ) ) {
149
  foreach ( $removed_items as $removed_item_id ) {
150
- $this->EventRemoveItems( $old_menu_items[ $removed_item_id ]['type'], $old_menu_items[ $removed_item_id ]['title'], $post_array['menu-name'] );
151
  }
152
  }
153
  }
@@ -163,7 +163,10 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
163
  public function CreateMenu( $term_id, $menu_data ) {
164
  $this->plugin->alerts->Trigger(
165
  2078,
166
- array( 'MenuName' => $menu_data['menu-name'] )
 
 
 
167
  );
168
  }
169
 
@@ -225,6 +228,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
225
  2081,
226
  array(
227
  'MenuName' => $this->_old_menu->name,
 
228
  )
229
  );
230
  }
@@ -259,11 +263,11 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
259
  foreach ( $this->_old_menu_terms as $old_menu_term ) {
260
  if ( $old_menu_term['term_id'] == $post_array['menu'] && wp_verify_nonce( $post_array['update-nav-menu-nonce'], 'update-nav_menu' ) ) {
261
  if ( $old_menu_term['name'] != $post_array['menu-name'] ) {
262
- $this->EventChangeName( $old_menu_term['name'], $post_array['menu-name'] );
263
  } else {
264
  //Remove the last menu item.
265
  if ( count( $content_names_old ) == 1 && count( $content_types_old ) == 1 ) {
266
- $this->EventRemoveItems( $content_types_old[0], $content_names_old[0], $post_array['menu-name'] );
267
  }
268
  }
269
  }
@@ -291,7 +295,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
291
 
292
  // Alert 2082 Auto add pages.
293
  if ( ! empty( $auto_add ) ) {
294
- $this->EventMenuSetting( $menu_data['menu-name'], $auto_add, 'Auto add pages' );
295
  }
296
 
297
  $nav_menu_locations = get_nav_menu_locations();
@@ -313,7 +317,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
313
 
314
  // Alert 2082 top menu.
315
  if ( ! empty( $location_top ) ) {
316
- $this->EventMenuSetting( $menu_data['menu-name'], $location_top, 'Location: top menu' );
317
  }
318
 
319
  $location_social = null;
@@ -333,7 +337,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
333
 
334
  // Alert 2082 Social links menu.
335
  if ( ! empty( $location_social ) ) {
336
- $this->EventMenuSetting( $menu_data['menu-name'], $location_social, 'Location: social menu' );
337
  }
338
  }
339
  }
@@ -463,18 +467,18 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
463
  // Modified Items in the menu.
464
  if ( $old_item['title'] != $content_name ) {
465
  $is_occurred_event = true;
466
- $this->EventModifiedItems( $value['type_label'], $content_name, $menu->name );
467
  }
468
  // Moved as a sub-item.
469
  if ( $old_item['menu_item_parent'] != $value['menu_item_parent'] && 0 != $value['menu_item_parent'] ) {
470
  $is_occurred_event = true;
471
  $parent_name = $this->GetItemName( $value['nav_menu_term_id'], $value['menu_item_parent'] );
472
- $this->EventChangeSubItem( $content_name, $parent_name, $menu->name );
473
  }
474
  // Changed order of the objects in a menu.
475
  if ( $old_item['menu_order'] != $value['position'] ) {
476
  $is_occurred_event = true;
477
- $this->EventChangeOrder( $content_name, $menu->name );
478
  }
479
  }
480
  }
@@ -482,7 +486,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
482
  // Add Items to the menu.
483
  if ( ! $is_occurred_event ) {
484
  $menu_name = ! empty( $customized['new_menu_name'] ) ? $customized['new_menu_name'] : $menu->name;
485
- $this->EventAddItems( $value['type_label'], $content_name, $menu_name );
486
  }
487
  } else {
488
  // Menu changed name.
@@ -490,7 +494,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
490
  foreach ( $this->_old_menu_terms as $old_menu ) {
491
  foreach ( $update_menus as $update_menu ) {
492
  if ( $old_menu['term_id'] == $update_menu['term_id'] && $old_menu['name'] != $update_menu['name'] ) {
493
- $this->EventChangeName( $old_menu['name'], $update_menu['name'] );
494
  }
495
  }
496
  }
@@ -498,9 +502,9 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
498
  // Setting Auto add pages.
499
  if ( ! empty( $value ) && isset( $value['auto_add'] ) ) {
500
  if ( $value['auto_add'] ) {
501
- $this->EventMenuSetting( $value['name'], 'Enabled', 'Auto add pages' );
502
  } else {
503
- $this->EventMenuSetting( $value['name'], 'Disabled', 'Auto add pages' );
504
  }
505
  }
506
  // Setting Location.
@@ -509,12 +513,12 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
509
  if ( ! empty( $value ) ) {
510
  $menu = wp_get_nav_menu_object( $value );
511
  $menu_name = ! empty( $customized['new_menu_name'] ) ? $customized['new_menu_name'] : ( ! empty( $menu ) ? $menu->name : '' );
512
- $this->EventMenuSetting( $menu_name, 'Enabled', 'Location: ' . $loc . ' menu' );
513
  } else {
514
  if ( ! empty( $this->_old_menu_locations[ $loc ] ) ) {
515
  $menu = wp_get_nav_menu_object( $this->_old_menu_locations[ $loc ] );
516
  $menu_name = ! empty( $customized['new_menu_name'] ) ? $customized['new_menu_name'] : ( ! empty( $menu ) ? $menu->name : '' );
517
- $this->EventMenuSetting( $menu_name, 'Disabled', 'Location: ' . $loc . ' menu' );
518
  }
519
  }
520
  }
@@ -524,7 +528,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
524
  if ( ! empty( $this->_old_menu_items ) ) {
525
  foreach ( $this->_old_menu_items as $old_item ) {
526
  if ( $old_item['item_id'] == $item_id ) {
527
- $this->EventRemoveItems( $old_item['object'], $old_item['title'], $old_item['menu_name'] );
528
  }
529
  }
530
  }
@@ -543,13 +547,14 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
543
  * @param string $content_name - Name of content.
544
  * @param string $menu_name - Menu name.
545
  */
546
- private function EventAddItems( $content_type, $content_name, $menu_name ) {
547
  $this->plugin->alerts->Trigger(
548
  2079,
549
  array(
550
  'ContentType' => 'custom' === $content_type ? 'custom link' : $content_type,
551
  'ContentName' => $content_name,
552
  'MenuName' => $menu_name,
 
553
  )
554
  );
555
  }
@@ -561,13 +566,14 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
561
  * @param string $content_name - Name of content.
562
  * @param string $menu_name - Menu name.
563
  */
564
- private function EventRemoveItems( $content_type, $content_name, $menu_name ) {
565
  $this->plugin->alerts->Trigger(
566
  2080,
567
  array(
568
  'ContentType' => 'custom' === $content_type ? 'custom link' : $content_type,
569
  'ContentName' => $content_name,
570
  'MenuName' => $menu_name,
 
571
  )
572
  );
573
  }
@@ -579,7 +585,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
579
  * @param string $status - Status of menu.
580
  * @param string $menu_setting - Menu setting.
581
  */
582
- private function EventMenuSetting( $menu_name, $status, $menu_setting ) {
583
  $status = 'Enabled' === $status ? 'enabled' : 'disabled';
584
  $this->plugin->alerts->Trigger(
585
  2082,
@@ -587,6 +593,7 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
587
  'EventType' => $status,
588
  'MenuSetting' => $menu_setting,
589
  'MenuName' => $menu_name,
 
590
  )
591
  );
592
  }
@@ -598,13 +605,14 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
598
  * @param string $content_name - Name of content.
599
  * @param string $menu_name - Menu name.
600
  */
601
- private function EventModifiedItems( $content_type, $content_name, $menu_name ) {
602
  $this->plugin->alerts->Trigger(
603
  2083,
604
  array(
605
  'ContentType' => 'custom' === $content_type ? 'custom link' : $content_type,
606
  'ContentName' => $content_name,
607
  'MenuName' => $menu_name,
 
608
  )
609
  );
610
  }
@@ -615,12 +623,13 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
615
  * @param string $old_menu_name - Old Menu Name.
616
  * @param string $new_menu_name - New Menu Name.
617
  */
618
- private function EventChangeName( $old_menu_name, $new_menu_name ) {
619
  $this->plugin->alerts->Trigger(
620
  2084,
621
  array(
622
  'OldMenuName' => $old_menu_name,
623
- 'NewMenuName' => $new_menu_name,
 
624
  )
625
  );
626
  }
@@ -631,12 +640,13 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
631
  * @param string $item_name - Item name.
632
  * @param string $menu_name - Menu name.
633
  */
634
- private function EventChangeOrder( $item_name, $menu_name ) {
635
  $this->plugin->alerts->Trigger(
636
  2085,
637
  array(
638
  'ItemName' => $item_name,
639
  'MenuName' => $menu_name,
 
640
  )
641
  );
642
  }
@@ -648,13 +658,14 @@ class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
648
  * @param string $parent_name - Parent Name.
649
  * @param string $menu_name - Menu Name.
650
  */
651
- private function EventChangeSubItem( $item_name, $parent_name, $menu_name ) {
652
  $this->plugin->alerts->Trigger(
653
  2089,
654
  array(
655
  'ItemName' => $item_name,
656
  'ParentName' => $parent_name,
657
  'MenuName' => $menu_name,
 
658
  )
659
  );
660
  }
110
  return false;
111
  }
112
 
113
+ $this->EventModifiedItems( $post_array['menu-item-object'][ $menu_item_db_id ], $post_array['menu-item-title'][ $menu_item_db_id ], $post_array['menu-name'], $menu_id );
114
  }
115
  }
116
  $old_menu_items[ $item_id ] = array(
138
  // Add Items to the menu.
139
  if ( count( $added_items ) > 0 && wp_verify_nonce( $post_array['update-nav-menu-nonce'], 'update-nav_menu' ) ) {
140
  if ( in_array( $menu_item_db_id, $added_items ) ) {
141
+ $this->EventAddItems( $post_array['menu-item-object'][ $menu_item_db_id ], $post_array['menu-item-title'][ $menu_item_db_id ], $post_array['menu-name'], $menu_id );
142
  }
143
  }
144
  $removed_items = array_diff( array_keys( $old_menu_items ), $new_menu_items );
147
  if ( count( $removed_items ) > 0 && wp_verify_nonce( $post_array['update-nav-menu-nonce'], 'update-nav_menu' ) ) {
148
  if ( array_search( $menu_item_db_id, $new_menu_items ) == ( count( $new_menu_items ) - 1 ) ) {
149
  foreach ( $removed_items as $removed_item_id ) {
150
+ $this->EventRemoveItems( $old_menu_items[ $removed_item_id ]['type'], $old_menu_items[ $removed_item_id ]['title'], $post_array['menu-name'], $menu_id );
151
  }
152
  }
153
  }
163
  public function CreateMenu( $term_id, $menu_data ) {
164
  $this->plugin->alerts->Trigger(
165
  2078,
166
+ array(
167
+ 'MenuName' => $menu_data['menu-name'],
168
+ 'MenuID' => $term_id,
169
+ )
170
  );
171
  }
172
 
228
  2081,
229
  array(
230
  'MenuName' => $this->_old_menu->name,
231
+ 'MenuID' => $term_id,
232
  )
233
  );
234
  }
263
  foreach ( $this->_old_menu_terms as $old_menu_term ) {
264
  if ( $old_menu_term['term_id'] == $post_array['menu'] && wp_verify_nonce( $post_array['update-nav-menu-nonce'], 'update-nav_menu' ) ) {
265
  if ( $old_menu_term['name'] != $post_array['menu-name'] ) {
266
+ $this->EventChangeName( $old_menu_term['name'], $post_array['menu-name'], $menu_id );
267
  } else {
268
  //Remove the last menu item.
269
  if ( count( $content_names_old ) == 1 && count( $content_types_old ) == 1 ) {
270
+ $this->EventRemoveItems( $content_types_old[0], $content_names_old[0], $post_array['menu-name'], $menu_id );
271
  }
272
  }
273
  }
295
 
296
  // Alert 2082 Auto add pages.
297
  if ( ! empty( $auto_add ) ) {
298
+ $this->EventMenuSetting( $menu_data['menu-name'], $auto_add, 'Auto add pages', $menu_id );
299
  }
300
 
301
  $nav_menu_locations = get_nav_menu_locations();
317
 
318
  // Alert 2082 top menu.
319
  if ( ! empty( $location_top ) ) {
320
+ $this->EventMenuSetting( $menu_data['menu-name'], $location_top, 'Location: top menu', $menu_id );
321
  }
322
 
323
  $location_social = null;
337
 
338
  // Alert 2082 Social links menu.
339
  if ( ! empty( $location_social ) ) {
340
+ $this->EventMenuSetting( $menu_data['menu-name'], $location_social, 'Location: social menu', $menu_id );
341
  }
342
  }
343
  }
467
  // Modified Items in the menu.
468
  if ( $old_item['title'] != $content_name ) {
469
  $is_occurred_event = true;
470
+ $this->EventModifiedItems( $value['type_label'], $content_name, $menu->name, $menu->term_id );
471
  }
472
  // Moved as a sub-item.
473
  if ( $old_item['menu_item_parent'] != $value['menu_item_parent'] && 0 != $value['menu_item_parent'] ) {
474
  $is_occurred_event = true;
475
  $parent_name = $this->GetItemName( $value['nav_menu_term_id'], $value['menu_item_parent'] );
476
+ $this->EventChangeSubItem( $content_name, $parent_name, $menu->name, $menu->term_id );
477
  }
478
  // Changed order of the objects in a menu.
479
  if ( $old_item['menu_order'] != $value['position'] ) {
480
  $is_occurred_event = true;
481
+ $this->EventChangeOrder( $content_name, $menu->name, $menu->term_id );
482
  }
483
  }
484
  }
486
  // Add Items to the menu.
487
  if ( ! $is_occurred_event ) {
488
  $menu_name = ! empty( $customized['new_menu_name'] ) ? $customized['new_menu_name'] : $menu->name;
489
+ $this->EventAddItems( $value['type_label'], $content_name, $menu_name, $menu->term_id );
490
  }
491
  } else {
492
  // Menu changed name.
494
  foreach ( $this->_old_menu_terms as $old_menu ) {
495
  foreach ( $update_menus as $update_menu ) {
496
  if ( $old_menu['term_id'] == $update_menu['term_id'] && $old_menu['name'] != $update_menu['name'] ) {
497
+ $this->EventChangeName( $old_menu['name'], $update_menu['name'], $menu->term_id );
498
  }
499
  }
500
  }
502
  // Setting Auto add pages.
503
  if ( ! empty( $value ) && isset( $value['auto_add'] ) ) {
504
  if ( $value['auto_add'] ) {
505
+ $this->EventMenuSetting( $value['name'], 'Enabled', 'Auto add pages', $menu->term_id );
506
  } else {
507
+ $this->EventMenuSetting( $value['name'], 'Disabled', 'Auto add pages', $menu->term_id );
508
  }
509
  }
510
  // Setting Location.
513
  if ( ! empty( $value ) ) {
514
  $menu = wp_get_nav_menu_object( $value );
515
  $menu_name = ! empty( $customized['new_menu_name'] ) ? $customized['new_menu_name'] : ( ! empty( $menu ) ? $menu->name : '' );
516
+ $this->EventMenuSetting( $menu_name, 'Enabled', 'Location: ' . $loc . ' menu', $menu->term_id );
517
  } else {
518
  if ( ! empty( $this->_old_menu_locations[ $loc ] ) ) {
519
  $menu = wp_get_nav_menu_object( $this->_old_menu_locations[ $loc ] );
520
  $menu_name = ! empty( $customized['new_menu_name'] ) ? $customized['new_menu_name'] : ( ! empty( $menu ) ? $menu->name : '' );
521
+ $this->EventMenuSetting( $menu_name, 'Disabled', 'Location: ' . $loc . ' menu', $menu->term_id );
522
  }
523
  }
524
  }
528
  if ( ! empty( $this->_old_menu_items ) ) {
529
  foreach ( $this->_old_menu_items as $old_item ) {
530
  if ( $old_item['item_id'] == $item_id ) {
531
+ $this->EventRemoveItems( $old_item['object'], $old_item['title'], $old_item['menu_name'], $menu->term_id );
532
  }
533
  }
534
  }
547
  * @param string $content_name - Name of content.
548
  * @param string $menu_name - Menu name.
549
  */
550
+ private function EventAddItems( $content_type, $content_name, $menu_name, $menu_id ) {
551
  $this->plugin->alerts->Trigger(
552
  2079,
553
  array(
554
  'ContentType' => 'custom' === $content_type ? 'custom link' : $content_type,
555
  'ContentName' => $content_name,
556
  'MenuName' => $menu_name,
557
+ 'MenuID' => $menu_id,
558
  )
559
  );
560
  }
566
  * @param string $content_name - Name of content.
567
  * @param string $menu_name - Menu name.
568
  */
569
+ private function EventRemoveItems( $content_type, $content_name, $menu_name, $menu_id ) {
570
  $this->plugin->alerts->Trigger(
571
  2080,
572
  array(
573
  'ContentType' => 'custom' === $content_type ? 'custom link' : $content_type,
574
  'ContentName' => $content_name,
575
  'MenuName' => $menu_name,
576
+ 'MenuID' => $menu_id,
577
  )
578
  );
579
  }
585
  * @param string $status - Status of menu.
586
  * @param string $menu_setting - Menu setting.
587
  */
588
+ private function EventMenuSetting( $menu_name, $status, $menu_setting, $menu_id ) {
589
  $status = 'Enabled' === $status ? 'enabled' : 'disabled';
590
  $this->plugin->alerts->Trigger(
591
  2082,
593
  'EventType' => $status,
594
  'MenuSetting' => $menu_setting,
595
  'MenuName' => $menu_name,
596
+ 'MenuID' => $menu_id,
597
  )
598
  );
599
  }
605
  * @param string $content_name - Name of content.
606
  * @param string $menu_name - Menu name.
607
  */
608
+ private function EventModifiedItems( $content_type, $content_name, $menu_name, $menu_id ) {
609
  $this->plugin->alerts->Trigger(
610
  2083,
611
  array(
612
  'ContentType' => 'custom' === $content_type ? 'custom link' : $content_type,
613
  'ContentName' => $content_name,
614
  'MenuName' => $menu_name,
615
+ 'MenuID' => $menu_id,
616
  )
617
  );
618
  }
623
  * @param string $old_menu_name - Old Menu Name.
624
  * @param string $new_menu_name - New Menu Name.
625
  */
626
+ private function EventChangeName( $old_menu_name, $new_menu_name, $menu_id ) {
627
  $this->plugin->alerts->Trigger(
628
  2084,
629
  array(
630
  'OldMenuName' => $old_menu_name,
631
+ 'MenuName' => $new_menu_name,
632
+ 'MenuID' => $menu_id,
633
  )
634
  );
635
  }
640
  * @param string $item_name - Item name.
641
  * @param string $menu_name - Menu name.
642
  */
643
+ private function EventChangeOrder( $item_name, $menu_name, $menu_id ) {
644
  $this->plugin->alerts->Trigger(
645
  2085,
646
  array(
647
  'ItemName' => $item_name,
648
  'MenuName' => $menu_name,
649
+ 'MenuID' => $menu_id,
650
  )
651
  );
652
  }
658
  * @param string $parent_name - Parent Name.
659
  * @param string $menu_name - Menu Name.
660
  */
661
+ private function EventChangeSubItem( $item_name, $parent_name, $menu_name, $menu_id ) {
662
  $this->plugin->alerts->Trigger(
663
  2089,
664
  array(
665
  'ItemName' => $item_name,
666
  'ParentName' => $parent_name,
667
  'MenuName' => $menu_name,
668
+ 'MenuID' => $menu_id,
669
  )
670
  );
671
  }
classes/Sensors/MetaData.php CHANGED
@@ -86,8 +86,11 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
86
  unset( $this->plugin->alerts->ignored_cpts[$key] );
87
  }
88
 
 
 
 
89
  // Ignore updates from ignored custom post types.
90
- if ( in_array( $post->post_type, $this->plugin->alerts->ignored_cpts, true ) ) {
91
  return;
92
  }
93
 
86
  unset( $this->plugin->alerts->ignored_cpts[$key] );
87
  }
88
 
89
+ // Allow ignored post typed to be modified via filter.
90
+ $ignored_cpts = apply_filters( 'wsal_post_meta_created_ignored_cpts', $this->plugin->alerts->ignored_cpts );
91
+
92
  // Ignore updates from ignored custom post types.
93
+ if ( in_array( $post->post_type, $ignored_cpts, true ) ) {
94
  return;
95
  }
96
 
classes/Sensors/Multisite.php CHANGED
@@ -49,15 +49,16 @@ class WSAL_Sensors_Multisite extends WSAL_AbstractSensor {
49
  if ( current_user_can( 'switch_themes' ) ) {
50
  add_action( 'shutdown', array( $this, 'EventAdminShutdown' ) );
51
  }
52
- add_action( 'wpmu_new_blog', array( $this, 'EventNewBlog' ), 10, 1 );
53
  add_action( 'archive_blog', array( $this, 'EventArchiveBlog' ) );
54
  add_action( 'unarchive_blog', array( $this, 'EventUnarchiveBlog' ) );
55
  add_action( 'activate_blog', array( $this, 'EventActivateBlog' ) );
56
  add_action( 'deactivate_blog', array( $this, 'EventDeactivateBlog' ) );
57
- add_action( 'delete_blog', array( $this, 'EventDeleteBlog' ) );
58
  add_action( 'add_user_to_blog', array( $this, 'EventUserAddedToBlog' ), 10, 3 );
59
  add_action( 'remove_user_from_blog', array( $this, 'EventUserRemovedFromBlog' ), 10, 2 );
60
- add_action( 'update_site_option_registration', array( $this, 'on_network_registration_option_change'), 10, 4 );
 
61
  }
62
 
63
  /**
@@ -70,14 +71,75 @@ class WSAL_Sensors_Multisite extends WSAL_AbstractSensor {
70
  * @param mixed $old_value Old value of the network option.
71
  * @param int $network_id ID of the network.
72
  */
73
- public function on_network_registration_option_change( $option, $value, $old_value, $network_id ) {
74
- $this->plugin->alerts->Trigger(
75
- 7012,
76
- array(
77
- 'previous_setting' => $old_value,
78
- 'new_setting' => $value
79
- )
80
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  }
82
 
83
  /**
@@ -140,9 +202,10 @@ class WSAL_Sensors_Multisite extends WSAL_AbstractSensor {
140
  /**
141
  * New site added on the network.
142
  *
143
- * @param int $blog_id - Blog ID.
144
  */
145
- public function EventNewBlog( $blog_id ) {
 
146
  $this->plugin->alerts->Trigger(
147
  7000,
148
  array(
@@ -220,9 +283,10 @@ class WSAL_Sensors_Multisite extends WSAL_AbstractSensor {
220
  /**
221
  * Existing site deleted from network.
222
  *
223
- * @param int $blog_id - Blog ID.
224
  */
225
- public function EventDeleteBlog( $blog_id ) {
 
226
  $this->plugin->alerts->Trigger(
227
  7005,
228
  array(
49
  if ( current_user_can( 'switch_themes' ) ) {
50
  add_action( 'shutdown', array( $this, 'EventAdminShutdown' ) );
51
  }
52
+ add_action( 'wp_insert_site', array( $this, 'EventNewBlog' ), 10, 1 );
53
  add_action( 'archive_blog', array( $this, 'EventArchiveBlog' ) );
54
  add_action( 'unarchive_blog', array( $this, 'EventUnarchiveBlog' ) );
55
  add_action( 'activate_blog', array( $this, 'EventActivateBlog' ) );
56
  add_action( 'deactivate_blog', array( $this, 'EventDeactivateBlog' ) );
57
+ add_action( 'wp_uninitialize_site', array( $this, 'EventDeleteBlog' ) );
58
  add_action( 'add_user_to_blog', array( $this, 'EventUserAddedToBlog' ), 10, 3 );
59
  add_action( 'remove_user_from_blog', array( $this, 'EventUserRemovedFromBlog' ), 10, 2 );
60
+
61
+ add_action( 'update_site_option', array( $this, 'on_network_option_change'), 10, 4 );
62
  }
63
 
64
  /**
71
  * @param mixed $old_value Old value of the network option.
72
  * @param int $network_id ID of the network.
73
  */
74
+ public function on_network_option_change( $option, $value, $old_value, $network_id ) {
75
+
76
+ switch ( $option ) {
77
+ case 'registration':
78
+ // Array of potential values.
79
+ $possible_values = array(
80
+ 'none' => __( 'disabled', 'wp-security-audit-log' ),
81
+ 'user' => __( 'user accounts only', 'wp-security-audit-log' ),
82
+ 'blog' => __( 'users can register new sites', 'wp-security-audit-log' ),
83
+ 'all' => __( 'sites & users can be registered', 'wp-security-audit-log' ),
84
+ );
85
+ $this->plugin->alerts->Trigger(
86
+ 7012,
87
+ array(
88
+ 'previous_setting' => ( isset( $possible_values[ $old_value ] ) ) ? $possible_values[ $old_value ] : $old_value,
89
+ 'new_setting' => ( isset( $possible_values[ $value ] ) ) ? $possible_values[ $value ] : $value,
90
+ )
91
+ );
92
+ break;
93
+
94
+ case 'add_new_users':
95
+ $this->plugin->alerts->Trigger(
96
+ 7007,
97
+ array(
98
+ 'EventType' => ( ! $value ) ? 'disabled' : 'enabled',
99
+ )
100
+ );
101
+ break;
102
+
103
+ case 'upload_space_check_disabled':
104
+ $this->plugin->alerts->Trigger(
105
+ 7008,
106
+ array(
107
+ 'EventType' => ( $value ) ? 'disabled' : 'enabled',
108
+ )
109
+ );
110
+ break;
111
+
112
+ case 'blog_upload_space':
113
+ $this->plugin->alerts->Trigger(
114
+ 7009,
115
+ array(
116
+ 'old_value' => sanitize_text_field( $old_value ),
117
+ 'new_value' => sanitize_text_field( $value ),
118
+ )
119
+ );
120
+ break;
121
+
122
+ case 'upload_filetypes':
123
+ $this->plugin->alerts->Trigger(
124
+ 7010,
125
+ array(
126
+ 'old_value' => sanitize_text_field( $old_value ),
127
+ 'new_value' => sanitize_text_field( $value ),
128
+ )
129
+ );
130
+ break;
131
+
132
+ case 'fileupload_maxk':
133
+ $this->plugin->alerts->Trigger(
134
+ 7009,
135
+ array(
136
+ 'old_value' => sanitize_text_field( $old_value ),
137
+ 'new_value' => sanitize_text_field( $value ),
138
+ )
139
+ );
140
+ break;
141
+ }
142
+
143
  }
144
 
145
  /**
202
  /**
203
  * New site added on the network.
204
  *
205
+ * @param WP_Site $new_blog - New site object.
206
  */
207
+ public function EventNewBlog( $new_blog ) {
208
+ $blog_id = $new_blog->blog_id;
209
  $this->plugin->alerts->Trigger(
210
  7000,
211
  array(
283
  /**
284
  * Existing site deleted from network.
285
  *
286
+ * @param WP_Site $deleted_blog - Deleted blog object.
287
  */
288
+ public function EventDeleteBlog( $deleted_blog ) {
289
+ $blog_id = $deleted_blog->blog_id;
290
  $this->plugin->alerts->Trigger(
291
  7005,
292
  array(
classes/Sensors/PhpErrors.php DELETED
@@ -1,177 +0,0 @@
1
- <?php
2
- /**
3
- * Sensor: PHP Errors
4
- *
5
- * PHP Errors sensor file.
6
- *
7
- * @since 1.0.0
8
- * @package Wsal
9
- */
10
-
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
-
16
- /**
17
- * PHP Errors sensor.
18
- *
19
- * 0001 PHP error
20
- * 0002 PHP warning
21
- * 0003 PHP notice
22
- * 0004 PHP exception
23
- * 0005 PHP shutdown error
24
- *
25
- * @package Wsal
26
- * @subpackage Sensors
27
- */
28
- class WSAL_Sensors_PhpErrors extends WSAL_AbstractSensor {
29
-
30
- /**
31
- * Avoid Recursive Errors
32
- *
33
- * @var boolean
34
- */
35
- protected $_avoid_error_recursion = false;
36
-
37
- /**
38
- * Last Error
39
- *
40
- * @var string
41
- */
42
- protected $_maybe_last_error = null;
43
-
44
- /**
45
- * Error Types
46
- *
47
- * @var array
48
- */
49
- protected $_error_types = array(
50
- 0001 => array( 1, 4, 16, 64, 256, 4096 ), // Errors.
51
- 0002 => array( 2, 32, 128, 512 ), // Warnings.
52
- 0003 => array( 8, 1024, 2048, 8192, 16384 ), // Notices.
53
- 0004 => array(), // Exceptions.
54
- 0005 => array(), // Shutdown.
55
- );
56
-
57
- /**
58
- * Listening to Php events.
59
- */
60
- public function HookEvents() {
61
- if ( $this->plugin->settings()->IsPhpErrorLoggingEnabled() ) {
62
- set_error_handler( array( $this, 'EventError' ), E_ALL );
63
- set_exception_handler( array( $this, 'EventException' ) );
64
- register_shutdown_function( array( $this, 'EventShutdown' ) );
65
- }
66
- }
67
-
68
- /**
69
- * Get the hash of the error.
70
- *
71
- * @param integer $code - Error code.
72
- * @param string $mesg - Error message.
73
- * @param string $file - File name.
74
- * @param integer $line - Line number.
75
- */
76
- protected function GetErrorHash( $code, $mesg, $file, $line ) {
77
- return md5( implode( ':', func_get_args() ) );
78
- }
79
-
80
- /**
81
- * PHP error, warning or notice.
82
- *
83
- * @param integer $errno - Error code.
84
- * @param string $errstr - Error message.
85
- * @param string $errfile - File name.
86
- * @param integer $errline - Line number.
87
- * @param array $errcontext - Error context.
88
- */
89
- public function EventError( $errno, $errstr, $errfile = 'unknown', $errline = 0, $errcontext = array() ) {
90
- if ( $this->_avoid_error_recursion ) {
91
- return;
92
- }
93
-
94
- $errbacktrace = 'No Backtrace';
95
- if ( $this->plugin->settings()->IsBacktraceLoggingEnabled() ) {
96
- ob_start();
97
- debug_print_backtrace();
98
- $errbacktrace = ob_get_clean();
99
- }
100
-
101
- $data = array(
102
- 'Code' => $errno,
103
- 'Message' => $errstr,
104
- 'File' => $errfile,
105
- 'Line' => $errline,
106
- 'Context' => $errcontext,
107
- 'Trace' => $errbacktrace,
108
- );
109
-
110
- $type = 0002; // Default — middle ground.
111
- foreach ( $this->_error_types as $temp => $codes ) {
112
- if ( in_array( $errno, $codes ) ) {
113
- $type = $temp;
114
- }
115
- }
116
-
117
- $this->_maybe_last_error = $this->GetErrorHash( $errno, $errstr, $errfile, $errline );
118
- $this->_avoid_error_recursion = true;
119
- $this->plugin->alerts->Trigger( $type, $data );
120
- $this->_avoid_error_recursion = false;
121
- }
122
-
123
- /**
124
- * PHP exception.
125
- *
126
- * @param Exception $ex - Instance of Exception.
127
- */
128
- public function EventException( Exception $ex ) {
129
- if ( $this->_avoid_error_recursion ) {
130
- return;
131
- }
132
-
133
- $errbacktrace = 'No Backtrace';
134
- if ( $this->plugin->settings()->IsBacktraceLoggingEnabled() ) {
135
- $errbacktrace = $ex->getTraceAsString();
136
- }
137
-
138
- $data = array(
139
- 'Class' => get_class( $ex ),
140
- 'Code' => $ex->getCode(),
141
- 'Message' => $ex->getMessage(),
142
- 'File' => $ex->getFile(),
143
- 'Line' => $ex->getLine(),
144
- 'Trace' => $errbacktrace,
145
- );
146
-
147
- if ( method_exists( $ex, 'getContext' ) ) {
148
- $data['Context'] = $ex->getContext();
149
- }
150
-
151
- $this->_avoid_error_recursion = true;
152
- $this->plugin->alerts->Trigger( 0004, $data );
153
- $this->_avoid_error_recursion = false;
154
- }
155
-
156
- /**
157
- * PHP shutdown error.
158
- */
159
- public function EventShutdown() {
160
- if ( $this->_avoid_error_recursion ) {
161
- return;
162
- }
163
-
164
- if ( ($e = error_get_last()) && ($this->_maybe_last_error != $this->GetErrorHash( $e['type'], $e['message'], $e['file'], $e['line'] )) ) {
165
- $data = array(
166
- 'Code' => $e['type'],
167
- 'Message' => $e['message'],
168
- 'File' => $e['file'],
169
- 'Line' => $e['line'],
170
- );
171
-
172
- $this->_avoid_error_recursion = true;
173
- $this->plugin->alerts->Trigger( 0005, $data );
174
- $this->_avoid_error_recursion = false;
175
- }
176
- }
177
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
classes/Sensors/PluginsThemes.php CHANGED
@@ -98,7 +98,7 @@ class WSAL_Sensors_PluginsThemes extends WSAL_AbstractSensor {
98
  $is_plugins = 'plugins' === $actype;
99
 
100
  // Install plugin.
101
- if ( in_array( $action, array( 'install-plugin', 'upload-plugin' ) ) && current_user_can( 'install_plugins' ) ) {
102
  $plugin = array_values( array_diff( array_keys( get_plugins() ), array_keys( $this->old_plugins ) ) );
103
  if ( count( $plugin ) != 1 ) {
104
  $this->LogError(
@@ -281,12 +281,14 @@ class WSAL_Sensors_PluginsThemes extends WSAL_AbstractSensor {
281
  $plugin_name = str_replace( array( '_', '-', ' ' ), ' ', $plugin_name );
282
  $plugin_name = ucwords( $plugin_name );
283
  $plugin_file = WP_PLUGIN_DIR . '/' . $plugin_file;
 
284
  $this->plugin->alerts->Trigger(
285
  5003,
286
  array(
287
  'PluginFile' => $plugin_file,
288
  'PluginData' => (object) array(
289
- 'Name' => $plugin_name,
 
290
  ),
291
  )
292
  );
@@ -302,12 +304,14 @@ class WSAL_Sensors_PluginsThemes extends WSAL_AbstractSensor {
302
  $plugin_name = basename( $plugin_file, '.php' );
303
  $plugin_name = str_replace( array( '_', '-', ' ' ), ' ', $plugin_name );
304
  $plugin_name = ucwords( $plugin_name );
 
305
  $this->plugin->alerts->Trigger(
306
  5003,
307
  array(
308
  'PluginFile' => $plugin_file,
309
  'PluginData' => (object) array(
310
- 'Name' => $plugin_name,
 
311
  ),
312
  )
313
  );
98
  $is_plugins = 'plugins' === $actype;
99
 
100
  // Install plugin.
101
+ if ( in_array( $action, array( 'install-plugin', 'upload-plugin', 'run_addon_install' ) ) && current_user_can( 'install_plugins' ) ) {
102
  $plugin = array_values( array_diff( array_keys( get_plugins() ), array_keys( $this->old_plugins ) ) );
103
  if ( count( $plugin ) != 1 ) {
104
  $this->LogError(
281
  $plugin_name = str_replace( array( '_', '-', ' ' ), ' ', $plugin_name );
282
  $plugin_name = ucwords( $plugin_name );
283
  $plugin_file = WP_PLUGIN_DIR . '/' . $plugin_file;
284
+ $plugin_data = get_plugin_data( $plugin_file, false, true );
285
  $this->plugin->alerts->Trigger(
286
  5003,
287
  array(
288
  'PluginFile' => $plugin_file,
289
  'PluginData' => (object) array(
290
+ 'Name' => $plugin_name,
291
+ 'Version' => $plugin_data['Version'],
292
  ),
293
  )
294
  );
304
  $plugin_name = basename( $plugin_file, '.php' );
305
  $plugin_name = str_replace( array( '_', '-', ' ' ), ' ', $plugin_name );
306
  $plugin_name = ucwords( $plugin_name );
307
+ $plugin_data = $this->old_plugins[ $post_array['plugin'] ];
308
  $this->plugin->alerts->Trigger(
309
  5003,
310
  array(
311
  'PluginFile' => $plugin_file,
312
  'PluginData' => (object) array(
313
+ 'Name' => $plugin_name,
314
+ 'Version' => $plugin_data['Version'],
315
  ),
316
  )
317
  );
classes/Sensors/Request.php DELETED
@@ -1,120 +0,0 @@
1
- <?php
2
- /**
3
- * Sensor: Request
4
- *
5
- * Request sensor class file.
6
- *
7
- * @since 1.0.0
8
- * @package Wsal
9
- */
10
-
11
- // Exit if accessed directly.
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
- }
15
-
16
- /**
17
- * Writes the Request.log.php file.
18
- *
19
- * @package Wsal
20
- * @subpackage Sensors
21
- */
22
- class WSAL_Sensors_Request extends WSAL_AbstractSensor {
23
-
24
- /**
25
- * Environment Variables
26
- *
27
- * @var array
28
- */
29
- protected static $envvars = array();
30
-
31
- /**
32
- * Listening to events using WP hooks.
33
- */
34
- public function HookEvents() {
35
- if ( $this->plugin->settings()->IsRequestLoggingEnabled() ) {
36
- add_action( 'shutdown', array( $this, 'EventShutdown' ) );
37
- }
38
- }
39
-
40
- /**
41
- * Fires just before PHP shuts down execution.
42
- */
43
- public function EventShutdown() {
44
- // Filter global arrays for security.
45
- $post_array = filter_input_array( INPUT_POST );
46
- $server_array = filter_input_array( INPUT_SERVER );
47
-
48
- // get the custom logging path from settings.
49
- $custom_logging_path = $this->plugin->settings()->get_working_dir_path();
50
- if ( is_wp_error($custom_logging_path) ) {
51
- return;
52
- }
53
-
54
- $file = $custom_logging_path . 'Request.log.php';
55
-
56
- $request_method = isset( $server_array['REQUEST_METHOD'] ) ? $server_array['REQUEST_METHOD'] : false;
57
- $request_uri = isset( $server_array['REQUEST_URI'] ) ? $server_array['REQUEST_URI'] : false;
58
-
59
- $line = '[' . date( 'Y-m-d H:i:s' ) . '] '
60
- . $request_method . ' '
61
- . $request_uri . ' '
62
- . ( ! empty( $post_array ) ? str_pad( PHP_EOL, 24 ) . json_encode( $post_array ) : '')
63
- . ( ! empty( self::$envvars ) ? str_pad( PHP_EOL, 24 ) . json_encode( self::$envvars ) : '')
64
- . PHP_EOL;
65
-
66
- if ( ! file_exists( $file ) && ! file_put_contents( $file, '<' . '?php die(\'Access Denied\'); ?>' . PHP_EOL ) ) {
67
- $this->LogError(
68
- 'Could not initialize request log file', array(
69
- 'file' => $file,
70
- )
71
- );
72
- return;
73
- }
74
-
75
- $f = fopen( $file, 'a' );
76
- if ( $f ) {
77
- if ( ! fwrite( $f, $line ) ) {
78
- $this->LogWarn(
79
- 'Could not write to log file', array(
80
- 'file' => $file,
81
- )
82
- );
83
- }
84
- if ( ! fclose( $f ) ) {
85
- $this->LogWarn(
86
- 'Could not close log file', array(
87
- 'file' => $file,
88
- )
89
- );
90
- }
91
- } else {
92
- $this->LogWarn(
93
- 'Could not open log file', array(
94
- 'file' => $file,
95
- )
96
- );
97
- }
98
- }
99
-
100
- /**
101
- * Sets $envvars element with key and value.
102
- *
103
- * @param mixed $name - Key name of the variable.
104
- * @param mixed $value - Value of the variable.
105
- */
106
- public static function SetVar( $name, $value ) {
107
- self::$envvars[ $name ] = $value;
108
- }
109
-
110
- /**
111
- * Copy data array into $envvars array.
112
- *
113
- * @param array $data - Data array.
114
- */
115
- public static function SetVars( $data ) {
116
- foreach ( $data as $name => $value ) {
117
- self::SetVar( $name, $value );
118
- }
119
- }
120
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
classes/Sensors/System.php CHANGED
@@ -170,6 +170,88 @@ class WSAL_Sensors_System extends WSAL_AbstractSensor {
170
  }
171
  }
172
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  // Registration Option.
174
  if ( $is_option_page && wp_verify_nonce( $post_array['_wpnonce'], 'general-options' ) && ( get_option( 'users_can_register' ) xor isset( $post_array['users_can_register'] ) ) ) {
175
  $old = get_option( 'users_can_register' ) ? 'enabled' : 'disabled';
@@ -266,6 +348,18 @@ class WSAL_Sensors_System extends WSAL_AbstractSensor {
266
  );
267
  }
268
  }
 
 
 
 
 
 
 
 
 
 
 
 
269
  }
270
 
271
  /**
@@ -417,4 +511,63 @@ class WSAL_Sensors_System extends WSAL_AbstractSensor {
417
  }
418
  return $whitelist;
419
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
420
  }
170
  }
171
  }
172
 
173
+ if ( isset( $post_array['option_page'] ) && 'reading' === $post_array['option_page'] && isset( $post_array['show_on_front'] )
174
+ && wp_verify_nonce( $post_array['_wpnonce'], 'reading-options' ) ) {
175
+ $old_homepage = ( 'posts' === get_site_option( 'show_on_front' ) ) ? __( 'latest posts', 'wp-security-audit-log' ) :__( 'static page', 'wp-security-audit-log' );
176
+ $new_homepage = ( 'posts' === $post_array['show_on_front'] ) ? __( 'latest posts', 'wp-security-audit-log' ) :__( 'static page', 'wp-security-audit-log' );
177
+ if ( $old_homepage != $new_homepage ) {
178
+ $this->plugin->alerts->Trigger(
179
+ 6035,
180
+ array(
181
+ 'old_homepage' => $old_homepage,
182
+ 'new_homepage' => $new_homepage,
183
+ )
184
+ );
185
+ }
186
+ }
187
+
188
+ if ( isset( $post_array['option_page'] ) && 'reading' === $post_array['option_page'] && isset( $post_array['page_on_front'] )
189
+ && wp_verify_nonce( $post_array['_wpnonce'], 'reading-options' ) ) {
190
+ $old_frontpage = get_the_title( get_site_option( 'page_on_front' ) ) ;
191
+ $new_frontpage = get_the_title( $post_array[ 'page_on_front' ] );
192
+ if ( $old_frontpage != $new_frontpage ) {
193
+ $this->plugin->alerts->Trigger(
194
+ 6036,
195
+ array(
196
+ 'old_page' => $old_frontpage,
197
+ 'new_page' => $new_frontpage,
198
+ )
199
+ );
200
+ }
201
+ }
202
+
203
+ if ( isset( $post_array['option_page'] ) && 'reading' === $post_array['option_page'] && isset( $post_array['page_for_posts'] )
204
+ && wp_verify_nonce( $post_array['_wpnonce'], 'reading-options' ) ) {
205
+ $old_postspage = get_the_title( get_site_option( 'page_for_posts' ) );
206
+ $new_postspage = get_the_title( $post_array[ 'page_for_posts' ] );
207
+ if ( $old_postspage != $new_postspage ) {
208
+ $this->plugin->alerts->Trigger(
209
+ 6037,
210
+ array(
211
+ 'old_page' => $old_postspage,
212
+ 'new_page' => $new_postspage,
213
+ )
214
+ );
215
+ }
216
+ }
217
+
218
+ // check timezone change
219
+ if ( $is_option_page && wp_verify_nonce( $post_array['_wpnonce'], 'general-options' ) && ! empty( $post_array['timezone_string'] ) ) {
220
+ $this->check_timezone_change( $post_array );
221
+ }
222
+
223
+ // check date format change
224
+ if ( $is_option_page && wp_verify_nonce( $post_array['_wpnonce'], 'general-options' ) && ! empty( $post_array['date_format'] ) ) {
225
+ $old_date_format = get_option( 'date_format' );
226
+ $new_date_format = ( '\c\u\s\t\o\m' === $post_array['date_format'] ) ? $post_array['date_format_custom'] : $post_array['date_format'];
227
+ if ( $old_date_format !== $new_date_format ) {
228
+ $this->plugin->alerts->Trigger(
229
+ 6041,
230
+ array(
231
+ 'old_date_format' => $old_date_format,
232
+ 'new_date_format' => $new_date_format,
233
+ 'CurrentUserID' => wp_get_current_user()->ID,
234
+ )
235
+ );
236
+ }
237
+ }
238
+
239
+ // check time format change
240
+ if ( $is_option_page && wp_verify_nonce( $post_array['_wpnonce'], 'general-options' ) && ! empty( $post_array['time_format'] ) ) {
241
+ $old_time_format = get_option( 'time_format' );
242
+ $new_time_format = ( '\c\u\s\t\o\m' === $post_array['time_format'] ) ? $post_array['time_format_custom'] : $post_array['time_format'];
243
+ if ( $old_time_format !== $new_time_format ) {
244
+ $this->plugin->alerts->Trigger(
245
+ 6042,
246
+ array(
247
+ 'old_time_format' => $old_time_format,
248
+ 'new_time_format' => $new_time_format,
249
+ 'CurrentUserID' => wp_get_current_user()->ID,
250
+ )
251
+ );
252
+ }
253
+ }
254
+
255
  // Registration Option.
256
  if ( $is_option_page && wp_verify_nonce( $post_array['_wpnonce'], 'general-options' ) && ( get_option( 'users_can_register' ) xor isset( $post_array['users_can_register'] ) ) ) {
257
  $old = get_option( 'users_can_register' ) ? 'enabled' : 'disabled';
348
  );
349
  }
350
  }
351
+
352
+ // Enable core updates.
353
+ if ( isset( $get_array['action'] ) && 'core-major-auto-updates-settings' === $get_array['action'] && isset( $get_array['value'] )
354
+ && wp_verify_nonce( $get_array['_wpnonce'], 'core-major-auto-updates-nonce' ) ) {
355
+ $status = ( 'enable' === $get_array['value'] ) ? __( 'automatically update to all new versions of WordPress', 'wp-security-audit-log' ) : __( 'automatically update maintenance and security releases only', 'wp-security-audit-log' );
356
+ $this->plugin->alerts->Trigger(
357
+ 6044,
358
+ array(
359
+ 'updates_status' => $status,
360
+ )
361
+ );
362
+ }
363
  }
364
 
365
  /**
511
  }
512
  return $whitelist;
513
  }
514
+
515
+ /**
516
+ * Checks if the timezone settings have changed. Logs an events if it did.
517
+ *
518
+ * @param array $post_array Sanitized input array.
519
+ *
520
+ * @since 4.2.0
521
+ */
522
+ private function check_timezone_change( $post_array ) {
523
+ $old_timezone_string = get_option( 'timezone_string' );
524
+ $new_timezone_string = isset( $post_array['timezone_string'] ) ? $post_array['timezone_string'] : '';
525
+
526
+ // backup of the labels as we might change them below when dealing with UTC offset definitions
527
+ $old_timezone_label = $old_timezone_string;
528
+ $new_timezone_label = $new_timezone_string;
529
+ if ( strlen( $old_timezone_string ) === 0 ) {
530
+ // the old timezone string can be empty if the time zone was configured using UTC offset selection
531
+ // rather than using a country/city selection
532
+ $old_timezone_string = $old_timezone_label = wp_timezone_string();
533
+ if ( 'UTC' === $old_timezone_string ) {
534
+ $old_timezone_string = '+00:00';
535
+ }
536
+
537
+ // adjusts label to show UTC offset consistently
538
+ $old_timezone_label = 'UTC' . $old_timezone_label;
539
+ }
540
+
541
+ // new timezone can be defined as UTC offset
542
+
543
+ // there is one UTC option that doesn't contain the offset, we need to tweak the value for further processing
544
+ if ( 'UTC' === $new_timezone_string ) {
545
+ $new_timezone_string = 'UTC+0';
546
+ }
547
+
548
+ if ( preg_match( '/UTC([+\-][0-9\.]+)/', $new_timezone_string, $matches ) ) {
549
+ $hours_decimal = floatval( $matches[1] );
550
+
551
+ // the new timezone is also set using UTC offset, it needs to be converted to the same format used
552
+ // by wp_timezone_string
553
+ $sign = $hours_decimal < 0 ? '-' : '+';
554
+ $abs_hours = abs( $hours_decimal );
555
+ $abs_mins = abs( $hours_decimal * 60 % 60 );
556
+ $new_timezone_string = sprintf( '%s%02d:%02d', $sign, floor( $abs_hours ), $abs_mins );
557
+
558
+ // adjusts label to show UTC offset consistently
559
+ $new_timezone_label = 'UTC' . $new_timezone_string;
560
+ }
561
+
562
+ if ( $old_timezone_string !== $new_timezone_string ) {
563
+ $this->plugin->alerts->Trigger(
564
+ 6040,
565
+ array(
566
+ 'old_timezone' => $old_timezone_label,
567
+ 'new_timezone' => $new_timezone_label,
568
+ 'CurrentUserID' => wp_get_current_user()->ID,
569
+ )
570
+ );
571
+ }
572
+ }
573
  }
classes/Sensors/UserProfile.php CHANGED
@@ -53,6 +53,99 @@ class WSAL_Sensors_UserProfile extends WSAL_AbstractSensor {
53
  add_action( 'revoke_super_admin', array( $this, 'get_super_admins' ) );
54
  add_action( 'granted_super_admin', array( $this, 'event_super_access_granted' ), 10, 1 );
55
  add_action( 'revoked_super_admin', array( $this, 'event_super_access_revoked' ), 10, 1 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  }
57
 
58
  /**
@@ -197,6 +290,7 @@ class WSAL_Sensors_UserProfile extends WSAL_AbstractSensor {
197
  if ( ! $user ) {
198
  return;
199
  }
 
200
  $current_user = wp_get_current_user();
201
  $updated = isset( $_GET['updated'] ); // @codingStandardsIgnoreLine
202
  if ( $current_user && ( $user->ID !== $current_user->ID ) && ! $updated ) {
53
  add_action( 'revoke_super_admin', array( $this, 'get_super_admins' ) );
54
  add_action( 'granted_super_admin', array( $this, 'event_super_access_granted' ), 10, 1 );
55
  add_action( 'revoked_super_admin', array( $this, 'event_super_access_revoked' ), 10, 1 );
56
+ add_action( 'update_user_meta', array( $this, 'event_application_password_added' ), 10, 4 );
57
+
58
+ }
59
+
60
+ public function event_application_password_added( $meta_id, $user_id, $meta_key, $_meta_value ) {
61
+
62
+ // Filter global arrays for security.
63
+ $post_array = filter_input_array( INPUT_POST );
64
+ $get_array = filter_input_array( INPUT_GET );
65
+ $server_array = filter_input_array( INPUT_SERVER );
66
+
67
+ if ( ! isset( $server_array['HTTP_REFERER'] ) || ! isset( $server_array['REQUEST_URI'] ) ) {
68
+ return;
69
+ }
70
+
71
+ // Check the page which is performing this change.
72
+ $referer_check = pathinfo( $server_array['HTTP_REFERER'] );
73
+ $referer_check = $referer_check['filename'];
74
+ $referer_check = ( strpos( $referer_check, '.' ) !== false ) ? strstr( $referer_check , '.', true ) : $referer_check;
75
+
76
+ $is_correct_referer_and_action = false;
77
+
78
+ if ( 'profile' === $referer_check || 'user-edit' === $referer_check ) {
79
+ $is_correct_referer_and_action = true;
80
+ }
81
+
82
+ // Ensure we are dealign with the correct request.
83
+ if ( $is_correct_referer_and_action && strpos( $server_array['REQUEST_URI'], '/wp/v2/users/'. $user_id .'/application-passwords' ) !== false ) {
84
+
85
+ $old_value = get_user_meta( $user_id, '_application_passwords', true );
86
+
87
+ $current_user = get_user_by( 'id', $user_id );
88
+ $current_userdata = get_userdata( $user_id );
89
+ $current_user_roles = implode( ', ', array_map( array( $this, 'filter_role_names' ), $current_userdata->roles ) );
90
+ $event_id = ( 'user-edit' === $referer_check ) ? 4026 : 4025;
91
+
92
+ // Note, firstname and lastname fields are purposefully spaces to avoid NULL.
93
+ if ( isset( $_POST['name'] ) ) {
94
+ $this->plugin->alerts->Trigger(
95
+ $event_id,
96
+ array(
97
+ 'roles' => $current_user_roles,
98
+ 'login' => $current_user->user_login,
99
+ 'firstname' => ( empty( $current_user->user_firstname ) ) ? ' ' : $current_user->user_firstname,
100
+ 'lastname' => ( empty( $current_user->user_lastname ) ) ? ' ' : $current_user->user_lastname,
101
+ 'CurrentUserID' => $current_user->ID,
102
+ 'friendly_name' => sanitize_text_field( $_POST['name'] ),
103
+ 'EventType' => 'added',
104
+ )
105
+ );
106
+ }
107
+
108
+ // Check if all have been removed.
109
+ elseif ( ! empty( $old_value ) && count( $old_value ) > 1 && empty( $_meta_value ) ) {
110
+ $event_id = ( 'user-edit' === $referer_check ) ? 4028 : 4027;
111
+
112
+ // Note, firstname and lastname fields are purposefully spaces to avoid NULL.
113
+ $this->plugin->alerts->Trigger(
114
+ $event_id ,
115
+ array(
116
+ 'roles' => $current_user_roles,
117
+ 'login' => $current_user->user_login,
118
+ 'firstname' => ( empty( $current_user->user_firstname ) ) ? ' ' : $current_user->user_firstname,
119
+ 'lastname' => ( empty( $current_user->user_lastname ) ) ? ' ' : $current_user->user_lastname,
120
+ 'CurrentUserID' => $current_user->ID,
121
+ 'EventType' => 'revoked',
122
+ )
123
+ );
124
+ }
125
+
126
+ // Check the item that was removed.
127
+ elseif ( count( $_meta_value ) < count( $old_value ) ) {
128
+ $revoked_pw = array_diff( array_map( 'serialize', $old_value ), array_map( 'serialize', $_meta_value ) );
129
+ $revoked_pw = array_values( array_map( 'unserialize', $revoked_pw ) );
130
+ $revoked_pw_name = $revoked_pw[0]['name'];
131
+ $event_id = ( 'user-edit' === $referer_check ) ? 4026 : 4025;
132
+
133
+ // Note, firstname and lastname fields are purposefully spaces to avoid NULL.
134
+ $this->plugin->alerts->Trigger(
135
+ $event_id ,
136
+ array(
137
+ 'roles' => $current_user_roles,
138
+ 'login' => $current_user->user_login,
139
+ 'firstname' => ( empty( $current_user->user_firstname ) ) ? ' ' : $current_user->user_firstname,
140
+ 'lastname' => ( empty( $current_user->user_lastname ) ) ? ' ' : $current_user->user_lastname,
141
+ 'CurrentUserID' => $current_user->ID,
142
+ 'friendly_name' => sanitize_text_field( $revoked_pw_name ),
143
+ 'EventType' => 'revoked',
144
+ )
145
+ );
146
+ }
147
+ }
148
+
149
  }
150
 
151
  /**
290
  if ( ! $user ) {
291
  return;
292
  }
293
+
294
  $current_user = wp_get_current_user();
295
  $updated = isset( $_GET['updated'] ); // @codingStandardsIgnoreLine
296
  if ( $current_user && ( $user->ID !== $current_user->ID ) && ! $updated ) {
classes/Settings.php CHANGED
@@ -33,11 +33,7 @@ class WSAL_Settings {
33
  */
34
  protected $_plugin;
35
 
36
- const OPT_DEV_DATA_INSPECTOR = 'd';
37
- const OPT_DEV_PHP_ERRORS = 'p';
38
- const OPT_DEV_REQUEST_LOG = 'r';
39
- const OPT_DEV_BACKTRACE_LOG = 'b';
40
- const ERROR_CODE_INVALID_IP = 901;
41
 
42
  /**
43
  * List of Site Admins.
@@ -46,13 +42,6 @@ class WSAL_Settings {
46
  */
47
  private $site_admins = array();
48
 
49
- /**
50
- * Dev Options.
51
- *
52
- * @var array
53
- */
54
- protected $_devoption = null;
55
-
56
  /**
57
  * Pruning Date.
58
  *
@@ -119,9 +108,17 @@ class WSAL_Settings {
119
  /**
120
  * Alerts enabled in Geek mode.
121
  *
122
- * @var array
123
  */
124
- public $geek_alerts = array( 1004, 1005, 1006, 1007, 2023, 2024, 2053, 2054, 2055, 2062, 2100, 2111, 2112, 2124, 2125, 2131, 2132, 2094, 2095, 2043, 2071, 2082, 2083, 2085, 2089, 4014, 4015, 4016, 5010, 5011, 5012, 5019, 5025, 5013, 5014, 5015, 5016, 5017, 5018, 5022, 5023, 5024, 6001, 6002, 6008, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 6018, 6024, 6025 );
 
 
 
 
 
 
 
 
125
 
126
  /**
127
  * Current screen object.
@@ -144,247 +141,22 @@ class WSAL_Settings {
144
  add_action( 'deactivated_plugin', array( $this, 'reset_stealth_mode' ), 10, 1 );
145
  }
146
 
147
- /**
148
- * Gets path to the default working directory relative to the root of WordPress site.
149
- *
150
- * Uses forward slashes and result has a slash at the end.
151
- *
152
- * @return string
153
- */
154
- public function get_default_working_dir_relative() {
155
- $upload_dir = wp_upload_dir(null, false);
156
- if (false === $upload_dir || ! array_key_exists('basedir', $upload_dir) ||
157
- ( array_key_exists('error', $upload_dir) && ! empty ( $upload_dir['error'] ) )
158
- ) {
159
- // fallback in case there is a problem with filesystem
160
- return WP_CONTENT_DIR . '/uploads/wp-activity-log/';
161
- }
162
-
163
- $result = $upload_dir['basedir'] . '/wp-activity-log/';
164
-
165
- // remove absolute path from the basedir to make it relative
166
- if ( defined( 'ABSPATH' ) ) {
167
- $result = preg_replace( '/^' . preg_quote( ABSPATH, '/' ) . '/', '', $result );
168
- // add leading slash if missing
169
- if ( '/' !== substr( $result, 0, 1) ) {
170
- $result = '/' . $result;
171
- }
172
- }
173
- return $result;
174
- }
175
-
176
- /**
177
- * Retrieves the working directory from the settings relative to the WordPress root folder.
178
- *
179
- * Used by two public helper functions that provide the working directory path and URL for the rest of the plugin:
180
- * - WSAL_Settings::get_working_dir_path
181
- * - WSAL_Settings::get_working_dir_url
182
- *
183
- * Result contains forward slashes suitable for use in URL. It also contains the trailing slash. Replace slashes
184
- * with system specific directory separators when used as filesystem path. This is already done in
185
- * WSAL_Settings::get_working_dir_path in case you need it.
186
- *
187
- * @param string $path Optional path relative to the working directory.
188
- * @param bool $ignore_site If true, there will be no sub-site specific subfolder in multisite context.
189
- * @return string
190
- * @since 4.1.3
191
- *
192
- * @see WSAL_Settings::get_working_dir_path()
193
- * @see WSAL_Settings::get_working_dir_url()
194
- * @see WSAL_Settings::get_working_dir_path_relative()
195
- */
196
- private function get_working_dir_path_relative( $path = '', $ignore_site = false ) {
197
- if ( ! \function_exists( 'get_home_path' ) ) {
198
- require_once ABSPATH . 'wp-admin/includes/file.php';
199
- }
200
-
201
- // get relative path from the plugin settings
202
- $result = trailingslashit( $this->_plugin->GetGlobalSetting( 'custom-logging-dir', $this->get_default_working_dir_relative() ) );
203
-
204
- // append site specific subfolder in multisite context
205
- if ( ! $ignore_site && $this->_plugin->IsMultisite() ) {
206
- $site_id = get_current_blog_id();
207
- if ($site_id > 0) {
208
- $result .= 'sites/' . $site_id . '/';
209
- }
210
- }
211
-
212
- // append optional path passed as a parameter
213
- if ( $path && is_string( $path ) ) {
214
- $result .= $path . '/';
215
- }
216
-
217
- // result should have the trailing slash at this point, no need to trailingslashit again
218
- return $result;
219
- }
220
-
221
- /**
222
- * Retrieves the working directory URL including a trailing slash.
223
- *
224
- * Uses as default:
225
- * {uploads folder}/wp-activity-log/
226
- *
227
- * @param string $path Optional path relative to the working directory.
228
-
229
- * @return string
230
- * @see WSAL_Settings::get_working_dir_path_relative()
231
- *
232
- * @since 4.1.0
233
- */
234
- public function get_working_dir_url( $path = '' ) {
235
- $result = $this->get_default_working_dir_relative( $path );
236
- return trailingslashit( \get_site_url() ) . $result;
237
- }
238
-
239
- /**
240
- * Retrieves the working directory from the settings. Returns a folder path
241
- * with a trailing slash. It also creates the folder unless the $skip_creation
242
- * parameter is set to true.
243
- *
244
- * Uses as default:
245
- * {uploads folder}/wp-activity-log/
246
- *
247
- * @param string $path Optional path relative to the working directory.
248
- * @param bool $skip_creation If true, the folder will not be created.
249
- * @param bool $ignore_site If true, there will be no sub-site specific subfolder in multisite context.
250
- *
251
- * @return string|WP_Error
252
- * @see WSAL_Settings::get_working_dir_path_relative()
253
- *
254
- * @since 4.1.0
255
- */
256
- public function get_working_dir_path( $path = '', $skip_creation = false, $ignore_site = false ) {
257
- $result = $this->get_working_dir_path_relative( $path, $ignore_site );
258
- $result = trailingslashit( ABSPATH ) . $result;
259
- $result = preg_replace('/\//', DIRECTORY_SEPARATOR, $result);
260
- if ( ! $skip_creation ) {
261
- if ( ! wp_mkdir_p( $result ) ) {
262
- return new WP_Error('mkdir_failed', sprintf(
263
- /* translators: %s: Directory path. */
264
- __( 'Unable to create directory %s. Is its parent directory writable by the server?' ),
265
- esc_html( $result )
266
- ));
267
- }
268
- }
269
-
270
- return $result;
271
- }
272
 
273
  /**
274
  * Enable Basic Mode.
275
  */
276
  public function set_basic_mode() {
277
- // Disable alerts of geek mode.
278
- $this->SetDisabledAlerts( $this->geek_alerts );
279
  }
280
 
281
  /**
282
  * Enable Geek Mode.
283
  */
284
  public function set_geek_mode() {
285
- $this->SetDisabledAlerts( array() ); // Disable alerts of geek mode.
286
- }
287
-
288
- /**
289
- * Return array of developer options to be enabled by default.
290
- *
291
- * @return array
292
- */
293
- public function GetDefaultDevOptions() {
294
- return array();
295
- }
296
-
297
- /**
298
- * Returns whether a developer option is enabled or not.
299
- *
300
- * @param string $option - See self::OPT_DEV_* constants.
301
- * @return boolean - If option is enabled or not.
302
- */
303
- public function IsDevOptionEnabled( $option ) {
304
- if ( is_null( $this->_devoption ) ) {
305
- $this->_devoption = $this->_plugin->GetGlobalSetting(
306
- 'dev-options', implode( ',', $this->GetDefaultDevOptions() )
307
- );
308
- $this->_devoption = explode( ',', $this->_devoption );
309
- }
310
- return in_array( $option, $this->_devoption );
311
- }
312
-
313
- /**
314
- * Check whether any developer option has been enabled or not.
315
- *
316
- * @return boolean
317
- */
318
- public function IsAnyDevOptionEnabled() {
319
- return ! empty( $this->_plugin->GetGlobalSetting( 'dev-options', [] ) );
320
- }
321
-
322
- /**
323
- * Sets whether a developer option is enabled or not.
324
- *
325
- * @param string $option - See self::OPT_DEV_* constants.
326
- * @param boolean $enabled - If option should be enabled or not.
327
- */
328
- public function SetDevOptionEnabled( $option, $enabled ) {
329
- // Make sure options have been loaded.
330
- $this->IsDevOptionEnabled( '' );
331
- // Remove option if it exists.
332
- while ( ( $p = array_search( $option, $this->_devoption ) ) !== false ) {
333
- unset( $this->_devoption[ $p ] );
334
- }
335
- // Add option if callee wants it enabled.
336
- if ( $enabled ) {
337
- $this->_devoption[] = $option;
338
- }
339
- // Commit option.
340
- $this->_plugin->SetGlobalSetting(
341
- 'dev-options', implode( ',', $this->_devoption )
342
- );
343
- }
344
-
345
- /**
346
- * Remove all enabled developer options.
347
- */
348
- public function ClearDevOptions() {
349
- $this->_devoption = array();
350
- $this->_plugin->SetGlobalSetting( 'dev-options', '' );
351
  }
352
 
353
- /**
354
- * Check whether to enable data inspector or not.
355
- *
356
- * @return boolean
357
- */
358
- public function IsDataInspectorEnabled() {
359
- return $this->IsDevOptionEnabled( self::OPT_DEV_DATA_INSPECTOR );
360
- }
361
-
362
- /**
363
- * Check whether to enable PHP error logging or not.
364
- *
365
- * @return boolean
366
- */
367
- public function IsPhpErrorLoggingEnabled() {
368
- return $this->IsDevOptionEnabled( self::OPT_DEV_PHP_ERRORS );
369
- }
370
-
371
- /**
372
- * Check whether to log requests to file or not.
373
- *
374
- * @return boolean
375
- */
376
- public function IsRequestLoggingEnabled() {
377
- return $this->IsDevOptionEnabled( self::OPT_DEV_REQUEST_LOG );
378
- }
379
-
380
- /**
381
- * Check whether to store debug backtrace for PHP alerts or not.
382
- *
383
- * @return boolean
384
- */
385
- public function IsBacktraceLoggingEnabled() {
386
- return $this->IsDevOptionEnabled( self::OPT_DEV_BACKTRACE_LOG );
387
- }
388
 
389
  /**
390
  * Check whether dashboard widgets are enabled or not.
@@ -810,69 +582,69 @@ class WSAL_Settings {
810
  $user = get_userdata( $user );
811
  }
812
 
813
- // by default the user has no privileges
814
  $result = false;
815
 
816
  $is_multisite = $this->_plugin->IsMultisite();
817
  switch ( $action ) {
818
  case 'view':
819
- if ( !$is_multisite ) {
820
- // non-multisite piggybacks on the plugin settings access
821
  switch ( $this->get_restrict_plugin_setting() ) {
822
  case 'only_admins':
823
- // allow access only if the user is and admin
824
- $result = in_array('administrator', $user->roles);
825
  break;
826
  case 'only_me':
827
- // allow access only if the user matches the only user allowed access
828
  $result = $user->ID == $this->get_only_me_user_id();
829
  break;
830
  default:
831
- // no other options to allow access here
832
  $result = false;
833
  }
834
  } else {
835
- // multisite MUST respect the log viewer restriction settings plus also additional users and roles
836
- // defined in the extra option
837
  switch ( $this->get_restrict_log_viewer() ) {
838
  case 'only_me':
839
- // allow access only if the user matches the only user allowed access
840
  $result = ( $user->ID == $this->get_only_me_user_id() );
841
  break;
842
  case 'only_superadmins':
843
- // allow access only for super admins
844
- if ( function_exists( 'is_super_admin' ) && is_super_admin($user->ID) ) {
845
  $result = true;
846
  }
847
  break;
848
  case 'only_admins':
849
- // allow access only for super admins and admins
850
- $result = in_array('administrator', $user->roles) || ( function_exists( 'is_super_admin' ) && is_super_admin($user->ID) );
851
  break;
852
  default:
853
- // fallback for any other cases would go here
854
  break;
855
  }
856
  }
857
 
858
- if (!$result) {
859
- // user is still not allowed to view the logs, let's check the additional users and roles
860
- // settings
861
  $extra_viewers = $this->GetAllowedPluginViewers();
862
- if (in_array($user->user_login, $extra_viewers )) {
863
  $result = true;
864
- } elseif (!empty(array_intersect($extra_viewers, $user->roles))) {
865
  $result = true;
866
  }
867
  }
868
  break;
869
  case 'edit':
870
  if ( $is_multisite ) {
871
- // no one has access to settings on sub site inside a network
872
  if ( wp_doing_ajax() ) {
873
- // AJAX calls are an exception
874
  $result = true;
875
- } else if ( ! is_network_admin() ) {
876
  $result = false;
877
  break;
878
  }
@@ -880,12 +652,12 @@ class WSAL_Settings {
880
 
881
  $restrict_plugin_setting = $this->get_restrict_plugin_setting();
882
  if ( 'only_me' === $restrict_plugin_setting ) {
883
- $result = ( $user->ID == $this->get_only_me_user_id());
884
  } elseif ( 'only_admins' === $restrict_plugin_setting ) {
885
- if ($is_multisite) {
886
- $result = ( function_exists( 'is_super_admin' ) && is_super_admin($user->ID) );
887
  } else {
888
- $result = in_array('administrator', $user->roles);
889
  }
890
  }
891
  break;
@@ -903,14 +675,14 @@ class WSAL_Settings {
903
  * @param string $action Action to check permissions for.
904
  * @return bool
905
  */
906
- return apply_filters('wsal_user_can', $result, $user, $action);
907
  }
908
 
909
  public function GetCurrentUserRoles( $base_roles = null ) {
910
  if ( null == $base_roles ) {
911
  $base_roles = wp_get_current_user()->roles;
912
  }
913
- if ( function_exists( 'is_super_admin' ) && is_super_admin() ) {
914
  $base_roles[] = 'superadmin';
915
  }
916
  return $base_roles;
@@ -970,7 +742,19 @@ class WSAL_Settings {
970
  public function GetClientIPs() {
971
  $ips = array();
972
 
973
- foreach ( array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ) as $key ) {
 
 
 
 
 
 
 
 
 
 
 
 
974
  if ( isset( $_SERVER[ $key ] ) ) {
975
  $ips[ $key ] = array();
976
 
@@ -1129,61 +913,92 @@ class WSAL_Settings {
1129
  }
1130
 
1131
  /**
1132
- * Datetime used in the Alerts.
 
 
 
 
1133
  *
1134
  * @param boolean $line_break - True if line break otherwise false.
 
 
1135
  */
1136
- public function GetDatetimeFormat( $line_break = true ) {
1137
- if ( $line_break ) {
1138
- $date_time_format = $this->GetDateFormat() . '<\b\r>' . $this->GetTimeFormat();
1139
- } else {
1140
- $date_time_format = $this->GetDateFormat() . ' ' . $this->GetTimeFormat();
1141
- }
1142
 
1143
- $wp_time_format = get_option( 'time_format' ); // WP time format.
 
 
 
 
 
 
 
 
 
 
1144
 
1145
  // Check if the time format does not have seconds.
1146
- if ( stripos( $wp_time_format, 's' ) === false ) {
1147
- if ( stripos( $wp_time_format, '.v' ) !== false ) {
1148
- $date_time_format = str_replace( '.v', '', $date_time_format );
1149
  }
1150
- $date_time_format .= ':s'; // Add seconds to time format.
1151
- $date_time_format .= '.$$$'; // Add milliseconds to time format.
1152
  } else {
1153
  // Check if the time format does have milliseconds.
1154
- if ( stripos( $wp_time_format, '.v' ) !== false ) {
1155
- $date_time_format = str_replace( '.v', '.$$$', $date_time_format );
1156
  } else {
1157
- $date_time_format .= '.$$$';
1158
  }
1159
  }
1160
 
1161
- if ( stripos( $wp_time_format, 'A' ) !== false ) {
1162
- $date_time_format .= '&\n\b\s\p;A';
1163
  }
1164
- return $date_time_format;
 
 
 
1165
  }
1166
 
1167
  /**
1168
- * Date Format from WordPress General Settings.
 
 
 
 
 
 
 
1169
  */
1170
- public function GetDateFormat() {
1171
- $wp_date_format = get_option( 'date_format' );
1172
- $search = array( 'F', 'M', 'n', 'j', ' ', '/', 'y', 'S', ',', 'l', 'D' );
1173
- $replace = array( 'm', 'm', 'm', 'd', '-', '-', 'Y', '', '', '', '' );
1174
- $date_format = str_replace( $search, $replace, $wp_date_format );
1175
- return $date_format;
1176
  }
1177
 
1178
  /**
1179
- * Time Format from WordPress General Settings.
 
 
 
 
 
 
 
1180
  */
1181
- public function GetTimeFormat() {
1182
- $wp_time_format = get_option( 'time_format' );
1183
- $search = array( 'a', 'A', 'T', ' ' );
1184
- $replace = array( '', '', '', '' );
1185
- $time_format = str_replace( $search, $replace, $wp_time_format );
1186
- return $time_format;
 
 
1187
  }
1188
 
1189
  /**
@@ -1420,87 +1235,13 @@ class WSAL_Settings {
1420
  }
1421
  }
1422
 
1423
- /**
1424
- * Generate index.php file for each sub-directory present in the plugin working directory.
1425
- *
1426
- * @since 3.1.2
1427
- */
1428
- public function generate_index_files() {
1429
- // get plugin working directory.
1430
- $wsal_working_dir = $this->get_working_dir_path();
1431
-
1432
- // If the directory exists then generate index.php file for every sub-directory.
1433
- if ( ! is_wp_error( $wsal_working_dir ) && ! empty( $wsal_working_dir ) && is_dir( $wsal_working_dir ) ) {
1434
- // Generate index.php for the main directory.
1435
- if ( ! file_exists( $wsal_working_dir . DIRECTORY_SEPARATOR . 'index.php' ) ) {
1436
- // Generate index.php file.
1437
- $this->create_index_file( $wsal_working_dir );
1438
- }
1439
-
1440
- // Generate .htaccess for the main directory.
1441
- if ( ! file_exists( $wsal_working_dir . DIRECTORY_SEPARATOR . '.htaccess' ) ) {
1442
- // Generate .htaccess file.
1443
- $this->create_htaccess_file( $wsal_working_dir );
1444
- }
1445
-
1446
- // Fetch all files in the uploads directory.
1447
- $sub_directories = glob( $wsal_working_dir . '*' );
1448
- foreach ( $sub_directories as $sub_dir ) {
1449
- // index.php file.
1450
- if ( is_dir( $sub_dir ) && ! file_exists( $sub_dir . DIRECTORY_SEPARATOR . 'index.php' ) ) {
1451
- // Generate index.php file.
1452
- $this->create_index_file( $sub_dir . '/' );
1453
- }
1454
-
1455
- // .htaccess file.
1456
- if ( is_dir( $sub_dir ) && ! file_exists( $sub_dir . DIRECTORY_SEPARATOR . '.htaccess' ) ) {
1457
- // Generate .htaccess file.
1458
- $this->create_htaccess_file( $sub_dir . DIRECTORY_SEPARATOR );
1459
- }
1460
- }
1461
- }
1462
- }
1463
-
1464
- /**
1465
- * Create an index.php file, if none exists, in order to
1466
- * avoid directory listing in the specified directory.
1467
- *
1468
- * @param string $dir_path - Directory Path.
1469
- * @return bool
1470
- * @since 3.1.2
1471
- */
1472
- final public function create_index_file( $dir_path ) {
1473
- // Check if index.php file exists.
1474
- $dir_path = trailingslashit( $dir_path );
1475
- $result = 0;
1476
- if ( ! is_file( $dir_path . 'index.php' ) ) {
1477
- $result = @file_put_contents( $dir_path . 'index.php', '<?php // Silence is golden' );
1478
- }
1479
- return ( $result > 0 );
1480
- }
1481
-
1482
- /**
1483
- * Create an .htaccess file, if none exists, in order to
1484
- * block access to directory listing in the specified directory.
1485
- *
1486
- * @param string $dir_path - Directory Path.
1487
- * @return bool
1488
- * @since 3.1.2
1489
- */
1490
- final public function create_htaccess_file( $dir_path ) {
1491
- // Check if .htaccess file exists.
1492
- $dir_path = trailingslashit( $dir_path );
1493
- $result = 0;
1494
- if ( ! is_file( $dir_path . '.htaccess' ) ) {
1495
- $result = @file_put_contents( $dir_path . '.htaccess', 'Deny from all' );
1496
- }
1497
- return ( $result > 0 );
1498
- }
1499
 
1500
  /**
1501
  * Method: Get Token Type.
1502
  *
1503
  * @param string $token - Token type.
 
 
1504
  * @since 3.2.3
1505
  */
1506
  public function get_token_type( $token ) {
@@ -1605,11 +1346,11 @@ class WSAL_Settings {
1605
  }
1606
 
1607
  $this->SetIncognito( true ); // Incognito mode to hide WSAL on plugins page.
1608
- $this->set_restrict_log_viewer('only_me');
1609
- $this->set_restrict_plugin_setting('only_me');
1610
- // current user with fallback to default admin (in case this is triggered using WP CLI or something similar)
1611
  $only_me_user_id = is_user_logged_in() ? get_current_user_id() : 1;
1612
- $this->set_only_me_user_id($only_me_user_id);
1613
  $this->_plugin->SetGlobalBooleanSetting( 'mwp-child-stealth-mode', true ); // Save stealth mode option.
1614
  }
1615
  }
@@ -1621,9 +1362,9 @@ class WSAL_Settings {
1621
  */
1622
  public function deactivate_mainwp_child_stealth_mode() {
1623
  $this->SetIncognito( false ); // Disable incognito mode to hide WSAL on plugins page.
1624
- $this->set_restrict_plugin_setting('only_admins');
1625
- $this->set_restrict_log_viewer('only_admins');
1626
- $this->set_admin_blocking_plugin_support(false);
1627
  $this->_plugin->SetGlobalBooleanSetting( 'mwp-child-stealth-mode', false ); // Disable stealth mode option.
1628
  }
1629
 
@@ -1654,36 +1395,68 @@ class WSAL_Settings {
1654
  /**
1655
  * Method: Meta data formatter.
1656
  *
1657
- * @param string $name - Name of the data.
1658
- * @param mixed $value - Value of the data.
1659
  * @param integer $occ_id - Event occurrence ID.
1660
- * @param mixed $highlight - Highlight format.
 
1661
  *
1662
  * @return string
1663
  * @throws Freemius_Exception
1664
  */
1665
- public function meta_formatter( $name, $value, $occ_id, $highlight ) {
1666
- if ( $highlight && 'daily-report' === $highlight ) {
1667
- $highlight_start_tag = '<span style="color: #149247;">';
1668
- $highlight_end_tag = '</span>';
1669
- } else {
1670
- $highlight_start_tag = '<strong>';
1671
- $highlight_end_tag = '</strong>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1672
  }
1673
 
 
1674
  switch ( true ) {
1675
  case '%Message%' == $name:
1676
  return esc_html( $value );
1677
- case '%PromoMessage%' == $name:
1678
- return '<p class="promo-alert">' . $value . '</p>';
1679
- case '%PromoLink%' == $name:
1680
  case '%CommentLink%' == $name:
1681
  case '%CommentMsg%' == $name:
1682
- return $value;
 
 
 
 
 
 
 
 
 
1683
 
1684
  case '%MetaLink%' == $name:
1685
  if ( ! empty( $value ) ) {
1686
- return "<a href=\"#\" data-disable-custom-nonce='" . wp_create_nonce( 'disable-custom-nonce' . $value ) . "' onclick=\"return WsalDisableCustom(this, '" . $value . "');\"> Exclude Custom Field from the Monitoring</a>";
 
 
 
 
 
 
1687
  } else {
1688
  return '';
1689
  }
@@ -1691,27 +1464,93 @@ class WSAL_Settings {
1691
  case '%RevisionLink%' === $name:
1692
  $check_value = (string) $value;
1693
  if ( 'NULL' !== $check_value ) {
1694
- return '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View the content changes', 'wp-security-audit-log' ) . '</a>';
 
 
 
 
 
 
 
 
 
 
 
 
 
1695
  }
1696
  return false;
1697
 
1698
- case in_array( $name, array( '%EditorLinkPost%', '%EditorLinkPage%' ) ):
1699
- return '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View post in the editor', 'wp-security-audit-log' ) . '</a>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1700
 
1701
  case '%EditorLinkOrder%' == $name:
1702
- return '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View Order', 'wp-security-audit-log' ) . '</a>';
 
 
 
 
 
 
 
 
 
 
1703
 
1704
  case '%CategoryLink%' == $name:
1705
  case '%cat_link%' == $name:
1706
  case '%ProductCatLink%' == $name:
1707
- return '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View category', 'wp-security-audit-log' ) . '</a>';
 
 
 
 
 
 
 
 
 
 
1708
 
1709
  case '%TagLink%' == $name:
1710
- return '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View tag', 'wp-security-audit-log' ) . '</a>';
 
 
 
 
 
 
 
 
 
 
 
 
 
1711
 
1712
  case '%EditUserLink%' === $name:
1713
  if ( 'NULL' !== $value ) {
1714
- return '<a href="' . $value . '" target="_blank">' . __( 'User profile page', 'wp-security-audit-log' ) . '</a>';
1715
  }
1716
  return '';
1717
 
@@ -1741,7 +1580,56 @@ class WSAL_Settings {
1741
  $return_value = '';
1742
  if ( null !== $occ_post && 'publish' === $occ_post->post_status ) {
1743
  $post_permalink = get_permalink( $occ_post->ID );
1744
- $return_value = '<br>URL: <a href="' . esc_url( $post_permalink ) . '" title="' . esc_attr( $occ_post->post_title ) . '" target="_blank">' . esc_html( $post_permalink ) . '</a>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1745
  }
1746
  return $return_value;
1747
 
@@ -1757,15 +1645,31 @@ class WSAL_Settings {
1757
  }
1758
 
1759
  case '%LogFileText%' === $name: // Failed login file text.
1760
- return '<a href="javascript:;" onclick="download_failed_login_log( this )" data-download-nonce="' . esc_attr( wp_create_nonce( 'wsal-download-failed-logins' ) ) . '" title="' . esc_html__( 'Download the log file.', 'wp-security-audit-log' ) . '">' . esc_html__( 'Download the log file.', 'wp-security-audit-log' ) . '</a>';
 
 
 
1761
 
1762
  case strncmp( $value, 'http://', 7 ) === 0:
1763
  case strncmp( $value, 'https://', 8 ) === 0:
1764
- $updated_line = apply_filters( 'wsal_link_filter', $value, $name );
1765
- if ( $updated_line !== $value ) {
1766
- return $updated_line;
1767
- } else {
1768
- return '<a href="' . esc_html( $value ) . '" title="' . esc_html( $value ) . '" target="_blank">' . esc_html( $value ) . '</a>';
 
 
 
 
 
 
 
 
 
 
 
 
 
1769
  }
1770
 
1771
  case in_array( $name, array( '%PostStatus%', '%ProductStatus%' ), true ):
@@ -1779,7 +1683,11 @@ class WSAL_Settings {
1779
  if ( $this->_plugin->IsMultisite() && $value ) {
1780
  $site_info = get_blog_details( $value, true );
1781
  if ( $site_info ) {
1782
- return ' on site <a href="' . esc_url( $site_info->siteurl ) . '">' . esc_html( $site_info->blogname ) . '</a>';
 
 
 
 
1783
  }
1784
  return;
1785
  }
@@ -1795,6 +1703,9 @@ class WSAL_Settings {
1795
  if ( 'NULL' === $value ) {
1796
  return false;
1797
  }
 
 
 
1798
  /* translators: Mailto link for support. */
1799
  return ' with errors. ' . sprintf( __( 'Contact us on %s for assistance', 'wp-security-audit-log' ), '<a href="mailto:support@wpsecurityauditlog.com" target="_blank">support@wpsecurityauditlog.com</a>' );
1800
 
@@ -1808,21 +1719,65 @@ class WSAL_Settings {
1808
  'tab' => 'file-changes',
1809
  );
1810
  $file_settings = add_query_arg( $file_settings_args, admin_url( 'admin.php' ) );
1811
- return '<a href="' . esc_url( $file_settings ) . '">' . esc_html__( 'Increase maximum file size limit', 'wp-security-audit-log' ) . '</a>';
 
 
 
 
 
 
 
 
 
 
1812
 
1813
  case '%ContactSupport%' === $name:
1814
- return '<a href="https://wpactivitylog.com/contact/" target="_blank">' . esc_html__( 'Contact Support', 'wp-security-audit-log' ) . '</a>';
 
 
 
 
 
 
 
 
 
 
1815
 
1816
  case '%LineBreak%' === $name:
 
 
 
 
 
 
1817
  return '<br>';
1818
 
1819
  case '%PluginFile%' === $name:
1820
  return $highlight_start_tag . dirname( $value ) . $highlight_end_tag;
1821
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1822
  default:
1823
  // if we didn't get a match already try get one via a filter.
1824
  $filtered_formatted_value = apply_filters( 'wsal_meta_formatter_custom_formatter', $value, $name );
1825
- return ( $value !== $filtered_formatted_value ) ? $filtered_formatted_value : $highlight_start_tag . esc_html( $value ) . $highlight_end_tag;
1826
  }
1827
  }
1828
 
@@ -1921,144 +1876,18 @@ class WSAL_Settings {
1921
  /**
1922
  * Method: Meta data formatter.
1923
  *
1924
- * @since 3.3
 
 
 
1925
  *
1926
- * @param string $name - Name of the data.
1927
- * @param mixed $value - Value of the data.
1928
- * @param integer $occ_id - Event occurrence ID.
1929
- * @param mixed $highlight - Highlight format.
1930
  * @return string
 
 
 
1931
  */
1932
- public function slack_meta_formatter( $name, $value, $occ_id, $highlight ) {
1933
- switch ( true ) {
1934
- case '%Message%' === $name:
1935
- return esc_html( $value );
1936
-
1937
- case '%PromoLink%' === $name:
1938
- case '%CommentLink%' === $name:
1939
- case '%CommentMsg%' === $name:
1940
- return $value;
1941
-
1942
- case '%MetaLink%' === $name:
1943
- return '';
1944
-
1945
- case '%RevisionLink%' === $name:
1946
- $check_value = (string) $value;
1947
- if ( 'NULL' !== $check_value ) {
1948
- return ' Click <' . esc_url( $value ) . '|here> to see the content changes.';
1949
- } else {
1950
- return false;
1951
- }
1952
-
1953
- case '%EditorLinkPost%' === $name:
1954
- return ' View the <' . esc_url( $value ) . '|post>';
1955
-
1956
- case '%EditorLinkOrder%' === $name:
1957
- return ' <' . esc_url( $value ) . '|View Order>';
1958
-
1959
- case '%CategoryLink%' === $name:
1960
- case '%cat_link%' === $name:
1961
- case '%ProductCatLink%' == $name:
1962
- return ' View the <' . esc_url( $value ) . '|category>';
1963
-
1964
- case '%TagLink%' === $name:
1965
- return ' View the <' . esc_url( $value ) . '|tag>';
1966
-
1967
- case '%EditorLinkForum%' === $name:
1968
- return ' View the <' . esc_url( $value ) . '|forum>';
1969
-
1970
- case '%EditorLinkTopic%' === $name:
1971
- return ' View the <' . esc_url( $value ) . '|topic>';
1972
-
1973
- case in_array( $name, array( '%MetaValue%', '%MetaValueOld%', '%MetaValueNew%' ), true ):
1974
- return '*' . ( strlen( $value ) > 50 ? ( esc_html( substr( $value, 0, 50 ) ) . '...' ) : esc_html( $value ) ) . '*';
1975
-
1976
- case '%ClientIP%' === $name:
1977
- if ( is_string( $value ) ) {
1978
- return '*' . str_replace( array( '"', '[', ']' ), '', $value ) . '*';
1979
- } else {
1980
- return '_unknown_';
1981
- }
1982
-
1983
- case '%LinkFile%' === $name:
1984
- if ( 'NULL' != $value ) {
1985
- return '';
1986
- } else {
1987
- return 'Click <' . esc_url( add_query_arg( 'page', 'wsal-togglealerts', admin_url( 'admin.php' ) ) ) . '|here> to log such requests to file';
1988
- }
1989
-
1990
- case '%URL%' === $name:
1991
- return '.';
1992
-
1993
- case '%LogFileLink%' === $name: // Failed login file link.
1994
- return '';
1995
-
1996
- case '%Attempts%' === $name: // Failed login attempts.
1997
- $check_value = (int) $value;
1998
- if ( 0 === $check_value ) {
1999
- return '';
2000
- } else {
2001
- return $value;
2002
- }
2003
-
2004
- case '%LogFileText%' === $name: // Failed login file text.
2005
- return '';
2006
-
2007
- case strncmp( $value, 'http://', 7 ) === 0:
2008
- case strncmp( $value, 'https://', 8 ) === 0:
2009
- return '<' . esc_html( $value ) . '|' . esc_html( $value ) . '>';
2010
-
2011
- case in_array( $name, array( '%PostStatus%', '%ProductStatus%' ), true ):
2012
- if ( ! empty( $value ) && 'publish' === $value ) {
2013
- return '*' . esc_html__( 'published', 'wp-security-audit-log' ) . '*';
2014
- } else {
2015
- return '*' . esc_html( $value ) . '*';
2016
- }
2017
-
2018
- case '%multisite_text%' === $name:
2019
- if ( $this->_plugin->IsMultisite() && $value ) {
2020
- $site_info = get_blog_details( $value, true );
2021
- if ( $site_info ) {
2022
- return ' on site <' . esc_url( $site_info->siteurl ) . '|' . esc_html( $site_info->blogname ) . '>';
2023
- }
2024
- return;
2025
- }
2026
- return;
2027
-
2028
- case '%ReportText%' === $name:
2029
- return;
2030
-
2031
- case '%ChangeText%' === $name:
2032
- return;
2033
-
2034
- case '%ScanError%' === $name:
2035
- if ( 'NULL' === $value ) {
2036
- return false;
2037
- }
2038
- /* translators: Mailto link for support. */
2039
- return ' with errors. ' . sprintf( __( 'Contact us on %s for assistance', 'wp-security-audit-log' ), '<mailto:support@wpsecurityauditlog.com|support@wpsecurityauditlog.com>' );
2040
-
2041
- case '%TableNames%' === $name:
2042
- $value = str_replace( ',', ', ', $value );
2043
- return '*' . esc_html( $value ) . '*';
2044
-
2045
- case '%FileSettings%' === $name:
2046
- $file_settings_args = array(
2047
- 'page' => 'wsal-settings',
2048
- 'tab' => 'file-changes',
2049
- );
2050
- $file_settings = add_query_arg( $file_settings_args, admin_url( 'admin.php' ) );
2051
- return '<' . esc_url( $file_settings ) . '|' . esc_html__( 'plugin settings', 'wp-security-audit-log' ) . '>';
2052
-
2053
- case '%ContactSupport%' === $name:
2054
- return '<https://wpactivitylog.com/contact|' . esc_html__( 'contact our support', 'wp-security-audit-log' ) . '>';
2055
-
2056
- case '%LineBreak%' === $name:
2057
- return;
2058
-
2059
- default:
2060
- return '*' . esc_html( $value ) . '*';
2061
- }
2062
  }
2063
 
2064
  /**
@@ -2107,8 +1936,9 @@ class WSAL_Settings {
2107
  * @return array - WSAL Options array.
2108
  */
2109
  public function get_plugin_settings() {
2110
- // @todo get a list of all plugin settings
2111
- return [];
 
2112
  }
2113
 
2114
  /**
@@ -2319,7 +2149,7 @@ class WSAL_Settings {
2319
  * @return bool
2320
  */
2321
  public static function set_frontend_events( $value = array() ) {
2322
- return \WSAL\Helpers\Options::set_option_value_ignore_prefix( self::FRONT_END_EVENTS_OPTION_NAME, $value);
2323
  }
2324
 
2325
  /**
@@ -2342,14 +2172,14 @@ class WSAL_Settings {
2342
  return $this->_plugin->GetGlobalSetting( 'only-me-user-id' );
2343
  }
2344
 
2345
- /**
2346
- * Save admin blocking plugin support enabled.
2347
- *
2348
- * @param bool $enabled
2349
- */
2350
- public function set_admin_blocking_plugin_support( $enabled ) {
2351
- $this->_plugin->SetGlobalBooleanSetting( 'admin-blocking-plugins-support', $enabled );
2352
- }
2353
 
2354
  /**
2355
  * Check if admin blocking plugin support is enabled.
@@ -2361,19 +2191,19 @@ class WSAL_Settings {
2361
  * @return bool
2362
  */
2363
  public function get_admin_blocking_plugin_support() {
2364
- return $this->_plugin->GetGlobalBooleanSetting( 'admin-blocking-plugins-support', false );
2365
  }
2366
 
2367
- public function get_mainwp_enforced_settings( ) {
2368
- return $this->_plugin->GetGlobalSetting( 'mainwp_enforced_settings', [] );
2369
- }
2370
 
2371
  public function set_mainwp_enforced_settings( $settings ) {
2372
- $this->_plugin->SetGlobalSetting( 'mainwp_enforced_settings', $settings );
2373
- }
2374
 
2375
- public function delete_mainwp_enforced_settings( ) {
2376
- $this->_plugin->DeleteSettingByName( WpSecurityAuditLog::OPTIONS_PREFIX . 'mainwp_enforced_settings' );
2377
- }
2378
 
2379
  }
33
  */
34
  protected $_plugin;
35
 
36
+ const ERROR_CODE_INVALID_IP = 901;
 
 
 
 
37
 
38
  /**
39
  * List of Site Admins.
42
  */
43
  private $site_admins = array();
44
 
 
 
 
 
 
 
 
45
  /**
46
  * Pruning Date.
47
  *
108
  /**
109
  * Alerts enabled in Geek mode.
110
  *
111
+ * @var int[]
112
  */
113
+ public $geek_alerts = array( 1004, 1005, 1006, 1007, 2023, 2024, 2053, 2054, 2055, 2062, 2100, 2111, 2112, 2124, 2125, 2131, 2132, 2094, 2095, 2043, 2071, 2082, 2083, 2085, 2089, 4014, 4015, 4016, 5019, 5025, 6001, 6002, 6008, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 6018, 6024, 6025 );
114
+
115
+ /**
116
+ * Alerts always disabled by default - in basic mode and also in geek mode.
117
+ *
118
+ * @var int[]
119
+ * @since 4.2.0
120
+ */
121
+ public $always_disabled_alerts = array( 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5022, 5023, 5024 );
122
 
123
  /**
124
  * Current screen object.
141
  add_action( 'deactivated_plugin', array( $this, 'reset_stealth_mode' ), 10, 1 );
142
  }
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
 
145
  /**
146
  * Enable Basic Mode.
147
  */
148
  public function set_basic_mode() {
149
+ // Disable alerts of geek mode and alerts to be always disabled.
150
+ $this->SetDisabledAlerts( array_merge( $this->geek_alerts, $this->always_disabled_alerts ) );
151
  }
152
 
153
  /**
154
  * Enable Geek Mode.
155
  */
156
  public function set_geek_mode() {
157
+ $this->SetDisabledAlerts( $this->always_disabled_alerts ); // Disable alerts to be always disabled.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
 
161
  /**
162
  * Check whether dashboard widgets are enabled or not.
582
  $user = get_userdata( $user );
583
  }
584
 
585
+ // by default the user has no privileges
586
  $result = false;
587
 
588
  $is_multisite = $this->_plugin->IsMultisite();
589
  switch ( $action ) {
590
  case 'view':
591
+ if ( ! $is_multisite ) {
592
+ // non-multisite piggybacks on the plugin settings access
593
  switch ( $this->get_restrict_plugin_setting() ) {
594
  case 'only_admins':
595
+ // allow access only if the user is and admin
596
+ $result = in_array( 'administrator', $user->roles );
597
  break;
598
  case 'only_me':
599
+ // allow access only if the user matches the only user allowed access
600
  $result = $user->ID == $this->get_only_me_user_id();
601
  break;
602
  default:
603
+ // no other options to allow access here
604
  $result = false;
605
  }
606
  } else {
607
+ // multisite MUST respect the log viewer restriction settings plus also additional users and roles
608
+ // defined in the extra option
609
  switch ( $this->get_restrict_log_viewer() ) {
610
  case 'only_me':
611
+ // allow access only if the user matches the only user allowed access
612
  $result = ( $user->ID == $this->get_only_me_user_id() );
613
  break;
614
  case 'only_superadmins':
615
+ // allow access only for super admins
616
+ if ( function_exists( 'is_super_admin' ) && is_super_admin( $user->ID ) ) {
617
  $result = true;
618
  }
619
  break;
620
  case 'only_admins':
621
+ // allow access only for super admins and admins
622
+ $result = in_array( 'administrator', $user->roles ) || ( function_exists( 'is_super_admin' ) && is_super_admin( $user->ID ) );
623
  break;
624
  default:
625
+ // fallback for any other cases would go here
626
  break;
627
  }
628
  }
629
 
630
+ if ( ! $result ) {
631
+ // user is still not allowed to view the logs, let's check the additional users and roles
632
+ // settings
633
  $extra_viewers = $this->GetAllowedPluginViewers();
634
+ if ( in_array( $user->user_login, $extra_viewers ) ) {
635
  $result = true;
636
+ } elseif ( ! empty( array_intersect( $extra_viewers, $user->roles ) ) ) {
637
  $result = true;
638
  }
639
  }
640
  break;
641
  case 'edit':
642
  if ( $is_multisite ) {
643
+ // no one has access to settings on sub site inside a network
644
  if ( wp_doing_ajax() ) {
645
+ // AJAX calls are an exception
646
  $result = true;
647
+ } elseif ( ! is_network_admin() ) {
648
  $result = false;
649
  break;
650
  }
652
 
653
  $restrict_plugin_setting = $this->get_restrict_plugin_setting();
654
  if ( 'only_me' === $restrict_plugin_setting ) {
655
+ $result = ( $user->ID == $this->get_only_me_user_id() );
656
  } elseif ( 'only_admins' === $restrict_plugin_setting ) {
657
+ if ( $is_multisite ) {
658
+ $result = ( function_exists( 'is_super_admin' ) && is_super_admin( $user->ID ) );
659
  } else {
660
+ $result = in_array( 'administrator', $user->roles );
661
  }
662
  }
663
  break;
675
  * @param string $action Action to check permissions for.
676
  * @return bool
677
  */
678
+ return apply_filters( 'wsal_user_can', $result, $user, $action );
679
  }
680
 
681
  public function GetCurrentUserRoles( $base_roles = null ) {
682
  if ( null == $base_roles ) {
683
  $base_roles = wp_get_current_user()->roles;
684
  }
685
+ if ( is_multisite() && function_exists( 'is_super_admin' ) && is_super_admin() ) {
686
  $base_roles[] = 'superadmin';
687
  }
688
  return $base_roles;
742
  public function GetClientIPs() {
743
  $ips = array();
744
 
745
+ $proxy_headers = array(
746
+ 'HTTP_CLIENT_IP',
747
+ 'HTTP_X_FORWARDED_FOR',
748
+ 'HTTP_X_FORWARDED',
749
+ 'HTTP_X_CLUSTER_CLIENT_IP',
750
+ 'HTTP_FORWARDED_FOR',
751
+ 'HTTP_FORWARDED',
752
+ 'REMOTE_ADDR',
753
+ // Cloudflare
754
+ 'HTTP_CF-Connecting-IP',
755
+ 'HTTP_TRUE_CLIENT_IP'
756
+ );
757
+ foreach ( $proxy_headers as $key ) {
758
  if ( isset( $_SERVER[ $key ] ) ) {
759
  $ips[ $key ] = array();
760
 
913
  }
914
 
915
  /**
916
+ * Determines datetime format to be displayed in any UI in the plugin (logs in administration, emails, reports,
917
+ * notifications etc.).
918
+ *
919
+ * Note: Format returned by this function is not compatible with JavaScript date and time picker widgets. Use
920
+ * functions GetTimeFormat and GetDateFormat for those.
921
  *
922
  * @param boolean $line_break - True if line break otherwise false.
923
+ *
924
+ * @return string
925
  */
926
+ public function GetDatetimeFormat( $line_break = true, $use_nb_space_for_am_pm = true ) {
927
+ $result = $this->GetDateFormat();
 
 
 
 
928
 
929
+ $result .= $line_break ? '<\b\r>' : ' ';
930
+
931
+ $time_format = $this->GetTimeFormat();
932
+ $has_am_pm = false;
933
+ $am_pm_fraction = false;
934
+ $am_pm_pattern = '/(?i)(\s+A)/';
935
+ if ( preg_match( $am_pm_pattern, $time_format, $am_pm_matches ) ) {
936
+ $has_am_pm = true;
937
+ $am_pm_fraction = $am_pm_matches[0];
938
+ $time_format = preg_replace( $am_pm_pattern, '', $time_format );
939
+ }
940
 
941
  // Check if the time format does not have seconds.
942
+ if ( stripos( $time_format, 's' ) === false ) {
943
+ if ( stripos( $time_format, '.v' ) !== false ) {
944
+ $time_format = str_replace( '.v', '', $result );
945
  }
946
+ $time_format .= ':s'; // Add seconds to time format.
947
+ $time_format .= '.$$$'; // Add milliseconds to time format.
948
  } else {
949
  // Check if the time format does have milliseconds.
950
+ if ( stripos( $time_format, '.v' ) !== false ) {
951
+ $time_format = str_replace( '.v', '.$$$', $result );
952
  } else {
953
+ $time_format .= '.$$$';
954
  }
955
  }
956
 
957
+ if ( $has_am_pm ) {
958
+ $time_format .= preg_replace( '/\s/', $use_nb_space_for_am_pm ? '&\n\b\s\p;' : ' ', $am_pm_fraction );
959
  }
960
+
961
+ $result .= $time_format;
962
+
963
+ return $result;
964
  }
965
 
966
  /**
967
+ * Date format based on WordPress date settings. It can be optionally sanitized to get format compatible with
968
+ * JavaScript date and time picker widgets.
969
+ *
970
+ * Note: This function must not be used to display actual date and time values anywhere. For that use function GetDateTimeFormat.
971
+ *
972
+ * @param bool $sanitized If true, the format is sanitized for use with JavaScript date and time picker widgets.
973
+ *
974
+ * @return string
975
  */
976
+ public function GetDateFormat( $sanitized = false ) {
977
+ if ( $sanitized ) {
978
+ return 'Y-m-d';
979
+ }
980
+
981
+ return get_option( 'date_format' );
982
  }
983
 
984
  /**
985
+ * Time format based on WordPress date settings. It can be optionally sanitized to get format compatible with
986
+ * JavaScript date and time picker widgets.
987
+ *
988
+ * Note: This function must not be used to display actual date and time values anywhere. For that use function GetDateTimeFormat.
989
+ *
990
+ * @param bool $sanitize If true, the format is sanitized for use with JavaScript date and time picker widgets.
991
+ *
992
+ * @return string
993
  */
994
+ public function GetTimeFormat( $sanitize = false ) {
995
+ $result = get_option( 'time_format' );
996
+ if ( $sanitize ) {
997
+ $search = array( 'a', 'A', 'T', ' ' );
998
+ $replace = array( '', '', '', '' );
999
+ $result = str_replace( $search, $replace, $result );
1000
+ }
1001
+ return $result;
1002
  }
1003
 
1004
  /**
1235
  }
1236
  }
1237
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1238
 
1239
  /**
1240
  * Method: Get Token Type.
1241
  *
1242
  * @param string $token - Token type.
1243
+ *
1244
+ * @return string
1245
  * @since 3.2.3
1246
  */
1247
  public function get_token_type( $token ) {
1346
  }
1347
 
1348
  $this->SetIncognito( true ); // Incognito mode to hide WSAL on plugins page.
1349
+ $this->set_restrict_log_viewer( 'only_me' );
1350
+ $this->set_restrict_plugin_setting( 'only_me' );
1351
+ // current user with fallback to default admin (in case this is triggered using WP CLI or something similar)
1352
  $only_me_user_id = is_user_logged_in() ? get_current_user_id() : 1;
1353
+ $this->set_only_me_user_id( $only_me_user_id );
1354
  $this->_plugin->SetGlobalBooleanSetting( 'mwp-child-stealth-mode', true ); // Save stealth mode option.
1355
  }
1356
  }
1362
  */
1363
  public function deactivate_mainwp_child_stealth_mode() {
1364
  $this->SetIncognito( false ); // Disable incognito mode to hide WSAL on plugins page.
1365
+ $this->set_restrict_plugin_setting( 'only_admins' );
1366
+ $this->set_restrict_log_viewer( 'only_admins' );
1367
+ $this->set_admin_blocking_plugin_support( false );
1368
  $this->_plugin->SetGlobalBooleanSetting( 'mwp-child-stealth-mode', false ); // Disable stealth mode option.
1369
  }
1370
 
1395
  /**
1396
  * Method: Meta data formatter.
1397
  *
1398
+ * @param string $name - Name of the data.
1399
+ * @param mixed $value - Value of the data.
1400
  * @param integer $occ_id - Event occurrence ID.
1401
+ * @param mixed $highlight - Highlight format.
1402
+ * @param mixed $meta_context - Context for formatting.
1403
  *
1404
  * @return string
1405
  * @throws Freemius_Exception
1406
  */
1407
+ public function meta_formatter( $name, $value, $occ_id = null, $highlight = null, $meta_context = false ) {
1408
+
1409
+ // Setup the correct context.
1410
+ $meta_context = ( $highlight && 'daily-report' === $highlight ) ? $highlight : $meta_context;
1411
+
1412
+ // Define wrapper html based on context of message.
1413
+ switch ( $meta_context ) {
1414
+ case 'reports':
1415
+ case 'sms':
1416
+ $highlight_start_tag = '';
1417
+ $highlight_end_tag = '';
1418
+ $is_url_shortner = $this->_plugin->GetGlobalBooleanSetting( 'is-url-shortner' );
1419
+ break;
1420
+ case 'slack':
1421
+ $highlight_start_tag = '*';
1422
+ $highlight_end_tag = '*';
1423
+ break;
1424
+ case 'daily-report':
1425
+ $highlight_start_tag = '<span style="color: #149247;">';
1426
+ $highlight_end_tag = '</span>';
1427
+ break;
1428
+ default:
1429
+ $highlight_start_tag = '<strong>';
1430
+ $highlight_end_tag = '</strong>';
1431
  }
1432
 
1433
+ // Reassign the variable tags based on context.
1434
  switch ( true ) {
1435
  case '%Message%' == $name:
1436
  return esc_html( $value );
1437
+
 
 
1438
  case '%CommentLink%' == $name:
1439
  case '%CommentMsg%' == $name:
1440
+ switch ( $meta_context ) {
1441
+ case 'sms':
1442
+ return wp_strip_all_tags( $value );
1443
+ break;
1444
+ case 'reports':
1445
+ return strip_tags( $value );
1446
+ break;
1447
+ default:
1448
+ return $value;
1449
+ }
1450
 
1451
  case '%MetaLink%' == $name:
1452
  if ( ! empty( $value ) ) {
1453
+ switch ( $meta_context ) {
1454
+ case 'sms':
1455
+ case 'reports':
1456
+ case 'slack':
1457
+ return '';
1458
+ }
1459
+ return $highlight_start_tag . "<a href=\"#\" data-disable-custom-nonce='" . wp_create_nonce( 'disable-custom-nonce' . $value ) . "' onclick=\"return WsalDisableCustom(this, '" . $value . "');\"> Exclude Custom Field from the Monitoring</a>" . $highlight_end_tag;
1460
  } else {
1461
  return '';
1462
  }
1464
  case '%RevisionLink%' === $name:
1465
  $check_value = (string) $value;
1466
  if ( 'NULL' !== $check_value ) {
1467
+ switch ( $meta_context ) {
1468
+ case 'sms':
1469
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1470
+ return esc_html( ' Navigate to this URL to view the changes: ' . $url );
1471
+ break;
1472
+ case 'reports':
1473
+ return esc_html( ' Navigate to this URL to view the changes ' . $value );
1474
+ break;
1475
+ case 'slack':
1476
+ return ' Click <' . esc_url( $value ) . '|here> to see the content changes.';
1477
+ break;
1478
+ default:
1479
+ return $highlight_start_tag . '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View the content changes', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1480
+ }
1481
  }
1482
  return false;
1483
 
1484
+ case '%EditorLinkPage%' == $name:
1485
+ if ( 'sms' === $meta_context ) {
1486
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1487
+ return ' View the page: ' . esc_url( $url );
1488
+ }
1489
+ return $highlight_start_tag . '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View page in the editor', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1490
+
1491
+ case '%EditorLinkPost%' == $name:
1492
+ switch ( $meta_context ) {
1493
+ case 'sms':
1494
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1495
+ return ' View the post: ' . esc_url( $url );
1496
+ break;
1497
+ case 'reports':
1498
+ return ' View the post: ' . esc_url( $value );
1499
+ break;
1500
+ case 'slack':
1501
+ return ' View the <' . esc_url( $value ) . '|post>';
1502
+ break;
1503
+ default:
1504
+ return $highlight_start_tag . '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View post in the editor', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1505
+ }
1506
 
1507
  case '%EditorLinkOrder%' == $name:
1508
+ switch ( $meta_context ) {
1509
+ case 'sms':
1510
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1511
+ return ' View the order: ' . esc_url( $url );
1512
+ break;
1513
+ case 'slack':
1514
+ return ' <' . esc_url( $value ) . '|View Order>';
1515
+ break;
1516
+ default:
1517
+ return $highlight_start_tag. '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View Order', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1518
+ }
1519
 
1520
  case '%CategoryLink%' == $name:
1521
  case '%cat_link%' == $name:
1522
  case '%ProductCatLink%' == $name:
1523
+ switch ( $meta_context ) {
1524
+ case 'sms':
1525
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1526
+ return ' View the category: ' . esc_url( $url );
1527
+ break;
1528
+ case 'slack':
1529
+ return ' View the <' . esc_url( $value ) . '|category>';
1530
+ break;
1531
+ default:
1532
+ return $highlight_start_tag . '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View category', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1533
+ }
1534
 
1535
  case '%TagLink%' == $name:
1536
+ switch ( $meta_context ) {
1537
+ case 'sms':
1538
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1539
+ return ' View the tag: ' . esc_url( $url );
1540
+ break;
1541
+ case 'reports':
1542
+ return ' View the tag: ' . esc_url( $value );
1543
+ break;
1544
+ case 'slack':
1545
+ return ' View the <' . esc_url( $value ) . '|tag>';
1546
+ break;
1547
+ default:
1548
+ return $highlight_start_tag . '<a target="_blank" href="' . esc_url( $value ) . '">' . __( 'View tag', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1549
+ }
1550
 
1551
  case '%EditUserLink%' === $name:
1552
  if ( 'NULL' !== $value ) {
1553
+ return $highlight_start_tag . '<a href="' . $value . '" target="_blank">' . __( 'User profile page', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1554
  }
1555
  return '';
1556
 
1580
  $return_value = '';
1581
  if ( null !== $occ_post && 'publish' === $occ_post->post_status ) {
1582
  $post_permalink = get_permalink( $occ_post->ID );
1583
+ switch ( $meta_context ) {
1584
+ case 'sms':
1585
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $post_permalink ) : $post_permalink;
1586
+ $return_value = ' URL: ' . esc_url( $url );
1587
+ break;
1588
+ case 'reports':
1589
+ $return_value = ' URL: ' . esc_url( $post_permalink );
1590
+ break;
1591
+ case 'slack':
1592
+ $return_valuen = ' URL <' . esc_url( $post_permalink ) . '|tag>';
1593
+ break;
1594
+ default:
1595
+ $return_value = '<br>URL: ' . $highlight_start_tag . '<a href="' . esc_url( $post_permalink ) . '" title="' . esc_attr( $occ_post->post_title ) . '" target="_blank">' . esc_html( $post_permalink ) . '</a>' . $highlight_end_tag;
1596
+ }
1597
+ }
1598
+ return $return_value;
1599
+
1600
+ case '%MenuUrl%' === $name:
1601
+ // get connection.
1602
+ $db_config = WSAL_Connector_ConnectorFactory::GetConfig(); // Get DB connector configuration.
1603
+ $connector = $this->_plugin->getConnector( $db_config ); // Get connector for DB.
1604
+ $wsal_db = $connector->getConnection(); // Get DB connection.
1605
+
1606
+ // get values needed.
1607
+ $meta_adapter = new WSAL_Adapters_MySQL_Meta( $wsal_db );
1608
+ $event_data = $meta_adapter->LoadByNameAndOccurrenceId( 'MenuID', $occ_id );
1609
+ $menu_id = $event_data['value'];
1610
+
1611
+ // start with an empty string.
1612
+ $return_value = '';
1613
+
1614
+ if ( null !== $menu_id ) {
1615
+ $menu_url = add_query_arg(
1616
+ array(
1617
+ 'action' => 'edit',
1618
+ 'menu' => $menu_id,
1619
+ ),
1620
+ admin_url( 'nav-menus.php' )
1621
+ );
1622
+ switch ( $meta_context ) {
1623
+ case 'sms':
1624
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $menu_url ) : $menu_url;
1625
+ $return_value = ' View Menu: ' . esc_url( $url );
1626
+ break;
1627
+ case 'slack':
1628
+ $return_valuen = ' View Menu <' . esc_url( $menu_url ) . '|tag>';
1629
+ break;
1630
+ default:
1631
+ $return_value = '<br>' . $highlight_start_tag . '<a href="' . esc_url( $menu_url ) . '" title="' . esc_html__( 'View Menu', 'wp-security-audit-log' ) . '" target="_blank">' . esc_html__( 'View Menu', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1632
+ }
1633
  }
1634
  return $return_value;
1635
 
1645
  }
1646
 
1647
  case '%LogFileText%' === $name: // Failed login file text.
1648
+ if ( 'slack' === $meta_context || 'reports' === $meta_context || 'sms' === $meta_context ) {
1649
+ return '';
1650
+ }
1651
+ return $highlight_start_tag . '<a href="javascript:;" onclick="download_failed_login_log( this )" data-download-nonce="' . esc_attr( wp_create_nonce( 'wsal-download-failed-logins' ) ) . '" title="' . esc_html__( 'Download the log file.', 'wp-security-audit-log' ) . '">' . esc_html__( 'Download the log file.', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1652
 
1653
  case strncmp( $value, 'http://', 7 ) === 0:
1654
  case strncmp( $value, 'https://', 8 ) === 0:
1655
+ switch ( $meta_context ) {
1656
+ case 'reports':
1657
+ return esc_html( $value );
1658
+ break;
1659
+ case 'sms':
1660
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1661
+ return esc_url( $url );
1662
+ break;
1663
+ case 'slack' :
1664
+ return '<' . esc_html( $value ) . '|' . esc_html( $value ) . '>';
1665
+ break;
1666
+ default:
1667
+ $updated_line = apply_filters( 'wsal_link_filter', $value, $name );
1668
+ if ( $updated_line !== $value ) {
1669
+ return $updated_line;
1670
+ } else {
1671
+ return '<a href="' . esc_html( $value ) . '" title="' . esc_html( $value ) . '" target="_blank">' . esc_html( $value ) . '</a>';
1672
+ }
1673
  }
1674
 
1675
  case in_array( $name, array( '%PostStatus%', '%ProductStatus%' ), true ):
1683
  if ( $this->_plugin->IsMultisite() && $value ) {
1684
  $site_info = get_blog_details( $value, true );
1685
  if ( $site_info ) {
1686
+ if ( 'slack' === $meta_context ) {
1687
+ return ' on site <' . esc_url( $site_info->siteurl ) . '|' . esc_html( $site_info->blogname ) . '>';
1688
+ } else {
1689
+ return ' on site ' . $highlight_start_tag . '<a href="' . esc_url( $site_info->siteurl ) . '">' . esc_html( $site_info->blogname ) . '</a>' . $highlight_end_tag;
1690
+ }
1691
  }
1692
  return;
1693
  }
1703
  if ( 'NULL' === $value ) {
1704
  return false;
1705
  }
1706
+ if ( 'slack' === $meta_context ) {
1707
+ return ' with errors. ' . sprintf( __( 'Contact us on %s for assistance', 'wp-security-audit-log' ), '<mailto:support@wpsecurityauditlog.com|support@wpsecurityauditlog.com>' );
1708
+ }
1709
  /* translators: Mailto link for support. */
1710
  return ' with errors. ' . sprintf( __( 'Contact us on %s for assistance', 'wp-security-audit-log' ), '<a href="mailto:support@wpsecurityauditlog.com" target="_blank">support@wpsecurityauditlog.com</a>' );
1711
 
1719
  'tab' => 'file-changes',
1720
  );
1721
  $file_settings = add_query_arg( $file_settings_args, admin_url( 'admin.php' ) );
1722
+ switch ( $meta_context ) {
1723
+ case 'sms':
1724
+ $file_settings = $this->is_url_shortner ? $this->plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1725
+ return esc_html__( 'plugin settings', 'wp-security-audit-log' ) . ': ' . $file_settings;
1726
+ break;
1727
+ case 'slack':
1728
+ return '<' . esc_url( $file_settings ) . '|' . esc_html__( 'plugin settings', 'wp-security-audit-log' ) . '>';
1729
+ break;
1730
+ default:
1731
+ return $highlight_start_tag . '<a href="' . esc_url( $file_settings ) . '">' . esc_html__( 'Increase maximum file size limit', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1732
+ }
1733
 
1734
  case '%ContactSupport%' === $name:
1735
+ switch ( $meta_context ) {
1736
+ case 'sms':
1737
+ $value = 'https://wpactivitylog.com/contact/';
1738
+ $url = $this->is_url_shortner ? $this->plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1739
+ return esc_html__( 'contact our support', 'wp-security-audit-log' ) . ': ' . $url;
1740
+ break;
1741
+ case 'slack':
1742
+ return '<https://wpactivitylog.com/contact|' . esc_html__( 'contact our support', 'wp-security-audit-log' ) . '>';
1743
+ break;
1744
+ }
1745
+ return $highlight_start_tag . '<a href="https://wpactivitylog.com/contact/" target="_blank">' . esc_html__( 'Contact Support', 'wp-security-audit-log' ) . '</a>' . $highlight_end_tag;
1746
 
1747
  case '%LineBreak%' === $name:
1748
+ switch ( $meta_context ) {
1749
+ case 'reports':
1750
+ case 'slack':
1751
+ case 'sms':
1752
+ return '';
1753
+ }
1754
  return '<br>';
1755
 
1756
  case '%PluginFile%' === $name:
1757
  return $highlight_start_tag . dirname( $value ) . $highlight_end_tag;
1758
 
1759
+ case '%LinkFile%' == $name:
1760
+ switch ( $meta_context ) {
1761
+ case 'sms':
1762
+ $url = $is_url_shortner ? $this->_plugin->wsalCommon->shorten_url_bitly( $value ) : $value;
1763
+ return 'To view the requests open the log file ' . esc_url( $url );
1764
+ break;
1765
+ case 'slack':
1766
+ return 'Click <' . esc_url( add_query_arg( 'page', 'wsal-togglealerts', admin_url( 'admin.php' ) ) ) . '|here> to log such requests to file';
1767
+ break;
1768
+ default:
1769
+ return '<br>To view the requests open the log file ' . esc_url( $value );
1770
+ }
1771
+
1772
+ case '%URL%' == $name:
1773
+ if ( 'sms' === $meta_context ) {
1774
+ return '.';
1775
+ }
1776
+
1777
  default:
1778
  // if we didn't get a match already try get one via a filter.
1779
  $filtered_formatted_value = apply_filters( 'wsal_meta_formatter_custom_formatter', $value, $name );
1780
+ return ( $value !== $filtered_formatted_value ) ? $filtered_formatted_value : $highlight_start_tag . esc_html( $value ) . $highlight_end_tag;
1781
  }
1782
  }
1783
 
1876
  /**
1877
  * Method: Meta data formatter.
1878
  *
1879
+ * @param string $name - Name of the data.
1880
+ * @param mixed $value - Value of the data.
1881
+ * @param integer $occ_id - Event occurrence ID.
1882
+ * @param mixed $highlight - Highlight format.
1883
  *
 
 
 
 
1884
  * @return string
1885
+ * @throws Freemius_Exception
1886
+ * @since 3.3
1887
+ *
1888
  */
1889
+ public function slack_meta_formatter( $name, $value, $occ_id, $highlight ) {
1890
+ return $this->_plugin->settings()->meta_formatter( $name, $value, $occ_id, $highlight, 'slack' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1891
  }
1892
 
1893
  /**
1936
  * @return array - WSAL Options array.
1937
  */
1938
  public function get_plugin_settings() {
1939
+ global $wpdb;
1940
+ $plugin_options = $wpdb->get_results( "SELECT * FROM $wpdb->options WHERE option_name LIKE 'wsal_%'" );
1941
+ return $plugin_options;
1942
  }
1943
 
1944
  /**
2149
  * @return bool
2150
  */
2151
  public static function set_frontend_events( $value = array() ) {
2152
+ return \WSAL\Helpers\Options::set_option_value_ignore_prefix( self::FRONT_END_EVENTS_OPTION_NAME, $value );
2153
  }
2154
 
2155
  /**
2172
  return $this->_plugin->GetGlobalSetting( 'only-me-user-id' );
2173
  }
2174
 
2175
+ /**
2176
+ * Save admin blocking plugin support enabled.
2177
+ *
2178
+ * @param bool $enabled
2179
+ */
2180
+ public function set_admin_blocking_plugin_support( $enabled ) {
2181
+ $this->_plugin->SetGlobalBooleanSetting( 'admin-blocking-plugins-support', $enabled );
2182
+ }
2183
 
2184
  /**
2185
  * Check if admin blocking plugin support is enabled.
2191
  * @return bool
2192
  */
2193
  public function get_admin_blocking_plugin_support() {
2194
+ return $this->_plugin->GetGlobalBooleanSetting( 'admin-blocking-plugins-support', false );
2195
  }
2196
 
2197
+ public function get_mainwp_enforced_settings() {
2198
+ return $this->_plugin->GetGlobalSetting( 'mainwp_enforced_settings', array() );
2199
+ }
2200
 
2201
  public function set_mainwp_enforced_settings( $settings ) {
2202
+ $this->_plugin->SetGlobalSetting( 'mainwp_enforced_settings', $settings );
2203
+ }
2204
 
2205
+ public function delete_mainwp_enforced_settings() {
2206
+ $this->_plugin->DeleteSettingByName( WpSecurityAuditLog::OPTIONS_PREFIX . 'mainwp_enforced_settings' );
2207
+ }
2208
 
2209
  }
classes/ThirdPartyExtensions/GravityFormsExtension.php CHANGED
@@ -11,8 +11,8 @@ if ( ! class_exists( 'WSAL_GravityFormsExtension' ) ) {
11
  'title' => __( 'Gravity Forms', 'wp-security-audit-log' ),
12
  'image_filename' => 'gravityforms.png',
13
  'plugin_slug' => 'activity-log-gravity-forms/activity-log-gravity-forms.php',
14
- 'plugin_url' => 'https://downloads.wordpress.org/plugin/wp-activity-log-for-woocommerce.latest-stable.zip',
15
- 'event_tab_id' => '#tab-gravityforms',
16
  'plugin_description' => __( 'Keep a record of when someone adds, modifies or deletes forms, entries and more in the Gravity Forms plugin.', 'wp-security-audit-log' ),
17
  )
18
  );
11
  'title' => __( 'Gravity Forms', 'wp-security-audit-log' ),
12
  'image_filename' => 'gravityforms.png',
13
  'plugin_slug' => 'activity-log-gravity-forms/activity-log-gravity-forms.php',
14
+ 'plugin_url' => 'https://downloads.wordpress.org/plugin/activity-log-gravity-forms.latest-stable.zip',
15
+ 'event_tab_id' => '#tab-gravity-forms',
16
  'plugin_description' => __( 'Keep a record of when someone adds, modifies or deletes forms, entries and more in the Gravity Forms plugin.', 'wp-security-audit-log' ),
17
  )
18
  );
classes/Uninstall.php CHANGED
@@ -22,14 +22,10 @@ class WSAL_Uninstall {
22
  public static function uninstall() {
23
  // Drop the tables.
24
  if ( self::should_uninstall() ) {
25
- if ( self::table_exists( 'options' ) ) {
26
- self::drop_table( 'options' );
27
- }
28
  self::drop_table( 'occurrences' );
29
  self::drop_table( 'metadata' );
30
- if ( self::table_exists( 'sessions' ) ) {
31
- self::drop_table( 'sessions' );
32
- }
33
  }
34
 
35
  // Check if we have set things to delete upon uninstall.
@@ -47,26 +43,13 @@ class WSAL_Uninstall {
47
  * @return bool
48
  */
49
  private static function should_uninstall() {
50
- return self::should_data_be_deleted() && self::table_exists( 'occurrences' );
51
  }
52
 
53
  private static function should_data_be_deleted() {
54
  return in_array( get_option( 'wsal_delete-data' ), [ 'yes', 1, '1', 'y', 'true', true ] );
55
  }
56
 
57
- /**
58
- * Check if a table exists.
59
- *
60
- * @param string $table - Name of the WSAL table (without prefix).
61
- *
62
- * @return bool
63
- */
64
- private static function table_exists( $table ) {
65
- global $wpdb;
66
-
67
- return (bool) count( $wpdb->get_results( $wpdb->prepare( 'SHOW TABLES LIKE %s', self::get_table( $table ) ) ) );
68
- }
69
-
70
  /**
71
  * Returns the name of the WSAL table.
72
  *
@@ -86,7 +69,7 @@ class WSAL_Uninstall {
86
  private static function drop_table( $name ) {
87
  global $wpdb;
88
  $table_name = self::get_table( $name );
89
- $wpdb->query( 'DROP TABLE ' . $table_name );
90
  }
91
 
92
  /**
22
  public static function uninstall() {
23
  // Drop the tables.
24
  if ( self::should_uninstall() ) {
25
+ self::drop_table( 'options' );
 
 
26
  self::drop_table( 'occurrences' );
27
  self::drop_table( 'metadata' );
28
+ self::drop_table( 'sessions' );
 
 
29
  }
30
 
31
  // Check if we have set things to delete upon uninstall.
43
  * @return bool
44
  */
45
  private static function should_uninstall() {
46
+ return self::should_data_be_deleted();
47
  }
48
 
49
  private static function should_data_be_deleted() {
50
  return in_array( get_option( 'wsal_delete-data' ), [ 'yes', 1, '1', 'y', 'true', true ] );
51
  }
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  /**
54
  * Returns the name of the WSAL table.
55
  *
69
  private static function drop_table( $name ) {
70
  global $wpdb;
71
  $table_name = self::get_table( $name );
72
+ $wpdb->query( 'DROP TABLE IF EXISTS ' . $table_name );
73
  }
74
 
75
  /**
classes/Utilities/DateTimeFormatter.php ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Utility Class: Date and time formatter.
4
+ *
5
+ * Singleton utility class used for formatting date and time strings.
6
+ *
7
+ * @package Wsal
8
+ * @since 4.2.0
9
+ */
10
+
11
+ // Exit if accessed directly.
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ /**
17
+ * Date and Time Utility Class
18
+ *
19
+ * Singleton utility class used for formatting date and time strings.
20
+ *
21
+ * @since 4.2.0
22
+ */
23
+ class WSAL_Utilities_DateTimeFormatter {
24
+
25
+ /**
26
+ * @var string Regular expression for matching the milliseconds part of datetime string.
27
+ */
28
+ private static $am_pm_lookup_pattern = '/\.\d+((\&nbsp;|\ )([AP]M))?/i';
29
+
30
+ /**
31
+ * GMT Offset
32
+ *
33
+ * @var string
34
+ */
35
+ private $gmt_offset_sec = 0;
36
+
37
+ private $date_format;
38
+
39
+ private $time_format;
40
+
41
+ private $datetime_format;
42
+
43
+ private $datetime_format_no_linebreaks;
44
+
45
+ private $show_milliseconds;
46
+
47
+ /**
48
+ * Make constructor private, so nobody can call "new Class".
49
+ */
50
+ private function __construct() {
51
+ }
52
+
53
+ /**
54
+ * Call this method to get singleton
55
+ */
56
+ public static function instance() {
57
+ static $instance = false;
58
+ if ( $instance === false ) {
59
+ // Late static binding (PHP 5.3+)
60
+ $instance = new static();
61
+
62
+ $plugin = WpSecurityAuditLog::GetInstance();
63
+ $timezone = $plugin->settings()->GetTimezone();
64
+
65
+ /**
66
+ * Transform timezone values.
67
+ *
68
+ * @since 3.2.3
69
+ */
70
+ if ( '0' === $timezone ) {
71
+ $timezone = 'utc';
72
+ } elseif ( '1' === $timezone ) {
73
+ $timezone = 'wp';
74
+ }
75
+
76
+ if ( 'utc' === $timezone ) {
77
+ $instance->gmt_offset_sec = date( 'Z' );
78
+ } else {
79
+ $instance->gmt_offset_sec = get_option( 'gmt_offset' ) * HOUR_IN_SECONDS;
80
+ }
81
+
82
+ $instance->show_milliseconds = $plugin->settings()->get_show_milliseconds();
83
+ $instance->date_format = $plugin->settings()->GetDateFormat();
84
+ $instance->time_format = $plugin->settings()->GetTimeFormat();
85
+ $instance->datetime_format = $plugin->settings()->GetDatetimeFormat();
86
+ $instance->datetime_format_no_linebreaks = $plugin->settings()->GetDatetimeFormat( false );
87
+
88
+ }
89
+
90
+ return $instance;
91
+ }
92
+
93
+ /**
94
+ * Remove milliseconds from formatted datetime string.
95
+ *
96
+ * @param string $formattedDatetime Formatted datetime string
97
+ *
98
+ * @return string
99
+ * @since 4.2.0
100
+ */
101
+ public static function removeMilliseconds( $formattedDatetime ) {
102
+ return preg_replace( self::$am_pm_lookup_pattern, ' $3', $formattedDatetime );
103
+ }
104
+
105
+ public function getFormattedDateTime( $timestamp, $type = 'datetime', $do_timezone_offset = true, $line_break = false, $use_nb_space_for_am_pm = true, $translated = true ) {
106
+ $result = '';
107
+ $format = null;
108
+ switch ( $type ) {
109
+ case 'datetime':
110
+ $format = $line_break ? $this->datetime_format : $this->datetime_format_no_linebreaks;
111
+ if ( ! $use_nb_space_for_am_pm ) {
112
+ $format = preg_replace( '/&\\\n\\\b\\\s\\\p;/', ' ', $format );
113
+ }
114
+ break;
115
+ case 'date':
116
+ $format = $this->date_format;
117
+ break;
118
+ case 'time':
119
+ $format = $this->time_format;
120
+ break;
121
+ default:
122
+ return $result;
123
+ }
124
+
125
+ if ( null === $format ) {
126
+ return $result;
127
+ }
128
+
129
+ // timezone adjustment
130
+ $timezone_adjusted_timestamp = $do_timezone_offset ? $timestamp + $this->gmt_offset_sec : $timestamp;
131
+
132
+ // milliseconds in format
133
+ if ( ! $this->show_milliseconds ) {
134
+ // remove the milliseconds placeholder from format string.
135
+ $format = str_replace( '.$$$', '', $format );
136
+ }
137
+
138
+ // date formatting
139
+ $result = $translated ? date_i18n( $format, $timezone_adjusted_timestamp ) : date( $format, $timezone_adjusted_timestamp );
140
+
141
+ // milliseconds value
142
+ if ( $this->show_milliseconds ) {
143
+ $result = str_replace(
144
+ '$$$',
145
+ substr( number_format( fmod( $timezone_adjusted_timestamp, 1 ), 3 ), 2 ),
146
+ $result
147
+ );
148
+ }
149
+
150
+ return $result;
151
+
152
+ }
153
+
154
+ /**
155
+ * Make clone magic method private, so nobody can clone instance.
156
+ */
157
+ private function __clone() {
158
+ }
159
+
160
+ /**
161
+ * Make sleep magic method private, so nobody can serialize instance.
162
+ */
163
+ private function __sleep() {
164
+ }
165
+
166
+ /**
167
+ * Make wakeup magic method private, so nobody can unserialize instance.
168
+ */
169
+ private function __wakeup() {
170
+ }
171
+ }
classes/Utilities/Emailer.php CHANGED
@@ -31,10 +31,11 @@ class WSAL_Utilities_Emailer {
31
  $type_name = $wsal->settings()->get_type_username(); // Get the data to display.
32
  $user = _wp_get_current_user();
33
  $datetime_format = $wsal->settings()->GetDatetimeFormat( false );
 
34
  $date_time = str_replace(
35
  '$$$',
36
- substr( number_format( fmod( current_time( 'timestamp' ), 1 ), 3 ), 2 ),
37
- date( $datetime_format, current_time( 'timestamp' ) )
38
  );
39
 
40
  // Checks for display name.
31
  $type_name = $wsal->settings()->get_type_username(); // Get the data to display.
32
  $user = _wp_get_current_user();
33
  $datetime_format = $wsal->settings()->GetDatetimeFormat( false );
34
+ $now = current_time( 'timestamp' );
35
  $date_time = str_replace(
36
  '$$$',
37
+ substr( number_format( fmod( $now, 1 ), 3 ), 2 ),
38
+ date( $datetime_format, $now )
39
  );
40
 
41
  // Checks for display name.
classes/Utilities/PluginInstallAndActivate.php CHANGED
@@ -80,41 +80,43 @@ if ( ! class_exists( 'WSAL_PluginInstallAndActivate' ) ) {
80
  <tr>
81
  <td class="addon-td">
82
  <p class="description"><?php esc_html_e( 'WP Activity Log can keep a log of changes done on other plugins. Install the relevant extension from the below list to keep a log of changes done on that plugin.', 'wp-security-audit-log' ); ?></p></br>
83
- <?php
84
- // Create a nonce to pass through via data attr.
85
- $nonce = wp_create_nonce( 'wsal-install-addon' );
86
- // Loop through plugins and output.
87
- foreach ( $our_plugins as $details ) {
88
- $disable_button = '';
89
- if ( WpSecurityAuditLog::is_plugin_active( $details['plugin_slug'] ) ) {
90
- $disable_button = 'disabled';
91
- }
92
- // Check if this is actually an addon for something, otherwise bail.
93
- if ( ! isset( $details['addon_for'] ) || ! isset( $details['image_filename'] ) ) {
94
- continue;
95
- }
96
- ?>
97
-
98
- <div class="addon-wrapper">
99
- <img src="<?php echo esc_url( trailingslashit( WSAL_BASE_URL ) . 'img/addons/' . $details['image_filename'] ); ?>">
100
- <h4><?php esc_html_e( 'Extension for ', 'wp-security-audit-log' ); ?><?php echo esc_html( $details['title'] ); ?></h4>
101
- <p><?php echo sanitize_text_field( $details['plugin_description'] ); ?></p><br>
102
- <p><button class="install-addon button button-primary <?php echo esc_attr( $disable_button ); ?>" data-nonce="<?php echo esc_attr( $nonce ); ?>" data-plugin-slug="<?php echo esc_attr( $details['plugin_slug'] ); ?>" data-plugin-download-url="<?php echo esc_url( $details['plugin_url'] ); ?>" data-plugin-event-tab-id="<?php echo esc_attr( $details['event_tab_id'] ); ?>">
103
- <?php
104
- if ( $this->is_plugin_installed( $details['plugin_slug'] ) && ! WpSecurityAuditLog::is_plugin_active( $details['plugin_slug'] ) ) {
105
- esc_html_e( 'Extension installed, activate now?', 'wp-security-audit-log' );
106
- } elseif ( $this->is_plugin_installed( $details['plugin_slug'] ) && WpSecurityAuditLog::is_plugin_active( $details['plugin_slug'] ) || 'wsal-wpforms.php' === basename( $details['plugin_slug'] ) && function_exists( 'wsal_wpforms_add_custom_event_objects' ) || 'wsal-bbpress.php' === basename( $details['plugin_slug'] ) && function_exists( 'wsal_bbpress_add_custom_event_objects' ) || 'activity-log-yoast-seo.php' === basename( $details['plugin_slug'] ) && function_exists( 'wsal_yoast_seo_extension_add_custom_event_objects' ) ) {
107
- esc_html_e( 'Extension installed', 'wp-security-audit-log' );
108
- } else {
109
- esc_html_e( 'Install Extension', 'wp-security-audit-log' );
110
  }
111
  ?>
112
- </button><span class="spinner" style="display: none; visibility: visible; float: none; margin: 0 0 0 8px;"></span></p>
113
- </div>
114
 
115
- <?php
116
- }
117
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  </td>
119
  </tr>
120
  </tbody>
80
  <tr>
81
  <td class="addon-td">
82
  <p class="description"><?php esc_html_e( 'WP Activity Log can keep a log of changes done on other plugins. Install the relevant extension from the below list to keep a log of changes done on that plugin.', 'wp-security-audit-log' ); ?></p></br>
83
+ <div id="extension-wrapper">
84
+ <?php
85
+ // Create a nonce to pass through via data attr.
86
+ $nonce = wp_create_nonce( 'wsal-install-addon' );
87
+ // Loop through plugins and output.
88
+ foreach ( $our_plugins as $details ) {
89
+ $disable_button = '';
90
+ if ( WpSecurityAuditLog::is_plugin_active( $details['plugin_slug'] ) ) {
91
+ $disable_button = 'disabled';
92
+ }
93
+ // Check if this is actually an addon for something, otherwise bail.
94
+ if ( ! isset( $details['addon_for'] ) || ! isset( $details['image_filename'] ) ) {
95
+ continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  }
97
  ?>
 
 
98
 
99
+ <div class="addon-wrapper">
100
+ <img src="<?php echo esc_url( trailingslashit( WSAL_BASE_URL ) . 'img/addons/' . $details['image_filename'] ); ?>">
101
+ <h4><?php esc_html_e( 'Extension for ', 'wp-security-audit-log' ); ?><?php echo esc_html( $details['title'] ); ?></h4>
102
+ <p><?php echo sanitize_text_field( $details['plugin_description'] ); ?></p><br>
103
+ <p><button class="install-addon button button-primary <?php echo esc_attr( $disable_button ); ?>" data-nonce="<?php echo esc_attr( $nonce ); ?>" data-plugin-slug="<?php echo esc_attr( $details['plugin_slug'] ); ?>" data-plugin-download-url="<?php echo esc_url( $details['plugin_url'] ); ?>" data-plugin-event-tab-id="<?php echo esc_attr( $details['event_tab_id'] ); ?>">
104
+ <?php
105
+ if ( $this->is_plugin_installed( $details['plugin_slug'] ) && ! WpSecurityAuditLog::is_plugin_active( $details['plugin_slug'] ) ) {
106
+ esc_html_e( 'Extension installed, activate now?', 'wp-security-audit-log' );
107
+ } elseif ( $this->is_plugin_installed( $details['plugin_slug'] ) && WpSecurityAuditLog::is_plugin_active( $details['plugin_slug'] ) || 'wsal-wpforms.php' === basename( $details['plugin_slug'] ) && function_exists( 'wsal_wpforms_add_custom_event_objects' ) || 'wsal-bbpress.php' === basename( $details['plugin_slug'] ) && function_exists( 'wsal_bbpress_add_custom_event_objects' ) || 'activity-log-yoast-seo.php' === basename( $details['plugin_slug'] ) && function_exists( 'wsal_yoast_seo_extension_add_custom_event_objects' ) ) {
108
+ esc_html_e( 'Extension installed', 'wp-security-audit-log' );
109
+ } else {
110
+ esc_html_e( 'Install Extension', 'wp-security-audit-log' );
111
+ }
112
+ ?>
113
+ </button><span class="spinner" style="display: none; visibility: visible; float: none; margin: 0 0 0 8px;"></span></p>
114
+ </div>
115
+
116
+ <?php
117
+ }
118
+ ?>
119
+ </div>
120
  </td>
121
  </tr>
122
  </tbody>
classes/Views/AuditLog.php CHANGED
@@ -249,8 +249,8 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
249
  $all_plugins = get_plugins();
250
  $plugin_filenames = array();
251
  foreach ( $all_plugins as $plugin => $info ) {
252
- // here we strip all of the plugin slug, leaving just the filename itself. Neat!
253
- $plugin_filenames[] = preg_replace( '/\\.[^.\\s]{3,4}$/', '', substr( basename( json_encode( $plugin ) ), 0, -1 ) );
254
  }
255
 
256
  // Grab list of plugins we have addons for.
@@ -1099,7 +1099,7 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
1099
  );
1100
  die();
1101
  }
1102
-
1103
  if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'wsal_dismiss_advert' ) ) {
1104
  // Nonce verification failed.
1105
  echo wp_json_encode(
249
  $all_plugins = get_plugins();
250
  $plugin_filenames = array();
251
  foreach ( $all_plugins as $plugin => $info ) {
252
+ $plugin_info = pathinfo( $plugin );
253
+ $plugin_filenames[] = $plugin_info['filename'];
254
  }
255
 
256
  // Grab list of plugins we have addons for.
1099
  );
1100
  die();
1101
  }
1102
+
1103
  if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'wsal_dismiss_advert' ) ) {
1104
  // Nonce verification failed.
1105
  echo wp_json_encode(
classes/Views/Help.php CHANGED
@@ -64,6 +64,12 @@ class WSAL_Views_Help extends WSAL_AbstractView {
64
  'render' => array( $this, 'tab_help' ),
65
  'priority' => 10,
66
  ),
 
 
 
 
 
 
67
  'system-info' => array(
68
  'name' => __( 'System Info', 'wp-security-audit-log' ),
69
  'link' => add_query_arg( 'tab', 'system-info', $this->GetUrl() ),
@@ -115,7 +121,7 @@ class WSAL_Views_Help extends WSAL_AbstractView {
115
  * Method: Get View Name.
116
  */
117
  public function GetName() {
118
- return __( 'Help', 'wp-security-audit-log' );
119
  }
120
 
121
  /**
@@ -224,6 +230,28 @@ class WSAL_Views_Help extends WSAL_AbstractView {
224
  <?php
225
  }
226
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  /**
228
  * Tab: System info.
229
  */
64
  'render' => array( $this, 'tab_help' ),
65
  'priority' => 10,
66
  ),
67
+ 'contact' => array(
68
+ 'name' => __( 'Contact Us', 'wp-security-audit-log' ),
69
+ 'link' => add_query_arg( 'tab', 'contact', $this->GetUrl() ),
70
+ 'render' => array( $this, 'tab_contact_us' ),
71
+ 'priority' => 15,
72
+ ),
73
  'system-info' => array(
74
  'name' => __( 'System Info', 'wp-security-audit-log' ),
75
  'link' => add_query_arg( 'tab', 'system-info', $this->GetUrl() ),
121
  * Method: Get View Name.
122
  */
123
  public function GetName() {
124
+ return __( 'Help & Contact Us', 'wp-security-audit-log' );
125
  }
126
 
127
  /**
230
  <?php
231
  }
232
 
233
+ /**
234
+ * Tab: Contact us.
235
+ */
236
+ public function tab_contact_us() {
237
+ ?>
238
+ <h3 class="wsal-tab__heading"><?php esc_html_e( 'Contact Us', 'wp-security-audit-log' ); ?></h3>
239
+ <style type="text/css">
240
+ .fs-secure-notice {
241
+ position: relative !important;
242
+ top: 0 !important;
243
+ left: 0 !important;
244
+ }
245
+ .fs-full-size-wrapper {
246
+ margin: 10px 20px 0 2px !important;
247
+ }
248
+ </style>
249
+ <?php
250
+ $freemius_id = wsal_freemius()->get_id();
251
+ $vars = array( 'id' => $freemius_id );
252
+ echo fs_get_template( 'contact.php', $vars );
253
+ }
254
+
255
  /**
256
  * Tab: System info.
257
  */
classes/Views/Settings.php CHANGED
@@ -875,7 +875,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
875
  <!-- From Email & Name -->
876
 
877
  <h3><?php esc_html_e( 'Do you want to hide the plugin from the list of installed plugins?', 'wp-security-audit-log' ); ?></h3>
878
- <p class="description"><?php esc_html_e( 'By default all installed plugins are listed in the plugins page. If you do not want other administrators to see that you installed this plugin set this option to Yes so the WP Activity Log is not listed as an installed plugin on this website.', 'wp-security-audit-log' ); ?></p>
879
  <table class="form-table wsal-tab">
880
  <tbody>
881
  <tr>
@@ -1194,7 +1194,6 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1194
  </tr>
1195
  </tbody>
1196
  </table>
1197
-
1198
  <!-- / File Changes Logging Tab -->
1199
  <?php
1200
  }
@@ -1338,77 +1337,12 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1338
  * Tab: `Advanced Settings`
1339
  */
1340
  private function tab_advanced_settings() {
1341
- $location = $this->_plugin->GetGlobalSetting( 'custom-logging-dir', $this->_plugin->settings()->get_default_working_dir_relative() );
1342
  ?>
1343
  <p class="description">
1344
  <?php esc_html_e( 'These settings are for advanced users.', 'wp-security-audit-log' ); ?>
1345
  <?php echo sprintf( __( 'If you have any questions <a href="https://wpactivitylog.com/contact/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=settings+pages" target="_blank">contact us</a>.', 'wp-security-audit-log' ), $this->_plugin->allowed_html_tags ); ?>
1346
  </p>
1347
 
1348
- <h3><?php esc_html_e( 'Where do you want the plugin\'s working directory for log files, reports and other files?', 'wp-security-audit-log' ); ?></h3>
1349
- <p class="description"><?php esc_html_e( 'The plugin stores the reports it generates, a number of log files and the request log in this working directory. By default the directory is in the default WordPress uploads directory. Use the below setting to create the working directory in a different location. Note that the plugin requires write permissions to this directory. Please specify the relative path of the directory.', 'wp-security-audit-log' ); ?></p>
1350
- <table class="form-table wsal-tab">
1351
- <tbody>
1352
- <!-- custom log directory -->
1353
- <tr>
1354
- <th><label><?php esc_html_e( 'Working directory location', 'wp-security-audit-log' ); ?></label></th>
1355
- <td>
1356
- <fieldset>
1357
- <label for="wsal-custom-logs-dir">
1358
- <input type="text" name="wsal-custom-logs-dir" id="wsal-custom-logs-dir"
1359
- value="<?php echo esc_attr( $location ); ?>">
1360
- </label>
1361
- <p class="description">
1362
- <?php
1363
- echo wp_kses(
1364
- __( '<strong>Note:</strong> Enter a path from the root of your website: eg "/wp-content/uploads/wp-activity-log/".' ),
1365
- $this->_plugin->allowed_html_tags
1366
- );
1367
- ?>
1368
- </p>
1369
- </fieldset>
1370
- </td>
1371
- </tr>
1372
- <!-- / custom log directory -->
1373
- </tbody>
1374
- </table>
1375
-
1376
-
1377
- <h3><?php esc_html_e( 'Troubleshooting setting: Keep a debug log of all the requests this website receives', 'wp-security-audit-log' ); ?></h3>
1378
- <p class="description"><?php esc_html_e( 'Only enable the request log on testing, staging and development website. Never enable logging on a live website unless instructed to do so. Enabling request logging on a live website may degrade the performance of the website.', 'wp-security-audit-log' ); ?></p>
1379
- <table class="form-table wsal-tab">
1380
- <tbody>
1381
- <tr>
1382
- <th><label><?php esc_html_e( 'Request Log', 'wp-security-audit-log' ); ?></label></th>
1383
- <td>
1384
- <fieldset>
1385
- <?php $devoption_checked = $this->_plugin->settings()->IsDevOptionEnabled( WSAL_Settings::OPT_DEV_REQUEST_LOG ); ?>
1386
- <label for="devoption_yes">
1387
- <input type="radio" name="DevOptions" id="devoption_yes"
1388
- <?php checked( $devoption_checked, true ); ?>
1389
- value="<?php echo esc_attr( WSAL_Settings::OPT_DEV_REQUEST_LOG ); ?>">
1390
- <?php esc_html_e( 'Yes', 'wp-security-audit-log' ); ?>
1391
- </label>
1392
- <br>
1393
- <label for="devoption_no">
1394
- <input type="radio" name="DevOptions" id="devoption_no" <?php checked( $devoption_checked, false ); ?> value="0">
1395
- <?php esc_html_e( 'No', 'wp-security-audit-log' ); ?>
1396
- </label>
1397
- <p class="description">
1398
- <?php
1399
- echo wp_kses(
1400
- __( '<strong>Note:</strong> The requests debug log file is saved as request.log.php in the /wp-content/uploads/wp-activity-log/ directory.' ),
1401
- $this->_plugin->allowed_html_tags
1402
- );
1403
- ?>
1404
- </p>
1405
- </fieldset>
1406
- </td>
1407
- </tr>
1408
- <!-- / Developer Options -->
1409
- </tbody>
1410
- </table>
1411
-
1412
  <h3><?php esc_html_e( 'Reset plugin settings to default', 'wp-security-audit-log' ); ?></h3>
1413
  <p class="description"><?php _e( 'Use this button to <em>factory reset</em> the plugin. This means that all the configured settings will be reset to default and all email notifications, scheduled reports, external database / third party services connections, archiving and mirroring rule will be deleted. NOTE: the activity log data will not be purged. Use the setting below to purge the activity log.', 'wp-security-audit-log' ); ?></p>
1414
  <table class="form-table wsal-tab">
@@ -1535,12 +1469,6 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1535
  $post_array = filter_input_array( INPUT_POST );
1536
 
1537
  $this->_plugin->settings()->SetDeleteData( isset( $post_array['DeleteData'] ) ? sanitize_text_field( $post_array['DeleteData'] ) : false );
1538
- $this->_plugin->settings()->ClearDevOptions();
1539
- if ( isset( $post_array['DevOptions'] ) && 'r' === $post_array['DevOptions'] ) {
1540
- $this->_plugin->settings()->SetDevOptionEnabled( 'r', true );
1541
- } else {
1542
- $this->_plugin->settings()->SetDevOptionEnabled( 'r', false );
1543
- }
1544
 
1545
  $stealth_mode = isset( $post_array['mwp_stealth_mode'] ) ? $post_array['mwp_stealth_mode'] : false;
1546
  if ( 'yes' === $stealth_mode ) {
@@ -1556,33 +1484,6 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1556
  } else {
1557
  $this->_plugin->settings()->deactivate_mainwp_child_stealth_mode();
1558
  }
1559
-
1560
- $custom_logging_dir = $this->_plugin->settings()->get_default_working_dir_relative();
1561
- if ( isset( $post_array['wsal-custom-logs-dir'] ) ) {
1562
- $posted_logging_dir = filter_var( $post_array['wsal-custom-logs-dir'], FILTER_SANITIZE_STRING );
1563
- if (!empty($posted_logging_dir)) {
1564
- $custom_logging_dir = $posted_logging_dir;
1565
- }
1566
- }
1567
-
1568
- if ( ! empty( $custom_logging_dir ) ) {
1569
- $custom_logging_path = trailingslashit( get_home_path() ) . ltrim( trailingslashit( $custom_logging_dir ), '/' );
1570
- if ( ! is_dir( $custom_logging_path ) || ! is_readable( $custom_logging_path ) || ! is_writable( $custom_logging_path ) ) {
1571
- $dir_made = wp_mkdir_p( $custom_logging_path );
1572
- if ( $dir_made ) {
1573
- // make an empty index.php in the directory.
1574
- @file_put_contents( $custom_logging_path . 'index.php', '<?php // Silence is golden' );
1575
- }
1576
-
1577
- // if the directory was not made then we will display an error message
1578
- if ( ! $dir_made ) {
1579
- // throw an exception to display an error message
1580
- throw new Exception( __( 'The plugin cannot create the directory for the log files. Please check permissions and configure it again.', 'wp-security-audit-log' ) );
1581
- }
1582
- }
1583
- // save.
1584
- $this->_plugin->SetGlobalSetting( 'custom-logging-dir', $custom_logging_dir );
1585
- }
1586
  }
1587
 
1588
  /**
875
  <!-- From Email & Name -->
876
 
877
  <h3><?php esc_html_e( 'Do you want to hide the plugin from the list of installed plugins?', 'wp-security-audit-log' ); ?></h3>
878
+ <p class="description"><?php esc_html_e( 'By default all installed plugins are listed in the plugins page. Set this option to Yes remove WP Activity Log from the list of installed plugins for users who are unable to access the WP Activity Log settings.', 'wp-security-audit-log' ); ?></p>
879
  <table class="form-table wsal-tab">
880
  <tbody>
881
  <tr>
1194
  </tr>
1195
  </tbody>
1196
  </table>
 
1197
  <!-- / File Changes Logging Tab -->
1198
  <?php
1199
  }
1337
  * Tab: `Advanced Settings`
1338
  */
1339
  private function tab_advanced_settings() {
 
1340
  ?>
1341
  <p class="description">
1342
  <?php esc_html_e( 'These settings are for advanced users.', 'wp-security-audit-log' ); ?>
1343
  <?php echo sprintf( __( 'If you have any questions <a href="https://wpactivitylog.com/contact/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=settings+pages" target="_blank">contact us</a>.', 'wp-security-audit-log' ), $this->_plugin->allowed_html_tags ); ?>
1344
  </p>
1345
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1346
  <h3><?php esc_html_e( 'Reset plugin settings to default', 'wp-security-audit-log' ); ?></h3>
1347
  <p class="description"><?php _e( 'Use this button to <em>factory reset</em> the plugin. This means that all the configured settings will be reset to default and all email notifications, scheduled reports, external database / third party services connections, archiving and mirroring rule will be deleted. NOTE: the activity log data will not be purged. Use the setting below to purge the activity log.', 'wp-security-audit-log' ); ?></p>
1348
  <table class="form-table wsal-tab">
1469
  $post_array = filter_input_array( INPUT_POST );
1470
 
1471
  $this->_plugin->settings()->SetDeleteData( isset( $post_array['DeleteData'] ) ? sanitize_text_field( $post_array['DeleteData'] ) : false );
 
 
 
 
 
 
1472
 
1473
  $stealth_mode = isset( $post_array['mwp_stealth_mode'] ) ? $post_array['mwp_stealth_mode'] : false;
1474
  if ( 'yes' === $stealth_mode ) {
1484
  } else {
1485
  $this->_plugin->settings()->deactivate_mainwp_child_stealth_mode();
1486
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1487
  }
1488
 
1489
  /**
classes/Views/SetupWizard.php CHANGED
@@ -154,8 +154,8 @@ final class WSAL_Views_SetupWizard {
154
  $all_plugins = get_plugins();
155
  $plugin_filenames = array();
156
  foreach ( $all_plugins as $plugin => $info ) {
157
- // here we strip all of the plugin slug, leaving just the filename itself. Neat!
158
- $plugin_filenames[] = preg_replace( '/\\.[^.\\s]{3,4}$/', '', substr( basename( json_encode( $plugin ) ), 0, -1 ) );
159
  }
160
 
161
  // Grab list of plugins we have addons for.
@@ -789,8 +789,8 @@ final class WSAL_Views_SetupWizard {
789
  $all_plugins = get_plugins();
790
  $plugin_filenames = array();
791
  foreach ( $all_plugins as $plugin => $info ) {
792
- // here we strip all of the plugin slug, leaving just the filename itself. Neat!
793
- $plugin_filenames[] = preg_replace( '/\\.[^.\\s]{3,4}$/', '', substr( basename( json_encode( $plugin ) ), 0, -1 ) );
794
  }
795
 
796
  // Grab list of plugins we have addons for.
154
  $all_plugins = get_plugins();
155
  $plugin_filenames = array();
156
  foreach ( $all_plugins as $plugin => $info ) {
157
+ $plugin_info = pathinfo( $plugin );
158
+ $plugin_filenames[] = $plugin_info['filename'];
159
  }
160
 
161
  // Grab list of plugins we have addons for.
789
  $all_plugins = get_plugins();
790
  $plugin_filenames = array();
791
  foreach ( $all_plugins as $plugin => $info ) {
792
+ $plugin_info = pathinfo( $plugin );
793
+ $plugin_filenames[] = $plugin_info['filename'];
794
  }
795
 
796
  // Grab list of plugins we have addons for.
classes/Views/ToggleAlerts.php CHANGED
@@ -86,12 +86,16 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
86
  $enabled = array_map( 'intval', $post_array['alert'] );
87
  $disabled = array();
88
  $registered_alerts = $this->_plugin->alerts->GetAlerts();
89
- $disabled = apply_filters( 'wsal_save_settings_disabled_events', $disabled, $registered_alerts, $frontend_events, $enabled );
90
 
91
  // Save the disabled events.
92
- $this->_plugin->alerts->SetDisabledAlerts( $disabled );
93
 
94
- // Allow 3rd parties to process and save more of the posted data
 
 
 
 
95
  do_action( 'wsal_togglealerts_process_save_settings', $post_array );
96
 
97
  }
@@ -132,27 +136,31 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
132
  }
133
 
134
  // Log level form submission.
135
- $log_level = isset( $post_array['wsal-log-level'] ) ? sanitize_text_field( $post_array['wsal-log-level'] ) : false;
136
  $log_level_nonce = isset( $post_array['wsal-log-level-nonce'] ) ? sanitize_text_field( $post_array['wsal-log-level-nonce'] ) : false;
137
 
138
  if ( wp_verify_nonce( $log_level_nonce, 'wsal-log-level' ) ) {
139
- $this->_plugin->SetGlobalSetting( 'details-level', $log_level );
140
 
141
- if ( 'basic' === $log_level ) {
142
  $this->_plugin->settings()->set_basic_mode();
143
- } elseif ( 'geek' === $log_level ) {
144
  $this->_plugin->settings()->set_geek_mode();
145
  }
146
  }
147
 
148
  $disabled_events = $this->_plugin->GetGlobalSetting( 'disabled-alerts' ); // Get disabled events.
149
  $disabled_events = explode( ',', $disabled_events );
150
- $events_diff = array_diff( $disabled_events, $this->_plugin->settings()->geek_alerts ); // Calculate the difference of events.
151
- $events_diff = array_filter( $events_diff ); // Remove empty values.
152
- $is_custom = ! empty( $events_diff ) ? true : false; // If difference is not empty then mode is custom.
153
- $log_details = $this->_plugin->GetGlobalSetting( 'details-level', false ); // Get log level option.
154
 
155
- $subcat_alerts = array( 1004, 2010, 2111 );
 
 
 
 
 
 
 
 
156
 
157
  // Allow further items to be added externally.
158
  $subcat_alerts = apply_filters( 'wsal_togglealerts_sub_category_events', $subcat_alerts );
@@ -170,19 +178,9 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
170
  <fieldset>
171
  <label for="wsal-log-level"><?php esc_html_e( 'Log Level: ', 'wp-security-audit-log' ); ?></label>
172
  <select name="wsal-log-level" id="wsal-log-level" onchange="this.form.submit()"<?php if ( $disabled_events_enforced_by_mainwp ): ?> disabled="disabled"<?php endif; ?>>
173
- <option value="basic"
174
- <?php echo ( ! empty( $log_details ) && 'basic' === $log_details ) ? esc_attr( 'selected' ) : false; ?>
175
- >
176
- <?php esc_html_e( 'Basic', 'wp-security-audit-log' ); ?>
177
- </option>
178
- <option value="geek"
179
- <?php echo ( ! empty( $log_details ) && 'geek' === $log_details ) ? esc_attr( 'selected' ) : false; ?>
180
- >
181
- <?php esc_html_e( 'Geek', 'wp-security-audit-log' ); ?>
182
- </option>
183
- <option value="custom" <?php echo ( $is_custom ) ? esc_attr( 'selected' ) : false; ?>>
184
- <?php esc_html_e( 'Custom', 'wp-security-audit-log' ); ?>
185
- </option>
186
  </select>
187
  <p class="description">
188
  <?php echo wp_kses( __( 'Use the Log level drop down menu above to use one of our preset log levels. Alternatively you can enable or disable any of the individual events from the below tabs. Refer to <a href="https://wpactivitylog.com/support/kb/list-wordpress-activity-log-event-ids/" target="_blank">the complete list of WordPress activity log event IDs</a> for reference on all the events the plugin can keep a log of.', 'wp-security-audit-log' ), $this->_plugin->allowed_html_tags ); ?>
@@ -378,10 +376,13 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
378
  <?php
379
  $subcat_title = '';
380
  switch ( $alert->type ) {
 
 
 
381
  case 1004:
382
  $subcat_title = esc_html__( 'User Sessions', 'wp-security-audit-log' );
383
  break;
384
- case 2010:
385
  $subcat_title = esc_html__( 'Files', 'wp-security-audit-log' );
386
  break;
387
  case 2011:
@@ -447,18 +448,6 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
447
  <td><?php echo esc_html( $alert->desc ); ?></td>
448
  </tr>
449
  <?php
450
- if ( 1000 === $alert->type ) {
451
- $frontend_events = WSAL_Settings::get_frontend_events();
452
- ?>
453
- <tr>
454
- <td></td>
455
- <td><input type="checkbox" name="frontend-events[login]" id="frontend-events-login" value="1" <?php checked( $frontend_events['login'] ); ?>></td>
456
- <td colspan="2">
457
- <label for="frontend-events-login"><?php esc_html_e( 'Keep a log when users login to the website from other login pages / forms other than the default WordPress login page.', 'wp-security-audit-log' ); ?></label>
458
- </td>
459
- </tr>
460
- <?php
461
- }
462
 
463
  if ( 4000 === $alert->type ) {
464
  $frontend_events = WSAL_Settings::get_frontend_events();
@@ -500,6 +489,21 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
500
  <?php
501
  }
502
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
503
  do_action( 'wsal_togglealerts_append_content_to_toggle', $alert->type );
504
  }
505
 
@@ -543,7 +547,7 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
543
  <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php echo esc_attr( __( 'Save Changes', 'wp-security-audit-log' ) ); ?>"></p>
544
  </form>
545
 
546
- <?php if ( ! empty( $log_level ) ) : ?>
547
  <!-- Log level updated modal -->
548
  <div class="remodal" data-remodal-id="wsal-log-level-updated">
549
  <button data-remodal-action="close" class="remodal-close"></button>
@@ -551,7 +555,7 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
551
  <p>
552
  <?php
553
  /* translators: Alerts log level. */
554
- echo sprintf( esc_html__( 'The %s log level has been successfully loaded and applied.', 'wp-security-audit-log' ), $log_level );
555
  ?>
556
  </p>
557
  <br>
@@ -652,25 +656,44 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
652
  table#tab-frontend-events tr:nth-child(12) td:first-child {
653
  padding-left: 10px;
654
  }
655
- [href="#tab-0" i], [data-parent="tab-wpforms"] {
 
656
  display: none;
657
  }
 
 
 
 
 
 
658
  .addon-wrapper img {
659
  max-width: 200px;
660
  }
661
  .addon-wrapper {
662
- max-width: calc( 25% - 45px );
663
- display: inline-block;
664
- border: 1px solid #eee;
665
- padding: 20px;
666
- text-align: center;
667
- float: left;
668
- margin-right: 3px;
669
- min-height: 250px;
670
  }
671
  .addon-wrapper:hover {
672
  border: 1px solid #ccc;
673
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
674
  </style>
675
  <?php
676
  }
@@ -746,4 +769,30 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
746
  </script>
747
  <?php
748
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
749
  }
86
  $enabled = array_map( 'intval', $post_array['alert'] );
87
  $disabled = array();
88
  $registered_alerts = $this->_plugin->alerts->GetAlerts();
89
+ $disabled = apply_filters( 'wsal_save_settings_disabled_events', $disabled, $registered_alerts, $frontend_events, $enabled );
90
 
91
  // Save the disabled events.
92
+ $this->_plugin->alerts->SetDisabledAlerts( $disabled ); // Save the disabled events.
93
 
94
+ // Update failed login limits.
95
+ $this->_plugin->settings()->set_failed_login_limit( $post_array['log_failed_login_limit'] );
96
+ $this->_plugin->settings()->set_visitor_failed_login_limit( $post_array['log_visitor_failed_login_limit'] );
97
+
98
+ // Allow 3rd parties to process and save more of the posted data.
99
  do_action( 'wsal_togglealerts_process_save_settings', $post_array );
100
 
101
  }
136
  }
137
 
138
  // Log level form submission.
139
+ $log_level_to_set = isset( $post_array['wsal-log-level'] ) ? sanitize_text_field( $post_array['wsal-log-level'] ) : false;
140
  $log_level_nonce = isset( $post_array['wsal-log-level-nonce'] ) ? sanitize_text_field( $post_array['wsal-log-level-nonce'] ) : false;
141
 
142
  if ( wp_verify_nonce( $log_level_nonce, 'wsal-log-level' ) ) {
143
+ $this->_plugin->SetGlobalSetting( 'details-level', $log_level_to_set );
144
 
145
+ if ( 'basic' === $log_level_to_set ) {
146
  $this->_plugin->settings()->set_basic_mode();
147
+ } elseif ( 'geek' === $log_level_to_set ) {
148
  $this->_plugin->settings()->set_geek_mode();
149
  }
150
  }
151
 
152
  $disabled_events = $this->_plugin->GetGlobalSetting( 'disabled-alerts' ); // Get disabled events.
153
  $disabled_events = explode( ',', $disabled_events );
 
 
 
 
154
 
155
+ // check if the log level is custom
156
+ $log_level = $this->get_log_level_based_on_events( $disabled_events );
157
+ $log_level_options = [
158
+ 'basic' => esc_html__( 'Basic', 'wp-security-audit-log' ),
159
+ 'geek' => esc_html__( 'Geek', 'wp-security-audit-log' ),
160
+ 'custom' => esc_html__( 'Custom', 'wp-security-audit-log' ),
161
+ ];
162
+
163
+ $subcat_alerts = array( 1000, 1004, 2010, 2111 );
164
 
165
  // Allow further items to be added externally.
166
  $subcat_alerts = apply_filters( 'wsal_togglealerts_sub_category_events', $subcat_alerts );
178
  <fieldset>
179
  <label for="wsal-log-level"><?php esc_html_e( 'Log Level: ', 'wp-security-audit-log' ); ?></label>
180
  <select name="wsal-log-level" id="wsal-log-level" onchange="this.form.submit()"<?php if ( $disabled_events_enforced_by_mainwp ): ?> disabled="disabled"<?php endif; ?>>
181
+ <?php foreach ( $log_level_options as $log_level_id => $log_level_label ): ?>
182
+ <option value="<?php echo $log_level_id; ?>" <?php echo selected( $log_level, $log_level_id ); ?>><?php echo $log_level_label; ?></option>
183
+ <?php endforeach; ?>
 
 
 
 
 
 
 
 
 
 
184
  </select>
185
  <p class="description">
186
  <?php echo wp_kses( __( 'Use the Log level drop down menu above to use one of our preset log levels. Alternatively you can enable or disable any of the individual events from the below tabs. Refer to <a href="https://wpactivitylog.com/support/kb/list-wordpress-activity-log-event-ids/" target="_blank">the complete list of WordPress activity log event IDs</a> for reference on all the events the plugin can keep a log of.', 'wp-security-audit-log' ), $this->_plugin->allowed_html_tags ); ?>
376
  <?php
377
  $subcat_title = '';
378
  switch ( $alert->type ) {
379
+ case 1000:
380
+ $subcat_title = esc_html__( 'User Logins/Logouts', 'wp-security-audit-log' );
381
+ break;
382
  case 1004:
383
  $subcat_title = esc_html__( 'User Sessions', 'wp-security-audit-log' );
384
  break;
385
+ case 2010:
386
  $subcat_title = esc_html__( 'Files', 'wp-security-audit-log' );
387
  break;
388
  case 2011:
448
  <td><?php echo esc_html( $alert->desc ); ?></td>
449
  </tr>
450
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
451
 
452
  if ( 4000 === $alert->type ) {
453
  $frontend_events = WSAL_Settings::get_frontend_events();
489
  <?php
490
  }
491
 
492
+
493
+ if ( 1003 === $alert->type ) {
494
+ $frontend_events = WSAL_Settings::get_frontend_events();
495
+ ?>
496
+ <tr>
497
+ <th>
498
+ <input type="checkbox" name="frontend-events[login]" id="frontend-events-login" value="1" <?php checked( $frontend_events['login'] ); ?>>
499
+ </th>
500
+ <td colspan="3">
501
+ <label for="frontend-events-login"><?php esc_html_e( 'Keep a log of user log in activity on custom login forms (such as WooCommerce & membership plugins)', 'wp-security-audit-log' ); ?></label>
502
+ </td>
503
+ </tr>
504
+ <?php
505
+ }
506
+
507
  do_action( 'wsal_togglealerts_append_content_to_toggle', $alert->type );
508
  }
509
 
547
  <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php echo esc_attr( __( 'Save Changes', 'wp-security-audit-log' ) ); ?>"></p>
548
  </form>
549
 
550
+ <?php if ( ! empty( $log_level_to_set ) ) : ?>
551
  <!-- Log level updated modal -->
552
  <div class="remodal" data-remodal-id="wsal-log-level-updated">
553
  <button data-remodal-action="close" class="remodal-close"></button>
555
  <p>
556
  <?php
557
  /* translators: Alerts log level. */
558
+ echo sprintf( esc_html__( 'The %s log level has been successfully loaded and applied.', 'wp-security-audit-log' ), $log_level_to_set );
559
  ?>
560
  </p>
561
  <br>
656
  table#tab-frontend-events tr:nth-child(12) td:first-child {
657
  padding-left: 10px;
658
  }
659
+ /* Extensions tab */
660
+ [href="#tab-0" i], [data-parent="tab-wpforms"], [data-parent="tab-gravity-forms"] {
661
  display: none;
662
  }
663
+ #extension-wrapper {
664
+ display: flex;
665
+ flex-wrap: wrap;
666
+ flex-direction: row;
667
+ justify-content: space-between;
668
+ }
669
  .addon-wrapper img {
670
  max-width: 200px;
671
  }
672
  .addon-wrapper {
673
+ flex: 1 0 30%;
674
+ margin: 0 5px 11px 5px;
675
+ border: 1px solid #eee;
676
+ padding: 20px;
 
 
 
 
677
  }
678
  .addon-wrapper:hover {
679
  border: 1px solid #ccc;
680
  }
681
+ .addon-wrapper .button-primary {
682
+ position: relative;
683
+ padding: 13px 26px !important;
684
+ font-weight: 500;
685
+ font-size: 16px;
686
+ line-height: 1;
687
+ color: white;
688
+ background: #007cba;
689
+ border: none;
690
+ outline: none;
691
+ overflow: hidden;
692
+ cursor: pointer;
693
+ filter: drop-shadow(0 2px 8px rgba(39, 94, 254, 0.32));
694
+ transition: 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
695
+ line-height: 1 !important;
696
+ }
697
  </style>
698
  <?php
699
  }
769
  </script>
770
  <?php
771
  }
772
+
773
+ /**
774
+ * Determine the log level setting by checking the list of enabled/disabled events.
775
+ *
776
+ * @param int[] $disabled_events Currently disabled events.
777
+ *
778
+ * @return string Log level setting value.
779
+ * @since 4.2.0
780
+ */
781
+ private function get_log_level_based_on_events( $disabled_events ) {
782
+ $events_to_cross_check = $this->_plugin->settings()->always_disabled_alerts;
783
+ $events_diff = array_diff( $disabled_events, $events_to_cross_check );
784
+ $events_diff = array_filter( $events_diff ); // Remove empty values.
785
+ if ( empty( $events_diff ) ) {
786
+ return 'geek';
787
+ }
788
+
789
+ $events_to_cross_check = array_merge( $events_to_cross_check, $this->_plugin->settings()->geek_alerts );
790
+ $events_diff = array_diff( $disabled_events, $events_to_cross_check );
791
+ $events_diff = array_filter( $events_diff ); // Remove empty values.
792
+ if ( empty( $events_diff ) ) {
793
+ return 'basic';
794
+ }
795
+
796
+ return 'custom';
797
+ }
798
  }
classes/WidgetManager.php CHANGED
@@ -73,18 +73,23 @@ class WSAL_WidgetManager {
73
  <table class="wp-list-table widefat" cellspacing="0" cellpadding="0"
74
  style="display: block; overflow-x: auto;">
75
  <thead>
76
- <th class="manage-column" style="width: 15%;" scope="col"><?php esc_html_e( 'User', 'wp-security-audit-log' ); ?></th>
77
- <th class="manage-column" style="width: 85%;" scope="col"><?php esc_html_e( 'Description', 'wp-security-audit-log' ); ?></th>
 
 
78
  </thead>
79
  <tbody>
80
  <?php
81
  $url = 'admin.php?page=' . $this->_plugin->views->views[0]->GetSafeViewName();
82
  $fmt = array( $this->_plugin->settings(), 'meta_formatter' );
83
  foreach ( $results as $entry ) :
84
- $username = $entry->GetUsername();
 
85
  ?>
86
  <tr>
87
  <td><?php echo ( $username ) ? esc_html( $username ) : '<i>unknown</i>'; ?></td>
 
 
88
  <td>
89
  <a href="<?php echo esc_url( $url ) . '#Event' . esc_attr( $entry->getId() ); ?>">
90
  <?php echo wp_kses( $entry->GetMessage( $fmt ), $this->_plugin->allowed_html_tags ); ?>
73
  <table class="wp-list-table widefat" cellspacing="0" cellpadding="0"
74
  style="display: block; overflow-x: auto;">
75
  <thead>
76
+ <th class="manage-column" style="width: 10%;" scope="col"><?php esc_html_e( 'User', 'wp-security-audit-log' ); ?></th>
77
+ <th class="manage-column" style="width: 10%;" scope="col"><?php esc_html_e( 'Object', 'wp-security-audit-log' ); ?></th>
78
+ <th class="manage-column" style="width: 10%;" scope="col"><?php esc_html_e( 'Event Type', 'wp-security-audit-log' ); ?></th>
79
+ <th class="manage-column" style="width: 70%;" scope="col"><?php esc_html_e( 'Description', 'wp-security-audit-log' ); ?></th>
80
  </thead>
81
  <tbody>
82
  <?php
83
  $url = 'admin.php?page=' . $this->_plugin->views->views[0]->GetSafeViewName();
84
  $fmt = array( $this->_plugin->settings(), 'meta_formatter' );
85
  foreach ( $results as $entry ) :
86
+ $username = $entry->GetUsername();
87
+ $event_meta = $entry->GetMetaArray();
88
  ?>
89
  <tr>
90
  <td><?php echo ( $username ) ? esc_html( $username ) : '<i>unknown</i>'; ?></td>
91
+ <td><?php echo ( $event_meta['Object'] ) ? esc_html( $event_meta['Object'] ) : '<i>unknown</i>'; ?></td>
92
+ <td><?php echo ( $event_meta['EventType'] ) ? esc_html( $event_meta['EventType'] ) : '<i>unknown</i>'; ?></td>
93
  <td>
94
  <a href="<?php echo esc_url( $url ) . '#Event' . esc_attr( $entry->getId() ); ?>">
95
  <?php echo wp_kses( $entry->GetMessage( $fmt ), $this->_plugin->allowed_html_tags ); ?>
classes/index.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Nothing to see here.
4
+ */
css/index.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Nothing to see here.
4
+ */
defaults.php CHANGED
@@ -21,24 +21,17 @@ if ( ! class_exists( 'WpSecurityAuditLog' ) ) {
21
  defined( 'E_CRITICAL' ) || define( 'E_CRITICAL', 'E_CRITICAL' );
22
 
23
  /**
24
- * Load Custom Alerts from {plugin working folder}/custom-alerts.php if exists
 
 
 
 
 
25
  *
26
  * @param WpSecurityAuditLog $wsal - Instance of main plugin.
27
  */
28
- function load_include_custom_file( $wsal ) {
29
- // Custom alerts can be added via a special file inside the file and dir
30
- // {plugin working folder}/custom-alerts.php.
31
- $uploads_dir_path = $wsal->settings()->get_working_dir_path( '', true, true );
32
-
33
- /*
34
- * Get an array of directories to loop through to add custom alerts.
35
- *
36
- * Passed through a filter so other plugins or code can add own custom
37
- * alerts files by adding the containing directory to this array.
38
- *
39
- * @since 3.5.1 - Added the `wsal_custom_alerts_dirs` filter.
40
- */
41
- $paths = apply_filters( 'wsal_custom_alerts_dirs', array( $uploads_dir_path ) );
42
  foreach ( $paths as $inc_path ) {
43
  // Check directory.
44
  if ( is_dir( $inc_path ) && is_readable( $inc_path ) ) {
@@ -85,45 +78,48 @@ function wsaldefaults_wsal_init() {
85
  array(
86
  __( 'Users Logins & Sessions Events', 'wp-security-audit-log' ) => array(
87
  __( 'User Activity', 'wp-security-audit-log' ) => array(
88
- array( 1000, WSAL_LOW, __( 'User logged in', 'wp-security-audit-log' ), '', 'user', 'login' ),
89
- array( 1001, WSAL_LOW, __( 'User logged out', 'wp-security-audit-log' ), '', 'user', 'logout' ),
90
- array( 1002, WSAL_MEDIUM, __( 'Login failed', 'wp-security-audit-log' ), '%Attempts% failed login(s)', 'user', 'failed-login' ),
91
  array( 1003, WSAL_LOW, __( 'Login failed / non existing user', 'wp-security-audit-log' ), __( '%Attempts% failed login(s) %LineBreak% %LogFileText%', 'wp-security-audit-log' ), 'system', 'failed-login' ),
92
  array( 1004, WSAL_MEDIUM, __( 'Login blocked', 'wp-security-audit-log' ), __( 'Login blocked because other session(s) already exist for this user. %LineBreak% IP address: %ClientIP%', 'wp-security-audit-log' ), 'user', 'blocked' ),
93
  array( 1005, WSAL_LOW, __( 'User logged in with existing session(s)', 'wp-security-audit-log' ), __( 'User logged in. There are other session(s) using the same username logged in from these IP address(es): %IPAddress%', 'wp-security-audit-log' ), 'user', 'login' ),
94
  array( 1006, WSAL_MEDIUM, __( 'User logged out all other sessions with the same username', 'wp-security-audit-log' ), __( 'Logged out all other sessions with the same user.', 'wp-security-audit-log' ), 'user', 'logout' ),
95
- array( 1007, WSAL_MEDIUM, __( 'User session destroyed and logged out', 'wp-security-audit-log' ), __( 'Terminated the session of another user. %LineBreak% User: %TargetUserName% %LineBreak% Session ID: %TargetSessionID%', 'wp-security-audit-log' ), 'user', 'logout' ),
96
  array( 1008, WSAL_MEDIUM, __( 'Switched to another user', 'wp-security-audit-log' ), __( 'Switched to another user. %LineBreak% User: %TargetUserName% %LineBreak% Role: %TargetUserRole%', 'wp-security-audit-log' ), 'user', 'login' ),
97
  array( 2010, WSAL_MEDIUM, __( 'User uploaded file from Uploads directory', 'wp-security-audit-log' ), __( 'Filename: %FileName% %LineBreak% Directory: %FilePath%', 'wp-security-audit-log' ), 'file', 'uploaded' ),
98
  array( 2011, WSAL_LOW, __( 'User deleted file from Uploads directory', 'wp-security-audit-log' ), __( 'Filename: %FileName% %LineBreak% Directory: %FilePath%', 'wp-security-audit-log' ), 'file', 'deleted' ),
 
99
  ),
100
  ),
101
 
102
  __( 'Content & Comments', 'wp-security-audit-log' ) => array(
103
  __( 'Content', 'wp-security-audit-log' ) => array(
104
- array( 2000, WSAL_INFORMATIONAL, __( 'User created a new post and saved it as draft', 'wp-security-audit-log' ), __( 'Created the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'created' ),
105
- array( 2001, WSAL_LOW, __( 'User published a post', 'wp-security-audit-log' ), __( 'Published the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'published' ),
106
- array( 2002, WSAL_LOW, __( 'User modified a post', 'wp-security-audit-log' ), __( 'Modified the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
107
- array( 2008, WSAL_MEDIUM, __( 'User permanently deleted a post from the trash', 'wp-security-audit-log' ), __( 'Permanently deleted the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType%', 'wp-security-audit-log' ), 'post', 'deleted' ),
108
- array( 2012, WSAL_MEDIUM, __( 'User moved a post to the trash', 'wp-security-audit-log' ), __( 'Moved the post %PostTitle% to trash %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished%', 'wp-security-audit-log' ), 'post', 'deleted' ),
109
- array( 2014, WSAL_LOW, __( 'User restored a post from trash', 'wp-security-audit-log' ), __( 'Restored the post %PostTitle% from trash %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'restored' ),
110
- array( 2017, WSAL_INFORMATIONAL, __( 'User changed post URL', 'wp-security-audit-log' ), __( 'Changed the URL of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous URL: %OldUrl% %LineBreak% New URL: %NewUrl% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
111
- array( 2019, WSAL_INFORMATIONAL, __( 'User changed post author', 'wp-security-audit-log' ), __( 'Changed the author of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous author: %OldAuthor% %LineBreak% New author: %NewAuthor% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%.', 'wp-security-audit-log' ), 'post', 'modified' ),
112
- array( 2021, WSAL_MEDIUM, __( 'User changed post status', 'wp-security-audit-log' ), __( 'Changed the status of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status was: %OldStatus% %LineBreak% New status: %NewStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
113
- array( 2025, WSAL_LOW, __( 'User changed the visibility of a post', 'wp-security-audit-log' ), __( 'Changed the visibility of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Visibility was: %OldVisibility% %LineBreak% Visibility is: %NewVisibility% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
114
- array( 2027, WSAL_INFORMATIONAL, __( 'User changed the date of a post', 'wp-security-audit-log' ), __( 'Changed the date of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous date: %OldDate% %LineBreak% New date: %NewDate% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
115
- array( 2047, WSAL_LOW, __( 'User changed the parent of a page', 'wp-security-audit-log' ), __( 'Changed the parent of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous parent: %OldParentName% %LineBreak% New parent: %NewParentName% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
116
- array( 2048, WSAL_LOW, __( 'User changed the template of a page', 'wp-security-audit-log' ), __( 'Changed the template of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous template: %OldTemplate% %LineBreak% New template: %NewTemplate% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
117
- array( 2049, WSAL_INFORMATIONAL, __( 'User set a post as sticky', 'wp-security-audit-log' ), __( 'Set the post %PostTitle% as sticky %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
118
- array( 2050, WSAL_INFORMATIONAL, __( 'User removed post from sticky', 'wp-security-audit-log' ), __( 'Removed the post %PostTitle% from sticky %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
119
- array( 2065, WSAL_LOW, __( 'User modified the content of a post', 'wp-security-audit-log' ), __( 'Modified the content of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% %RevisionLink% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
120
- array( 2073, WSAL_INFORMATIONAL, __( 'User submitted a post for review', 'wp-security-audit-log' ), __( 'Submitted the post %PostTitle% for review %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
121
- array( 2074, WSAL_LOW, __( 'User scheduled a post', 'wp-security-audit-log' ), __( 'Scheduled the post %PostTitle% to be published on %PublishingDate% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
122
- array( 2086, WSAL_INFORMATIONAL, __( 'User changed title of a post', 'wp-security-audit-log' ), __( 'Changed the title of the post %OldTitle% %LineBreak% New title: %NewTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
123
- array( 2100, WSAL_INFORMATIONAL, __( 'User opened a post in the editor', 'wp-security-audit-log' ), __( 'Opened the post %PostTitle% in the editor %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'opened' ),
124
- array( 2101, WSAL_INFORMATIONAL, __( 'User viewed a post', 'wp-security-audit-log' ), __( 'Viewed the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% URL: %PostUrl% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'viewed' ),
125
- array( 2111, WSAL_LOW, __( 'User enabled/disabled comments in a post', 'wp-security-audit-log' ), __( 'The comments in the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'enabled' ),
126
- array( 2112, WSAL_LOW, __( 'User enabled/disabled trackbacks and pingbacks in a post', 'wp-security-audit-log' ), __( 'Pingbacks and Trackbacks in the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'enabled' ),
 
 
127
  ),
128
 
129
  __( 'Tags', 'wp-security-audit-log' ) => array(
@@ -131,39 +127,39 @@ function wsaldefaults_wsal_init() {
131
  array( 2120, WSAL_INFORMATIONAL, __( 'User removed post tag', 'wp-security-audit-log' ), __( 'Removed tag(s) from the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Removed tag(s): %tag% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
132
  array( 2121, WSAL_INFORMATIONAL, __( 'User created new tag', 'wp-security-audit-log' ), __( 'Created the tag %TagName% %LineBreak% Slug: %Slug% %LineBreak% %TagLink%', 'wp-security-audit-log' ), 'tag', 'created' ),
133
  array( 2122, WSAL_LOW, __( 'User deleted tag', 'wp-security-audit-log' ), __( 'Deleted the tag %TagName% %LineBreak% Slug: %Slug%', 'wp-security-audit-log' ), 'tag', 'deleted' ),
134
- array( 2123, WSAL_INFORMATIONAL, __( 'User renamed tag', 'wp-security-audit-log' ), __( 'Old name: %old_name% %LineBreak% New name: %new_name% %LineBreak% Slug: %Slug% %LineBreak% %TagLink%', 'wp-security-audit-log' ), 'tag', 'renamed' ),
135
  array( 2124, WSAL_INFORMATIONAL, __( 'User changed tag slug', 'wp-security-audit-log' ), __( 'Changed the slug of the tag %tag% %LineBreak% Previous slug: %old_slug% %LineBreak% New slug: %new_slug% %LineBreak% %TagLink%', 'wp-security-audit-log' ), 'tag', 'modified' ),
136
  array( 2125, WSAL_INFORMATIONAL, __( 'User changed tag description', 'wp-security-audit-log' ), __( 'Changed the description of the tag %tag% %LineBreak% Slug: %Slug% %LineBreak% Previous description: %old_desc% %LineBreak% New description: %new_desc% %LineBreak% %TagLink%', 'wp-security-audit-log' ), 'tag', 'modified' ),
137
  ),
138
 
139
  __( 'Categories', 'wp-security-audit-log' ) => array(
140
- array( 2016, WSAL_LOW, __( 'User changed post category', 'wp-security-audit-log' ), __( 'Changed the category of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous category(ies): %OldCategories% %LineBreak% New category(ies): %NewCategories% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
141
  array( 2023, WSAL_MEDIUM, __( 'User created new category', 'wp-security-audit-log' ), __( 'Created the category %CategoryName% %LineBreak% Slug: %Slug% %LineBreak% %CategoryLink%', 'wp-security-audit-log' ), 'category', 'created' ),
142
  array( 2024, WSAL_MEDIUM, __( 'User deleted category', 'wp-security-audit-log' ), __( 'Deleted the category %CategoryName% %LineBreak% Slug: %Slug%', 'wp-security-audit-log' ), 'category', 'deleted' ),
143
  array( 2052, WSAL_LOW, __( 'Changed the parent of a category', 'wp-security-audit-log' ), __( 'Changed the parent of the category %CategoryName% %LineBreak% Slug: %Slug% %LineBreak% Previous parent: %OldParent% %LineBreak% New parent: %NewParent% %LineBreak% %CategoryLink%', 'wp-security-audit-log' ), 'category', 'modified' ),
144
- array( 2127, WSAL_LOW, __( 'User changed category name', 'wp-security-audit-log' ), __( 'Previous name: %old_name% %LineBreak% New name: %new_name% %LineBreak% Slug: %slug% %LineBreak% %cat_link%', 'wp-security-audit-log' ), 'category', 'renamed' ),
145
  array( 2128, WSAL_LOW, __( 'User changed category slug', 'wp-security-audit-log' ), __( 'Changed the slug of the category: %CategoryName% %LineBreak% Previous slug: %old_slug% %LineBreak% New slug: %new_slug% %LineBreak% %cat_link%', 'wp-security-audit-log' ), 'category', 'modified' ),
146
  ),
147
 
148
  __( 'Custom Fields', 'wp-security-audit-log' ) => array(
149
- array( 2053, WSAL_LOW, __( 'User created a custom field for a post', 'wp-security-audit-log' ), __( 'Created a new custom field called %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Custom field value: %MetaValue% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%', 'wp-security-audit-log' ), 'post', 'modified' ),
150
- array( 2054, WSAL_LOW, __( 'User updated a custom field value for a post', 'wp-security-audit-log' ), __( 'Modified the value of the custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Previous custom field value: %MetaValueOld% %LineBreak% New custom field value: %MetaValueNew% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%.', 'wp-security-audit-log' ), 'custom-field', 'modified' ),
151
- array( 2055, WSAL_MEDIUM, __( 'User deleted a custom field from a post', 'wp-security-audit-log' ), __( 'Deleted the custom field %MetaKey% from the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'custom-field', 'deleted' ),
152
- array( 2062, WSAL_LOW, __( 'User updated a custom field name for a post', 'wp-security-audit-log' ), __( 'Old custom field name: %MetaKeyOld% %LineBreak% New custom field name: %MetaKeyNew% %LineBreak% Post: %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'custom-field', 'renamed' ),
153
  ),
154
 
155
  __( 'Custom Fields (ACF)', 'wp-security-audit-log' ) => array(
156
  array( 2131,
157
  WSAL_LOW,
158
  __( 'User added relationship to a custom field value for a post', 'mwp-al-ext' ),
159
- __( 'Modified the value of the custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Added the following relationships: %Relationships% %LineBreak% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%.', 'mwp-al-ext' ),
160
  'custom-field',
161
  'modified'
162
  ),
163
  array( 2132,
164
  WSAL_LOW,
165
  __( 'User removed relationship from a custom field value for a post', 'mwp-al-ext' ),
166
- __( 'Modified the value of the custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Removed the following relationships: %Relationships% %LineBreak% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%.', 'mwp-al-ext' ),
167
  'custom-field',
168
  'modified'
169
  ),
@@ -173,28 +169,28 @@ function wsaldefaults_wsal_init() {
173
  * Alerts: Comments
174
  */
175
  __( 'Comments', 'wp-security-audit-log' ) => array(
176
- array( 2090, WSAL_INFORMATIONAL, __( 'User approved a comment', 'wp-security-audit-log' ), __( 'Approved the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'approved' ),
177
- array( 2091, WSAL_INFORMATIONAL, __( 'User unapproved a comment', 'wp-security-audit-log' ), __( 'Unapproved the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'unapproved' ),
178
- array( 2092, WSAL_INFORMATIONAL, __( 'User replied to a comment', 'wp-security-audit-log' ), __( 'Replied to the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'created' ),
179
- array( 2093, WSAL_LOW, __( 'User edited a comment', 'wp-security-audit-log' ), __( 'Edited the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'modified' ),
180
- array( 2094, WSAL_INFORMATIONAL, __( 'User marked a comment as Spam', 'wp-security-audit-log' ), __( 'Marked the comment posted by %Author% on the post %PostTitle% as spam %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'unapproved' ),
181
- array( 2095, WSAL_LOW, __( 'User marked a comment as Not Spam', 'wp-security-audit-log' ), __( 'Marked the comment posted by %Author% on the post %PostTitle% as not spam %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'approved' ),
182
- array( 2096, WSAL_LOW, __( 'User moved a comment to trash', 'wp-security-audit-log' ), __( 'Moved the comment posted by %Author% on the post %PostTitle% to trash %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'deleted' ),
183
- array( 2097, WSAL_INFORMATIONAL, __( 'User restored a comment from the trash', 'wp-security-audit-log' ), __( 'Restored the comment posted by %Author% on the post %PostTitle% from trash %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'restored' ),
184
- array( 2098, WSAL_LOW, __( 'User permanently deleted a comment', 'wp-security-audit-log' ), __( 'Permanently deleted the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% Comment ID: %CommentID%', 'wp-security-audit-log' ), 'comment', 'deleted' ),
185
- array( 2099, WSAL_INFORMATIONAL, __( 'User posted a comment', 'wp-security-audit-log' ), __( 'Posted a comment on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'created' ),
186
  /**
187
  * IMPORTANT: This alert is deprecated but should not be
188
  * removed from the definitions for backwards compatibility.
189
  */
190
- array( 2126, WSAL_INFORMATIONAL, __( 'Visitor posted a comment', 'wp-security-audit-log' ), __( 'Posted a comment on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'created' ),
191
  ),
192
 
193
  /**
194
  * Alerts: Widgets
195
  */
196
  __( 'Widgets', 'wp-security-audit-log' ) => array(
197
- array( 2042, WSAL_MEDIUM, __( 'User added a new widget', 'wp-security-audit-log' ), __( 'Added a new %WidgetName% widget in %Sidebar%.', 'wp-security-audit-log' ), 'widget', 'added' ),
198
  array( 2043, WSAL_HIGH, __( 'User modified a widget', 'wp-security-audit-log' ), __( 'Modified the %WidgetName% widget in %Sidebar%.', 'wp-security-audit-log' ), 'widget', 'modified' ),
199
  array( 2044, WSAL_MEDIUM, __( 'User deleted widget', 'wp-security-audit-log' ), __( 'Deleted the %WidgetName% widget from %Sidebar%.', 'wp-security-audit-log' ), 'widget', 'deleted' ),
200
  array( 2045, WSAL_LOW, __( 'User moved widget', 'wp-security-audit-log' ), __( 'Moved the %WidgetName% widget %LineBreak% From: %OldSidebar% %LineBreak% To: %NewSidebar%', 'wp-security-audit-log' ), 'widget', 'modified' ),
@@ -205,15 +201,15 @@ function wsaldefaults_wsal_init() {
205
  * Alerts: Menus
206
  */
207
  __( 'Menus', 'wp-security-audit-log' ) => array(
208
- array( 2078, WSAL_LOW, __( 'User created new menu', 'wp-security-audit-log' ), __( 'New menu called %MenuName%.', 'wp-security-audit-log' ), 'menu', 'created' ),
209
- array( 2079, WSAL_LOW, __( 'User added content to a menu', 'wp-security-audit-log' ), __( 'Added new item to the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName% ', 'wp-security-audit-log' ), 'menu', 'modified' ),
210
- array( 2080, WSAL_LOW, __( 'User removed content from a menu', 'wp-security-audit-log' ), __( 'Removed item from the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName%', 'wp-security-audit-log' ), 'menu', 'modified' ),
211
  array( 2081, WSAL_MEDIUM, __( 'User deleted menu', 'wp-security-audit-log' ), __( 'Deleted the menu %MenuName%', 'wp-security-audit-log' ), 'menu', 'deleted' ),
212
- array( 2082, WSAL_LOW, __( 'User changed menu setting', 'wp-security-audit-log' ), __( 'The setting in the %MenuName% %LineBreak% Setting: %MenuSetting%', 'wp-security-audit-log' ), 'menu', 'enabled' ),
213
- array( 2083, WSAL_LOW, __( 'User modified content in a menu', 'wp-security-audit-log' ), __( 'Modified an item in the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName%', 'wp-security-audit-log' ), 'menu', 'modified' ),
214
- array( 2084, WSAL_LOW, __( 'User changed name of a menu', 'wp-security-audit-log' ), __( 'Old name: %OldMenuName% %LineBreak% New name: %NewMenuName%', 'wp-security-audit-log' ), 'menu', 'renamed' ),
215
- array( 2085, WSAL_LOW, __( 'User changed order of the objects in a menu', 'wp-security-audit-log' ), __( 'Changed the order of the items in the menu %MenuName%', 'wp-security-audit-log' ), 'menu', 'modified' ),
216
- array( 2089, WSAL_LOW, __( 'User moved objects as a sub-item', 'wp-security-audit-log' ), __( 'Menu name: %MenuName% %LineBreak% Moved item %ItemName% as a sub-item of %ParentName%', 'wp-security-audit-log' ), 'menu', 'modified' ),
217
  ),
218
 
219
  /**
@@ -301,61 +297,67 @@ function wsaldefaults_wsal_init() {
301
 
302
  __( 'User Accounts', 'wp-security-audit-log' ) => array(
303
  __( 'User Profiles', 'wp-security-audit-log' ) => array(
304
- array( 4000, WSAL_CRITICAL, __( 'New user was created on WordPress', 'wp-security-audit-log' ), __( 'New user: %NewUserData->Username% %LineBreak% Role: %NewUserData->Roles% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'created' ),
305
  array( 4001, WSAL_CRITICAL, __( 'User created another WordPress user', 'wp-security-audit-log' ), __( 'New user: %NewUserData->Username% %LineBreak% Role: %NewUserData->Roles% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'created' ),
306
- array( 4002, WSAL_CRITICAL, __( 'The role of a user was changed by another WordPress user', 'wp-security-audit-log' ), __( 'Changed the role of the user %TargetUsername% %LineBreak% New role: %NewRole% %LineBreak% Previous role: %OldRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
307
- array( 4003, WSAL_HIGH, __( 'User has changed his or her password', 'wp-security-audit-log' ), __( 'Changed the password %LineBreak% First name: %TargetUserData->FirstName% %LineBreak% Last name: %TargetUserData->LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
308
  array( 4004, WSAL_HIGH, __( 'User changed another user\'s password', 'wp-security-audit-log' ), __( 'Changed the password of the user %TargetUserData->Username% %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %TargetUserData->FirstName% %LineBreak% Last name: %TargetUserData->LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
309
- array( 4005, WSAL_MEDIUM, __( 'User changed his or her email address', 'wp-security-audit-log' ), __( 'Changed the email address to %NewEmail% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
310
- array( 4006, WSAL_MEDIUM, __( 'User changed another user\'s email address', 'wp-security-audit-log' ), __( 'Changed the email address of the user %TargetUsername% %LineBreak% New email address: %NewEmail% %LineBreak% Previous email address: %OldEmail% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
311
  array( 4007, WSAL_HIGH, __( 'User was deleted by another user', 'wp-security-audit-log' ), __( 'User: %TargetUserData->Username% %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName%', 'wp-security-audit-log' ), 'user', 'deleted' ),
312
  array( 4014, WSAL_INFORMATIONAL, __( 'User opened the profile page of another user', 'wp-security-audit-log' ), __( 'The profile page of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'opened' ),
313
- array( 4015, WSAL_LOW, __( 'User updated a custom field value for a user', 'wp-security-audit-log' ), __( 'Changed the value of a custom field in the user profile %TargetUsername% %LineBreak% Custom field: %custom_field_name% %LineBreak% Previous value: %old_value% %LineBreak% New value: %new_value% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
314
- array( 4016, WSAL_LOW, __( 'User created a custom field value for a user', 'wp-security-audit-log' ), __( 'Created a new custom field in the user profile %TargetUsername% %LineBreak% Custom field: %custom_field_name% %LineBreak% Custom field value: %new_value% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
315
- array( 4017, WSAL_INFORMATIONAL, __( 'User changed first name for a user', 'wp-security-audit-log' ), __( 'Changed the first name of the user %TargetUsername% %LineBreak% Previous name: %old_firstname% %LineBreak% New name: %new_firstname% %LineBreak% Role: %Roles% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
316
- array( 4018, WSAL_INFORMATIONAL, __( 'User changed last name for a user', 'wp-security-audit-log' ), __( 'Changed the last name of the user %TargetUsername% %LineBreak% Previous last name: %old_lastname% %LineBreak% New last name: %new_lastname% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
317
- array( 4019, WSAL_INFORMATIONAL, __( 'User changed nickname for a user', 'wp-security-audit-log' ), __( 'Changed the nickname of the user %TargetUsername% %LineBreak% Previous nickname: %old_nickname% New nickname: %new_nickname% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
318
- array( 4020, WSAL_LOW, __( 'User changed the display name for a user', 'wp-security-audit-log' ), __( 'Changed the display name of the user %TargetUsername% %LineBreak% Previous display name: %old_displayname% %LineBreak% New display name: %new_displayname% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
 
 
 
 
 
 
319
  ),
320
 
321
  __( 'Multisite User Profiles', 'wp-security-audit-log' ) => array(
322
- array( 4008, WSAL_CRITICAL, __( 'User granted Super Admin privileges', 'wp-security-audit-log' ), __( 'Granted Super Admin privileges to %TargetUsername% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
323
- array( 4009, WSAL_CRITICAL, __( 'User revoked from Super Admin privileges', 'wp-security-audit-log' ), __( 'Revoked Super Admin privileges from %TargetUsername% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
324
  array( 4010, WSAL_MEDIUM, __( 'Existing user added to a site', 'wp-security-audit-log' ), __( 'Added user %TargetUsername% to site: %SiteName% %LineBreak% Role: %TargetUserRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
325
- array( 4011, WSAL_MEDIUM, __( 'User removed from site', 'wp-security-audit-log' ), __( 'Removed user %TargetUsername% from site: %SiteName% %LineBreak% Previous role: %TargetUserRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
326
  array( 4012, WSAL_CRITICAL, __( 'New network user created', 'wp-security-audit-log' ), __( 'Created a new network user %NewUserData->Username% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'created' ),
327
  ),
328
  ),
329
 
330
  __( 'Plugins & Themes', 'wp-security-audit-log' ) => array(
331
  __( 'Plugins', 'wp-security-audit-log' ) => array(
332
- array( 5000, WSAL_CRITICAL, __( 'User installed a plugin', 'wp-security-audit-log' ), __( 'Name: %Plugin->Name% %LineBreak% Install location: %Plugin->plugin_dir_path%', 'wp-security-audit-log' ), 'plugin', 'installed' ),
333
- array( 5001, WSAL_HIGH, __( 'User activated a WordPress plugin', 'wp-security-audit-log' ), __( 'Name: %PluginData->Name% %LineBreak% Install location: %PluginFile%', 'wp-security-audit-log' ), 'plugin', 'activated' ),
334
- array( 5002, WSAL_HIGH, __( 'User deactivated a WordPress plugin', 'wp-security-audit-log' ), __( 'Name: %PluginData->Name% %LineBreak% Install location: %PluginFile%', 'wp-security-audit-log' ), 'plugin', 'deactivated' ),
335
- array( 5003, WSAL_HIGH, __( 'User uninstalled a plugin', 'wp-security-audit-log' ), __( 'Name: %PluginData->Name% %LineBreak% Install location: %PluginFile%', 'wp-security-audit-log' ), 'plugin', 'uninstalled' ),
336
- array( 5004, WSAL_LOW, __( 'User upgraded a plugin', 'wp-security-audit-log' ), __( 'Name: %PluginData->Name% %LineBreak% Install location: %PluginFile%', 'wp-security-audit-log' ), 'plugin', 'updated' ),
337
- array( 5010, WSAL_LOW, __( 'Plugin created table', 'wp-security-audit-log' ), __( 'Plugin created this table in the database %LineBreak% Plugin: %Plugin->Name% %LineBreak% Table: %TableNames%', 'wp-security-audit-log' ), 'database', 'created' ),
338
- array( 5011, WSAL_LOW, __( 'Plugin modified table structure', 'wp-security-audit-log' ), __( 'Plugin modified the structure of this table %LineBreak% Plugin: %Plugin->Name% %LineBreak% Table: %TableNames%', 'wp-security-audit-log' ), 'database', 'modified' ),
339
- array( 5012, WSAL_MEDIUM, __( 'Plugin deleted table', 'wp-security-audit-log' ), __( 'Plugin deleted this table from the database %LineBreak% Plugin: %Plugin->Name% %LineBreak% Table: %TableNames%', 'wp-security-audit-log' ), 'database', 'deleted' ),
340
- array( 5019, WSAL_MEDIUM, __( 'A plugin created a post', 'wp-security-audit-log' ), __( 'Plugin %PluginName% created the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% %EditorLinkPage%', 'wp-security-audit-log' ), 'post', 'created' ),
341
- array( 5025, WSAL_LOW, __( 'A plugin deleted a post', 'wp-security-audit-log' ), __( 'Plugin %PluginName% deleted the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Type: %PostType%', 'wp-security-audit-log' ), 'post', 'deleted' ),
342
  array( 2051, WSAL_HIGH, __( 'User changed a file using the plugin editor', 'wp-security-audit-log' ), __( 'Modified a file with the plugin editor %LineBreak% File: %File%', 'wp-security-audit-log' ), 'file', 'modified' ),
343
  ),
344
 
345
  __( 'Themes', 'wp-security-audit-log' ) => array(
346
- array( 5005, WSAL_CRITICAL, __( 'User installed a theme', 'wp-security-audit-log' ), __( 'Theme: "%Theme->Name%" %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'installed' ),
347
- array( 5006, WSAL_HIGH, __( 'User activated a theme', 'wp-security-audit-log' ), __( 'Theme "%Theme->Name%" %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'activated' ),
348
- array( 5007, WSAL_HIGH, __( 'User uninstalled a theme', 'wp-security-audit-log' ), __( 'Theme "%Theme->Name%" %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'deleted' ),
349
- array( 5013, WSAL_LOW, __( 'Theme created tables', 'wp-security-audit-log' ), __( 'Theme created these tables in the database %LineBreak% Theme: %Theme->Name% %LineBreak% Tables: %TableNames%', 'wp-security-audit-log' ), 'database', 'created' ),
350
- array( 5014, WSAL_LOW, __( 'Theme modified tables structure', 'wp-security-audit-log' ), __( 'Theme modified the structure of these database tables %LineBreak% Theme: %Theme->Name% %LineBreak% Tables: %TableNames%', 'wp-security-audit-log' ), 'database', 'modified' ),
351
- array( 5015, WSAL_MEDIUM, __( 'Theme deleted tables', 'wp-security-audit-log' ), __( 'Theme deleted these tables from the database %LineBreak% Theme: %Theme->Name% %LineBreak% Tables: %TableNames%', 'wp-security-audit-log' ), 'database', 'deleted' ),
352
- array( 5031, WSAL_LOW, __( 'User updated a theme', 'wp-security-audit-log' ), __( 'Name: %Theme->Name% %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'updated' ),
353
  array( 2046, WSAL_HIGH, __( 'User changed a file using the theme editor', 'wp-security-audit-log' ), __( 'Modified a file with the theme editor %LineBreak% File: %Theme%/%File%', 'wp-security-audit-log' ), 'file', 'modified' ),
354
  ),
355
 
356
  __( 'Themes on Multisite', 'wp-security-audit-log' ) => array(
357
- array( 5008, WSAL_HIGH, __( 'Activated theme on network', 'wp-security-audit-log' ), __( 'Network activated the theme %Theme->Name% %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'activated' ),
358
- array( 5009, WSAL_MEDIUM, __( 'Deactivated theme from network', 'wp-security-audit-log' ), __( 'Network deactivated the theme %Theme->Name% %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'deactivated' ),
359
  ),
360
 
361
  __( 'Database Events', 'wp-security-audit-log' ) => array(
@@ -377,34 +379,52 @@ function wsaldefaults_wsal_init() {
377
  array( 0004, E_CRITICAL, __( 'PHP exception', 'wp-security-audit-log' ), __( '%Message%.', 'wp-security-audit-log' ) ),
378
  array( 0005, E_CRITICAL, __( 'PHP shutdown error', 'wp-security-audit-log' ), __( '%Message%.', 'wp-security-audit-log' ) ),
379
  array( 6004, WSAL_MEDIUM, __( 'WordPress was updated', 'wp-security-audit-log' ), __( 'Updated WordPress %LineBreak% Previous version: %OldVersion% %LineBreak% New version: %NewVersion%', 'wp-security-audit-log' ), 'system', 'updated' ),
 
 
 
 
 
 
 
380
  array( 9999, E_CRITICAL, __( 'Advertising Extensions', 'wp-security-audit-log' ), __( '%PromoName% %PromoMessage%', 'wp-security-audit-log' ) ),
381
  ),
382
 
383
  __( 'Activity log plugin', 'wp-security-audit-log' ) => array(
384
- array( 6000, WSAL_INFORMATIONAL, __( 'Events automatically pruned by system', 'wp-security-audit-log' ), __( 'System automatically deleted %EventCount% event(s)', 'wp-security-audit-log' ), 'wp-activity-log', 'deleted' ),
385
- array( 6006, WSAL_MEDIUM, __( 'Reset the plugin\'s settings to default', 'wp-security-audit-log' ), __( 'Reset the WP Activity Log plugin settings to default', 'wp-security-audit-log' ), 'wp-activity-log', 'modified' ),
386
  array( 6034, WSAL_CRITICAL, __( 'Purged the activity log', 'wp-security-audit-log' ), __( 'Purged the activity log', 'wp-security-audit-log' ), 'wp-activity-log', 'deleted' ),
387
- array( 6043, WSAL_HIGH, __( 'Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard', 'wp-security-audit-log' ), __( 'Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard.', 'wp-security-audit-log' ), 'wp-activity-log', 'modified' ),
388
  ),
389
 
390
  __( 'WordPress Site Settings', 'wp-security-audit-log' ) => array(
391
- array( 6001, WSAL_CRITICAL, __( 'Option Anyone Can Register in WordPress settings changed', 'wp-security-audit-log' ), __( 'The option Anyone can register', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
392
- array( 6002, WSAL_CRITICAL, __( 'New User Default Role changed', 'wp-security-audit-log' ), __( 'Changed the new user default role %LineBreak% Previous role: %OldRole% %LineBreak% New role: %NewRole%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
393
- array( 6003, WSAL_CRITICAL, __( 'WordPress Administrator Notification email changed', 'wp-security-audit-log' ), __( 'Changed the WordPress administrator notification email address %LineBreak% Previous address %OldEmail% %LineBreak% New address: %NewEmail%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
394
  array( 6005, WSAL_HIGH, __( 'User changes the WordPress Permalinks', 'wp-security-audit-log' ), __( 'Changed the WordPress permalinks %LineBreak% Previous permalinks: %OldPattern% %LineBreak% New permalinks: %NewPattern%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
395
- array( 6008, WSAL_INFORMATIONAL, __( 'Enabled/Disabled the option Discourage search engines from indexing this site', 'wp-security-audit-log' ), __( 'Discourage search engines from indexing this site.', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
396
  array( 6009, WSAL_MEDIUM, __( 'Enabled/Disabled comments on all the website', 'wp-security-audit-log' ), __( 'Comments on the website', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
397
- array( 6010, WSAL_MEDIUM, __( 'Enabled/Disabled the option Comment author must fill out name and email', 'wp-security-audit-log' ), __( 'The option Comment author must fill out name and email', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
398
- array( 6011, WSAL_MEDIUM, __( 'Enabled/Disabled the option Users must be logged in and registered to comment', 'wp-security-audit-log' ), __( 'The option Users must be logged in and registered to comment', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
399
- array( 6012, WSAL_INFORMATIONAL, __( 'Enabled/Disabled the option to automatically close comments', 'wp-security-audit-log' ), __( 'The option to Automatically close comments after %Value% days', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
400
- array( 6013, WSAL_INFORMATIONAL, __( 'Changed the value of the option Automatically close comments', 'wp-security-audit-log' ), __( 'Changed the value of the option to Automatically close comments after a number of days %LineBreak% Previous value: %OldValue% %LineBreak% New value: %NewValue%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
401
- array( 6014, WSAL_MEDIUM, __( 'Enabled/Disabled the option for comments to be manually approved', 'wp-security-audit-log' ), __( 'The option for comments to be manually approved', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
402
- array( 6015, WSAL_LOW, __( 'Enabled/Disabled the option for an author to have previously approved comments for the comments to appear', 'wp-security-audit-log' ), __( 'The option for an author to have previously approved comments for the comments to appear', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
403
- array( 6016, WSAL_LOW, __( 'Changed the number of links that a comment must have to be held in the queue', 'wp-security-audit-log' ), __( 'Changed the minimum number of links a comment must have to be held in the queue %LineBreak% Previous value: %OldValue% %LineBreak% New value: %NewValue%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
404
- array( 6017, WSAL_INFORMATIONAL, __( 'Modified the list of keywords for comments moderation', 'wp-security-audit-log' ), __( 'Modified the list of keywords for comments medoration', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
405
- array( 6018, WSAL_INFORMATIONAL, __( 'Modified the list of keywords for comments blacklisting', 'wp-security-audit-log' ), __( 'Modified the list of keywords for comments blacklisting', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
406
- array( 6024, WSAL_CRITICAL, __( 'Option WordPress Address (URL) in WordPress settings changed', 'wp-security-audit-log' ), __( 'Changed the WordPress address (URL) %LineBreak% Previous URL: %old_url% %LineBreak% New URL: %new_url%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
407
- array( 6025, WSAL_CRITICAL, __( 'Option Site Address (URL) in WordPress settings changed', 'wp-security-audit-log' ), __( 'Changed the site address (URL) %LineBreak% Previous URL: %old_url% %LineBreak% New URL: %new_url%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
 
 
 
 
 
 
 
 
 
 
 
408
  ),
409
  ),
410
 
@@ -416,6 +436,11 @@ function wsaldefaults_wsal_init() {
416
  array( 7003, WSAL_HIGH, __( 'Deactivated site has been activated', 'wp-security-audit-log' ), __( 'Activated the site: %SiteName% %LineBreak% URL: %BlogURL%', 'wp-security-audit-log' ), 'multisite-network', 'activated' ),
417
  array( 7004, WSAL_HIGH, __( 'Site has been deactivated', 'wp-security-audit-log' ), __( 'Deactivated the site: %SiteName% %LineBreak% URL: %BlogURL%', 'wp-security-audit-log' ), 'multisite-network', 'deactivated' ),
418
  array( 7005, WSAL_HIGH, __( 'Existing site deleted from network', 'wp-security-audit-log' ), __( 'The site: %SiteName% %LineBreak% URL: %BlogURL%', 'wp-security-audit-log' ), 'multisite-network', 'deleted' ),
 
 
 
 
 
419
  array( 7012, WSAL_HIGH, __( 'Allow new registrations settings changed', 'wp-security-audit-log' ), __( 'Changed the <strong>Allow new registrations</strong> settings %LineBreak% Previous setting: %previous_setting% %LineBreak% New setting: %new_setting%', 'wp-security-audit-log' ), 'multisite-network', 'modified' ),
420
  ),
421
  ),
@@ -435,7 +460,7 @@ function wsaldefaults_wsal_init() {
435
  }
436
 
437
  // Load Custom alerts.
438
- load_include_custom_file( $wsal );
439
  }
440
 
441
  add_action( 'init', 'wsaldefaults_wsal_init', 5 );
21
  defined( 'E_CRITICAL' ) || define( 'E_CRITICAL', 'E_CRITICAL' );
22
 
23
  /**
24
+ * Gets an array of directories to loop through to add custom alerts.
25
+ *
26
+ * Passed through a filter so other plugins or code can add own custom
27
+ * alerts files by adding the containing directory to this array.
28
+ *
29
+ * @since 3.5.1 - Added the `wsal_custom_alerts_dirs` filter.
30
  *
31
  * @param WpSecurityAuditLog $wsal - Instance of main plugin.
32
  */
33
+ function wsal_load_include_custom_files( $wsal ) {
34
+ $paths = apply_filters( 'wsal_custom_alerts_dirs', array() );
 
 
 
 
 
 
 
 
 
 
 
 
35
  foreach ( $paths as $inc_path ) {
36
  // Check directory.
37
  if ( is_dir( $inc_path ) && is_readable( $inc_path ) ) {
78
  array(
79
  __( 'Users Logins & Sessions Events', 'wp-security-audit-log' ) => array(
80
  __( 'User Activity', 'wp-security-audit-log' ) => array(
81
+ array( 1000, WSAL_LOW, __( 'User logged in', 'wp-security-audit-log' ), __( 'User logged in', 'wp-security-audit-log' ), 'user', 'login' ),
82
+ array( 1001, WSAL_LOW, __( 'User logged out', 'wp-security-audit-log' ), __( 'User logged out', 'wp-security-audit-log' ), 'user', 'logout' ),
83
+ array( 1002, WSAL_MEDIUM, __( 'Login failed', 'wp-security-audit-log' ), __( '%Attempts% failed login(s)', 'wp-security-audit-log' ), 'user', 'failed-login' ),
84
  array( 1003, WSAL_LOW, __( 'Login failed / non existing user', 'wp-security-audit-log' ), __( '%Attempts% failed login(s) %LineBreak% %LogFileText%', 'wp-security-audit-log' ), 'system', 'failed-login' ),
85
  array( 1004, WSAL_MEDIUM, __( 'Login blocked', 'wp-security-audit-log' ), __( 'Login blocked because other session(s) already exist for this user. %LineBreak% IP address: %ClientIP%', 'wp-security-audit-log' ), 'user', 'blocked' ),
86
  array( 1005, WSAL_LOW, __( 'User logged in with existing session(s)', 'wp-security-audit-log' ), __( 'User logged in. There are other session(s) using the same username logged in from these IP address(es): %IPAddress%', 'wp-security-audit-log' ), 'user', 'login' ),
87
  array( 1006, WSAL_MEDIUM, __( 'User logged out all other sessions with the same username', 'wp-security-audit-log' ), __( 'Logged out all other sessions with the same user.', 'wp-security-audit-log' ), 'user', 'logout' ),
88
+ array( 1007, WSAL_MEDIUM, __( 'User session destroyed and logged out', 'wp-security-audit-log' ), __( 'Terminated the session of another user. %LineBreak% User: %TargetUserName% %LineBreak% Role: %TargetUserRole% %LineBreak% Session ID: %TargetSessionID%', 'wp-security-audit-log' ), 'user', 'logout' ),
89
  array( 1008, WSAL_MEDIUM, __( 'Switched to another user', 'wp-security-audit-log' ), __( 'Switched to another user. %LineBreak% User: %TargetUserName% %LineBreak% Role: %TargetUserRole%', 'wp-security-audit-log' ), 'user', 'login' ),
90
  array( 2010, WSAL_MEDIUM, __( 'User uploaded file from Uploads directory', 'wp-security-audit-log' ), __( 'Filename: %FileName% %LineBreak% Directory: %FilePath%', 'wp-security-audit-log' ), 'file', 'uploaded' ),
91
  array( 2011, WSAL_LOW, __( 'User deleted file from Uploads directory', 'wp-security-audit-log' ), __( 'Filename: %FileName% %LineBreak% Directory: %FilePath%', 'wp-security-audit-log' ), 'file', 'deleted' ),
92
+ array( 1010, WSAL_INFORMATIONAL, __( 'User requested a password reset', 'wp-security-audit-log' ), __( 'User requested a password reset. This does not mean that the password was changed.', 'wp-security-audit-log' ), 'user', 'submitted' ),
93
  ),
94
  ),
95
 
96
  __( 'Content & Comments', 'wp-security-audit-log' ) => array(
97
  __( 'Content', 'wp-security-audit-log' ) => array(
98
+ array( 2000, WSAL_INFORMATIONAL, __( 'User created a new post and saved it as draft', 'wp-security-audit-log' ), __( 'Created the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'created' ),
99
+ array( 2001, WSAL_LOW, __( 'User published a post', 'wp-security-audit-log' ), __( 'Published the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'published' ),
100
+ array( 2002, WSAL_LOW, __( 'User modified a post', 'wp-security-audit-log' ), __( 'Modified the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
101
+ array( 2008, WSAL_MEDIUM, __( 'User permanently deleted a post from the trash', 'wp-security-audit-log' ), __( 'Permanently deleted the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus%', 'wp-security-audit-log' ), 'post', 'deleted' ),
102
+ array( 2012, WSAL_MEDIUM, __( 'User moved a post to the trash', 'wp-security-audit-log' ), __( 'Moved the post %PostTitle% to trash %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished%', 'wp-security-audit-log' ), 'post', 'deleted' ),
103
+ array( 2014, WSAL_LOW, __( 'User restored a post from trash', 'wp-security-audit-log' ), __( 'Restored the post %PostTitle% from trash %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'restored' ),
104
+ array( 2017, WSAL_INFORMATIONAL, __( 'User changed post URL', 'wp-security-audit-log' ), __( 'Changed the URL of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous URL: %OldUrl% %LineBreak% New URL: %NewUrl% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
105
+ array( 2019, WSAL_INFORMATIONAL, __( 'User changed post author', 'wp-security-audit-log' ), __( 'Changed the author of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous author: %OldAuthor% %LineBreak% New author: %NewAuthor% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%.', 'wp-security-audit-log' ), 'post', 'modified' ),
106
+ array( 2021, WSAL_MEDIUM, __( 'User changed post status', 'wp-security-audit-log' ), __( 'Changed the status of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Previous status: %OldStatus% %LineBreak% New status: %NewStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
107
+ array( 2025, WSAL_LOW, __( 'User changed the visibility of a post', 'wp-security-audit-log' ), __( 'Changed the visibility of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous visibility status: %OldVisibility% %LineBreak% New visibility status: %NewVisibility% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
108
+ array( 2027, WSAL_INFORMATIONAL, __( 'User changed the date of a post', 'wp-security-audit-log' ), __( 'Changed the date of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous date: %OldDate% %LineBreak% New date: %NewDate% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
109
+ array( 2047, WSAL_LOW, __( 'User changed the parent of a page', 'wp-security-audit-log' ), __( 'Changed the parent of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous parent: %OldParentName% %LineBreak% New parent: %NewParentName% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
110
+ array( 2048, WSAL_LOW, __( 'User changed the template of a page', 'wp-security-audit-log' ), __( 'Changed the template of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous template: %OldTemplate% %LineBreak% New template: %NewTemplate% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
111
+ array( 2049, WSAL_INFORMATIONAL, __( 'User set a post as sticky', 'wp-security-audit-log' ), __( 'Set the post %PostTitle% as sticky %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
112
+ array( 2050, WSAL_INFORMATIONAL, __( 'User removed post from sticky', 'wp-security-audit-log' ), __( 'Removed the post %PostTitle% from sticky %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
113
+ array( 2065, WSAL_LOW, __( 'User modified the content of a post', 'wp-security-audit-log' ), __( 'Modified the content of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% %RevisionLink% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
114
+ array( 2073, WSAL_INFORMATIONAL, __( 'User submitted a post for review', 'wp-security-audit-log' ), __( 'Submitted the post %PostTitle% for review %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
115
+ array( 2074, WSAL_LOW, __( 'User scheduled a post', 'wp-security-audit-log' ), __( 'Scheduled the post %PostTitle% to be published on %PublishingDate% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
116
+ array( 2086, WSAL_INFORMATIONAL, __( 'User changed title of a post', 'wp-security-audit-log' ), __( 'Changed the title of the post %OldTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% New title: %NewTitle% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
117
+ array( 2100, WSAL_INFORMATIONAL, __( 'User opened a post in the editor', 'wp-security-audit-log' ), __( 'Opened the post %PostTitle% in the editor %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'opened' ),
118
+ array( 2101, WSAL_INFORMATIONAL, __( 'User viewed a post', 'wp-security-audit-log' ), __( 'Viewed the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% URL: %PostUrl% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'viewed' ),
119
+ array( 2111, WSAL_LOW, __( 'User enabled/disabled comments in a post', 'wp-security-audit-log' ), __( 'The comments in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'enabled' ),
120
+ array( 2112, WSAL_LOW, __( 'User enabled/disabled trackbacks and pingbacks in a post', 'wp-security-audit-log' ), __( 'Pingbacks and Trackbacks in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'enabled' ),
121
+ array( 2129, WSAL_INFORMATIONAL, __( 'User updated the excerpt in a post', 'wp-security-audit-log' ), __( 'The excerpt of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous excerpt entry: %old_post_excerpt% %LineBreak% New excerpt entry: %post_excerpt% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
122
+ array( 2130, WSAL_INFORMATIONAL, __( 'User updated the featured image in a post', 'wp-security-audit-log' ), __( 'The featured image of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous image: %previous_image% %LineBreak% New image: %new_image% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
123
  ),
124
 
125
  __( 'Tags', 'wp-security-audit-log' ) => array(
127
  array( 2120, WSAL_INFORMATIONAL, __( 'User removed post tag', 'wp-security-audit-log' ), __( 'Removed tag(s) from the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Removed tag(s): %tag% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
128
  array( 2121, WSAL_INFORMATIONAL, __( 'User created new tag', 'wp-security-audit-log' ), __( 'Created the tag %TagName% %LineBreak% Slug: %Slug% %LineBreak% %TagLink%', 'wp-security-audit-log' ), 'tag', 'created' ),
129
  array( 2122, WSAL_LOW, __( 'User deleted tag', 'wp-security-audit-log' ), __( 'Deleted the tag %TagName% %LineBreak% Slug: %Slug%', 'wp-security-audit-log' ), 'tag', 'deleted' ),
130
+ array( 2123, WSAL_INFORMATIONAL, __( 'User renamed tag', 'wp-security-audit-log' ), __( 'Previous name: %old_name% %LineBreak% New name: %new_name% %LineBreak% Slug: %Slug% %LineBreak% %TagLink%', 'wp-security-audit-log' ), 'tag', 'renamed' ),
131
  array( 2124, WSAL_INFORMATIONAL, __( 'User changed tag slug', 'wp-security-audit-log' ), __( 'Changed the slug of the tag %tag% %LineBreak% Previous slug: %old_slug% %LineBreak% New slug: %new_slug% %LineBreak% %TagLink%', 'wp-security-audit-log' ), 'tag', 'modified' ),
132
  array( 2125, WSAL_INFORMATIONAL, __( 'User changed tag description', 'wp-security-audit-log' ), __( 'Changed the description of the tag %tag% %LineBreak% Slug: %Slug% %LineBreak% Previous description: %old_desc% %LineBreak% New description: %new_desc% %LineBreak% %TagLink%', 'wp-security-audit-log' ), 'tag', 'modified' ),
133
  ),
134
 
135
  __( 'Categories', 'wp-security-audit-log' ) => array(
136
+ array( 2016, WSAL_LOW, __( 'User changed post category', 'wp-security-audit-log' ), __( 'Changed the category of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous category(ies): %OldCategories% %LineBreak% New category(ies): %NewCategories% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'post', 'modified' ),
137
  array( 2023, WSAL_MEDIUM, __( 'User created new category', 'wp-security-audit-log' ), __( 'Created the category %CategoryName% %LineBreak% Slug: %Slug% %LineBreak% %CategoryLink%', 'wp-security-audit-log' ), 'category', 'created' ),
138
  array( 2024, WSAL_MEDIUM, __( 'User deleted category', 'wp-security-audit-log' ), __( 'Deleted the category %CategoryName% %LineBreak% Slug: %Slug%', 'wp-security-audit-log' ), 'category', 'deleted' ),
139
  array( 2052, WSAL_LOW, __( 'Changed the parent of a category', 'wp-security-audit-log' ), __( 'Changed the parent of the category %CategoryName% %LineBreak% Slug: %Slug% %LineBreak% Previous parent: %OldParent% %LineBreak% New parent: %NewParent% %LineBreak% %CategoryLink%', 'wp-security-audit-log' ), 'category', 'modified' ),
140
+ array( 2127, WSAL_LOW, __( 'User changed category name', 'wp-security-audit-log' ), __( 'Previous name: %old_name% %LineBreak% New name: %new_name% %LineBreak% Slug: %slug% %LineBreak% %cat_link%', 'wp-security-audit-log' ), 'category', 'renamed' ),
141
  array( 2128, WSAL_LOW, __( 'User changed category slug', 'wp-security-audit-log' ), __( 'Changed the slug of the category: %CategoryName% %LineBreak% Previous slug: %old_slug% %LineBreak% New slug: %new_slug% %LineBreak% %cat_link%', 'wp-security-audit-log' ), 'category', 'modified' ),
142
  ),
143
 
144
  __( 'Custom Fields', 'wp-security-audit-log' ) => array(
145
+ array( 2053, WSAL_LOW, __( 'User created a custom field for a post', 'wp-security-audit-log' ), __( 'Created the new custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Custom field value: %MetaValue% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%', 'wp-security-audit-log' ), 'post', 'modified' ),
146
+ array( 2054, WSAL_LOW, __( 'User updated a custom field value for a post', 'wp-security-audit-log' ), __( 'Modified the value of the custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous custom field value: %MetaValueOld% %LineBreak% New custom field value: %MetaValueNew% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%.', 'wp-security-audit-log' ), 'custom-field', 'modified' ),
147
+ array( 2055, WSAL_MEDIUM, __( 'User deleted a custom field from a post', 'wp-security-audit-log' ), __( 'Deleted the custom field %MetaKey% from the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'custom-field', 'deleted' ),
148
+ array( 2062, WSAL_LOW, __( 'User updated a custom field name for a post', 'wp-security-audit-log' ), __( 'Previous custom field name: %MetaKeyOld% %LineBreak% New custom field name: %MetaKeyNew% %LineBreak% Post: %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%', 'wp-security-audit-log' ), 'custom-field', 'renamed' ),
149
  ),
150
 
151
  __( 'Custom Fields (ACF)', 'wp-security-audit-log' ) => array(
152
  array( 2131,
153
  WSAL_LOW,
154
  __( 'User added relationship to a custom field value for a post', 'mwp-al-ext' ),
155
+ __( 'Added relationships to the custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% New relationships: %Relationships% %LineBreak% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%.', 'mwp-al-ext' ),
156
  'custom-field',
157
  'modified'
158
  ),
159
  array( 2132,
160
  WSAL_LOW,
161
  __( 'User removed relationship from a custom field value for a post', 'mwp-al-ext' ),
162
+ __( 'Removed relationships from the custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Removed relationships: %Relationships% %LineBreak% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%.', 'mwp-al-ext' ),
163
  'custom-field',
164
  'modified'
165
  ),
169
  * Alerts: Comments
170
  */
171
  __( 'Comments', 'wp-security-audit-log' ) => array(
172
+ array( 2090, WSAL_INFORMATIONAL, __( 'User approved a comment', 'wp-security-audit-log' ), __( 'Approved the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'approved' ),
173
+ array( 2091, WSAL_INFORMATIONAL, __( 'User unapproved a comment', 'wp-security-audit-log' ), __( 'Unapproved the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'unapproved' ),
174
+ array( 2092, WSAL_INFORMATIONAL, __( 'User replied to a comment', 'wp-security-audit-log' ), __( 'Replied to the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'created' ),
175
+ array( 2093, WSAL_LOW, __( 'User edited a comment', 'wp-security-audit-log' ), __( 'Edited the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'modified' ),
176
+ array( 2094, WSAL_INFORMATIONAL, __( 'User marked a comment as Spam', 'wp-security-audit-log' ), __( 'Marked the comment posted by %Author% on the post %PostTitle% as spam %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'unapproved' ),
177
+ array( 2095, WSAL_LOW, __( 'User marked a comment as Not Spam', 'wp-security-audit-log' ), __( 'Marked the comment posted by %Author% on the post %PostTitle% as not spam %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'approved' ),
178
+ array( 2096, WSAL_LOW, __( 'User moved a comment to trash', 'wp-security-audit-log' ), __( 'Moved the comment posted by %Author% on the post %PostTitle% to trash %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'deleted' ),
179
+ array( 2097, WSAL_INFORMATIONAL, __( 'User restored a comment from the trash', 'wp-security-audit-log' ), __( 'Restored the comment posted by %Author% on the post %PostTitle% from trash %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'restored' ),
180
+ array( 2098, WSAL_LOW, __( 'User permanently deleted a comment', 'wp-security-audit-log' ), __( 'Permanently deleted the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished%', 'wp-security-audit-log' ), 'comment', 'deleted' ),
181
+ array( 2099, WSAL_INFORMATIONAL, __( 'User posted a comment', 'wp-security-audit-log' ), __( 'Posted a comment on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'created' ),
182
  /**
183
  * IMPORTANT: This alert is deprecated but should not be
184
  * removed from the definitions for backwards compatibility.
185
  */
186
+ array( 2126, WSAL_INFORMATIONAL, __( 'Visitor posted a comment', 'wp-security-audit-log' ), __( 'Posted a comment on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%', 'wp-security-audit-log' ), 'comment', 'created' ),
187
  ),
188
 
189
  /**
190
  * Alerts: Widgets
191
  */
192
  __( 'Widgets', 'wp-security-audit-log' ) => array(
193
+ array( 2042, WSAL_MEDIUM, __( 'User added a new widget', 'wp-security-audit-log' ), __( 'Added a new %WidgetName% widget in %Sidebar%.', 'wp-security-audit-log' ), 'widget', 'added' ),
194
  array( 2043, WSAL_HIGH, __( 'User modified a widget', 'wp-security-audit-log' ), __( 'Modified the %WidgetName% widget in %Sidebar%.', 'wp-security-audit-log' ), 'widget', 'modified' ),
195
  array( 2044, WSAL_MEDIUM, __( 'User deleted widget', 'wp-security-audit-log' ), __( 'Deleted the %WidgetName% widget from %Sidebar%.', 'wp-security-audit-log' ), 'widget', 'deleted' ),
196
  array( 2045, WSAL_LOW, __( 'User moved widget', 'wp-security-audit-log' ), __( 'Moved the %WidgetName% widget %LineBreak% From: %OldSidebar% %LineBreak% To: %NewSidebar%', 'wp-security-audit-log' ), 'widget', 'modified' ),
201
  * Alerts: Menus
202
  */
203
  __( 'Menus', 'wp-security-audit-log' ) => array(
204
+ array( 2078, WSAL_LOW, __( 'User created new menu', 'wp-security-audit-log' ), __( 'New menu called %MenuName% %MenuUrl%', 'wp-security-audit-log' ), 'menu', 'created' ),
205
+ array( 2079, WSAL_LOW, __( 'User added content to a menu', 'wp-security-audit-log' ), __( 'Added new item to the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName% %MenuUrl%', 'wp-security-audit-log' ), 'menu', 'modified' ),
206
+ array( 2080, WSAL_LOW, __( 'User removed content from a menu', 'wp-security-audit-log' ), __( 'Removed item from the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName% %MenuUrl%', 'wp-security-audit-log' ), 'menu', 'modified' ),
207
  array( 2081, WSAL_MEDIUM, __( 'User deleted menu', 'wp-security-audit-log' ), __( 'Deleted the menu %MenuName%', 'wp-security-audit-log' ), 'menu', 'deleted' ),
208
+ array( 2082, WSAL_LOW, __( 'User changed menu setting', 'wp-security-audit-log' ), __( 'The setting in the %MenuName% %LineBreak% Setting: %MenuSetting% %MenuUrl%', 'wp-security-audit-log' ), 'menu', 'enabled' ),
209
+ array( 2083, WSAL_LOW, __( 'User modified content in a menu', 'wp-security-audit-log' ), __( 'Modified an item in the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName% %MenuUrl%', 'wp-security-audit-log' ), 'menu', 'modified' ),
210
+ array( 2084, WSAL_LOW, __( 'User changed name of a menu', 'wp-security-audit-log' ), __( 'Previous name: %OldMenuName% %LineBreak% New name: %MenuName% %MenuUrl%', 'wp-security-audit-log' ), 'menu', 'renamed' ),
211
+ array( 2085, WSAL_LOW, __( 'User changed order of the objects in a menu', 'wp-security-audit-log' ), __( 'Changed the order of the items in the menu %MenuName% %MenuUrl%', 'wp-security-audit-log' ), 'menu', 'modified' ),
212
+ array( 2089, WSAL_LOW, __( 'User moved objects as a sub-item', 'wp-security-audit-log' ), __( 'Menu name: %MenuName% %LineBreak% Moved item %ItemName% as a sub-item of %ParentName% %MenuUrl%', 'wp-security-audit-log' ), 'menu', 'modified' ),
213
  ),
214
 
215
  /**
297
 
298
  __( 'User Accounts', 'wp-security-audit-log' ) => array(
299
  __( 'User Profiles', 'wp-security-audit-log' ) => array(
300
+ array( 4000, WSAL_CRITICAL, __( 'New user was created on WordPress', 'wp-security-audit-log' ), __( 'New user created via registration %LineBreak% User: %NewUserData->Username% %LineBreak% Role: %NewUserData->Roles% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'created' ),
301
  array( 4001, WSAL_CRITICAL, __( 'User created another WordPress user', 'wp-security-audit-log' ), __( 'New user: %NewUserData->Username% %LineBreak% Role: %NewUserData->Roles% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'created' ),
302
+ array( 4002, WSAL_CRITICAL, __( 'The role of a user was changed by another WordPress user', 'wp-security-audit-log' ), __( 'Changed the role of user %TargetUsername% %LineBreak% Previous role: %OldRole% %LineBreak% New role: %NewRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
303
+ array( 4003, WSAL_HIGH, __( 'User has changed his or her password', 'wp-security-audit-log' ), __( 'Changed the password %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %TargetUserData->FirstName% %LineBreak% Last name: %TargetUserData->LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
304
  array( 4004, WSAL_HIGH, __( 'User changed another user\'s password', 'wp-security-audit-log' ), __( 'Changed the password of the user %TargetUserData->Username% %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %TargetUserData->FirstName% %LineBreak% Last name: %TargetUserData->LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
305
+ array( 4005, WSAL_MEDIUM, __( 'User changed his or her email address', 'wp-security-audit-log' ), __( 'Changed the email address %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Previous email address: %OldEmail% %LineBreak% New email address: %NewEmail% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
306
+ array( 4006, WSAL_MEDIUM, __( 'User changed another user\'s email address', 'wp-security-audit-log' ), __( 'Changed the email address of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Previous email address: %OldEmail% %LineBreak% New email address: %NewEmail% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
307
  array( 4007, WSAL_HIGH, __( 'User was deleted by another user', 'wp-security-audit-log' ), __( 'User: %TargetUserData->Username% %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName%', 'wp-security-audit-log' ), 'user', 'deleted' ),
308
  array( 4014, WSAL_INFORMATIONAL, __( 'User opened the profile page of another user', 'wp-security-audit-log' ), __( 'The profile page of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'opened' ),
309
+ array( 4015, WSAL_LOW, __( 'User updated a custom field value for a user', 'wp-security-audit-log' ), __( 'Changed the value of a custom field in the user profile %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Custom field: %custom_field_name% %LineBreak% Previous value: %old_value% %LineBreak% New value: %new_value% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
310
+ array( 4016, WSAL_LOW, __( 'User created a custom field value for a user', 'wp-security-audit-log' ), __( 'Created a new custom field in the user profile %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Custom field: %custom_field_name% %LineBreak% Custom field value: %new_value% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
311
+ array( 4017, WSAL_INFORMATIONAL, __( 'User changed first name for a user', 'wp-security-audit-log' ), __( 'Changed the first name of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% Previous name: %old_firstname% %LineBreak% New name: %new_firstname% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
312
+ array( 4018, WSAL_INFORMATIONAL, __( 'User changed last name for a user', 'wp-security-audit-log' ), __( 'Changed the last name of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Previous last name: %old_lastname% %LineBreak% New last name: %new_lastname% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
313
+ array( 4019, WSAL_INFORMATIONAL, __( 'User changed nickname for a user', 'wp-security-audit-log' ), __( 'Changed the nickname of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Previous nickname: %old_nickname% New nickname: %new_nickname% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
314
+ array( 4020, WSAL_LOW, __( 'User changed the display name for a user', 'wp-security-audit-log' ), __( 'Changed the display name of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Previous display name: %old_displayname% %LineBreak% New display name: %new_displayname% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
315
+
316
+ array( 4025, WSAL_CRITICAL, __( 'User created an application password', 'wp-security-audit-log' ), __( 'An application password %LineBreak% Role: %roles% %LineBreak% First name: %firstname% %LineBreak% Last name: %lastname% %LineBreak% Application password friendly name: %friendly_name%', 'wp-security-audit-log' ), 'user', 'added' ),
317
+ array( 4026, WSAL_CRITICAL, __( 'User created an application password', 'wp-security-audit-log' ), __( 'An application password for the user %login% %LineBreak% Role: %roles% %LineBreak% First name: %firstname% %LineBreak% Last name: %lastname% %LineBreak% Application password friendly name: %friendly_name%', 'wp-security-audit-log' ), 'user', 'added' ),
318
+
319
+ array( 4027, WSAL_HIGH, __( 'User revoked all application passwords', 'wp-security-audit-log' ), __( 'All application passwords %LineBreak% Role: %roles% %LineBreak% First name: %firstname% %LineBreak% Last name: %lastname%', 'wp-security-audit-log' ), 'user', 'revoked' ),
320
+ array( 4028, WSAL_HIGH, __( 'User revoked all application passwords for a user', 'wp-security-audit-log' ), __( 'All application passwords from the user %login% %LineBreak% Role: %roles% %LineBreak% First name: %firstname% %LineBreak% Last name: %lastname%', 'wp-security-audit-log' ), 'user', 'revoked' ),
321
  ),
322
 
323
  __( 'Multisite User Profiles', 'wp-security-audit-log' ) => array(
324
+ array( 4008, WSAL_CRITICAL, __( 'User granted Super Admin privileges', 'wp-security-audit-log' ), __( 'Granted Super Admin privileges to %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
325
+ array( 4009, WSAL_CRITICAL, __( 'User revoked from Super Admin privileges', 'wp-security-audit-log' ), __( 'Revoked Super Admin privileges from %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
326
  array( 4010, WSAL_MEDIUM, __( 'Existing user added to a site', 'wp-security-audit-log' ), __( 'Added user %TargetUsername% to site: %SiteName% %LineBreak% Role: %TargetUserRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
327
+ array( 4011, WSAL_MEDIUM, __( 'User removed from site', 'wp-security-audit-log' ), __( 'Removed user %TargetUsername% from site: %SiteName% %LineBreak% Site role: %TargetUserRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'modified' ),
328
  array( 4012, WSAL_CRITICAL, __( 'New network user created', 'wp-security-audit-log' ), __( 'Created a new network user %NewUserData->Username% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName% %LineBreak% %EditUserLink%', 'wp-security-audit-log' ), 'user', 'created' ),
329
  ),
330
  ),
331
 
332
  __( 'Plugins & Themes', 'wp-security-audit-log' ) => array(
333
  __( 'Plugins', 'wp-security-audit-log' ) => array(
334
+ array( 5000, WSAL_CRITICAL, __( 'User installed a plugin', 'wp-security-audit-log' ), __( 'Name: %Plugin->Name% %LineBreak% Version: %Plugin->Version% %LineBreak% Install location: %Plugin->plugin_dir_path%', 'wp-security-audit-log' ), 'plugin', 'installed' ),
335
+ array( 5001, WSAL_HIGH, __( 'User activated a WordPress plugin', 'wp-security-audit-log' ), __( 'Name: %PluginData->Name% %LineBreak% Version: %PluginData->Version% %LineBreak% Install location: %PluginFile%', 'wp-security-audit-log' ), 'plugin', 'activated' ),
336
+ array( 5002, WSAL_HIGH, __( 'User deactivated a WordPress plugin', 'wp-security-audit-log' ), __( 'Name: %PluginData->Name% %LineBreak% Version: %PluginData->Version% %LineBreak% Install location: %PluginFile%', 'wp-security-audit-log' ), 'plugin', 'deactivated' ),
337
+ array( 5003, WSAL_HIGH, __( 'User uninstalled a plugin', 'wp-security-audit-log' ), __( 'Name: %PluginData->Name% %LineBreak% Version: %PluginData->Version% %LineBreak% Install location: %PluginFile%', 'wp-security-audit-log' ), 'plugin', 'uninstalled' ),
338
+ array( 5004, WSAL_LOW, __( 'User upgraded a plugin', 'wp-security-audit-log' ), __( 'Name: %PluginData->Name% %LineBreak% Updated version: %PluginData->Version% %LineBreak% Install location: %PluginFile%', 'wp-security-audit-log' ), 'plugin', 'updated' ),
339
+ array( 5010, WSAL_LOW, __( 'Plugin created table', 'wp-security-audit-log' ), __( 'Plugin created this table in the database %LineBreak% Table: %TableNames% %LineBreak% Plugin: %Plugin->Name%', 'wp-security-audit-log' ), 'database', 'created' ),
340
+ array( 5011, WSAL_LOW, __( 'Plugin modified table structure', 'wp-security-audit-log' ), __( 'Plugin modified the structure of this table %LineBreak% Table: %TableNames% %LineBreak% Plugin: %Plugin->Name%', 'wp-security-audit-log' ), 'database', 'modified' ),
341
+ array( 5012, WSAL_MEDIUM, __( 'Plugin deleted table', 'wp-security-audit-log' ), __( 'Plugin deleted this table from the database %LineBreak% Table: %TableNames% %LineBreak% Plugin: %Plugin->Name%', 'wp-security-audit-log' ), 'database', 'deleted' ),
342
+ array( 5019, WSAL_MEDIUM, __( 'A plugin created a post', 'wp-security-audit-log' ), __( 'Plugin created the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Plugin: %PluginName% %LineBreak% %EditorLinkPage%', 'wp-security-audit-log' ), 'post', 'created' ),
343
+ array( 5025, WSAL_LOW, __( 'A plugin deleted a post', 'wp-security-audit-log' ), __( 'Plugin deleted the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Plugin: %PluginName%', 'wp-security-audit-log' ), 'post', 'deleted' ),
344
  array( 2051, WSAL_HIGH, __( 'User changed a file using the plugin editor', 'wp-security-audit-log' ), __( 'Modified a file with the plugin editor %LineBreak% File: %File%', 'wp-security-audit-log' ), 'file', 'modified' ),
345
  ),
346
 
347
  __( 'Themes', 'wp-security-audit-log' ) => array(
348
+ array( 5005, WSAL_CRITICAL, __( 'User installed a theme', 'wp-security-audit-log' ), __( 'Name: %Theme->Name% %LineBreak% Version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'installed' ),
349
+ array( 5006, WSAL_HIGH, __( 'User activated a theme', 'wp-security-audit-log' ), __( 'Name: %Theme->Name% %LineBreak% Version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'activated' ),
350
+ array( 5007, WSAL_HIGH, __( 'User uninstalled a theme', 'wp-security-audit-log' ), __( 'Name: %Theme->Name% %LineBreak% Version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'deleted' ),
351
+ array( 5013, WSAL_LOW, __( 'Theme created tables', 'wp-security-audit-log' ), __( 'Theme created this table in the database %LineBreak% Table: %TableNames% %LineBreak% Theme: %Theme->Name%', 'wp-security-audit-log' ), 'database', 'created' ),
352
+ array( 5014, WSAL_LOW, __( 'Theme modified tables structure', 'wp-security-audit-log' ), __( 'Theme modified the structure of this database table %LineBreak% Table: %TableNames% %LineBreak% Theme: %Theme->Name%', 'wp-security-audit-log' ), 'database', 'modified' ),
353
+ array( 5015, WSAL_MEDIUM, __( 'Theme deleted tables', 'wp-security-audit-log' ), __( 'Theme deleted this table from the database %LineBreak% Tables: %TableNames% %LineBreak% Theme: %Theme->Name%', 'wp-security-audit-log' ), 'database', 'deleted' ),
354
+ array( 5031, WSAL_LOW, __( 'User updated a theme', 'wp-security-audit-log' ), __( 'Name: %Theme->Name% %LineBreak% New version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'updated' ),
355
  array( 2046, WSAL_HIGH, __( 'User changed a file using the theme editor', 'wp-security-audit-log' ), __( 'Modified a file with the theme editor %LineBreak% File: %Theme%/%File%', 'wp-security-audit-log' ), 'file', 'modified' ),
356
  ),
357
 
358
  __( 'Themes on Multisite', 'wp-security-audit-log' ) => array(
359
+ array( 5008, WSAL_HIGH, __( 'Activated theme on network', 'wp-security-audit-log' ), __( 'Network activated the theme %Theme->Name% %LineBreak% Version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'activated' ),
360
+ array( 5009, WSAL_MEDIUM, __( 'Deactivated theme from network', 'wp-security-audit-log' ), __( 'Network deactivated the theme %Theme->Name% %LineBreak% Version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%', 'wp-security-audit-log' ), 'theme', 'deactivated' ),
361
  ),
362
 
363
  __( 'Database Events', 'wp-security-audit-log' ) => array(
379
  array( 0004, E_CRITICAL, __( 'PHP exception', 'wp-security-audit-log' ), __( '%Message%.', 'wp-security-audit-log' ) ),
380
  array( 0005, E_CRITICAL, __( 'PHP shutdown error', 'wp-security-audit-log' ), __( '%Message%.', 'wp-security-audit-log' ) ),
381
  array( 6004, WSAL_MEDIUM, __( 'WordPress was updated', 'wp-security-audit-log' ), __( 'Updated WordPress %LineBreak% Previous version: %OldVersion% %LineBreak% New version: %NewVersion%', 'wp-security-audit-log' ), 'system', 'updated' ),
382
+ /**
383
+ * Alerts: Advertising Extensions
384
+ *
385
+ * IMPORTANT: This alert should not be removed from here for backwards compatibility.
386
+ *
387
+ * @deprecated 4.2.0
388
+ */
389
  array( 9999, E_CRITICAL, __( 'Advertising Extensions', 'wp-security-audit-log' ), __( '%PromoName% %PromoMessage%', 'wp-security-audit-log' ) ),
390
  ),
391
 
392
  __( 'Activity log plugin', 'wp-security-audit-log' ) => array(
393
+ array( 6000, WSAL_INFORMATIONAL, __( 'Events automatically pruned by system', 'wp-security-audit-log' ), __( 'System automatically deleted %EventCount% events', 'wp-security-audit-log' ), 'wp-activity-log', 'deleted' ),
394
+ array( 6006, WSAL_MEDIUM, __( 'Reset the plugin\'s settings to default', 'wp-security-audit-log' ), __( 'Reset the activity log plugin\'s settings to default', 'wp-security-audit-log' ), 'wp-activity-log', 'modified' ),
395
  array( 6034, WSAL_CRITICAL, __( 'Purged the activity log', 'wp-security-audit-log' ), __( 'Purged the activity log', 'wp-security-audit-log' ), 'wp-activity-log', 'deleted' ),
396
+ array( 6043, WSAL_HIGH, __( 'Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard', 'wp-security-audit-log' ), __( 'Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard.', 'wp-security-audit-log' ), 'wp-activity-log', 'modified' ),
397
  ),
398
 
399
  __( 'WordPress Site Settings', 'wp-security-audit-log' ) => array(
400
+ array( 6001, WSAL_CRITICAL, __( 'Option Anyone Can Register in WordPress settings changed', 'wp-security-audit-log' ), __( 'The <strong>Membership</strong> setting <strong>Anyone can register</strong>', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
401
+ array( 6002, WSAL_CRITICAL, __( 'New User Default Role changed', 'wp-security-audit-log' ), __( 'Changed the <strong>New user default role</strong> WordPress setting %LineBreak% Previous role: %OldRole% %LineBreak% New role: %NewRole%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
402
+ array( 6003, WSAL_CRITICAL, __( 'WordPress Administrator Notification email changed', 'wp-security-audit-log' ), __( 'Change the <strong>Administrator email address</strong> in the WordPress settings %LineBreak% Previous address %OldEmail% %LineBreak% New address: %NewEmail%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
403
  array( 6005, WSAL_HIGH, __( 'User changes the WordPress Permalinks', 'wp-security-audit-log' ), __( 'Changed the WordPress permalinks %LineBreak% Previous permalinks: %OldPattern% %LineBreak% New permalinks: %NewPattern%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
404
+ array( 6008, WSAL_INFORMATIONAL, __( 'Enabled/Disabled the option Discourage search engines from indexing this site', 'wp-security-audit-log' ), __( 'The <strong>Search engine visibility</strong> in the WordPess settings (Discourage search engines from indexing this site)', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
405
  array( 6009, WSAL_MEDIUM, __( 'Enabled/Disabled comments on all the website', 'wp-security-audit-log' ), __( 'Comments on the website', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
406
+
407
+ array( 6010, WSAL_MEDIUM, __( 'Enabled/Disabled the option Comment author must fill out name and email', 'wp-security-audit-log' ), __( 'The WordPress setting <strong>Comment author must fill out name and email</strong>', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
408
+ array( 6011, WSAL_MEDIUM, __( 'Enabled/Disabled the option Users must be logged in and registered to comment', 'wp-security-audit-log' ), __( 'The WordPress setting <strong>Users must be registered and logged in to comment</strong>', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
409
+ array( 6012, WSAL_INFORMATIONAL, __( 'Enabled/Disabled the option to automatically close comments', 'wp-security-audit-log' ), __( 'The WordPress setting <strong>Automatically close comments after %Value% days</strong>', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
410
+ array( 6013, WSAL_INFORMATIONAL, __( 'Changed the value of the option Automatically close comments', 'wp-security-audit-log' ), __( 'Changed the value of the WordPress setting to <strong>Automatically close comments after a number of days</strong> %LineBreak% Previous value: %OldValue% %LineBreak% New value: %NewValue%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
411
+ array( 6014, WSAL_MEDIUM, __( 'Enabled/Disabled the option for comments to be manually approved', 'wp-security-audit-log' ), __( 'The WordPress setting <strong>Comments must be manualy approved</strong>', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
412
+ array( 6015, WSAL_LOW, __( 'Enabled/Disabled the option for an author to have previously approved comments for the comments to appear', 'wp-security-audit-log' ), __( 'The WordPress setting <strong>Comment author must have a previously approved comment</strong>', 'wp-security-audit-log' ), 'system-setting', 'enabled' ),
413
+ array( 6016, WSAL_LOW, __( 'Changed the number of links that a comment must have to be held in the queue', 'wp-security-audit-log' ), __( 'Changed the WordPress setting <strong>Hold a comment in the queue if it contains links</strong> %LineBreak% Previous value: %OldValue% %LineBreak% New value: %NewValue%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
414
+ array( 6017, WSAL_INFORMATIONAL, __( 'Modified the list of keywords for comments moderation', 'wp-security-audit-log' ), __( 'Modified the list of keywords for comments medoration in WordPress', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
415
+ array( 6018, WSAL_INFORMATIONAL, __( 'Modified the list of keywords for comments blacklisting', 'wp-security-audit-log' ), __( 'Modified the list of <strong>Disallowed comment keys</strong> (keywords) for comments blacklisting in WordPress', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
416
+ array( 6024, WSAL_CRITICAL, __( 'Option WordPress Address (URL) in WordPress settings changed', 'wp-security-audit-log' ), __( 'Changed the <strong>WordPress address (URL)</strong> %LineBreak% Previous URL: %old_url% %LineBreak% New URL: %new_url%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
417
+ array( 6025, WSAL_CRITICAL, __( 'Option Site Address (URL) in WordPress settings changed', 'wp-security-audit-log' ), __( 'Changed the <strong>Site address (URL)</strong> %LineBreak% Previous URL: %old_url% %LineBreak% New URL: %new_url%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
418
+
419
+ array( 6035, WSAL_CRITICAL, __( 'Option Your homepage displays in WordPress settings changed', 'wp-security-audit-log' ), __( 'The <strong>Your homepage displays</strong> in the WordPress settings %LineBreak% Previous setting: %old_homepage% %LineBreak% New setting: %new_homepage%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
420
+ array( 6036, WSAL_CRITICAL, __( 'Option homepage in WordPress settings changed', 'wp-security-audit-log' ), __( 'Changed the <strong>Homepage</strong> in the WordPress settings %LineBreak% Previous page: %old_page% %LineBreak% New page: %new_page%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
421
+ array( 6037, WSAL_CRITICAL, __( 'Option posts page in WordPress settings changed', 'wp-security-audit-log' ), __( 'Changed the <strong>Posts page</strong> in the WordPress settings %LineBreak% Previous page: %old_page% %LineBreak% New setting: %new_page%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
422
+
423
+ array( 6040, WSAL_CRITICAL, __( 'Option Timezone in WordPress settings changed', 'wp-security-audit-log' ), __( 'The <strong>Timezone</strong> in the WordPress settings %LineBreak% Previous timezone: %old_timezone% %LineBreak% New timezone: %new_timezone%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
424
+ array( 6041, WSAL_CRITICAL, __( 'Option Date format in WordPress settings changed', 'wp-security-audit-log' ), __( 'The <strong>Date format</strong> in the WordPress settings %LineBreak% Previous format: %old_date_format% %LineBreak% New format: %new_date_format%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
425
+ array( 6042, WSAL_CRITICAL, __( 'Option Time format in WordPress settings changed', 'wp-security-audit-log' ), __( 'The <strong>Time format</strong> in the WordPress settings %LineBreak% Previous format: %old_time_format% %LineBreak% New format: %new_time_format%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
426
+
427
+ array( 6044, WSAL_CRITICAL, __( 'Option Automatic updates setting changed', 'wp-security-audit-log' ), __( 'The <strong>Automatic updates</strong> in the WordPress settings %LineBreak% %updates_status%', 'wp-security-audit-log' ), 'system-setting', 'modified' ),
428
  ),
429
  ),
430
 
436
  array( 7003, WSAL_HIGH, __( 'Deactivated site has been activated', 'wp-security-audit-log' ), __( 'Activated the site: %SiteName% %LineBreak% URL: %BlogURL%', 'wp-security-audit-log' ), 'multisite-network', 'activated' ),
437
  array( 7004, WSAL_HIGH, __( 'Site has been deactivated', 'wp-security-audit-log' ), __( 'Deactivated the site: %SiteName% %LineBreak% URL: %BlogURL%', 'wp-security-audit-log' ), 'multisite-network', 'deactivated' ),
438
  array( 7005, WSAL_HIGH, __( 'Existing site deleted from network', 'wp-security-audit-log' ), __( 'The site: %SiteName% %LineBreak% URL: %BlogURL%', 'wp-security-audit-log' ), 'multisite-network', 'deleted' ),
439
+ array( 7007, WSAL_CRITICAL, __( 'Allow site administrators to add new users to their sites settings changed', 'wp-security-audit-log' ), __( 'The network setting <strong>Allow site administrators to add new users to their sites</strong>', 'wp-security-audit-log' ), 'multisite-network', 'enabled' ),
440
+ array( 7008, WSAL_HIGH, __( 'Site upload space settings changed', 'wp-security-audit-log' ), __( 'The network setting <strong>Site upload space</strong> (to limit space allocated for each site\'s upload directory)', 'wp-security-audit-log' ), 'multisite-network', 'enabled' ),
441
+ array( 7009, WSAL_MEDIUM, __( 'Site upload space file size settings changed', 'wp-security-audit-log' ), __( 'The file size in the <strong>Site upload space</strong> network setting %LineBreak% Previous size (MB): %old_value% %LineBreak%New size (MB): %new_value%', 'wp-security-audit-log' ), 'multisite-network', 'modified' ),
442
+ array( 7010, WSAL_CRITICAL, __( 'Site Upload file types settings changed', 'wp-security-audit-log' ), __( 'The network setting <strong>Upload file types</strong> (list of allowed file types) %LineBreak% Previous value: %old_value% %LineBreak% New value: %new_value%', 'wp-security-audit-log' ), 'multisite-network', 'modified' ),
443
+ array( 7011, WSAL_CRITICAL, __( 'Site Max upload file size settings changed', 'wp-security-audit-log' ), __( 'Changed the <strong>Max upload file size</strong> network setting %LineBreak% Previous size (KB): %old_value% %LineBreak% New size (KB): %new_value%', 'wp-security-audit-log' ), 'multisite-network', 'modified' ),
444
  array( 7012, WSAL_HIGH, __( 'Allow new registrations settings changed', 'wp-security-audit-log' ), __( 'Changed the <strong>Allow new registrations</strong> settings %LineBreak% Previous setting: %previous_setting% %LineBreak% New setting: %new_setting%', 'wp-security-audit-log' ), 'multisite-network', 'modified' ),
445
  ),
446
  ),
460
  }
461
 
462
  // Load Custom alerts.
463
+ wsal_load_include_custom_files( $wsal );
464
  }
465
 
466
  add_action( 'init', 'wsaldefaults_wsal_init', 5 );
img/index.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Nothing to see here.
4
+ */
index.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Nothing to see here.
4
+ */
js/auditlog.js CHANGED
@@ -273,7 +273,7 @@ function download(filename, text) {
273
  */
274
  function download_failed_login_log(element) {
275
  var nonce = jQuery(element).data('download-nonce'); // Nonce.
276
- alert = jQuery(element).parent().attr('id').substring(5);
277
 
278
  jQuery.ajax({
279
  type: 'POST',
273
  */
274
  function download_failed_login_log(element) {
275
  var nonce = jQuery(element).data('download-nonce'); // Nonce.
276
+ alert = jQuery(element).closest( '[id^="Event"]' ).attr('id').substring(5);
277
 
278
  jQuery.ajax({
279
  type: 'POST',
js/index.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Nothing to see here.
4
+ */
js/jquery.plugin.min.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /*! Simple JavaScript Inheritance
2
+ * By John Resig http://ejohn.org/
3
+ * MIT Licensed.
4
+ */
5
+ !function(){"use strict";var a=!1;window.JQClass=function(){},JQClass.classes={},JQClass.extend=function b(c){function d(){!a&&this._init&&this._init.apply(this,arguments)}var e=this.prototype;a=!0;var f=new this;a=!1;for(var g in c)if("function"==typeof c[g]&&"function"==typeof e[g])f[g]=function(a,b){return function(){var c=this._super;this._super=function(b){return e[a].apply(this,b||[])};var d=b.apply(this,arguments);return this._super=c,d}}(g,c[g]);else if("object"==typeof c[g]&&"object"==typeof e[g]&&"defaultOptions"===g){var h,i=e[g],j=c[g],k={};for(h in i)k[h]=i[h];for(h in j)k[h]=j[h];f[g]=k}else f[g]=c[g];return d.prototype=f,d.prototype.constructor=d,d.extend=b,d}}(),/*! Abstract base class for collection plugins v1.0.2.
6
+ Written by Keith Wood (wood.keith{at}optusnet.com.au) December 2013.
7
+ Licensed under the MIT license (http://keith-wood.name/licence.html). */
8
+ function($){"use strict";function camelCase(a){return a.replace(/-([a-z])/g,function(a,b){return b.toUpperCase()})}JQClass.classes.JQPlugin=JQClass.extend({name:"plugin",defaultOptions:{},regionalOptions:{},deepMerge:!0,_getMarker:function(){return"is-"+this.name},_init:function(){$.extend(this.defaultOptions,this.regionalOptions&&this.regionalOptions[""]||{});var a=camelCase(this.name);$[a]=this,$.fn[a]=function(b){var c=Array.prototype.slice.call(arguments,1),d=this,e=this;return this.each(function(){if("string"==typeof b){if("_"===b[0]||!$[a][b])throw"Unknown method: "+b;var f=$[a][b].apply($[a],[this].concat(c));if(f!==d&&void 0!==f)return e=f,!1}else $[a]._attach(this,b)}),e}},setDefaults:function(a){$.extend(this.defaultOptions,a||{})},_attach:function(a,b){if(a=$(a),!a.hasClass(this._getMarker())){a.addClass(this._getMarker()),b=$.extend(this.deepMerge,{},this.defaultOptions,this._getMetadata(a),b||{});var c=$.extend({name:this.name,elem:a,options:b},this._instSettings(a,b));a.data(this.name,c),this._postAttach(a,c),this.option(a,b)}},_instSettings:function(a,b){return{}},_postAttach:function(a,b){},_getMetadata:function(elem){try{var data=elem.data(this.name.toLowerCase())||"";data=data.replace(/(\\?)'/g,function(a,b){return b?"'":'"'}).replace(/([a-zA-Z0-9]+):/g,function(a,b,c){var d=data.substring(0,c).match(/"/g);return d&&d.length%2!==0?b+":":'"'+b+'":'}).replace(/\\:/g,":"),data=$.parseJSON("{"+data+"}");for(var key in data)if(data.hasOwnProperty(key)){var value=data[key];"string"==typeof value&&value.match(/^new Date\(([-0-9,\s]*)\)$/)&&(data[key]=eval(value))}return data}catch(a){return{}}},_getInst:function(a){return $(a).data(this.name)||{}},option:function(a,b,c){a=$(a);var d=a.data(this.name),e=b||{};return!b||"string"==typeof b&&"undefined"==typeof c?(e=(d||{}).options,e&&b?e[b]:e):void(a.hasClass(this._getMarker())&&("string"==typeof b&&(e={},e[b]=c),this._optionsChanged(a,d,e),$.extend(d.options,e)))},_optionsChanged:function(a,b,c){},destroy:function(a){a=$(a),a.hasClass(this._getMarker())&&(this._preDestroy(a,this._getInst(a)),a.removeData(this.name).removeClass(this._getMarker()))},_preDestroy:function(a,b){}}),$.JQPlugin={createPlugin:function(a,b){"object"==typeof a&&(b=a,a="JQPlugin"),a=camelCase(a);var c=camelCase(b.name);JQClass.classes[c]=JQClass.classes[a].extend(b),new JQClass.classes[c]}}}(jQuery);
9
+ //# sourceMappingURL=jquery.plugin.min.map
languages/wp-security-audit-log.pot CHANGED
@@ -16,2418 +16,2576 @@ msgstr ""
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
- #: defaults.php:77
20
  msgid "Critical severity events."
21
  msgstr ""
22
 
23
- #: defaults.php:78
24
  msgid "High severity events."
25
  msgstr ""
26
 
27
- #: defaults.php:79
28
  msgid "Medium severity events."
29
  msgstr ""
30
 
31
- #: defaults.php:80
32
  msgid "Low severity events."
33
  msgstr ""
34
 
35
- #: defaults.php:81
36
  msgid "Informational events."
37
  msgstr ""
38
 
39
- #: defaults.php:86
40
  msgid "Users Logins & Sessions Events"
41
  msgstr ""
42
 
43
- #: defaults.php:87, extensions/email-notifications/classes/Notifications.php:1255
44
  msgid "User Activity"
45
  msgstr ""
46
 
47
- #: defaults.php:88
48
  msgid "User logged in"
49
  msgstr ""
50
 
51
- #: defaults.php:89
52
  msgid "User logged out"
53
  msgstr ""
54
 
55
- #: defaults.php:90
56
  msgid "Login failed"
57
  msgstr ""
58
 
59
- #: defaults.php:91
 
 
 
 
60
  msgid "Login failed / non existing user"
61
  msgstr ""
62
 
63
- #: defaults.php:91
64
  msgid "%Attempts% failed login(s) %LineBreak% %LogFileText%"
65
  msgstr ""
66
 
67
- #: defaults.php:92
68
  msgid "Login blocked"
69
  msgstr ""
70
 
71
- #: defaults.php:92
72
  msgid "Login blocked because other session(s) already exist for this user. %LineBreak% IP address: %ClientIP%"
73
  msgstr ""
74
 
75
- #: defaults.php:93
76
  msgid "User logged in with existing session(s)"
77
  msgstr ""
78
 
79
- #: defaults.php:93
80
  msgid "User logged in. There are other session(s) using the same username logged in from these IP address(es): %IPAddress%"
81
  msgstr ""
82
 
83
- #: defaults.php:94
84
  msgid "User logged out all other sessions with the same username"
85
  msgstr ""
86
 
87
- #: defaults.php:94
88
  msgid "Logged out all other sessions with the same user."
89
  msgstr ""
90
 
91
- #: defaults.php:95
92
  msgid "User session destroyed and logged out"
93
  msgstr ""
94
 
95
- #: defaults.php:95
96
- msgid "Terminated the session of another user. %LineBreak% User: %TargetUserName% %LineBreak% Session ID: %TargetSessionID%"
97
  msgstr ""
98
 
99
- #: defaults.php:96
100
  msgid "Switched to another user"
101
  msgstr ""
102
 
103
- #: defaults.php:96
104
  msgid "Switched to another user. %LineBreak% User: %TargetUserName% %LineBreak% Role: %TargetUserRole%"
105
  msgstr ""
106
 
107
- #: defaults.php:97
108
  msgid "User uploaded file from Uploads directory"
109
  msgstr ""
110
 
111
- #: defaults.php:97, defaults.php:98
112
  msgid "Filename: %FileName% %LineBreak% Directory: %FilePath%"
113
  msgstr ""
114
 
115
- #: defaults.php:98
116
  msgid "User deleted file from Uploads directory"
117
  msgstr ""
118
 
119
- #: defaults.php:102
 
 
 
 
 
 
 
 
120
  msgid "Content & Comments"
121
  msgstr ""
122
 
123
- #: defaults.php:103
124
  msgid "Content"
125
  msgstr ""
126
 
127
- #: defaults.php:104
128
  msgid "User created a new post and saved it as draft"
129
  msgstr ""
130
 
131
- #: defaults.php:104
132
- msgid "Created the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
133
  msgstr ""
134
 
135
- #: defaults.php:105
136
  msgid "User published a post"
137
  msgstr ""
138
 
139
- #: defaults.php:105
140
- msgid "Published the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
141
  msgstr ""
142
 
143
- #: defaults.php:106
144
  msgid "User modified a post"
145
  msgstr ""
146
 
147
- #: defaults.php:106
148
- msgid "Modified the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
149
  msgstr ""
150
 
151
- #: defaults.php:107
152
  msgid "User permanently deleted a post from the trash"
153
  msgstr ""
154
 
155
- #: defaults.php:107
156
- msgid "Permanently deleted the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType%"
157
  msgstr ""
158
 
159
- #: defaults.php:108
160
  msgid "User moved a post to the trash"
161
  msgstr ""
162
 
163
- #: defaults.php:108
164
- msgid "Moved the post %PostTitle% to trash %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished%"
165
  msgstr ""
166
 
167
- #: defaults.php:109
168
  msgid "User restored a post from trash"
169
  msgstr ""
170
 
171
- #: defaults.php:109
172
- msgid "Restored the post %PostTitle% from trash %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
173
  msgstr ""
174
 
175
- #: defaults.php:110
176
  msgid "User changed post URL"
177
  msgstr ""
178
 
179
- #: defaults.php:110
180
- msgid "Changed the URL of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous URL: %OldUrl% %LineBreak% New URL: %NewUrl% %LineBreak% %EditorLinkPost%"
181
  msgstr ""
182
 
183
- #: defaults.php:111
184
  msgid "User changed post author"
185
  msgstr ""
186
 
187
- #: defaults.php:111
188
- msgid "Changed the author of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous author: %OldAuthor% %LineBreak% New author: %NewAuthor% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%."
189
  msgstr ""
190
 
191
- #: defaults.php:112
192
  msgid "User changed post status"
193
  msgstr ""
194
 
195
- #: defaults.php:112
196
- msgid "Changed the status of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status was: %OldStatus% %LineBreak% New status: %NewStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
197
  msgstr ""
198
 
199
- #: defaults.php:113
200
  msgid "User changed the visibility of a post"
201
  msgstr ""
202
 
203
- #: defaults.php:113
204
- msgid "Changed the visibility of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Visibility was: %OldVisibility% %LineBreak% Visibility is: %NewVisibility% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
205
  msgstr ""
206
 
207
- #: defaults.php:114
208
  msgid "User changed the date of a post"
209
  msgstr ""
210
 
211
- #: defaults.php:114
212
- msgid "Changed the date of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous date: %OldDate% %LineBreak% New date: %NewDate% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
213
  msgstr ""
214
 
215
- #: defaults.php:115
216
  msgid "User changed the parent of a page"
217
  msgstr ""
218
 
219
- #: defaults.php:115
220
- msgid "Changed the parent of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous parent: %OldParentName% %LineBreak% New parent: %NewParentName% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
221
  msgstr ""
222
 
223
- #: defaults.php:116
224
  msgid "User changed the template of a page"
225
  msgstr ""
226
 
227
- #: defaults.php:116
228
- msgid "Changed the template of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous template: %OldTemplate% %LineBreak% New template: %NewTemplate% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
229
  msgstr ""
230
 
231
- #: defaults.php:117
232
  msgid "User set a post as sticky"
233
  msgstr ""
234
 
235
- #: defaults.php:117
236
- msgid "Set the post %PostTitle% as sticky %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
237
  msgstr ""
238
 
239
- #: defaults.php:118
240
  msgid "User removed post from sticky"
241
  msgstr ""
242
 
243
- #: defaults.php:118
244
- msgid "Removed the post %PostTitle% from sticky %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
245
  msgstr ""
246
 
247
- #: defaults.php:119
248
  msgid "User modified the content of a post"
249
  msgstr ""
250
 
251
- #: defaults.php:119
252
- msgid "Modified the content of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% %RevisionLink% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
253
  msgstr ""
254
 
255
- #: defaults.php:120
256
  msgid "User submitted a post for review"
257
  msgstr ""
258
 
259
- #: defaults.php:120
260
- msgid "Submitted the post %PostTitle% for review %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
261
  msgstr ""
262
 
263
- #: defaults.php:121
264
  msgid "User scheduled a post"
265
  msgstr ""
266
 
267
- #: defaults.php:121
268
- msgid "Scheduled the post %PostTitle% to be published on %PublishingDate% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
269
  msgstr ""
270
 
271
- #: defaults.php:122
272
  msgid "User changed title of a post"
273
  msgstr ""
274
 
275
- #: defaults.php:122
276
- msgid "Changed the title of the post %OldTitle% %LineBreak% New title: %NewTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
277
  msgstr ""
278
 
279
- #: defaults.php:123
280
  msgid "User opened a post in the editor"
281
  msgstr ""
282
 
283
- #: defaults.php:123
284
- msgid "Opened the post %PostTitle% in the editor %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
285
  msgstr ""
286
 
287
- #: defaults.php:124
288
  msgid "User viewed a post"
289
  msgstr ""
290
 
291
- #: defaults.php:124
292
- msgid "Viewed the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% URL: %PostUrl% %LineBreak% %EditorLinkPost%"
293
  msgstr ""
294
 
295
- #: defaults.php:125
296
  msgid "User enabled/disabled comments in a post"
297
  msgstr ""
298
 
299
- #: defaults.php:125
300
- msgid "The comments in the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
301
  msgstr ""
302
 
303
- #: defaults.php:126
304
  msgid "User enabled/disabled trackbacks and pingbacks in a post"
305
  msgstr ""
306
 
307
- #: defaults.php:126
308
- msgid "Pingbacks and Trackbacks in the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
309
  msgstr ""
310
 
311
- #: defaults.php:129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312
  msgid "Tags"
313
  msgstr ""
314
 
315
- #: defaults.php:130
316
  msgid "User added post tag"
317
  msgstr ""
318
 
319
- #: defaults.php:130
320
  msgid "Added tag(s) to the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Added tag(s): %tag% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
321
  msgstr ""
322
 
323
- #: defaults.php:131
324
  msgid "User removed post tag"
325
  msgstr ""
326
 
327
- #: defaults.php:131
328
  msgid "Removed tag(s) from the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Removed tag(s): %tag% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
329
  msgstr ""
330
 
331
- #: defaults.php:132
332
  msgid "User created new tag"
333
  msgstr ""
334
 
335
- #: defaults.php:132
336
  msgid "Created the tag %TagName% %LineBreak% Slug: %Slug% %LineBreak% %TagLink%"
337
  msgstr ""
338
 
339
- #: defaults.php:133
340
  msgid "User deleted tag"
341
  msgstr ""
342
 
343
- #: defaults.php:133
344
  msgid "Deleted the tag %TagName% %LineBreak% Slug: %Slug%"
345
  msgstr ""
346
 
347
- #: defaults.php:134
348
  msgid "User renamed tag"
349
  msgstr ""
350
 
351
- #: defaults.php:134
352
- msgid "Old name: %old_name% %LineBreak% New name: %new_name% %LineBreak% Slug: %Slug% %LineBreak% %TagLink%"
353
  msgstr ""
354
 
355
- #: defaults.php:135
356
  msgid "User changed tag slug"
357
  msgstr ""
358
 
359
- #: defaults.php:135
360
  msgid "Changed the slug of the tag %tag% %LineBreak% Previous slug: %old_slug% %LineBreak% New slug: %new_slug% %LineBreak% %TagLink%"
361
  msgstr ""
362
 
363
- #: defaults.php:136
364
  msgid "User changed tag description"
365
  msgstr ""
366
 
367
- #: defaults.php:136
368
  msgid "Changed the description of the tag %tag% %LineBreak% Slug: %Slug% %LineBreak% Previous description: %old_desc% %LineBreak% New description: %new_desc% %LineBreak% %TagLink%"
369
  msgstr ""
370
 
371
- #: defaults.php:139
372
  msgid "Categories"
373
  msgstr ""
374
 
375
- #: defaults.php:140
376
  msgid "User changed post category"
377
  msgstr ""
378
 
379
- #: defaults.php:140
380
- msgid "Changed the category of the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Previous category(ies): %OldCategories% %LineBreak% New category(ies): %NewCategories% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
381
  msgstr ""
382
 
383
- #: defaults.php:141
384
  msgid "User created new category"
385
  msgstr ""
386
 
387
- #: defaults.php:141
388
  msgid "Created the category %CategoryName% %LineBreak% Slug: %Slug% %LineBreak% %CategoryLink%"
389
  msgstr ""
390
 
391
- #: defaults.php:142
392
  msgid "User deleted category"
393
  msgstr ""
394
 
395
- #: defaults.php:142
396
  msgid "Deleted the category %CategoryName% %LineBreak% Slug: %Slug%"
397
  msgstr ""
398
 
399
- #: defaults.php:143
400
  msgid "Changed the parent of a category"
401
  msgstr ""
402
 
403
- #: defaults.php:143
404
  msgid "Changed the parent of the category %CategoryName% %LineBreak% Slug: %Slug% %LineBreak% Previous parent: %OldParent% %LineBreak% New parent: %NewParent% %LineBreak% %CategoryLink%"
405
  msgstr ""
406
 
407
- #: defaults.php:144
408
  msgid "User changed category name"
409
  msgstr ""
410
 
411
- #: defaults.php:144
412
- msgid "Previous name: %old_name% %LineBreak% New name: %new_name% %LineBreak% Slug: %slug% %LineBreak% %cat_link%"
413
  msgstr ""
414
 
415
- #: defaults.php:145
416
  msgid "User changed category slug"
417
  msgstr ""
418
 
419
- #: defaults.php:145
420
  msgid "Changed the slug of the category: %CategoryName% %LineBreak% Previous slug: %old_slug% %LineBreak% New slug: %new_slug% %LineBreak% %cat_link%"
421
  msgstr ""
422
 
423
- #: defaults.php:148
424
  msgid "Custom Fields"
425
  msgstr ""
426
 
427
- #: defaults.php:149
428
  msgid "User created a custom field for a post"
429
  msgstr ""
430
 
431
- #: defaults.php:149
432
- msgid "Created a new custom field called %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Custom field value: %MetaValue% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%"
433
  msgstr ""
434
 
435
- #: defaults.php:150
436
  msgid "User updated a custom field value for a post"
437
  msgstr ""
438
 
439
- #: defaults.php:150
440
- msgid "Modified the value of the custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Previous custom field value: %MetaValueOld% %LineBreak% New custom field value: %MetaValueNew% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%."
441
  msgstr ""
442
 
443
- #: defaults.php:151
444
  msgid "User deleted a custom field from a post"
445
  msgstr ""
446
 
447
- #: defaults.php:151
448
- msgid "Deleted the custom field %MetaKey% from the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
449
  msgstr ""
450
 
451
- #: defaults.php:152
452
  msgid "User updated a custom field name for a post"
453
  msgstr ""
454
 
455
- #: defaults.php:152
456
- msgid "Old custom field name: %MetaKeyOld% %LineBreak% New custom field name: %MetaKeyNew% %LineBreak% Post: %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
457
  msgstr ""
458
 
459
- #: defaults.php:155
460
  msgid "Custom Fields (ACF)"
461
  msgstr ""
462
 
463
- #: defaults.php:175
464
  msgid "Comments"
465
  msgstr ""
466
 
467
- #: defaults.php:176
468
  msgid "User approved a comment"
469
  msgstr ""
470
 
471
- #: defaults.php:176
472
- msgid "Approved the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
473
  msgstr ""
474
 
475
- #: defaults.php:177
476
  msgid "User unapproved a comment"
477
  msgstr ""
478
 
479
- #: defaults.php:177
480
- msgid "Unapproved the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
481
  msgstr ""
482
 
483
- #: defaults.php:178
484
  msgid "User replied to a comment"
485
  msgstr ""
486
 
487
- #: defaults.php:178
488
- msgid "Replied to the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
489
  msgstr ""
490
 
491
- #: defaults.php:179
492
  msgid "User edited a comment"
493
  msgstr ""
494
 
495
- #: defaults.php:179
496
- msgid "Edited the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
497
  msgstr ""
498
 
499
- #: defaults.php:180
500
  msgid "User marked a comment as Spam"
501
  msgstr ""
502
 
503
- #: defaults.php:180
504
- msgid "Marked the comment posted by %Author% on the post %PostTitle% as spam %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
505
  msgstr ""
506
 
507
- #: defaults.php:181
508
  msgid "User marked a comment as Not Spam"
509
  msgstr ""
510
 
511
- #: defaults.php:181
512
- msgid "Marked the comment posted by %Author% on the post %PostTitle% as not spam %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
513
  msgstr ""
514
 
515
- #: defaults.php:182
516
  msgid "User moved a comment to trash"
517
  msgstr ""
518
 
519
- #: defaults.php:182
520
- msgid "Moved the comment posted by %Author% on the post %PostTitle% to trash %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
521
  msgstr ""
522
 
523
- #: defaults.php:183
524
  msgid "User restored a comment from the trash"
525
  msgstr ""
526
 
527
- #: defaults.php:183
528
- msgid "Restored the comment posted by %Author% on the post %PostTitle% from trash %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
529
  msgstr ""
530
 
531
- #: defaults.php:184
532
  msgid "User permanently deleted a comment"
533
  msgstr ""
534
 
535
- #: defaults.php:184
536
- msgid "Permanently deleted the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %PostUrlIfPlublished% %LineBreak% Comment ID: %CommentID%"
537
  msgstr ""
538
 
539
- #: defaults.php:185
540
  msgid "User posted a comment"
541
  msgstr ""
542
 
543
- #: defaults.php:185, defaults.php:190
544
- msgid "Posted a comment on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post Type: %PostType% %LineBreak% Post Status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
545
  msgstr ""
546
 
547
- #: defaults.php:190
548
  msgid "Visitor posted a comment"
549
  msgstr ""
550
 
551
- #: defaults.php:196
 
 
 
 
552
  msgid "Widgets"
553
  msgstr ""
554
 
555
- #: defaults.php:197
556
  msgid "User added a new widget"
557
  msgstr ""
558
 
559
- #: defaults.php:197
560
- msgid "Added a new %WidgetName% widget in %Sidebar%."
561
  msgstr ""
562
 
563
- #: defaults.php:198
564
  msgid "User modified a widget"
565
  msgstr ""
566
 
567
- #: defaults.php:198
568
  msgid "Modified the %WidgetName% widget in %Sidebar%."
569
  msgstr ""
570
 
571
- #: defaults.php:199
572
  msgid "User deleted widget"
573
  msgstr ""
574
 
575
- #: defaults.php:199
576
  msgid "Deleted the %WidgetName% widget from %Sidebar%."
577
  msgstr ""
578
 
579
- #: defaults.php:200
580
  msgid "User moved widget"
581
  msgstr ""
582
 
583
- #: defaults.php:200
584
  msgid "Moved the %WidgetName% widget %LineBreak% From: %OldSidebar% %LineBreak% To: %NewSidebar%"
585
  msgstr ""
586
 
587
- #: defaults.php:201
588
  msgid "User changed widget position"
589
  msgstr ""
590
 
591
- #: defaults.php:201
592
  msgid "Changed the position of the %WidgetName% widget in %Sidebar%."
593
  msgstr ""
594
 
595
- #: defaults.php:207
596
  msgid "Menus"
597
  msgstr ""
598
 
599
- #: defaults.php:208
600
  msgid "User created new menu"
601
  msgstr ""
602
 
603
- #: defaults.php:208
604
- msgid "New menu called %MenuName%."
605
  msgstr ""
606
 
607
- #: defaults.php:209
608
  msgid "User added content to a menu"
609
  msgstr ""
610
 
611
- #: defaults.php:209
612
- msgid "Added new item to the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName% "
613
  msgstr ""
614
 
615
- #: defaults.php:210
616
  msgid "User removed content from a menu"
617
  msgstr ""
618
 
619
- #: defaults.php:210
620
- msgid "Removed item from the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName%"
621
  msgstr ""
622
 
623
- #: defaults.php:211
624
  msgid "User deleted menu"
625
  msgstr ""
626
 
627
- #: defaults.php:211
628
  msgid "Deleted the menu %MenuName%"
629
  msgstr ""
630
 
631
- #: defaults.php:212
632
  msgid "User changed menu setting"
633
  msgstr ""
634
 
635
- #: defaults.php:212
636
- msgid "The setting in the %MenuName% %LineBreak% Setting: %MenuSetting%"
637
  msgstr ""
638
 
639
- #: defaults.php:213
640
  msgid "User modified content in a menu"
641
  msgstr ""
642
 
643
- #: defaults.php:213
644
- msgid "Modified an item in the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName%"
645
  msgstr ""
646
 
647
- #: defaults.php:214
648
  msgid "User changed name of a menu"
649
  msgstr ""
650
 
651
- #: defaults.php:214
652
- msgid "Old name: %OldMenuName% %LineBreak% New name: %NewMenuName%"
653
  msgstr ""
654
 
655
- #: defaults.php:215
656
  msgid "User changed order of the objects in a menu"
657
  msgstr ""
658
 
659
- #: defaults.php:215
660
- msgid "Changed the order of the items in the menu %MenuName%"
661
  msgstr ""
662
 
663
- #: defaults.php:216
664
  msgid "User moved objects as a sub-item"
665
  msgstr ""
666
 
667
- #: defaults.php:216
668
- msgid "Menu name: %MenuName% %LineBreak% Moved item %ItemName% as a sub-item of %ParentName%"
669
  msgstr ""
670
 
671
- #: defaults.php:227
672
  msgid "Custom Post Types"
673
  msgstr ""
674
 
675
- #: defaults.php:228
676
  msgid "User modified a draft blog post"
677
  msgstr ""
678
 
679
- #: defaults.php:228
680
  msgid "Modified the draft post with the %PostTitle%. %EditorLinkPost%."
681
  msgstr ""
682
 
683
- #: defaults.php:229
684
  msgid "User created a new post with custom post type and saved it as draft"
685
  msgstr ""
686
 
687
- #: defaults.php:229
688
  msgid "Created a new custom post called %PostTitle% of type %PostType%. %EditorLinkPost%."
689
  msgstr ""
690
 
691
- #: defaults.php:230
692
  msgid "User published a post with custom post type"
693
  msgstr ""
694
 
695
- #: defaults.php:230
696
  msgid "Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%."
697
  msgstr ""
698
 
699
- #: defaults.php:231
700
  msgid "User modified a post with custom post type"
701
  msgstr ""
702
 
703
- #: defaults.php:231
704
  msgid "Modified the custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%."
705
  msgstr ""
706
 
707
- #: defaults.php:232
708
  msgid "User modified a draft post with custom post type"
709
  msgstr ""
710
 
711
- #: defaults.php:232
712
  msgid "Modified the draft custom post %PostTitle% of type is %PostType%. %EditorLinkPost%."
713
  msgstr ""
714
 
715
- #: defaults.php:233
716
  msgid "User permanently deleted post with custom post type"
717
  msgstr ""
718
 
719
- #: defaults.php:233
720
  msgid "Permanently Deleted the custom post %PostTitle% of type %PostType%."
721
  msgstr ""
722
 
723
- #: defaults.php:234
724
  msgid "User moved post with custom post type to trash"
725
  msgstr ""
726
 
727
- #: defaults.php:234
728
  msgid "Moved the custom post %PostTitle% of type %PostType% to trash. Post URL was %PostUrl%."
729
  msgstr ""
730
 
731
- #: defaults.php:235
732
  msgid "User restored post with custom post type from trash"
733
  msgstr ""
734
 
735
- #: defaults.php:235
736
  msgid "The custom post %PostTitle% of type %PostType% has been restored from trash. %EditorLinkPost%."
737
  msgstr ""
738
 
739
- #: defaults.php:236
740
  msgid "User changed the category of a post with custom post type"
741
  msgstr ""
742
 
743
- #: defaults.php:236
744
  msgid "Changed the category(ies) of the custom post %PostTitle% of type %PostType% from %OldCategories% to %NewCategories%. %EditorLinkPost%."
745
  msgstr ""
746
 
747
- #: defaults.php:237
748
  msgid "User changed the URL of a post with custom post type"
749
  msgstr ""
750
 
751
- #: defaults.php:237
752
  msgid "Changed the URL of the custom post %PostTitle% of type %PostType% from %OldUrl% to %NewUrl%. %EditorLinkPost%."
753
  msgstr ""
754
 
755
- #: defaults.php:238
756
  msgid "User changed the author or post with custom post type"
757
  msgstr ""
758
 
759
- #: defaults.php:238
760
  msgid "Changed the author of custom post %PostTitle% of type %PostType% from %OldAuthor% to %NewAuthor%. %EditorLinkPost%."
761
  msgstr ""
762
 
763
- #: defaults.php:239
764
  msgid "User changed the status of post with custom post type"
765
  msgstr ""
766
 
767
- #: defaults.php:239
768
  msgid "Changed the status of custom post %PostTitle% of type %PostType% from %OldStatus% to %NewStatus%. %EditorLinkPost%."
769
  msgstr ""
770
 
771
- #: defaults.php:240
772
  msgid "User changed the visibility of a post with custom post type"
773
  msgstr ""
774
 
775
- #: defaults.php:240
776
  msgid "Changed the visibility of the custom post %PostTitle% of type %PostType% from %OldVisibility% to %NewVisibility%. %EditorLinkPost%."
777
  msgstr ""
778
 
779
- #: defaults.php:241
780
  msgid "User changed the date of post with custom post type"
781
  msgstr ""
782
 
783
- #: defaults.php:241
784
  msgid "Changed the date of the custom post %PostTitle% of type %PostType% from %OldDate% to %NewDate%. %EditorLinkPost%."
785
  msgstr ""
786
 
787
- #: defaults.php:242
788
  msgid "User created a custom field for a custom post type"
789
  msgstr ""
790
 
791
- #: defaults.php:243
792
  msgid "User updated a custom field for a custom post type"
793
  msgstr ""
794
 
795
- #: defaults.php:244
796
  msgid "User deleted a custom field from a custom post type"
797
  msgstr ""
798
 
799
- #: defaults.php:245
800
  msgid "User updated a custom field name for a custom post type"
801
  msgstr ""
802
 
803
- #: defaults.php:246
804
  msgid "User modified content for a published custom post type"
805
  msgstr ""
806
 
807
- #: defaults.php:247
808
  msgid "User modified content for a draft post"
809
  msgstr ""
810
 
811
- #: defaults.php:248
812
  msgid "User modified content for a draft custom post type"
813
  msgstr ""
814
 
815
- #: defaults.php:249
816
  msgid "User modified content of a post"
817
  msgstr ""
818
 
819
- #: defaults.php:250
820
  msgid "User scheduled a custom post type"
821
  msgstr ""
822
 
823
- #: defaults.php:250
824
  msgid "Scheduled the custom post type %PostTitle% to be published %PublishingDate%. %EditorLinkPost%."
825
  msgstr ""
826
 
827
- #: defaults.php:251
828
  msgid "User changed title of a custom post type"
829
  msgstr ""
830
 
831
- #: defaults.php:251
832
  msgid "Changed the title of the custom post %OldTitle% to %NewTitle%. %EditorLinkPost%."
833
  msgstr ""
834
 
835
- #: defaults.php:252
836
  msgid "User opened a custom post type in the editor"
837
  msgstr ""
838
 
839
- #: defaults.php:252
840
  msgid "Opened the custom post %PostTitle% of type %PostType% in the editor. View the post: %EditorLinkPost%."
841
  msgstr ""
842
 
843
- #: defaults.php:253
844
  msgid "User viewed a custom post type"
845
  msgstr ""
846
 
847
- #: defaults.php:253
848
  msgid "Viewed the custom post %PostTitle% of type %PostType%. View the post: %PostUrl%."
849
  msgstr ""
850
 
851
- #: defaults.php:254
852
  msgid "A plugin created a custom post"
853
  msgstr ""
854
 
855
- #: defaults.php:254
856
  msgid "A plugin automatically created the following custom post: %PostTitle%."
857
  msgstr ""
858
 
859
- #: defaults.php:255
860
  msgid "A plugin deleted a custom post"
861
  msgstr ""
862
 
863
- #: defaults.php:255
864
  msgid "A plugin automatically deleted the following custom post: %PostTitle%."
865
  msgstr ""
866
 
867
- #: defaults.php:256
868
  msgid "A plugin modified a custom post"
869
  msgstr ""
870
 
871
- #: defaults.php:256
872
  msgid "Plugin modified the custom post %PostTitle%. View the post: %EditorLinkPost%."
873
  msgstr ""
874
 
875
- #: defaults.php:267
876
  msgid "Pages"
877
  msgstr ""
878
 
879
- #: defaults.php:268
880
  msgid "User created a new WordPress page and saved it as draft"
881
  msgstr ""
882
 
883
- #: defaults.php:268
884
  msgid "Created a new page called %PostTitle% and saved it as draft. %EditorLinkPage%."
885
  msgstr ""
886
 
887
- #: defaults.php:269
888
  msgid "User published a WordPress page"
889
  msgstr ""
890
 
891
- #: defaults.php:269
892
  msgid "Published a page called %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
893
  msgstr ""
894
 
895
- #: defaults.php:270
896
  msgid "User modified a published WordPress page"
897
  msgstr ""
898
 
899
- #: defaults.php:270
900
  msgid "Modified the published page %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
901
  msgstr ""
902
 
903
- #: defaults.php:271
904
  msgid "User modified a draft WordPress page"
905
  msgstr ""
906
 
907
- #: defaults.php:271
908
  msgid "Modified the draft page %PostTitle%. Page ID is %PostID%. %EditorLinkPage%."
909
  msgstr ""
910
 
911
- #: defaults.php:272
912
  msgid "User permanently deleted a page from the trash"
913
  msgstr ""
914
 
915
- #: defaults.php:272
916
  msgid "Permanently deleted the page %PostTitle%."
917
  msgstr ""
918
 
919
- #: defaults.php:273
920
  msgid "User moved WordPress page to the trash"
921
  msgstr ""
922
 
923
- #: defaults.php:273
924
  msgid "Moved the page %PostTitle% to trash. Page URL was %PostUrl%."
925
  msgstr ""
926
 
927
- #: defaults.php:274
928
  msgid "User restored a WordPress page from trash"
929
  msgstr ""
930
 
931
- #: defaults.php:274
932
  msgid "Page %PostTitle% has been restored from trash. %EditorLinkPage%."
933
  msgstr ""
934
 
935
- #: defaults.php:275
936
  msgid "User changed page URL"
937
  msgstr ""
938
 
939
- #: defaults.php:275
940
  msgid "Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%. %EditorLinkPage%."
941
  msgstr ""
942
 
943
- #: defaults.php:276
944
  msgid "User changed page author"
945
  msgstr ""
946
 
947
- #: defaults.php:276
948
  msgid "Changed the author of the page %PostTitle% from %OldAuthor% to %NewAuthor%. %EditorLinkPage%."
949
  msgstr ""
950
 
951
- #: defaults.php:277
952
  msgid "User changed page status"
953
  msgstr ""
954
 
955
- #: defaults.php:277
956
  msgid "Changed the status of the page %PostTitle% from %OldStatus% to %NewStatus%. %EditorLinkPage%."
957
  msgstr ""
958
 
959
- #: defaults.php:278
960
  msgid "User changed the visibility of a page post"
961
  msgstr ""
962
 
963
- #: defaults.php:278
964
  msgid "Changed the visibility of the page %PostTitle% from %OldVisibility% to %NewVisibility%. %EditorLinkPage%."
965
  msgstr ""
966
 
967
- #: defaults.php:279
968
  msgid "User changed the date of a page post"
969
  msgstr ""
970
 
971
- #: defaults.php:279
972
  msgid "Changed the date of the page %PostTitle% from %OldDate% to %NewDate%. %EditorLinkPage%."
973
  msgstr ""
974
 
975
- #: defaults.php:280
976
  msgid "User created a custom field for a page"
977
  msgstr ""
978
 
979
- #: defaults.php:281
980
  msgid "User updated a custom field value for a page"
981
  msgstr ""
982
 
983
- #: defaults.php:282
984
  msgid "User deleted a custom field from a page"
985
  msgstr ""
986
 
987
- #: defaults.php:283
988
  msgid "User updated a custom field name for a page"
989
  msgstr ""
990
 
991
- #: defaults.php:284
992
  msgid "User modified content for a published page"
993
  msgstr ""
994
 
995
- #: defaults.php:284
996
  msgid "Modified the content of the published page %PostTitle%. Page URL is %PostUrl%. %RevisionLink% %EditorLinkPage%."
997
  msgstr ""
998
 
999
- #: defaults.php:285
1000
  msgid "User modified content for a draft page"
1001
  msgstr ""
1002
 
1003
- #: defaults.php:286
1004
  msgid "User scheduled a page"
1005
  msgstr ""
1006
 
1007
- #: defaults.php:287
1008
  msgid "User changed title of a page"
1009
  msgstr ""
1010
 
1011
- #: defaults.php:288
1012
  msgid "User opened a page in the editor"
1013
  msgstr ""
1014
 
1015
- #: defaults.php:288
1016
  msgid "Opened the page %PostTitle% in the editor. View the page: %EditorLinkPage%."
1017
  msgstr ""
1018
 
1019
- #: defaults.php:289
1020
  msgid "User viewed a page"
1021
  msgstr ""
1022
 
1023
- #: defaults.php:289
1024
  msgid "Viewed the page %PostTitle%. View the page: %PostUrl%."
1025
  msgstr ""
1026
 
1027
- #: defaults.php:290
1028
  msgid "User disabled Comments/Trackbacks and Pingbacks on a draft post"
1029
  msgstr ""
1030
 
1031
- #: defaults.php:290
1032
  msgid "Disabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
1033
  msgstr ""
1034
 
1035
- #: defaults.php:291
1036
  msgid "User enabled Comments/Trackbacks and Pingbacks on a draft post"
1037
  msgstr ""
1038
 
1039
- #: defaults.php:291
1040
  msgid "Enabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
1041
  msgstr ""
1042
 
1043
- #: defaults.php:292
1044
  msgid "User disabled Comments/Trackbacks and Pingbacks on a published page"
1045
  msgstr ""
1046
 
1047
- #: defaults.php:292
1048
  msgid "Disabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
1049
  msgstr ""
1050
 
1051
- #: defaults.php:293
1052
  msgid "User enabled Comments/Trackbacks and Pingbacks on a published page"
1053
  msgstr ""
1054
 
1055
- #: defaults.php:293
1056
  msgid "Enabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
1057
  msgstr ""
1058
 
1059
- #: defaults.php:294
1060
  msgid "User disabled Comments/Trackbacks and Pingbacks on a draft page"
1061
  msgstr ""
1062
 
1063
- #: defaults.php:294
1064
  msgid "Disabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
1065
  msgstr ""
1066
 
1067
- #: defaults.php:295
1068
  msgid "User enabled Comments/Trackbacks and Pingbacks on a draft page"
1069
  msgstr ""
1070
 
1071
- #: defaults.php:295
1072
  msgid "Enabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
1073
  msgstr ""
1074
 
1075
- #: defaults.php:296
1076
  msgid "A plugin created a page"
1077
  msgstr ""
1078
 
1079
- #: defaults.php:296
1080
  msgid "A plugin automatically created the following page: %PostTitle%."
1081
  msgstr ""
1082
 
1083
- #: defaults.php:297
1084
  msgid "A plugin deleted a page"
1085
  msgstr ""
1086
 
1087
- #: defaults.php:297
1088
  msgid "A plugin automatically deleted the following page: %PostTitle%."
1089
  msgstr ""
1090
 
1091
- #: defaults.php:298
1092
  msgid "A plugin modified a page"
1093
  msgstr ""
1094
 
1095
- #: defaults.php:298
1096
  msgid "Plugin modified the page %PostTitle%. View the page: %EditorLinkPage%."
1097
  msgstr ""
1098
 
1099
- #: defaults.php:302
1100
  msgid "User Accounts"
1101
  msgstr ""
1102
 
1103
- #: defaults.php:303
1104
  msgid "User Profiles"
1105
  msgstr ""
1106
 
1107
- #: defaults.php:304
1108
  msgid "New user was created on WordPress"
1109
  msgstr ""
1110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1111
  #: defaults.php:304
1112
- msgid "New user: %NewUserData->Username% %LineBreak% Role: %NewUserData->Roles% %LineBreak% %EditUserLink%"
 
 
 
 
1113
  msgstr ""
1114
 
1115
  #: defaults.php:305
1116
- msgid "User created another WordPress user"
1117
  msgstr ""
1118
 
1119
  #: defaults.php:305
1120
- msgid "New user: %NewUserData->Username% %LineBreak% Role: %NewUserData->Roles% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName% %LineBreak% %EditUserLink%"
1121
  msgstr ""
1122
 
1123
  #: defaults.php:306
1124
- msgid "The role of a user was changed by another WordPress user"
1125
  msgstr ""
1126
 
1127
  #: defaults.php:306
1128
- msgid "Changed the role of the user %TargetUsername% %LineBreak% New role: %NewRole% %LineBreak% Previous role: %OldRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1129
  msgstr ""
1130
 
1131
  #: defaults.php:307
1132
- msgid "User has changed his or her password"
1133
  msgstr ""
1134
 
1135
  #: defaults.php:307
1136
- msgid "Changed the password %LineBreak% First name: %TargetUserData->FirstName% %LineBreak% Last name: %TargetUserData->LastName% %LineBreak% %EditUserLink%"
1137
  msgstr ""
1138
 
1139
  #: defaults.php:308
1140
- msgid "User changed another user's password"
1141
  msgstr ""
1142
 
1143
  #: defaults.php:308
1144
- msgid "Changed the password of the user %TargetUserData->Username% %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %TargetUserData->FirstName% %LineBreak% Last name: %TargetUserData->LastName% %LineBreak% %EditUserLink%"
1145
  msgstr ""
1146
 
1147
  #: defaults.php:309
1148
- msgid "User changed his or her email address"
1149
  msgstr ""
1150
 
1151
  #: defaults.php:309
1152
- msgid "Changed the email address to %NewEmail% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1153
  msgstr ""
1154
 
1155
  #: defaults.php:310
1156
- msgid "User changed another user's email address"
1157
  msgstr ""
1158
 
1159
  #: defaults.php:310
1160
- msgid "Changed the email address of the user %TargetUsername% %LineBreak% New email address: %NewEmail% %LineBreak% Previous email address: %OldEmail% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1161
  msgstr ""
1162
 
1163
  #: defaults.php:311
1164
- msgid "User was deleted by another user"
1165
  msgstr ""
1166
 
1167
  #: defaults.php:311
1168
- msgid "User: %TargetUserData->Username% %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName%"
1169
  msgstr ""
1170
 
1171
  #: defaults.php:312
1172
- msgid "User opened the profile page of another user"
1173
  msgstr ""
1174
 
1175
  #: defaults.php:312
1176
- msgid "The profile page of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1177
  msgstr ""
1178
 
1179
  #: defaults.php:313
1180
- msgid "User updated a custom field value for a user"
1181
  msgstr ""
1182
 
1183
  #: defaults.php:313
1184
- msgid "Changed the value of a custom field in the user profile %TargetUsername% %LineBreak% Custom field: %custom_field_name% %LineBreak% Previous value: %old_value% %LineBreak% New value: %new_value% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1185
  msgstr ""
1186
 
1187
  #: defaults.php:314
1188
- msgid "User created a custom field value for a user"
1189
  msgstr ""
1190
 
1191
  #: defaults.php:314
1192
- msgid "Created a new custom field in the user profile %TargetUsername% %LineBreak% Custom field: %custom_field_name% %LineBreak% Custom field value: %new_value% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1193
  msgstr ""
1194
 
1195
- #: defaults.php:315
1196
- msgid "User changed first name for a user"
1197
- msgstr ""
1198
-
1199
- #: defaults.php:315
1200
- msgid "Changed the first name of the user %TargetUsername% %LineBreak% Previous name: %old_firstname% %LineBreak% New name: %new_firstname% %LineBreak% Role: %Roles% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1201
  msgstr ""
1202
 
1203
  #: defaults.php:316
1204
- msgid "User changed last name for a user"
1205
  msgstr ""
1206
 
1207
- #: defaults.php:316
1208
- msgid "Changed the last name of the user %TargetUsername% %LineBreak% Previous last name: %old_lastname% %LineBreak% New last name: %new_lastname% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% %EditUserLink%"
1209
  msgstr ""
1210
 
1211
- #: defaults.php:317
1212
- msgid "User changed nickname for a user"
1213
  msgstr ""
1214
 
1215
- #: defaults.php:317
1216
- msgid "Changed the nickname of the user %TargetUsername% %LineBreak% Previous nickname: %old_nickname% New nickname: %new_nickname% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1217
  msgstr ""
1218
 
1219
- #: defaults.php:318
1220
- msgid "User changed the display name for a user"
1221
  msgstr ""
1222
 
1223
- #: defaults.php:318
1224
- msgid "Changed the display name of the user %TargetUsername% %LineBreak% Previous display name: %old_displayname% %LineBreak% New display name: %new_displayname% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1225
  msgstr ""
1226
 
1227
- #: defaults.php:321
1228
  msgid "Multisite User Profiles"
1229
  msgstr ""
1230
 
1231
- #: defaults.php:322
1232
  msgid "User granted Super Admin privileges"
1233
  msgstr ""
1234
 
1235
- #: defaults.php:322
1236
- msgid "Granted Super Admin privileges to %TargetUsername% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1237
  msgstr ""
1238
 
1239
- #: defaults.php:323
1240
  msgid "User revoked from Super Admin privileges"
1241
  msgstr ""
1242
 
1243
- #: defaults.php:323
1244
- msgid "Revoked Super Admin privileges from %TargetUsername% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1245
  msgstr ""
1246
 
1247
- #: defaults.php:324
1248
  msgid "Existing user added to a site"
1249
  msgstr ""
1250
 
1251
- #: defaults.php:324
1252
  msgid "Added user %TargetUsername% to site: %SiteName% %LineBreak% Role: %TargetUserRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1253
  msgstr ""
1254
 
1255
- #: defaults.php:325
1256
  msgid "User removed from site"
1257
  msgstr ""
1258
 
1259
- #: defaults.php:325
1260
- msgid "Removed user %TargetUsername% from site: %SiteName% %LineBreak% Previous role: %TargetUserRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1261
  msgstr ""
1262
 
1263
- #: defaults.php:326
1264
  msgid "New network user created"
1265
  msgstr ""
1266
 
1267
- #: defaults.php:326
1268
  msgid "Created a new network user %NewUserData->Username% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName% %LineBreak% %EditUserLink%"
1269
  msgstr ""
1270
 
1271
- #: defaults.php:330
1272
  msgid "Plugins & Themes"
1273
  msgstr ""
1274
 
1275
- #: defaults.php:331, classes/AuditLogGridView.php:505, classes/AuditLogListView.php:525
1276
  msgid "Plugins"
1277
  msgstr ""
1278
 
1279
- #: defaults.php:332
1280
  msgid "User installed a plugin"
1281
  msgstr ""
1282
 
1283
- #: defaults.php:332
1284
- msgid "Name: %Plugin->Name% %LineBreak% Install location: %Plugin->plugin_dir_path%"
1285
  msgstr ""
1286
 
1287
- #: defaults.php:333
1288
  msgid "User activated a WordPress plugin"
1289
  msgstr ""
1290
 
1291
- #: defaults.php:333, defaults.php:334, defaults.php:335, defaults.php:336
1292
- msgid "Name: %PluginData->Name% %LineBreak% Install location: %PluginFile%"
1293
  msgstr ""
1294
 
1295
- #: defaults.php:334
1296
  msgid "User deactivated a WordPress plugin"
1297
  msgstr ""
1298
 
1299
- #: defaults.php:335
1300
  msgid "User uninstalled a plugin"
1301
  msgstr ""
1302
 
1303
- #: defaults.php:336
1304
  msgid "User upgraded a plugin"
1305
  msgstr ""
1306
 
1307
- #: defaults.php:337
 
 
 
 
1308
  msgid "Plugin created table"
1309
  msgstr ""
1310
 
1311
- #: defaults.php:337
1312
- msgid "Plugin created this table in the database %LineBreak% Plugin: %Plugin->Name% %LineBreak% Table: %TableNames%"
1313
  msgstr ""
1314
 
1315
- #: defaults.php:338
1316
  msgid "Plugin modified table structure"
1317
  msgstr ""
1318
 
1319
- #: defaults.php:338
1320
- msgid "Plugin modified the structure of this table %LineBreak% Plugin: %Plugin->Name% %LineBreak% Table: %TableNames%"
1321
  msgstr ""
1322
 
1323
- #: defaults.php:339
1324
  msgid "Plugin deleted table"
1325
  msgstr ""
1326
 
1327
- #: defaults.php:339
1328
- msgid "Plugin deleted this table from the database %LineBreak% Plugin: %Plugin->Name% %LineBreak% Table: %TableNames%"
1329
  msgstr ""
1330
 
1331
- #: defaults.php:340
1332
  msgid "A plugin created a post"
1333
  msgstr ""
1334
 
1335
- #: defaults.php:340
1336
- msgid "Plugin %PluginName% created the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% %EditorLinkPage%"
1337
  msgstr ""
1338
 
1339
- #: defaults.php:341
1340
  msgid "A plugin deleted a post"
1341
  msgstr ""
1342
 
1343
- #: defaults.php:341
1344
- msgid "Plugin %PluginName% deleted the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Type: %PostType%"
1345
  msgstr ""
1346
 
1347
- #: defaults.php:342
1348
  msgid "User changed a file using the plugin editor"
1349
  msgstr ""
1350
 
1351
- #: defaults.php:342
1352
  msgid "Modified a file with the plugin editor %LineBreak% File: %File%"
1353
  msgstr ""
1354
 
1355
- #: defaults.php:345
1356
  msgid "Themes"
1357
  msgstr ""
1358
 
1359
- #: defaults.php:346
1360
  msgid "User installed a theme"
1361
  msgstr ""
1362
 
1363
- #: defaults.php:346
1364
- msgid "Theme: \"%Theme->Name%\" %LineBreak% Install location: %Theme->get_template_directory%"
1365
  msgstr ""
1366
 
1367
- #: defaults.php:347
1368
  msgid "User activated a theme"
1369
  msgstr ""
1370
 
1371
- #: defaults.php:347, defaults.php:348
1372
- msgid "Theme \"%Theme->Name%\" %LineBreak% Install location: %Theme->get_template_directory%"
1373
- msgstr ""
1374
-
1375
- #: defaults.php:348
1376
  msgid "User uninstalled a theme"
1377
  msgstr ""
1378
 
1379
- #: defaults.php:349
1380
  msgid "Theme created tables"
1381
  msgstr ""
1382
 
1383
- #: defaults.php:349
1384
- msgid "Theme created these tables in the database %LineBreak% Theme: %Theme->Name% %LineBreak% Tables: %TableNames%"
1385
  msgstr ""
1386
 
1387
- #: defaults.php:350
1388
  msgid "Theme modified tables structure"
1389
  msgstr ""
1390
 
1391
- #: defaults.php:350
1392
- msgid "Theme modified the structure of these database tables %LineBreak% Theme: %Theme->Name% %LineBreak% Tables: %TableNames%"
1393
  msgstr ""
1394
 
1395
- #: defaults.php:351
1396
  msgid "Theme deleted tables"
1397
  msgstr ""
1398
 
1399
- #: defaults.php:351
1400
- msgid "Theme deleted these tables from the database %LineBreak% Theme: %Theme->Name% %LineBreak% Tables: %TableNames%"
1401
  msgstr ""
1402
 
1403
- #: defaults.php:352
1404
  msgid "User updated a theme"
1405
  msgstr ""
1406
 
1407
- #: defaults.php:352
1408
- msgid "Name: %Theme->Name% %LineBreak% Install location: %Theme->get_template_directory%"
1409
  msgstr ""
1410
 
1411
- #: defaults.php:353
1412
  msgid "User changed a file using the theme editor"
1413
  msgstr ""
1414
 
1415
- #: defaults.php:353
1416
  msgid "Modified a file with the theme editor %LineBreak% File: %Theme%/%File%"
1417
  msgstr ""
1418
 
1419
- #: defaults.php:356
1420
  msgid "Themes on Multisite"
1421
  msgstr ""
1422
 
1423
- #: defaults.php:357
1424
  msgid "Activated theme on network"
1425
  msgstr ""
1426
 
1427
- #: defaults.php:357
1428
- msgid "Network activated the theme %Theme->Name% %LineBreak% Install location: %Theme->get_template_directory%"
1429
  msgstr ""
1430
 
1431
- #: defaults.php:358
1432
  msgid "Deactivated theme from network"
1433
  msgstr ""
1434
 
1435
- #: defaults.php:358
1436
- msgid "Network deactivated the theme %Theme->Name% %LineBreak% Install location: %Theme->get_template_directory%"
1437
  msgstr ""
1438
 
1439
- #: defaults.php:361
1440
  msgid "Database Events"
1441
  msgstr ""
1442
 
1443
- #: defaults.php:362
1444
  msgid "Unknown component created tables"
1445
  msgstr ""
1446
 
1447
- #: defaults.php:362
1448
  msgid "An unknown component created these tables in the database %LineBreak% Tables: %TableNames%"
1449
  msgstr ""
1450
 
1451
- #: defaults.php:363
1452
  msgid "Unknown component modified tables structure"
1453
  msgstr ""
1454
 
1455
- #: defaults.php:363
1456
  msgid "An unknown component modified the structure of these database tables %LineBreak% Tables: %TableNames%"
1457
  msgstr ""
1458
 
1459
- #: defaults.php:364
1460
  msgid "Unknown component deleted tables"
1461
  msgstr ""
1462
 
1463
- #: defaults.php:364
1464
  msgid "An unknown component deleted these tables from the database %LineBreak% Tables: %TableNames%"
1465
  msgstr ""
1466
 
1467
- #: defaults.php:365
1468
  msgid "WordPress created tables"
1469
  msgstr ""
1470
 
1471
- #: defaults.php:365
1472
  msgid "WordPress created these tables in the database %LineBreak% Tables: %TableNames%"
1473
  msgstr ""
1474
 
1475
- #: defaults.php:366
1476
  msgid "WordPress modified tables structure"
1477
  msgstr ""
1478
 
1479
- #: defaults.php:366
1480
  msgid "WordPress modified the structure of these database tables %LineBreak% Tables: %TableNames%"
1481
  msgstr ""
1482
 
1483
- #: defaults.php:367
1484
  msgid "WordPress deleted tables"
1485
  msgstr ""
1486
 
1487
- #: defaults.php:367
1488
  msgid "WordPress deleted these tables from the database %LineBreak% Tables: %TableNames%"
1489
  msgstr ""
1490
 
1491
- #: defaults.php:371
1492
  msgid "WordPress & System"
1493
  msgstr ""
1494
 
1495
- #: defaults.php:372, classes/AlertManager.php:1127, classes/AlertManager.php:1909, classes/AuditLogGridView.php:511, classes/AuditLogListView.php:533, extensions/email-notifications/classes/DailyNotification.php:241, extensions/email-notifications/classes/Notifier.php:627, extensions/reports/classes/Common.php:666
1496
  msgid "System"
1497
  msgstr ""
1498
 
1499
- #: defaults.php:373
1500
  msgid "Unknown Error"
1501
  msgstr ""
1502
 
1503
- #: defaults.php:373
1504
  msgid "An unexpected error has occurred ."
1505
  msgstr ""
1506
 
1507
- #: defaults.php:374
1508
  msgid "PHP error"
1509
  msgstr ""
1510
 
1511
- #: defaults.php:374, defaults.php:375, defaults.php:376, defaults.php:377, defaults.php:378
1512
  msgid "%Message%."
1513
  msgstr ""
1514
 
1515
- #: defaults.php:375
1516
  msgid "PHP warning"
1517
  msgstr ""
1518
 
1519
- #: defaults.php:376
1520
  msgid "PHP notice"
1521
  msgstr ""
1522
 
1523
- #: defaults.php:377
1524
  msgid "PHP exception"
1525
  msgstr ""
1526
 
1527
- #: defaults.php:378
1528
  msgid "PHP shutdown error"
1529
  msgstr ""
1530
 
1531
- #: defaults.php:379
1532
  msgid "WordPress was updated"
1533
  msgstr ""
1534
 
1535
- #: defaults.php:379
1536
  msgid "Updated WordPress %LineBreak% Previous version: %OldVersion% %LineBreak% New version: %NewVersion%"
1537
  msgstr ""
1538
 
1539
- #: defaults.php:380
1540
  msgid "Advertising Extensions"
1541
  msgstr ""
1542
 
1543
- #: defaults.php:380
1544
  msgid "%PromoName% %PromoMessage%"
1545
  msgstr ""
1546
 
1547
- #: defaults.php:383
1548
  msgid "Activity log plugin"
1549
  msgstr ""
1550
 
1551
- #: defaults.php:384
1552
  msgid "Events automatically pruned by system"
1553
  msgstr ""
1554
 
1555
- #: defaults.php:384
1556
- msgid "System automatically deleted %EventCount% event(s)"
1557
  msgstr ""
1558
 
1559
- #: defaults.php:385
1560
  msgid "Reset the plugin's settings to default"
1561
  msgstr ""
1562
 
1563
- #: defaults.php:385
1564
- msgid "Reset the WP Activity Log plugin settings to default"
1565
  msgstr ""
1566
 
1567
- #: defaults.php:386, defaults.php:386
1568
  msgid "Purged the activity log"
1569
  msgstr ""
1570
 
1571
- #: defaults.php:387
1572
  msgid "Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard"
1573
  msgstr ""
1574
 
1575
- #: defaults.php:387
1576
  msgid "Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard."
1577
  msgstr ""
1578
 
1579
- #: defaults.php:390
1580
  msgid "WordPress Site Settings"
1581
  msgstr ""
1582
 
1583
- #: defaults.php:391
1584
  msgid "Option Anyone Can Register in WordPress settings changed"
1585
  msgstr ""
1586
 
1587
- #: defaults.php:391
1588
- msgid "The option Anyone can register"
1589
  msgstr ""
1590
 
1591
- #: defaults.php:392
1592
  msgid "New User Default Role changed"
1593
  msgstr ""
1594
 
1595
- #: defaults.php:392
1596
- msgid "Changed the new user default role %LineBreak% Previous role: %OldRole% %LineBreak% New role: %NewRole%"
1597
  msgstr ""
1598
 
1599
- #: defaults.php:393
1600
  msgid "WordPress Administrator Notification email changed"
1601
  msgstr ""
1602
 
1603
- #: defaults.php:393
1604
- msgid "Changed the WordPress administrator notification email address %LineBreak% Previous address %OldEmail% %LineBreak% New address: %NewEmail%"
1605
  msgstr ""
1606
 
1607
- #: defaults.php:394
1608
  msgid "User changes the WordPress Permalinks"
1609
  msgstr ""
1610
 
1611
- #: defaults.php:394
1612
  msgid "Changed the WordPress permalinks %LineBreak% Previous permalinks: %OldPattern% %LineBreak% New permalinks: %NewPattern%"
1613
  msgstr ""
1614
 
1615
- #: defaults.php:395
1616
  msgid "Enabled/Disabled the option Discourage search engines from indexing this site"
1617
  msgstr ""
1618
 
1619
- #: defaults.php:395
1620
- msgid "Discourage search engines from indexing this site."
1621
  msgstr ""
1622
 
1623
- #: defaults.php:396
1624
  msgid "Enabled/Disabled comments on all the website"
1625
  msgstr ""
1626
 
1627
- #: defaults.php:396
1628
  msgid "Comments on the website"
1629
  msgstr ""
1630
 
1631
- #: defaults.php:397
1632
  msgid "Enabled/Disabled the option Comment author must fill out name and email"
1633
  msgstr ""
1634
 
1635
- #: defaults.php:397
1636
- msgid "The option Comment author must fill out name and email"
1637
  msgstr ""
1638
 
1639
- #: defaults.php:398
1640
  msgid "Enabled/Disabled the option Users must be logged in and registered to comment"
1641
  msgstr ""
1642
 
1643
- #: defaults.php:398
1644
- msgid "The option Users must be logged in and registered to comment"
1645
  msgstr ""
1646
 
1647
- #: defaults.php:399
1648
  msgid "Enabled/Disabled the option to automatically close comments"
1649
  msgstr ""
1650
 
1651
- #: defaults.php:399
1652
- msgid "The option to Automatically close comments after %Value% days"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1653
  msgstr ""
1654
 
1655
- #: defaults.php:400
1656
- msgid "Changed the value of the option Automatically close comments"
1657
  msgstr ""
1658
 
1659
- #: defaults.php:400
1660
- msgid "Changed the value of the option to Automatically close comments after a number of days %LineBreak% Previous value: %OldValue% %LineBreak% New value: %NewValue%"
1661
  msgstr ""
1662
 
1663
- #: defaults.php:401
1664
- msgid "Enabled/Disabled the option for comments to be manually approved"
1665
  msgstr ""
1666
 
1667
- #: defaults.php:401
1668
- msgid "The option for comments to be manually approved"
1669
  msgstr ""
1670
 
1671
- #: defaults.php:402
1672
- msgid "Enabled/Disabled the option for an author to have previously approved comments for the comments to appear"
1673
  msgstr ""
1674
 
1675
- #: defaults.php:402
1676
- msgid "The option for an author to have previously approved comments for the comments to appear"
1677
  msgstr ""
1678
 
1679
- #: defaults.php:403
1680
- msgid "Changed the number of links that a comment must have to be held in the queue"
1681
  msgstr ""
1682
 
1683
- #: defaults.php:403
1684
- msgid "Changed the minimum number of links a comment must have to be held in the queue %LineBreak% Previous value: %OldValue% %LineBreak% New value: %NewValue%"
1685
  msgstr ""
1686
 
1687
- #: defaults.php:404
1688
- msgid "Modified the list of keywords for comments moderation"
1689
  msgstr ""
1690
 
1691
- #: defaults.php:404
1692
- msgid "Modified the list of keywords for comments medoration"
1693
  msgstr ""
1694
 
1695
- #: defaults.php:405, defaults.php:405
1696
- msgid "Modified the list of keywords for comments blacklisting"
1697
  msgstr ""
1698
 
1699
- #: defaults.php:406
1700
- msgid "Option WordPress Address (URL) in WordPress settings changed"
1701
  msgstr ""
1702
 
1703
- #: defaults.php:406
1704
- msgid "Changed the WordPress address (URL) %LineBreak% Previous URL: %old_url% %LineBreak% New URL: %new_url%"
1705
  msgstr ""
1706
 
1707
- #: defaults.php:407
1708
- msgid "Option Site Address (URL) in WordPress settings changed"
1709
  msgstr ""
1710
 
1711
- #: defaults.php:407
1712
- msgid "Changed the site address (URL) %LineBreak% Previous URL: %old_url% %LineBreak% New URL: %new_url%"
1713
  msgstr ""
1714
 
1715
- #: defaults.php:411
1716
  msgid "Multisite Network Sites"
1717
  msgstr ""
1718
 
1719
- #: defaults.php:412
1720
  msgid "MultiSite"
1721
  msgstr ""
1722
 
1723
- #: defaults.php:413
1724
  msgid "New site added on the network"
1725
  msgstr ""
1726
 
1727
- #: defaults.php:413
1728
  msgid "New site on the network: %SiteName% %LineBreak% URL: %BlogURL%"
1729
  msgstr ""
1730
 
1731
- #: defaults.php:414
1732
  msgid "Existing site archived"
1733
  msgstr ""
1734
 
1735
- #: defaults.php:414
1736
  msgid "Archived the site: %SiteName% %LineBreak% URL: %BlogURL%"
1737
  msgstr ""
1738
 
1739
- #: defaults.php:415
1740
  msgid "Archived site has been unarchived"
1741
  msgstr ""
1742
 
1743
- #: defaults.php:415
1744
  msgid "Unarchived the site: %SiteName% %LineBreak% URL: %BlogURL%"
1745
  msgstr ""
1746
 
1747
- #: defaults.php:416
1748
  msgid "Deactivated site has been activated"
1749
  msgstr ""
1750
 
1751
- #: defaults.php:416
1752
  msgid "Activated the site: %SiteName% %LineBreak% URL: %BlogURL%"
1753
  msgstr ""
1754
 
1755
- #: defaults.php:417
1756
  msgid "Site has been deactivated"
1757
  msgstr ""
1758
 
1759
- #: defaults.php:417
1760
  msgid "Deactivated the site: %SiteName% %LineBreak% URL: %BlogURL%"
1761
  msgstr ""
1762
 
1763
- #: defaults.php:418
1764
  msgid "Existing site deleted from network"
1765
  msgstr ""
1766
 
1767
- #: defaults.php:418
1768
  msgid "The site: %SiteName% %LineBreak% URL: %BlogURL%"
1769
  msgstr ""
1770
 
1771
- #: defaults.php:419
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1772
  msgid "Allow new registrations settings changed"
1773
  msgstr ""
1774
 
1775
- #: defaults.php:419
1776
  msgid "Changed the <strong>Allow new registrations</strong> settings %LineBreak% Previous setting: %previous_setting% %LineBreak% New setting: %new_setting%"
1777
  msgstr ""
1778
 
1779
- #: defaults.php:428, classes/Views/Settings.php:99
1780
  msgid "File Changes"
1781
  msgstr ""
1782
 
1783
- #: defaults.php:429
1784
  msgid "Monitor File Changes"
1785
  msgstr ""
1786
 
1787
- #: defaults.php:430
1788
  msgid "Dummy"
1789
  msgstr ""
1790
 
1791
  #. translators: Username
1792
  #. translators: Username
1793
- #: wp-security-audit-log.php:907, wp-security-audit-log.php:934
1794
  msgid "Hey %1$s"
1795
  msgstr ""
1796
 
1797
- #: wp-security-audit-log.php:908
1798
  msgid "Never miss an important update! Opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with freemius.com."
1799
  msgstr ""
1800
 
1801
- #: wp-security-audit-log.php:909, wp-security-audit-log.php:937
1802
  msgid "Note: "
1803
  msgstr ""
1804
 
1805
- #: wp-security-audit-log.php:910, wp-security-audit-log.php:938
1806
  msgid "NO ACTIVITY LOG ACTIVITY & DATA IS SENT BACK TO OUR SERVERS."
1807
  msgstr ""
1808
 
1809
  #. translators: 1: Plugin name. 2: Freemius link.
1810
- #: wp-security-audit-log.php:936
1811
  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."
1812
  msgstr ""
1813
 
1814
  #. translators: Plugin name
1815
- #: wp-security-audit-log.php:958
1816
  msgid "Get a free 7-day trial of the premium edition of %s. No credit card required, no commitments!"
1817
  msgstr ""
1818
 
1819
- #: wp-security-audit-log.php:959, classes/AlertManager.php:1145, extensions/external-db/classes/Connections.php:173
1820
  msgid "WP Activity Log"
1821
  msgstr ""
1822
 
1823
- #: wp-security-audit-log.php:963
1824
  msgid "Start free trial"
1825
  msgstr ""
1826
 
1827
- #: wp-security-audit-log.php:1031
1828
  msgid "You need to activate the licence key to use WP Activity Log Premium. %2$s"
1829
  msgstr ""
1830
 
1831
- #: wp-security-audit-log.php:1032
1832
  msgid "Activate the licence key now"
1833
  msgstr ""
1834
 
1835
  #. translators: Number of sites
1836
- #: wp-security-audit-log.php:1049
1837
  msgid "The license is limited to %s sub-sites. You need to upgrade your license to cover all the sub-sites on this network."
1838
  msgstr ""
1839
 
1840
- #: wp-security-audit-log.php:1159
 
 
 
 
1841
  msgid "Error: You do not have sufficient permissions to disable this custom field."
1842
  msgstr ""
1843
 
1844
- #: wp-security-audit-log.php:1194
1845
  msgid "Custom Field <strong>%1$s</strong> is no longer being monitored.<br />Enable the monitoring of this custom field again from the"
1846
  msgstr ""
1847
 
1848
- #: wp-security-audit-log.php:1197
1849
  msgid "Excluded Objects"
1850
  msgstr ""
1851
 
1852
- #: wp-security-audit-log.php:1198
1853
  msgid " tab in the plugin settings"
1854
  msgstr ""
1855
 
1856
- #: wp-security-audit-log.php:1211
1857
  msgid "Error: You do not have sufficient permissions to disable this alert."
1858
  msgstr ""
1859
 
1860
- #: wp-security-audit-log.php:1235
1861
  msgid "Alert %1$s is no longer being monitored.<br /> %2$s"
1862
  msgstr ""
1863
 
1864
- #: wp-security-audit-log.php:1235
1865
  msgid "You can enable this alert again from the Enable/Disable Alerts node in the plugin menu."
1866
  msgstr ""
1867
 
1868
- #: wp-security-audit-log.php:1260, classes/Views/SetupWizard.php:270
1869
  msgid "Installing, please wait"
1870
  msgstr ""
1871
 
1872
- #: wp-security-audit-log.php:1261, classes/Views/SetupWizard.php:271
1873
  msgid "Already installed"
1874
  msgstr ""
1875
 
1876
- #: wp-security-audit-log.php:1262, classes/Utilities/PluginInstallAndActivate.php:107, classes/Views/SetupWizard.php:272, classes/Views/SetupWizard.php:836
1877
  msgid "Extension installed"
1878
  msgstr ""
1879
 
1880
- #: wp-security-audit-log.php:1263, classes/Views/SetupWizard.php:273
1881
  msgid "Extension activated"
1882
  msgstr ""
1883
 
1884
- #: wp-security-audit-log.php:1264, classes/Views/SetupWizard.php:274
1885
  msgid "Install failed"
1886
  msgstr ""
1887
 
1888
  #. translators: %s: PHP Version
1889
- #: wp-security-audit-log.php:1315
1890
  msgid "You are using a version of PHP that is older than %s, which is no longer supported."
1891
  msgstr ""
1892
 
1893
- #: wp-security-audit-log.php:1317
1894
  msgid "Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com\">plugins@wpwhitesecurity.com</a> to help you switch the version of PHP you are using."
1895
  msgstr ""
1896
 
1897
  #. translators: %s: Activity Log for MainWP plugin hyperlink
1898
- #: wp-security-audit-log.php:1322
1899
  msgid "Please install the %s plugin on the MainWP dashboard."
1900
  msgstr ""
1901
 
1902
- #: wp-security-audit-log.php:1322
1903
  msgid "Activity Log for MainWP"
1904
  msgstr ""
1905
 
1906
  #. translators: %s: Getting started guide hyperlink
1907
- #: wp-security-audit-log.php:1324
1908
  msgid "The WP Activity Log should be installed on the child sites only. Refer to the %s for more information."
1909
  msgstr ""
1910
 
1911
- #: wp-security-audit-log.php:1324
1912
  msgid "getting started guide"
1913
  msgstr ""
1914
 
1915
- #: wp-security-audit-log.php:1390
1916
- 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."
1917
- msgstr ""
1918
-
1919
- #: wp-security-audit-log.php:1392
1920
- 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."
1921
- msgstr ""
1922
-
1923
- #. translators: %s: Support Hyperlink
1924
- #: wp-security-audit-log.php:1394
1925
- msgid "If after doing so you still have issues, please send us an email on %s for assistance."
1926
- msgstr ""
1927
-
1928
- #: wp-security-audit-log.php:1394
1929
- msgid "support@wpsecurityauditlog.com"
1930
- msgstr ""
1931
-
1932
- #: wp-security-audit-log.php:1906
1933
  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 activity log with the <a href=\"https://wpactivitylog.com/\" target=\"_blank\">WP Activity Log plugin</a>. The audit log also includes the IP address where you accessed this site from."
1934
  msgstr ""
1935
 
1936
- #: wp-security-audit-log.php:1925
1937
  msgid "Every 6 hours"
1938
  msgstr ""
1939
 
1940
- #: wp-security-audit-log.php:1929
1941
  msgid "Every 45 minutes"
1942
  msgstr ""
1943
 
1944
- #: wp-security-audit-log.php:1933
1945
  msgid "Every 30 minutes"
1946
  msgstr ""
1947
 
1948
- #: wp-security-audit-log.php:1937
1949
  msgid "Every 15 minutes"
1950
  msgstr ""
1951
 
1952
- #: wp-security-audit-log.php:1941
1953
  msgid "Every 10 minutes"
1954
  msgstr ""
1955
 
1956
- #: wp-security-audit-log.php:1945
1957
  msgid "Every 1 minute"
1958
  msgstr ""
1959
 
1960
  #. translators: 1. Deprecated method name 2. Version since deprecated
1961
- #: wp-security-audit-log.php:1959
1962
  msgid "Method %1$s is deprecated since version %2$s!"
1963
  msgstr ""
1964
 
1965
  #. translators: Event ID
1966
- #: classes/AlertManager.php:374
1967
  msgid "Event with code %d has not be registered."
1968
  msgstr ""
1969
 
1970
  #. translators: Event ID
1971
- #: classes/AlertManager.php:436
1972
  msgid "Event %s already registered with WP Activity Log."
1973
  msgstr ""
1974
 
1975
- #: classes/AlertManager.php:511
1976
  msgid "You have custom events that are using the same ID or IDs which are already registered in the plugin, so they have been disabled."
1977
  msgstr ""
1978
 
1979
  #. translators: 1.CSS classes, 2. Notice, 3. Contact us link
1980
- #: classes/AlertManager.php:514
1981
  msgid "%4$s to help you solve this issue."
1982
  msgstr ""
1983
 
1984
- #: classes/AlertManager.php:516
1985
  msgid "ERROR:"
1986
  msgstr ""
1987
 
1988
- #: classes/AlertManager.php:518
1989
  msgid "Contact us"
1990
  msgstr ""
1991
 
1992
- #: classes/AlertManager.php:1126, classes/AuditLogListView.php:324, classes/AuditLogListView.php:358, classes/WidgetManager.php:76, classes/Views/Settings.php:1090, extensions/search/classes/Filters/UserNameFilter.php:44, extensions/user-sessions/classes/View/Sessions.php:172
1993
  msgid "User"
1994
  msgstr ""
1995
 
1996
- #: classes/AlertManager.php:1128, classes/AuditLogGridView.php:502, classes/AuditLogListView.php:521
1997
  msgid "Plugin"
1998
  msgstr ""
1999
 
2000
- #: classes/AlertManager.php:1129
2001
  msgid "Database"
2002
  msgstr ""
2003
 
2004
- #: classes/AlertManager.php:1130
2005
  msgid "Post"
2006
  msgstr ""
2007
 
2008
- #: classes/AlertManager.php:1131, classes/AlertManager.php:1135
2009
  msgid "File"
2010
  msgstr ""
2011
 
2012
- #: classes/AlertManager.php:1132
2013
  msgid "Tag"
2014
  msgstr ""
2015
 
2016
- #: classes/AlertManager.php:1133
2017
  msgid "Comment"
2018
  msgstr ""
2019
 
2020
- #: classes/AlertManager.php:1134
2021
  msgid "Setting"
2022
  msgstr ""
2023
 
2024
- #: classes/AlertManager.php:1136
2025
  msgid "System Setting"
2026
  msgstr ""
2027
 
2028
- #: classes/AlertManager.php:1137
2029
  msgid "MainWP Network"
2030
  msgstr ""
2031
 
2032
- #: classes/AlertManager.php:1138
2033
  msgid "MainWP"
2034
  msgstr ""
2035
 
2036
- #: classes/AlertManager.php:1139
2037
  msgid "Category"
2038
  msgstr ""
2039
 
2040
- #: classes/AlertManager.php:1140
2041
  msgid "Custom Field"
2042
  msgstr ""
2043
 
2044
- #: classes/AlertManager.php:1141
2045
  msgid "Widget"
2046
  msgstr ""
2047
 
2048
- #: classes/AlertManager.php:1142
2049
  msgid "Menu"
2050
  msgstr ""
2051
 
2052
- #: classes/AlertManager.php:1143
2053
  msgid "Theme"
2054
  msgstr ""
2055
 
2056
- #: classes/AlertManager.php:1144
2057
  msgid "Activity log"
2058
  msgstr ""
2059
 
2060
- #: classes/AlertManager.php:1146
2061
  msgid "Multisite Network"
2062
  msgstr ""
2063
 
2064
- #: classes/AlertManager.php:1147, extensions/email-notifications/classes/Common.php:1146, extensions/search/classes/Filters/IpFilter.php:87, extensions/user-sessions/classes/View/Sessions.php:352
2065
  msgid "IP Address"
2066
  msgstr ""
2067
 
2068
- #: classes/AlertManager.php:1163
2069
  msgid "unknown object"
2070
  msgstr ""
2071
 
2072
- #: classes/AlertManager.php:1200
2073
  msgid "Login"
2074
  msgstr ""
2075
 
2076
- #: classes/AlertManager.php:1201
2077
  msgid "Logout"
2078
  msgstr ""
2079
 
2080
- #: classes/AlertManager.php:1202
2081
  msgid "Installed"
2082
  msgstr ""
2083
 
2084
- #: classes/AlertManager.php:1203
2085
  msgid "Activated"
2086
  msgstr ""
2087
 
2088
- #: classes/AlertManager.php:1204
2089
  msgid "Deactivated"
2090
  msgstr ""
2091
 
2092
- #: classes/AlertManager.php:1205
2093
  msgid "Uninstalled"
2094
  msgstr ""
2095
 
2096
- #: classes/AlertManager.php:1206
2097
  msgid "Updated"
2098
  msgstr ""
2099
 
2100
- #: classes/AlertManager.php:1207, extensions/user-sessions/classes/View/Sessions.php:179
2101
  msgid "Created"
2102
  msgstr ""
2103
 
2104
- #: classes/AlertManager.php:1208
2105
  msgid "Modified"
2106
  msgstr ""
2107
 
2108
- #: classes/AlertManager.php:1209, extensions/search/search-init.php:343
2109
  msgid "Deleted"
2110
  msgstr ""
2111
 
2112
- #: classes/AlertManager.php:1210
2113
  msgid "Published"
2114
  msgstr ""
2115
 
2116
- #: classes/AlertManager.php:1211
2117
  msgid "Approved"
2118
  msgstr ""
2119
 
2120
- #: classes/AlertManager.php:1212
2121
  msgid "Unapproved"
2122
  msgstr ""
2123
 
2124
- #: classes/AlertManager.php:1213
2125
  msgid "Enabled"
2126
  msgstr ""
2127
 
2128
- #: classes/AlertManager.php:1214, extensions/email-notifications/classes/Notifications.php:1812
2129
  msgid "Disabled"
2130
  msgstr ""
2131
 
2132
- #: classes/AlertManager.php:1215
2133
  msgid "Added"
2134
  msgstr ""
2135
 
2136
- #: classes/AlertManager.php:1216
2137
  msgid "Failed Login"
2138
  msgstr ""
2139
 
2140
- #: classes/AlertManager.php:1217
2141
  msgid "Blocked"
2142
  msgstr ""
2143
 
2144
- #: classes/AlertManager.php:1218
2145
  msgid "Uploaded"
2146
  msgstr ""
2147
 
2148
- #: classes/AlertManager.php:1219
2149
  msgid "Restored"
2150
  msgstr ""
2151
 
2152
- #: classes/AlertManager.php:1220
2153
  msgid "Opened"
2154
  msgstr ""
2155
 
2156
- #: classes/AlertManager.php:1221
2157
  msgid "Viewed"
2158
  msgstr ""
2159
 
2160
- #: classes/AlertManager.php:1222
2161
  msgid "Started"
2162
  msgstr ""
2163
 
2164
- #: classes/AlertManager.php:1223
2165
  msgid "Stopped"
2166
  msgstr ""
2167
 
2168
- #: classes/AlertManager.php:1224
2169
  msgid "Removed"
2170
  msgstr ""
2171
 
2172
- #: classes/AlertManager.php:1225
2173
  msgid "Unblocked"
2174
  msgstr ""
2175
 
2176
- #: classes/AlertManager.php:1226
2177
  msgid "Renamed"
2178
  msgstr ""
2179
 
2180
- #: classes/AlertManager.php:1227
2181
  msgid "Duplicated"
2182
  msgstr ""
2183
 
2184
- #: classes/AlertManager.php:1244
 
 
 
 
 
 
 
 
2185
  msgid "unknown type"
2186
  msgstr ""
2187
 
2188
- #: classes/AlertManager.php:1868, classes/ConstantManager.php:146, extensions/external-db/classes/Common.php:661, extensions/external-db/classes/Common.php:902
2189
  msgid "Unknown error code."
2190
  msgstr ""
2191
 
2192
- #: classes/AlertManager.php:1887, classes/AlertManager.php:1875, extensions/reports/classes/Common.php:646, extensions/reports/classes/Common.php:636
2193
  msgid "Unknown Site"
2194
  msgstr ""
2195
 
2196
- #: classes/AuditLogGridView.php:129, classes/AuditLogListView.php:129
2197
  msgid "No events so far."
2198
  msgstr ""
2199
 
2200
- #: classes/AuditLogGridView.php:167, classes/AuditLogListView.php:173
2201
  msgid "List View"
2202
  msgstr ""
2203
 
2204
- #: classes/AuditLogGridView.php:168, classes/AuditLogListView.php:174
2205
  msgid "Grid View"
2206
  msgstr ""
2207
 
2208
- #: classes/AuditLogGridView.php:193, classes/AuditLogListView.php:199
2209
  msgid "Show "
2210
  msgstr ""
2211
 
2212
- #: classes/AuditLogGridView.php:201, classes/AuditLogListView.php:207
2213
  msgid " Items"
2214
  msgstr ""
2215
 
2216
- #: classes/AuditLogGridView.php:208, classes/AuditLogListView.php:214
2217
  msgid "— End of Activity Log —"
2218
  msgstr ""
2219
 
2220
- #: classes/AuditLogGridView.php:229, classes/AuditLogListView.php:235, classes/Views/AuditLog.php:624, extensions/reports/inc/wsal-reporting-view.inc.php:601
2221
  msgid "All Sites"
2222
  msgstr ""
2223
 
2224
- #: classes/AuditLogGridView.php:257, classes/AuditLogListView.php:264
2225
  msgid "Live Database"
2226
  msgstr ""
2227
 
2228
- #: classes/AuditLogGridView.php:260, classes/AuditLogListView.php:267
2229
  msgid "Archive Database"
2230
  msgstr ""
2231
 
2232
- #: classes/AuditLogGridView.php:314, classes/AuditLogGridView.php:338, classes/AuditLogListView.php:321, classes/AuditLogListView.php:349
2233
  msgid "ID"
2234
  msgstr ""
2235
 
2236
- #: classes/AuditLogGridView.php:315, classes/AuditLogGridView.php:341, classes/AuditLogListView.php:322, classes/AuditLogListView.php:352, classes/Views/Settings.php:1086, classes/Views/ToggleAlerts.php:299, extensions/search/classes/Filters/CodeFilter.php:38, extensions/search/classes/Filters/CodeFilter.php:64
2237
  msgid "Severity"
2238
  msgstr ""
2239
 
2240
- #: classes/AuditLogGridView.php:316, extensions/search/classes/Filters/CodeFilter.php:71
2241
  msgid "Info"
2242
  msgstr ""
2243
 
2244
- #: classes/AuditLogGridView.php:321, classes/AuditLogListView.php:332, classes/AuditLogListView.php:364, extensions/email-notifications/classes/Common.php:1144, extensions/email-notifications/classes/Common.php:1203, extensions/search/classes/Filters/SiteFilter.php:29
2245
  msgid "Site"
2246
  msgstr ""
2247
 
2248
- #: classes/AuditLogGridView.php:324, classes/AuditLogGridView.php:347, classes/AuditLogListView.php:335, classes/AuditLogListView.php:373, extensions/email-notifications/classes/Common.php:1177
2249
  msgid "Message"
2250
  msgstr ""
2251
 
2252
- #: classes/AuditLogGridView.php:344
2253
  msgid "Grid"
2254
  msgstr ""
2255
 
2256
- #: classes/AuditLogGridView.php:415, classes/AuditLogListView.php:456
2257
  msgid "Disable this type of events."
2258
  msgstr ""
2259
 
2260
- #: classes/AuditLogGridView.php:453, classes/AuditLogGridView.php:460, classes/AuditLogGridView.php:499, classes/AuditLogListView.php:476, classes/AuditLogListView.php:517
2261
  msgid "Unknown"
2262
  msgstr ""
2263
 
2264
- #: classes/AuditLogGridView.php:508, classes/AuditLogListView.php:529
2265
  msgid "Unregistered user"
2266
  msgstr ""
2267
 
2268
- #: classes/AuditLogGridView.php:484, classes/AuditLogListView.php:502
2269
  msgid "Show me all activity by this User"
2270
  msgstr ""
2271
 
2272
- #: classes/AuditLogGridView.php:545, classes/AuditLogGridView.php:558, classes/AuditLogListView.php:565, classes/AuditLogListView.php:578
2273
  msgid "Show me all activity originating from this IP Address"
2274
  msgstr ""
2275
 
2276
- #: classes/AuditLogGridView.php:615, classes/AuditLogListView.php:607
2277
  msgid "View all details of this change"
2278
  msgstr ""
2279
 
2280
- #: classes/AuditLogGridView.php:616, classes/AuditLogGridView.php:755, classes/AuditLogListView.php:608, classes/AuditLogListView.php:751
2281
  msgid "Alert Data Inspector"
2282
  msgstr ""
2283
 
2284
- #: classes/AuditLogGridView.php:727, classes/AuditLogGridView.php:727, classes/AuditLogListView.php:723, classes/AuditLogListView.php:723, classes/Settings.php:1760, classes/Settings.php:1760
2285
- msgid "Download the log file."
2286
- msgstr ""
2287
-
2288
- #: classes/AuditLogGridView.php:735, classes/AuditLogListView.php:731, classes/Settings.php:1773, classes/Settings.php:2013, extensions/email-notifications/classes/Notifier.php:788
2289
- msgid "published"
2290
- msgstr ""
2291
-
2292
- #. translators: Mailto link for support.
2293
- #. translators: Mailto link for support.
2294
- #. translators: Mailto link for support.
2295
- #. translators: Mailto link for support.
2296
- #. translators: Mailto link for support.
2297
- #. translators: Mailto link for support.
2298
- #: classes/AuditLogGridView.php:763, classes/AuditLogListView.php:759, classes/Settings.php:1799, classes/Settings.php:2039, extensions/email-notifications/classes/Notifier.php:814, extensions/reports/classes/Common.php:541
2299
- msgid "Contact us on %s for assistance"
2300
- msgstr ""
2301
-
2302
- #: classes/AuditLogListView.php:323, classes/AuditLogListView.php:355, extensions/search/classes/Filters/DateFilter.php:27
2303
  msgid "Date"
2304
  msgstr ""
2305
 
2306
- #: classes/AuditLogListView.php:325, classes/AuditLogListView.php:361, extensions/search/classes/Filters/IpFilter.php:45
2307
  msgid "IP"
2308
  msgstr ""
2309
 
2310
- #: classes/AuditLogListView.php:326, classes/AuditLogListView.php:367, extensions/email-notifications/classes/Common.php:1117, extensions/search/classes/Filters/ObjectFilter.php:29, extensions/search/classes/Filters/ObjectFilter.php:53
2311
  msgid "Object"
2312
  msgstr ""
2313
 
2314
- #: classes/AuditLogListView.php:327, classes/AuditLogListView.php:370, extensions/email-notifications/classes/Common.php:1118, extensions/search/classes/Filters/EventTypeFilter.php:29, extensions/search/classes/Filters/EventTypeFilter.php:53
2315
  msgid "Event Type"
2316
  msgstr ""
2317
 
2318
- #: classes/AuditLogListView.php:435
2319
  msgid "Click to toggle."
2320
  msgstr ""
2321
 
2322
- #: classes/AuditLogListView.php:440, classes/Models/Occurrence.php:83
2323
  msgid "Alert message not found."
2324
  msgstr ""
2325
 
2326
- #: classes/AuditLogListView.php:441, classes/Models/Occurrence.php:84
2327
  msgid "Alert description not found."
2328
  msgstr ""
2329
 
2330
- #: classes/ConstantManager.php:166, classes/Views/ToggleAlerts.php:441
2331
  msgid "Informational"
2332
  msgstr ""
2333
 
2334
- #: classes/ConstantManager.php:164, classes/Views/ToggleAlerts.php:439, extensions/search/classes/Filters/CodeFilter.php:70
2335
  msgid "Low"
2336
  msgstr ""
2337
 
2338
- #: classes/ConstantManager.php:162, classes/Views/ToggleAlerts.php:437, extensions/search/classes/Filters/CodeFilter.php:69
2339
  msgid "Medium"
2340
  msgstr ""
2341
 
2342
- #: classes/ConstantManager.php:160, classes/Views/ToggleAlerts.php:435, extensions/search/classes/Filters/CodeFilter.php:68
2343
  msgid "High"
2344
  msgstr ""
2345
 
2346
- #: classes/ConstantManager.php:158, classes/ConstantManager.php:152, classes/Views/ToggleAlerts.php:433, classes/Views/ToggleAlerts.php:427, extensions/search/classes/Filters/CodeFilter.php:67
2347
  msgid "Critical"
2348
  msgstr ""
2349
 
2350
- #: classes/ConstantManager.php:156, classes/Views/ToggleAlerts.php:443, classes/Views/ToggleAlerts.php:431
2351
  msgid "Notification"
2352
  msgstr ""
2353
 
2354
- #: classes/ConstantManager.php:154, classes/Views/ToggleAlerts.php:429
2355
  msgid "Warning"
2356
  msgstr ""
2357
 
2358
- #: classes/Settings.php:583
2359
  msgid "This function is deprecated"
2360
  msgstr ""
2361
 
2362
- #: classes/Settings.php:1694, extensions/email-notifications/classes/Notifier.php:736, extensions/reports/classes/Common.php:482
2363
  msgid "View the content changes"
2364
  msgstr ""
2365
 
2366
- #: classes/Settings.php:1699, extensions/email-notifications/classes/Notifier.php:741, extensions/email-notifications/classes/Notifier.php:747, extensions/reports/classes/Common.php:487, extensions/reports/classes/Common.php:493
 
 
 
 
2367
  msgid "View post in the editor"
2368
  msgstr ""
2369
 
2370
- #: classes/Settings.php:1702, extensions/email-notifications/classes/Notifier.php:744, extensions/reports/classes/Common.php:490
2371
  msgid "View Order"
2372
  msgstr ""
2373
 
2374
- #: classes/Settings.php:1707, extensions/email-notifications/classes/Notifier.php:750, extensions/reports/classes/Common.php:496
2375
  msgid "View category"
2376
  msgstr ""
2377
 
2378
- #: classes/Settings.php:1710, extensions/email-notifications/classes/Notifier.php:753, extensions/reports/classes/Common.php:499
2379
  msgid "View tag"
2380
  msgstr ""
2381
 
2382
- #: classes/Settings.php:1714, extensions/email-notifications/classes/Notifier.php:763, extensions/reports/classes/Common.php:509
2383
  msgid "User profile page"
2384
  msgstr ""
2385
 
2386
- #: classes/Settings.php:1811, extensions/reports/classes/Common.php:553
2387
- msgid "Increase maximum file size limit"
2388
  msgstr ""
2389
 
2390
- #: classes/Settings.php:1814, extensions/reports/classes/Common.php:556
2391
- msgid "Contact Support"
 
 
 
 
 
 
 
 
 
2392
  msgstr ""
2393
 
2394
- #: classes/Settings.php:2051, extensions/email-notifications/classes/Notifier.php:825, extensions/email-notifications/classes/Notifier.php:953
2395
  msgid "plugin settings"
2396
  msgstr ""
2397
 
2398
- #: classes/Settings.php:2054, extensions/email-notifications/classes/Notifier.php:828, extensions/email-notifications/classes/Notifier.php:958
 
 
 
 
2399
  msgid "contact our support"
2400
  msgstr ""
2401
 
2402
- #: classes/Settings.php:2225
 
 
 
 
2403
  msgid "Root directory of WordPress (excluding sub directories)"
2404
  msgstr ""
2405
 
2406
- #: classes/Settings.php:2226
2407
  msgid "WP Admin directory (/wp-admin/)"
2408
  msgstr ""
2409
 
2410
- #: classes/Settings.php:2227
2411
  msgid "WP Includes directory (/wp-includes/)"
2412
  msgstr ""
2413
 
2414
- #: classes/Settings.php:2228
2415
  msgid "/wp-content/ directory (excluding plugins, themes & uploads directories)"
2416
  msgstr ""
2417
 
2418
- #: classes/Settings.php:2229
2419
  msgid "Themes directory (/wp-content/themes/)"
2420
  msgstr ""
2421
 
2422
- #: classes/Settings.php:2230
2423
  msgid "Plugins directory (/wp-content/plugins/)"
2424
  msgstr ""
2425
 
2426
- #: classes/Settings.php:2231
2427
  msgid "Uploads directory (/wp-content/uploads/)"
2428
  msgstr ""
2429
 
2430
- #: classes/Settings.php:2236
2431
  msgid "Uploads directory of all sub sites on this network (/wp-content/sites/*)"
2432
  msgstr ""
2433
 
@@ -2443,7 +2601,7 @@ msgstr ""
2443
  msgid "Latest Events"
2444
  msgstr ""
2445
 
2446
- #: classes/WidgetManager.php:77, classes/Views/ToggleAlerts.php:300
2447
  msgid "Description"
2448
  msgstr ""
2449
 
@@ -2477,22 +2635,70 @@ msgstr ""
2477
  msgid "This type of activity / change is no longer monitored. You can create your own custom event IDs to keep a log of such change. Read more about custom events %1$shere%2$s."
2478
  msgstr ""
2479
 
2480
- #: classes/Sensors/Content.php:1039, classes/Sensors/Content.php:1047
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2481
  msgid "Public"
2482
  msgstr ""
2483
 
2484
- #: classes/Sensors/Content.php:1037, classes/Sensors/Content.php:1045
2485
  msgid "Private"
2486
  msgstr ""
2487
 
2488
- #: classes/Sensors/Content.php:1035, classes/Sensors/Content.php:1043
2489
  msgid "Password Protected"
2490
  msgstr ""
2491
 
2492
- #: classes/Sensors/Content.php:1210
2493
  msgid "no tags"
2494
  msgstr ""
2495
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2496
  #: classes/ThirdPartyExtensions/BBPressExtension.php:29
2497
  msgid "BBPress"
2498
  msgstr ""
@@ -2518,16 +2724,16 @@ msgid "Yoast SEO"
2518
  msgstr ""
2519
 
2520
  #. translators: %s: Home URL
2521
- #: classes/Utilities/Emailer.php:53
2522
  msgid "WP Activity Log plugin disabled on %s"
2523
  msgstr ""
2524
 
2525
- #: classes/Utilities/Emailer.php:56
2526
  msgid "Hello admin,"
2527
  msgstr ""
2528
 
2529
  #. translators: 1. User display name, 2. Home URL, 3. Date and time
2530
- #: classes/Utilities/Emailer.php:61
2531
  msgid "This is a notification to let you know that the user %1$s has deactivated the plugin WP Activity Log on the website %2$s on %3$s."
2532
  msgstr ""
2533
 
@@ -2535,15 +2741,15 @@ msgstr ""
2535
  msgid "WP Activity Log can keep a log of changes done on other plugins. Install the relevant extension from the below list to keep a log of changes done on that plugin."
2536
  msgstr ""
2537
 
2538
- #: classes/Utilities/PluginInstallAndActivate.php:100, classes/Views/SetupWizard.php:829
2539
  msgid "Extension for "
2540
  msgstr ""
2541
 
2542
- #: classes/Utilities/PluginInstallAndActivate.php:109, classes/Views/SetupWizard.php:838
2543
  msgid "Install Extension"
2544
  msgstr ""
2545
 
2546
- #: classes/Utilities/PluginInstallAndActivate.php:105, classes/Views/SetupWizard.php:834
2547
  msgid "Extension installed, activate now?"
2548
  msgstr ""
2549
 
@@ -2639,7 +2845,7 @@ msgstr ""
2639
  msgid "Log Viewer"
2640
  msgstr ""
2641
 
2642
- #: classes/Views/AuditLog.php:540, classes/Views/Settings.php:326, classes/Views/ToggleAlerts.php:105, 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:258, extensions/email-notifications/classes/EditNotification.php:254, extensions/email-notifications/classes/EditNotification.php:263, extensions/email-notifications/classes/EditNotification.php:291, extensions/external-db/classes/Settings.php:421
2643
  msgid "You do not have sufficient permissions to access this page."
2644
  msgstr ""
2645
 
@@ -2647,11 +2853,11 @@ msgstr ""
2647
  msgid "Thank you for installing WP Activity Log. Do you want to run the wizard to configure the basic plugin settings?"
2648
  msgstr ""
2649
 
2650
- #: classes/Views/AuditLog.php:591, classes/Views/Settings.php:527, classes/Views/Settings.php:554, classes/Views/Settings.php:620, classes/Views/Settings.php:678, classes/Views/Settings.php:1122, classes/Views/Settings.php:1390, classes/Views/Settings.php:1449, classes/Views/Settings.php:1490, classes/Views/Settings.php:1521, classes/Views/SetupWizard.php:562
2651
  msgid "Yes"
2652
  msgstr ""
2653
 
2654
- #: classes/Views/AuditLog.php:592, classes/Views/Settings.php:532, classes/Views/Settings.php:559, classes/Views/Settings.php:650, classes/Views/Settings.php:688, classes/Views/Settings.php:1127, classes/Views/Settings.php:1395, classes/Views/Settings.php:1456, classes/Views/Settings.php:1497, classes/Views/Settings.php:1522, classes/Views/SetupWizard.php:567
2655
  msgid "No"
2656
  msgstr ""
2657
 
@@ -2663,7 +2869,7 @@ msgstr ""
2663
  msgid "No Results"
2664
  msgstr ""
2665
 
2666
- #: classes/Views/AuditLog.php:795, classes/Views/AuditLog.php:838, classes/Views/AuditLog.php:1108, classes/Views/AuditLog.php:1170, classes/Views/AuditLog.php:1223, classes/Views/Settings.php:235, classes/Views/Settings.php:1697, classes/Views/Settings.php:1725, classes/Views/Settings.php:1755, classes/Views/SetupWizard.php:96, extensions/search/search-init.php:452, extensions/search/search-init.php:500, extensions/email-notifications/classes/Notifications.php:492, extensions/external-db/classes/Connections.php:753, extensions/external-db/classes/Connections.php:787, extensions/external-db/classes/Connections.php:980, extensions/external-db/classes/Settings.php:312, extensions/external-db/classes/Settings.php:386, extensions/external-db/classes/Settings.php:1049, extensions/external-db/classes/Settings.php:1324, extensions/external-db/classes/Settings.php:1376, extensions/external-db/classes/Settings.php:1409, extensions/user-sessions/classes/Views.php:513, extensions/reports/classes/Views/Main.php:759
2667
  msgid "Nonce verification failed."
2668
  msgstr ""
2669
 
@@ -2808,111 +3014,119 @@ msgstr ""
2808
  msgid "Configure an unlimited number of connections to different databases and third party services."
2809
  msgstr ""
2810
 
2811
- #: classes/Views/Help.php:62, classes/Views/Help.php:104, classes/Views/Help.php:118
2812
  msgid "Help"
2813
  msgstr ""
2814
 
2815
- #: classes/Views/Help.php:68, classes/Views/Help.php:232
 
 
 
 
2816
  msgid "System Info"
2817
  msgstr ""
2818
 
2819
- #: classes/Views/Help.php:177
 
 
 
 
2820
  msgid "Getting Started"
2821
  msgstr ""
2822
 
2823
- #: classes/Views/Help.php:178
2824
  msgid "Getting started with WP Activity Log is really easy; once the plugin is installed it will automatically keep a log of everything that is happening on your website and you do not need to do anything. Watch the video below for a quick overview of the plugin."
2825
  msgstr ""
2826
 
2827
- #: classes/Views/Help.php:182
2828
  msgid "Plugin Support"
2829
  msgstr ""
2830
 
2831
- #: classes/Views/Help.php:184
2832
  msgid "Have you encountered or noticed any issues while using WP Activity Log plugin?"
2833
  msgstr ""
2834
 
2835
- #: classes/Views/Help.php:185
2836
  msgid "Or you want to report something to us? Click any of the options below to post on the plugin's forum or contact our support directly."
2837
  msgstr ""
2838
 
2839
- #: classes/Views/Help.php:187
2840
  msgid "Free Support Forum"
2841
  msgstr ""
2842
 
2843
- #: classes/Views/Help.php:189
2844
  msgid "Free Support Email"
2845
  msgstr ""
2846
 
2847
- #: classes/Views/Help.php:193
2848
  msgid "Plugin Documentation"
2849
  msgstr ""
2850
 
2851
- #: classes/Views/Help.php:195
2852
  msgid "For more technical information about the WP Activity Log plugin please visit the plugin’s knowledge base."
2853
  msgstr ""
2854
 
2855
- #: classes/Views/Help.php:196
2856
  msgid "Refer to the list of WordPress security events for a complete list of Events and IDs that the plugin uses to keep a log of all the changes in the WordPress activity log."
2857
  msgstr ""
2858
 
2859
- #: classes/Views/Help.php:198
2860
  msgid "Plugin Website"
2861
  msgstr ""
2862
 
2863
- #: classes/Views/Help.php:200
2864
  msgid "Knowledge Base"
2865
  msgstr ""
2866
 
2867
- #: classes/Views/Help.php:202
2868
  msgid "List of activity logs event IDs"
2869
  msgstr ""
2870
 
2871
- #: classes/Views/Help.php:206
2872
  msgid "Rate WP Activity Log"
2873
  msgstr ""
2874
 
2875
- #: classes/Views/Help.php:208
2876
  msgid "We work really hard to deliver a plugin that enables you to keep a record of all the changes that are happening on your WordPress."
2877
  msgstr ""
2878
 
2879
- #: classes/Views/Help.php:209
2880
  msgid "It takes thousands of man-hours every year and endless amount of dedication to research, develop and maintain the free edition of WP Activity Log."
2881
  msgstr ""
2882
 
2883
- #: classes/Views/Help.php:210
2884
  msgid "Therefore if you like what you see, and find WP Activity Log useful we ask you nothing more than to please rate our plugin."
2885
  msgstr ""
2886
 
2887
- #: classes/Views/Help.php:211
2888
  msgid "We appreciate every star!"
2889
  msgstr ""
2890
 
2891
- #: classes/Views/Help.php:221
2892
  msgid "Rate Plugin"
2893
  msgstr ""
2894
 
2895
- #: classes/Views/Help.php:250
2896
  msgid "Enforce strong password policies on WordPress"
2897
  msgstr ""
2898
 
2899
- #: classes/Views/Help.php:256
2900
  msgid "Automatically identify unauthorized file changes on WordPress"
2901
  msgstr ""
2902
 
2903
- #: classes/Views/Help.php:262
2904
  msgid "Add an extra layer of security to your login pages with 2FA & require your users to use it."
2905
  msgstr ""
2906
 
2907
- #: classes/Views/Help.php:268
2908
  msgid "See the child sites activity logs from the central MainWP dashboard"
2909
  msgstr ""
2910
 
2911
- #: classes/Views/Help.php:274
2912
  msgid "Our other WordPress plugins"
2913
  msgstr ""
2914
 
2915
- #: classes/Views/Help.php:285
2916
  msgid "LEARN MORE"
2917
  msgstr ""
2918
 
@@ -3084,7 +3298,7 @@ msgstr ""
3084
  msgid "Unknown settings tab."
3085
  msgstr ""
3086
 
3087
- #: classes/Views/Settings.php:220, classes/Views/Settings.php:1785, classes/Views/Settings.php:1808, 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:970, extensions/external-db/classes/Settings.php:282, extensions/external-db/classes/Settings.php:373, extensions/external-db/classes/Settings.php:1036, extensions/external-db/classes/Settings.php:1277, extensions/external-db/classes/Settings.php:1341, extensions/external-db/classes/Settings.php:1393
3088
  msgid "Access Denied."
3089
  msgstr ""
3090
 
@@ -3092,7 +3306,7 @@ msgstr ""
3092
  msgid "Invalid input."
3093
  msgstr ""
3094
 
3095
- #: classes/Views/Settings.php:342, classes/Views/ToggleAlerts.php:122, extensions/external-db/classes/Settings.php:432
3096
  msgid "Settings have been saved."
3097
  msgstr ""
3098
 
@@ -3100,7 +3314,7 @@ msgstr ""
3100
  msgid "Message sent successfully."
3101
  msgstr ""
3102
 
3103
- #: classes/Views/Settings.php:348, classes/Views/ToggleAlerts.php:128, extensions/external-db/classes/Settings.php:437, extensions/user-sessions/classes/View/Sessions.php:164
3104
  msgid "Error: "
3105
  msgstr ""
3106
 
@@ -3337,7 +3551,7 @@ msgid "Do you want to hide the plugin from the list of installed plugins?"
3337
  msgstr ""
3338
 
3339
  #: classes/Views/Settings.php:878
3340
- msgid "By default all installed plugins are listed in the plugins page. If you do not want other administrators to see that you installed this plugin set this option to Yes so the WP Activity Log is not listed as an installed plugin on this website."
3341
  msgstr ""
3342
 
3343
  #: classes/Views/Settings.php:882
@@ -3445,7 +3659,7 @@ msgstr ""
3445
  msgid "Date & Time"
3446
  msgstr ""
3447
 
3448
- #: classes/Views/Settings.php:1084, 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
3449
  msgid "Event ID"
3450
  msgstr ""
3451
 
@@ -3469,247 +3683,219 @@ msgstr ""
3469
  msgid "Website File Changes plugin settings"
3470
  msgstr ""
3471
 
3472
- #: classes/Views/Settings.php:1176, classes/Views/ToggleAlerts.php:517
3473
  msgid "Website File Changes Monitor"
3474
  msgstr ""
3475
 
3476
- #: classes/Views/Settings.php:1177, classes/Views/ToggleAlerts.php:518
3477
  msgid "To keep a log of file changes please install Website File Changes Monitor, a plugin which is also developed by us."
3478
  msgstr ""
3479
 
3480
- #: classes/Views/Settings.php:1178, classes/Views/ToggleAlerts.php:519
3481
  msgid "Install plugin now"
3482
  msgstr ""
3483
 
3484
- #: classes/Views/Settings.php:1178, classes/Views/ToggleAlerts.php:519
3485
  msgid "Learn More"
3486
  msgstr ""
3487
 
3488
- #: classes/Views/Settings.php:1207
3489
  msgid "By default the plugin keeps a log of all user changes done on your WordPress website. Use the setting below to exclude any objects from the activity log. When an object is excluded from the activity log, any event in which that object is referred will not be logged in the activity log."
3490
  msgstr ""
3491
 
3492
- #: classes/Views/Settings.php:1211
3493
  msgid "Exclude Users:"
3494
  msgstr ""
3495
 
3496
- #: classes/Views/Settings.php:1232
3497
  msgid "Exclude Roles:"
3498
  msgstr ""
3499
 
3500
- #: classes/Views/Settings.php:1253
3501
  msgid "Exclude IP Address(es):"
3502
  msgstr ""
3503
 
3504
- #: classes/Views/Settings.php:1269
3505
  msgid "You can exclude an individual IP address or a range of IP addresses. To exclude a range use the following format: [first IP]-[last octet of the last IP]. Example: 172.16.180.6-127."
3506
  msgstr ""
3507
 
3508
- #: classes/Views/Settings.php:1275
3509
  msgid "Exclude Post Type:"
3510
  msgstr ""
3511
 
3512
- #: classes/Views/Settings.php:1291
3513
  msgid "WordPress has the post and page post types by default though your website might use more post types (custom post types). You can exclude all post types, including the default WordPress ones."
3514
  msgstr ""
3515
 
3516
- #: classes/Views/Settings.php:1297
3517
  msgid "Exclude Custom Fields:"
3518
  msgstr ""
3519
 
3520
- #: classes/Views/Settings.php:1313
3521
  msgid "You can use the * wildcard to exclude multiple matching custom fields. For example to exclude all custom fields starting with wp123 enter wp123*"
3522
  msgstr ""
3523
 
3524
- #: classes/Views/Settings.php:1344
3525
  msgid "These settings are for advanced users."
3526
  msgstr ""
3527
 
3528
- #: classes/Views/Settings.php:1345
3529
  msgid "If you have any questions <a href=\"https://wpactivitylog.com/contact/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=settings+pages\" target=\"_blank\">contact us</a>."
3530
  msgstr ""
3531
 
3532
- #: classes/Views/Settings.php:1348
3533
- msgid "Where do you want the plugin's working directory for log files, reports and other files?"
3534
- msgstr ""
3535
-
3536
- #: classes/Views/Settings.php:1349
3537
- msgid "The plugin stores the reports it generates, a number of log files and the request log in this working directory. By default the directory is in the default WordPress uploads directory. Use the below setting to create the working directory in a different location. Note that the plugin requires write permissions to this directory. Please specify the relative path of the directory."
3538
- msgstr ""
3539
-
3540
- #: classes/Views/Settings.php:1354
3541
- msgid "Working directory location"
3542
- msgstr ""
3543
-
3544
- #: classes/Views/Settings.php:1377
3545
- msgid "Troubleshooting setting: Keep a debug log of all the requests this website receives"
3546
- msgstr ""
3547
-
3548
- #: classes/Views/Settings.php:1378
3549
- msgid "Only enable the request log on testing, staging and development website. Never enable logging on a live website unless instructed to do so. Enabling request logging on a live website may degrade the performance of the website."
3550
- msgstr ""
3551
-
3552
- #: classes/Views/Settings.php:1382
3553
- msgid "Request Log"
3554
- msgstr ""
3555
-
3556
- #: classes/Views/Settings.php:1412
3557
  msgid "Reset plugin settings to default"
3558
  msgstr ""
3559
 
3560
- #: classes/Views/Settings.php:1413
3561
  msgid "Use this button to <em>factory reset</em> the plugin. This means that all the configured settings will be reset to default and all email notifications, scheduled reports, external database / third party services connections, archiving and mirroring rule will be deleted. NOTE: the activity log data will not be purged. Use the setting below to purge the activity log."
3562
  msgstr ""
3563
 
3564
- #: classes/Views/Settings.php:1417
3565
  msgid "Reset Settings"
3566
  msgstr ""
3567
 
3568
- #: classes/Views/Settings.php:1419
3569
  msgid "RESET"
3570
  msgstr ""
3571
 
3572
- #: classes/Views/Settings.php:1425
3573
  msgid "Purge the WordPress activity log"
3574
  msgstr ""
3575
 
3576
- #: classes/Views/Settings.php:1426
3577
  msgid "Click the Purge button below to delete all the data from the WordPress activity log and start afresh."
3578
  msgstr ""
3579
 
3580
- #: classes/Views/Settings.php:1430
3581
  msgid "Purge Activity Log"
3582
  msgstr ""
3583
 
3584
- #: classes/Views/Settings.php:1432
3585
  msgid "PURGE"
3586
  msgstr ""
3587
 
3588
- #: classes/Views/Settings.php:1439
3589
  msgid "MainWP Child Site Stealth Mode"
3590
  msgstr ""
3591
 
3592
- #: classes/Views/Settings.php:1440
3593
  msgid "This option is enabled automatically when the plugin detects the MainWP Child plugin on the site. When this setting is enabled plugin access is restricted to the administrator who installs the plugin, the plugin is not shown in the list of installed plugins and no admin notifications are shown. Disable this option to change the plugin to the default setup."
3594
  msgstr ""
3595
 
3596
- #: classes/Views/Settings.php:1444
3597
  msgid "Enable MainWP Child Site Stealth Mode"
3598
  msgstr ""
3599
 
3600
- #: classes/Views/Settings.php:1464
3601
  msgid "Admin blocking plugins support"
3602
  msgstr ""
3603
 
3604
- #: classes/Views/Settings.php:1469
3605
  msgid "Enable early plugin loading on sites that use admin blocking plugins"
3606
  msgstr ""
3607
 
3608
- #: classes/Views/Settings.php:1478
3609
  msgid "Do you want to delete the plugin data from the database upon uninstall?"
3610
  msgstr ""
3611
 
3612
- #: classes/Views/Settings.php:1479
3613
  msgid "The plugin saves the activity log data and settings in the WordPress database. By default upon uninstalling the plugin the data is kept in the database so if it is installed again, you can still access the data. If the data is deleted it is not possible to recover it so you won't be able to access it again even when you reinstall the plugin."
3614
  msgstr ""
3615
 
3616
- #: classes/Views/Settings.php:1483
3617
  msgid "Remove Data on Uninstall"
3618
  msgstr ""
3619
 
3620
- #: classes/Views/Settings.php:1508
3621
  msgid "Are you sure you want to reset all the plugin settings to default? This action cannot be undone."
3622
  msgstr ""
3623
 
3624
- #: classes/Views/Settings.php:1518
3625
  msgid "Are you sure you want to purge all the activity log data?"
3626
  msgstr ""
3627
 
3628
- #: classes/Views/Settings.php:1548
3629
  msgid "MainWP Child plugin is not active on this website."
3630
  msgstr ""
3631
 
3632
- #: classes/Views/Settings.php:1580
3633
- msgid "The plugin cannot create the directory for the log files. Please check permissions and configure it again."
3634
- msgstr ""
3635
-
3636
- #: classes/Views/Settings.php:1656
3637
  msgid "The specified value is not a valid URL!"
3638
  msgstr ""
3639
 
3640
- #: classes/Views/Settings.php:1657
3641
  msgid "The specified value is not a valid post type!"
3642
  msgstr ""
3643
 
3644
- #: classes/Views/Settings.php:1658
3645
  msgid "The specified value is not a valid IP address!"
3646
  msgstr ""
3647
 
3648
- #: classes/Views/Settings.php:1659
3649
  msgid "The specified value is not a user nor a role!"
3650
  msgstr ""
3651
 
3652
- #: classes/Views/Settings.php:1660
3653
  msgid "Filename cannot be added because it contains invalid characters."
3654
  msgstr ""
3655
 
3656
- #: classes/Views/Settings.php:1661
3657
  msgid "File extension cannot be added because it contains invalid characters."
3658
  msgstr ""
3659
 
3660
- #: classes/Views/Settings.php:1662
3661
  msgid "Directory cannot be added because it contains invalid characters."
3662
  msgstr ""
3663
 
3664
- #: classes/Views/Settings.php:1663
3665
  msgid "Please save any changes before switching tabs."
3666
  msgstr ""
3667
 
3668
- #: classes/Views/Settings.php:1791, classes/Views/Settings.php:1814
3669
  msgid "Nonce Verification Failed."
3670
  msgstr ""
3671
 
3672
- #: classes/Views/Settings.php:1799
3673
  msgid "Plugin settings have been reset."
3674
  msgstr ""
3675
 
3676
- #: classes/Views/Settings.php:1825
3677
  msgid "Reset query failed."
3678
  msgstr ""
3679
 
3680
- #: classes/Views/Settings.php:1823
3681
  msgid "Tables has been reset."
3682
  msgstr ""
3683
 
3684
- #: classes/Views/Settings.php:1838
3685
  msgid "Activity log retention"
3686
  msgstr ""
3687
 
3688
- #: classes/Views/Settings.php:1844
3689
  msgid "Keep all data"
3690
  msgstr ""
3691
 
3692
- #: classes/Views/Settings.php:1871
3693
  msgid "Delete events older than"
3694
  msgstr ""
3695
 
3696
- #: classes/Views/Settings.php:1879
3697
  msgid "Months"
3698
  msgstr ""
3699
 
3700
- #: classes/Views/Settings.php:1880
3701
  msgid "Years"
3702
  msgstr ""
3703
 
3704
- #: classes/Views/Settings.php:1888
3705
  msgid "The next scheduled purging of activity log data that is older than "
3706
  msgstr ""
3707
 
3708
- #: classes/Views/Settings.php:1895
3709
  msgid "You can run the purging process now by clicking the button below."
3710
  msgstr ""
3711
 
3712
- #: classes/Views/Settings.php:1899
3713
  msgid "Purge Old Data"
3714
  msgstr ""
3715
 
@@ -3882,120 +4068,124 @@ msgstr ""
3882
  msgid "Enable/Disable Events"
3883
  msgstr ""
3884
 
3885
- #: classes/Views/ToggleAlerts.php:171
3886
- msgid "Log Level: "
3887
- msgstr ""
3888
-
3889
- #: classes/Views/ToggleAlerts.php:176
3890
  msgid "Basic"
3891
  msgstr ""
3892
 
3893
- #: classes/Views/ToggleAlerts.php:181
3894
  msgid "Geek"
3895
  msgstr ""
3896
 
3897
- #: classes/Views/ToggleAlerts.php:184
3898
  msgid "Custom"
3899
  msgstr ""
3900
 
3901
- #: classes/Views/ToggleAlerts.php:188
 
 
 
 
3902
  msgid "Use the Log level drop down menu above to use one of our preset log levels. Alternatively you can enable or disable any of the individual events from the below tabs. Refer to <a href=\"https://wpactivitylog.com/support/kb/list-wordpress-activity-log-event-ids/\" target=\"_blank\">the complete list of WordPress activity log event IDs</a> for reference on all the events the plugin can keep a log of."
3903
  msgstr ""
3904
 
3905
- #: classes/Views/ToggleAlerts.php:198
3906
  msgid "Third party plugins"
3907
  msgstr ""
3908
 
3909
- #: classes/Views/ToggleAlerts.php:298
3910
  msgid "Code"
3911
  msgstr ""
3912
 
3913
- #: classes/Views/ToggleAlerts.php:341
3914
  msgid "Logins & Logouts"
3915
  msgstr ""
3916
 
3917
- #: classes/Views/ToggleAlerts.php:334
3918
  msgid "Your website is a single site so the multisite events have been disabled."
3919
  msgstr ""
3920
 
3921
- #: classes/Views/ToggleAlerts.php:314
3922
  msgid "The plugin WooCommerce is not installed on your website so these events have been disabled."
3923
  msgstr ""
3924
 
3925
- #: classes/Views/ToggleAlerts.php:321
3926
  msgid "Products"
3927
  msgstr ""
3928
 
3929
- #: classes/Views/ToggleAlerts.php:327
3930
  msgid "Post Changes"
3931
  msgstr ""
3932
 
3933
- #: classes/Views/ToggleAlerts.php:307
3934
  msgid "<strong>Note:</strong> Post refers to any type of content, i.e. blog post, page or a post with a custom post type."
3935
  msgstr ""
3936
 
3937
- #: classes/Views/ToggleAlerts.php:364
3938
  msgid "Not Implemented"
3939
  msgstr ""
3940
 
3941
- #: classes/Views/ToggleAlerts.php:367
3942
  msgid "Not Available"
3943
  msgstr ""
3944
 
3945
- #: classes/Views/ToggleAlerts.php:382
 
 
 
 
3946
  msgid "User Sessions"
3947
  msgstr ""
3948
 
3949
- #: classes/Views/ToggleAlerts.php:385
3950
  msgid "Files"
3951
  msgstr ""
3952
 
3953
- #: classes/Views/ToggleAlerts.php:388
3954
  msgid "Post Settings"
3955
  msgstr ""
3956
 
3957
- #: classes/Views/ToggleAlerts.php:457
3958
- msgid "Keep a log when users login to the website from other login pages / forms other than the default WordPress login page."
3959
- msgstr ""
3960
-
3961
- #: classes/Views/ToggleAlerts.php:470
3962
  msgid "Keep a log when a visitor registers a user on the website. Only enable this if you allow visitors to register as users on your website. User registration is disabled by default in WordPress."
3963
  msgstr ""
3964
 
3965
- #: classes/Views/ToggleAlerts.php:484, classes/Views/ToggleAlerts.php:497
3966
  msgid "Number of login attempts to log. Enter 0 to log all failed login attempts. (By default the plugin only logs up to 10 failed login because the process can be very resource intensive in case of a brute force attack)"
3967
  msgstr ""
3968
 
3969
- #: classes/Views/ToggleAlerts.php:543
 
 
 
 
3970
  msgid "Save Changes"
3971
  msgstr ""
3972
 
3973
- #: classes/Views/ToggleAlerts.php:550
3974
  msgid "Log Level Updated"
3975
  msgstr ""
3976
 
3977
  #. translators: Alerts log level.
3978
- #: classes/Views/ToggleAlerts.php:554
3979
  msgid "The %s log level has been successfully loaded and applied."
3980
  msgstr ""
3981
 
3982
- #: classes/Views/ToggleAlerts.php:558, extensions/email-notifications/classes/Notifications.php:292, extensions/email-notifications/classes/Notifications.php:882, extensions/email-notifications/classes/Notifications.php:1926
3983
  msgid "OK"
3984
  msgstr ""
3985
 
3986
- #: classes/Views/ToggleAlerts.php:573
3987
  msgid "Enable File Integrity Scanner"
3988
  msgstr ""
3989
 
3990
- #: classes/Views/ToggleAlerts.php:575
3991
  msgid "The file integrity scanner is switched off. To enable this event it has to be switched on."
3992
  msgstr ""
3993
 
3994
- #: classes/Views/ToggleAlerts.php:579
3995
  msgid "SWITCH ON"
3996
  msgstr ""
3997
 
3998
- #: classes/Views/ToggleAlerts.php:580
3999
  msgid "DISABLE EVENT"
4000
  msgstr ""
4001
 
@@ -4003,88 +4193,88 @@ msgstr ""
4003
  msgid "An identical search filter already exists."
4004
  msgstr ""
4005
 
4006
- #: extensions/search/search-init.php:218, extensions/search/search-init.php:334, extensions/user-sessions/classes/View/Sessions.php:367
4007
  msgid "Search"
4008
  msgstr ""
4009
 
4010
- #: extensions/search/search-init.php:335
4011
  msgid "- Use the free-text search to search for text in the event's message.<br>- To search for a particular Event ID, user, IP address, Post ID or Type or use date ranges, use the filters."
4012
  msgstr ""
4013
 
4014
- #: extensions/search/search-init.php:336
4015
  msgid "Clear Search Results"
4016
  msgstr ""
4017
 
4018
- #: extensions/search/search-init.php:337
4019
  msgid "Nothing found!"
4020
  msgstr ""
4021
 
4022
- #: extensions/search/search-init.php:338
4023
  msgid "Load"
4024
  msgstr ""
4025
 
4026
- #: extensions/search/search-init.php:339
4027
  msgid "Loading..."
4028
  msgstr ""
4029
 
4030
- #: extensions/search/search-init.php:340
4031
  msgid "Load & Run"
4032
  msgstr ""
4033
 
4034
- #: extensions/search/search-init.php:341, extensions/email-notifications/classes/NotificationBuilder.php:76, extensions/email-notifications/classes/Notifications.php:1836, extensions/email-notifications/classes/Notifications.php:1899, extensions/email-notifications/classes/Notifications.php:1914, extensions/external-db/classes/Connections.php:144, extensions/external-db/classes/Mirroring.php:204
4035
  msgid "Delete"
4036
  msgstr ""
4037
 
4038
- #: extensions/search/search-init.php:342, extensions/external-db/classes/Connections.php:556, extensions/external-db/classes/Mirroring.php:589
4039
  msgid "Deleting..."
4040
  msgstr ""
4041
 
4042
- #: extensions/search/search-init.php:344, extensions/search/classes/FilterManager.php:383
4043
  msgid "Load Search & Filters"
4044
  msgstr ""
4045
 
4046
- #: extensions/search/search-init.php:345
4047
  msgid "* Invalid IP"
4048
  msgstr ""
4049
 
4050
- #: extensions/search/search-init.php:346, extensions/search/classes/FilterManager.php:386
4051
  msgid "Remove"
4052
  msgstr ""
4053
 
4054
- #: extensions/search/search-init.php:347
4055
  msgid "Close Filters"
4056
  msgstr ""
4057
 
4058
- #: extensions/search/search-init.php:348, extensions/search/classes/FilterManager.php:411
4059
  msgid "Filter View"
4060
  msgstr ""
4061
 
4062
  #. translators: both placeholders are html formatting strings for itallics
4063
- #: extensions/search/search-init.php:351
4064
  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."
4065
  msgstr ""
4066
 
4067
- #: extensions/search/search-init.php:397
4068
  msgid "Widget could not be found."
4069
  msgstr ""
4070
 
4071
- #: extensions/search/search-init.php:479, extensions/search/search-init.php:549
4072
  msgid "No saved search found."
4073
  msgstr ""
4074
 
4075
- #: extensions/search/search-init.php:471
4076
  msgid "Saved searches found."
4077
  msgstr ""
4078
 
4079
- #: extensions/search/search-init.php:513
4080
  msgid "Search name not specified."
4081
  msgstr ""
4082
 
4083
- #: extensions/search/search-init.php:540
4084
  msgid "Saved search not found."
4085
  msgstr ""
4086
 
4087
- #: extensions/search/search-init.php:532
4088
  msgid "Saved search deleted."
4089
  msgstr ""
4090
 
@@ -4112,11 +4302,11 @@ msgstr ""
4112
  msgid "Add notification"
4113
  msgstr ""
4114
 
4115
- #: extensions/email-notifications/classes/AddNotification.php:236, extensions/email-notifications/classes/EditNotification.php:240
4116
  msgid "Back"
4117
  msgstr ""
4118
 
4119
- #: extensions/email-notifications/classes/AddNotification.php:252
4120
  msgid "You have reached the maximum number of notifications you can add."
4121
  msgstr ""
4122
 
@@ -4129,234 +4319,234 @@ msgstr ""
4129
  #. translators: Twilio settings hyperlink.
4130
  #. translators: Twilio settings hyperlink.
4131
  #. translators: Twilio settings hyperlink.
4132
- #: extensions/email-notifications/classes/AddNotification.php:297, extensions/email-notifications/classes/EditNotification.php:348, extensions/email-notifications/classes/Notifications.php:816, extensions/email-notifications/classes/Notifications.php:930, extensions/email-notifications/classes/Notifications.php:1251, extensions/email-notifications/classes/Notifications.php:1415, extensions/email-notifications/classes/Notifications.php:1509, extensions/email-notifications/classes/Notifications.php:1675, extensions/email-notifications/classes/SMSProviderSettings.php:237
4133
  msgid "Click %s to configure Twilio integration for SMS notifications."
4134
  msgstr ""
4135
 
4136
- #: extensions/email-notifications/classes/AddNotification.php:297, extensions/email-notifications/classes/EditNotification.php:348, extensions/email-notifications/classes/Notifications.php:816, extensions/email-notifications/classes/Notifications.php:930, extensions/email-notifications/classes/Notifications.php:1251, extensions/email-notifications/classes/Notifications.php:1415, extensions/email-notifications/classes/Notifications.php:1509, extensions/email-notifications/classes/Notifications.php:1675, extensions/email-notifications/classes/SMSProviderSettings.php:237
4137
  msgid "here"
4138
  msgstr ""
4139
 
4140
  #. translators: Trigger groups documentation hyperlink
4141
  #. translators: Trigger groups documentation hyperlink
4142
- #: extensions/email-notifications/classes/AddNotification.php:305, extensions/email-notifications/classes/EditNotification.php:356
4143
  msgid "Trigger groups documentation"
4144
  msgstr ""
4145
 
4146
- #: extensions/email-notifications/classes/AddNotification.php:310, extensions/email-notifications/classes/EditNotification.php:361
4147
  msgid "Triggers"
4148
  msgstr ""
4149
 
4150
- #: extensions/email-notifications/classes/AddNotification.php:311, extensions/email-notifications/classes/EditNotification.php:362
4151
  msgid "Add Trigger"
4152
  msgstr ""
4153
 
4154
- #: extensions/email-notifications/classes/AddNotification.php:325, extensions/email-notifications/classes/EditNotification.php:405
4155
  msgid "Use default email template"
4156
  msgstr ""
4157
 
4158
- #: extensions/email-notifications/classes/AddNotification.php:330, extensions/email-notifications/classes/EditNotification.php:414
4159
  msgid "Use event specific email template"
4160
  msgstr ""
4161
 
4162
- #: 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
4163
  msgid "Name"
4164
  msgstr ""
4165
 
4166
- #: extensions/email-notifications/classes/AddNotification.php:356, extensions/email-notifications/classes/EditNotification.php:448, extensions/email-notifications/classes/Notifications.php:1849, extensions/email-notifications/classes/Notifications.php:1860
4167
  msgid "Title"
4168
  msgstr ""
4169
 
4170
- #: extensions/email-notifications/classes/AddNotification.php:364, extensions/email-notifications/classes/EditNotification.php:456, extensions/email-notifications/classes/Notifications.php:947, extensions/email-notifications/classes/Notifications.php:970, extensions/email-notifications/classes/Notifications.php:987, extensions/email-notifications/classes/Notifications.php:1011, extensions/email-notifications/classes/Notifications.php:1033, extensions/email-notifications/classes/Notifications.php:1046, extensions/email-notifications/classes/Notifications.php:1059, extensions/email-notifications/classes/Notifications.php:1072, extensions/email-notifications/classes/Notifications.php:1085, extensions/email-notifications/classes/Notifications.php:1098, extensions/email-notifications/classes/Notifications.php:1122, extensions/email-notifications/classes/Notifications.php:1137, extensions/email-notifications/classes/Notifications.php:1152, extensions/email-notifications/classes/Notifications.php:1167, extensions/email-notifications/classes/Notifications.php:1182, extensions/email-notifications/classes/Notifications.php:1204, extensions/email-notifications/classes/Notifications.php:1269, extensions/email-notifications/classes/Notifications.php:1284, extensions/email-notifications/classes/Notifications.php:1299, extensions/email-notifications/classes/Notifications.php:1323, extensions/email-notifications/classes/Notifications.php:1338, extensions/email-notifications/classes/Notifications.php:1353, extensions/email-notifications/classes/Notifications.php:1368, extensions/email-notifications/classes/Notifications.php:1430, extensions/email-notifications/classes/Notifications.php:1445, extensions/email-notifications/classes/Notifications.php:1460, extensions/email-notifications/classes/Notifications.php:1524, extensions/email-notifications/classes/Notifications.php:1541, extensions/email-notifications/classes/Notifications.php:1558, extensions/email-notifications/classes/Notifications.php:1575, extensions/email-notifications/classes/Notifications.php:1592, extensions/email-notifications/classes/Notifications.php:1609, extensions/email-notifications/classes/Notifications.php:1626, extensions/email-notifications/classes/Notifications.php:1692, extensions/email-notifications/classes/Notifications.php:1709, extensions/email-notifications/classes/Notifications.php:1726, extensions/email-notifications/classes/Notifications.php:1743, extensions/user-sessions/classes/View/Sessions.php:349
4171
  msgid "Email"
4172
  msgstr ""
4173
 
4174
- #: extensions/email-notifications/classes/AddNotification.php:370, extensions/email-notifications/classes/EditNotification.php:462, extensions/email-notifications/classes/Notifications.php:973, extensions/email-notifications/classes/Notifications.php:990, extensions/email-notifications/classes/Notifications.php:1014, extensions/email-notifications/classes/Notifications.php:1036, extensions/email-notifications/classes/Notifications.php:1049, extensions/email-notifications/classes/Notifications.php:1062, extensions/email-notifications/classes/Notifications.php:1075, extensions/email-notifications/classes/Notifications.php:1088, extensions/email-notifications/classes/Notifications.php:1101, extensions/email-notifications/classes/Notifications.php:1125, extensions/email-notifications/classes/Notifications.php:1140, extensions/email-notifications/classes/Notifications.php:1155, extensions/email-notifications/classes/Notifications.php:1170, extensions/email-notifications/classes/Notifications.php:1185, extensions/email-notifications/classes/Notifications.php:1207, extensions/email-notifications/classes/Notifications.php:1272, extensions/email-notifications/classes/Notifications.php:1287, extensions/email-notifications/classes/Notifications.php:1302, extensions/email-notifications/classes/Notifications.php:1326, extensions/email-notifications/classes/Notifications.php:1341, extensions/email-notifications/classes/Notifications.php:1356, extensions/email-notifications/classes/Notifications.php:1371, 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:1527, extensions/email-notifications/classes/Notifications.php:1544, extensions/email-notifications/classes/Notifications.php:1561, extensions/email-notifications/classes/Notifications.php:1578, extensions/email-notifications/classes/Notifications.php:1595, extensions/email-notifications/classes/Notifications.php:1612, extensions/email-notifications/classes/Notifications.php:1629, extensions/email-notifications/classes/Notifications.php:1695, extensions/email-notifications/classes/Notifications.php:1712, extensions/email-notifications/classes/Notifications.php:1729, extensions/email-notifications/classes/Notifications.php:1746
4175
  msgid "Mobile Number"
4176
  msgstr ""
4177
 
4178
- #: extensions/email-notifications/classes/Common.php:381, extensions/email-notifications/classes/Common.php:446
4179
  msgid "The form is not valid. Please reload the page and try again."
4180
  msgstr ""
4181
 
4182
  #. translators: Event type
4183
- #: extensions/email-notifications/classes/Common.php:583, extensions/email-notifications/classes/Common.php:573, extensions/email-notifications/classes/Common.php:559, extensions/email-notifications/classes/Common.php:546, extensions/email-notifications/classes/Common.php:523, extensions/email-notifications/classes/Common.php:503, extensions/email-notifications/classes/Common.php:424
4184
  msgid "%s is not valid"
4185
  msgstr ""
4186
 
4187
- #: extensions/email-notifications/classes/Common.php:589
4188
  msgid "Selected TYPE is not valid."
4189
  msgstr ""
4190
 
4191
- #: extensions/email-notifications/classes/Common.php:579
4192
  msgid "Selected OBJECT is not valid."
4193
  msgstr ""
4194
 
4195
- #: extensions/email-notifications/classes/Common.php:568
4196
  msgid "Selected POST STATUS is not valid."
4197
  msgstr ""
4198
 
4199
- #: extensions/email-notifications/classes/Common.php:555
4200
  msgid "Selected POST TYPE is not valid."
4201
  msgstr ""
4202
 
4203
- #: extensions/email-notifications/classes/Common.php:534
4204
  msgid "The enviroment is not multisite."
4205
  msgstr ""
4206
 
4207
- #: extensions/email-notifications/classes/Common.php:540, extensions/email-notifications/classes/Common.php:517
4208
  msgid "%s was not found"
4209
  msgstr ""
4210
 
4211
- #: extensions/email-notifications/classes/Common.php:490, extensions/email-notifications/classes/Common.php:496
4212
  msgid "TIME is not valid."
4213
  msgstr ""
4214
 
4215
- #: extensions/email-notifications/classes/Common.php:481
4216
  msgid "DATE is not valid."
4217
  msgstr ""
4218
 
4219
- #: extensions/email-notifications/classes/Common.php:440
4220
  msgid "The SOURCE IP is not valid. Maximum of 15 characters allowed."
4221
  msgstr ""
4222
 
4223
- #: extensions/email-notifications/classes/Common.php:455
4224
  msgid "The SOURCE IP is not valid."
4225
  msgstr ""
4226
 
4227
- #: extensions/email-notifications/classes/Common.php:464
4228
  msgid "The SOURCE IP fragment is not valid."
4229
  msgstr ""
4230
 
4231
- #: extensions/email-notifications/classes/Common.php:433
4232
  msgid "Selected USER ROLE is not valid."
4233
  msgstr ""
4234
 
4235
- #: extensions/email-notifications/classes/Common.php:414
4236
  msgid "The USERNAME is not valid. Maximum of 50 characters allowed."
4237
  msgstr ""
4238
 
4239
- #: extensions/email-notifications/classes/Common.php:420
4240
  msgid "The USERNAME does not exist."
4241
  msgstr ""
4242
 
4243
- #: extensions/email-notifications/classes/Common.php:392, extensions/email-notifications/classes/Common.php:407
4244
  msgid "The EVENT ID is not valid."
4245
  msgstr ""
4246
 
4247
- #: extensions/email-notifications/classes/Common.php:398
4248
  msgid "Internal Error. Please reload the page and try again."
4249
  msgstr ""
4250
 
4251
- #: extensions/email-notifications/classes/Common.php:814, extensions/email-notifications/classes/Common.php:842, extensions/email-notifications/classes/Common.php:844
4252
  msgid "Title is required."
4253
  msgstr ""
4254
 
4255
- #: extensions/email-notifications/classes/Common.php:851
4256
  msgid "Title is not valid."
4257
  msgstr ""
4258
 
4259
- #: extensions/email-notifications/classes/Common.php:861
4260
  msgid "Please add at least one condition."
4261
  msgstr ""
4262
 
4263
- #: extensions/email-notifications/classes/Common.php:909, extensions/email-notifications/classes/Common.php:915, extensions/email-notifications/classes/Common.php:920
4264
  msgid "The form is not valid. Please refresh the page and try again."
4265
  msgstr ""
4266
 
4267
- #: extensions/email-notifications/classes/Common.php:929
4268
  msgid "A trigger's condition must not be longer than 50 characters."
4269
  msgstr ""
4270
 
4271
- #: extensions/email-notifications/classes/Common.php:965
4272
  msgid "Email or Username is not valid."
4273
  msgstr ""
4274
 
4275
- #: extensions/email-notifications/classes/Common.php:972
4276
  msgid "Mobile number is not valid."
4277
  msgstr ""
4278
 
4279
- #: extensions/email-notifications/classes/Common.php:959
4280
  msgid "Email or Username is required."
4281
  msgstr ""
4282
 
4283
- #: extensions/email-notifications/classes/Common.php:960
4284
  msgid "Mobile number is required."
4285
  msgstr ""
4286
 
4287
- #: extensions/email-notifications/classes/Common.php:1024, extensions/email-notifications/classes/Notifications.php:582
4288
  msgid "Notification could not be saved."
4289
  msgstr ""
4290
 
4291
- #: extensions/email-notifications/classes/Common.php:1031, extensions/email-notifications/classes/Notifications.php:641
4292
  msgid "Notification successfully saved."
4293
  msgstr ""
4294
 
4295
- #: extensions/email-notifications/classes/Common.php:1109, extensions/email-notifications/classes/Common.php:1171
4296
  msgid "Notification {title} on website {site} triggered"
4297
  msgstr ""
4298
 
4299
- #: extensions/email-notifications/classes/Common.php:1110, extensions/email-notifications/classes/Common.php:1172
4300
  msgid "Notification <strong>{title}</strong> was triggered. Below are the notification details:"
4301
  msgstr ""
4302
 
4303
- #: extensions/email-notifications/classes/Common.php:1112
4304
  msgid "Website"
4305
  msgstr ""
4306
 
4307
- #: extensions/email-notifications/classes/Common.php:1114, extensions/email-notifications/classes/Common.php:1175, extensions/search/classes/FilterManager.php:474, extensions/user-sessions/classes/View/Sessions.php:174, extensions/user-sessions/classes/View/Sessions.php:348
4308
  msgid "Username"
4309
  msgstr ""
4310
 
4311
- #: extensions/email-notifications/classes/Common.php:1115
4312
  msgid "User role"
4313
  msgstr ""
4314
 
4315
- #: extensions/email-notifications/classes/Common.php:1116
4316
  msgid "IP address"
4317
  msgstr ""
4318
 
4319
- #: extensions/email-notifications/classes/Common.php:1119
4320
  msgid "Event Message"
4321
  msgstr ""
4322
 
4323
- #: extensions/email-notifications/classes/Common.php:1120
4324
  msgid "Event generated on"
4325
  msgstr ""
4326
 
4327
- #: extensions/email-notifications/classes/Common.php:1122
4328
  msgid "These email notifications are sent with <a href=\"http://wpactivitylog.com\">WP Activity Log</a>, the most comprehensive WordPress activity log plugin solution."
4329
  msgstr ""
4330
 
4331
- #: extensions/email-notifications/classes/Common.php:1145, extensions/email-notifications/classes/Common.php:1204
4332
  msgid "User/Role"
4333
  msgstr ""
4334
 
4335
- #: 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/user-sessions/classes/View/Sessions.php:353
4336
  msgid "User Role"
4337
  msgstr ""
4338
 
4339
- #: extensions/email-notifications/classes/Common.php:1178
4340
  msgid "Generated On"
4341
  msgstr ""
4342
 
4343
- #: extensions/email-notifications/classes/Common.php:1180
4344
  msgid "Monitoring of WordPress and Email Notifications provided by <a href=\"http://wpactivitylog.com\">WP Activity Log, WordPress most comprehensive audit trail plugin</a>."
4345
  msgstr ""
4346
 
4347
- #: extensions/email-notifications/classes/Common.php:1205
4348
  msgid "Event"
4349
  msgstr ""
4350
 
4351
- #: extensions/email-notifications/classes/Common.php:1220
4352
  msgid "Subject "
4353
  msgstr ""
4354
 
4355
- #: extensions/email-notifications/classes/Common.php:1229
4356
  msgid "Body "
4357
  msgstr ""
4358
 
4359
- #: extensions/email-notifications/classes/Common.php:1232
4360
  msgid "HTML is accepted. Available template tags:"
4361
  msgstr ""
4362
 
@@ -4395,15 +4585,15 @@ msgstr ""
4395
  msgid "Edit Notification"
4396
  msgstr ""
4397
 
4398
- #: extensions/email-notifications/classes/EditNotification.php:239, extensions/email-notifications/classes/Notifications.php:1798
4399
  msgid "Add New"
4400
  msgstr ""
4401
 
4402
- #: extensions/email-notifications/classes/EditNotification.php:270
4403
  msgid "You do not have sufficient permissions to access this page. - INVALID NOTIFICATION ID"
4404
  msgstr ""
4405
 
4406
- #: extensions/email-notifications/classes/EditNotification.php:466
4407
  msgid "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 (,)."
4408
  msgstr ""
4409
 
@@ -4742,7 +4932,7 @@ msgstr ""
4742
  msgid "Search Notifications"
4743
  msgstr ""
4744
 
4745
- #: extensions/email-notifications/classes/Notifications.php:1811, extensions/reports/classes/HtmlReportGenerator.php:175, extensions/reports/classes/HtmlReportGenerator.php:179, extensions/user-sessions/classes/View/Options/Policies.php:24
4746
  msgid "All"
4747
  msgstr ""
4748
 
@@ -4762,7 +4952,7 @@ msgstr ""
4762
  msgid "Apply"
4763
  msgstr ""
4764
 
4765
- #: extensions/email-notifications/classes/Notifications.php:1846, extensions/email-notifications/classes/Notifications.php:1857, extensions/reports/inc/wsal-reporting-view.inc.php:735
4766
  msgid "Select All"
4767
  msgstr ""
4768
 
@@ -4928,18 +5118,6 @@ msgstr ""
4928
  msgid "Unknown notification."
4929
  msgstr ""
4930
 
4931
- #: extensions/email-notifications/classes/Notifier.php:756, extensions/reports/classes/Common.php:502
4932
- msgid "View the Forum in editor"
4933
- msgstr ""
4934
-
4935
- #: extensions/email-notifications/classes/Notifier.php:759, extensions/reports/classes/Common.php:505
4936
- msgid "View the Topic in editor"
4937
- msgstr ""
4938
-
4939
- #: extensions/email-notifications/classes/Notifier.php:941
4940
- msgid "Contact us on support@wpsecurityauditlog.com for assistance"
4941
- msgstr ""
4942
-
4943
  #: extensions/email-notifications/classes/SMSProviderSettings.php:118
4944
  msgid "SMS Provider"
4945
  msgstr ""
@@ -5294,7 +5472,7 @@ msgid "Are you sure that you want to delete this connection?"
5294
  msgstr ""
5295
 
5296
  #: extensions/external-db/classes/Connections.php:564, extensions/external-db/classes/Mirroring.php:600
5297
- msgid "Test connection and continue"
5298
  msgstr ""
5299
 
5300
  #: extensions/external-db/classes/Connections.php:725
@@ -5357,7 +5535,7 @@ msgstr ""
5357
  msgid "The WordPress activity log is currently being mirrored to:"
5358
  msgstr ""
5359
 
5360
- #: extensions/external-db/classes/Mirroring.php:125, extensions/external-db/classes/Mirroring.php:397, extensions/reports/inc/wsal-reporting-view.inc.php:1424
5361
  msgid "Frequency"
5362
  msgstr ""
5363
 
@@ -5514,7 +5692,7 @@ msgstr ""
5514
  msgid "Are you sure that you want to delete this mirror?"
5515
  msgstr ""
5516
 
5517
- #: extensions/external-db/classes/Mirroring.php:599, extensions/reports/inc/wsal-reporting-view.inc.php:987
5518
  msgid "Select Event Code(s)"
5519
  msgstr ""
5520
 
@@ -5714,487 +5892,499 @@ msgstr ""
5714
  msgid "Mirror not found."
5715
  msgstr ""
5716
 
5717
- #: 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, extensions/reports/classes/Common.php:746, extensions/reports/classes/Common.php:750, extensions/reports/classes/Common.php:754
5718
  msgid "Internal error. <code>%s</code> key was not found."
5719
  msgstr ""
5720
 
5721
- #: extensions/reports/classes/Common.php:778, extensions/reports/classes/Common.php:1603
5722
  msgid "Please specify at least one Alert Group or specify an Alert Code."
5723
  msgstr ""
5724
 
5725
- #: extensions/reports/classes/Common.php:783
5726
  msgid "Internal Error: Could not detect the type of the report to generate."
5727
  msgstr ""
5728
 
5729
- #: extensions/reports/classes/Common.php:893, extensions/reports/classes/Common.php:927, extensions/reports/classes/Common.php:972, extensions/reports/classes/Common.php:990, extensions/reports/classes/Common.php:1804
5730
  msgid "There are no alerts that match your filtering criteria. Please try a different set of rules."
5731
  msgstr ""
5732
 
5733
- #: extensions/reports/classes/Common.php:975, extensions/reports/classes/Common.php:993, extensions/reports/classes/Common.php:1807
5734
  msgid "Error: The <strong>%s</strong> path is not accessible."
5735
  msgstr ""
5736
 
5737
- #: extensions/reports/classes/Common.php:1257, extensions/reports/classes/Common.php:1705
5738
  msgid "%1$s - Website %2$s"
5739
  msgstr ""
5740
 
5741
- #: extensions/reports/classes/Common.php:1260, extensions/reports/classes/Common.php:1708
5742
  msgid "Week number %1$s - Website %2$s"
5743
  msgstr ""
5744
 
5745
- #: extensions/reports/classes/Common.php:1263, extensions/reports/classes/Common.php:1711
5746
  msgid "Month %1$s %2$s- Website %3$s"
5747
  msgstr ""
5748
 
5749
- #: extensions/reports/classes/Common.php:1266, extensions/reports/classes/Common.php:1714
5750
  msgid "Quarter %1$s - Website %2$s"
5751
  msgstr ""
5752
 
5753
- #: extensions/reports/classes/Common.php:1281, extensions/reports/classes/Common.php:1723
5754
  msgid " - %s Email Report"
5755
  msgstr ""
5756
 
5757
- #: extensions/reports/classes/Common.php:1575
5758
  msgid "Internal Error. Could not retrieve the alerts from the main plugin."
5759
  msgstr ""
5760
 
5761
- #: extensions/reports/classes/HtmlReportGenerator.php:108, extensions/reports/classes/HtmlReportGenerator.php:359
5762
  msgid "WP Activity Log Reporter"
5763
  msgstr ""
5764
 
5765
- #: extensions/reports/classes/HtmlReportGenerator.php:140
5766
  msgid "Report from"
5767
  msgstr ""
5768
 
5769
- #: extensions/reports/classes/HtmlReportGenerator.php:140
5770
  msgid "website"
5771
  msgstr ""
5772
 
5773
- #: extensions/reports/classes/HtmlReportGenerator.php:150, extensions/reports/classes/HtmlReportGenerator.php:368
5774
  msgid "Report Details:"
5775
  msgstr ""
5776
 
5777
- #: extensions/reports/classes/HtmlReportGenerator.php:151, extensions/reports/classes/HtmlReportGenerator.php:369
5778
  msgid "Generated on:"
5779
  msgstr ""
5780
 
5781
- #: extensions/reports/classes/HtmlReportGenerator.php:152, extensions/reports/classes/HtmlReportGenerator.php:370
5782
  msgid "Generated by:"
5783
  msgstr ""
5784
 
5785
- #: extensions/reports/classes/HtmlReportGenerator.php:158
5786
  msgid "Site(s)"
5787
  msgstr ""
5788
 
5789
- #: extensions/reports/classes/HtmlReportGenerator.php:159
5790
  msgid "User(s)"
5791
  msgstr ""
5792
 
5793
- #: extensions/reports/classes/HtmlReportGenerator.php:160
5794
  msgid "Role(s)"
5795
  msgstr ""
5796
 
5797
- #: extensions/reports/classes/HtmlReportGenerator.php:161
5798
  msgid "IP address(es)"
5799
  msgstr ""
5800
 
5801
- #: extensions/reports/classes/HtmlReportGenerator.php:162
5802
  msgid "Alert Groups"
5803
  msgstr ""
5804
 
5805
- #: extensions/reports/classes/HtmlReportGenerator.php:163, extensions/reports/classes/HtmlReportGenerator.php:374
5806
  msgid "Alert Code(s)"
5807
  msgstr ""
5808
 
5809
- #: extensions/reports/classes/HtmlReportGenerator.php:164, extensions/reports/classes/HtmlReportGenerator.php:375
5810
  msgid "Start date"
5811
  msgstr ""
5812
 
5813
- #: extensions/reports/classes/HtmlReportGenerator.php:165, extensions/reports/classes/HtmlReportGenerator.php:376
5814
  msgid "End date"
5815
  msgstr ""
5816
 
5817
- #: extensions/reports/classes/HtmlReportGenerator.php:166
5818
  msgid "Post Types"
5819
  msgstr ""
5820
 
5821
- #: extensions/reports/classes/HtmlReportGenerator.php:167, extensions/reports/inc/wsal-reporting-view.inc.php:769, extensions/search/classes/FilterManager.php:494, extensions/search/classes/Filters/poststatusfilter.php:47, extensions/search/classes/Filters/poststatusfilter.php:82
5822
  msgid "Post Status"
5823
  msgstr ""
5824
 
5825
- #: extensions/reports/classes/HtmlReportGenerator.php:176, extensions/reports/classes/HtmlReportGenerator.php:345
5826
  msgid "From the beginning"
5827
  msgstr ""
5828
 
5829
- #: extensions/reports/classes/HtmlReportGenerator.php:221, extensions/reports/classes/HtmlReportGenerator.php:371
5830
  msgid "Criteria"
5831
  msgstr ""
5832
 
5833
- #: extensions/reports/classes/HtmlReportGenerator.php:387
5834
  msgid "Results"
5835
  msgstr ""
5836
 
5837
- #: extensions/reports/inc/wsal-reporting-view.inc.php:198
5838
  msgid "Invalid Request. Please refresh the page and try again."
5839
  msgstr ""
5840
 
5841
- #: extensions/reports/inc/wsal-reporting-view.inc.php:211
5842
  msgid "Error (TODO - error message): Please select SITES"
5843
  msgstr ""
5844
 
5845
- #: extensions/reports/inc/wsal-reporting-view.inc.php:232
5846
  msgid "Error (TODO - error message): Please select USERS"
5847
  msgstr ""
5848
 
5849
- #: extensions/reports/inc/wsal-reporting-view.inc.php:274
5850
  msgid "Error: Please select at least one role"
5851
  msgstr ""
5852
 
5853
- #: extensions/reports/inc/wsal-reporting-view.inc.php:321
5854
  msgid "Error: Please select at least one IP address"
5855
  msgstr ""
5856
 
5857
- #: extensions/reports/inc/wsal-reporting-view.inc.php:339
5858
  msgid "Error: Please select at least one object"
5859
  msgstr ""
5860
 
5861
- #: extensions/reports/inc/wsal-reporting-view.inc.php:356
5862
  msgid "Error: Please select at least one event object"
5863
  msgstr ""
5864
 
5865
- #: extensions/reports/inc/wsal-reporting-view.inc.php:441
5866
  msgid "Please select the report format."
5867
  msgstr ""
5868
 
5869
- #: extensions/reports/inc/wsal-reporting-view.inc.php:495
5870
  msgid "Periodic Report successfully saved."
5871
  msgstr ""
5872
 
5873
- #: extensions/reports/inc/wsal-reporting-view.inc.php:463, extensions/reports/inc/wsal-reporting-view.inc.php:514
5874
- msgid " Generating report. Please do not close this window"
5875
  msgstr ""
5876
 
5877
- #: extensions/reports/inc/wsal-reporting-view.inc.php:536
 
 
 
 
 
 
 
 
 
 
 
 
5878
  msgid "Periodic Report successfully Deleted."
5879
  msgstr ""
5880
 
5881
- #: extensions/reports/inc/wsal-reporting-view.inc.php:567
5882
  msgid "Generate & Configure Periodic Reports"
5883
  msgstr ""
5884
 
5885
- #: extensions/reports/inc/wsal-reporting-view.inc.php:568
5886
  msgid "Statistics Reports"
5887
  msgstr ""
5888
 
5889
- #: extensions/reports/inc/wsal-reporting-view.inc.php:588
5890
  msgid "Generate a report"
5891
  msgstr ""
5892
 
5893
- #: extensions/reports/inc/wsal-reporting-view.inc.php:591
5894
  msgid "Step 1: Select the type of report"
5895
  msgstr ""
5896
 
5897
- #: extensions/reports/inc/wsal-reporting-view.inc.php:597
5898
  msgid "By Site(s)"
5899
  msgstr ""
5900
 
5901
- #: extensions/reports/inc/wsal-reporting-view.inc.php:605
5902
  msgid "Specify sites"
5903
  msgstr ""
5904
 
5905
- #: extensions/reports/inc/wsal-reporting-view.inc.php:613
5906
  msgid "By User(s)"
5907
  msgstr ""
5908
 
5909
- #: extensions/reports/inc/wsal-reporting-view.inc.php:617
5910
  msgid "All Users"
5911
  msgstr ""
5912
 
5913
- #: extensions/reports/inc/wsal-reporting-view.inc.php:621
5914
  msgid "Specify users"
5915
  msgstr ""
5916
 
5917
- #: extensions/reports/inc/wsal-reporting-view.inc.php:645
5918
  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."
5919
  msgstr ""
5920
 
5921
- #: extensions/reports/inc/wsal-reporting-view.inc.php:650
5922
  msgid "Enable Autocomplete"
5923
  msgstr ""
5924
 
5925
- #: extensions/reports/inc/wsal-reporting-view.inc.php:659
5926
  msgid "By Role(s)"
5927
  msgstr ""
5928
 
5929
- #: extensions/reports/inc/wsal-reporting-view.inc.php:663
5930
  msgid "All Roles"
5931
  msgstr ""
5932
 
5933
- #: extensions/reports/inc/wsal-reporting-view.inc.php:667
5934
  msgid "Specify roles"
5935
  msgstr ""
5936
 
5937
- #: extensions/reports/inc/wsal-reporting-view.inc.php:675
5938
  msgid "By IP Address(es)"
5939
  msgstr ""
5940
 
5941
- #: extensions/reports/inc/wsal-reporting-view.inc.php:679
5942
  msgid "All IP Addresses"
5943
  msgstr ""
5944
 
5945
- #: extensions/reports/inc/wsal-reporting-view.inc.php:683
5946
  msgid "Specify IP Addresses"
5947
  msgstr ""
5948
 
5949
- #: extensions/reports/inc/wsal-reporting-view.inc.php:691
5950
  msgid "By Object(s)"
5951
  msgstr ""
5952
 
5953
- #: extensions/reports/inc/wsal-reporting-view.inc.php:695
5954
  msgid "All Objects"
5955
  msgstr ""
5956
 
5957
- #: extensions/reports/inc/wsal-reporting-view.inc.php:699
5958
  msgid "Specify Objects"
5959
  msgstr ""
5960
 
5961
- #: extensions/reports/inc/wsal-reporting-view.inc.php:707
5962
  msgid "By Event Type(s)"
5963
  msgstr ""
5964
 
5965
- #: extensions/reports/inc/wsal-reporting-view.inc.php:711
5966
  msgid "All Event Types"
5967
  msgstr ""
5968
 
5969
- #: extensions/reports/inc/wsal-reporting-view.inc.php:715
5970
  msgid "Specify Event Types"
5971
  msgstr ""
5972
 
5973
- #: extensions/reports/inc/wsal-reporting-view.inc.php:723
5974
  msgid "By Event Code(s)"
5975
  msgstr ""
5976
 
5977
- #: extensions/reports/inc/wsal-reporting-view.inc.php:755
5978
  msgid "Posts"
5979
  msgstr ""
5980
 
5981
- #: extensions/reports/inc/wsal-reporting-view.inc.php:761, extensions/search/classes/FilterManager.php:498, extensions/search/classes/Filters/posttypefilter.php:85
5982
  msgid "Post Type"
5983
  msgstr ""
5984
 
5985
- #: extensions/reports/inc/wsal-reporting-view.inc.php:783
5986
  msgid "Specify Event Codes"
5987
  msgstr ""
5988
 
5989
- #: extensions/reports/inc/wsal-reporting-view.inc.php:791
5990
  msgid "By the Below Criteria"
5991
  msgstr ""
5992
 
5993
- #: extensions/reports/inc/wsal-reporting-view.inc.php:796
5994
  msgid "Number & List of unique IP addresses per user"
5995
  msgstr ""
5996
 
5997
- #: extensions/reports/inc/wsal-reporting-view.inc.php:801
5998
  msgid "Number of Logins per user"
5999
  msgstr ""
6000
 
6001
- #: extensions/reports/inc/wsal-reporting-view.inc.php:835
6002
  msgid "Select site(s)"
6003
  msgstr ""
6004
 
6005
- #: extensions/reports/inc/wsal-reporting-view.inc.php:857
6006
  msgid "Select user(s)"
6007
  msgstr ""
6008
 
6009
- #: extensions/reports/inc/wsal-reporting-view.inc.php:899
6010
  msgid "Select role(s)"
6011
  msgstr ""
6012
 
6013
- #: extensions/reports/inc/wsal-reporting-view.inc.php:921
6014
  msgid "Select IP address(es)"
6015
  msgstr ""
6016
 
6017
- #: extensions/reports/inc/wsal-reporting-view.inc.php:943
6018
  msgid "Select Objects(s)"
6019
  msgstr ""
6020
 
6021
- #: extensions/reports/inc/wsal-reporting-view.inc.php:965
6022
  msgid "Select Type(s)"
6023
  msgstr ""
6024
 
6025
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1017
6026
  msgid "Select Post Type(s)"
6027
  msgstr ""
6028
 
6029
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1047
6030
  msgid "Select Post Status(es)"
6031
  msgstr ""
6032
 
6033
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1351
6034
  msgid "Step 2: Select the date range"
6035
  msgstr ""
6036
 
6037
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1353
6038
  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."
6039
  msgstr ""
6040
 
6041
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1358
6042
  msgid "Start Date"
6043
  msgstr ""
6044
 
6045
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1361, extensions/reports/inc/wsal-reporting-view.inc.php:1503
6046
  msgid "Select start date"
6047
  msgstr ""
6048
 
6049
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1367
6050
  msgid "End Date"
6051
  msgstr ""
6052
 
6053
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1370, extensions/reports/inc/wsal-reporting-view.inc.php:1512
6054
  msgid "Select end date"
6055
  msgstr ""
6056
 
6057
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1384, extensions/reports/inc/wsal-reporting-view.inc.php:1596
6058
  msgid "Step 3: Select Report Format"
6059
  msgstr ""
6060
 
6061
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1391, extensions/reports/inc/wsal-reporting-view.inc.php:1602
6062
  msgid "HTML"
6063
  msgstr ""
6064
 
6065
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1396, extensions/reports/inc/wsal-reporting-view.inc.php:1606
6066
  msgid "CSV"
6067
  msgstr ""
6068
 
6069
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1403
6070
  msgid "Step 4: Generate Report Now or Configure Periodic Reports"
6071
  msgstr ""
6072
 
6073
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1406
6074
  msgid "Generate Report Now"
6075
  msgstr ""
6076
 
6077
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1409
6078
  msgid " Use the buttons below to use the above criteria for a daily, weekly and monthly summary report which is sent automatically via email."
6079
  msgstr ""
6080
 
6081
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1412
6082
  msgid "Email address(es)"
6083
  msgstr ""
6084
 
6085
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1418
6086
  msgid "Report Name"
6087
  msgstr ""
6088
 
6089
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1426
6090
  msgid "Daily"
6091
  msgstr ""
6092
 
6093
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1427
6094
  msgid "Weekly"
6095
  msgstr ""
6096
 
6097
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1428
6098
  msgid "Monthly"
6099
  msgstr ""
6100
 
6101
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1429
6102
  msgid "Quarterly"
6103
  msgstr ""
6104
 
6105
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1442
6106
  msgid "Configured Periodic Reports"
6107
  msgstr ""
6108
 
6109
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1445
6110
  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."
6111
  msgstr ""
6112
 
6113
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1448
6114
  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."
6115
  msgstr ""
6116
 
6117
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1496
6118
  msgid "Step 1: Choose Date Range"
6119
  msgstr ""
6120
 
6121
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1500, extensions/search/classes/Filters/DateFilter.php:55
6122
  msgid "From"
6123
  msgstr ""
6124
 
6125
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1509
6126
  msgid "To"
6127
  msgstr ""
6128
 
6129
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1525
6130
  msgid "Step 2: Choose Criteria"
6131
  msgstr ""
6132
 
6133
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1528
6134
  msgid "Report for"
6135
  msgstr ""
6136
 
6137
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1533
6138
  msgid "Number of logins for user"
6139
  msgstr ""
6140
 
6141
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1538
6142
  msgid "Number of logins for users with the role of"
6143
  msgstr ""
6144
 
6145
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1543
6146
  msgid "Number of views for user"
6147
  msgstr ""
6148
 
6149
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1548
6150
  msgid "Number of views for users with the role of"
6151
  msgstr ""
6152
 
6153
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1553
6154
  msgid "Number of published content for user"
6155
  msgstr ""
6156
 
6157
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1558
6158
  msgid "Number of published content for users with the role of"
6159
  msgstr ""
6160
 
6161
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1563
6162
  msgid "Different IP addresses for Usernames"
6163
  msgstr ""
6164
 
6165
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1568
6166
  msgid "List only IP addresses used during login"
6167
  msgstr ""
6168
 
6169
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1570
6170
  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."
6171
  msgstr ""
6172
 
6173
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1629
6174
  msgid "Please specify at least one site"
6175
  msgstr ""
6176
 
6177
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1638
6178
  msgid "Please specify at least one user"
6179
  msgstr ""
6180
 
6181
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1647
6182
  msgid "Please specify at least one role"
6183
  msgstr ""
6184
 
6185
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1656
6186
  msgid "Please specify at least one IP address"
6187
  msgstr ""
6188
 
6189
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1665
6190
  msgid "Please specify at least one object"
6191
  msgstr ""
6192
 
6193
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1674
6194
  msgid "Please specify at least one event type"
6195
  msgstr ""
6196
 
6197
- #: extensions/reports/inc/wsal-reporting-view.inc.php:1683
6198
  msgid "Please specify at least one Alert group or specify an Alert code"
6199
  msgstr ""
6200
 
@@ -6246,7 +6436,7 @@ msgstr ""
6246
  msgid "Filter by username"
6247
  msgstr ""
6248
 
6249
- #: extensions/search/classes/FilterManager.php:478, extensions/user-sessions/classes/View/Sessions.php:350
6250
  msgid "First Name"
6251
  msgstr ""
6252
 
@@ -6254,7 +6444,7 @@ msgstr ""
6254
  msgid "Filter by user first name"
6255
  msgstr ""
6256
 
6257
- #: extensions/search/classes/FilterManager.php:482, extensions/user-sessions/classes/View/Sessions.php:351
6258
  msgid "Last Name"
6259
  msgstr ""
6260
 
@@ -6322,100 +6512,96 @@ msgstr ""
6322
  msgid "Logged In Users"
6323
  msgstr ""
6324
 
6325
- #: extensions/user-sessions/classes/Views.php:185
6326
  msgid "Logging out..."
6327
  msgstr ""
6328
 
6329
- #: extensions/user-sessions/classes/Views.php:186
6330
  msgid "Refreshing..."
6331
  msgstr ""
6332
 
6333
- #: extensions/user-sessions/classes/Views.php:187
6334
  msgid "This could result in loss of unsaved work. Are you sure?"
6335
  msgstr ""
6336
 
6337
  #. translators: %s: Total number of users
6338
- #: extensions/user-sessions/classes/Views.php:189
6339
- msgid "out of %s users sessions terminated."
6340
  msgstr ""
6341
 
6342
- #: extensions/user-sessions/classes/Views.php:191, extensions/user-sessions/classes/View/Sessions.php:114
6343
  msgid "Retrieve user data"
6344
  msgstr ""
6345
 
6346
- #: extensions/user-sessions/classes/Views.php:192
6347
  msgid "Retrieving data"
6348
  msgstr ""
6349
 
6350
- #: extensions/user-sessions/classes/Views.php:193
6351
  msgid "Data retrieved"
6352
  msgstr ""
6353
 
6354
- #: extensions/user-sessions/classes/Views.php:194
6355
  msgid "Event ID: "
6356
  msgstr ""
6357
 
6358
- #: extensions/user-sessions/classes/Views.php:195
6359
  msgid "Object: "
6360
  msgstr ""
6361
 
6362
- #: extensions/user-sessions/classes/Views.php:196
6363
  msgid "Event Type: "
6364
  msgstr ""
6365
 
6366
- #: extensions/user-sessions/classes/Views.php:257
6367
  msgid "Terminate all logged in sessions"
6368
  msgstr ""
6369
 
6370
- #: extensions/user-sessions/classes/Views.php:258
6371
  msgid "This will terminate all users' sessions including yours, which could result in unsaved work. Do you like to proceed?"
6372
  msgstr ""
6373
 
6374
- #: extensions/user-sessions/classes/Views.php:269
6375
  msgid "YES"
6376
  msgstr ""
6377
 
6378
- #: extensions/user-sessions/classes/Views.php:270
6379
  msgid "NO"
6380
  msgstr ""
6381
 
6382
- #: extensions/user-sessions/classes/Views.php:282
6383
  msgid "Terminate All Sessions"
6384
  msgstr ""
6385
 
6386
- #: extensions/user-sessions/classes/Views.php:402
6387
  msgid "Users sessions termination is in progress. Please wait..."
6388
  msgstr ""
6389
 
6390
- #: extensions/user-sessions/classes/Views.php:429, extensions/reports/classes/Views/Main.php:744
6391
  msgid "You do not have sufficient permissions."
6392
  msgstr ""
6393
 
6394
- #: extensions/user-sessions/classes/Views.php:455
6395
  msgid "No sessions."
6396
  msgstr ""
6397
 
6398
- #: extensions/user-sessions/classes/Views.php:479
6399
  msgid "Session destroyed."
6400
  msgstr ""
6401
 
6402
- #: extensions/user-sessions/classes/Views.php:487
6403
  msgid "User session data is not set."
6404
  msgstr ""
6405
 
6406
- #: extensions/user-sessions/classes/Views.php:503, extensions/user-sessions/classes/Views.php:583
6407
  msgid "User do not have sufficient permissions."
6408
  msgstr ""
6409
 
6410
- #: extensions/user-sessions/classes/Views.php:561
6411
- msgid "Users offset is not set."
6412
- msgstr ""
6413
-
6414
- #: extensions/user-sessions/classes/Views.php:554, extensions/user-sessions/classes/Views.php:545
6415
  msgid "Sessions destroyed!"
6416
  msgstr ""
6417
 
6418
- #: extensions/user-sessions/classes/Views.php:593
6419
  msgid "Nonce check failed."
6420
  msgstr ""
6421
 
@@ -6427,19 +6613,27 @@ msgstr ""
6427
  msgid "Reports"
6428
  msgstr ""
6429
 
6430
- #: extensions/reports/classes/Views/Main.php:669
6431
- msgid " Generating reports. Please do not close this window"
6432
  msgstr ""
6433
 
6434
- #: extensions/reports/classes/Views/Main.php:682
 
 
 
 
 
 
 
 
6435
  msgid "To generate a report or configure automated scheduled report please contact the administrator of this multisite network on "
6436
  msgstr ""
6437
 
6438
- #: extensions/reports/classes/Views/Main.php:700
6439
  msgid "The %s directory which the Reports plugin uses to create reports in was either not found or is not accessible."
6440
  msgstr ""
6441
 
6442
- #: extensions/reports/classes/Views/Main.php:704
6443
  msgid "In order for the plugin to function, the directory %1$s must be created and the plugin should have access to write to this directory, so please configure the following permissions: 0755. If you have any questions or need further assistance please %2$s"
6444
  msgstr ""
6445
 
@@ -6511,7 +6705,7 @@ msgstr ""
6511
  msgid "Select a user role to filter"
6512
  msgstr ""
6513
 
6514
- #: extensions/user-sessions/classes/Sensors/UserSessionsTracking.php:287, extensions/user-sessions/classes/View/Options/Policies.php:234
6515
  msgid "ERROR: Your session was blocked with the <a href=\"https://en-gb.wordpress.org/plugins/wp-security-audit-log\" target=\"_blank\">WP Activity Log plugin</a> because there is already another user logged in with the same username. Please contact the site administrator for more information."
6516
  msgstr ""
6517
 
@@ -6523,92 +6717,92 @@ msgstr ""
6523
  msgid "User Session Options"
6524
  msgstr ""
6525
 
6526
- #: extensions/user-sessions/classes/View/Sessions.php:154
6527
  msgid "Showing results for "
6528
  msgstr ""
6529
 
6530
- #: extensions/user-sessions/classes/View/Sessions.php:146
6531
  msgid "No search results were found."
6532
  msgstr ""
6533
 
6534
- #: extensions/user-sessions/classes/View/Sessions.php:180
6535
  msgid "Expires"
6536
  msgstr ""
6537
 
6538
- #: extensions/user-sessions/classes/View/Sessions.php:181
6539
  msgid "Source IP"
6540
  msgstr ""
6541
 
6542
- #: extensions/user-sessions/classes/View/Sessions.php:182
6543
  msgid "Last Event"
6544
  msgstr ""
6545
 
6546
- #: extensions/user-sessions/classes/View/Sessions.php:183, extensions/user-sessions/classes/View/Sessions.php:517
6547
  msgid "Actions"
6548
  msgstr ""
6549
 
6550
  #. translators: Number of sessions
6551
- #: extensions/user-sessions/classes/View/Sessions.php:321
6552
  msgid "%s users"
6553
  msgstr ""
6554
 
6555
- #: extensions/user-sessions/classes/View/Sessions.php:326
6556
  msgid "Go to the first page"
6557
  msgstr ""
6558
 
6559
- #: extensions/user-sessions/classes/View/Sessions.php:327
6560
  msgid "Go to the previous page"
6561
  msgstr ""
6562
 
6563
- #: extensions/user-sessions/classes/View/Sessions.php:329
6564
  msgid "of"
6565
  msgstr ""
6566
 
6567
- #: extensions/user-sessions/classes/View/Sessions.php:331
6568
  msgid "Go to the next page"
6569
  msgstr ""
6570
 
6571
- #: extensions/user-sessions/classes/View/Sessions.php:332
6572
  msgid "Go to the last page"
6573
  msgstr ""
6574
 
6575
- #: extensions/user-sessions/classes/View/Sessions.php:341
6576
  msgid "Total number of sessions with Administrator Role: "
6577
  msgstr ""
6578
 
6579
- #: extensions/user-sessions/classes/View/Sessions.php:384
6580
  msgid "Show:"
6581
  msgstr ""
6582
 
6583
- #: extensions/user-sessions/classes/View/Sessions.php:393
6584
  msgid "Network-wide Logins"
6585
  msgstr ""
6586
 
6587
- #: extensions/user-sessions/classes/View/Sessions.php:491
6588
  msgid "Session ID: "
6589
  msgstr ""
6590
 
6591
- #: extensions/user-sessions/classes/View/Sessions.php:508
6592
  msgid "Click the button above to retrieve the users' last event."
6593
  msgstr ""
6594
 
6595
- #: extensions/user-sessions/classes/View/Sessions.php:528
6596
  msgid "Show me this user's events"
6597
  msgstr ""
6598
 
6599
- #: extensions/user-sessions/classes/View/Sessions.php:544
6600
  msgid "Terminate Session"
6601
  msgstr ""
6602
 
6603
- #: extensions/user-sessions/classes/View/Sessions.php:438
6604
  msgid "WP Activity Log keeps its own user session data. This means that the sessions of already logged in users will only show up once they logout and log back in. The same applies to your session."
6605
  msgstr ""
6606
 
6607
- #: extensions/user-sessions/classes/View/Sessions.php:430
6608
  msgid "No logged in sessions meet your search criteria."
6609
  msgstr ""
6610
 
6611
- #: extensions/user-sessions/classes/View/Sessions.php:721
6612
  msgid "User sessions do not exist."
6613
  msgstr ""
6614
 
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
+ #: defaults.php:70
20
  msgid "Critical severity events."
21
  msgstr ""
22
 
23
+ #: defaults.php:71
24
  msgid "High severity events."
25
  msgstr ""
26
 
27
+ #: defaults.php:72
28
  msgid "Medium severity events."
29
  msgstr ""
30
 
31
+ #: defaults.php:73
32
  msgid "Low severity events."
33
  msgstr ""
34
 
35
+ #: defaults.php:74
36
  msgid "Informational events."
37
  msgstr ""
38
 
39
+ #: defaults.php:79
40
  msgid "Users Logins & Sessions Events"
41
  msgstr ""
42
 
43
+ #: defaults.php:80, extensions/email-notifications/classes/Notifications.php:1255
44
  msgid "User Activity"
45
  msgstr ""
46
 
47
+ #: defaults.php:81, defaults.php:81
48
  msgid "User logged in"
49
  msgstr ""
50
 
51
+ #: defaults.php:82, defaults.php:82
52
  msgid "User logged out"
53
  msgstr ""
54
 
55
+ #: defaults.php:83
56
  msgid "Login failed"
57
  msgstr ""
58
 
59
+ #: defaults.php:83
60
+ msgid "%Attempts% failed login(s)"
61
+ msgstr ""
62
+
63
+ #: defaults.php:84
64
  msgid "Login failed / non existing user"
65
  msgstr ""
66
 
67
+ #: defaults.php:84
68
  msgid "%Attempts% failed login(s) %LineBreak% %LogFileText%"
69
  msgstr ""
70
 
71
+ #: defaults.php:85
72
  msgid "Login blocked"
73
  msgstr ""
74
 
75
+ #: defaults.php:85
76
  msgid "Login blocked because other session(s) already exist for this user. %LineBreak% IP address: %ClientIP%"
77
  msgstr ""
78
 
79
+ #: defaults.php:86
80
  msgid "User logged in with existing session(s)"
81
  msgstr ""
82
 
83
+ #: defaults.php:86
84
  msgid "User logged in. There are other session(s) using the same username logged in from these IP address(es): %IPAddress%"
85
  msgstr ""
86
 
87
+ #: defaults.php:87
88
  msgid "User logged out all other sessions with the same username"
89
  msgstr ""
90
 
91
+ #: defaults.php:87
92
  msgid "Logged out all other sessions with the same user."
93
  msgstr ""
94
 
95
+ #: defaults.php:88
96
  msgid "User session destroyed and logged out"
97
  msgstr ""
98
 
99
+ #: defaults.php:88
100
+ msgid "Terminated the session of another user. %LineBreak% User: %TargetUserName% %LineBreak% Role: %TargetUserRole% %LineBreak% Session ID: %TargetSessionID%"
101
  msgstr ""
102
 
103
+ #: defaults.php:89
104
  msgid "Switched to another user"
105
  msgstr ""
106
 
107
+ #: defaults.php:89
108
  msgid "Switched to another user. %LineBreak% User: %TargetUserName% %LineBreak% Role: %TargetUserRole%"
109
  msgstr ""
110
 
111
+ #: defaults.php:90
112
  msgid "User uploaded file from Uploads directory"
113
  msgstr ""
114
 
115
+ #: defaults.php:90, defaults.php:91
116
  msgid "Filename: %FileName% %LineBreak% Directory: %FilePath%"
117
  msgstr ""
118
 
119
+ #: defaults.php:91
120
  msgid "User deleted file from Uploads directory"
121
  msgstr ""
122
 
123
+ #: defaults.php:92
124
+ msgid "User requested a password reset"
125
+ msgstr ""
126
+
127
+ #: defaults.php:92
128
+ msgid "User requested a password reset. This does not mean that the password was changed."
129
+ msgstr ""
130
+
131
+ #: defaults.php:96
132
  msgid "Content & Comments"
133
  msgstr ""
134
 
135
+ #: defaults.php:97
136
  msgid "Content"
137
  msgstr ""
138
 
139
+ #: defaults.php:98
140
  msgid "User created a new post and saved it as draft"
141
  msgstr ""
142
 
143
+ #: defaults.php:98
144
+ msgid "Created the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
145
  msgstr ""
146
 
147
+ #: defaults.php:99
148
  msgid "User published a post"
149
  msgstr ""
150
 
151
+ #: defaults.php:99
152
+ msgid "Published the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
153
  msgstr ""
154
 
155
+ #: defaults.php:100
156
  msgid "User modified a post"
157
  msgstr ""
158
 
159
+ #: defaults.php:100
160
+ msgid "Modified the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
161
  msgstr ""
162
 
163
+ #: defaults.php:101
164
  msgid "User permanently deleted a post from the trash"
165
  msgstr ""
166
 
167
+ #: defaults.php:101
168
+ msgid "Permanently deleted the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus%"
169
  msgstr ""
170
 
171
+ #: defaults.php:102
172
  msgid "User moved a post to the trash"
173
  msgstr ""
174
 
175
+ #: defaults.php:102
176
+ msgid "Moved the post %PostTitle% to trash %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished%"
177
  msgstr ""
178
 
179
+ #: defaults.php:103
180
  msgid "User restored a post from trash"
181
  msgstr ""
182
 
183
+ #: defaults.php:103
184
+ msgid "Restored the post %PostTitle% from trash %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
185
  msgstr ""
186
 
187
+ #: defaults.php:104
188
  msgid "User changed post URL"
189
  msgstr ""
190
 
191
+ #: defaults.php:104
192
+ msgid "Changed the URL of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous URL: %OldUrl% %LineBreak% New URL: %NewUrl% %LineBreak% %EditorLinkPost%"
193
  msgstr ""
194
 
195
+ #: defaults.php:105
196
  msgid "User changed post author"
197
  msgstr ""
198
 
199
+ #: defaults.php:105
200
+ msgid "Changed the author of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous author: %OldAuthor% %LineBreak% New author: %NewAuthor% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%."
201
  msgstr ""
202
 
203
+ #: defaults.php:106
204
  msgid "User changed post status"
205
  msgstr ""
206
 
207
+ #: defaults.php:106
208
+ msgid "Changed the status of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Previous status: %OldStatus% %LineBreak% New status: %NewStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
209
  msgstr ""
210
 
211
+ #: defaults.php:107
212
  msgid "User changed the visibility of a post"
213
  msgstr ""
214
 
215
+ #: defaults.php:107
216
+ msgid "Changed the visibility of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous visibility status: %OldVisibility% %LineBreak% New visibility status: %NewVisibility% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
217
  msgstr ""
218
 
219
+ #: defaults.php:108
220
  msgid "User changed the date of a post"
221
  msgstr ""
222
 
223
+ #: defaults.php:108
224
+ msgid "Changed the date of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous date: %OldDate% %LineBreak% New date: %NewDate% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
225
  msgstr ""
226
 
227
+ #: defaults.php:109
228
  msgid "User changed the parent of a page"
229
  msgstr ""
230
 
231
+ #: defaults.php:109
232
+ msgid "Changed the parent of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous parent: %OldParentName% %LineBreak% New parent: %NewParentName% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
233
  msgstr ""
234
 
235
+ #: defaults.php:110
236
  msgid "User changed the template of a page"
237
  msgstr ""
238
 
239
+ #: defaults.php:110
240
+ msgid "Changed the template of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous template: %OldTemplate% %LineBreak% New template: %NewTemplate% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
241
  msgstr ""
242
 
243
+ #: defaults.php:111
244
  msgid "User set a post as sticky"
245
  msgstr ""
246
 
247
+ #: defaults.php:111
248
+ msgid "Set the post %PostTitle% as sticky %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
249
  msgstr ""
250
 
251
+ #: defaults.php:112
252
  msgid "User removed post from sticky"
253
  msgstr ""
254
 
255
+ #: defaults.php:112
256
+ msgid "Removed the post %PostTitle% from sticky %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
257
  msgstr ""
258
 
259
+ #: defaults.php:113
260
  msgid "User modified the content of a post"
261
  msgstr ""
262
 
263
+ #: defaults.php:113
264
+ msgid "Modified the content of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% %RevisionLink% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
265
  msgstr ""
266
 
267
+ #: defaults.php:114
268
  msgid "User submitted a post for review"
269
  msgstr ""
270
 
271
+ #: defaults.php:114
272
+ msgid "Submitted the post %PostTitle% for review %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
273
  msgstr ""
274
 
275
+ #: defaults.php:115
276
  msgid "User scheduled a post"
277
  msgstr ""
278
 
279
+ #: defaults.php:115
280
+ msgid "Scheduled the post %PostTitle% to be published on %PublishingDate% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
281
  msgstr ""
282
 
283
+ #: defaults.php:116
284
  msgid "User changed title of a post"
285
  msgstr ""
286
 
287
+ #: defaults.php:116
288
+ msgid "Changed the title of the post %OldTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% New title: %NewTitle% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
289
  msgstr ""
290
 
291
+ #: defaults.php:117
292
  msgid "User opened a post in the editor"
293
  msgstr ""
294
 
295
+ #: defaults.php:117
296
+ msgid "Opened the post %PostTitle% in the editor %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
297
  msgstr ""
298
 
299
+ #: defaults.php:118
300
  msgid "User viewed a post"
301
  msgstr ""
302
 
303
+ #: defaults.php:118
304
+ msgid "Viewed the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% URL: %PostUrl% %LineBreak% %EditorLinkPost%"
305
  msgstr ""
306
 
307
+ #: defaults.php:119
308
  msgid "User enabled/disabled comments in a post"
309
  msgstr ""
310
 
311
+ #: defaults.php:119
312
+ msgid "The comments in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
313
  msgstr ""
314
 
315
+ #: defaults.php:120
316
  msgid "User enabled/disabled trackbacks and pingbacks in a post"
317
  msgstr ""
318
 
319
+ #: defaults.php:120
320
+ msgid "Pingbacks and Trackbacks in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
321
  msgstr ""
322
 
323
+ #: defaults.php:121
324
+ msgid "User updated the excerpt in a post"
325
+ msgstr ""
326
+
327
+ #: defaults.php:121
328
+ msgid "The excerpt of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous excerpt entry: %old_post_excerpt% %LineBreak% New excerpt entry: %post_excerpt% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
329
+ msgstr ""
330
+
331
+ #: defaults.php:122
332
+ msgid "User updated the featured image in a post"
333
+ msgstr ""
334
+
335
+ #: defaults.php:122
336
+ msgid "The featured image of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous image: %previous_image% %LineBreak% New image: %new_image% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
337
+ msgstr ""
338
+
339
+ #: defaults.php:125
340
  msgid "Tags"
341
  msgstr ""
342
 
343
+ #: defaults.php:126
344
  msgid "User added post tag"
345
  msgstr ""
346
 
347
+ #: defaults.php:126
348
  msgid "Added tag(s) to the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Added tag(s): %tag% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
349
  msgstr ""
350
 
351
+ #: defaults.php:127
352
  msgid "User removed post tag"
353
  msgstr ""
354
 
355
+ #: defaults.php:127
356
  msgid "Removed tag(s) from the post %PostTitle% %LineBreak% ID: %PostID% %LineBreak% Type: %PostType% %LineBreak% Status: %PostStatus% %LineBreak% Removed tag(s): %tag% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
357
  msgstr ""
358
 
359
+ #: defaults.php:128
360
  msgid "User created new tag"
361
  msgstr ""
362
 
363
+ #: defaults.php:128
364
  msgid "Created the tag %TagName% %LineBreak% Slug: %Slug% %LineBreak% %TagLink%"
365
  msgstr ""
366
 
367
+ #: defaults.php:129
368
  msgid "User deleted tag"
369
  msgstr ""
370
 
371
+ #: defaults.php:129
372
  msgid "Deleted the tag %TagName% %LineBreak% Slug: %Slug%"
373
  msgstr ""
374
 
375
+ #: defaults.php:130
376
  msgid "User renamed tag"
377
  msgstr ""
378
 
379
+ #: defaults.php:130
380
+ msgid "Previous name: %old_name% %LineBreak% New name: %new_name% %LineBreak% Slug: %Slug% %LineBreak% %TagLink%"
381
  msgstr ""
382
 
383
+ #: defaults.php:131
384
  msgid "User changed tag slug"
385
  msgstr ""
386
 
387
+ #: defaults.php:131
388
  msgid "Changed the slug of the tag %tag% %LineBreak% Previous slug: %old_slug% %LineBreak% New slug: %new_slug% %LineBreak% %TagLink%"
389
  msgstr ""
390
 
391
+ #: defaults.php:132
392
  msgid "User changed tag description"
393
  msgstr ""
394
 
395
+ #: defaults.php:132
396
  msgid "Changed the description of the tag %tag% %LineBreak% Slug: %Slug% %LineBreak% Previous description: %old_desc% %LineBreak% New description: %new_desc% %LineBreak% %TagLink%"
397
  msgstr ""
398
 
399
+ #: defaults.php:135
400
  msgid "Categories"
401
  msgstr ""
402
 
403
+ #: defaults.php:136
404
  msgid "User changed post category"
405
  msgstr ""
406
 
407
+ #: defaults.php:136
408
+ msgid "Changed the category of the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous category(ies): %OldCategories% %LineBreak% New category(ies): %NewCategories% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
409
  msgstr ""
410
 
411
+ #: defaults.php:137
412
  msgid "User created new category"
413
  msgstr ""
414
 
415
+ #: defaults.php:137
416
  msgid "Created the category %CategoryName% %LineBreak% Slug: %Slug% %LineBreak% %CategoryLink%"
417
  msgstr ""
418
 
419
+ #: defaults.php:138
420
  msgid "User deleted category"
421
  msgstr ""
422
 
423
+ #: defaults.php:138
424
  msgid "Deleted the category %CategoryName% %LineBreak% Slug: %Slug%"
425
  msgstr ""
426
 
427
+ #: defaults.php:139
428
  msgid "Changed the parent of a category"
429
  msgstr ""
430
 
431
+ #: defaults.php:139
432
  msgid "Changed the parent of the category %CategoryName% %LineBreak% Slug: %Slug% %LineBreak% Previous parent: %OldParent% %LineBreak% New parent: %NewParent% %LineBreak% %CategoryLink%"
433
  msgstr ""
434
 
435
+ #: defaults.php:140
436
  msgid "User changed category name"
437
  msgstr ""
438
 
439
+ #: defaults.php:140
440
+ msgid "Previous name: %old_name% %LineBreak% New name: %new_name% %LineBreak% Slug: %slug% %LineBreak% %cat_link%"
441
  msgstr ""
442
 
443
+ #: defaults.php:141
444
  msgid "User changed category slug"
445
  msgstr ""
446
 
447
+ #: defaults.php:141
448
  msgid "Changed the slug of the category: %CategoryName% %LineBreak% Previous slug: %old_slug% %LineBreak% New slug: %new_slug% %LineBreak% %cat_link%"
449
  msgstr ""
450
 
451
+ #: defaults.php:144
452
  msgid "Custom Fields"
453
  msgstr ""
454
 
455
+ #: defaults.php:145
456
  msgid "User created a custom field for a post"
457
  msgstr ""
458
 
459
+ #: defaults.php:145
460
+ msgid "Created the new custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Custom field value: %MetaValue% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%"
461
  msgstr ""
462
 
463
+ #: defaults.php:146
464
  msgid "User updated a custom field value for a post"
465
  msgstr ""
466
 
467
+ #: defaults.php:146
468
+ msgid "Modified the value of the custom field %MetaKey% in the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Previous custom field value: %MetaValueOld% %LineBreak% New custom field value: %MetaValueNew% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost% %LineBreak% %MetaLink%."
469
  msgstr ""
470
 
471
+ #: defaults.php:147
472
  msgid "User deleted a custom field from a post"
473
  msgstr ""
474
 
475
+ #: defaults.php:147
476
+ msgid "Deleted the custom field %MetaKey% from the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
477
  msgstr ""
478
 
479
+ #: defaults.php:148
480
  msgid "User updated a custom field name for a post"
481
  msgstr ""
482
 
483
+ #: defaults.php:148
484
+ msgid "Previous custom field name: %MetaKeyOld% %LineBreak% New custom field name: %MetaKeyNew% %LineBreak% Post: %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %PostUrlIfPlublished% %LineBreak% %EditorLinkPost%"
485
  msgstr ""
486
 
487
+ #: defaults.php:151
488
  msgid "Custom Fields (ACF)"
489
  msgstr ""
490
 
491
+ #: defaults.php:171
492
  msgid "Comments"
493
  msgstr ""
494
 
495
+ #: defaults.php:172
496
  msgid "User approved a comment"
497
  msgstr ""
498
 
499
+ #: defaults.php:172
500
+ msgid "Approved the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
501
  msgstr ""
502
 
503
+ #: defaults.php:173
504
  msgid "User unapproved a comment"
505
  msgstr ""
506
 
507
+ #: defaults.php:173
508
+ msgid "Unapproved the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
509
  msgstr ""
510
 
511
+ #: defaults.php:174
512
  msgid "User replied to a comment"
513
  msgstr ""
514
 
515
+ #: defaults.php:174
516
+ msgid "Replied to the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
517
  msgstr ""
518
 
519
+ #: defaults.php:175
520
  msgid "User edited a comment"
521
  msgstr ""
522
 
523
+ #: defaults.php:175
524
+ msgid "Edited the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
525
  msgstr ""
526
 
527
+ #: defaults.php:176
528
  msgid "User marked a comment as Spam"
529
  msgstr ""
530
 
531
+ #: defaults.php:176
532
+ msgid "Marked the comment posted by %Author% on the post %PostTitle% as spam %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
533
  msgstr ""
534
 
535
+ #: defaults.php:177
536
  msgid "User marked a comment as Not Spam"
537
  msgstr ""
538
 
539
+ #: defaults.php:177
540
+ msgid "Marked the comment posted by %Author% on the post %PostTitle% as not spam %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
541
  msgstr ""
542
 
543
+ #: defaults.php:178
544
  msgid "User moved a comment to trash"
545
  msgstr ""
546
 
547
+ #: defaults.php:178
548
+ msgid "Moved the comment posted by %Author% on the post %PostTitle% to trash %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
549
  msgstr ""
550
 
551
+ #: defaults.php:179
552
  msgid "User restored a comment from the trash"
553
  msgstr ""
554
 
555
+ #: defaults.php:179
556
+ msgid "Restored the comment posted by %Author% on the post %PostTitle% from trash %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
557
  msgstr ""
558
 
559
+ #: defaults.php:180
560
  msgid "User permanently deleted a comment"
561
  msgstr ""
562
 
563
+ #: defaults.php:180
564
+ msgid "Permanently deleted the comment posted by %Author% on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished%"
565
  msgstr ""
566
 
567
+ #: defaults.php:181
568
  msgid "User posted a comment"
569
  msgstr ""
570
 
571
+ #: defaults.php:181
572
+ msgid "Posted a comment on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
573
  msgstr ""
574
 
575
+ #: defaults.php:186
576
  msgid "Visitor posted a comment"
577
  msgstr ""
578
 
579
+ #: defaults.php:186
580
+ msgid "Posted a comment on the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Comment ID: %CommentID% %PostUrlIfPlublished% %LineBreak% %CommentLink%"
581
+ msgstr ""
582
+
583
+ #: defaults.php:192
584
  msgid "Widgets"
585
  msgstr ""
586
 
587
+ #: defaults.php:193
588
  msgid "User added a new widget"
589
  msgstr ""
590
 
591
+ #: defaults.php:193
592
+ msgid "Added a new %WidgetName% widget in %Sidebar%."
593
  msgstr ""
594
 
595
+ #: defaults.php:194
596
  msgid "User modified a widget"
597
  msgstr ""
598
 
599
+ #: defaults.php:194
600
  msgid "Modified the %WidgetName% widget in %Sidebar%."
601
  msgstr ""
602
 
603
+ #: defaults.php:195
604
  msgid "User deleted widget"
605
  msgstr ""
606
 
607
+ #: defaults.php:195
608
  msgid "Deleted the %WidgetName% widget from %Sidebar%."
609
  msgstr ""
610
 
611
+ #: defaults.php:196
612
  msgid "User moved widget"
613
  msgstr ""
614
 
615
+ #: defaults.php:196
616
  msgid "Moved the %WidgetName% widget %LineBreak% From: %OldSidebar% %LineBreak% To: %NewSidebar%"
617
  msgstr ""
618
 
619
+ #: defaults.php:197
620
  msgid "User changed widget position"
621
  msgstr ""
622
 
623
+ #: defaults.php:197
624
  msgid "Changed the position of the %WidgetName% widget in %Sidebar%."
625
  msgstr ""
626
 
627
+ #: defaults.php:203
628
  msgid "Menus"
629
  msgstr ""
630
 
631
+ #: defaults.php:204
632
  msgid "User created new menu"
633
  msgstr ""
634
 
635
+ #: defaults.php:204
636
+ msgid "New menu called %MenuName% %MenuUrl%"
637
  msgstr ""
638
 
639
+ #: defaults.php:205
640
  msgid "User added content to a menu"
641
  msgstr ""
642
 
643
+ #: defaults.php:205
644
+ msgid "Added new item to the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName% %MenuUrl%"
645
  msgstr ""
646
 
647
+ #: defaults.php:206
648
  msgid "User removed content from a menu"
649
  msgstr ""
650
 
651
+ #: defaults.php:206
652
+ msgid "Removed item from the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName% %MenuUrl%"
653
  msgstr ""
654
 
655
+ #: defaults.php:207
656
  msgid "User deleted menu"
657
  msgstr ""
658
 
659
+ #: defaults.php:207
660
  msgid "Deleted the menu %MenuName%"
661
  msgstr ""
662
 
663
+ #: defaults.php:208
664
  msgid "User changed menu setting"
665
  msgstr ""
666
 
667
+ #: defaults.php:208
668
+ msgid "The setting in the %MenuName% %LineBreak% Setting: %MenuSetting% %MenuUrl%"
669
  msgstr ""
670
 
671
+ #: defaults.php:209
672
  msgid "User modified content in a menu"
673
  msgstr ""
674
 
675
+ #: defaults.php:209
676
+ msgid "Modified an item in the menu %MenuName% %LineBreak% Item type: %ContentType% %LineBreak% Item name: %ContentName% %MenuUrl%"
677
  msgstr ""
678
 
679
+ #: defaults.php:210
680
  msgid "User changed name of a menu"
681
  msgstr ""
682
 
683
+ #: defaults.php:210
684
+ msgid "Previous name: %OldMenuName% %LineBreak% New name: %MenuName% %MenuUrl%"
685
  msgstr ""
686
 
687
+ #: defaults.php:211
688
  msgid "User changed order of the objects in a menu"
689
  msgstr ""
690
 
691
+ #: defaults.php:211
692
+ msgid "Changed the order of the items in the menu %MenuName% %MenuUrl%"
693
  msgstr ""
694
 
695
+ #: defaults.php:212
696
  msgid "User moved objects as a sub-item"
697
  msgstr ""
698
 
699
+ #: defaults.php:212
700
+ msgid "Menu name: %MenuName% %LineBreak% Moved item %ItemName% as a sub-item of %ParentName% %MenuUrl%"
701
  msgstr ""
702
 
703
+ #: defaults.php:223
704
  msgid "Custom Post Types"
705
  msgstr ""
706
 
707
+ #: defaults.php:224
708
  msgid "User modified a draft blog post"
709
  msgstr ""
710
 
711
+ #: defaults.php:224
712
  msgid "Modified the draft post with the %PostTitle%. %EditorLinkPost%."
713
  msgstr ""
714
 
715
+ #: defaults.php:225
716
  msgid "User created a new post with custom post type and saved it as draft"
717
  msgstr ""
718
 
719
+ #: defaults.php:225
720
  msgid "Created a new custom post called %PostTitle% of type %PostType%. %EditorLinkPost%."
721
  msgstr ""
722
 
723
+ #: defaults.php:226
724
  msgid "User published a post with custom post type"
725
  msgstr ""
726
 
727
+ #: defaults.php:226
728
  msgid "Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%."
729
  msgstr ""
730
 
731
+ #: defaults.php:227
732
  msgid "User modified a post with custom post type"
733
  msgstr ""
734
 
735
+ #: defaults.php:227
736
  msgid "Modified the custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%."
737
  msgstr ""
738
 
739
+ #: defaults.php:228
740
  msgid "User modified a draft post with custom post type"
741
  msgstr ""
742
 
743
+ #: defaults.php:228
744
  msgid "Modified the draft custom post %PostTitle% of type is %PostType%. %EditorLinkPost%."
745
  msgstr ""
746
 
747
+ #: defaults.php:229
748
  msgid "User permanently deleted post with custom post type"
749
  msgstr ""
750
 
751
+ #: defaults.php:229
752
  msgid "Permanently Deleted the custom post %PostTitle% of type %PostType%."
753
  msgstr ""
754
 
755
+ #: defaults.php:230
756
  msgid "User moved post with custom post type to trash"
757
  msgstr ""
758
 
759
+ #: defaults.php:230
760
  msgid "Moved the custom post %PostTitle% of type %PostType% to trash. Post URL was %PostUrl%."
761
  msgstr ""
762
 
763
+ #: defaults.php:231
764
  msgid "User restored post with custom post type from trash"
765
  msgstr ""
766
 
767
+ #: defaults.php:231
768
  msgid "The custom post %PostTitle% of type %PostType% has been restored from trash. %EditorLinkPost%."
769
  msgstr ""
770
 
771
+ #: defaults.php:232
772
  msgid "User changed the category of a post with custom post type"
773
  msgstr ""
774
 
775
+ #: defaults.php:232
776
  msgid "Changed the category(ies) of the custom post %PostTitle% of type %PostType% from %OldCategories% to %NewCategories%. %EditorLinkPost%."
777
  msgstr ""
778
 
779
+ #: defaults.php:233
780
  msgid "User changed the URL of a post with custom post type"
781
  msgstr ""
782
 
783
+ #: defaults.php:233
784
  msgid "Changed the URL of the custom post %PostTitle% of type %PostType% from %OldUrl% to %NewUrl%. %EditorLinkPost%."
785
  msgstr ""
786
 
787
+ #: defaults.php:234
788
  msgid "User changed the author or post with custom post type"
789
  msgstr ""
790
 
791
+ #: defaults.php:234
792
  msgid "Changed the author of custom post %PostTitle% of type %PostType% from %OldAuthor% to %NewAuthor%. %EditorLinkPost%."
793
  msgstr ""
794
 
795
+ #: defaults.php:235
796
  msgid "User changed the status of post with custom post type"
797
  msgstr ""
798
 
799
+ #: defaults.php:235
800
  msgid "Changed the status of custom post %PostTitle% of type %PostType% from %OldStatus% to %NewStatus%. %EditorLinkPost%."
801
  msgstr ""
802
 
803
+ #: defaults.php:236
804
  msgid "User changed the visibility of a post with custom post type"
805
  msgstr ""
806
 
807
+ #: defaults.php:236
808
  msgid "Changed the visibility of the custom post %PostTitle% of type %PostType% from %OldVisibility% to %NewVisibility%. %EditorLinkPost%."
809
  msgstr ""
810
 
811
+ #: defaults.php:237
812
  msgid "User changed the date of post with custom post type"
813
  msgstr ""
814
 
815
+ #: defaults.php:237
816
  msgid "Changed the date of the custom post %PostTitle% of type %PostType% from %OldDate% to %NewDate%. %EditorLinkPost%."
817
  msgstr ""
818
 
819
+ #: defaults.php:238
820
  msgid "User created a custom field for a custom post type"
821
  msgstr ""
822
 
823
+ #: defaults.php:239
824
  msgid "User updated a custom field for a custom post type"
825
  msgstr ""
826
 
827
+ #: defaults.php:240
828
  msgid "User deleted a custom field from a custom post type"
829
  msgstr ""
830
 
831
+ #: defaults.php:241
832
  msgid "User updated a custom field name for a custom post type"
833
  msgstr ""
834
 
835
+ #: defaults.php:242
836
  msgid "User modified content for a published custom post type"
837
  msgstr ""
838
 
839
+ #: defaults.php:243
840
  msgid "User modified content for a draft post"
841
  msgstr ""
842
 
843
+ #: defaults.php:244
844
  msgid "User modified content for a draft custom post type"
845
  msgstr ""
846
 
847
+ #: defaults.php:245
848
  msgid "User modified content of a post"
849
  msgstr ""
850
 
851
+ #: defaults.php:246
852
  msgid "User scheduled a custom post type"
853
  msgstr ""
854
 
855
+ #: defaults.php:246
856
  msgid "Scheduled the custom post type %PostTitle% to be published %PublishingDate%. %EditorLinkPost%."
857
  msgstr ""
858
 
859
+ #: defaults.php:247
860
  msgid "User changed title of a custom post type"
861
  msgstr ""
862
 
863
+ #: defaults.php:247
864
  msgid "Changed the title of the custom post %OldTitle% to %NewTitle%. %EditorLinkPost%."
865
  msgstr ""
866
 
867
+ #: defaults.php:248
868
  msgid "User opened a custom post type in the editor"
869
  msgstr ""
870
 
871
+ #: defaults.php:248
872
  msgid "Opened the custom post %PostTitle% of type %PostType% in the editor. View the post: %EditorLinkPost%."
873
  msgstr ""
874
 
875
+ #: defaults.php:249
876
  msgid "User viewed a custom post type"
877
  msgstr ""
878
 
879
+ #: defaults.php:249
880
  msgid "Viewed the custom post %PostTitle% of type %PostType%. View the post: %PostUrl%."
881
  msgstr ""
882
 
883
+ #: defaults.php:250
884
  msgid "A plugin created a custom post"
885
  msgstr ""
886
 
887
+ #: defaults.php:250
888
  msgid "A plugin automatically created the following custom post: %PostTitle%."
889
  msgstr ""
890
 
891
+ #: defaults.php:251
892
  msgid "A plugin deleted a custom post"
893
  msgstr ""
894
 
895
+ #: defaults.php:251
896
  msgid "A plugin automatically deleted the following custom post: %PostTitle%."
897
  msgstr ""
898
 
899
+ #: defaults.php:252
900
  msgid "A plugin modified a custom post"
901
  msgstr ""
902
 
903
+ #: defaults.php:252
904
  msgid "Plugin modified the custom post %PostTitle%. View the post: %EditorLinkPost%."
905
  msgstr ""
906
 
907
+ #: defaults.php:263
908
  msgid "Pages"
909
  msgstr ""
910
 
911
+ #: defaults.php:264
912
  msgid "User created a new WordPress page and saved it as draft"
913
  msgstr ""
914
 
915
+ #: defaults.php:264
916
  msgid "Created a new page called %PostTitle% and saved it as draft. %EditorLinkPage%."
917
  msgstr ""
918
 
919
+ #: defaults.php:265
920
  msgid "User published a WordPress page"
921
  msgstr ""
922
 
923
+ #: defaults.php:265
924
  msgid "Published a page called %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
925
  msgstr ""
926
 
927
+ #: defaults.php:266
928
  msgid "User modified a published WordPress page"
929
  msgstr ""
930
 
931
+ #: defaults.php:266
932
  msgid "Modified the published page %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
933
  msgstr ""
934
 
935
+ #: defaults.php:267
936
  msgid "User modified a draft WordPress page"
937
  msgstr ""
938
 
939
+ #: defaults.php:267
940
  msgid "Modified the draft page %PostTitle%. Page ID is %PostID%. %EditorLinkPage%."
941
  msgstr ""
942
 
943
+ #: defaults.php:268
944
  msgid "User permanently deleted a page from the trash"
945
  msgstr ""
946
 
947
+ #: defaults.php:268
948
  msgid "Permanently deleted the page %PostTitle%."
949
  msgstr ""
950
 
951
+ #: defaults.php:269
952
  msgid "User moved WordPress page to the trash"
953
  msgstr ""
954
 
955
+ #: defaults.php:269
956
  msgid "Moved the page %PostTitle% to trash. Page URL was %PostUrl%."
957
  msgstr ""
958
 
959
+ #: defaults.php:270
960
  msgid "User restored a WordPress page from trash"
961
  msgstr ""
962
 
963
+ #: defaults.php:270
964
  msgid "Page %PostTitle% has been restored from trash. %EditorLinkPage%."
965
  msgstr ""
966
 
967
+ #: defaults.php:271
968
  msgid "User changed page URL"
969
  msgstr ""
970
 
971
+ #: defaults.php:271
972
  msgid "Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%. %EditorLinkPage%."
973
  msgstr ""
974
 
975
+ #: defaults.php:272
976
  msgid "User changed page author"
977
  msgstr ""
978
 
979
+ #: defaults.php:272
980
  msgid "Changed the author of the page %PostTitle% from %OldAuthor% to %NewAuthor%. %EditorLinkPage%."
981
  msgstr ""
982
 
983
+ #: defaults.php:273
984
  msgid "User changed page status"
985
  msgstr ""
986
 
987
+ #: defaults.php:273
988
  msgid "Changed the status of the page %PostTitle% from %OldStatus% to %NewStatus%. %EditorLinkPage%."
989
  msgstr ""
990
 
991
+ #: defaults.php:274
992
  msgid "User changed the visibility of a page post"
993
  msgstr ""
994
 
995
+ #: defaults.php:274
996
  msgid "Changed the visibility of the page %PostTitle% from %OldVisibility% to %NewVisibility%. %EditorLinkPage%."
997
  msgstr ""
998
 
999
+ #: defaults.php:275
1000
  msgid "User changed the date of a page post"
1001
  msgstr ""
1002
 
1003
+ #: defaults.php:275
1004
  msgid "Changed the date of the page %PostTitle% from %OldDate% to %NewDate%. %EditorLinkPage%."
1005
  msgstr ""
1006
 
1007
+ #: defaults.php:276
1008
  msgid "User created a custom field for a page"
1009
  msgstr ""
1010
 
1011
+ #: defaults.php:277
1012
  msgid "User updated a custom field value for a page"
1013
  msgstr ""
1014
 
1015
+ #: defaults.php:278
1016
  msgid "User deleted a custom field from a page"
1017
  msgstr ""
1018
 
1019
+ #: defaults.php:279
1020
  msgid "User updated a custom field name for a page"
1021
  msgstr ""
1022
 
1023
+ #: defaults.php:280
1024
  msgid "User modified content for a published page"
1025
  msgstr ""
1026
 
1027
+ #: defaults.php:280
1028
  msgid "Modified the content of the published page %PostTitle%. Page URL is %PostUrl%. %RevisionLink% %EditorLinkPage%."
1029
  msgstr ""
1030
 
1031
+ #: defaults.php:281
1032
  msgid "User modified content for a draft page"
1033
  msgstr ""
1034
 
1035
+ #: defaults.php:282
1036
  msgid "User scheduled a page"
1037
  msgstr ""
1038
 
1039
+ #: defaults.php:283
1040
  msgid "User changed title of a page"
1041
  msgstr ""
1042
 
1043
+ #: defaults.php:284
1044
  msgid "User opened a page in the editor"
1045
  msgstr ""
1046
 
1047
+ #: defaults.php:284
1048
  msgid "Opened the page %PostTitle% in the editor. View the page: %EditorLinkPage%."
1049
  msgstr ""
1050
 
1051
+ #: defaults.php:285
1052
  msgid "User viewed a page"
1053
  msgstr ""
1054
 
1055
+ #: defaults.php:285
1056
  msgid "Viewed the page %PostTitle%. View the page: %PostUrl%."
1057
  msgstr ""
1058
 
1059
+ #: defaults.php:286
1060
  msgid "User disabled Comments/Trackbacks and Pingbacks on a draft post"
1061
  msgstr ""
1062
 
1063
+ #: defaults.php:286
1064
  msgid "Disabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
1065
  msgstr ""
1066
 
1067
+ #: defaults.php:287
1068
  msgid "User enabled Comments/Trackbacks and Pingbacks on a draft post"
1069
  msgstr ""
1070
 
1071
+ #: defaults.php:287
1072
  msgid "Enabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
1073
  msgstr ""
1074
 
1075
+ #: defaults.php:288
1076
  msgid "User disabled Comments/Trackbacks and Pingbacks on a published page"
1077
  msgstr ""
1078
 
1079
+ #: defaults.php:288
1080
  msgid "Disabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
1081
  msgstr ""
1082
 
1083
+ #: defaults.php:289
1084
  msgid "User enabled Comments/Trackbacks and Pingbacks on a published page"
1085
  msgstr ""
1086
 
1087
+ #: defaults.php:289
1088
  msgid "Enabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
1089
  msgstr ""
1090
 
1091
+ #: defaults.php:290
1092
  msgid "User disabled Comments/Trackbacks and Pingbacks on a draft page"
1093
  msgstr ""
1094
 
1095
+ #: defaults.php:290
1096
  msgid "Disabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
1097
  msgstr ""
1098
 
1099
+ #: defaults.php:291
1100
  msgid "User enabled Comments/Trackbacks and Pingbacks on a draft page"
1101
  msgstr ""
1102
 
1103
+ #: defaults.php:291
1104
  msgid "Enabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
1105
  msgstr ""
1106
 
1107
+ #: defaults.php:292
1108
  msgid "A plugin created a page"
1109
  msgstr ""
1110
 
1111
+ #: defaults.php:292
1112
  msgid "A plugin automatically created the following page: %PostTitle%."
1113
  msgstr ""
1114
 
1115
+ #: defaults.php:293
1116
  msgid "A plugin deleted a page"
1117
  msgstr ""
1118
 
1119
+ #: defaults.php:293
1120
  msgid "A plugin automatically deleted the following page: %PostTitle%."
1121
  msgstr ""
1122
 
1123
+ #: defaults.php:294
1124
  msgid "A plugin modified a page"
1125
  msgstr ""
1126
 
1127
+ #: defaults.php:294
1128
  msgid "Plugin modified the page %PostTitle%. View the page: %EditorLinkPage%."
1129
  msgstr ""
1130
 
1131
+ #: defaults.php:298
1132
  msgid "User Accounts"
1133
  msgstr ""
1134
 
1135
+ #: defaults.php:299
1136
  msgid "User Profiles"
1137
  msgstr ""
1138
 
1139
+ #: defaults.php:300
1140
  msgid "New user was created on WordPress"
1141
  msgstr ""
1142
 
1143
+ #: defaults.php:300
1144
+ msgid "New user created via registration %LineBreak% User: %NewUserData->Username% %LineBreak% Role: %NewUserData->Roles% %LineBreak% %EditUserLink%"
1145
+ msgstr ""
1146
+
1147
+ #: defaults.php:301
1148
+ msgid "User created another WordPress user"
1149
+ msgstr ""
1150
+
1151
+ #: defaults.php:301
1152
+ msgid "New user: %NewUserData->Username% %LineBreak% Role: %NewUserData->Roles% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName% %LineBreak% %EditUserLink%"
1153
+ msgstr ""
1154
+
1155
+ #: defaults.php:302
1156
+ msgid "The role of a user was changed by another WordPress user"
1157
+ msgstr ""
1158
+
1159
+ #: defaults.php:302
1160
+ msgid "Changed the role of user %TargetUsername% %LineBreak% Previous role: %OldRole% %LineBreak% New role: %NewRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1161
+ msgstr ""
1162
+
1163
+ #: defaults.php:303
1164
+ msgid "User has changed his or her password"
1165
+ msgstr ""
1166
+
1167
+ #: defaults.php:303
1168
+ msgid "Changed the password %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %TargetUserData->FirstName% %LineBreak% Last name: %TargetUserData->LastName% %LineBreak% %EditUserLink%"
1169
+ msgstr ""
1170
+
1171
  #: defaults.php:304
1172
+ msgid "User changed another user's password"
1173
+ msgstr ""
1174
+
1175
+ #: defaults.php:304
1176
+ msgid "Changed the password of the user %TargetUserData->Username% %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %TargetUserData->FirstName% %LineBreak% Last name: %TargetUserData->LastName% %LineBreak% %EditUserLink%"
1177
  msgstr ""
1178
 
1179
  #: defaults.php:305
1180
+ msgid "User changed his or her email address"
1181
  msgstr ""
1182
 
1183
  #: defaults.php:305
1184
+ msgid "Changed the email address %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Previous email address: %OldEmail% %LineBreak% New email address: %NewEmail% %LineBreak% %EditUserLink%"
1185
  msgstr ""
1186
 
1187
  #: defaults.php:306
1188
+ msgid "User changed another user's email address"
1189
  msgstr ""
1190
 
1191
  #: defaults.php:306
1192
+ msgid "Changed the email address of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Previous email address: %OldEmail% %LineBreak% New email address: %NewEmail% %LineBreak% %EditUserLink%"
1193
  msgstr ""
1194
 
1195
  #: defaults.php:307
1196
+ msgid "User was deleted by another user"
1197
  msgstr ""
1198
 
1199
  #: defaults.php:307
1200
+ msgid "User: %TargetUserData->Username% %LineBreak% Role: %TargetUserData->Roles% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName%"
1201
  msgstr ""
1202
 
1203
  #: defaults.php:308
1204
+ msgid "User opened the profile page of another user"
1205
  msgstr ""
1206
 
1207
  #: defaults.php:308
1208
+ msgid "The profile page of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1209
  msgstr ""
1210
 
1211
  #: defaults.php:309
1212
+ msgid "User updated a custom field value for a user"
1213
  msgstr ""
1214
 
1215
  #: defaults.php:309
1216
+ msgid "Changed the value of a custom field in the user profile %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Custom field: %custom_field_name% %LineBreak% Previous value: %old_value% %LineBreak% New value: %new_value% %LineBreak% %EditUserLink%"
1217
  msgstr ""
1218
 
1219
  #: defaults.php:310
1220
+ msgid "User created a custom field value for a user"
1221
  msgstr ""
1222
 
1223
  #: defaults.php:310
1224
+ msgid "Created a new custom field in the user profile %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Custom field: %custom_field_name% %LineBreak% Custom field value: %new_value% %LineBreak% %EditUserLink%"
1225
  msgstr ""
1226
 
1227
  #: defaults.php:311
1228
+ msgid "User changed first name for a user"
1229
  msgstr ""
1230
 
1231
  #: defaults.php:311
1232
+ msgid "Changed the first name of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% Previous name: %old_firstname% %LineBreak% New name: %new_firstname% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1233
  msgstr ""
1234
 
1235
  #: defaults.php:312
1236
+ msgid "User changed last name for a user"
1237
  msgstr ""
1238
 
1239
  #: defaults.php:312
1240
+ msgid "Changed the last name of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Previous last name: %old_lastname% %LineBreak% New last name: %new_lastname% %LineBreak% %EditUserLink%"
1241
  msgstr ""
1242
 
1243
  #: defaults.php:313
1244
+ msgid "User changed nickname for a user"
1245
  msgstr ""
1246
 
1247
  #: defaults.php:313
1248
+ msgid "Changed the nickname of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Previous nickname: %old_nickname% New nickname: %new_nickname% %LineBreak% %EditUserLink%"
1249
  msgstr ""
1250
 
1251
  #: defaults.php:314
1252
+ msgid "User changed the display name for a user"
1253
  msgstr ""
1254
 
1255
  #: defaults.php:314
1256
+ msgid "Changed the display name of the user %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% Previous display name: %old_displayname% %LineBreak% New display name: %new_displayname% %LineBreak% %EditUserLink%"
1257
  msgstr ""
1258
 
1259
+ #: defaults.php:316, defaults.php:317
1260
+ msgid "User created an application password"
 
 
 
 
1261
  msgstr ""
1262
 
1263
  #: defaults.php:316
1264
+ msgid "An application password %LineBreak% Role: %roles% %LineBreak% First name: %firstname% %LineBreak% Last name: %lastname% %LineBreak% Application password friendly name: %friendly_name%"
1265
  msgstr ""
1266
 
1267
+ #: defaults.php:317
1268
+ msgid "An application password for the user %login% %LineBreak% Role: %roles% %LineBreak% First name: %firstname% %LineBreak% Last name: %lastname% %LineBreak% Application password friendly name: %friendly_name%"
1269
  msgstr ""
1270
 
1271
+ #: defaults.php:319
1272
+ msgid "User revoked all application passwords"
1273
  msgstr ""
1274
 
1275
+ #: defaults.php:319
1276
+ msgid "All application passwords %LineBreak% Role: %roles% %LineBreak% First name: %firstname% %LineBreak% Last name: %lastname%"
1277
  msgstr ""
1278
 
1279
+ #: defaults.php:320
1280
+ msgid "User revoked all application passwords for a user"
1281
  msgstr ""
1282
 
1283
+ #: defaults.php:320
1284
+ msgid "All application passwords from the user %login% %LineBreak% Role: %roles% %LineBreak% First name: %firstname% %LineBreak% Last name: %lastname%"
1285
  msgstr ""
1286
 
1287
+ #: defaults.php:323
1288
  msgid "Multisite User Profiles"
1289
  msgstr ""
1290
 
1291
+ #: defaults.php:324
1292
  msgid "User granted Super Admin privileges"
1293
  msgstr ""
1294
 
1295
+ #: defaults.php:324
1296
+ msgid "Granted Super Admin privileges to %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1297
  msgstr ""
1298
 
1299
+ #: defaults.php:325
1300
  msgid "User revoked from Super Admin privileges"
1301
  msgstr ""
1302
 
1303
+ #: defaults.php:325
1304
+ msgid "Revoked Super Admin privileges from %TargetUsername% %LineBreak% Role: %Roles% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1305
  msgstr ""
1306
 
1307
+ #: defaults.php:326
1308
  msgid "Existing user added to a site"
1309
  msgstr ""
1310
 
1311
+ #: defaults.php:326
1312
  msgid "Added user %TargetUsername% to site: %SiteName% %LineBreak% Role: %TargetUserRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1313
  msgstr ""
1314
 
1315
+ #: defaults.php:327
1316
  msgid "User removed from site"
1317
  msgstr ""
1318
 
1319
+ #: defaults.php:327
1320
+ msgid "Removed user %TargetUsername% from site: %SiteName% %LineBreak% Site role: %TargetUserRole% %LineBreak% First name: %FirstName% %LineBreak% Last name: %LastName% %LineBreak% %EditUserLink%"
1321
  msgstr ""
1322
 
1323
+ #: defaults.php:328
1324
  msgid "New network user created"
1325
  msgstr ""
1326
 
1327
+ #: defaults.php:328
1328
  msgid "Created a new network user %NewUserData->Username% %LineBreak% First name: %NewUserData->FirstName% %LineBreak% Last name: %NewUserData->LastName% %LineBreak% %EditUserLink%"
1329
  msgstr ""
1330
 
1331
+ #: defaults.php:332
1332
  msgid "Plugins & Themes"
1333
  msgstr ""
1334
 
1335
+ #: defaults.php:333, classes/AuditLogGridView.php:463, classes/AuditLogListView.php:490
1336
  msgid "Plugins"
1337
  msgstr ""
1338
 
1339
+ #: defaults.php:334
1340
  msgid "User installed a plugin"
1341
  msgstr ""
1342
 
1343
+ #: defaults.php:334
1344
+ msgid "Name: %Plugin->Name% %LineBreak% Version: %Plugin->Version% %LineBreak% Install location: %Plugin->plugin_dir_path%"
1345
  msgstr ""
1346
 
1347
+ #: defaults.php:335
1348
  msgid "User activated a WordPress plugin"
1349
  msgstr ""
1350
 
1351
+ #: defaults.php:335, defaults.php:336, defaults.php:337
1352
+ msgid "Name: %PluginData->Name% %LineBreak% Version: %PluginData->Version% %LineBreak% Install location: %PluginFile%"
1353
  msgstr ""
1354
 
1355
+ #: defaults.php:336
1356
  msgid "User deactivated a WordPress plugin"
1357
  msgstr ""
1358
 
1359
+ #: defaults.php:337
1360
  msgid "User uninstalled a plugin"
1361
  msgstr ""
1362
 
1363
+ #: defaults.php:338
1364
  msgid "User upgraded a plugin"
1365
  msgstr ""
1366
 
1367
+ #: defaults.php:338
1368
+ msgid "Name: %PluginData->Name% %LineBreak% Updated version: %PluginData->Version% %LineBreak% Install location: %PluginFile%"
1369
+ msgstr ""
1370
+
1371
+ #: defaults.php:339
1372
  msgid "Plugin created table"
1373
  msgstr ""
1374
 
1375
+ #: defaults.php:339
1376
+ msgid "Plugin created this table in the database %LineBreak% Table: %TableNames% %LineBreak% Plugin: %Plugin->Name%"
1377
  msgstr ""
1378
 
1379
+ #: defaults.php:340
1380
  msgid "Plugin modified table structure"
1381
  msgstr ""
1382
 
1383
+ #: defaults.php:340
1384
+ msgid "Plugin modified the structure of this table %LineBreak% Table: %TableNames% %LineBreak% Plugin: %Plugin->Name%"
1385
  msgstr ""
1386
 
1387
+ #: defaults.php:341
1388
  msgid "Plugin deleted table"
1389
  msgstr ""
1390
 
1391
+ #: defaults.php:341
1392
+ msgid "Plugin deleted this table from the database %LineBreak% Table: %TableNames% %LineBreak% Plugin: %Plugin->Name%"
1393
  msgstr ""
1394
 
1395
+ #: defaults.php:342
1396
  msgid "A plugin created a post"
1397
  msgstr ""
1398
 
1399
+ #: defaults.php:342
1400
+ msgid "Plugin created the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Plugin: %PluginName% %LineBreak% %EditorLinkPage%"
1401
  msgstr ""
1402
 
1403
+ #: defaults.php:343
1404
  msgid "A plugin deleted a post"
1405
  msgstr ""
1406
 
1407
+ #: defaults.php:343
1408
+ msgid "Plugin deleted the post %PostTitle% %LineBreak% Post ID: %PostID% %LineBreak% Post type: %PostType% %LineBreak% Post status: %PostStatus% %LineBreak% Plugin: %PluginName%"
1409
  msgstr ""
1410
 
1411
+ #: defaults.php:344
1412
  msgid "User changed a file using the plugin editor"
1413
  msgstr ""
1414
 
1415
+ #: defaults.php:344
1416
  msgid "Modified a file with the plugin editor %LineBreak% File: %File%"
1417
  msgstr ""
1418
 
1419
+ #: defaults.php:347
1420
  msgid "Themes"
1421
  msgstr ""
1422
 
1423
+ #: defaults.php:348
1424
  msgid "User installed a theme"
1425
  msgstr ""
1426
 
1427
+ #: defaults.php:348, defaults.php:349, defaults.php:350
1428
+ msgid "Name: %Theme->Name% %LineBreak% Version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%"
1429
  msgstr ""
1430
 
1431
+ #: defaults.php:349
1432
  msgid "User activated a theme"
1433
  msgstr ""
1434
 
1435
+ #: defaults.php:350
 
 
 
 
1436
  msgid "User uninstalled a theme"
1437
  msgstr ""
1438
 
1439
+ #: defaults.php:351
1440
  msgid "Theme created tables"
1441
  msgstr ""
1442
 
1443
+ #: defaults.php:351
1444
+ msgid "Theme created this table in the database %LineBreak% Table: %TableNames% %LineBreak% Theme: %Theme->Name%"
1445
  msgstr ""
1446
 
1447
+ #: defaults.php:352
1448
  msgid "Theme modified tables structure"
1449
  msgstr ""
1450
 
1451
+ #: defaults.php:352
1452
+ msgid "Theme modified the structure of this database table %LineBreak% Table: %TableNames% %LineBreak% Theme: %Theme->Name%"
1453
  msgstr ""
1454
 
1455
+ #: defaults.php:353
1456
  msgid "Theme deleted tables"
1457
  msgstr ""
1458
 
1459
+ #: defaults.php:353
1460
+ msgid "Theme deleted this table from the database %LineBreak% Tables: %TableNames% %LineBreak% Theme: %Theme->Name%"
1461
  msgstr ""
1462
 
1463
+ #: defaults.php:354
1464
  msgid "User updated a theme"
1465
  msgstr ""
1466
 
1467
+ #: defaults.php:354
1468
+ msgid "Name: %Theme->Name% %LineBreak% New version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%"
1469
  msgstr ""
1470
 
1471
+ #: defaults.php:355
1472
  msgid "User changed a file using the theme editor"
1473
  msgstr ""
1474
 
1475
+ #: defaults.php:355
1476
  msgid "Modified a file with the theme editor %LineBreak% File: %Theme%/%File%"
1477
  msgstr ""
1478
 
1479
+ #: defaults.php:358
1480
  msgid "Themes on Multisite"
1481
  msgstr ""
1482
 
1483
+ #: defaults.php:359
1484
  msgid "Activated theme on network"
1485
  msgstr ""
1486
 
1487
+ #: defaults.php:359
1488
+ msgid "Network activated the theme %Theme->Name% %LineBreak% Version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%"
1489
  msgstr ""
1490
 
1491
+ #: defaults.php:360
1492
  msgid "Deactivated theme from network"
1493
  msgstr ""
1494
 
1495
+ #: defaults.php:360
1496
+ msgid "Network deactivated the theme %Theme->Name% %LineBreak% Version: %Theme->Version% %LineBreak% Install location: %Theme->get_template_directory%"
1497
  msgstr ""
1498
 
1499
+ #: defaults.php:363
1500
  msgid "Database Events"
1501
  msgstr ""
1502
 
1503
+ #: defaults.php:364
1504
  msgid "Unknown component created tables"
1505
  msgstr ""
1506
 
1507
+ #: defaults.php:364
1508
  msgid "An unknown component created these tables in the database %LineBreak% Tables: %TableNames%"
1509
  msgstr ""
1510
 
1511
+ #: defaults.php:365
1512
  msgid "Unknown component modified tables structure"
1513
  msgstr ""
1514
 
1515
+ #: defaults.php:365
1516
  msgid "An unknown component modified the structure of these database tables %LineBreak% Tables: %TableNames%"
1517
  msgstr ""
1518
 
1519
+ #: defaults.php:366
1520
  msgid "Unknown component deleted tables"
1521
  msgstr ""
1522
 
1523
+ #: defaults.php:366
1524
  msgid "An unknown component deleted these tables from the database %LineBreak% Tables: %TableNames%"
1525
  msgstr ""
1526
 
1527
+ #: defaults.php:367
1528
  msgid "WordPress created tables"
1529
  msgstr ""
1530
 
1531
+ #: defaults.php:367
1532
  msgid "WordPress created these tables in the database %LineBreak% Tables: %TableNames%"
1533
  msgstr ""
1534
 
1535
+ #: defaults.php:368
1536
  msgid "WordPress modified tables structure"
1537
  msgstr ""
1538
 
1539
+ #: defaults.php:368
1540
  msgid "WordPress modified the structure of these database tables %LineBreak% Tables: %TableNames%"
1541
  msgstr ""
1542
 
1543
+ #: defaults.php:369
1544
  msgid "WordPress deleted tables"
1545
  msgstr ""
1546
 
1547
+ #: defaults.php:369
1548
  msgid "WordPress deleted these tables from the database %LineBreak% Tables: %TableNames%"
1549
  msgstr ""
1550
 
1551
+ #: defaults.php:373
1552
  msgid "WordPress & System"
1553
  msgstr ""
1554
 
1555
+ #: defaults.php:374, classes/AlertManager.php:1153, classes/AlertManager.php:1944, classes/AuditLogGridView.php:469, classes/AuditLogListView.php:498, extensions/email-notifications/classes/DailyNotification.php:241, extensions/email-notifications/classes/Notifier.php:635, extensions/reports/classes/Common.php:500
1556
  msgid "System"
1557
  msgstr ""
1558
 
1559
+ #: defaults.php:375
1560
  msgid "Unknown Error"
1561
  msgstr ""
1562
 
1563
+ #: defaults.php:375
1564
  msgid "An unexpected error has occurred ."
1565
  msgstr ""
1566
 
1567
+ #: defaults.php:376
1568
  msgid "PHP error"
1569
  msgstr ""
1570
 
1571
+ #: defaults.php:376, defaults.php:377, defaults.php:378, defaults.php:379, defaults.php:380
1572
  msgid "%Message%."
1573
  msgstr ""
1574
 
1575
+ #: defaults.php:377
1576
  msgid "PHP warning"
1577
  msgstr ""
1578
 
1579
+ #: defaults.php:378
1580
  msgid "PHP notice"
1581
  msgstr ""
1582
 
1583
+ #: defaults.php:379
1584
  msgid "PHP exception"
1585
  msgstr ""
1586
 
1587
+ #: defaults.php:380
1588
  msgid "PHP shutdown error"
1589
  msgstr ""
1590
 
1591
+ #: defaults.php:381
1592
  msgid "WordPress was updated"
1593
  msgstr ""
1594
 
1595
+ #: defaults.php:381
1596
  msgid "Updated WordPress %LineBreak% Previous version: %OldVersion% %LineBreak% New version: %NewVersion%"
1597
  msgstr ""
1598
 
1599
+ #: defaults.php:389
1600
  msgid "Advertising Extensions"
1601
  msgstr ""
1602
 
1603
+ #: defaults.php:389
1604
  msgid "%PromoName% %PromoMessage%"
1605
  msgstr ""
1606
 
1607
+ #: defaults.php:392
1608
  msgid "Activity log plugin"
1609
  msgstr ""
1610
 
1611
+ #: defaults.php:393
1612
  msgid "Events automatically pruned by system"
1613
  msgstr ""
1614
 
1615
+ #: defaults.php:393
1616
+ msgid "System automatically deleted %EventCount% events"
1617
  msgstr ""
1618
 
1619
+ #: defaults.php:394
1620
  msgid "Reset the plugin's settings to default"
1621
  msgstr ""
1622
 
1623
+ #: defaults.php:394
1624
+ msgid "Reset the activity log plugin's settings to default"
1625
  msgstr ""
1626
 
1627
+ #: defaults.php:395, defaults.php:395
1628
  msgid "Purged the activity log"
1629
  msgstr ""
1630
 
1631
+ #: defaults.php:396
1632
  msgid "Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard"
1633
  msgstr ""
1634
 
1635
+ #: defaults.php:396
1636
  msgid "Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard."
1637
  msgstr ""
1638
 
1639
+ #: defaults.php:399
1640
  msgid "WordPress Site Settings"
1641
  msgstr ""
1642
 
1643
+ #: defaults.php:400
1644
  msgid "Option Anyone Can Register in WordPress settings changed"
1645
  msgstr ""
1646
 
1647
+ #: defaults.php:400
1648
+ msgid "The <strong>Membership</strong> setting <strong>Anyone can register</strong>"
1649
  msgstr ""
1650
 
1651
+ #: defaults.php:401
1652
  msgid "New User Default Role changed"
1653
  msgstr ""
1654
 
1655
+ #: defaults.php:401
1656
+ msgid "Changed the <strong>New user default role</strong> WordPress setting %LineBreak% Previous role: %OldRole% %LineBreak% New role: %NewRole%"
1657
  msgstr ""
1658
 
1659
+ #: defaults.php:402
1660
  msgid "WordPress Administrator Notification email changed"
1661
  msgstr ""
1662
 
1663
+ #: defaults.php:402
1664
+ msgid "Change the <strong>Administrator email address</strong> in the WordPress settings %LineBreak% Previous address %OldEmail% %LineBreak% New address: %NewEmail%"
1665
  msgstr ""
1666
 
1667
+ #: defaults.php:403
1668
  msgid "User changes the WordPress Permalinks"
1669
  msgstr ""
1670
 
1671
+ #: defaults.php:403
1672
  msgid "Changed the WordPress permalinks %LineBreak% Previous permalinks: %OldPattern% %LineBreak% New permalinks: %NewPattern%"
1673
  msgstr ""
1674
 
1675
+ #: defaults.php:404
1676
  msgid "Enabled/Disabled the option Discourage search engines from indexing this site"
1677
  msgstr ""
1678
 
1679
+ #: defaults.php:404
1680
+ msgid "The <strong>Search engine visibility</strong> in the WordPess settings (Discourage search engines from indexing this site)"
1681
  msgstr ""
1682
 
1683
+ #: defaults.php:405
1684
  msgid "Enabled/Disabled comments on all the website"
1685
  msgstr ""
1686
 
1687
+ #: defaults.php:405
1688
  msgid "Comments on the website"
1689
  msgstr ""
1690
 
1691
+ #: defaults.php:407
1692
  msgid "Enabled/Disabled the option Comment author must fill out name and email"
1693
  msgstr ""
1694
 
1695
+ #: defaults.php:407
1696
+ msgid "The WordPress setting <strong>Comment author must fill out name and email</strong>"
1697
  msgstr ""
1698
 
1699
+ #: defaults.php:408
1700
  msgid "Enabled/Disabled the option Users must be logged in and registered to comment"
1701
  msgstr ""
1702
 
1703
+ #: defaults.php:408
1704
+ msgid "The WordPress setting <strong>Users must be registered and logged in to comment</strong>"
1705
  msgstr ""
1706
 
1707
+ #: defaults.php:409
1708
  msgid "Enabled/Disabled the option to automatically close comments"
1709
  msgstr ""
1710
 
1711
+ #: defaults.php:409
1712
+ msgid "The WordPress setting <strong>Automatically close comments after %Value% days</strong>"
1713
+ msgstr ""
1714
+
1715
+ #: defaults.php:410
1716
+ msgid "Changed the value of the option Automatically close comments"
1717
+ msgstr ""
1718
+
1719
+ #: defaults.php:410
1720
+ msgid "Changed the value of the WordPress setting to <strong>Automatically close comments after a number of days</strong> %LineBreak% Previous value: %OldValue% %LineBreak% New value: %NewValue%"
1721
+ msgstr ""
1722
+
1723
+ #: defaults.php:411
1724
+ msgid "Enabled/Disabled the option for comments to be manually approved"
1725
+ msgstr ""
1726
+
1727
+ #: defaults.php:411
1728
+ msgid "The WordPress setting <strong>Comments must be manualy approved</strong>"
1729
+ msgstr ""
1730
+
1731
+ #: defaults.php:412
1732
+ msgid "Enabled/Disabled the option for an author to have previously approved comments for the comments to appear"
1733
+ msgstr ""
1734
+
1735
+ #: defaults.php:412
1736
+ msgid "The WordPress setting <strong>Comment author must have a previously approved comment</strong>"
1737
+ msgstr ""
1738
+
1739
+ #: defaults.php:413
1740
+ msgid "Changed the number of links that a comment must have to be held in the queue"
1741
+ msgstr ""
1742
+
1743
+ #: defaults.php:413
1744
+ msgid "Changed the WordPress setting <strong>Hold a comment in the queue if it contains links</strong> %LineBreak% Previous value: %OldValue% %LineBreak% New value: %NewValue%"
1745
+ msgstr ""
1746
+
1747
+ #: defaults.php:414
1748
+ msgid "Modified the list of keywords for comments moderation"
1749
+ msgstr ""
1750
+
1751
+ #: defaults.php:414
1752
+ msgid "Modified the list of keywords for comments medoration in WordPress"
1753
+ msgstr ""
1754
+
1755
+ #: defaults.php:415
1756
+ msgid "Modified the list of keywords for comments blacklisting"
1757
+ msgstr ""
1758
+
1759
+ #: defaults.php:415
1760
+ msgid "Modified the list of <strong>Disallowed comment keys</strong> (keywords) for comments blacklisting in WordPress"
1761
+ msgstr ""
1762
+
1763
+ #: defaults.php:416
1764
+ msgid "Option WordPress Address (URL) in WordPress settings changed"
1765
+ msgstr ""
1766
+
1767
+ #: defaults.php:416
1768
+ msgid "Changed the <strong>WordPress address (URL)</strong> %LineBreak% Previous URL: %old_url% %LineBreak% New URL: %new_url%"
1769
+ msgstr ""
1770
+
1771
+ #: defaults.php:417
1772
+ msgid "Option Site Address (URL) in WordPress settings changed"
1773
  msgstr ""
1774
 
1775
+ #: defaults.php:417
1776
+ msgid "Changed the <strong>Site address (URL)</strong> %LineBreak% Previous URL: %old_url% %LineBreak% New URL: %new_url%"
1777
  msgstr ""
1778
 
1779
+ #: defaults.php:419
1780
+ msgid "Option Your homepage displays in WordPress settings changed"
1781
  msgstr ""
1782
 
1783
+ #: defaults.php:419
1784
+ msgid "The <strong>Your homepage displays</strong> in the WordPress settings %LineBreak% Previous setting: %old_homepage% %LineBreak% New setting: %new_homepage%"
1785
  msgstr ""
1786
 
1787
+ #: defaults.php:420
1788
+ msgid "Option homepage in WordPress settings changed"
1789
  msgstr ""
1790
 
1791
+ #: defaults.php:420
1792
+ msgid "Changed the <strong>Homepage</strong> in the WordPress settings %LineBreak% Previous page: %old_page% %LineBreak% New page: %new_page%"
1793
  msgstr ""
1794
 
1795
+ #: defaults.php:421
1796
+ msgid "Option posts page in WordPress settings changed"
1797
  msgstr ""
1798
 
1799
+ #: defaults.php:421
1800
+ msgid "Changed the <strong>Posts page</strong> in the WordPress settings %LineBreak% Previous page: %old_page% %LineBreak% New setting: %new_page%"
1801
  msgstr ""
1802
 
1803
+ #: defaults.php:423
1804
+ msgid "Option Timezone in WordPress settings changed"
1805
  msgstr ""
1806
 
1807
+ #: defaults.php:423
1808
+ msgid "The <strong>Timezone</strong> in the WordPress settings %LineBreak% Previous timezone: %old_timezone% %LineBreak% New timezone: %new_timezone%"
1809
  msgstr ""
1810
 
1811
+ #: defaults.php:424
1812
+ msgid "Option Date format in WordPress settings changed"
1813
  msgstr ""
1814
 
1815
+ #: defaults.php:424
1816
+ msgid "The <strong>Date format</strong> in the WordPress settings %LineBreak% Previous format: %old_date_format% %LineBreak% New format: %new_date_format%"
1817
  msgstr ""
1818
 
1819
+ #: defaults.php:425
1820
+ msgid "Option Time format in WordPress settings changed"
1821
  msgstr ""
1822
 
1823
+ #: defaults.php:425
1824
+ msgid "The <strong>Time format</strong> in the WordPress settings %LineBreak% Previous format: %old_time_format% %LineBreak% New format: %new_time_format%"
1825
  msgstr ""
1826
 
1827
+ #: defaults.php:427
1828
+ msgid "Option Automatic updates setting changed"
1829
  msgstr ""
1830
 
1831
+ #: defaults.php:427
1832
+ msgid "The <strong>Automatic updates</strong> in the WordPress settings %LineBreak% %updates_status%"
1833
  msgstr ""
1834
 
1835
+ #: defaults.php:431
1836
  msgid "Multisite Network Sites"
1837
  msgstr ""
1838
 
1839
+ #: defaults.php:432
1840
  msgid "MultiSite"
1841
  msgstr ""
1842
 
1843
+ #: defaults.php:433
1844
  msgid "New site added on the network"
1845
  msgstr ""
1846
 
1847
+ #: defaults.php:433
1848
  msgid "New site on the network: %SiteName% %LineBreak% URL: %BlogURL%"
1849
  msgstr ""
1850
 
1851
+ #: defaults.php:434
1852
  msgid "Existing site archived"
1853
  msgstr ""
1854
 
1855
+ #: defaults.php:434
1856
  msgid "Archived the site: %SiteName% %LineBreak% URL: %BlogURL%"
1857
  msgstr ""
1858
 
1859
+ #: defaults.php:435
1860
  msgid "Archived site has been unarchived"
1861
  msgstr ""
1862
 
1863
+ #: defaults.php:435
1864
  msgid "Unarchived the site: %SiteName% %LineBreak% URL: %BlogURL%"
1865
  msgstr ""
1866
 
1867
+ #: defaults.php:436
1868
  msgid "Deactivated site has been activated"
1869
  msgstr ""
1870
 
1871
+ #: defaults.php:436
1872
  msgid "Activated the site: %SiteName% %LineBreak% URL: %BlogURL%"
1873
  msgstr ""
1874
 
1875
+ #: defaults.php:437
1876
  msgid "Site has been deactivated"
1877
  msgstr ""
1878
 
1879
+ #: defaults.php:437
1880
  msgid "Deactivated the site: %SiteName% %LineBreak% URL: %BlogURL%"
1881
  msgstr ""
1882
 
1883
+ #: defaults.php:438
1884
  msgid "Existing site deleted from network"
1885
  msgstr ""
1886
 
1887
+ #: defaults.php:438
1888
  msgid "The site: %SiteName% %LineBreak% URL: %BlogURL%"
1889
  msgstr ""
1890
 
1891
+ #: defaults.php:439
1892
+ msgid "Allow site administrators to add new users to their sites settings changed"
1893
+ msgstr ""
1894
+
1895
+ #: defaults.php:439
1896
+ msgid "The network setting <strong>Allow site administrators to add new users to their sites</strong>"
1897
+ msgstr ""
1898
+
1899
+ #: defaults.php:440
1900
+ msgid "Site upload space settings changed"
1901
+ msgstr ""
1902
+
1903
+ #: defaults.php:440
1904
+ msgid "The network setting <strong>Site upload space</strong> (to limit space allocated for each site's upload directory)"
1905
+ msgstr ""
1906
+
1907
+ #: defaults.php:441
1908
+ msgid "Site upload space file size settings changed"
1909
+ msgstr ""
1910
+
1911
+ #: defaults.php:441
1912
+ msgid "The file size in the <strong>Site upload space</strong> network setting %LineBreak% Previous size (MB): %old_value% %LineBreak%New size (MB): %new_value%"
1913
+ msgstr ""
1914
+
1915
+ #: defaults.php:442
1916
+ msgid "Site Upload file types settings changed"
1917
+ msgstr ""
1918
+
1919
+ #: defaults.php:442
1920
+ msgid "The network setting <strong>Upload file types</strong> (list of allowed file types) %LineBreak% Previous value: %old_value% %LineBreak% New value: %new_value%"
1921
+ msgstr ""
1922
+
1923
+ #: defaults.php:443
1924
+ msgid "Site Max upload file size settings changed"
1925
+ msgstr ""
1926
+
1927
+ #: defaults.php:443
1928
+ msgid "Changed the <strong>Max upload file size</strong> network setting %LineBreak% Previous size (KB): %old_value% %LineBreak% New size (KB): %new_value%"
1929
+ msgstr ""
1930
+
1931
+ #: defaults.php:444
1932
  msgid "Allow new registrations settings changed"
1933
  msgstr ""
1934
 
1935
+ #: defaults.php:444
1936
  msgid "Changed the <strong>Allow new registrations</strong> settings %LineBreak% Previous setting: %previous_setting% %LineBreak% New setting: %new_setting%"
1937
  msgstr ""
1938
 
1939
+ #: defaults.php:453, classes/Views/Settings.php:99
1940
  msgid "File Changes"
1941
  msgstr ""
1942
 
1943
+ #: defaults.php:454
1944
  msgid "Monitor File Changes"
1945
  msgstr ""
1946
 
1947
+ #: defaults.php:455
1948
  msgid "Dummy"
1949
  msgstr ""
1950
 
1951
  #. translators: Username
1952
  #. translators: Username
1953
+ #: wp-security-audit-log.php:908, wp-security-audit-log.php:935
1954
  msgid "Hey %1$s"
1955
  msgstr ""
1956
 
1957
+ #: wp-security-audit-log.php:909
1958
  msgid "Never miss an important update! Opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with freemius.com."
1959
  msgstr ""
1960
 
1961
+ #: wp-security-audit-log.php:910, wp-security-audit-log.php:938
1962
  msgid "Note: "
1963
  msgstr ""
1964
 
1965
+ #: wp-security-audit-log.php:911, wp-security-audit-log.php:939
1966
  msgid "NO ACTIVITY LOG ACTIVITY & DATA IS SENT BACK TO OUR SERVERS."
1967
  msgstr ""
1968
 
1969
  #. translators: 1: Plugin name. 2: Freemius link.
1970
+ #: wp-security-audit-log.php:937
1971
  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."
1972
  msgstr ""
1973
 
1974
  #. translators: Plugin name
1975
+ #: wp-security-audit-log.php:959
1976
  msgid "Get a free 7-day trial of the premium edition of %s. No credit card required, no commitments!"
1977
  msgstr ""
1978
 
1979
+ #: wp-security-audit-log.php:960, classes/AlertManager.php:1171, extensions/external-db/classes/Connections.php:173
1980
  msgid "WP Activity Log"
1981
  msgstr ""
1982
 
1983
+ #: wp-security-audit-log.php:964
1984
  msgid "Start free trial"
1985
  msgstr ""
1986
 
1987
+ #: wp-security-audit-log.php:1032
1988
  msgid "You need to activate the licence key to use WP Activity Log Premium. %2$s"
1989
  msgstr ""
1990
 
1991
+ #: wp-security-audit-log.php:1033
1992
  msgid "Activate the licence key now"
1993
  msgstr ""
1994
 
1995
  #. translators: Number of sites
1996
+ #: wp-security-audit-log.php:1055
1997
  msgid "The license is limited to %s sub-sites. You need to upgrade your license to cover all the sub-sites on this network."
1998
  msgstr ""
1999
 
2000
+ #: wp-security-audit-log.php:1051
2001
+ msgid "%s You need to renew your license to continue using premium features."
2002
+ msgstr ""
2003
+
2004
+ #: wp-security-audit-log.php:1163
2005
  msgid "Error: You do not have sufficient permissions to disable this custom field."
2006
  msgstr ""
2007
 
2008
+ #: wp-security-audit-log.php:1198
2009
  msgid "Custom Field <strong>%1$s</strong> is no longer being monitored.<br />Enable the monitoring of this custom field again from the"
2010
  msgstr ""
2011
 
2012
+ #: wp-security-audit-log.php:1201
2013
  msgid "Excluded Objects"
2014
  msgstr ""
2015
 
2016
+ #: wp-security-audit-log.php:1202
2017
  msgid " tab in the plugin settings"
2018
  msgstr ""
2019
 
2020
+ #: wp-security-audit-log.php:1215
2021
  msgid "Error: You do not have sufficient permissions to disable this alert."
2022
  msgstr ""
2023
 
2024
+ #: wp-security-audit-log.php:1239
2025
  msgid "Alert %1$s is no longer being monitored.<br /> %2$s"
2026
  msgstr ""
2027
 
2028
+ #: wp-security-audit-log.php:1239
2029
  msgid "You can enable this alert again from the Enable/Disable Alerts node in the plugin menu."
2030
  msgstr ""
2031
 
2032
+ #: wp-security-audit-log.php:1264, classes/Views/SetupWizard.php:270
2033
  msgid "Installing, please wait"
2034
  msgstr ""
2035
 
2036
+ #: wp-security-audit-log.php:1265, classes/Views/SetupWizard.php:271
2037
  msgid "Already installed"
2038
  msgstr ""
2039
 
2040
+ #: wp-security-audit-log.php:1266, classes/Utilities/PluginInstallAndActivate.php:108, classes/Views/SetupWizard.php:272, classes/Views/SetupWizard.php:836
2041
  msgid "Extension installed"
2042
  msgstr ""
2043
 
2044
+ #: wp-security-audit-log.php:1267, classes/Views/SetupWizard.php:273
2045
  msgid "Extension activated"
2046
  msgstr ""
2047
 
2048
+ #: wp-security-audit-log.php:1268, classes/Views/SetupWizard.php:274
2049
  msgid "Install failed"
2050
  msgstr ""
2051
 
2052
  #. translators: %s: PHP Version
2053
+ #: wp-security-audit-log.php:1319
2054
  msgid "You are using a version of PHP that is older than %s, which is no longer supported."
2055
  msgstr ""
2056
 
2057
+ #: wp-security-audit-log.php:1321
2058
  msgid "Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com\">plugins@wpwhitesecurity.com</a> to help you switch the version of PHP you are using."
2059
  msgstr ""
2060
 
2061
  #. translators: %s: Activity Log for MainWP plugin hyperlink
2062
+ #: wp-security-audit-log.php:1326
2063
  msgid "Please install the %s plugin on the MainWP dashboard."
2064
  msgstr ""
2065
 
2066
+ #: wp-security-audit-log.php:1326
2067
  msgid "Activity Log for MainWP"
2068
  msgstr ""
2069
 
2070
  #. translators: %s: Getting started guide hyperlink
2071
+ #: wp-security-audit-log.php:1328
2072
  msgid "The WP Activity Log should be installed on the child sites only. Refer to the %s for more information."
2073
  msgstr ""
2074
 
2075
+ #: wp-security-audit-log.php:1328
2076
  msgid "getting started guide"
2077
  msgstr ""
2078
 
2079
+ #: wp-security-audit-log.php:1905
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2080
  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 activity log with the <a href=\"https://wpactivitylog.com/\" target=\"_blank\">WP Activity Log plugin</a>. The audit log also includes the IP address where you accessed this site from."
2081
  msgstr ""
2082
 
2083
+ #: wp-security-audit-log.php:1924
2084
  msgid "Every 6 hours"
2085
  msgstr ""
2086
 
2087
+ #: wp-security-audit-log.php:1928
2088
  msgid "Every 45 minutes"
2089
  msgstr ""
2090
 
2091
+ #: wp-security-audit-log.php:1932
2092
  msgid "Every 30 minutes"
2093
  msgstr ""
2094
 
2095
+ #: wp-security-audit-log.php:1936
2096
  msgid "Every 15 minutes"
2097
  msgstr ""
2098
 
2099
+ #: wp-security-audit-log.php:1940
2100
  msgid "Every 10 minutes"
2101
  msgstr ""
2102
 
2103
+ #: wp-security-audit-log.php:1944
2104
  msgid "Every 1 minute"
2105
  msgstr ""
2106
 
2107
  #. translators: 1. Deprecated method name 2. Version since deprecated
2108
+ #: wp-security-audit-log.php:1958
2109
  msgid "Method %1$s is deprecated since version %2$s!"
2110
  msgstr ""
2111
 
2112
  #. translators: Event ID
2113
+ #: classes/AlertManager.php:400
2114
  msgid "Event with code %d has not be registered."
2115
  msgstr ""
2116
 
2117
  #. translators: Event ID
2118
+ #: classes/AlertManager.php:462
2119
  msgid "Event %s already registered with WP Activity Log."
2120
  msgstr ""
2121
 
2122
+ #: classes/AlertManager.php:537
2123
  msgid "You have custom events that are using the same ID or IDs which are already registered in the plugin, so they have been disabled."
2124
  msgstr ""
2125
 
2126
  #. translators: 1.CSS classes, 2. Notice, 3. Contact us link
2127
+ #: classes/AlertManager.php:540
2128
  msgid "%4$s to help you solve this issue."
2129
  msgstr ""
2130
 
2131
+ #: classes/AlertManager.php:542
2132
  msgid "ERROR:"
2133
  msgstr ""
2134
 
2135
+ #: classes/AlertManager.php:544
2136
  msgid "Contact us"
2137
  msgstr ""
2138
 
2139
+ #: classes/AlertManager.php:1152, classes/AuditLogListView.php:299, classes/AuditLogListView.php:333, classes/WidgetManager.php:76, classes/Views/Settings.php:1090, extensions/search/classes/Filters/UserNameFilter.php:44, extensions/user-sessions/classes/View/Sessions.php:138
2140
  msgid "User"
2141
  msgstr ""
2142
 
2143
+ #: classes/AlertManager.php:1154, classes/AuditLogGridView.php:460, classes/AuditLogListView.php:486
2144
  msgid "Plugin"
2145
  msgstr ""
2146
 
2147
+ #: classes/AlertManager.php:1155
2148
  msgid "Database"
2149
  msgstr ""
2150
 
2151
+ #: classes/AlertManager.php:1156
2152
  msgid "Post"
2153
  msgstr ""
2154
 
2155
+ #: classes/AlertManager.php:1157, classes/AlertManager.php:1161
2156
  msgid "File"
2157
  msgstr ""
2158
 
2159
+ #: classes/AlertManager.php:1158
2160
  msgid "Tag"
2161
  msgstr ""
2162
 
2163
+ #: classes/AlertManager.php:1159
2164
  msgid "Comment"
2165
  msgstr ""
2166
 
2167
+ #: classes/AlertManager.php:1160
2168
  msgid "Setting"
2169
  msgstr ""
2170
 
2171
+ #: classes/AlertManager.php:1162
2172
  msgid "System Setting"
2173
  msgstr ""
2174
 
2175
+ #: classes/AlertManager.php:1163
2176
  msgid "MainWP Network"
2177
  msgstr ""
2178
 
2179
+ #: classes/AlertManager.php:1164
2180
  msgid "MainWP"
2181
  msgstr ""
2182
 
2183
+ #: classes/AlertManager.php:1165
2184
  msgid "Category"
2185
  msgstr ""
2186
 
2187
+ #: classes/AlertManager.php:1166
2188
  msgid "Custom Field"
2189
  msgstr ""
2190
 
2191
+ #: classes/AlertManager.php:1167
2192
  msgid "Widget"
2193
  msgstr ""
2194
 
2195
+ #: classes/AlertManager.php:1168
2196
  msgid "Menu"
2197
  msgstr ""
2198
 
2199
+ #: classes/AlertManager.php:1169
2200
  msgid "Theme"
2201
  msgstr ""
2202
 
2203
+ #: classes/AlertManager.php:1170
2204
  msgid "Activity log"
2205
  msgstr ""
2206
 
2207
+ #: classes/AlertManager.php:1172
2208
  msgid "Multisite Network"
2209
  msgstr ""
2210
 
2211
+ #: classes/AlertManager.php:1173, extensions/email-notifications/classes/Common.php:1124, extensions/search/classes/Filters/IpFilter.php:87, extensions/user-sessions/classes/View/Sessions.php:298
2212
  msgid "IP Address"
2213
  msgstr ""
2214
 
2215
+ #: classes/AlertManager.php:1189
2216
  msgid "unknown object"
2217
  msgstr ""
2218
 
2219
+ #: classes/AlertManager.php:1226
2220
  msgid "Login"
2221
  msgstr ""
2222
 
2223
+ #: classes/AlertManager.php:1227
2224
  msgid "Logout"
2225
  msgstr ""
2226
 
2227
+ #: classes/AlertManager.php:1228
2228
  msgid "Installed"
2229
  msgstr ""
2230
 
2231
+ #: classes/AlertManager.php:1229
2232
  msgid "Activated"
2233
  msgstr ""
2234
 
2235
+ #: classes/AlertManager.php:1230
2236
  msgid "Deactivated"
2237
  msgstr ""
2238
 
2239
+ #: classes/AlertManager.php:1231
2240
  msgid "Uninstalled"
2241
  msgstr ""
2242
 
2243
+ #: classes/AlertManager.php:1232
2244
  msgid "Updated"
2245
  msgstr ""
2246
 
2247
+ #: classes/AlertManager.php:1233, extensions/user-sessions/classes/View/Sessions.php:145
2248
  msgid "Created"
2249
  msgstr ""
2250
 
2251
+ #: classes/AlertManager.php:1234
2252
  msgid "Modified"
2253
  msgstr ""
2254
 
2255
+ #: classes/AlertManager.php:1235, extensions/search/search-init.php:301
2256
  msgid "Deleted"
2257
  msgstr ""
2258
 
2259
+ #: classes/AlertManager.php:1236
2260
  msgid "Published"
2261
  msgstr ""
2262
 
2263
+ #: classes/AlertManager.php:1237
2264
  msgid "Approved"
2265
  msgstr ""
2266
 
2267
+ #: classes/AlertManager.php:1238
2268
  msgid "Unapproved"
2269
  msgstr ""
2270
 
2271
+ #: classes/AlertManager.php:1239
2272
  msgid "Enabled"
2273
  msgstr ""
2274
 
2275
+ #: classes/AlertManager.php:1240, extensions/email-notifications/classes/Notifications.php:1812
2276
  msgid "Disabled"
2277
  msgstr ""
2278
 
2279
+ #: classes/AlertManager.php:1241
2280
  msgid "Added"
2281
  msgstr ""
2282
 
2283
+ #: classes/AlertManager.php:1242
2284
  msgid "Failed Login"
2285
  msgstr ""
2286
 
2287
+ #: classes/AlertManager.php:1243
2288
  msgid "Blocked"
2289
  msgstr ""
2290
 
2291
+ #: classes/AlertManager.php:1244
2292
  msgid "Uploaded"
2293
  msgstr ""
2294
 
2295
+ #: classes/AlertManager.php:1245
2296
  msgid "Restored"
2297
  msgstr ""
2298
 
2299
+ #: classes/AlertManager.php:1246
2300
  msgid "Opened"
2301
  msgstr ""
2302
 
2303
+ #: classes/AlertManager.php:1247
2304
  msgid "Viewed"
2305
  msgstr ""
2306
 
2307
+ #: classes/AlertManager.php:1248
2308
  msgid "Started"
2309
  msgstr ""
2310
 
2311
+ #: classes/AlertManager.php:1249
2312
  msgid "Stopped"
2313
  msgstr ""
2314
 
2315
+ #: classes/AlertManager.php:1250
2316
  msgid "Removed"
2317
  msgstr ""
2318
 
2319
+ #: classes/AlertManager.php:1251
2320
  msgid "Unblocked"
2321
  msgstr ""
2322
 
2323
+ #: classes/AlertManager.php:1252
2324
  msgid "Renamed"
2325
  msgstr ""
2326
 
2327
+ #: classes/AlertManager.php:1253
2328
  msgid "Duplicated"
2329
  msgstr ""
2330
 
2331
+ #: classes/AlertManager.php:1254
2332
+ msgid "Submitted"
2333
+ msgstr ""
2334
+
2335
+ #: classes/AlertManager.php:1255
2336
+ msgid "Revoked"
2337
+ msgstr ""
2338
+
2339
+ #: classes/AlertManager.php:1272
2340
  msgid "unknown type"
2341
  msgstr ""
2342
 
2343
+ #: classes/AlertManager.php:1903, classes/ConstantManager.php:146, extensions/external-db/classes/Common.php:661, extensions/external-db/classes/Common.php:902
2344
  msgid "Unknown error code."
2345
  msgstr ""
2346
 
2347
+ #: classes/AlertManager.php:1922, classes/AlertManager.php:1910, extensions/reports/classes/Common.php:480, extensions/reports/classes/Common.php:470
2348
  msgid "Unknown Site"
2349
  msgstr ""
2350
 
2351
+ #: classes/AuditLogGridView.php:104, classes/AuditLogListView.php:104
2352
  msgid "No events so far."
2353
  msgstr ""
2354
 
2355
+ #: classes/AuditLogGridView.php:141, classes/AuditLogListView.php:148
2356
  msgid "List View"
2357
  msgstr ""
2358
 
2359
+ #: classes/AuditLogGridView.php:142, classes/AuditLogListView.php:149
2360
  msgid "Grid View"
2361
  msgstr ""
2362
 
2363
+ #: classes/AuditLogGridView.php:167, classes/AuditLogListView.php:174
2364
  msgid "Show "
2365
  msgstr ""
2366
 
2367
+ #: classes/AuditLogGridView.php:175, classes/AuditLogListView.php:182
2368
  msgid " Items"
2369
  msgstr ""
2370
 
2371
+ #: classes/AuditLogGridView.php:182, classes/AuditLogListView.php:189
2372
  msgid "— End of Activity Log —"
2373
  msgstr ""
2374
 
2375
+ #: classes/AuditLogGridView.php:203, classes/AuditLogListView.php:210, classes/Views/AuditLog.php:624, extensions/reports/inc/wsal-reporting-view.inc.php:610
2376
  msgid "All Sites"
2377
  msgstr ""
2378
 
2379
+ #: classes/AuditLogGridView.php:231, classes/AuditLogListView.php:239
2380
  msgid "Live Database"
2381
  msgstr ""
2382
 
2383
+ #: classes/AuditLogGridView.php:234, classes/AuditLogListView.php:242
2384
  msgid "Archive Database"
2385
  msgstr ""
2386
 
2387
+ #: classes/AuditLogGridView.php:288, classes/AuditLogGridView.php:312, classes/AuditLogListView.php:296, classes/AuditLogListView.php:324
2388
  msgid "ID"
2389
  msgstr ""
2390
 
2391
+ #: classes/AuditLogGridView.php:289, classes/AuditLogGridView.php:315, classes/AuditLogListView.php:297, classes/AuditLogListView.php:327, classes/Views/Settings.php:1086, classes/Views/ToggleAlerts.php:297, extensions/search/classes/Filters/CodeFilter.php:38, extensions/search/classes/Filters/CodeFilter.php:64
2392
  msgid "Severity"
2393
  msgstr ""
2394
 
2395
+ #: classes/AuditLogGridView.php:290, extensions/search/classes/Filters/CodeFilter.php:71
2396
  msgid "Info"
2397
  msgstr ""
2398
 
2399
+ #: classes/AuditLogGridView.php:295, classes/AuditLogListView.php:307, classes/AuditLogListView.php:339, extensions/email-notifications/classes/Common.php:1122, extensions/email-notifications/classes/Common.php:1182, extensions/search/classes/Filters/SiteFilter.php:29
2400
  msgid "Site"
2401
  msgstr ""
2402
 
2403
+ #: classes/AuditLogGridView.php:298, classes/AuditLogGridView.php:321, classes/AuditLogListView.php:310, classes/AuditLogListView.php:348, extensions/email-notifications/classes/Common.php:1126, extensions/email-notifications/classes/Common.php:1156
2404
  msgid "Message"
2405
  msgstr ""
2406
 
2407
+ #: classes/AuditLogGridView.php:318
2408
  msgid "Grid"
2409
  msgstr ""
2410
 
2411
+ #: classes/AuditLogGridView.php:386, classes/AuditLogListView.php:430
2412
  msgid "Disable this type of events."
2413
  msgstr ""
2414
 
2415
+ #: classes/AuditLogGridView.php:414, classes/AuditLogGridView.php:418, classes/AuditLogGridView.php:457, classes/AuditLogListView.php:441, classes/AuditLogListView.php:482
2416
  msgid "Unknown"
2417
  msgstr ""
2418
 
2419
+ #: classes/AuditLogGridView.php:466, classes/AuditLogListView.php:494
2420
  msgid "Unregistered user"
2421
  msgstr ""
2422
 
2423
+ #: classes/AuditLogGridView.php:442, classes/AuditLogListView.php:467
2424
  msgid "Show me all activity by this User"
2425
  msgstr ""
2426
 
2427
+ #: classes/AuditLogGridView.php:503, classes/AuditLogGridView.php:516, classes/AuditLogListView.php:530, classes/AuditLogListView.php:543
2428
  msgid "Show me all activity originating from this IP Address"
2429
  msgstr ""
2430
 
2431
+ #: classes/AuditLogGridView.php:573, classes/AuditLogListView.php:572
2432
  msgid "View all details of this change"
2433
  msgstr ""
2434
 
2435
+ #: classes/AuditLogGridView.php:574, classes/AuditLogListView.php:573
2436
  msgid "Alert Data Inspector"
2437
  msgstr ""
2438
 
2439
+ #: classes/AuditLogListView.php:298, classes/AuditLogListView.php:330, extensions/search/classes/Filters/DateFilter.php:27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2440
  msgid "Date"
2441
  msgstr ""
2442
 
2443
+ #: classes/AuditLogListView.php:300, classes/AuditLogListView.php:336, extensions/search/classes/Filters/IpFilter.php:45
2444
  msgid "IP"
2445
  msgstr ""
2446
 
2447
+ #: classes/AuditLogListView.php:301, classes/AuditLogListView.php:342, classes/WidgetManager.php:77, extensions/email-notifications/classes/Common.php:1095, extensions/search/classes/Filters/ObjectFilter.php:29, extensions/search/classes/Filters/ObjectFilter.php:53
2448
  msgid "Object"
2449
  msgstr ""
2450
 
2451
+ #: classes/AuditLogListView.php:302, classes/AuditLogListView.php:345, classes/WidgetManager.php:78, extensions/email-notifications/classes/Common.php:1096, extensions/search/classes/Filters/EventTypeFilter.php:29, extensions/search/classes/Filters/EventTypeFilter.php:53
2452
  msgid "Event Type"
2453
  msgstr ""
2454
 
2455
+ #: classes/AuditLogListView.php:409
2456
  msgid "Click to toggle."
2457
  msgstr ""
2458
 
2459
+ #: classes/AuditLogListView.php:414, classes/Models/Occurrence.php:83
2460
  msgid "Alert message not found."
2461
  msgstr ""
2462
 
2463
+ #: classes/AuditLogListView.php:415, classes/Models/Occurrence.php:84
2464
  msgid "Alert description not found."
2465
  msgstr ""
2466
 
2467
+ #: classes/ConstantManager.php:166, classes/Views/ToggleAlerts.php:442
2468
  msgid "Informational"
2469
  msgstr ""
2470
 
2471
+ #: classes/ConstantManager.php:164, classes/Views/ToggleAlerts.php:440, extensions/search/classes/Filters/CodeFilter.php:70
2472
  msgid "Low"
2473
  msgstr ""
2474
 
2475
+ #: classes/ConstantManager.php:162, classes/Views/ToggleAlerts.php:438, extensions/search/classes/Filters/CodeFilter.php:69
2476
  msgid "Medium"
2477
  msgstr ""
2478
 
2479
+ #: classes/ConstantManager.php:160, classes/Views/ToggleAlerts.php:436, extensions/search/classes/Filters/CodeFilter.php:68
2480
  msgid "High"
2481
  msgstr ""
2482
 
2483
+ #: classes/ConstantManager.php:158, classes/ConstantManager.php:152, classes/Views/ToggleAlerts.php:434, classes/Views/ToggleAlerts.php:428, extensions/search/classes/Filters/CodeFilter.php:67
2484
  msgid "Critical"
2485
  msgstr ""
2486
 
2487
+ #: classes/ConstantManager.php:156, classes/Views/ToggleAlerts.php:444, classes/Views/ToggleAlerts.php:432
2488
  msgid "Notification"
2489
  msgstr ""
2490
 
2491
+ #: classes/ConstantManager.php:154, classes/Views/ToggleAlerts.php:430
2492
  msgid "Warning"
2493
  msgstr ""
2494
 
2495
+ #: classes/Settings.php:355
2496
  msgid "This function is deprecated"
2497
  msgstr ""
2498
 
2499
+ #: classes/Settings.php:1479
2500
  msgid "View the content changes"
2501
  msgstr ""
2502
 
2503
+ #: classes/Settings.php:1489
2504
+ msgid "View page in the editor"
2505
+ msgstr ""
2506
+
2507
+ #: classes/Settings.php:1504
2508
  msgid "View post in the editor"
2509
  msgstr ""
2510
 
2511
+ #: classes/Settings.php:1517
2512
  msgid "View Order"
2513
  msgstr ""
2514
 
2515
+ #: classes/Settings.php:1532
2516
  msgid "View category"
2517
  msgstr ""
2518
 
2519
+ #: classes/Settings.php:1548
2520
  msgid "View tag"
2521
  msgstr ""
2522
 
2523
+ #: classes/Settings.php:1553
2524
  msgid "User profile page"
2525
  msgstr ""
2526
 
2527
+ #: classes/Settings.php:1631, classes/Settings.php:1631
2528
+ msgid "View Menu"
2529
  msgstr ""
2530
 
2531
+ #: classes/Settings.php:1651, classes/Settings.php:1651
2532
+ msgid "Download the log file."
2533
+ msgstr ""
2534
+
2535
+ #: classes/Settings.php:1677
2536
+ msgid "published"
2537
+ msgstr ""
2538
+
2539
+ #. translators: Mailto link for support.
2540
+ #: classes/Settings.php:1707, classes/Settings.php:1710
2541
+ msgid "Contact us on %s for assistance"
2542
  msgstr ""
2543
 
2544
+ #: classes/Settings.php:1725, classes/Settings.php:1728
2545
  msgid "plugin settings"
2546
  msgstr ""
2547
 
2548
+ #: classes/Settings.php:1731
2549
+ msgid "Increase maximum file size limit"
2550
+ msgstr ""
2551
+
2552
+ #: classes/Settings.php:1739, classes/Settings.php:1742
2553
  msgid "contact our support"
2554
  msgstr ""
2555
 
2556
+ #: classes/Settings.php:1745
2557
+ msgid "Contact Support"
2558
+ msgstr ""
2559
+
2560
+ #: classes/Settings.php:2055
2561
  msgid "Root directory of WordPress (excluding sub directories)"
2562
  msgstr ""
2563
 
2564
+ #: classes/Settings.php:2056
2565
  msgid "WP Admin directory (/wp-admin/)"
2566
  msgstr ""
2567
 
2568
+ #: classes/Settings.php:2057
2569
  msgid "WP Includes directory (/wp-includes/)"
2570
  msgstr ""
2571
 
2572
+ #: classes/Settings.php:2058
2573
  msgid "/wp-content/ directory (excluding plugins, themes & uploads directories)"
2574
  msgstr ""
2575
 
2576
+ #: classes/Settings.php:2059
2577
  msgid "Themes directory (/wp-content/themes/)"
2578
  msgstr ""
2579
 
2580
+ #: classes/Settings.php:2060
2581
  msgid "Plugins directory (/wp-content/plugins/)"
2582
  msgstr ""
2583
 
2584
+ #: classes/Settings.php:2061
2585
  msgid "Uploads directory (/wp-content/uploads/)"
2586
  msgstr ""
2587
 
2588
+ #: classes/Settings.php:2066
2589
  msgid "Uploads directory of all sub sites on this network (/wp-content/sites/*)"
2590
  msgstr ""
2591
 
2601
  msgid "Latest Events"
2602
  msgstr ""
2603
 
2604
+ #: classes/WidgetManager.php:79, classes/Views/ToggleAlerts.php:298
2605
  msgid "Description"
2606
  msgstr ""
2607
 
2635
  msgid "This type of activity / change is no longer monitored. You can create your own custom event IDs to keep a log of such change. Read more about custom events %1$shere%2$s."
2636
  msgstr ""
2637
 
2638
+ #: classes/Sensors/Content.php:712
2639
+ msgid "Default template"
2640
+ msgstr ""
2641
+
2642
+ #: classes/Sensors/Content.php:713
2643
+ msgid "Default"
2644
+ msgstr ""
2645
+
2646
+ #: classes/Sensors/Content.php:765
2647
+ msgid "No previous image"
2648
+ msgstr ""
2649
+
2650
+ #: classes/Sensors/Content.php:766
2651
+ msgid "No image"
2652
+ msgstr ""
2653
+
2654
+ #: classes/Sensors/Content.php:1111, classes/Sensors/Content.php:1119
2655
  msgid "Public"
2656
  msgstr ""
2657
 
2658
+ #: classes/Sensors/Content.php:1109, classes/Sensors/Content.php:1117
2659
  msgid "Private"
2660
  msgstr ""
2661
 
2662
+ #: classes/Sensors/Content.php:1107, classes/Sensors/Content.php:1115
2663
  msgid "Password Protected"
2664
  msgstr ""
2665
 
2666
+ #: classes/Sensors/Content.php:1282
2667
  msgid "no tags"
2668
  msgstr ""
2669
 
2670
+ #: classes/Sensors/Multisite.php:80
2671
+ msgid "disabled"
2672
+ msgstr ""
2673
+
2674
+ #: classes/Sensors/Multisite.php:81
2675
+ msgid "user accounts only"
2676
+ msgstr ""
2677
+
2678
+ #: classes/Sensors/Multisite.php:82
2679
+ msgid "users can register new sites"
2680
+ msgstr ""
2681
+
2682
+ #: classes/Sensors/Multisite.php:83
2683
+ msgid "sites & users can be registered"
2684
+ msgstr ""
2685
+
2686
+ #: classes/Sensors/System.php:175, classes/Sensors/System.php:176
2687
+ msgid "latest posts"
2688
+ msgstr ""
2689
+
2690
+ #: classes/Sensors/System.php:175, classes/Sensors/System.php:176
2691
+ msgid "static page"
2692
+ msgstr ""
2693
+
2694
+ #: classes/Sensors/System.php:355
2695
+ msgid "automatically update to all new versions of WordPress"
2696
+ msgstr ""
2697
+
2698
+ #: classes/Sensors/System.php:355
2699
+ msgid "automatically update maintenance and security releases only"
2700
+ msgstr ""
2701
+
2702
  #: classes/ThirdPartyExtensions/BBPressExtension.php:29
2703
  msgid "BBPress"
2704
  msgstr ""
2724
  msgstr ""
2725
 
2726
  #. translators: %s: Home URL
2727
+ #: classes/Utilities/Emailer.php:54
2728
  msgid "WP Activity Log plugin disabled on %s"
2729
  msgstr ""
2730
 
2731
+ #: classes/Utilities/Emailer.php:57
2732
  msgid "Hello admin,"
2733
  msgstr ""
2734
 
2735
  #. translators: 1. User display name, 2. Home URL, 3. Date and time
2736
+ #: classes/Utilities/Emailer.php:62
2737
  msgid "This is a notification to let you know that the user %1$s has deactivated the plugin WP Activity Log on the website %2$s on %3$s."
2738
  msgstr ""
2739
 
2741
  msgid "WP Activity Log can keep a log of changes done on other plugins. Install the relevant extension from the below list to keep a log of changes done on that plugin."
2742
  msgstr ""
2743
 
2744
+ #: classes/Utilities/PluginInstallAndActivate.php:101, classes/Views/SetupWizard.php:829
2745
  msgid "Extension for "
2746
  msgstr ""
2747
 
2748
+ #: classes/Utilities/PluginInstallAndActivate.php:110, classes/Views/SetupWizard.php:838
2749
  msgid "Install Extension"
2750
  msgstr ""
2751
 
2752
+ #: classes/Utilities/PluginInstallAndActivate.php:106, classes/Views/SetupWizard.php:834
2753
  msgid "Extension installed, activate now?"
2754
  msgstr ""
2755
 
2845
  msgid "Log Viewer"
2846
  msgstr ""
2847
 
2848
+ #: classes/Views/AuditLog.php:540, classes/Views/Settings.php:326, classes/Views/ToggleAlerts.php:109, extensions/email-notifications/classes/AddNotification.php:227, extensions/email-notifications/classes/AddNotification.php:260, extensions/email-notifications/classes/EditNotification.php:232, extensions/email-notifications/classes/EditNotification.php:240, extensions/email-notifications/classes/EditNotification.php:236, extensions/email-notifications/classes/EditNotification.php:245, extensions/email-notifications/classes/EditNotification.php:273, extensions/external-db/classes/Settings.php:421
2849
  msgid "You do not have sufficient permissions to access this page."
2850
  msgstr ""
2851
 
2853
  msgid "Thank you for installing WP Activity Log. Do you want to run the wizard to configure the basic plugin settings?"
2854
  msgstr ""
2855
 
2856
+ #: classes/Views/AuditLog.php:591, classes/Views/Settings.php:527, classes/Views/Settings.php:554, classes/Views/Settings.php:620, classes/Views/Settings.php:678, classes/Views/Settings.php:1122, classes/Views/Settings.php:1383, classes/Views/Settings.php:1424, classes/Views/Settings.php:1455, classes/Views/SetupWizard.php:562
2857
  msgid "Yes"
2858
  msgstr ""
2859
 
2860
+ #: classes/Views/AuditLog.php:592, classes/Views/Settings.php:532, classes/Views/Settings.php:559, classes/Views/Settings.php:650, classes/Views/Settings.php:688, classes/Views/Settings.php:1127, classes/Views/Settings.php:1390, classes/Views/Settings.php:1431, classes/Views/Settings.php:1456, classes/Views/SetupWizard.php:567
2861
  msgid "No"
2862
  msgstr ""
2863
 
2869
  msgid "No Results"
2870
  msgstr ""
2871
 
2872
+ #: classes/Views/AuditLog.php:795, classes/Views/AuditLog.php:838, classes/Views/AuditLog.php:1108, classes/Views/AuditLog.php:1170, classes/Views/AuditLog.php:1223, classes/Views/Settings.php:235, classes/Views/Settings.php:1598, classes/Views/Settings.php:1626, classes/Views/Settings.php:1656, classes/Views/SetupWizard.php:96, extensions/search/search-init.php:399, extensions/search/search-init.php:447, extensions/email-notifications/classes/Notifications.php:492, extensions/external-db/classes/Connections.php:753, extensions/external-db/classes/Connections.php:787, extensions/external-db/classes/Connections.php:980, extensions/external-db/classes/Settings.php:312, extensions/external-db/classes/Settings.php:386, extensions/external-db/classes/Settings.php:1049, extensions/external-db/classes/Settings.php:1324, extensions/external-db/classes/Settings.php:1376, extensions/external-db/classes/Settings.php:1409, extensions/user-sessions/classes/Views.php:516, extensions/reports/classes/Views/Main.php:707
2873
  msgid "Nonce verification failed."
2874
  msgstr ""
2875
 
3014
  msgid "Configure an unlimited number of connections to different databases and third party services."
3015
  msgstr ""
3016
 
3017
+ #: classes/Views/Help.php:62, classes/Views/Help.php:110
3018
  msgid "Help"
3019
  msgstr ""
3020
 
3021
+ #: classes/Views/Help.php:68, classes/Views/Help.php:238
3022
+ msgid "Contact Us"
3023
+ msgstr ""
3024
+
3025
+ #: classes/Views/Help.php:74, classes/Views/Help.php:260
3026
  msgid "System Info"
3027
  msgstr ""
3028
 
3029
+ #: classes/Views/Help.php:124
3030
+ msgid "Help & Contact Us"
3031
+ msgstr ""
3032
+
3033
+ #: classes/Views/Help.php:183
3034
  msgid "Getting Started"
3035
  msgstr ""
3036
 
3037
+ #: classes/Views/Help.php:184
3038
  msgid "Getting started with WP Activity Log is really easy; once the plugin is installed it will automatically keep a log of everything that is happening on your website and you do not need to do anything. Watch the video below for a quick overview of the plugin."
3039
  msgstr ""
3040
 
3041
+ #: classes/Views/Help.php:188
3042
  msgid "Plugin Support"
3043
  msgstr ""
3044
 
3045
+ #: classes/Views/Help.php:190
3046
  msgid "Have you encountered or noticed any issues while using WP Activity Log plugin?"
3047
  msgstr ""
3048
 
3049
+ #: classes/Views/Help.php:191
3050
  msgid "Or you want to report something to us? Click any of the options below to post on the plugin's forum or contact our support directly."
3051
  msgstr ""
3052
 
3053
+ #: classes/Views/Help.php:193
3054
  msgid "Free Support Forum"
3055
  msgstr ""
3056
 
3057
+ #: classes/Views/Help.php:195
3058
  msgid "Free Support Email"
3059
  msgstr ""
3060
 
3061
+ #: classes/Views/Help.php:199
3062
  msgid "Plugin Documentation"
3063
  msgstr ""
3064
 
3065
+ #: classes/Views/Help.php:201
3066
  msgid "For more technical information about the WP Activity Log plugin please visit the plugin’s knowledge base."
3067
  msgstr ""
3068
 
3069
+ #: classes/Views/Help.php:202
3070
  msgid "Refer to the list of WordPress security events for a complete list of Events and IDs that the plugin uses to keep a log of all the changes in the WordPress activity log."
3071
  msgstr ""
3072
 
3073
+ #: classes/Views/Help.php:204
3074
  msgid "Plugin Website"
3075
  msgstr ""
3076
 
3077
+ #: classes/Views/Help.php:206
3078
  msgid "Knowledge Base"
3079
  msgstr ""
3080
 
3081
+ #: classes/Views/Help.php:208
3082
  msgid "List of activity logs event IDs"
3083
  msgstr ""
3084
 
3085
+ #: classes/Views/Help.php:212
3086
  msgid "Rate WP Activity Log"
3087
  msgstr ""
3088
 
3089
+ #: classes/Views/Help.php:214
3090
  msgid "We work really hard to deliver a plugin that enables you to keep a record of all the changes that are happening on your WordPress."
3091
  msgstr ""
3092
 
3093
+ #: classes/Views/Help.php:215
3094
  msgid "It takes thousands of man-hours every year and endless amount of dedication to research, develop and maintain the free edition of WP Activity Log."
3095
  msgstr ""
3096
 
3097
+ #: classes/Views/Help.php:216
3098
  msgid "Therefore if you like what you see, and find WP Activity Log useful we ask you nothing more than to please rate our plugin."
3099
  msgstr ""
3100
 
3101
+ #: classes/Views/Help.php:217
3102
  msgid "We appreciate every star!"
3103
  msgstr ""
3104
 
3105
+ #: classes/Views/Help.php:227
3106
  msgid "Rate Plugin"
3107
  msgstr ""
3108
 
3109
+ #: classes/Views/Help.php:278
3110
  msgid "Enforce strong password policies on WordPress"
3111
  msgstr ""
3112
 
3113
+ #: classes/Views/Help.php:284
3114
  msgid "Automatically identify unauthorized file changes on WordPress"
3115
  msgstr ""
3116
 
3117
+ #: classes/Views/Help.php:290
3118
  msgid "Add an extra layer of security to your login pages with 2FA & require your users to use it."
3119
  msgstr ""
3120
 
3121
+ #: classes/Views/Help.php:296
3122
  msgid "See the child sites activity logs from the central MainWP dashboard"
3123
  msgstr ""
3124
 
3125
+ #: classes/Views/Help.php:302
3126
  msgid "Our other WordPress plugins"
3127
  msgstr ""
3128
 
3129
+ #: classes/Views/Help.php:313
3130
  msgid "LEARN MORE"
3131
  msgstr ""
3132
 
3298
  msgid "Unknown settings tab."
3299
  msgstr ""
3300
 
3301
+ #: classes/Views/Settings.php:220, classes/Views/Settings.php:1686, classes/Views/Settings.php:1709, 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:970, extensions/external-db/classes/Settings.php:282, extensions/external-db/classes/Settings.php:373, extensions/external-db/classes/Settings.php:1036, extensions/external-db/classes/Settings.php:1277, extensions/external-db/classes/Settings.php:1341, extensions/external-db/classes/Settings.php:1393
3302
  msgid "Access Denied."
3303
  msgstr ""
3304
 
3306
  msgid "Invalid input."
3307
  msgstr ""
3308
 
3309
+ #: classes/Views/Settings.php:342, classes/Views/ToggleAlerts.php:126, extensions/external-db/classes/Settings.php:432
3310
  msgid "Settings have been saved."
3311
  msgstr ""
3312
 
3314
  msgid "Message sent successfully."
3315
  msgstr ""
3316
 
3317
+ #: classes/Views/Settings.php:348, classes/Views/ToggleAlerts.php:132, extensions/external-db/classes/Settings.php:437, extensions/user-sessions/classes/View/Sessions.php:130
3318
  msgid "Error: "
3319
  msgstr ""
3320
 
3551
  msgstr ""
3552
 
3553
  #: classes/Views/Settings.php:878
3554
+ msgid "By default all installed plugins are listed in the plugins page. Set this option to Yes remove WP Activity Log from the list of installed plugins for users who are unable to access the WP Activity Log settings."
3555
  msgstr ""
3556
 
3557
  #: classes/Views/Settings.php:882
3659
  msgid "Date & Time"
3660
  msgstr ""
3661
 
3662
+ #: classes/Views/Settings.php:1084, extensions/email-notifications/classes/Common.php:1091, extensions/email-notifications/classes/Common.php:1125, extensions/email-notifications/classes/Common.php:1153, extensions/search/classes/Filters/AlertFilter.php:26, extensions/search/classes/Filters/AlertFilter.php:51
3663
  msgid "Event ID"
3664
  msgstr ""
3665
 
3683
  msgid "Website File Changes plugin settings"
3684
  msgstr ""
3685
 
3686
+ #: classes/Views/Settings.php:1176, classes/Views/ToggleAlerts.php:521
3687
  msgid "Website File Changes Monitor"
3688
  msgstr ""
3689
 
3690
+ #: classes/Views/Settings.php:1177, classes/Views/ToggleAlerts.php:522
3691
  msgid "To keep a log of file changes please install Website File Changes Monitor, a plugin which is also developed by us."
3692
  msgstr ""
3693
 
3694
+ #: classes/Views/Settings.php:1178, classes/Views/ToggleAlerts.php:523
3695
  msgid "Install plugin now"
3696
  msgstr ""
3697
 
3698
+ #: classes/Views/Settings.php:1178, classes/Views/ToggleAlerts.php:523
3699
  msgid "Learn More"
3700
  msgstr ""
3701
 
3702
+ #: classes/Views/Settings.php:1206
3703
  msgid "By default the plugin keeps a log of all user changes done on your WordPress website. Use the setting below to exclude any objects from the activity log. When an object is excluded from the activity log, any event in which that object is referred will not be logged in the activity log."
3704
  msgstr ""
3705
 
3706
+ #: classes/Views/Settings.php:1210
3707
  msgid "Exclude Users:"
3708
  msgstr ""
3709
 
3710
+ #: classes/Views/Settings.php:1231
3711
  msgid "Exclude Roles:"
3712
  msgstr ""
3713
 
3714
+ #: classes/Views/Settings.php:1252
3715
  msgid "Exclude IP Address(es):"
3716
  msgstr ""
3717
 
3718
+ #: classes/Views/Settings.php:1268
3719
  msgid "You can exclude an individual IP address or a range of IP addresses. To exclude a range use the following format: [first IP]-[last octet of the last IP]. Example: 172.16.180.6-127."
3720
  msgstr ""
3721
 
3722
+ #: classes/Views/Settings.php:1274
3723
  msgid "Exclude Post Type:"
3724
  msgstr ""
3725
 
3726
+ #: classes/Views/Settings.php:1290
3727
  msgid "WordPress has the post and page post types by default though your website might use more post types (custom post types). You can exclude all post types, including the default WordPress ones."
3728
  msgstr ""
3729
 
3730
+ #: classes/Views/Settings.php:1296
3731
  msgid "Exclude Custom Fields:"
3732
  msgstr ""
3733
 
3734
+ #: classes/Views/Settings.php:1312
3735
  msgid "You can use the * wildcard to exclude multiple matching custom fields. For example to exclude all custom fields starting with wp123 enter wp123*"
3736
  msgstr ""
3737
 
3738
+ #: classes/Views/Settings.php:1342
3739
  msgid "These settings are for advanced users."
3740
  msgstr ""
3741
 
3742
+ #: classes/Views/Settings.php:1343
3743
  msgid "If you have any questions <a href=\"https://wpactivitylog.com/contact/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=settings+pages\" target=\"_blank\">contact us</a>."
3744
  msgstr ""
3745
 
3746
+ #: classes/Views/Settings.php:1346
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3747
  msgid "Reset plugin settings to default"
3748
  msgstr ""
3749
 
3750
+ #: classes/Views/Settings.php:1347
3751
  msgid "Use this button to <em>factory reset</em> the plugin. This means that all the configured settings will be reset to default and all email notifications, scheduled reports, external database / third party services connections, archiving and mirroring rule will be deleted. NOTE: the activity log data will not be purged. Use the setting below to purge the activity log."
3752
  msgstr ""
3753
 
3754
+ #: classes/Views/Settings.php:1351
3755
  msgid "Reset Settings"
3756
  msgstr ""
3757
 
3758
+ #: classes/Views/Settings.php:1353
3759
  msgid "RESET"
3760
  msgstr ""
3761
 
3762
+ #: classes/Views/Settings.php:1359
3763
  msgid "Purge the WordPress activity log"
3764
  msgstr ""
3765
 
3766
+ #: classes/Views/Settings.php:1360
3767
  msgid "Click the Purge button below to delete all the data from the WordPress activity log and start afresh."
3768
  msgstr ""
3769
 
3770
+ #: classes/Views/Settings.php:1364
3771
  msgid "Purge Activity Log"
3772
  msgstr ""
3773
 
3774
+ #: classes/Views/Settings.php:1366
3775
  msgid "PURGE"
3776
  msgstr ""
3777
 
3778
+ #: classes/Views/Settings.php:1373
3779
  msgid "MainWP Child Site Stealth Mode"
3780
  msgstr ""
3781
 
3782
+ #: classes/Views/Settings.php:1374
3783
  msgid "This option is enabled automatically when the plugin detects the MainWP Child plugin on the site. When this setting is enabled plugin access is restricted to the administrator who installs the plugin, the plugin is not shown in the list of installed plugins and no admin notifications are shown. Disable this option to change the plugin to the default setup."
3784
  msgstr ""
3785
 
3786
+ #: classes/Views/Settings.php:1378
3787
  msgid "Enable MainWP Child Site Stealth Mode"
3788
  msgstr ""
3789
 
3790
+ #: classes/Views/Settings.php:1398
3791
  msgid "Admin blocking plugins support"
3792
  msgstr ""
3793
 
3794
+ #: classes/Views/Settings.php:1403
3795
  msgid "Enable early plugin loading on sites that use admin blocking plugins"
3796
  msgstr ""
3797
 
3798
+ #: classes/Views/Settings.php:1412
3799
  msgid "Do you want to delete the plugin data from the database upon uninstall?"
3800
  msgstr ""
3801
 
3802
+ #: classes/Views/Settings.php:1413
3803
  msgid "The plugin saves the activity log data and settings in the WordPress database. By default upon uninstalling the plugin the data is kept in the database so if it is installed again, you can still access the data. If the data is deleted it is not possible to recover it so you won't be able to access it again even when you reinstall the plugin."
3804
  msgstr ""
3805
 
3806
+ #: classes/Views/Settings.php:1417
3807
  msgid "Remove Data on Uninstall"
3808
  msgstr ""
3809
 
3810
+ #: classes/Views/Settings.php:1442
3811
  msgid "Are you sure you want to reset all the plugin settings to default? This action cannot be undone."
3812
  msgstr ""
3813
 
3814
+ #: classes/Views/Settings.php:1452
3815
  msgid "Are you sure you want to purge all the activity log data?"
3816
  msgstr ""
3817
 
3818
+ #: classes/Views/Settings.php:1476
3819
  msgid "MainWP Child plugin is not active on this website."
3820
  msgstr ""
3821
 
3822
+ #: classes/Views/Settings.php:1557
 
 
 
 
3823
  msgid "The specified value is not a valid URL!"
3824
  msgstr ""
3825
 
3826
+ #: classes/Views/Settings.php:1558
3827
  msgid "The specified value is not a valid post type!"
3828
  msgstr ""
3829
 
3830
+ #: classes/Views/Settings.php:1559
3831
  msgid "The specified value is not a valid IP address!"
3832
  msgstr ""
3833
 
3834
+ #: classes/Views/Settings.php:1560
3835
  msgid "The specified value is not a user nor a role!"
3836
  msgstr ""
3837
 
3838
+ #: classes/Views/Settings.php:1561
3839
  msgid "Filename cannot be added because it contains invalid characters."
3840
  msgstr ""
3841
 
3842
+ #: classes/Views/Settings.php:1562
3843
  msgid "File extension cannot be added because it contains invalid characters."
3844
  msgstr ""
3845
 
3846
+ #: classes/Views/Settings.php:1563
3847
  msgid "Directory cannot be added because it contains invalid characters."
3848
  msgstr ""
3849
 
3850
+ #: classes/Views/Settings.php:1564
3851
  msgid "Please save any changes before switching tabs."
3852
  msgstr ""
3853
 
3854
+ #: classes/Views/Settings.php:1692, classes/Views/Settings.php:1715
3855
  msgid "Nonce Verification Failed."
3856
  msgstr ""
3857
 
3858
+ #: classes/Views/Settings.php:1700
3859
  msgid "Plugin settings have been reset."
3860
  msgstr ""
3861
 
3862
+ #: classes/Views/Settings.php:1726
3863
  msgid "Reset query failed."
3864
  msgstr ""
3865
 
3866
+ #: classes/Views/Settings.php:1724
3867
  msgid "Tables has been reset."
3868
  msgstr ""
3869
 
3870
+ #: classes/Views/Settings.php:1739
3871
  msgid "Activity log retention"
3872
  msgstr ""
3873
 
3874
+ #: classes/Views/Settings.php:1745
3875
  msgid "Keep all data"
3876
  msgstr ""
3877
 
3878
+ #: classes/Views/Settings.php:1772
3879
  msgid "Delete events older than"
3880
  msgstr ""
3881
 
3882
+ #: classes/Views/Settings.php:1780
3883
  msgid "Months"
3884
  msgstr ""
3885
 
3886
+ #: classes/Views/Settings.php:1781
3887
  msgid "Years"
3888
  msgstr ""
3889
 
3890
+ #: classes/Views/Settings.php:1789
3891
  msgid "The next scheduled purging of activity log data that is older than "
3892
  msgstr ""
3893
 
3894
+ #: classes/Views/Settings.php:1796
3895
  msgid "You can run the purging process now by clicking the button below."
3896
  msgstr ""
3897
 
3898
+ #: classes/Views/Settings.php:1800
3899
  msgid "Purge Old Data"
3900
  msgstr ""
3901
 
4068
  msgid "Enable/Disable Events"
4069
  msgstr ""
4070
 
4071
+ #: classes/Views/ToggleAlerts.php:158
 
 
 
 
4072
  msgid "Basic"
4073
  msgstr ""
4074
 
4075
+ #: classes/Views/ToggleAlerts.php:159
4076
  msgid "Geek"
4077
  msgstr ""
4078
 
4079
+ #: classes/Views/ToggleAlerts.php:160
4080
  msgid "Custom"
4081
  msgstr ""
4082
 
4083
+ #: classes/Views/ToggleAlerts.php:179
4084
+ msgid "Log Level: "
4085
+ msgstr ""
4086
+
4087
+ #: classes/Views/ToggleAlerts.php:186
4088
  msgid "Use the Log level drop down menu above to use one of our preset log levels. Alternatively you can enable or disable any of the individual events from the below tabs. Refer to <a href=\"https://wpactivitylog.com/support/kb/list-wordpress-activity-log-event-ids/\" target=\"_blank\">the complete list of WordPress activity log event IDs</a> for reference on all the events the plugin can keep a log of."
4089
  msgstr ""
4090
 
4091
+ #: classes/Views/ToggleAlerts.php:196
4092
  msgid "Third party plugins"
4093
  msgstr ""
4094
 
4095
+ #: classes/Views/ToggleAlerts.php:296
4096
  msgid "Code"
4097
  msgstr ""
4098
 
4099
+ #: classes/Views/ToggleAlerts.php:339
4100
  msgid "Logins & Logouts"
4101
  msgstr ""
4102
 
4103
+ #: classes/Views/ToggleAlerts.php:332
4104
  msgid "Your website is a single site so the multisite events have been disabled."
4105
  msgstr ""
4106
 
4107
+ #: classes/Views/ToggleAlerts.php:312
4108
  msgid "The plugin WooCommerce is not installed on your website so these events have been disabled."
4109
  msgstr ""
4110
 
4111
+ #: classes/Views/ToggleAlerts.php:319
4112
  msgid "Products"
4113
  msgstr ""
4114
 
4115
+ #: classes/Views/ToggleAlerts.php:325
4116
  msgid "Post Changes"
4117
  msgstr ""
4118
 
4119
+ #: classes/Views/ToggleAlerts.php:305
4120
  msgid "<strong>Note:</strong> Post refers to any type of content, i.e. blog post, page or a post with a custom post type."
4121
  msgstr ""
4122
 
4123
+ #: classes/Views/ToggleAlerts.php:362
4124
  msgid "Not Implemented"
4125
  msgstr ""
4126
 
4127
+ #: classes/Views/ToggleAlerts.php:365
4128
  msgid "Not Available"
4129
  msgstr ""
4130
 
4131
+ #: classes/Views/ToggleAlerts.php:380
4132
+ msgid "User Logins/Logouts"
4133
+ msgstr ""
4134
+
4135
+ #: classes/Views/ToggleAlerts.php:383
4136
  msgid "User Sessions"
4137
  msgstr ""
4138
 
4139
+ #: classes/Views/ToggleAlerts.php:386
4140
  msgid "Files"
4141
  msgstr ""
4142
 
4143
+ #: classes/Views/ToggleAlerts.php:389
4144
  msgid "Post Settings"
4145
  msgstr ""
4146
 
4147
+ #: classes/Views/ToggleAlerts.php:459
 
 
 
 
4148
  msgid "Keep a log when a visitor registers a user on the website. Only enable this if you allow visitors to register as users on your website. User registration is disabled by default in WordPress."
4149
  msgstr ""
4150
 
4151
+ #: classes/Views/ToggleAlerts.php:473, classes/Views/ToggleAlerts.php:486
4152
  msgid "Number of login attempts to log. Enter 0 to log all failed login attempts. (By default the plugin only logs up to 10 failed login because the process can be very resource intensive in case of a brute force attack)"
4153
  msgstr ""
4154
 
4155
+ #: classes/Views/ToggleAlerts.php:501
4156
+ msgid "Keep a log of user log in activity on custom login forms (such as WooCommerce & membership plugins)"
4157
+ msgstr ""
4158
+
4159
+ #: classes/Views/ToggleAlerts.php:547
4160
  msgid "Save Changes"
4161
  msgstr ""
4162
 
4163
+ #: classes/Views/ToggleAlerts.php:554
4164
  msgid "Log Level Updated"
4165
  msgstr ""
4166
 
4167
  #. translators: Alerts log level.
4168
+ #: classes/Views/ToggleAlerts.php:558
4169
  msgid "The %s log level has been successfully loaded and applied."
4170
  msgstr ""
4171
 
4172
+ #: classes/Views/ToggleAlerts.php:562, extensions/email-notifications/classes/Notifications.php:292, extensions/email-notifications/classes/Notifications.php:882, extensions/email-notifications/classes/Notifications.php:1926
4173
  msgid "OK"
4174
  msgstr ""
4175
 
4176
+ #: classes/Views/ToggleAlerts.php:577
4177
  msgid "Enable File Integrity Scanner"
4178
  msgstr ""
4179
 
4180
+ #: classes/Views/ToggleAlerts.php:579
4181
  msgid "The file integrity scanner is switched off. To enable this event it has to be switched on."
4182
  msgstr ""
4183
 
4184
+ #: classes/Views/ToggleAlerts.php:583
4185
  msgid "SWITCH ON"
4186
  msgstr ""
4187
 
4188
+ #: classes/Views/ToggleAlerts.php:584
4189
  msgid "DISABLE EVENT"
4190
  msgstr ""
4191
 
4193
  msgid "An identical search filter already exists."
4194
  msgstr ""
4195
 
4196
+ #: extensions/search/search-init.php:218, extensions/search/search-init.php:292, extensions/user-sessions/classes/View/Sessions.php:313
4197
  msgid "Search"
4198
  msgstr ""
4199
 
4200
+ #: extensions/search/search-init.php:293
4201
  msgid "- Use the free-text search to search for text in the event's message.<br>- To search for a particular Event ID, user, IP address, Post ID or Type or use date ranges, use the filters."
4202
  msgstr ""
4203
 
4204
+ #: extensions/search/search-init.php:294
4205
  msgid "Clear Search Results"
4206
  msgstr ""
4207
 
4208
+ #: extensions/search/search-init.php:295
4209
  msgid "Nothing found!"
4210
  msgstr ""
4211
 
4212
+ #: extensions/search/search-init.php:296
4213
  msgid "Load"
4214
  msgstr ""
4215
 
4216
+ #: extensions/search/search-init.php:297
4217
  msgid "Loading..."
4218
  msgstr ""
4219
 
4220
+ #: extensions/search/search-init.php:298
4221
  msgid "Load & Run"
4222
  msgstr ""
4223
 
4224
+ #: extensions/search/search-init.php:299, extensions/email-notifications/classes/NotificationBuilder.php:76, extensions/email-notifications/classes/Notifications.php:1836, extensions/email-notifications/classes/Notifications.php:1899, extensions/email-notifications/classes/Notifications.php:1914, extensions/external-db/classes/Connections.php:144, extensions/external-db/classes/Mirroring.php:204
4225
  msgid "Delete"
4226
  msgstr ""
4227
 
4228
+ #: extensions/search/search-init.php:300, extensions/external-db/classes/Connections.php:556, extensions/external-db/classes/Mirroring.php:589
4229
  msgid "Deleting..."
4230
  msgstr ""
4231
 
4232
+ #: extensions/search/search-init.php:302, extensions/search/classes/FilterManager.php:383
4233
  msgid "Load Search & Filters"
4234
  msgstr ""
4235
 
4236
+ #: extensions/search/search-init.php:303
4237
  msgid "* Invalid IP"
4238
  msgstr ""
4239
 
4240
+ #: extensions/search/search-init.php:304, extensions/search/classes/FilterManager.php:386
4241
  msgid "Remove"
4242
  msgstr ""
4243
 
4244
+ #: extensions/search/search-init.php:305
4245
  msgid "Close Filters"
4246
  msgstr ""
4247
 
4248
+ #: extensions/search/search-init.php:306, extensions/search/classes/FilterManager.php:411
4249
  msgid "Filter View"
4250
  msgstr ""
4251
 
4252
  #. translators: both placeholders are html formatting strings for itallics
4253
+ #: extensions/search/search-init.php:309
4254
  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."
4255
  msgstr ""
4256
 
4257
+ #: extensions/search/search-init.php:355
4258
  msgid "Widget could not be found."
4259
  msgstr ""
4260
 
4261
+ #: extensions/search/search-init.php:426, extensions/search/search-init.php:496
4262
  msgid "No saved search found."
4263
  msgstr ""
4264
 
4265
+ #: extensions/search/search-init.php:418
4266
  msgid "Saved searches found."
4267
  msgstr ""
4268
 
4269
+ #: extensions/search/search-init.php:460
4270
  msgid "Search name not specified."
4271
  msgstr ""
4272
 
4273
+ #: extensions/search/search-init.php:487
4274
  msgid "Saved search not found."
4275
  msgstr ""
4276
 
4277
+ #: extensions/search/search-init.php:479
4278
  msgid "Saved search deleted."
4279
  msgstr ""
4280
 
4302
  msgid "Add notification"
4303
  msgstr ""
4304
 
4305
+ #: extensions/email-notifications/classes/AddNotification.php:217, extensions/email-notifications/classes/EditNotification.php:222
4306
  msgid "Back"
4307
  msgstr ""
4308
 
4309
+ #: extensions/email-notifications/classes/AddNotification.php:233
4310
  msgid "You have reached the maximum number of notifications you can add."
4311
  msgstr ""
4312
 
4319
  #. translators: Twilio settings hyperlink.
4320
  #. translators: Twilio settings hyperlink.
4321
  #. translators: Twilio settings hyperlink.
4322
+ #: extensions/email-notifications/classes/AddNotification.php:278, extensions/email-notifications/classes/EditNotification.php:330, extensions/email-notifications/classes/Notifications.php:816, extensions/email-notifications/classes/Notifications.php:930, extensions/email-notifications/classes/Notifications.php:1251, extensions/email-notifications/classes/Notifications.php:1415, extensions/email-notifications/classes/Notifications.php:1509, extensions/email-notifications/classes/Notifications.php:1675, extensions/email-notifications/classes/SMSProviderSettings.php:237
4323
  msgid "Click %s to configure Twilio integration for SMS notifications."
4324
  msgstr ""
4325
 
4326
+ #: extensions/email-notifications/classes/AddNotification.php:278, extensions/email-notifications/classes/EditNotification.php:330, extensions/email-notifications/classes/Notifications.php:816, extensions/email-notifications/classes/Notifications.php:930, extensions/email-notifications/classes/Notifications.php:1251, extensions/email-notifications/classes/Notifications.php:1415, extensions/email-notifications/classes/Notifications.php:1509, extensions/email-notifications/classes/Notifications.php:1675, extensions/email-notifications/classes/SMSProviderSettings.php:237
4327
  msgid "here"
4328
  msgstr ""
4329
 
4330
  #. translators: Trigger groups documentation hyperlink
4331
  #. translators: Trigger groups documentation hyperlink
4332
+ #: extensions/email-notifications/classes/AddNotification.php:286, extensions/email-notifications/classes/EditNotification.php:338
4333
  msgid "Trigger groups documentation"
4334
  msgstr ""
4335
 
4336
+ #: extensions/email-notifications/classes/AddNotification.php:291, extensions/email-notifications/classes/EditNotification.php:343
4337
  msgid "Triggers"
4338
  msgstr ""
4339
 
4340
+ #: extensions/email-notifications/classes/AddNotification.php:292, extensions/email-notifications/classes/EditNotification.php:344
4341
  msgid "Add Trigger"
4342
  msgstr ""
4343
 
4344
+ #: extensions/email-notifications/classes/AddNotification.php:306, extensions/email-notifications/classes/EditNotification.php:387
4345
  msgid "Use default email template"
4346
  msgstr ""
4347
 
4348
+ #: extensions/email-notifications/classes/AddNotification.php:311, extensions/email-notifications/classes/EditNotification.php:396
4349
  msgid "Use event specific email template"
4350
  msgstr ""
4351
 
4352
+ #: extensions/email-notifications/classes/AddNotification.php:336, extensions/email-notifications/classes/EditNotification.php:429, extensions/external-db/classes/Connections.php:95, extensions/external-db/classes/Mirroring.php:123
4353
  msgid "Name"
4354
  msgstr ""
4355
 
4356
+ #: extensions/email-notifications/classes/AddNotification.php:337, extensions/email-notifications/classes/EditNotification.php:430, extensions/email-notifications/classes/Notifications.php:1849, extensions/email-notifications/classes/Notifications.php:1860
4357
  msgid "Title"
4358
  msgstr ""
4359
 
4360
+ #: extensions/email-notifications/classes/AddNotification.php:345, extensions/email-notifications/classes/EditNotification.php:438, extensions/email-notifications/classes/Notifications.php:947, extensions/email-notifications/classes/Notifications.php:970, extensions/email-notifications/classes/Notifications.php:987, extensions/email-notifications/classes/Notifications.php:1011, extensions/email-notifications/classes/Notifications.php:1033, extensions/email-notifications/classes/Notifications.php:1046, extensions/email-notifications/classes/Notifications.php:1059, extensions/email-notifications/classes/Notifications.php:1072, extensions/email-notifications/classes/Notifications.php:1085, extensions/email-notifications/classes/Notifications.php:1098, extensions/email-notifications/classes/Notifications.php:1122, extensions/email-notifications/classes/Notifications.php:1137, extensions/email-notifications/classes/Notifications.php:1152, extensions/email-notifications/classes/Notifications.php:1167, extensions/email-notifications/classes/Notifications.php:1182, extensions/email-notifications/classes/Notifications.php:1204, extensions/email-notifications/classes/Notifications.php:1269, extensions/email-notifications/classes/Notifications.php:1284, extensions/email-notifications/classes/Notifications.php:1299, extensions/email-notifications/classes/Notifications.php:1323, extensions/email-notifications/classes/Notifications.php:1338, extensions/email-notifications/classes/Notifications.php:1353, extensions/email-notifications/classes/Notifications.php:1368, extensions/email-notifications/classes/Notifications.php:1430, extensions/email-notifications/classes/Notifications.php:1445, extensions/email-notifications/classes/Notifications.php:1460, extensions/email-notifications/classes/Notifications.php:1524, extensions/email-notifications/classes/Notifications.php:1541, extensions/email-notifications/classes/Notifications.php:1558, extensions/email-notifications/classes/Notifications.php:1575, extensions/email-notifications/classes/Notifications.php:1592, extensions/email-notifications/classes/Notifications.php:1609, extensions/email-notifications/classes/Notifications.php:1626, extensions/email-notifications/classes/Notifications.php:1692, extensions/email-notifications/classes/Notifications.php:1709, extensions/email-notifications/classes/Notifications.php:1726, extensions/email-notifications/classes/Notifications.php:1743, extensions/user-sessions/classes/View/Sessions.php:295
4361
  msgid "Email"
4362
  msgstr ""
4363
 
4364
+ #: extensions/email-notifications/classes/AddNotification.php:351, extensions/email-notifications/classes/EditNotification.php:444, extensions/email-notifications/classes/Notifications.php:973, extensions/email-notifications/classes/Notifications.php:990, extensions/email-notifications/classes/Notifications.php:1014, extensions/email-notifications/classes/Notifications.php:1036, extensions/email-notifications/classes/Notifications.php:1049, extensions/email-notifications/classes/Notifications.php:1062, extensions/email-notifications/classes/Notifications.php:1075, extensions/email-notifications/classes/Notifications.php:1088, extensions/email-notifications/classes/Notifications.php:1101, extensions/email-notifications/classes/Notifications.php:1125, extensions/email-notifications/classes/Notifications.php:1140, extensions/email-notifications/classes/Notifications.php:1155, extensions/email-notifications/classes/Notifications.php:1170, extensions/email-notifications/classes/Notifications.php:1185, extensions/email-notifications/classes/Notifications.php:1207, extensions/email-notifications/classes/Notifications.php:1272, extensions/email-notifications/classes/Notifications.php:1287, extensions/email-notifications/classes/Notifications.php:1302, extensions/email-notifications/classes/Notifications.php:1326, extensions/email-notifications/classes/Notifications.php:1341, extensions/email-notifications/classes/Notifications.php:1356, extensions/email-notifications/classes/Notifications.php:1371, 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:1527, extensions/email-notifications/classes/Notifications.php:1544, extensions/email-notifications/classes/Notifications.php:1561, extensions/email-notifications/classes/Notifications.php:1578, extensions/email-notifications/classes/Notifications.php:1595, extensions/email-notifications/classes/Notifications.php:1612, extensions/email-notifications/classes/Notifications.php:1629, extensions/email-notifications/classes/Notifications.php:1695, extensions/email-notifications/classes/Notifications.php:1712, extensions/email-notifications/classes/Notifications.php:1729, extensions/email-notifications/classes/Notifications.php:1746
4365
  msgid "Mobile Number"
4366
  msgstr ""
4367
 
4368
+ #: extensions/email-notifications/classes/Common.php:359, extensions/email-notifications/classes/Common.php:424
4369
  msgid "The form is not valid. Please reload the page and try again."
4370
  msgstr ""
4371
 
4372
  #. translators: Event type
4373
+ #: extensions/email-notifications/classes/Common.php:561, extensions/email-notifications/classes/Common.php:551, extensions/email-notifications/classes/Common.php:537, extensions/email-notifications/classes/Common.php:524, extensions/email-notifications/classes/Common.php:501, extensions/email-notifications/classes/Common.php:481, extensions/email-notifications/classes/Common.php:402
4374
  msgid "%s is not valid"
4375
  msgstr ""
4376
 
4377
+ #: extensions/email-notifications/classes/Common.php:567
4378
  msgid "Selected TYPE is not valid."
4379
  msgstr ""
4380
 
4381
+ #: extensions/email-notifications/classes/Common.php:557
4382
  msgid "Selected OBJECT is not valid."
4383
  msgstr ""
4384
 
4385
+ #: extensions/email-notifications/classes/Common.php:546
4386
  msgid "Selected POST STATUS is not valid."
4387
  msgstr ""
4388
 
4389
+ #: extensions/email-notifications/classes/Common.php:533
4390
  msgid "Selected POST TYPE is not valid."
4391
  msgstr ""
4392
 
4393
+ #: extensions/email-notifications/classes/Common.php:512
4394
  msgid "The enviroment is not multisite."
4395
  msgstr ""
4396
 
4397
+ #: extensions/email-notifications/classes/Common.php:518, extensions/email-notifications/classes/Common.php:495
4398
  msgid "%s was not found"
4399
  msgstr ""
4400
 
4401
+ #: extensions/email-notifications/classes/Common.php:468, extensions/email-notifications/classes/Common.php:474
4402
  msgid "TIME is not valid."
4403
  msgstr ""
4404
 
4405
+ #: extensions/email-notifications/classes/Common.php:459
4406
  msgid "DATE is not valid."
4407
  msgstr ""
4408
 
4409
+ #: extensions/email-notifications/classes/Common.php:418
4410
  msgid "The SOURCE IP is not valid. Maximum of 15 characters allowed."
4411
  msgstr ""
4412
 
4413
+ #: extensions/email-notifications/classes/Common.php:433
4414
  msgid "The SOURCE IP is not valid."
4415
  msgstr ""
4416
 
4417
+ #: extensions/email-notifications/classes/Common.php:442
4418
  msgid "The SOURCE IP fragment is not valid."
4419
  msgstr ""
4420
 
4421
+ #: extensions/email-notifications/classes/Common.php:411
4422
  msgid "Selected USER ROLE is not valid."
4423
  msgstr ""
4424
 
4425
+ #: extensions/email-notifications/classes/Common.php:392
4426
  msgid "The USERNAME is not valid. Maximum of 50 characters allowed."
4427
  msgstr ""
4428
 
4429
+ #: extensions/email-notifications/classes/Common.php:398
4430
  msgid "The USERNAME does not exist."
4431
  msgstr ""
4432
 
4433
+ #: extensions/email-notifications/classes/Common.php:370, extensions/email-notifications/classes/Common.php:385
4434
  msgid "The EVENT ID is not valid."
4435
  msgstr ""
4436
 
4437
+ #: extensions/email-notifications/classes/Common.php:376
4438
  msgid "Internal Error. Please reload the page and try again."
4439
  msgstr ""
4440
 
4441
+ #: extensions/email-notifications/classes/Common.php:792, extensions/email-notifications/classes/Common.php:820, extensions/email-notifications/classes/Common.php:822
4442
  msgid "Title is required."
4443
  msgstr ""
4444
 
4445
+ #: extensions/email-notifications/classes/Common.php:829
4446
  msgid "Title is not valid."
4447
  msgstr ""
4448
 
4449
+ #: extensions/email-notifications/classes/Common.php:839
4450
  msgid "Please add at least one condition."
4451
  msgstr ""
4452
 
4453
+ #: extensions/email-notifications/classes/Common.php:887, extensions/email-notifications/classes/Common.php:893, extensions/email-notifications/classes/Common.php:898
4454
  msgid "The form is not valid. Please refresh the page and try again."
4455
  msgstr ""
4456
 
4457
+ #: extensions/email-notifications/classes/Common.php:907
4458
  msgid "A trigger's condition must not be longer than 50 characters."
4459
  msgstr ""
4460
 
4461
+ #: extensions/email-notifications/classes/Common.php:943
4462
  msgid "Email or Username is not valid."
4463
  msgstr ""
4464
 
4465
+ #: extensions/email-notifications/classes/Common.php:950
4466
  msgid "Mobile number is not valid."
4467
  msgstr ""
4468
 
4469
+ #: extensions/email-notifications/classes/Common.php:937
4470
  msgid "Email or Username is required."
4471
  msgstr ""
4472
 
4473
+ #: extensions/email-notifications/classes/Common.php:938
4474
  msgid "Mobile number is required."
4475
  msgstr ""
4476
 
4477
+ #: extensions/email-notifications/classes/Common.php:1002, extensions/email-notifications/classes/Notifications.php:582
4478
  msgid "Notification could not be saved."
4479
  msgstr ""
4480
 
4481
+ #: extensions/email-notifications/classes/Common.php:1009, extensions/email-notifications/classes/Notifications.php:641
4482
  msgid "Notification successfully saved."
4483
  msgstr ""
4484
 
4485
+ #: extensions/email-notifications/classes/Common.php:1087, extensions/email-notifications/classes/Common.php:1150
4486
  msgid "Notification {title} on website {site} triggered"
4487
  msgstr ""
4488
 
4489
+ #: extensions/email-notifications/classes/Common.php:1088, extensions/email-notifications/classes/Common.php:1151
4490
  msgid "Notification <strong>{title}</strong> was triggered. Below are the notification details:"
4491
  msgstr ""
4492
 
4493
+ #: extensions/email-notifications/classes/Common.php:1090
4494
  msgid "Website"
4495
  msgstr ""
4496
 
4497
+ #: extensions/email-notifications/classes/Common.php:1092, extensions/email-notifications/classes/Common.php:1154, extensions/search/classes/FilterManager.php:474, extensions/user-sessions/classes/View/Sessions.php:140, extensions/user-sessions/classes/View/Sessions.php:294
4498
  msgid "Username"
4499
  msgstr ""
4500
 
4501
+ #: extensions/email-notifications/classes/Common.php:1093
4502
  msgid "User role"
4503
  msgstr ""
4504
 
4505
+ #: extensions/email-notifications/classes/Common.php:1094
4506
  msgid "IP address"
4507
  msgstr ""
4508
 
4509
+ #: extensions/email-notifications/classes/Common.php:1097
4510
  msgid "Event Message"
4511
  msgstr ""
4512
 
4513
+ #: extensions/email-notifications/classes/Common.php:1098
4514
  msgid "Event generated on"
4515
  msgstr ""
4516
 
4517
+ #: extensions/email-notifications/classes/Common.php:1100
4518
  msgid "These email notifications are sent with <a href=\"http://wpactivitylog.com\">WP Activity Log</a>, the most comprehensive WordPress activity log plugin solution."
4519
  msgstr ""
4520
 
4521
+ #: extensions/email-notifications/classes/Common.php:1123, extensions/email-notifications/classes/Common.php:1183
4522
  msgid "User/Role"
4523
  msgstr ""
4524
 
4525
+ #: extensions/email-notifications/classes/Common.php:1155, extensions/search/classes/FilterManager.php:486, extensions/search/classes/Filters/userrolefilter.php:49, extensions/search/classes/Filters/userrolefilter.php:87, extensions/user-sessions/classes/View/Sessions.php:299
4526
  msgid "User Role"
4527
  msgstr ""
4528
 
4529
+ #: extensions/email-notifications/classes/Common.php:1157
4530
  msgid "Generated On"
4531
  msgstr ""
4532
 
4533
+ #: extensions/email-notifications/classes/Common.php:1159
4534
  msgid "Monitoring of WordPress and Email Notifications provided by <a href=\"http://wpactivitylog.com\">WP Activity Log, WordPress most comprehensive audit trail plugin</a>."
4535
  msgstr ""
4536
 
4537
+ #: extensions/email-notifications/classes/Common.php:1184
4538
  msgid "Event"
4539
  msgstr ""
4540
 
4541
+ #: extensions/email-notifications/classes/Common.php:1199
4542
  msgid "Subject "
4543
  msgstr ""
4544
 
4545
+ #: extensions/email-notifications/classes/Common.php:1208
4546
  msgid "Body "
4547
  msgstr ""
4548
 
4549
+ #: extensions/email-notifications/classes/Common.php:1211
4550
  msgid "HTML is accepted. Available template tags:"
4551
  msgstr ""
4552
 
4585
  msgid "Edit Notification"
4586
  msgstr ""
4587
 
4588
+ #: extensions/email-notifications/classes/EditNotification.php:221, extensions/email-notifications/classes/Notifications.php:1798
4589
  msgid "Add New"
4590
  msgstr ""
4591
 
4592
+ #: extensions/email-notifications/classes/EditNotification.php:252
4593
  msgid "You do not have sufficient permissions to access this page. - INVALID NOTIFICATION ID"
4594
  msgstr ""
4595
 
4596
+ #: extensions/email-notifications/classes/EditNotification.php:448
4597
  msgid "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 (,)."
4598
  msgstr ""
4599
 
4932
  msgid "Search Notifications"
4933
  msgstr ""
4934
 
4935
+ #: extensions/email-notifications/classes/Notifications.php:1811, extensions/reports/classes/HtmlReportGenerator.php:148, extensions/reports/classes/HtmlReportGenerator.php:152, extensions/user-sessions/classes/View/Options/Policies.php:24
4936
  msgid "All"
4937
  msgstr ""
4938
 
4952
  msgid "Apply"
4953
  msgstr ""
4954
 
4955
+ #: extensions/email-notifications/classes/Notifications.php:1846, extensions/email-notifications/classes/Notifications.php:1857, extensions/reports/inc/wsal-reporting-view.inc.php:744
4956
  msgid "Select All"
4957
  msgstr ""
4958
 
5118
  msgid "Unknown notification."
5119
  msgstr ""
5120
 
 
 
 
 
 
 
 
 
 
 
 
 
5121
  #: extensions/email-notifications/classes/SMSProviderSettings.php:118
5122
  msgid "SMS Provider"
5123
  msgstr ""
5472
  msgstr ""
5473
 
5474
  #: extensions/external-db/classes/Connections.php:564, extensions/external-db/classes/Mirroring.php:600
5475
+ msgid "Configure and create connection"
5476
  msgstr ""
5477
 
5478
  #: extensions/external-db/classes/Connections.php:725
5535
  msgid "The WordPress activity log is currently being mirrored to:"
5536
  msgstr ""
5537
 
5538
+ #: extensions/external-db/classes/Mirroring.php:125, extensions/external-db/classes/Mirroring.php:397, extensions/reports/inc/wsal-reporting-view.inc.php:1432
5539
  msgid "Frequency"
5540
  msgstr ""
5541
 
5692
  msgid "Are you sure that you want to delete this mirror?"
5693
  msgstr ""
5694
 
5695
+ #: extensions/external-db/classes/Mirroring.php:599, extensions/reports/inc/wsal-reporting-view.inc.php:996
5696
  msgid "Select Event Code(s)"
5697
  msgstr ""
5698
 
5892
  msgid "Mirror not found."
5893
  msgstr ""
5894
 
5895
+ #: extensions/reports/classes/Common.php:562, extensions/reports/classes/Common.php:557
5896
  msgid "Internal error. <code>%s</code> key was not found."
5897
  msgstr ""
5898
 
5899
+ #: extensions/reports/classes/Common.php:589, extensions/reports/classes/Common.php:1417
5900
  msgid "Please specify at least one Alert Group or specify an Alert Code."
5901
  msgstr ""
5902
 
5903
+ #: extensions/reports/classes/Common.php:594
5904
  msgid "Internal Error: Could not detect the type of the report to generate."
5905
  msgstr ""
5906
 
5907
+ #: extensions/reports/classes/Common.php:704, extensions/reports/classes/Common.php:738, extensions/reports/classes/Common.php:786, extensions/reports/classes/Common.php:804, extensions/reports/classes/Common.php:1617
5908
  msgid "There are no alerts that match your filtering criteria. Please try a different set of rules."
5909
  msgstr ""
5910
 
5911
+ #: extensions/reports/classes/Common.php:789, extensions/reports/classes/Common.php:807, extensions/reports/classes/Common.php:1620
5912
  msgid "Error: The <strong>%s</strong> path is not accessible."
5913
  msgstr ""
5914
 
5915
+ #: extensions/reports/classes/Common.php:1071, extensions/reports/classes/Common.php:1518
5916
  msgid "%1$s - Website %2$s"
5917
  msgstr ""
5918
 
5919
+ #: extensions/reports/classes/Common.php:1074, extensions/reports/classes/Common.php:1521
5920
  msgid "Week number %1$s - Website %2$s"
5921
  msgstr ""
5922
 
5923
+ #: extensions/reports/classes/Common.php:1077, extensions/reports/classes/Common.php:1524
5924
  msgid "Month %1$s %2$s- Website %3$s"
5925
  msgstr ""
5926
 
5927
+ #: extensions/reports/classes/Common.php:1080, extensions/reports/classes/Common.php:1527
5928
  msgid "Quarter %1$s - Website %2$s"
5929
  msgstr ""
5930
 
5931
+ #: extensions/reports/classes/Common.php:1095, extensions/reports/classes/Common.php:1536
5932
  msgid " - %s Email Report"
5933
  msgstr ""
5934
 
5935
+ #: extensions/reports/classes/Common.php:1389
5936
  msgid "Internal Error. Could not retrieve the alerts from the main plugin."
5937
  msgstr ""
5938
 
5939
+ #: extensions/reports/classes/HtmlReportGenerator.php:83, extensions/reports/classes/HtmlReportGenerator.php:331
5940
  msgid "WP Activity Log Reporter"
5941
  msgstr ""
5942
 
5943
+ #: extensions/reports/classes/HtmlReportGenerator.php:116
5944
  msgid "Report from"
5945
  msgstr ""
5946
 
5947
+ #: extensions/reports/classes/HtmlReportGenerator.php:116
5948
  msgid "website"
5949
  msgstr ""
5950
 
5951
+ #: extensions/reports/classes/HtmlReportGenerator.php:123, extensions/reports/classes/HtmlReportGenerator.php:340
5952
  msgid "Report Details:"
5953
  msgstr ""
5954
 
5955
+ #: extensions/reports/classes/HtmlReportGenerator.php:124, extensions/reports/classes/HtmlReportGenerator.php:341
5956
  msgid "Generated on:"
5957
  msgstr ""
5958
 
5959
+ #: extensions/reports/classes/HtmlReportGenerator.php:125, extensions/reports/classes/HtmlReportGenerator.php:342
5960
  msgid "Generated by:"
5961
  msgstr ""
5962
 
5963
+ #: extensions/reports/classes/HtmlReportGenerator.php:131
5964
  msgid "Site(s)"
5965
  msgstr ""
5966
 
5967
+ #: extensions/reports/classes/HtmlReportGenerator.php:132
5968
  msgid "User(s)"
5969
  msgstr ""
5970
 
5971
+ #: extensions/reports/classes/HtmlReportGenerator.php:133
5972
  msgid "Role(s)"
5973
  msgstr ""
5974
 
5975
+ #: extensions/reports/classes/HtmlReportGenerator.php:134
5976
  msgid "IP address(es)"
5977
  msgstr ""
5978
 
5979
+ #: extensions/reports/classes/HtmlReportGenerator.php:135
5980
  msgid "Alert Groups"
5981
  msgstr ""
5982
 
5983
+ #: extensions/reports/classes/HtmlReportGenerator.php:136, extensions/reports/classes/HtmlReportGenerator.php:346
5984
  msgid "Alert Code(s)"
5985
  msgstr ""
5986
 
5987
+ #: extensions/reports/classes/HtmlReportGenerator.php:137, extensions/reports/classes/HtmlReportGenerator.php:347
5988
  msgid "Start date"
5989
  msgstr ""
5990
 
5991
+ #: extensions/reports/classes/HtmlReportGenerator.php:138, extensions/reports/classes/HtmlReportGenerator.php:348
5992
  msgid "End date"
5993
  msgstr ""
5994
 
5995
+ #: extensions/reports/classes/HtmlReportGenerator.php:139
5996
  msgid "Post Types"
5997
  msgstr ""
5998
 
5999
+ #: extensions/reports/classes/HtmlReportGenerator.php:140, extensions/reports/inc/wsal-reporting-view.inc.php:778, extensions/search/classes/FilterManager.php:494, extensions/search/classes/Filters/poststatusfilter.php:47, extensions/search/classes/Filters/poststatusfilter.php:82
6000
  msgid "Post Status"
6001
  msgstr ""
6002
 
6003
+ #: extensions/reports/classes/HtmlReportGenerator.php:149, extensions/reports/classes/HtmlReportGenerator.php:317
6004
  msgid "From the beginning"
6005
  msgstr ""
6006
 
6007
+ #: extensions/reports/classes/HtmlReportGenerator.php:194, extensions/reports/classes/HtmlReportGenerator.php:343
6008
  msgid "Criteria"
6009
  msgstr ""
6010
 
6011
+ #: extensions/reports/classes/HtmlReportGenerator.php:359
6012
  msgid "Results"
6013
  msgstr ""
6014
 
6015
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:197
6016
  msgid "Invalid Request. Please refresh the page and try again."
6017
  msgstr ""
6018
 
6019
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:210
6020
  msgid "Error (TODO - error message): Please select SITES"
6021
  msgstr ""
6022
 
6023
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:231
6024
  msgid "Error (TODO - error message): Please select USERS"
6025
  msgstr ""
6026
 
6027
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:273
6028
  msgid "Error: Please select at least one role"
6029
  msgstr ""
6030
 
6031
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:320
6032
  msgid "Error: Please select at least one IP address"
6033
  msgstr ""
6034
 
6035
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:338
6036
  msgid "Error: Please select at least one object"
6037
  msgstr ""
6038
 
6039
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:355
6040
  msgid "Error: Please select at least one event object"
6041
  msgstr ""
6042
 
6043
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:440
6044
  msgid "Please select the report format."
6045
  msgstr ""
6046
 
6047
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:499
6048
  msgid "Periodic Report successfully saved."
6049
  msgstr ""
6050
 
6051
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:462, extensions/reports/inc/wsal-reporting-view.inc.php:518
6052
+ msgid "Loading"
6053
  msgstr ""
6054
 
6055
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:463, extensions/reports/inc/wsal-reporting-view.inc.php:519
6056
+ msgid " Generating report. Please do not close this window."
6057
+ msgstr ""
6058
+
6059
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:467, extensions/reports/inc/wsal-reporting-view.inc.php:523
6060
+ msgid "Searching events, "
6061
+ msgstr ""
6062
+
6063
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:467, extensions/reports/inc/wsal-reporting-view.inc.php:523
6064
+ msgid " currently found."
6065
+ msgstr ""
6066
+
6067
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:545
6068
  msgid "Periodic Report successfully Deleted."
6069
  msgstr ""
6070
 
6071
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:576
6072
  msgid "Generate & Configure Periodic Reports"
6073
  msgstr ""
6074
 
6075
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:577
6076
  msgid "Statistics Reports"
6077
  msgstr ""
6078
 
6079
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:597
6080
  msgid "Generate a report"
6081
  msgstr ""
6082
 
6083
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:600
6084
  msgid "Step 1: Select the type of report"
6085
  msgstr ""
6086
 
6087
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:606
6088
  msgid "By Site(s)"
6089
  msgstr ""
6090
 
6091
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:614
6092
  msgid "Specify sites"
6093
  msgstr ""
6094
 
6095
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:622
6096
  msgid "By User(s)"
6097
  msgstr ""
6098
 
6099
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:626
6100
  msgid "All Users"
6101
  msgstr ""
6102
 
6103
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:630
6104
  msgid "Specify users"
6105
  msgstr ""
6106
 
6107
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:654
6108
  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."
6109
  msgstr ""
6110
 
6111
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:659
6112
  msgid "Enable Autocomplete"
6113
  msgstr ""
6114
 
6115
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:668
6116
  msgid "By Role(s)"
6117
  msgstr ""
6118
 
6119
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:672
6120
  msgid "All Roles"
6121
  msgstr ""
6122
 
6123
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:676
6124
  msgid "Specify roles"
6125
  msgstr ""
6126
 
6127
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:684
6128
  msgid "By IP Address(es)"
6129
  msgstr ""
6130
 
6131
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:688
6132
  msgid "All IP Addresses"
6133
  msgstr ""
6134
 
6135
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:692
6136
  msgid "Specify IP Addresses"
6137
  msgstr ""
6138
 
6139
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:700
6140
  msgid "By Object(s)"
6141
  msgstr ""
6142
 
6143
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:704
6144
  msgid "All Objects"
6145
  msgstr ""
6146
 
6147
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:708
6148
  msgid "Specify Objects"
6149
  msgstr ""
6150
 
6151
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:716
6152
  msgid "By Event Type(s)"
6153
  msgstr ""
6154
 
6155
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:720
6156
  msgid "All Event Types"
6157
  msgstr ""
6158
 
6159
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:724
6160
  msgid "Specify Event Types"
6161
  msgstr ""
6162
 
6163
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:732
6164
  msgid "By Event Code(s)"
6165
  msgstr ""
6166
 
6167
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:764
6168
  msgid "Posts"
6169
  msgstr ""
6170
 
6171
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:770, extensions/search/classes/FilterManager.php:498, extensions/search/classes/Filters/posttypefilter.php:85
6172
  msgid "Post Type"
6173
  msgstr ""
6174
 
6175
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:792
6176
  msgid "Specify Event Codes"
6177
  msgstr ""
6178
 
6179
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:800
6180
  msgid "By the Below Criteria"
6181
  msgstr ""
6182
 
6183
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:805
6184
  msgid "Number & List of unique IP addresses per user"
6185
  msgstr ""
6186
 
6187
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:810
6188
  msgid "Number of Logins per user"
6189
  msgstr ""
6190
 
6191
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:844
6192
  msgid "Select site(s)"
6193
  msgstr ""
6194
 
6195
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:866
6196
  msgid "Select user(s)"
6197
  msgstr ""
6198
 
6199
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:908
6200
  msgid "Select role(s)"
6201
  msgstr ""
6202
 
6203
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:930
6204
  msgid "Select IP address(es)"
6205
  msgstr ""
6206
 
6207
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:952
6208
  msgid "Select Objects(s)"
6209
  msgstr ""
6210
 
6211
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:974
6212
  msgid "Select Type(s)"
6213
  msgstr ""
6214
 
6215
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1026
6216
  msgid "Select Post Type(s)"
6217
  msgstr ""
6218
 
6219
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1056
6220
  msgid "Select Post Status(es)"
6221
  msgstr ""
6222
 
6223
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1359
6224
  msgid "Step 2: Select the date range"
6225
  msgstr ""
6226
 
6227
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1361
6228
  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."
6229
  msgstr ""
6230
 
6231
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1366
6232
  msgid "Start Date"
6233
  msgstr ""
6234
 
6235
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1369, extensions/reports/inc/wsal-reporting-view.inc.php:1508
6236
  msgid "Select start date"
6237
  msgstr ""
6238
 
6239
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1375
6240
  msgid "End Date"
6241
  msgstr ""
6242
 
6243
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1378, extensions/reports/inc/wsal-reporting-view.inc.php:1517
6244
  msgid "Select end date"
6245
  msgstr ""
6246
 
6247
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1392, extensions/reports/inc/wsal-reporting-view.inc.php:1601
6248
  msgid "Step 3: Select Report Format"
6249
  msgstr ""
6250
 
6251
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1399, extensions/reports/inc/wsal-reporting-view.inc.php:1607
6252
  msgid "HTML"
6253
  msgstr ""
6254
 
6255
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1404, extensions/reports/inc/wsal-reporting-view.inc.php:1611
6256
  msgid "CSV"
6257
  msgstr ""
6258
 
6259
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1411
6260
  msgid "Step 4: Generate Report Now or Configure Periodic Reports"
6261
  msgstr ""
6262
 
6263
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1414
6264
  msgid "Generate Report Now"
6265
  msgstr ""
6266
 
6267
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1417
6268
  msgid " Use the buttons below to use the above criteria for a daily, weekly and monthly summary report which is sent automatically via email."
6269
  msgstr ""
6270
 
6271
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1420
6272
  msgid "Email address(es)"
6273
  msgstr ""
6274
 
6275
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1426
6276
  msgid "Report Name"
6277
  msgstr ""
6278
 
6279
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1434
6280
  msgid "Daily"
6281
  msgstr ""
6282
 
6283
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1435
6284
  msgid "Weekly"
6285
  msgstr ""
6286
 
6287
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1436
6288
  msgid "Monthly"
6289
  msgstr ""
6290
 
6291
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1437
6292
  msgid "Quarterly"
6293
  msgstr ""
6294
 
6295
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1450
6296
  msgid "Configured Periodic Reports"
6297
  msgstr ""
6298
 
6299
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1453
6300
  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."
6301
  msgstr ""
6302
 
6303
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1456
6304
  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."
6305
  msgstr ""
6306
 
6307
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1501
6308
  msgid "Step 1: Choose Date Range"
6309
  msgstr ""
6310
 
6311
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1505, extensions/search/classes/Filters/DateFilter.php:55
6312
  msgid "From"
6313
  msgstr ""
6314
 
6315
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1514
6316
  msgid "To"
6317
  msgstr ""
6318
 
6319
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1530
6320
  msgid "Step 2: Choose Criteria"
6321
  msgstr ""
6322
 
6323
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1533
6324
  msgid "Report for"
6325
  msgstr ""
6326
 
6327
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1538
6328
  msgid "Number of logins for user"
6329
  msgstr ""
6330
 
6331
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1543
6332
  msgid "Number of logins for users with the role of"
6333
  msgstr ""
6334
 
6335
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1548
6336
  msgid "Number of views for user"
6337
  msgstr ""
6338
 
6339
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1553
6340
  msgid "Number of views for users with the role of"
6341
  msgstr ""
6342
 
6343
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1558
6344
  msgid "Number of published content for user"
6345
  msgstr ""
6346
 
6347
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1563
6348
  msgid "Number of published content for users with the role of"
6349
  msgstr ""
6350
 
6351
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1568
6352
  msgid "Different IP addresses for Usernames"
6353
  msgstr ""
6354
 
6355
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1573
6356
  msgid "List only IP addresses used during login"
6357
  msgstr ""
6358
 
6359
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1575
6360
  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."
6361
  msgstr ""
6362
 
6363
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1634
6364
  msgid "Please specify at least one site"
6365
  msgstr ""
6366
 
6367
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1643
6368
  msgid "Please specify at least one user"
6369
  msgstr ""
6370
 
6371
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1652
6372
  msgid "Please specify at least one role"
6373
  msgstr ""
6374
 
6375
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1661
6376
  msgid "Please specify at least one IP address"
6377
  msgstr ""
6378
 
6379
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1670
6380
  msgid "Please specify at least one object"
6381
  msgstr ""
6382
 
6383
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1679
6384
  msgid "Please specify at least one event type"
6385
  msgstr ""
6386
 
6387
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1688
6388
  msgid "Please specify at least one Alert group or specify an Alert code"
6389
  msgstr ""
6390
 
6436
  msgid "Filter by username"
6437
  msgstr ""
6438
 
6439
+ #: extensions/search/classes/FilterManager.php:478, extensions/user-sessions/classes/View/Sessions.php:296
6440
  msgid "First Name"
6441
  msgstr ""
6442
 
6444
  msgid "Filter by user first name"
6445
  msgstr ""
6446
 
6447
+ #: extensions/search/classes/FilterManager.php:482, extensions/user-sessions/classes/View/Sessions.php:297
6448
  msgid "Last Name"
6449
  msgstr ""
6450
 
6512
  msgid "Logged In Users"
6513
  msgstr ""
6514
 
6515
+ #: extensions/user-sessions/classes/Views.php:187
6516
  msgid "Logging out..."
6517
  msgstr ""
6518
 
6519
+ #: extensions/user-sessions/classes/Views.php:188
6520
  msgid "Refreshing..."
6521
  msgstr ""
6522
 
6523
+ #: extensions/user-sessions/classes/Views.php:189
6524
  msgid "This could result in loss of unsaved work. Are you sure?"
6525
  msgstr ""
6526
 
6527
  #. translators: %s: Total number of users
6528
+ #: extensions/user-sessions/classes/Views.php:191
6529
+ msgid "out of %s user sessions terminated."
6530
  msgstr ""
6531
 
6532
+ #: extensions/user-sessions/classes/Views.php:193, extensions/user-sessions/classes/View/Sessions.php:80
6533
  msgid "Retrieve user data"
6534
  msgstr ""
6535
 
6536
+ #: extensions/user-sessions/classes/Views.php:194
6537
  msgid "Retrieving data"
6538
  msgstr ""
6539
 
6540
+ #: extensions/user-sessions/classes/Views.php:195
6541
  msgid "Data retrieved"
6542
  msgstr ""
6543
 
6544
+ #: extensions/user-sessions/classes/Views.php:196
6545
  msgid "Event ID: "
6546
  msgstr ""
6547
 
6548
+ #: extensions/user-sessions/classes/Views.php:197
6549
  msgid "Object: "
6550
  msgstr ""
6551
 
6552
+ #: extensions/user-sessions/classes/Views.php:198
6553
  msgid "Event Type: "
6554
  msgstr ""
6555
 
6556
+ #: extensions/user-sessions/classes/Views.php:259
6557
  msgid "Terminate all logged in sessions"
6558
  msgstr ""
6559
 
6560
+ #: extensions/user-sessions/classes/Views.php:260
6561
  msgid "This will terminate all users' sessions including yours, which could result in unsaved work. Do you like to proceed?"
6562
  msgstr ""
6563
 
6564
+ #: extensions/user-sessions/classes/Views.php:271
6565
  msgid "YES"
6566
  msgstr ""
6567
 
6568
+ #: extensions/user-sessions/classes/Views.php:272
6569
  msgid "NO"
6570
  msgstr ""
6571
 
6572
+ #: extensions/user-sessions/classes/Views.php:284
6573
  msgid "Terminate All Sessions"
6574
  msgstr ""
6575
 
6576
+ #: extensions/user-sessions/classes/Views.php:404
6577
  msgid "Users sessions termination is in progress. Please wait..."
6578
  msgstr ""
6579
 
6580
+ #: extensions/user-sessions/classes/Views.php:431, extensions/reports/classes/Views/Main.php:692
6581
  msgid "You do not have sufficient permissions."
6582
  msgstr ""
6583
 
6584
+ #: extensions/user-sessions/classes/Views.php:457
6585
  msgid "No sessions."
6586
  msgstr ""
6587
 
6588
+ #: extensions/user-sessions/classes/Views.php:482
6589
  msgid "Session destroyed."
6590
  msgstr ""
6591
 
6592
+ #: extensions/user-sessions/classes/Views.php:490
6593
  msgid "User session data is not set."
6594
  msgstr ""
6595
 
6596
+ #: extensions/user-sessions/classes/Views.php:506, extensions/user-sessions/classes/Views.php:580
6597
  msgid "User do not have sufficient permissions."
6598
  msgstr ""
6599
 
6600
+ #: extensions/user-sessions/classes/Views.php:559
 
 
 
 
6601
  msgid "Sessions destroyed!"
6602
  msgstr ""
6603
 
6604
+ #: extensions/user-sessions/classes/Views.php:590
6605
  msgid "Nonce check failed."
6606
  msgstr ""
6607
 
6613
  msgid "Reports"
6614
  msgstr ""
6615
 
6616
+ #: extensions/reports/classes/Views/Main.php:203
6617
+ msgid "Process completed."
6618
  msgstr ""
6619
 
6620
+ #: extensions/reports/classes/Views/Main.php:206
6621
+ msgid "There are no alerts that match your filtering criteria."
6622
+ msgstr ""
6623
+
6624
+ #: extensions/reports/classes/Views/Main.php:617
6625
+ msgid " Generating reports. Please do not close this window."
6626
+ msgstr ""
6627
+
6628
+ #: extensions/reports/classes/Views/Main.php:630
6629
  msgid "To generate a report or configure automated scheduled report please contact the administrator of this multisite network on "
6630
  msgstr ""
6631
 
6632
+ #: extensions/reports/classes/Views/Main.php:648
6633
  msgid "The %s directory which the Reports plugin uses to create reports in was either not found or is not accessible."
6634
  msgstr ""
6635
 
6636
+ #: extensions/reports/classes/Views/Main.php:652
6637
  msgid "In order for the plugin to function, the directory %1$s must be created and the plugin should have access to write to this directory, so please configure the following permissions: 0755. If you have any questions or need further assistance please %2$s"
6638
  msgstr ""
6639
 
6705
  msgid "Select a user role to filter"
6706
  msgstr ""
6707
 
6708
+ #: extensions/user-sessions/classes/Sensors/UserSessionsTracking.php:307, extensions/user-sessions/classes/View/Options/Policies.php:234
6709
  msgid "ERROR: Your session was blocked with the <a href=\"https://en-gb.wordpress.org/plugins/wp-security-audit-log\" target=\"_blank\">WP Activity Log plugin</a> because there is already another user logged in with the same username. Please contact the site administrator for more information."
6710
  msgstr ""
6711
 
6717
  msgid "User Session Options"
6718
  msgstr ""
6719
 
6720
+ #: extensions/user-sessions/classes/View/Sessions.php:120
6721
  msgid "Showing results for "
6722
  msgstr ""
6723
 
6724
+ #: extensions/user-sessions/classes/View/Sessions.php:112
6725
  msgid "No search results were found."
6726
  msgstr ""
6727
 
6728
+ #: extensions/user-sessions/classes/View/Sessions.php:146
6729
  msgid "Expires"
6730
  msgstr ""
6731
 
6732
+ #: extensions/user-sessions/classes/View/Sessions.php:147
6733
  msgid "Source IP"
6734
  msgstr ""
6735
 
6736
+ #: extensions/user-sessions/classes/View/Sessions.php:148
6737
  msgid "Last Event"
6738
  msgstr ""
6739
 
6740
+ #: extensions/user-sessions/classes/View/Sessions.php:149, extensions/user-sessions/classes/View/Sessions.php:465
6741
  msgid "Actions"
6742
  msgstr ""
6743
 
6744
  #. translators: Number of sessions
6745
+ #: extensions/user-sessions/classes/View/Sessions.php:267
6746
  msgid "%s users"
6747
  msgstr ""
6748
 
6749
+ #: extensions/user-sessions/classes/View/Sessions.php:272
6750
  msgid "Go to the first page"
6751
  msgstr ""
6752
 
6753
+ #: extensions/user-sessions/classes/View/Sessions.php:273
6754
  msgid "Go to the previous page"
6755
  msgstr ""
6756
 
6757
+ #: extensions/user-sessions/classes/View/Sessions.php:275
6758
  msgid "of"
6759
  msgstr ""
6760
 
6761
+ #: extensions/user-sessions/classes/View/Sessions.php:277
6762
  msgid "Go to the next page"
6763
  msgstr ""
6764
 
6765
+ #: extensions/user-sessions/classes/View/Sessions.php:278
6766
  msgid "Go to the last page"
6767
  msgstr ""
6768
 
6769
+ #: extensions/user-sessions/classes/View/Sessions.php:287
6770
  msgid "Total number of sessions with Administrator Role: "
6771
  msgstr ""
6772
 
6773
+ #: extensions/user-sessions/classes/View/Sessions.php:330
6774
  msgid "Show:"
6775
  msgstr ""
6776
 
6777
+ #: extensions/user-sessions/classes/View/Sessions.php:339
6778
  msgid "Network-wide Logins"
6779
  msgstr ""
6780
 
6781
+ #: extensions/user-sessions/classes/View/Sessions.php:439
6782
  msgid "Session ID: "
6783
  msgstr ""
6784
 
6785
+ #: extensions/user-sessions/classes/View/Sessions.php:456
6786
  msgid "Click the button above to retrieve the users' last event."
6787
  msgstr ""
6788
 
6789
+ #: extensions/user-sessions/classes/View/Sessions.php:476
6790
  msgid "Show me this user's events"
6791
  msgstr ""
6792
 
6793
+ #: extensions/user-sessions/classes/View/Sessions.php:492
6794
  msgid "Terminate Session"
6795
  msgstr ""
6796
 
6797
+ #: extensions/user-sessions/classes/View/Sessions.php:384
6798
  msgid "WP Activity Log keeps its own user session data. This means that the sessions of already logged in users will only show up once they logout and log back in. The same applies to your session."
6799
  msgstr ""
6800
 
6801
+ #: extensions/user-sessions/classes/View/Sessions.php:376
6802
  msgid "No logged in sessions meet your search criteria."
6803
  msgstr ""
6804
 
6805
+ #: extensions/user-sessions/classes/View/Sessions.php:669
6806
  msgid "User sessions do not exist."
6807
  msgstr ""
6808
 
readme.txt CHANGED
@@ -4,9 +4,9 @@ Plugin URI: https://wpactivitylog.com
4
  License: GPLv3
5
  License URI: https://www.gnu.org/licenses/gpl.html
6
  Tags: activity log, wordpress activity logs, security audit log, audit log, user tracking, security event log, audit trail, wordpress security monitor, wordpress admin, wordpress admin monitoring, user activity, admin, multisite, SMS alerts, wordpress monitoring, email notification, wordpress email alerts, tracking, user tracking, user activity report, wordpress audit trail
7
- Requires at least: 3.6
8
  Tested up to: 5.6
9
- Stable tag: 4.1.5.2
10
  Requires PHP: 5.5
11
 
12
  The #1 user-rated activity log plugin. Keep a comprehensive log of the changes that happen on your site with this easy to use plugin.
@@ -26,7 +26,9 @@ Keep an [activity log](https://wpactivitylog.com/wordpress-activity-log/?utm_sou
26
 
27
  [WP Activity Log](https://wpactivitylog.com/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) is the most comprehensive real time user activity and monitoring log plugin. It helps thousands of WordPress administrators and security professionals keep an eye on what is happening on their websites. It is also the most highly rated WordPress activity log plugin and have been featured on popular sites such as GoDaddy, Kinsta and WPBeginner.
28
 
29
- [youtube https://www.youtube.com/watch?v=1nopATCS-CQ]
 
 
30
 
31
  > <strong>Note</strong>: The WordPress activity log is FREE. Features such as reports, email notifications, SMS alerts, search and many others are available in the <Strong>[Premium Edition](https://wpactivitylog.com/features/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong>.
32
  >
@@ -206,9 +208,83 @@ Please refer to our [support pages](https://wpactivitylog.com/support/?utm_sourc
206
 
207
  == Changelog ==
208
 
209
- = 4.1.5.2 (2021-01-21) =
210
-
211
- * **Improvement**
212
- * Replaced Swipebox with Simple Lightbox (compatible with WordPress 5.6)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
 
214
  Refer to the [complete plugin changelog](https://wpactivitylog.com/support/kb/plugin-changelog/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) for more detailed information about what was new, improved and fixed in previous versions of the WP Activity Log plugin.
4
  License: GPLv3
5
  License URI: https://www.gnu.org/licenses/gpl.html
6
  Tags: activity log, wordpress activity logs, security audit log, audit log, user tracking, security event log, audit trail, wordpress security monitor, wordpress admin, wordpress admin monitoring, user activity, admin, multisite, SMS alerts, wordpress monitoring, email notification, wordpress email alerts, tracking, user tracking, user activity report, wordpress audit trail
7
+ Requires at least: 4.4
8
  Tested up to: 5.6
9
+ Stable tag: 4.2.0
10
  Requires PHP: 5.5
11
 
12
  The #1 user-rated activity log plugin. Keep a comprehensive log of the changes that happen on your site with this easy to use plugin.
26
 
27
  [WP Activity Log](https://wpactivitylog.com/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) is the most comprehensive real time user activity and monitoring log plugin. It helps thousands of WordPress administrators and security professionals keep an eye on what is happening on their websites. It is also the most highly rated WordPress activity log plugin and have been featured on popular sites such as GoDaddy, Kinsta and WPBeginner.
28
 
29
+ [youtube https://www.youtube.com/watch?v=pgFEMIvKFTA]
30
+
31
+ <a href="https://wpactivitylog.com/features/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description" target="_blank">Benefits & features</a> | <a href="https://wpactivitylog.com/why-wp-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description" target="_blank">Why choose WP Activity Log</a> | <a href="https://wpactivitylog.com/support/kb/getting-started-wp-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description" target="_blank">Getting started</a>
32
 
33
  > <strong>Note</strong>: The WordPress activity log is FREE. Features such as reports, email notifications, SMS alerts, search and many others are available in the <Strong>[Premium Edition](https://wpactivitylog.com/features/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong>.
34
  >
208
 
209
  == Changelog ==
210
 
211
+ = 4.2.0 (2021-02-11) =
212
+
213
+ Release notes: [WP Activity Log 4.2: Support for all date & time formats & other major updates](https://wpactivitylog.com/wsal-4-2-0/)
214
+
215
+ **New features**
216
+ * New date & time module that supports any type of date and time format that WordPress supports.
217
+ * An all new activity log dashboard widget.
218
+ * Added activity log coverage for several new WordPress settings, including automatic updates settings, date and time settings and application passwords.
219
+
220
+ **Improved activity log coverage**
221
+ * **New event IDs for changes in posts**
222
+ * ID 2129: User added / changed / removed a post's excerpt
223
+ * ID 2130: User added / changed / removed a post's featured image
224
+
225
+ * **New event IDs for changes in WordPress settings**
226
+ * ID 6035: Changed the "Your homepage displays" WordPress setting
227
+ * ID 6036: Changed the homepage in the WordPress setting
228
+ * ID 6037: Changed the posts page in the WordPress settings
229
+ * ID 6040: Changed the Timezone in the WordPress settings
230
+ * ID 6041: Changed the Date format in the WordPress settings
231
+ * ID 6042: Changed the Time format in the WordPress settings
232
+ * ID 6044: User changed the WordPress automatic update settings
233
+
234
+ * **New event IDs for application passwords**
235
+ * ID 4025: User added / removed application password from own profile
236
+ * ID 4026: User added / removed application password from another user's profile
237
+ * ID 4027: User revoked all application passwords from own profile
238
+ * ID 4028: User revoked all application passwords from another user's profile
239
+
240
+ * **New event IDs for multisite network settings**
241
+ * ID 7007: The setting Allow site administrators to add new users to their site was enabled / disabled
242
+ * ID 7008: The value of the Site upload space setting was changed
243
+ * ID 7009: The value of the file size allowed in the site upload space setting was changed
244
+ * ID 7010: Changed the list of allowed file types on the network
245
+ * ID 7011: Changed the value of the maximum upload file size network setting
246
+
247
+ * **Other new event IDs**
248
+ * ID 1010: User requested a password reset.
249
+
250
+ **Improvements**
251
+ * Improved coverage of users logins, logout and failed logins activity on custom login pages.
252
+ * Standardized the text, format and metadata formatting of all the activity log events.
253
+ * Drastically improved the coverage of the activity logs sensors with a number of new event IDs.
254
+ * Redesigned the [activity logs extension](https://wpactivitylog.com/extensions/) UI.
255
+ * Support for URL rewrites and page names (correct page title reported even if the page is a URL rewrite).
256
+ * Default [activity log SMS notifications](https://wpactivitylog.com/features/email-sms-notifications-wordpress-activity-log/) template updated.
257
+ * Plugins version numbers are now reported in the activity log (for example when a plugin is updated).
258
+ * Users who hide the plugin from plugins page now get a notification when a plugin update is available.
259
+ * Consolidated the code that generates the activity log messages.
260
+ * Merged the Help and Contact us pages in the plugin menu.
261
+ * Improved the Reports filters queries to address timeout issues on very big websites.
262
+ * Replaced the "SHOW TABLES" queries for much better plugin performance.
263
+ * Removed the "/uploads/wp-activity-log/" directory in the free edition. This is only required in premium edition.
264
+ * Support for CloudFlare HTTP headers - plugin reports correct IP when behind CloudFlare CDN or firewall (more info on firewalls support)[https://wpactivitylog.com/support/kb/support-reverse-proxies-web-application-firewalls/].
265
+ * Reports, Email & SMS notifications and other modules now fully support metadata which contains the space character. For example the user role Shop Manager.
266
+ * Remove support for custom sensors. Custom event IDs in activity log now only supported via [activity log extension plugin](https://wpactivitylog.com/support/kb/create-custom-events-wordpress-activity-log/).
267
+ * Completely removed the code of the old promotional events (stopped using them in 2017).
268
+ * Removed the request log file setting. The request log file can now be enabled via a [filter](https://wpactivitylog.com/support/kb/list-hooks/).
269
+ * Removed the working directory location setting from plugin settings. Instead introduced a new wp-config.php constant: WSAL_WORKING_DIR_PATH
270
+ * Plugin now using WP_CONTENT_DIR instead of ABSPATH were applicable (better supported by WordPress specific web hosts).
271
+ * Added event text to event IDs 1001 and 1001.
272
+ * The system information file now also includes all of the plugin's settings saved in the wp_options table.
273
+ * Simplified the process that retrieves filnames.
274
+ * Several under the hood performance improvements (removed obsolete code, improved sensors etc)
275
+
276
+ **Bug fixes**
277
+ * Event ID 1000 (user login) still logged when IP address is excluded.
278
+ * Change in page template was not being logged with event ID 2048.
279
+ * Event ID 2002 was not always reported in some edge cases.
280
+ * Plugin's directory in uploads was not being created when website was hosted on Flywheel and WordPress.com.
281
+ * Date & time were missing in CSV reports when using some specific date and time formats in WordPress.
282
+ * Super admin role was also shown for administrators on single site setup.
283
+ * Plugin was not showing the correct total of sessions when deleting all sessions.
284
+ * Plugin was generating a PHP error when a network site was deleted.
285
+ * No event was being reported when installing [activity log extensions for third party plugins](https://wpactivitylog.com/extensions/).
286
+ * Plugin installation was not running correctly when installed alongside the [Website File Changes Monitor plugin](https://www.wpwhitesecurity.com/wordpress-plugins/website-file-changes-monitor/).
287
+ * The setting to configure the number of failed logins to keep a log of was reset to default each time the settings page was saved.
288
+ * Wrong variable was used in licensing notifications, resulting in misleading error responses when license failed to activate.
289
 
290
  Refer to the [complete plugin changelog](https://wpactivitylog.com/support/kb/plugin-changelog/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) for more detailed information about what was new, improved and fixed in previous versions of the WP Activity Log plugin.
sdk/freemius/includes/class-freemius.php CHANGED
@@ -3954,7 +3954,7 @@
3954
  if ( $is_connected ) {
3955
  FS_GDPR_Manager::instance()->store_is_required( $pong->is_gdpr_required );
3956
  }
3957
-
3958
  $this->store_connectivity_info( $pong, $is_connected );
3959
 
3960
  return $this->_has_api_connection;
@@ -8222,7 +8222,7 @@
8222
  $parent_licenses_endpoint = "/plugins/{$this->get_id()}/parent_licenses.json?filter=activatable";
8223
 
8224
  $fs = $this;
8225
-
8226
  if ( $this->is_addon() ) {
8227
  $parent_instance = $this->get_parent_instance();
8228
 
@@ -9881,7 +9881,7 @@
9881
 
9882
  if ( is_object( $fs ) ) {
9883
  $fs->remove_sdk_reference();
9884
-
9885
  self::require_plugin_essentials();
9886
 
9887
  if ( is_plugin_active( $fs->_free_plugin_basename ) ||
@@ -10446,7 +10446,7 @@
10446
  if ( fs_starts_with( $option_name, WP_FS__MODULE_TYPE_THEME . '_' ) ) {
10447
  $option_name = str_replace( WP_FS__MODULE_TYPE_THEME . '_', '', $option_name );
10448
  }
10449
-
10450
  switch ( $option_name ) {
10451
  case 'plugins':
10452
  case 'themes':
@@ -12945,7 +12945,7 @@
12945
  // Subscription cancellation dialog box is currently not supported for multisite networks.
12946
  return array();
12947
  }
12948
-
12949
  if ( $this->is_whitelabeled() ) {
12950
  return array();
12951
  }
@@ -13045,7 +13045,7 @@
13045
  ! $this->is_premium() &&
13046
  /**
13047
  * Also handle the case when an upgrade was made using the free version.
13048
- *
13049
  * @author Leo Fajardo (@leorw)
13050
  * @since 2.3.2
13051
  */
@@ -13272,7 +13272,7 @@
13272
  */
13273
  function _activate_license_ajax_action() {
13274
  $this->_logger->entrance();
13275
-
13276
  $this->check_ajax_referer( 'activate_license' );
13277
 
13278
  $license_key = trim( fs_request_get( 'license_key' ) );
@@ -13342,7 +13342,7 @@
13342
  foreach ( $installs_info_by_slug_map as $slug => $install_info ) {
13343
  $install_ids[ $slug ] = $install_info['install']->id;
13344
  }
13345
-
13346
  $params['install_ids'] = implode( ',', array_values( $install_ids ) );
13347
 
13348
  $install = $this->get_api_site_scope()->call( $this->add_show_pending( '/' ), 'put', $params );
@@ -13435,7 +13435,7 @@
13435
  *
13436
  * @author Vova Feldman (@svovaf)
13437
  * @since 2.3.0
13438
- *
13439
  * @param string $license_key
13440
  * @param null|bool $is_marketing_allowed
13441
  * @param null|number $plugin_id
3954
  if ( $is_connected ) {
3955
  FS_GDPR_Manager::instance()->store_is_required( $pong->is_gdpr_required );
3956
  }
3957
+
3958
  $this->store_connectivity_info( $pong, $is_connected );
3959
 
3960
  return $this->_has_api_connection;
8222
  $parent_licenses_endpoint = "/plugins/{$this->get_id()}/parent_licenses.json?filter=activatable";
8223
 
8224
  $fs = $this;
8225
+
8226
  if ( $this->is_addon() ) {
8227
  $parent_instance = $this->get_parent_instance();
8228
 
9881
 
9882
  if ( is_object( $fs ) ) {
9883
  $fs->remove_sdk_reference();
9884
+
9885
  self::require_plugin_essentials();
9886
 
9887
  if ( is_plugin_active( $fs->_free_plugin_basename ) ||
10446
  if ( fs_starts_with( $option_name, WP_FS__MODULE_TYPE_THEME . '_' ) ) {
10447
  $option_name = str_replace( WP_FS__MODULE_TYPE_THEME . '_', '', $option_name );
10448
  }
10449
+
10450
  switch ( $option_name ) {
10451
  case 'plugins':
10452
  case 'themes':
12945
  // Subscription cancellation dialog box is currently not supported for multisite networks.
12946
  return array();
12947
  }
12948
+
12949
  if ( $this->is_whitelabeled() ) {
12950
  return array();
12951
  }
13045
  ! $this->is_premium() &&
13046
  /**
13047
  * Also handle the case when an upgrade was made using the free version.
13048
+ *
13049
  * @author Leo Fajardo (@leorw)
13050
  * @since 2.3.2
13051
  */
13272
  */
13273
  function _activate_license_ajax_action() {
13274
  $this->_logger->entrance();
13275
+
13276
  $this->check_ajax_referer( 'activate_license' );
13277
 
13278
  $license_key = trim( fs_request_get( 'license_key' ) );
13342
  foreach ( $installs_info_by_slug_map as $slug => $install_info ) {
13343
  $install_ids[ $slug ] = $install_info['install']->id;
13344
  }
13345
+
13346
  $params['install_ids'] = implode( ',', array_values( $install_ids ) );
13347
 
13348
  $install = $this->get_api_site_scope()->call( $this->add_show_pending( '/' ), 'put', $params );
13435
  *
13436
  * @author Vova Feldman (@svovaf)
13437
  * @since 2.3.0
13438
+ *
13439
  * @param string $license_key
13440
  * @param null|bool $is_marketing_allowed
13441
  * @param null|number $plugin_id
sdk/freemius/templates/contact.php CHANGED
@@ -125,4 +125,4 @@
125
  'module_slug' => $slug,
126
  'module_version' => $fs->get_plugin_version(),
127
  );
128
- fs_require_template( 'powered-by.php', $params );
125
  'module_slug' => $slug,
126
  'module_version' => $fs->get_plugin_version(),
127
  );
128
+ fs_require_template( 'powered-by.php', $params );
sdk/index.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Nothing to see here.
4
+ */
wp-security-audit-log.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin URI: http://wpactivitylog.com/
5
  * 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 Activity log viewer included in the plugin to see all the security alerts.
6
  * Author: WP White Security
7
- * Version: 4.1.5.2
8
  * Text Domain: wp-security-audit-log
9
  * Author URI: http://www.wpwhitesecurity.com/
10
  * License: GPL2
@@ -47,7 +47,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
47
  *
48
  * @var string
49
  */
50
- public $version = '4.1.5.2';
51
 
52
  /**
53
  * Plugin constants.
@@ -498,7 +498,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
498
  $bbpress_addon = new WSAL_BBPressExtension;
499
  $wpforms_addon = new WSAL_WPFormsExtension;
500
  // Comment out till ready.
501
- //$gravityforms_addon = new WSAL_GravityFormsExtension;
502
  }
503
 
504
  // Extensions which are both admin and frontend based.
@@ -661,6 +661,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
661
  wsal_freemius()->add_filter( 'plugin_icon', function( $plugin_icon) {
662
  return WSAL_BASE_DIR . 'img/wsal-logo@2x.png';
663
  } );
 
664
  }
665
  }
666
  }
@@ -1044,7 +1045,12 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1044
  $site_count = null;
1045
  preg_match( '!\d+!', $error, $site_count );
1046
 
1047
- if ( ! empty( $site_count[0] ) ) {
 
 
 
 
 
1048
  /* Translators: Number of sites */
1049
  $error = sprintf( esc_html__( 'The license is limited to %s sub-sites. You need to upgrade your license to cover all the sub-sites on this network.', 'wp-security-audit-log' ), $site_count[0] );
1050
  }
@@ -1106,8 +1112,6 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1106
  $this->Update( $old_version, $new_version );
1107
  }
1108
 
1109
- // Generate index.php for uploads directory.
1110
- $this->settings()->generate_index_files();
1111
  }
1112
 
1113
  /**
@@ -1338,8 +1342,8 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1338
  $this->setup();
1339
  $this->init();
1340
 
1341
- // Ensure that the system is installed and schema is correct.
1342
- $pre_installed = $this->IsInstalled();
1343
 
1344
  // On first install this won't be loaded because not premium, add it
1345
  // now so it installs.
@@ -1347,23 +1351,20 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1347
 
1348
  // run any installs.
1349
  self::getConnector()->installAll();
 
 
1350
 
1351
- if ( ! $pre_installed ) {
1352
- self::getConnector()->getAdapter( 'Occurrence' )->create_indexes();
1353
- self::getConnector()->getAdapter( 'Meta' )->create_indexes();
1354
-
1355
- if ( $this->settings()->IsArchivingEnabled() ) {
1356
- $this->settings()->SwitchToArchiveDB();
1357
- self::getConnector()->getAdapter( 'Occurrence' )->create_indexes();
1358
- self::getConnector()->getAdapter( 'Meta' )->create_indexes();
1359
- }
1360
- }
1361
 
1362
  // If system already installed, do updates now (if any).
1363
  $old_version = $this->GetOldVersion();
1364
  $new_version = $this->GetNewVersion();
1365
 
1366
- if ( $pre_installed && $old_version !== $new_version ) {
1367
  $this->Update( $old_version, $new_version );
1368
  }
1369
 
@@ -1379,25 +1380,8 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1379
  // Run on each install to check MainWP Child plugin.
1380
  $this->settings()->set_mainwp_child_stealth_mode();
1381
 
1382
- // If plugin tables have not installed correctly then don't activate the plugin.
1383
- if ( ! $this->IsInstalled() ) :
1384
- ?>
1385
- <html>
1386
- <head><style>body{margin:0;}.warn-icon-tri{top:7px;left:5px;position:absolute;border-left:16px solid #FFF;border-right:16px solid #FFF;border-bottom:28px solid #C33;height:3px;width:4px}.warn-icon-chr{top:10px;left:18px;position:absolute;color:#FFF;font:26px Georgia}.warn-icon-cir{top:4px;left:0;position:absolute;overflow:hidden;border:6px solid #FFF;border-radius:32px;width:34px;height:34px}.warn-wrap{position:relative;color:#A00;font-size:13px;font-family:sans-serif;padding:6px 48px;line-height:1.4;}.warn-wrap a,.warn-wrap a:hover{color:#F56}</style></head>
1387
- <body>
1388
- <div class="warn-wrap">
1389
- <div class="warn-icon-tri"></div><div class="warn-icon-chr">!</div><div class="warn-icon-cir"></div>
1390
- <?php esc_html_e( 'This plugin uses 3 tables in the WordPress database to store the activity log and settings. It seems that these tables were not created.', 'wp-security-audit-log' ); ?>
1391
- <br />
1392
- <?php esc_html_e( '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.', 'wp-security-audit-log' ); ?>
1393
- <br />
1394
- <?php /* Translators: %s: Support Hyperlink */ echo sprintf( esc_html__( 'If after doing so you still have issues, please send us an email on %s for assistance.', 'wp-security-audit-log' ), '<a href="mailto:support@wpsecurityauditlog.com" target="_blank">' . esc_html__( 'support@wpsecurityauditlog.com', 'wp-security-audit-log' ) . '</a>' ); ?>
1395
- </div>
1396
- </body>
1397
- </html>
1398
- <?php
1399
- die( 1 );
1400
- endif;
1401
  }
1402
 
1403
  /**
@@ -1412,6 +1396,12 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1412
  // Update version in db.
1413
  $this->SetGlobalSetting( 'version', $new_version );
1414
 
 
 
 
 
 
 
1415
  // Do version-to-version specific changes.
1416
  if ( '0.0.0' !== $old_version && -1 === version_compare( $old_version, $new_version ) ) {
1417
  // Dismiss privacy notice.
@@ -1483,6 +1473,13 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1483
  wp_unschedule_event($schedule_time, 'wsal_log_files_pruning', [] );
1484
  }
1485
  }
 
 
 
 
 
 
 
1486
  }
1487
  }
1488
 
@@ -1573,16 +1570,18 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1573
  * @internal
1574
  */
1575
  public function HidePlugin() {
1576
- $selectr = '';
1577
- $plugins = array( 'wp-security-audit-log', 'wp-security-audit-log-premium' );
1578
- foreach ( $plugins as $value ) {
1579
- $selectr .= '.wp-list-table.plugins tr[data-slug="' . $value . '"], ';
 
 
 
 
 
 
 
1580
  }
1581
- ?>
1582
- <style type="text/css">
1583
- <?php echo rtrim( $selectr, ', ' ); ?> { display: none; }
1584
- </style>
1585
- <?php
1586
  }
1587
 
1588
  /**
@@ -2040,6 +2039,21 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
2040
  return $plugins;
2041
  }
2042
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2043
  /**
2044
  * Temporary autoloader for WSAL classes that somehow bypassed regular means of including
2045
  * them during the plugin runtime.
4
  * Plugin URI: http://wpactivitylog.com/
5
  * 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 Activity log viewer included in the plugin to see all the security alerts.
6
  * Author: WP White Security
7
+ * Version: 4.2.0
8
  * Text Domain: wp-security-audit-log
9
  * Author URI: http://www.wpwhitesecurity.com/
10
  * License: GPL2
47
  *
48
  * @var string
49
  */
50
+ public $version = '4.2.0';
51
 
52
  /**
53
  * Plugin constants.
498
  $bbpress_addon = new WSAL_BBPressExtension;
499
  $wpforms_addon = new WSAL_WPFormsExtension;
500
  // Comment out till ready.
501
+ $gravityforms_addon = new WSAL_GravityFormsExtension;
502
  }
503
 
504
  // Extensions which are both admin and frontend based.
661
  wsal_freemius()->add_filter( 'plugin_icon', function( $plugin_icon) {
662
  return WSAL_BASE_DIR . 'img/wsal-logo@2x.png';
663
  } );
664
+ wsal_freemius()->add_action( 'is_submenu_visible', array( $this, 'hide_freemius_submenu_items' ), 10, 2 );
665
  }
666
  }
667
  }
1045
  $site_count = null;
1046
  preg_match( '!\d+!', $error, $site_count );
1047
 
1048
+ // Check if this is an expired error.
1049
+ if ( strpos( $error, 'expired' ) !== false ) {
1050
+ /* Translators: Expired message and time */
1051
+ $error = sprintf( esc_html__( '%s You need to renew your license to continue using premium features.', 'wp-security-audit-log' ), preg_replace('/\([^)]+\)/','', $error ) );
1052
+ }
1053
+ elseif ( ! empty( $site_count[0] ) ) {
1054
  /* Translators: Number of sites */
1055
  $error = sprintf( esc_html__( 'The license is limited to %s sub-sites. You need to upgrade your license to cover all the sub-sites on this network.', 'wp-security-audit-log' ), $site_count[0] );
1056
  }
1112
  $this->Update( $old_version, $new_version );
1113
  }
1114
 
 
 
1115
  }
1116
 
1117
  /**
1342
  $this->setup();
1343
  $this->init();
1344
 
1345
+ // disable database sensor during the creation of tables
1346
+ WSAL_Sensors_Database::$enabled = false;
1347
 
1348
  // On first install this won't be loaded because not premium, add it
1349
  // now so it installs.
1351
 
1352
  // run any installs.
1353
  self::getConnector()->installAll();
1354
+ self::getConnector()->getAdapter( 'Occurrence' )->create_indexes();
1355
+ self::getConnector()->getAdapter( 'Meta' )->create_indexes();
1356
 
1357
+ if ( $this->settings()->IsArchivingEnabled() ) {
1358
+ $this->settings()->SwitchToArchiveDB();
1359
+ self::getConnector()->getAdapter( 'Occurrence' )->create_indexes();
1360
+ self::getConnector()->getAdapter( 'Meta' )->create_indexes();
1361
+ }
 
 
 
 
 
1362
 
1363
  // If system already installed, do updates now (if any).
1364
  $old_version = $this->GetOldVersion();
1365
  $new_version = $this->GetNewVersion();
1366
 
1367
+ if ( $old_version !== $new_version ) {
1368
  $this->Update( $old_version, $new_version );
1369
  }
1370
 
1380
  // Run on each install to check MainWP Child plugin.
1381
  $this->settings()->set_mainwp_child_stealth_mode();
1382
 
1383
+ // re-enable the database sensor after the tables are created
1384
+ WSAL_Sensors_Database::$enabled = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1385
  }
1386
 
1387
  /**
1396
  // Update version in db.
1397
  $this->SetGlobalSetting( 'version', $new_version );
1398
 
1399
+ if ( '0.0.0' === $old_version ) {
1400
+ // set some initial plugins settings (only the ones that bypass the regular settings retrieval at some
1401
+ // point) - e.g. disabled events
1402
+ $this->SetGlobalSetting( 'disabled-alerts', implode( ',', $this->settings()->always_disabled_alerts ) );
1403
+ }
1404
+
1405
  // Do version-to-version specific changes.
1406
  if ( '0.0.0' !== $old_version && -1 === version_compare( $old_version, $new_version ) ) {
1407
  // Dismiss privacy notice.
1473
  wp_unschedule_event($schedule_time, 'wsal_log_files_pruning', [] );
1474
  }
1475
  }
1476
+
1477
+ if ( version_compare( $new_version, '4.2.0', '>=' ) ) {
1478
+ // delete custom logging dir path from the settings
1479
+ $this->DeleteSettingByName( WpSecurityAuditLog::OPTIONS_PREFIX . 'custom-logging-dir' );
1480
+ // delete dev options from the settings
1481
+ $this->DeleteSettingByName( WpSecurityAuditLog::OPTIONS_PREFIX . 'dev-options' );
1482
+ }
1483
  }
1484
  }
1485
 
1570
  * @internal
1571
  */
1572
  public function HidePlugin() {
1573
+ if ( ! $this->_settings->CurrentUserCan( 'view' ) ) {
1574
+ $selectr = '';
1575
+ $plugins = array( 'wp-security-audit-log', 'wp-security-audit-log-premium' );
1576
+ foreach ( $plugins as $value ) {
1577
+ $selectr .= '.wp-list-table.plugins tr[data-slug="' . $value . '"], ';
1578
+ }
1579
+ ?>
1580
+ <style type="text/css">
1581
+ <?php echo rtrim( $selectr, ', ' ); ?> { display: none; }
1582
+ </style>
1583
+ <?php
1584
  }
 
 
 
 
 
1585
  }
1586
 
1587
  /**
2039
  return $plugins;
2040
  }
2041
 
2042
+ /**
2043
+ * Use filter to hide freemius submenu items.
2044
+ *
2045
+ * @param boolean $is_visible Default visibility.
2046
+ * @param string $submenu_id Menu slug.
2047
+ *
2048
+ * @return boolean New visibility.
2049
+ */
2050
+ public function hide_freemius_submenu_items( $is_visible, $submenu_id ) {
2051
+ if ( 'contact' === $submenu_id ) {
2052
+ $is_visible = false;
2053
+ }
2054
+ return $is_visible;
2055
+ }
2056
+
2057
  /**
2058
  * Temporary autoloader for WSAL classes that somehow bypassed regular means of including
2059
  * them during the plugin runtime.