WP Security Audit Log - Version 4.3.2

Version Description

(2021-08-03) =

Release notes: WP Activity Log 4.3.2: New external database module, plugin logging, and other exciting features

New event IDs for WP Activity Log plugin settings changes * ID 6046: enabled / disabled the Login Page Notification. * ID 6047: changed the text of the Login Page Notification. * ID 6048: changed the status of the Reverse proxy / firewall option. * ID 6049: changed the Restriction Access setting. * ID 6050: changed the list of users that can view the activity log. * ID 6051: enabled / disabled the Hide plugin in plugins page setting. * ID 6052: changed the activity log retention policies. * ID 6053: excluded / included back a user in the activity log. * ID 6054: excluded / included back a user role in the activity log. * ID 6055: excluded / included back an IP address in the activity log. * ID 6056: excluded / included back a post type in the activity log. * ID 6057: excluded / included back a custom field in the activity log. * ID 6058: excluded / included back a user profile custom field in the activity log.

New features

* A completely new external database module (with full backward compatability support). * Activity log can now be stored on external MySQL databases on Microsoft Azure. * A new sensor to keep a log of WP Activity Log plugin settings changes. * New setting to "not write activity log to database" when mirroring the activity log to a third party service. * The "all except from" criterion in the reports, allowing users to easily exclude specific object from a report criteria. * Plugin database version: the plugin's database is now versioned, making it much easier to upgrade the database structured when required. * Custom fields in user profiles can be excluded from the activity log from the "Exclude Objects" settings section. * The filter "wsal_event_metadata_definition" which allows users to add additional meta data to an event in the activity log. Refer to the list of hooks & filters for more information. * Added events severity level filter in the mirroring connection, allowing users to filter which events should be mirrored by severity level.

Improvements

* Replaced the old external database buffer system with the Action Scheduler library to improve reliability and performance. * Redesigned the reports download functionality so it works on any type of WordPress web hosting. * Replaced the old activity log events migration module with WP Background processing, for a more reliable migration process. * Full support for PHP 8. * Detection of third party plugins activity & recommendations for activity log extensions. * Added a number of checks to the external database module for an improved database connection setup UX. * Activity log plugin extensions are also hidden when the WP Activity Log plugin is hidden from the plugins page. * Removed all the code that was previously used for migration of events between the WordPress and external database. * Remove code that is no longer required in the free edition of the plugin. * Better support for plugins that still use old methods (old use of the lostpassword_post filter) to allow users to reset their password without an error. * All database events have been moved under the "WordPress & System" tab in the Enable/Disable events section. * Improved the text of the plugin's install wizard. * Live notifications in Admin toolbar are now disabled by default (performance enhancement). * Amazon AWS library is disabled by default. Users will be alerted to initialize it from wp-config.php if required. * Added the ";" as separator in the meta data section in CSV reports. * Removed the event ID 4-digits limit to allow users to declare event IDs with 5+ digits. * CSV reports now show the right username & display name, as configured in the plugin settings.

Bug fixes * Plugin was not capturing user logouts from Ultimate Member plugin profile page. * Plugin was reporting wrong directory name in URL in event ID 2101 on a multisite environment. * In specific scenarios the plugin reported a custom field name as NULL in event ID 2054.
* Fixed the broken link to user profile page in event ID 4001. * Event ID 4029 (user sent a password request) had the wrong Event Type.

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.3.2
Comparing to
See all releases

Code changes from version 4.3.0 to 4.3.2

Files changed (276) hide show
  1. classes/AbstractLogger.php +4 -5
  2. classes/AbstractMetaDataSensor.php +14 -7
  3. classes/AbstractSandboxTask.php +1 -1
  4. classes/AbstractSensor.php +2 -2
  5. classes/AbstractView.php +2 -2
  6. classes/Adapters/ActiveRecordInterface.php +2 -2
  7. classes/Adapters/MetaInterface.php +2 -2
  8. classes/Adapters/MySQL/ActiveRecordAdapter.php +227 -71
  9. classes/Adapters/MySQL/MetaAdapter.php +2 -2
  10. classes/Adapters/MySQL/OccurrenceAdapter.php +4 -2
  11. classes/Adapters/MySQL/QueryAdapter.php +7 -3
  12. classes/Adapters/MySQL/TmpUserAdapter.php +2 -2
  13. classes/Adapters/OccurrenceInterface.php +2 -2
  14. classes/Adapters/QueryInterface.php +9 -2
  15. classes/Alert.php +1 -26
  16. classes/AlertFormatter.php +14 -6
  17. classes/AlertFormatterConfiguration.php +29 -2
  18. classes/AlertFormatterFactory.php +3 -3
  19. classes/AlertManager.php +42 -224
  20. classes/AuditLogGridView.php +24 -48
  21. classes/AuditLogListView.php +20 -48
  22. classes/Autoloader.php +1 -1
  23. classes/Connector/AbstractConnector.php +2 -2
  24. classes/Connector/ConnectorFactory.php +32 -13
  25. classes/Connector/ConnectorInterface.php +4 -7
  26. classes/Connector/MySQLDB.php +201 -312
  27. classes/Connector/wp-db-custom.php +5 -89
  28. classes/ConstantManager.php +3 -2
  29. classes/ExtensionPlaceholderView.php +1 -1
  30. classes/Helpers/DataHelper.php +2 -2
  31. classes/Helpers/Options.php +22 -1
  32. classes/Loggers/Database.php +36 -83
  33. classes/Models/ActiveRecord.php +7 -11
  34. classes/Models/Meta.php +2 -2
  35. classes/Models/Occurrence.php +25 -12
  36. classes/Models/OccurrenceQuery.php +2 -2
  37. classes/Models/Query.php +2 -2
  38. classes/Models/TmpUser.php +2 -2
  39. classes/Multisite/NetworkWide/AbstractTracker.php +1 -1
  40. classes/Multisite/NetworkWide/CPTsTracker.php +1 -1
  41. classes/Multisite/NetworkWide/TrackerInterface.php +1 -1
  42. classes/Nicer.php +1 -1
  43. classes/Ref.php +1 -1
  44. classes/ReportArgs.php +287 -0
  45. classes/SensorManager.php +2 -2
  46. classes/Sensors/ACFMeta.php +4 -4
  47. classes/Sensors/Comments.php +3 -3
  48. classes/Sensors/Content.php +10 -3
  49. classes/Sensors/Database.php +7 -3
  50. classes/Sensors/Files.php +3 -3
  51. classes/Sensors/LogInOut.php +10 -4
  52. classes/Sensors/MainWP.php +3 -3
  53. classes/Sensors/Menus.php +3 -3
  54. classes/Sensors/MetaData.php +10 -8
  55. classes/Sensors/Multisite.php +3 -3
  56. classes/Sensors/PluginsThemes.php +3 -3
  57. classes/Sensors/Public.php +6 -5
  58. classes/Sensors/System.php +3 -3
  59. classes/Sensors/UserProfile.php +4 -4
  60. classes/Sensors/Widgets.php +3 -3
  61. classes/Settings.php +362 -43
  62. classes/ThirdPartyExtensions/AbstractExtension.php +62 -0
  63. classes/ThirdPartyExtensions/BBPressExtension.php +20 -6
  64. classes/ThirdPartyExtensions/GravityFormsExtension.php +17 -7
  65. classes/ThirdPartyExtensions/WPFormsExtension.php +20 -6
  66. classes/ThirdPartyExtensions/WooCommerceExtension.php +28 -7
  67. classes/ThirdPartyExtensions/YoastSeoExtension.php +17 -7
  68. classes/Utilities/DateTimeFormatter.php +1 -19
  69. classes/Utilities/Emailer.php +1 -1
  70. classes/Utilities/PluginInstallAndActivate.php +1 -1
  71. classes/Utilities/PluginInstallerAction.php +1 -3
  72. classes/Utilities/RequestUtils.php +1 -1
  73. classes/Utilities/UserUtils.php +28 -3
  74. classes/ViewManager.php +2 -2
  75. classes/Views/AuditLog.php +62 -83
  76. classes/Views/EmailNotifications.php +2 -2
  77. classes/Views/ExternalDB.php +2 -2
  78. classes/Views/Help.php +2 -2
  79. classes/Views/LogInUsers.php +2 -2
  80. classes/Views/Reports.php +2 -2
  81. classes/Views/Search.php +2 -2
  82. classes/Views/Settings.php +64 -56
  83. classes/Views/SetupWizard.php +2 -2
  84. classes/Views/ToggleAlerts.php +2 -2
  85. classes/WidgetManager.php +3 -3
  86. css/admin-notices.css +91 -0
  87. css/auditlog.css +33 -92
  88. defaults.php +568 -223
  89. js/auditlog.js +33 -26
  90. js/common.js +15 -17
  91. js/settings.js +16 -8
  92. languages/wp-security-audit-log-de_DE.mo +0 -0
  93. languages/wp-security-audit-log-es_ES.mo +0 -0
  94. languages/wp-security-audit-log-fr_FR.mo +0 -0
  95. languages/wp-security-audit-log-it_IT.mo +0 -0
  96. languages/wp-security-audit-log-ro_RO.mo +0 -0
  97. languages/wp-security-audit-log.pot +5718 -2473
  98. readme.txt +82 -50
  99. sdk/class-wsal-browser.php +1 -1
  100. sdk/wsal-freemius.php +1 -1
  101. {vendor → third-party}/freemius/wordpress-sdk/LICENSE.txt +0 -0
  102. {vendor → third-party}/freemius/wordpress-sdk/README.md +0 -0
  103. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/account.css +0 -0
  104. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/add-ons.css +0 -0
  105. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/affiliation.css +0 -0
  106. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/checkout.css +0 -0
  107. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/common.css +0 -0
  108. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/connect.css +0 -0
  109. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/debug.css +0 -0
  110. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/dialog-boxes.css +0 -0
  111. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/gdpr-optin-notice.css +0 -0
  112. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/index.php +0 -0
  113. {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/plugins.css +0 -0
  114. {vendor → third-party}/freemius/wordpress-sdk/assets/css/customizer.css +0 -0
  115. {vendor → third-party}/freemius/wordpress-sdk/assets/css/index.php +0 -0
  116. {vendor → third-party}/freemius/wordpress-sdk/assets/img/index.php +0 -0
  117. {vendor → third-party}/freemius/wordpress-sdk/assets/img/plugin-icon.png +0 -0
  118. {vendor → third-party}/freemius/wordpress-sdk/assets/img/theme-icon.png +0 -0
  119. {vendor → third-party}/freemius/wordpress-sdk/assets/index.php +0 -0
  120. {vendor → third-party}/freemius/wordpress-sdk/assets/js/index.php +0 -0
  121. {vendor → third-party}/freemius/wordpress-sdk/assets/js/nojquery.ba-postmessage.js +0 -0
  122. {vendor → third-party}/freemius/wordpress-sdk/assets/js/nojquery.ba-postmessage.min.js +0 -0
  123. {vendor → third-party}/freemius/wordpress-sdk/assets/js/postmessage.js +0 -0
  124. {vendor → third-party}/freemius/wordpress-sdk/config.php +0 -0
  125. {vendor → third-party}/freemius/wordpress-sdk/includes/class-freemius-abstract.php +0 -0
  126. {vendor → third-party}/freemius/wordpress-sdk/includes/class-freemius.php +0 -0
  127. {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-admin-notices.php +0 -0
  128. {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-api.php +0 -0
  129. {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-logger.php +0 -0
  130. {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-options.php +0 -0
  131. {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-plugin-updater.php +0 -0
  132. {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-security.php +0 -0
  133. {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-storage.php +0 -0
  134. {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-user-lock.php +0 -0
  135. {vendor → third-party}/freemius/wordpress-sdk/includes/customizer/class-fs-customizer-support-section.php +0 -0
  136. {vendor → third-party}/freemius/wordpress-sdk/includes/customizer/class-fs-customizer-upsell-control.php +0 -0
  137. {vendor → third-party}/freemius/wordpress-sdk/includes/customizer/index.php +0 -0
  138. {vendor → third-party}/freemius/wordpress-sdk/includes/debug/class-fs-debug-bar-panel.php +0 -0
  139. {vendor → third-party}/freemius/wordpress-sdk/includes/debug/debug-bar-start.php +0 -0
  140. {vendor → third-party}/freemius/wordpress-sdk/includes/debug/index.php +0 -0
  141. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-affiliate-terms.php +0 -0
  142. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-affiliate.php +0 -0
  143. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-billing.php +0 -0
  144. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-entity.php +0 -0
  145. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-payment.php +0 -0
  146. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-info.php +0 -0
  147. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-license.php +0 -0
  148. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-plan.php +0 -0
  149. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-tag.php +0 -0
  150. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin.php +0 -0
  151. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-pricing.php +0 -0
  152. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-scope-entity.php +0 -0
  153. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-site.php +0 -0
  154. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-subscription.php +0 -0
  155. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-user.php +0 -0
  156. {vendor → third-party}/freemius/wordpress-sdk/includes/entities/index.php +0 -0
  157. {vendor → third-party}/freemius/wordpress-sdk/includes/fs-core-functions.php +0 -0
  158. {vendor → third-party}/freemius/wordpress-sdk/includes/fs-essential-functions.php +0 -0
  159. {vendor → third-party}/freemius/wordpress-sdk/includes/fs-plugin-info-dialog.php +0 -0
  160. {vendor → third-party}/freemius/wordpress-sdk/includes/i18n.php +0 -0
  161. {vendor → third-party}/freemius/wordpress-sdk/includes/index.php +0 -0
  162. {vendor → third-party}/freemius/wordpress-sdk/includes/l10n.php +0 -0
  163. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-admin-menu-manager.php +0 -0
  164. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-admin-notice-manager.php +0 -0
  165. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-cache-manager.php +0 -0
  166. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-gdpr-manager.php +0 -0
  167. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-key-value-storage.php +0 -0
  168. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-license-manager.php +0 -0
  169. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-option-manager.php +0 -0
  170. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-plan-manager.php +0 -0
  171. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-plugin-manager.php +0 -0
  172. {vendor → third-party}/freemius/wordpress-sdk/includes/managers/index.php +0 -0
  173. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/ArgumentNotExistException.php +0 -0
  174. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/EmptyArgumentException.php +0 -0
  175. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/Exception.php +0 -0
  176. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/InvalidArgumentException.php +0 -0
  177. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/OAuthException.php +0 -0
  178. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/index.php +0 -0
  179. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/FreemiusBase.php +0 -0
  180. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/FreemiusWordPress.php +0 -0
  181. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/LICENSE.txt +0 -0
  182. {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/index.php +0 -0
  183. {vendor → third-party}/freemius/wordpress-sdk/includes/supplements/fs-essential-functions-1.1.7.1.php +0 -0
  184. {vendor → third-party}/freemius/wordpress-sdk/includes/supplements/fs-essential-functions-2.2.1.php +0 -0
  185. {vendor → third-party}/freemius/wordpress-sdk/includes/supplements/index.php +0 -0
  186. {vendor → third-party}/freemius/wordpress-sdk/index.php +0 -0
  187. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-cs_CZ.mo +0 -0
  188. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-da_DK.mo +0 -0
  189. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-en.mo +0 -0
  190. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-es_ES.mo +0 -0
  191. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-fr_FR.mo +0 -0
  192. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-he_IL.mo +0 -0
  193. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-hu_HU.mo +0 -0
  194. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-it_IT.mo +0 -0
  195. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-ja.mo +0 -0
  196. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-nl_NL.mo +0 -0
  197. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-ru_RU.mo +0 -0
  198. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-ta.mo +0 -0
  199. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-zh_CN.mo +0 -0
  200. {vendor → third-party}/freemius/wordpress-sdk/languages/freemius.pot +0 -0
  201. {vendor → third-party}/freemius/wordpress-sdk/languages/index.php +0 -0
  202. {vendor → third-party}/freemius/wordpress-sdk/package.json +0 -0
  203. {vendor → third-party}/freemius/wordpress-sdk/require.php +0 -0
  204. {vendor → third-party}/freemius/wordpress-sdk/start.php +0 -0
  205. {vendor → third-party}/freemius/wordpress-sdk/templates/account.php +0 -0
  206. {vendor → third-party}/freemius/wordpress-sdk/templates/account/billing.php +0 -0
  207. {vendor → third-party}/freemius/wordpress-sdk/templates/account/index.php +0 -0
  208. {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/activate-license-button.php +0 -0
  209. {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/addon.php +0 -0
  210. {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/deactivate-license-button.php +0 -0
  211. {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/index.php +0 -0
  212. {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/site.php +0 -0
  213. {vendor → third-party}/freemius/wordpress-sdk/templates/account/payments.php +0 -0
  214. {vendor → third-party}/freemius/wordpress-sdk/templates/add-ons.php +0 -0
  215. {vendor → third-party}/freemius/wordpress-sdk/templates/add-trial-to-pricing.php +0 -0
  216. {vendor → third-party}/freemius/wordpress-sdk/templates/admin-notice.php +0 -0
  217. {vendor → third-party}/freemius/wordpress-sdk/templates/ajax-loader.php +0 -0
  218. {vendor → third-party}/freemius/wordpress-sdk/templates/auto-installation.php +0 -0
  219. {vendor → third-party}/freemius/wordpress-sdk/templates/checkout.php +0 -0
  220. {vendor → third-party}/freemius/wordpress-sdk/templates/connect.php +0 -0
  221. {vendor → third-party}/freemius/wordpress-sdk/templates/contact.php +0 -0
  222. {vendor → third-party}/freemius/wordpress-sdk/templates/debug.php +0 -0
  223. {vendor → third-party}/freemius/wordpress-sdk/templates/debug/api-calls.php +0 -0
  224. {vendor → third-party}/freemius/wordpress-sdk/templates/debug/index.php +0 -0
  225. {vendor → third-party}/freemius/wordpress-sdk/templates/debug/logger.php +0 -0
  226. {vendor → third-party}/freemius/wordpress-sdk/templates/debug/plugins-themes-sync.php +0 -0
  227. {vendor → third-party}/freemius/wordpress-sdk/templates/debug/scheduled-crons.php +0 -0
  228. {vendor → third-party}/freemius/wordpress-sdk/templates/email.php +0 -0
  229. {vendor → third-party}/freemius/wordpress-sdk/templates/firewall-issues-js.php +0 -0
  230. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/affiliation.php +0 -0
  231. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/data-debug-mode.php +0 -0
  232. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/contact.php +0 -0
  233. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/form.php +0 -0
  234. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/index.php +0 -0
  235. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/retry-skip.php +0 -0
  236. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/index.php +0 -0
  237. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/license-activation.php +0 -0
  238. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/optout.php +0 -0
  239. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/premium-versions-upgrade-handler.php +0 -0
  240. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/premium-versions-upgrade-metadata.php +0 -0
  241. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/resend-key.php +0 -0
  242. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/subscription-cancellation.php +0 -0
  243. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/trial-start.php +0 -0
  244. {vendor → third-party}/freemius/wordpress-sdk/templates/forms/user-change.php +0 -0
  245. {vendor → third-party}/freemius/wordpress-sdk/templates/gdpr-optin-js.php +0 -0
  246. {vendor → third-party}/freemius/wordpress-sdk/templates/index.php +0 -0
  247. {vendor → third-party}/freemius/wordpress-sdk/templates/js/index.php +0 -0
  248. {vendor → third-party}/freemius/wordpress-sdk/templates/js/jquery.content-change.php +0 -0
  249. {vendor → third-party}/freemius/wordpress-sdk/templates/js/open-license-activation.php +0 -0
  250. {vendor → third-party}/freemius/wordpress-sdk/templates/js/style-premium-theme.php +0 -0
  251. {vendor → third-party}/freemius/wordpress-sdk/templates/partials/index.php +0 -0
  252. {vendor → third-party}/freemius/wordpress-sdk/templates/partials/network-activation.php +0 -0
  253. {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-icon.php +0 -0
  254. {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/description.php +0 -0
  255. {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/features.php +0 -0
  256. {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/index.php +0 -0
  257. {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/screenshots.php +0 -0
  258. {vendor → third-party}/freemius/wordpress-sdk/templates/powered-by.php +0 -0
  259. {vendor → third-party}/freemius/wordpress-sdk/templates/pricing.php +0 -0
  260. {vendor → third-party}/freemius/wordpress-sdk/templates/secure-https-header.php +0 -0
  261. {vendor → third-party}/freemius/wordpress-sdk/templates/sticky-admin-notice-js.php +0 -0
  262. {vendor → third-party}/freemius/wordpress-sdk/templates/tabs-capture-js.php +0 -0
  263. {vendor → third-party}/freemius/wordpress-sdk/templates/tabs.php +0 -0
  264. vendor/autoload.php +0 -7
  265. vendor/composer/ClassLoader.php +0 -479
  266. vendor/composer/InstalledVersions.php +0 -294
  267. vendor/composer/LICENSE +0 -21
  268. vendor/composer/autoload_classmap.php +0 -10
  269. vendor/composer/autoload_namespaces.php +0 -9
  270. vendor/composer/autoload_psr4.php +0 -9
  271. vendor/composer/autoload_real.php +0 -57
  272. vendor/composer/autoload_static.php +0 -20
  273. vendor/composer/installed.json +0 -48
  274. vendor/composer/installed.php +0 -33
  275. vendor/composer/platform_check.php +0 -26
  276. wp-security-audit-log.php +127 -156
classes/AbstractLogger.php CHANGED
@@ -4,7 +4,7 @@
4
  * Abstract class used in the Logger.
5
  *
6
  * @see Loggers/Database.php
7
- * @package Wsal
8
  */
9
  abstract class WSAL_AbstractLogger {
10
 
@@ -32,10 +32,9 @@ abstract class WSAL_AbstractLogger {
32
  * @param integer $type - Alert code.
33
  * @param array $data - Metadata.
34
  * @param integer $date (Optional) - Created on.
35
- * @param integer $siteid (Optional) - Site id.
36
- * @param bool $migrated (Optional) - Is migrated.
37
  */
38
- public abstract function Log( $type, $data = array(), $date = null, $siteid = null, $migrated = false );
39
 
40
  /**
41
  * Determines what is the correct timestamp for the event.
@@ -48,7 +47,7 @@ abstract class WSAL_AbstractLogger {
48
  * @param int $legacy_date Legacy date only used when migrating old db event format to the new one.
49
  *
50
  * @return float GMT timestamp including microseconds.
51
- * @since latest
52
  */
53
  protected function get_correct_timestamp( $metadata, $legacy_date ) {
54
 
4
  * Abstract class used in the Logger.
5
  *
6
  * @see Loggers/Database.php
7
+ * @package wsal
8
  */
9
  abstract class WSAL_AbstractLogger {
10
 
32
  * @param integer $type - Alert code.
33
  * @param array $data - Metadata.
34
  * @param integer $date (Optional) - Created on.
35
+ * @param integer $site_id (Optional) - Site id.
 
36
  */
37
+ public abstract function Log( $type, $data = array(), $date = null, $site_id = null );
38
 
39
  /**
40
  * Determines what is the correct timestamp for the event.
47
  * @param int $legacy_date Legacy date only used when migrating old db event format to the new one.
48
  *
49
  * @return float GMT timestamp including microseconds.
50
+ * @since 4.3.0
51
  */
52
  protected function get_correct_timestamp( $metadata, $legacy_date ) {
53
 
classes/AbstractMetaDataSensor.php CHANGED
@@ -5,7 +5,7 @@
5
  * Abstract meta data sensor file.
6
  *
7
  * @since 4.1.3
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -16,8 +16,8 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  /**
17
  * Abstract sensor for meta data.
18
  *
19
- * @package Wsal
20
- * @subpackage Sensors
21
  * @since 4.1.3
22
  */
23
  abstract class WSAL_AbstractMetaDataSensor extends WSAL_AbstractSensor {
@@ -32,12 +32,13 @@ abstract class WSAL_AbstractMetaDataSensor extends WSAL_AbstractSensor {
32
  /**
33
  * Check "Excluded Custom Fields" or meta keys starts with "_".
34
  *
 
35
  * @param int $object_id - Object ID.
36
  * @param string $meta_key - Meta key.
37
  *
38
  * @return boolean can log true|false
39
  */
40
- protected function CanLogMetaKey( $object_id, $meta_key ) {
41
  // Check if excluded meta key or starts with _.
42
  if ( '_' === substr( $meta_key, 0, 1 ) ) {
43
  /**
@@ -53,7 +54,7 @@ abstract class WSAL_AbstractMetaDataSensor extends WSAL_AbstractSensor {
53
  }
54
 
55
  return false;
56
- } elseif ( $this->IsExcludedCustomFields( $meta_key ) ) {
57
  return false;
58
  } else {
59
  return true;
@@ -79,12 +80,18 @@ abstract class WSAL_AbstractMetaDataSensor extends WSAL_AbstractSensor {
79
  * Check "Excluded Custom Fields".
80
  * Used in the above function.
81
  *
 
82
  * @param string $custom - Custom meta key.
83
  *
84
  * @return boolean is excluded from monitoring true|false
85
  */
86
- public function IsExcludedCustomFields( $custom ) {
87
- $custom_fields = $this->plugin->settings()->GetExcludedMonitoringCustom();
 
 
 
 
 
88
 
89
  if ( in_array( $custom, $custom_fields ) ) {
90
  return true;
5
  * Abstract meta data sensor file.
6
  *
7
  * @since 4.1.3
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
16
  /**
17
  * Abstract sensor for meta data.
18
  *
19
+ * @package wsal
20
+ * @subpackage sensors
21
  * @since 4.1.3
22
  */
23
  abstract class WSAL_AbstractMetaDataSensor extends WSAL_AbstractSensor {
32
  /**
33
  * Check "Excluded Custom Fields" or meta keys starts with "_".
34
  *
35
+ * @param string $object_type Object type - user or post.
36
  * @param int $object_id - Object ID.
37
  * @param string $meta_key - Meta key.
38
  *
39
  * @return boolean can log true|false
40
  */
41
+ protected function CanLogMetaKey( $object_type, $object_id, $meta_key ) {
42
  // Check if excluded meta key or starts with _.
43
  if ( '_' === substr( $meta_key, 0, 1 ) ) {
44
  /**
54
  }
55
 
56
  return false;
57
+ } elseif ( $this->IsExcludedCustomFields( $object_type, $meta_key ) ) {
58
  return false;
59
  } else {
60
  return true;
80
  * Check "Excluded Custom Fields".
81
  * Used in the above function.
82
  *
83
+ * @param string $object_type Object type - user or post.
84
  * @param string $custom - Custom meta key.
85
  *
86
  * @return boolean is excluded from monitoring true|false
87
  */
88
+ public function IsExcludedCustomFields( $object_type, $custom ) {
89
+ $custom_fields = [];
90
+ if ('post' === $object_type) {
91
+ $custom_fields = $this->plugin->settings()->GetExcludedPostMetaFields();
92
+ } else if ('user' === $object_type) {
93
+ $custom_fields = $this->plugin->settings()->GetExcludedUserMetaFields();
94
+ }
95
 
96
  if ( in_array( $custom, $custom_fields ) ) {
97
  return true;
classes/AbstractSandboxTask.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Abstract Sandbox Task class.
4
  *
5
- * @package Wsal
6
  */
7
  abstract class WSAL_AbstractSandboxTask {
8
 
2
  /**
3
  * Abstract Sandbox Task class.
4
  *
5
+ * @package wsal
6
  */
7
  abstract class WSAL_AbstractSandboxTask {
8
 
classes/AbstractSensor.php CHANGED
@@ -5,7 +5,7 @@
5
  * Abstract sensor class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * Abstract class used in all the sensors.
18
  *
19
  * @see Sensors/*.php
20
- * @package Wsal
21
  */
22
  abstract class WSAL_AbstractSensor {
23
 
5
  * Abstract sensor class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * Abstract class used in all the sensors.
18
  *
19
  * @see Sensors/*.php
20
+ * @package wsal
21
  */
22
  abstract class WSAL_AbstractSensor {
23
 
classes/AbstractView.php CHANGED
@@ -3,14 +3,14 @@
3
  * Abstract class used in all the views.
4
  *
5
  * @see Views/*.php
6
- * @package Wsal
7
  */
8
  abstract class WSAL_AbstractView {
9
 
10
  /**
11
  * Instance of WpSecurityAuditLog.
12
  *
13
- * @var object
14
  */
15
  protected $_plugin;
16
 
3
  * Abstract class used in all the views.
4
  *
5
  * @see Views/*.php
6
+ * @package wsal
7
  */
8
  abstract class WSAL_AbstractView {
9
 
10
  /**
11
  * Instance of WpSecurityAuditLog.
12
  *
13
+ * @var WpSecurityAuditLog
14
  */
15
  protected $_plugin;
16
 
classes/Adapters/ActiveRecordInterface.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Interface used by the ActiveRecord.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  /**
16
  * Interface used by the ActiveRecord.
17
  *
18
- * @package Wsal
19
  */
20
  interface WSAL_Adapters_ActiveRecordInterface {
21
 
4
  *
5
  * Interface used by the ActiveRecord.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
15
  /**
16
  * Interface used by the ActiveRecord.
17
  *
18
+ * @package wsal
19
  */
20
  interface WSAL_Adapters_ActiveRecordInterface {
21
 
classes/Adapters/MetaInterface.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Interface used by the Metadata.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  /**
16
  * Interface used by the Metadata.
17
  *
18
- * @package Wsal
19
  */
20
  interface WSAL_Adapters_MetaInterface {
21
 
4
  *
5
  * Interface used by the Metadata.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
15
  /**
16
  * Interface used by the Metadata.
17
  *
18
+ * @package wsal
19
  */
20
  interface WSAL_Adapters_MetaInterface {
21
 
classes/Adapters/MySQL/ActiveRecordAdapter.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * MySQL database ActiveRecord class.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -19,7 +19,7 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  * elements in the Database.
20
  * There are also the functions used in the Report Add-On to get the reports.
21
  *
22
- * @package Wsal
23
  */
24
  class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInterface {
25
 
@@ -467,24 +467,13 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
467
  /**
468
  * Function used in WSAL reporting extension.
469
  *
470
- * @param int $_site_id - Site ID.
471
- * @param int $_user_id - User ID.
472
- * @param string $_role_name - User role.
473
- * @param int $_alert_code - Alert code.
474
- * @param int $_start_timestamp - From created_on.
475
- * @param int $_end_timestamp - To created_on.
476
  * @param int $_next_date - (Optional) Created on >.
477
  * @param int $_limit - (Optional) Limit.
478
- * @param string $_post_types - (Optional) Post types.
479
- * @param string $_post_statuses - (Optional) Post statuses.
480
- * @param string $_objects
481
- * @param string $_event_types
482
  *
483
  * @return array Report results
484
  */
485
- public function GetReporting( $_site_id, $_user_id, $_role_name, $_alert_code, $_start_timestamp, $_end_timestamp, $_next_date = null, $_limit = 0, $_post_types = '', $_post_statuses = '', $_objects = '', $_event_types = '' ) {
486
- global $wpdb;
487
- $user_names = $this->GetUserNames( $_user_id );
488
 
489
  $_wpdb = $this->connection;
490
  $_wpdb->set_charset( $_wpdb->dbh, 'utf8mb4', 'utf8mb4_general_ci' );
@@ -497,6 +486,91 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
497
 
498
  $condition_date = ! empty( $_next_date ) ? ' AND occ.created_on < ' . $_next_date : '';
499
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
500
  if ( 'null' === $_post_types && 'null' === $_post_statuses ) {
501
  $sql = "SELECT DISTINCT
502
  occ.id,
@@ -515,36 +589,33 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
515
  FROM $table_occ AS occ
516
  JOIN $table_meta AS meta ON meta.occurrence_id = occ.id
517
  WHERE
518
- (@siteId is NULL OR find_in_set(occ.site_id, @siteId) > 0)
519
- AND (
520
- @userId is NULL
521
- OR (
522
- (meta.name = 'CurrentUserID' AND find_in_set(meta.value, @userId) > 0)
523
- OR
524
- (meta.name = 'Username' AND replace(meta.value, '\"', '') IN ($user_names))
525
- )
526
  )
 
527
  AND (
528
  @roleName is NULL
529
  OR (
530
  meta.name = 'CurrentUserRoles'
531
  AND
532
- replace(replace(replace(meta.value, ']', ''), '[', ''), '\\'', '') REGEXP @roleName
533
  )
534
  )
535
  AND (
536
  @object is NULL
537
  OR
538
- EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='Object' AND find_in_set(meta.value, @object) > 0)
539
  )
540
  AND (
541
  @eventType is NULL
542
  OR
543
- EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='EventType' AND find_in_set(meta.value, @eventType) > 0)
544
  )
545
- AND (@alertCode is NULL OR find_in_set(occ.alert_id, @alertCode) > 0)
546
- AND (@startTimestamp is NULL OR occ.created_on >= @startTimestamp)
547
- AND (@endTimestamp is NULL OR occ.created_on <= @endTimestamp)
548
  {$condition_date}
549
  ORDER BY
550
  created_on DESC
@@ -567,19 +638,16 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
567
  FROM
568
  $table_occ as occ
569
  WHERE
570
- (@siteId is NULL OR find_in_set(occ.site_id, @siteId) > 0)
571
- AND (
572
- @userId is NULL
573
- OR (
574
- EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='CurrentUserID' AND find_in_set(meta.value, @userId) > 0)
575
- OR
576
- EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='Username' AND replace(meta.value, '\"', '') IN ($user_names))
577
- )
578
  )
 
579
  AND (
580
  @roleName is NULL
581
  OR
582
- EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='CurrentUserRoles' AND replace(replace(replace(meta.value, ']', ''), '[', ''), '\\'', '') REGEXP @roleName)
583
  )
584
  AND (@alertCode is NULL OR find_in_set(occ.alert_id, @alertCode) > 0)
585
  AND (@startTimestamp is NULL OR occ.created_on >= @startTimestamp)
@@ -597,12 +665,12 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
597
  AND (
598
  @object is NULL
599
  OR
600
- EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='Object' AND find_in_set(meta.value, @object) > 0)
601
  )
602
  AND (
603
  @eventType is NULL
604
  OR
605
- EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='EventType' AND find_in_set(meta.value, @eventType) > 0)
606
  )
607
  {$condition_date}
608
  ORDER BY
@@ -734,22 +802,17 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
734
  * Function used in WSAL reporting extension.
735
  * List of unique IP addresses used by the same user.
736
  *
737
- * @param int $_site_id - Site ID.
738
- * @param int $_start_timestamp - From created_on.
739
- * @param int $_end_timestamp - To created_on.
740
- * @param string|int $_user_id - (Optional) User ID.
741
- * @param string $_role_name - (Optional) User role.
742
- * @param string $_ip_address - (Optional) IP address.
743
- * @param string|int $_alert_code - (Optional) Alert code.
744
- * @param int $_limit - (Optional) Limit.
745
  * @return array Report results grouped by IP and Username
746
  */
747
- public function GetReportGrouped( $_site_id, $_start_timestamp, $_end_timestamp, $_user_id = 'null', $_role_name = 'null', $_ip_address = 'null', $_alert_code = 'null', $_limit = 0 ) {
748
- global $wpdb;
749
- $user_names = $this->GetUserNames( $_user_id );
750
 
 
751
  $_wpdb = $this->connection;
752
  $_wpdb->set_charset( $_wpdb->dbh, 'utf8mb4', 'utf8mb4_general_ci' );
 
753
  // Tables.
754
  $meta = new WSAL_Adapters_MySQL_Meta( $this->connection );
755
  $table_meta = $meta->GetTable(); // Metadata.
@@ -765,6 +828,69 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
765
  $table_users = $wpdb->users;
766
  }
767
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
768
  $sql = "SELECT DISTINCT *
769
  FROM (SELECT DISTINCT
770
  occ.site_id,
@@ -773,18 +899,29 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
773
  FROM $table_occ AS occ
774
  JOIN $table_meta AS meta ON meta.occurrence_id = occ.id
775
  WHERE
776
- (@siteId is NULL OR find_in_set(occ.site_id, @siteId) > 0)
777
- AND (@userId is NULL OR (
778
- (meta.name = 'CurrentUserID' AND find_in_set(meta.value, @userId) > 0)
779
- OR (meta.name = 'Username' AND replace(meta.value, '\"', '') IN ($user_names))
780
- ))
781
- AND (@roleName is NULL OR (meta.name = 'CurrentUserRoles'
782
- AND replace(replace(replace(meta.value, ']', ''), '[', ''), '\\'', '') REGEXP @roleName
783
- ))
 
 
 
 
 
 
 
 
 
 
 
784
  AND (@alertCode is NULL OR find_in_set(occ.alert_id, @alertCode) > 0)
785
  AND (@startTimestamp is NULL OR occ.created_on >= @startTimestamp)
786
  AND (@endTimestamp is NULL OR occ.created_on <= @endTimestamp)
787
- AND (@ipAddress is NULL OR (meta.name = 'ClientIP' AND find_in_set(meta.value, @ipAddress) > 0))
788
  HAVING user_login IS NOT NULL
789
  UNION ALL
790
  SELECT DISTINCT
@@ -800,29 +937,23 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
800
  FROM $table_occ AS occ
801
  JOIN $table_meta AS meta ON meta.occurrence_id = occ.id
802
  WHERE
803
- (@siteId is NULL OR find_in_set(occ.site_id, @siteId) > 0)
804
- AND (@userId is NULL OR (
805
  (meta.name = 'CurrentUserID' AND find_in_set(meta.value, @userId) > 0)
806
  OR (meta.name = 'Username' AND replace(meta.value, '\"', '') IN ($user_names))
807
  ))
808
- AND (@roleName is NULL OR (meta.name = 'CurrentUserRoles'
809
  AND replace(replace(replace(meta.value, ']', ''), '[', ''), '\\'', '') REGEXP @roleName
810
  ))
811
  AND (@alertCode is NULL OR find_in_set(occ.alert_id, @alertCode) > 0)
812
  AND (@startTimestamp is NULL OR occ.created_on >= @startTimestamp)
813
  AND (@endTimestamp is NULL OR occ.created_on <= @endTimestamp)
814
- AND (@ipAddress is NULL OR (meta.name = 'ClientIP' AND find_in_set(meta.value, @ipAddress) > 0))
815
  HAVING user_login IS NOT NULL) ip_logins
816
  WHERE user_login NOT IN ('Unregistered user', 'Plugins', 'Plugin')
817
  ORDER BY user_login ASC
818
  ";
819
- $_wpdb->query( "SET @siteId = $_site_id" );
820
- $_wpdb->query( "SET @userId = $_user_id" );
821
- $_wpdb->query( "SET @roleName = $_role_name" );
822
- $_wpdb->query( "SET @alertCode = $_alert_code" );
823
- $_wpdb->query( "SET @startTimestamp = $_start_timestamp" );
824
- $_wpdb->query( "SET @endTimestamp = $_end_timestamp" );
825
- $_wpdb->query( "SET @ipAddress = $_ip_address" );
826
  if ( ! empty( $_limit ) ) {
827
  $sql .= " LIMIT {$_limit}";
828
  }
@@ -904,4 +1035,29 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
904
  public function GetModel() {
905
  // implement in subclass
906
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
907
  }
4
  *
5
  * MySQL database ActiveRecord class.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
19
  * elements in the Database.
20
  * There are also the functions used in the Report Add-On to get the reports.
21
  *
22
+ * @package wsal
23
  */
24
  class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInterface {
25
 
467
  /**
468
  * Function used in WSAL reporting extension.
469
  *
470
+ * @param WSAL_ReportArgs $report_args Report arguments.
 
 
 
 
 
471
  * @param int $_next_date - (Optional) Created on >.
472
  * @param int $_limit - (Optional) Limit.
 
 
 
 
473
  *
474
  * @return array Report results
475
  */
476
+ public function GetReporting( $report_args, $_next_date = null, $_limit = 0 ) {
 
 
477
 
478
  $_wpdb = $this->connection;
479
  $_wpdb->set_charset( $_wpdb->dbh, 'utf8mb4', 'utf8mb4_general_ci' );
486
 
487
  $condition_date = ! empty( $_next_date ) ? ' AND occ.created_on < ' . $_next_date : '';
488
 
489
+ $_site_id = 'null';
490
+ $sites_negate_expression = '';
491
+ if ( $report_args->site__in ) {
492
+ $_site_id = $this->formatArrayForQuery( $report_args->site__in );
493
+ } else if ( $report_args->site__not_in ) {
494
+ $_site_id = $this->formatArrayForQuery( $report_args->site__not_in );
495
+ $sites_negate_expression = 'NOT';
496
+ }
497
+
498
+ $_user_id = 'null';
499
+ $users_negate_expression = '';
500
+ $users_subselect_operand = 'OR';
501
+ if ( $report_args->user__in ) {
502
+ $_user_id = $this->formatArrayForQuery( $report_args->user__in );
503
+ } else if ( $report_args->user__not_in ) {
504
+ $_user_id = $this->formatArrayForQuery( $report_args->user__not_in );
505
+ $users_negate_expression = 'NOT';
506
+ $users_subselect_operand = 'AND';
507
+ }
508
+
509
+ $user_names = $this->GetUserNames( $_user_id );
510
+
511
+ $_role_name = 'null';
512
+ $roles_negate_expression = '';
513
+ if ( $report_args->role__in ) {
514
+ $_role_name = $this->formatArrayForQueryRegex( $report_args->role__in );
515
+ } else if ( $report_args->role__not_in ) {
516
+ $_role_name = $this->formatArrayForQueryRegex( $report_args->role__not_in );
517
+ $roles_negate_expression = 'NOT';
518
+ }
519
+
520
+ $_alert_code = 'null';
521
+ if ( $report_args->code__in ) {
522
+ $_alert_code = $this->formatArrayForQuery( $report_args->code__in );
523
+ }
524
+
525
+ $_post_types = 'null';
526
+ if ( $report_args->post_type__in ) {
527
+ $_post_types = $this->formatArrayForQueryRegex( $report_args->post_type__in );
528
+ }
529
+
530
+ $_post_statuses = 'null';
531
+ if ( $report_args->post_status__in ) {
532
+ $_post_statuses = $this->formatArrayForQueryRegex( $report_args->post_status__in );
533
+ }
534
+
535
+ $_objects = 'null';
536
+ $objects_negate_expression = '';
537
+ if ( $report_args->object__in ) {
538
+ $_objects = $this->formatArrayForQuery( $report_args->object__in );
539
+ } else if ( $report_args->object__not_in ) {
540
+ $_objects = $this->formatArrayForQuery( $report_args->object__not_in );
541
+ $objects_negate_expression = 'NOT';
542
+ }
543
+
544
+ $_event_types = 'null';
545
+ $event_types_negate_expression = '';
546
+ if ( $report_args->type__in ) {
547
+ $_event_types = $this->formatArrayForQuery( $report_args->type__in );
548
+ } else if ( $report_args->type__not_in ) {
549
+ $_event_types = $this->formatArrayForQuery( $report_args->type__not_in );
550
+ $event_types_negate_expression = 'NOT';
551
+ }
552
+
553
+ $_start_timestamp = 'null';
554
+ if ( $report_args->start_date ) {
555
+ $start_datetime = DateTime::createFromFormat( 'Y-m-d H:i:s', $report_args->start_date . ' 00:00:00' );
556
+ $_start_timestamp = $start_datetime->format( 'U' );
557
+ }
558
+
559
+ $_end_timestamp = 'null';
560
+ if ( $report_args->end_date ) {
561
+ $end_datetime = DateTime::createFromFormat( 'Y-m-d H:i:s', $report_args->end_date . ' 23:59:59' );
562
+ $_end_timestamp = $end_datetime->format( 'U' );
563
+ }
564
+
565
+ $users_condition = "(
566
+ @userId is NULL
567
+ OR (
568
+ {$users_negate_expression} EXISTS( SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='CurrentUserID' AND find_in_set( meta.value, @userId ) > 0)
569
+ $users_subselect_operand
570
+ {$users_negate_expression} EXISTS( SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='Username' AND replace(meta.value, '\"', '' ) IN ( $user_names ) )
571
+ )
572
+ )";
573
+
574
  if ( 'null' === $_post_types && 'null' === $_post_statuses ) {
575
  $sql = "SELECT DISTINCT
576
  occ.id,
589
  FROM $table_occ AS occ
590
  JOIN $table_meta AS meta ON meta.occurrence_id = occ.id
591
  WHERE
592
+ (
593
+ @siteId is NULL
594
+ OR
595
+ {$sites_negate_expression} find_in_set( occ.site_id, @siteId ) > 0
 
 
 
 
596
  )
597
+ AND {$users_condition}
598
  AND (
599
  @roleName is NULL
600
  OR (
601
  meta.name = 'CurrentUserRoles'
602
  AND
603
+ replace(replace(replace(meta.value, ']', ''), '[', ''), '\\'', '') {$roles_negate_expression} REGEXP @roleName
604
  )
605
  )
606
  AND (
607
  @object is NULL
608
  OR
609
+ {$objects_negate_expression} EXISTS( SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='Object' AND find_in_set( meta.value, @object ) > 0 )
610
  )
611
  AND (
612
  @eventType is NULL
613
  OR
614
+ {$event_types_negate_expression} EXISTS( SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='EventType' AND find_in_set( meta.value, @eventType ) > 0)
615
  )
616
+ AND ( @alertCode is NULL OR find_in_set( occ.alert_id, @alertCode ) > 0)
617
+ AND ( @startTimestamp is NULL OR occ.created_on >= @startTimestamp )
618
+ AND ( @endTimestamp is NULL OR occ.created_on <= @endTimestamp )
619
  {$condition_date}
620
  ORDER BY
621
  created_on DESC
638
  FROM
639
  $table_occ as occ
640
  WHERE
641
+ (
642
+ @siteId is NULL
643
+ OR
644
+ {$sites_negate_expression} find_in_set(occ.site_id, @siteId) > 0
 
 
 
 
645
  )
646
+ AND {$users_condition}
647
  AND (
648
  @roleName is NULL
649
  OR
650
+ {$roles_negate_expression} EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='CurrentUserRoles' AND replace(replace(replace(meta.value, ']', ''), '[', ''), '\\'', '') REGEXP @roleName)
651
  )
652
  AND (@alertCode is NULL OR find_in_set(occ.alert_id, @alertCode) > 0)
653
  AND (@startTimestamp is NULL OR occ.created_on >= @startTimestamp)
665
  AND (
666
  @object is NULL
667
  OR
668
+ {$objects_negate_expression} EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='Object' AND find_in_set(meta.value, @object) > 0)
669
  )
670
  AND (
671
  @eventType is NULL
672
  OR
673
+ {$event_types_negate_expression} EXISTS(SELECT 1 FROM $table_meta as meta WHERE meta.occurrence_id = occ.id AND meta.name='EventType' AND find_in_set(meta.value, @eventType) > 0)
674
  )
675
  {$condition_date}
676
  ORDER BY
802
  * Function used in WSAL reporting extension.
803
  * List of unique IP addresses used by the same user.
804
  *
805
+ * @param WSAL_ReportArgs $report_args Report arguments.
806
+ * @param int $_limit - (Optional) Limit.
807
+ *
 
 
 
 
 
808
  * @return array Report results grouped by IP and Username
809
  */
810
+ public function GetReportGrouped( $report_args, $_limit = 0 ) {
 
 
811
 
812
+ global $wpdb;
813
  $_wpdb = $this->connection;
814
  $_wpdb->set_charset( $_wpdb->dbh, 'utf8mb4', 'utf8mb4_general_ci' );
815
+
816
  // Tables.
817
  $meta = new WSAL_Adapters_MySQL_Meta( $this->connection );
818
  $table_meta = $meta->GetTable(); // Metadata.
828
  $table_users = $wpdb->users;
829
  }
830
 
831
+ $_site_id = 'null';
832
+ $sites_negate_expression = '';
833
+ if ( $report_args->site__in ) {
834
+ $_site_id = $this->formatArrayForQuery( $report_args->site__in );
835
+ } else if ( $report_args->site__not_in ) {
836
+ $_site_id = $this->formatArrayForQuery( $report_args->site__not_in );
837
+ $sites_negate_expression = 'NOT';
838
+ }
839
+
840
+ $_user_id = 'null';
841
+ $users_negate_expression = '';
842
+ if ( $report_args->user__in ) {
843
+ $_user_id = $this->formatArrayForQuery( $report_args->user__in );
844
+ } else if ( $report_args->user__not_in ) {
845
+ $_user_id = $this->formatArrayForQuery( $report_args->user__not_in );
846
+ $users_negate_expression = 'NOT';
847
+ }
848
+
849
+ $_role_name = 'null';
850
+ $roles_negate_expression = '';
851
+ if ( $report_args->role__in ) {
852
+ $_role_name = $this->formatArrayForQueryRegex( $report_args->role__in );
853
+ } else if ( $report_args->role__not_in ) {
854
+ $_role_name = $this->formatArrayForQueryRegex( $report_args->role__not_in );
855
+ $roles_negate_expression = 'NOT';
856
+ }
857
+
858
+ $_alert_code = 'null';
859
+ if ( $report_args->code__in ) {
860
+ $_alert_code = $this->formatArrayForQuery( $report_args->code__in );
861
+ }
862
+
863
+ $_ip_address = 'null';
864
+ $ip_address_negate_expression = '';
865
+ if ( $report_args->ip__in ) {
866
+ $_ip_address = $this->formatArrayForQuery( $report_args->ip__in );
867
+ } else if ( $report_args->ip__not_in ) {
868
+ $_ip_address = $this->formatArrayForQuery( $report_args->ip__not_in );
869
+ $ip_address_negate_expression = 'NOT';
870
+ }
871
+
872
+ $_start_timestamp = 'null';
873
+ if ( $report_args->start_date ) {
874
+ $start_datetime = DateTime::createFromFormat( 'Y-m-d H:i:s', $report_args->start_date . ' 00:00:00' );
875
+ $_start_timestamp = $start_datetime->format( 'U' );
876
+ }
877
+
878
+ $_end_timestamp = 'null';
879
+ if ( $report_args->end_date ) {
880
+ $end_datetime = DateTime::createFromFormat( 'Y-m-d H:i:s', $report_args->end_date . ' 23:59:59' );
881
+ $_end_timestamp = $end_datetime->format( 'U' );
882
+ }
883
+
884
+ $user_names = $this->GetUserNames( $_user_id );
885
+
886
+ $_wpdb->query( "SET @siteId = $_site_id" );
887
+ $_wpdb->query( "SET @userId = $_user_id" );
888
+ $_wpdb->query( "SET @roleName = $_role_name" );
889
+ $_wpdb->query( "SET @alertCode = $_alert_code" );
890
+ $_wpdb->query( "SET @startTimestamp = $_start_timestamp" );
891
+ $_wpdb->query( "SET @endTimestamp = $_end_timestamp" );
892
+ $_wpdb->query( "SET @ipAddress = $_ip_address" );
893
+
894
  $sql = "SELECT DISTINCT *
895
  FROM (SELECT DISTINCT
896
  occ.site_id,
899
  FROM $table_occ AS occ
900
  JOIN $table_meta AS meta ON meta.occurrence_id = occ.id
901
  WHERE
902
+ (
903
+ @siteId is NULL
904
+ OR
905
+ {$sites_negate_expression} find_in_set(occ.site_id, @siteId) > 0
906
+ )
907
+ AND (
908
+ @userId is NULL
909
+ OR $users_negate_expression (
910
+ ( meta.name = 'CurrentUserID' AND find_in_set(meta.value, @userId) > 0 )
911
+ OR
912
+ ( meta.name = 'Username' AND replace(meta.value, '\"', '') IN ($user_names) )
913
+ )
914
+ )
915
+ AND (
916
+ @roleName is NULL
917
+ OR (
918
+ meta.name = 'CurrentUserRoles' AND replace(replace(replace(meta.value, ']', ''), '[', ''), '\\'', '') {$roles_negate_expression} REGEXP @roleName
919
+ )
920
+ )
921
  AND (@alertCode is NULL OR find_in_set(occ.alert_id, @alertCode) > 0)
922
  AND (@startTimestamp is NULL OR occ.created_on >= @startTimestamp)
923
  AND (@endTimestamp is NULL OR occ.created_on <= @endTimestamp)
924
+ AND (@ipAddress is NULL OR (meta.name = 'ClientIP' AND {$ip_address_negate_expression} find_in_set(meta.value, @ipAddress) > 0))
925
  HAVING user_login IS NOT NULL
926
  UNION ALL
927
  SELECT DISTINCT
937
  FROM $table_occ AS occ
938
  JOIN $table_meta AS meta ON meta.occurrence_id = occ.id
939
  WHERE
940
+ (@siteId is NULL OR {$sites_negate_expression} find_in_set(occ.site_id, @siteId) > 0)
941
+ AND (@userId is NULL OR {$users_negate_expression} (
942
  (meta.name = 'CurrentUserID' AND find_in_set(meta.value, @userId) > 0)
943
  OR (meta.name = 'Username' AND replace(meta.value, '\"', '') IN ($user_names))
944
  ))
945
+ AND (@roleName is NULL OR {$roles_negate_expression} (meta.name = 'CurrentUserRoles'
946
  AND replace(replace(replace(meta.value, ']', ''), '[', ''), '\\'', '') REGEXP @roleName
947
  ))
948
  AND (@alertCode is NULL OR find_in_set(occ.alert_id, @alertCode) > 0)
949
  AND (@startTimestamp is NULL OR occ.created_on >= @startTimestamp)
950
  AND (@endTimestamp is NULL OR occ.created_on <= @endTimestamp)
951
+ AND (@ipAddress is NULL OR {$ip_address_negate_expression} (meta.name = 'ClientIP' AND find_in_set(meta.value, @ipAddress) > 0))
952
  HAVING user_login IS NOT NULL) ip_logins
953
  WHERE user_login NOT IN ('Unregistered user', 'Plugins', 'Plugin')
954
  ORDER BY user_login ASC
955
  ";
956
+
 
 
 
 
 
 
957
  if ( ! empty( $_limit ) ) {
958
  $sql .= " LIMIT {$_limit}";
959
  }
1035
  public function GetModel() {
1036
  // implement in subclass
1037
  }
1038
+
1039
+ /**
1040
+ * @param array $data
1041
+ *
1042
+ * @return string
1043
+ * @since 4.3.2
1044
+ */
1045
+ protected function formatArrayForQuery( $data ) {
1046
+ return "'" . implode( ',', $data ) . "'";
1047
+ }
1048
+
1049
+ /**
1050
+ * @param array $data
1051
+ *
1052
+ * @return string
1053
+ * @since 4.3.2
1054
+ */
1055
+ protected function formatArrayForQueryRegex( $data ) {
1056
+ $result = array();
1057
+ foreach ( $data as $item ) {
1058
+ array_push( $result, esc_sql( preg_quote( $item ) ) );
1059
+ }
1060
+
1061
+ return "'" . implode( '|', $result ) . "'";
1062
+ }
1063
  }
classes/Adapters/MySQL/MetaAdapter.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * MySQL database Metadata class.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  * MySQL wsal_metadata table used for to store the alert meta data:
19
  * username, user_roles, client_ip, user_agent, post_id, post_title, etc.
20
  *
21
- * @package Wsal
22
  */
23
  class WSAL_Adapters_MySQL_Meta extends WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_MetaInterface {
24
 
4
  *
5
  * MySQL database Metadata class.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
18
  * MySQL wsal_metadata table used for to store the alert meta data:
19
  * username, user_roles, client_ip, user_agent, post_id, post_title, etc.
20
  *
21
+ * @package wsal
22
  */
23
  class WSAL_Adapters_MySQL_Meta extends WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_MetaInterface {
24
 
classes/Adapters/MySQL/OccurrenceAdapter.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * MySQL database Occurrence class.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  *
18
  * MySQL wsal_occurrences table used for to store the alerts.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Adapters_MySQL_Occurrence extends WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_OccurrenceInterface {
23
 
@@ -74,6 +74,7 @@ class WSAL_Adapters_MySQL_Occurrence extends WSAL_Adapters_MySQL_ActiveRecord im
74
  * Is read?
75
  *
76
  * @var bool
 
77
  */
78
  public $is_read = false;
79
 
@@ -81,6 +82,7 @@ class WSAL_Adapters_MySQL_Occurrence extends WSAL_Adapters_MySQL_ActiveRecord im
81
  * Is migrated?
82
  *
83
  * @var bool
 
84
  */
85
  public $is_migrated = false;
86
 
4
  *
5
  * MySQL database Occurrence class.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
17
  *
18
  * MySQL wsal_occurrences table used for to store the alerts.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Adapters_MySQL_Occurrence extends WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_OccurrenceInterface {
23
 
74
  * Is read?
75
  *
76
  * @var bool
77
+ * @deprecated 4.3.2
78
  */
79
  public $is_read = false;
80
 
82
  * Is migrated?
83
  *
84
  * @var bool
85
+ * @deprecated 4.3.2
86
  */
87
  public $is_migrated = false;
88
 
classes/Adapters/MySQL/QueryAdapter.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * MySQL database Query class.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -18,14 +18,14 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  * The SQL query is created in this class, here the SQL is filled with
19
  * the arguments.
20
  *
21
- * @package Wsal
22
  */
23
  class WSAL_Adapters_MySQL_Query implements WSAL_Adapters_QueryInterface {
24
 
25
  /**
26
  * DB Connection
27
  *
28
- * @var array
29
  */
30
  protected $connection;
31
 
@@ -295,4 +295,8 @@ class WSAL_Adapters_MySQL_Query implements WSAL_Adapters_QueryInterface {
295
  $search_conditions['args'] = '%' . $condition . '%';
296
  return $search_conditions;
297
  }
 
 
 
 
298
  }
4
  *
5
  * MySQL database Query class.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
18
  * The SQL query is created in this class, here the SQL is filled with
19
  * the arguments.
20
  *
21
+ * @package wsal
22
  */
23
  class WSAL_Adapters_MySQL_Query implements WSAL_Adapters_QueryInterface {
24
 
25
  /**
26
  * DB Connection
27
  *
28
+ * @var wpdb
29
  */
30
  protected $connection;
31
 
295
  $search_conditions['args'] = '%' . $condition . '%';
296
  return $search_conditions;
297
  }
298
+
299
+ public function IsConnected() {
300
+ return ( $this->connection && $this->connection->has_connected );
301
+ }
302
  }
classes/Adapters/MySQL/TmpUserAdapter.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * MySQL database Metadata class.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  * because the query between plugin tables and the internal wp_uses table is not possible.
21
  *
22
  * @see WSAL_Adapters_MySQL_ActiveRecord->GetReportGrouped()
23
- * @package Wsal
24
  */
25
  class WSAL_Adapters_MySQL_TmpUser extends WSAL_Adapters_MySQL_ActiveRecord {
26
 
4
  *
5
  * MySQL database Metadata class.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
20
  * because the query between plugin tables and the internal wp_uses table is not possible.
21
  *
22
  * @see WSAL_Adapters_MySQL_ActiveRecord->GetReportGrouped()
23
+ * @package wsal
24
  */
25
  class WSAL_Adapters_MySQL_TmpUser extends WSAL_Adapters_MySQL_ActiveRecord {
26
 
classes/Adapters/OccurrenceInterface.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Interface used by the Occurrence.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  /**
16
  * Interface used by the Occurrence.
17
  *
18
- * @package Wsal
19
  */
20
  interface WSAL_Adapters_OccurrenceInterface {
21
 
4
  *
5
  * Interface used by the Occurrence.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
15
  /**
16
  * Interface used by the Occurrence.
17
  *
18
+ * @package wsal
19
  */
20
  interface WSAL_Adapters_OccurrenceInterface {
21
 
classes/Adapters/QueryInterface.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Interface used by the Query.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  /**
16
  * Interface used by the Query.
17
  *
18
- * @package Wsal
19
  */
20
  interface WSAL_Adapters_QueryInterface {
21
 
@@ -39,4 +39,11 @@ interface WSAL_Adapters_QueryInterface {
39
  * @param object $query - Query object.
40
  */
41
  public function Delete( $query );
 
 
 
 
 
 
 
42
  }
4
  *
5
  * Interface used by the Query.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
15
  /**
16
  * Interface used by the Query.
17
  *
18
+ * @package wsal
19
  */
20
  interface WSAL_Adapters_QueryInterface {
21
 
39
  * @param object $query - Query object.
40
  */
41
  public function Delete( $query );
42
+
43
+ /**
44
+ * Checks if the adapter is successfully connected.
45
+ * @return bool True if the adapter is connected. False otherwise.
46
+ * @since 4.3.2
47
+ */
48
+ public function IsConnected();
49
  }
classes/Alert.php CHANGED
@@ -3,7 +3,7 @@
3
  /**
4
  * WSAL_Alert Object class.
5
  *
6
- * @package Wsal
7
  */
8
  final class WSAL_Alert {
9
 
@@ -106,31 +106,6 @@ final class WSAL_Alert {
106
  $this->links = $links;
107
  }
108
 
109
- /**
110
- * Gets the username.
111
- *
112
- * @param array $meta - Event meta data.
113
- *
114
- * @return string User's username.
115
- *
116
- * @since latest Made the meta attribute mandatory, changed to static and moved from occurrence to alert.
117
- */
118
- public static function GetUsername( $meta ) {
119
- if ( ! is_array( $meta ) ) {
120
- return '';
121
- }
122
-
123
- if ( isset( $meta['Username'] ) ) {
124
- return $meta['Username'];
125
- } elseif ( isset( $meta['CurrentUserID'] ) ) {
126
- $data = get_userdata( $meta['CurrentUserID'] );
127
-
128
- return $data ? $data->user_login : null;
129
- }
130
-
131
- return '';
132
- }
133
-
134
  /**
135
  * Gets alert message.
136
  *
3
  /**
4
  * WSAL_Alert Object class.
5
  *
6
+ * @package wsal
7
  */
8
  final class WSAL_Alert {
9
 
106
  $this->links = $links;
107
  }
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  /**
110
  * Gets alert message.
111
  *
classes/AlertFormatter.php CHANGED
@@ -5,7 +5,7 @@
5
  * Class file for alert formatter.
6
  *
7
  * @since 4.2.1
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  *
21
  * Formatting rules are given by given formatter configuration.
22
  *
23
- * @package Wsal
24
  * @since 4.2.1
25
  */
26
  final class WSAL_AlertFormatter {
@@ -42,6 +42,10 @@ final class WSAL_AlertFormatter {
42
  return $this->configuration->getEndOfLine();
43
  }
44
 
 
 
 
 
45
  /**
46
  * @param string $expression Meta expression including the surrounding percentage chars.
47
  * @param string $value Meta value.
@@ -58,9 +62,10 @@ final class WSAL_AlertFormatter {
58
  return esc_html( $value );
59
 
60
  case '%MetaLink%' == $expression:
61
- if ( $this->configuration->isJsInLinksAllowed() ) {
62
- $label = __( 'Exclude Custom Field from the Monitoring', 'wp-security-audit-log' );
63
- $result = "<a href=\"#\" data-disable-custom-nonce='" . wp_create_nonce( 'disable-custom-nonce' . $value ) . "' onclick=\"return WsalDisableCustom(this, '" . $value . "');\"> {$label}</a>";
 
64
 
65
  return $this->wrap_in_hightlight_markup( $result );
66
  }
@@ -308,8 +313,11 @@ final class WSAL_AlertFormatter {
308
  */
309
  protected function build_link_markup( $url, $label, $title = '', $target = '_blank' ) {
310
  $title = empty( $title ) ? $label : $title;
 
 
 
311
 
312
- return '<a href="' . esc_url( $url ) . '" title="' . $title . '" target="' . $target . '">' . $label . '</a>';
313
  }
314
 
315
  /**
5
  * Class file for alert formatter.
6
  *
7
  * @since 4.2.1
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
20
  *
21
  * Formatting rules are given by given formatter configuration.
22
  *
23
+ * @package wsal
24
  * @since 4.2.1
25
  */
26
  final class WSAL_AlertFormatter {
42
  return $this->configuration->getEndOfLine();
43
  }
44
 
45
+ public function set_end_of_line($value) {
46
+ return $this->configuration->setEndOfLine($value);
47
+ }
48
+
49
  /**
50
  * @param string $expression Meta expression including the surrounding percentage chars.
51
  * @param string $value Meta value.
62
  return esc_html( $value );
63
 
64
  case '%MetaLink%' == $expression:
65
+ // NULL value check is here because events related to user meta fields didn't have the MetaLink meta prior to version 4.3.2
66
+ if ( $this->configuration->isJsInLinksAllowed() && 'NULL' !== $value ) {
67
+ $label = __( 'Exclude custom field from the monitoring', 'wp-security-audit-log' );
68
+ $result = "<a href=\"#\" data-object-type='{$metadata['Object']}' data-disable-custom-nonce='" . wp_create_nonce( 'disable-custom-nonce' . $value ) . "' onclick=\"return WsalDisableCustom(this, '" . $value . "');\"> {$label}</a>";
69
 
70
  return $this->wrap_in_hightlight_markup( $result );
71
  }
313
  */
314
  protected function build_link_markup( $url, $label, $title = '', $target = '_blank' ) {
315
  $title = empty( $title ) ? $label : $title;
316
+ if ( $this->configuration->canUseHtmlMarkupForLinks() ) {
317
+ return '<a href="' . esc_url( $url ) . '" title="' . $title . '" target="' . $target . '">' . $label . '</a>';
318
+ }
319
 
320
+ return $label . ': ' . esc_url( $url );
321
  }
322
 
323
  /**
classes/AlertFormatterConfiguration.php CHANGED
@@ -14,8 +14,8 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  *
15
  * All setter methods are fluent to allow for method chaining.
16
  *
17
- * @package Wsal
18
- * @since latest
19
  */
20
  class WSAL_AlertFormatterConfiguration {
21
 
@@ -76,6 +76,12 @@ class WSAL_AlertFormatterConfiguration {
76
  */
77
  protected $ellipses_sequence = '...';
78
 
 
 
 
 
 
 
79
  /**
80
  * Private empty constructor used for method chaining. Builder methods should be used to retrieve implementations
81
  * of this configuration.
@@ -125,6 +131,27 @@ class WSAL_AlertFormatterConfiguration {
125
  return $this;
126
  }
127
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  /**
129
  * @return string
130
  */
14
  *
15
  * All setter methods are fluent to allow for method chaining.
16
  *
17
+ * @package wsal
18
+ * @since 4.3.0
19
  */
20
  class WSAL_AlertFormatterConfiguration {
21
 
76
  */
77
  protected $ellipses_sequence = '...';
78
 
79
+ /**
80
+ * @var bool
81
+ * @since 4.3.2
82
+ */
83
+ protected $use_html_markup_for_links = true;
84
+
85
  /**
86
  * Private empty constructor used for method chaining. Builder methods should be used to retrieve implementations
87
  * of this configuration.
131
  return $this;
132
  }
133
 
134
+ /**
135
+ * @return bool
136
+ * @since 4.3.2
137
+ */
138
+ public function canUseHtmlMarkupForLinks(): bool {
139
+ return $this->use_html_markup_for_links;
140
+ }
141
+
142
+ /**
143
+ * @param bool $use_html_markup_for_links
144
+ *
145
+ * @return WSAL_AlertFormatterConfiguration
146
+ * @since 4.3.2
147
+ *
148
+ */
149
+ public function setUseHtmlMarkupForLinks( bool $use_html_markup_for_links ): WSAL_AlertFormatterConfiguration {
150
+ $this->use_html_markup_for_links = $use_html_markup_for_links;
151
+
152
+ return $this;
153
+ }
154
+
155
  /**
156
  * @return string
157
  */
classes/AlertFormatterFactory.php CHANGED
@@ -5,7 +5,7 @@
5
  * Class file for alert formatter factory.
6
  *
7
  * @since 4.2.1
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  *
19
  * Manages various alert formatters and allows registration of custom alert formatters.
20
  *
21
- * @package Wsal
22
  */
23
  class WSAL_AlertFormatterFactory {
24
 
@@ -82,7 +82,7 @@ class WSAL_AlertFormatterFactory {
82
 
83
  /**
84
  * @return WSAL_AlertFormatter Default formatter using full featured HTML configuration.
85
- * @since latest
86
  */
87
  private static function createDefaultFormatter() {
88
  return new WSAL_AlertFormatter( WpSecurityAuditLog::GetInstance(), WSAL_AlertFormatterConfiguration::buildHtmlConfiguration() );
5
  * Class file for alert formatter factory.
6
  *
7
  * @since 4.2.1
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
18
  *
19
  * Manages various alert formatters and allows registration of custom alert formatters.
20
  *
21
+ * @package wsal
22
  */
23
  class WSAL_AlertFormatterFactory {
24
 
82
 
83
  /**
84
  * @return WSAL_AlertFormatter Default formatter using full featured HTML configuration.
85
+ * @since 4.3.0
86
  */
87
  private static function createDefaultFormatter() {
88
  return new WSAL_AlertFormatter( WpSecurityAuditLog::GetInstance(), WSAL_AlertFormatterConfiguration::buildHtmlConfiguration() );
classes/AlertManager.php CHANGED
@@ -5,7 +5,7 @@
5
  * CLass file for alert manager.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  *
19
  * It is the actual trigger for the alerts.
20
  *
21
- * @package Wsal
22
  */
23
  final class WSAL_AlertManager {
24
 
@@ -66,13 +66,6 @@ final class WSAL_AlertManager {
66
  */
67
  protected $_triggered_types = array();
68
 
69
- /**
70
- * Log events schedule hook name
71
- *
72
- * @var string
73
- */
74
- private static $log_events_schedule_hook = 'wsal_log_events_ext_db';
75
-
76
  /**
77
  * WP Users
78
  *
@@ -111,7 +104,6 @@ final class WSAL_AlertManager {
111
  $this->AddFromFile( $file );
112
  }
113
 
114
- add_action( 'wsal_init', array( $this, 'schedule_log_events' ) );
115
  add_action( 'shutdown', array( $this, '_CommitPipeline' ), 8 );
116
 
117
  /**
@@ -154,32 +146,6 @@ final class WSAL_AlertManager {
154
  $this->sanitized_date_format = $this->plugin->settings()->GetDateFormat( true );
155
  }
156
 
157
- /**
158
- * Method: Schedule log events for External DB
159
- * if buffer is enabled.
160
- */
161
- public function schedule_log_events() {
162
- // Get external buffer option.
163
- $use_buffer = $this->plugin->GetGlobalBooleanSetting( 'adapter-use-buffer' );
164
-
165
- // If external DB buffer is enabled then set the cron.
166
- if ( $use_buffer ) {
167
- // Hook scheduled method.
168
- add_action( self::$log_events_schedule_hook, array( $this, 'log_temp_alerts' ) );
169
-
170
- // Schedule event if there isn't any already.
171
- if ( ! wp_next_scheduled( self::$log_events_schedule_hook ) ) {
172
- wp_schedule_event(
173
- time(), // Timestamp.
174
- 'tenminutes', // Frequency.
175
- self::$log_events_schedule_hook // Scheduled event.
176
- );
177
- }
178
- } elseif ( ! $use_buffer && wp_next_scheduled( self::$log_events_schedule_hook ) ) {
179
- wp_clear_scheduled_hook( self::$log_events_schedule_hook );
180
- }
181
- }
182
-
183
  /**
184
  * Add new logger from file inside autoloader path.
185
  *
@@ -208,19 +174,6 @@ final class WSAL_AlertManager {
208
  $this->_loggers[] = $logger;
209
  }
210
 
211
- /**
212
- * Remove logger by class name.
213
- *
214
- * @param string $class The class name.
215
- */
216
- public function RemoveByClass( $class ) {
217
- foreach ( $this->_loggers as $i => $inst ) {
218
- if ( get_class( $inst ) == $class ) {
219
- unset( $this->_loggers[ $i ] );
220
- }
221
- }
222
- }
223
-
224
  /**
225
  * Trigger an alert.
226
  *
@@ -229,15 +182,9 @@ final class WSAL_AlertManager {
229
  * @param mixed $delayed - False if delayed, function if not.
230
  */
231
  public function Trigger( $type, $data = array(), $delayed = false ) {
232
- // Get buffer use option.
233
- $use_buffer = $this->plugin->GetGlobalBooleanSetting( 'adapter-use-buffer' );
234
-
235
- // Log temporary alerts first.
236
- if ( ! $use_buffer ) {
237
- $this->log_temp_alerts();
238
- }
239
-
240
  $username = wp_get_current_user()->user_login;
 
241
  // if user switching plugin class exists and filter is set to disable then try get the old user.
242
  if ( apply_filters( 'wsal_disable_user_switching_plugin_tracking', false ) && class_exists( 'user_switching' ) ) {
243
  $old_user = user_switching::get_old_user();
@@ -300,6 +247,7 @@ final class WSAL_AlertManager {
300
  *
301
  * @param string $user - Username.
302
  * @param array $roles - User roles.
 
303
  * @return boolean - True if enable false otherwise.
304
  */
305
  public function CheckEnableUserRoles( $user, $roles ) {
@@ -321,9 +269,7 @@ 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
-
325
  $username = null;
326
- $roles = [];
327
 
328
  // if user switching plugin class exists and filter is set to disable then try get the old user.
329
  if ( apply_filters( 'wsal_disable_user_switching_plugin_tracking', false ) && class_exists( 'user_switching' ) ) {
@@ -337,6 +283,7 @@ final class WSAL_AlertManager {
337
  }
338
  }
339
 
 
340
  if ( 1000 === $type ) {
341
  // when event 1000 is triggered, the user is not logged in
342
  // we need to extract the username and user roles from the event data
@@ -496,6 +443,20 @@ final class WSAL_AlertManager {
496
  throw new Exception( sprintf( esc_html__( 'Event %s already registered with WP Activity Log.', 'wp-security-audit-log' ), $code ) );
497
  }
498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
499
  $this->_alerts[ $code ] = new WSAL_Alert( $code, $severity, $category, $subcategory, $desc, $message, $metadata, $links, $object, $event_type );
500
  }
501
 
@@ -699,7 +660,6 @@ final class WSAL_AlertManager {
699
  */
700
  $event_data = apply_filters( 'wsal_event_data_before_log', $event_data, $event_id );
701
 
702
- // log to internal and/or external database immediately
703
  foreach ( $this->_loggers as $logger ) {
704
  $logger->Log( $event_id, $event_data );
705
  }
@@ -890,54 +850,6 @@ final class WSAL_AlertManager {
890
  return $is_disabled;
891
  }
892
 
893
- /**
894
- * Method: Log temporary stored alerts if DB connection
895
- * is back.
896
- *
897
- * @return boolean
898
- * @throws Freemius_Exception
899
- */
900
- public function log_temp_alerts() {
901
- // Get temporary alerts.
902
- $temp_alerts = $this->plugin->GetGlobalSetting( 'temp_alerts', array() );
903
-
904
- if ( empty( $temp_alerts ) ) {
905
- return true;
906
- }
907
-
908
- // Get DB connector.
909
- $db_config = WSAL_Connector_ConnectorFactory::GetConfig(); // Get DB connector configuration.
910
- $connector = $this->plugin->getConnector( $db_config ); // Get connector for DB.
911
- $wsal_db = $connector->getConnection(); // Get DB connection.
912
- $connection = true;
913
- if ( isset( $wsal_db->dbh->errno ) ) {
914
- $connection = 0 !== (int) $wsal_db->dbh->errno ? false : true; // Database connection error check.
915
- } elseif ( is_wp_error( $wsal_db->error ) ) {
916
- $connection = false;
917
- }
918
-
919
- // Check DB connection.
920
- if ( $connection ) { // If connected then log temporary alerts in DB.
921
- // Log each alert.
922
- foreach ( $temp_alerts as $alert ) {
923
- $is_migrated = $alert['alert']['is_migrated'];
924
- $created_on = $alert['alert']['created_on'];
925
- $alert_id = $alert['alert']['alert_id'];
926
- $site_id = $alert['alert']['site_id'];
927
-
928
- // Loggers.
929
- foreach ( $this->_loggers as $logger ) {
930
- $logger->Log( $alert_id, $alert['alert_data'], $created_on, $site_id, $is_migrated, true );
931
- }
932
- }
933
-
934
- // Delete temporary alerts.
935
- $this->plugin->DeleteGlobalSetting( 'temp_alerts' );
936
-
937
- return true;
938
- }
939
- }
940
-
941
  /**
942
  * Return alerts for MainWP Extension.
943
  *
@@ -989,7 +901,7 @@ final class WSAL_AlertManager {
989
  foreach ( $events as $event ) {
990
  // Get event meta.
991
  $meta_data = $event->GetMetaArray();
992
- $meta_data['UserData'] = $this->get_event_user_data( $event->GetUsername() );
993
  $mwp_events->events[ $event->id ] = new stdClass();
994
  $mwp_events->events[ $event->id ]->id = $event->id;
995
  $mwp_events->events[ $event->id ]->alert_id = $event->alert_id;
@@ -1070,6 +982,11 @@ final class WSAL_AlertManager {
1070
  public function get_latest_events( $limit = 1 ) {
1071
  // Occurrence query.
1072
  $occ_query = new WSAL_Models_OccurrenceQuery();
 
 
 
 
 
1073
 
1074
  // Get site id.
1075
  $site_id = (int) $this->plugin->settings()->get_view_site_id();
@@ -1569,92 +1486,28 @@ final class WSAL_AlertManager {
1569
  * @return array
1570
  */
1571
  private function generate_report( $filters ) {
1572
- // Filters.
1573
- $sites = null;
1574
- $users = empty( $filters['users'] ) ? array() : $filters['users'];
1575
- $roles = empty( $filters['roles'] ) ? null : $filters['roles'];
1576
- $ip_addresses = empty( $filters['ip-addresses'] ) ? null : $filters['ip-addresses'];
1577
- $alert_groups = empty( $filters['alert-codes']['groups'] ) ? null : $filters['alert-codes']['groups'];
1578
- $alert_codes = empty( $filters['alert-codes']['alerts'] ) ? null : $filters['alert-codes']['alerts'];
1579
- $date_start = empty( $filters['date-range']['start'] ) ? null : $filters['date-range']['start'];
1580
- $date_end = empty( $filters['date-range']['end'] ) ? null : $filters['date-range']['end'];
1581
  $report_format = empty( $filters['report-format'] ) ? 'html' : 'csv';
1582
-
1583
- $next_date = empty( $filters['nextDate'] ) ? null : $filters['nextDate'];
1584
- $limit = empty( $filters['limit'] ) ? 0 : $filters['limit'];
1585
-
1586
- if ( empty( $alert_groups ) && empty( $alert_codes ) ) {
1587
- return false;
1588
- }
1589
-
1590
  if ( ! in_array( $report_format, array( 'csv', 'html' ), true ) ) {
1591
  return false;
1592
  }
1593
 
1594
- // Check alert codes and post types.
1595
- $codes = $this->get_codes_by_groups( $alert_groups, $alert_codes );
1596
-
1597
- if ( ! $codes ) {
1598
  return false;
1599
  }
1600
 
1601
- /**
1602
- * -- @userId: COMMA-SEPARATED-LIST WordPress user id
1603
- * -- @siteId: COMMA-SEPARATED-LIST WordPress site id
1604
- * -- @postType: COMMA-SEPARATED-LIST WordPress post types
1605
- * -- @postStatus: COMMA-SEPARATED-LIST WordPress post statuses
1606
- * -- @roleName: REGEXP (must be quoted from PHP)
1607
- * -- @alertCode: COMMA-SEPARATED-LIST of numeric alert codes
1608
- * -- @startTimestamp: UNIX_TIMESTAMP
1609
- * -- @endTimestamp: UNIX_TIMESTAMP
1610
- *
1611
- * Usage:
1612
- * --------------------------
1613
- * set @siteId = null; -- '1,2,3,4....';
1614
- * set @userId = null;
1615
- * set @postType = null; -- 'post,page';
1616
- * set @postStatus = null; -- 'publish,draft';
1617
- * set @roleName = null; -- '(administrator)|(editor)';
1618
- * set @alertCode = null; -- '1000,1002';
1619
- * set @startTimestamp = null;
1620
- * set @endTimestamp = null;
1621
- */
1622
- $site_ids = $sites ? "'" . implode( ',', $sites ) . "'" : 'null';
1623
- $user_ids = $this->get_user_ids( $users );
1624
-
1625
- $role_names = 'null';
1626
- $start_timestamp = 'null';
1627
- $end_timestamp = 'null';
1628
-
1629
- if ( $roles ) {
1630
- $role_names = array();
1631
-
1632
- foreach ( $roles as $role ) {
1633
- array_push( $role_names, esc_sql( '(' . preg_quote( $role ) . ')' ) );
1634
- }
1635
-
1636
- $role_names = "'" . implode( '|', $role_names ) . "'";
1637
- }
1638
-
1639
- $ip_address = $ip_addresses ? "'" . implode( ',', $ip_addresses ) . "'" : 'null';
1640
- $alert_codes = ! empty( $codes ) ? "'" . implode( ',', $codes ) . "'" : 'null';
1641
-
1642
- if ($date_start) {
1643
- $start_datetime = DateTime::createFromFormat($this->sanitized_date_format . ' H:i:s', $date_start . ' 00:00:00');
1644
- $start_timestamp = $start_datetime->format('U');
1645
- }
1646
 
1647
- if ($date_end) {
1648
- $end_datetime = DateTime::createFromFormat($this->sanitized_date_format . ' H:i:s', $date_end . ' 23:59:59');
1649
- $end_timestamp = $end_datetime->format('U');
1650
- }
1651
 
1652
  $last_date = null;
1653
 
1654
  if ( isset( $filters['unique-ip'] ) && $filters['unique-ip'] ) {
1655
- $results = $this->plugin->getConnector()->getAdapter( 'Occurrence' )->GetReportGrouped( $site_ids, $start_timestamp, $end_timestamp, $user_ids, $role_names, $ip_address );
1656
  } else {
1657
- $results = $this->plugin->getConnector()->getAdapter( 'Occurrence' )->GetReporting( $site_ids, $user_ids, $role_names, $alert_codes, $start_timestamp, $end_timestamp, $next_date, $limit, 'null', 'null' );
1658
  }
1659
 
1660
  if ( ! empty( $results['lastDate'] ) ) {
@@ -1713,40 +1566,9 @@ final class WSAL_AlertManager {
1713
  * @throws Freemius_Exception
1714
  */
1715
  private function generate_statistics_unique_ips( $filters ) {
1716
- $date_start = ! empty( $filters['date-range']['start'] ) ? $filters['date-range']['start'] : null;
1717
- $date_end = ! empty( $filters['date-range']['end'] ) ? $filters['date-range']['end'] : null;
1718
- $sites = null;
1719
-
1720
- $user_id = ! empty( $filters['users'] ) ? $filters['users'] : 'null';
1721
- $role_name = ! empty( $filters['roles'] ) ? $filters['roles'] : 'null';
1722
- $ip_address = ! empty( $filters['ip-addresses'] ) ? $filters['ip-addresses'] : 'null';
1723
-
1724
- $alert_groups = ! empty( $filters['alert-codes']['groups'] ) ? $filters['alert-codes']['groups'] : null;
1725
- $alert_codes = ! empty( $filters['alert-codes']['alerts'] ) ? $filters['alert-codes']['alerts'] : null;
1726
-
1727
- // Alert Groups.
1728
- $_codes = $this->get_codes_by_groups( $alert_groups, $alert_codes );
1729
 
1730
- if ( ! $_codes ) {
1731
- return false;
1732
- }
1733
-
1734
- $site_id = $sites ? "'" . implode( ',', $sites ) . "'" : 'null';
1735
- $start_timestamp = 'null';
1736
- $end_timestamp = 'null';
1737
- $alert_code = "'" . implode( ',', $_codes ) . "'";
1738
-
1739
- if ($date_start) {
1740
- $start_datetime = DateTime::createFromFormat($this->sanitized_date_format . ' H:i:s', $date_start . ' 00:00:00');
1741
- $start_timestamp = $start_datetime->format('U');
1742
- }
1743
-
1744
- if ($date_end) {
1745
- $end_datetime = DateTime::createFromFormat($this->sanitized_date_format . ' H:i:s', $date_end . ' 23:59:59');
1746
- $end_timestamp = $end_datetime->format('U');
1747
- }
1748
-
1749
- $results = $this->plugin->getConnector()->getAdapter( 'Occurrence' )->GetReportGrouped( $site_id, $start_timestamp, $end_timestamp, $user_id, $role_name, $ip_address, $alert_code );
1750
  return array_values( $results );
1751
  }
1752
 
@@ -1754,9 +1576,10 @@ final class WSAL_AlertManager {
1754
  * Get user ids for reports.
1755
  *
1756
  * @param array $usernames - Array of usernames.
 
1757
  * @return string
1758
  */
1759
- private function get_user_ids( $usernames ) {
1760
  global $wpdb;
1761
 
1762
  if ( empty( $usernames ) ) {
@@ -1802,7 +1625,7 @@ final class WSAL_AlertManager {
1802
  * @param array $event_codes - Event codes.
1803
  * @param bool $show_error - (Optional) False if errors do not need to be displayed.
1804
  */
1805
- private function get_codes_by_groups( $event_groups, $event_codes, $show_error = true ) {
1806
  $_codes = array();
1807
  $has_event_groups = empty( $event_groups ) ? false : true;
1808
  $has_event_codes = empty( $event_codes ) ? false : true;
@@ -1923,20 +1746,15 @@ final class WSAL_AlertManager {
1923
  $occurrence->created_on = $created_on;
1924
 
1925
  $event_metadata = $occurrence->GetMetaArray();
1926
-
1927
- if ( $occurrence->is_migrated ) {
1928
- $occurrence->_cachedmessage = $occurrence->GetMetaValue( 'MigratedMesg', false );
1929
- }
1930
-
1931
- if ( ! $occurrence->is_migrated || ! $occurrence->_cachedmessage ) {
1932
- $occurrence->_cachedmessage = $occurrence->GetAlert()->GetMessage( $event_metadata, null, $entry_id, $context );
1933
  }
1934
 
1935
  if ( ! $user_id ) {
1936
  $username = __( 'System', 'wp-security-audit-log' );
1937
  $roles = '';
1938
  } else {
1939
- $username = WSAL_Alert::GetUsername( $event_metadata );
1940
  }
1941
 
1942
  // Meta details.
5
  * CLass file for alert manager.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
18
  *
19
  * It is the actual trigger for the alerts.
20
  *
21
+ * @package wsal
22
  */
23
  final class WSAL_AlertManager {
24
 
66
  */
67
  protected $_triggered_types = array();
68
 
 
 
 
 
 
 
 
69
  /**
70
  * WP Users
71
  *
104
  $this->AddFromFile( $file );
105
  }
106
 
 
107
  add_action( 'shutdown', array( $this, '_CommitPipeline' ), 8 );
108
 
109
  /**
146
  $this->sanitized_date_format = $this->plugin->settings()->GetDateFormat( true );
147
  }
148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  /**
150
  * Add new logger from file inside autoloader path.
151
  *
174
  $this->_loggers[] = $logger;
175
  }
176
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  /**
178
  * Trigger an alert.
179
  *
182
  * @param mixed $delayed - False if delayed, function if not.
183
  */
184
  public function Trigger( $type, $data = array(), $delayed = false ) {
185
+ // figure out the username
 
 
 
 
 
 
 
186
  $username = wp_get_current_user()->user_login;
187
+
188
  // if user switching plugin class exists and filter is set to disable then try get the old user.
189
  if ( apply_filters( 'wsal_disable_user_switching_plugin_tracking', false ) && class_exists( 'user_switching' ) ) {
190
  $old_user = user_switching::get_old_user();
247
  *
248
  * @param string $user - Username.
249
  * @param array $roles - User roles.
250
+ *
251
  * @return boolean - True if enable false otherwise.
252
  */
253
  public function CheckEnableUserRoles( $user, $roles ) {
269
  * @param callable $cond - A future condition callback (receives an object of type WSAL_AlertManager as parameter).
270
  */
271
  public function TriggerIf( $type, $data, $cond = null ) {
 
272
  $username = null;
 
273
 
274
  // if user switching plugin class exists and filter is set to disable then try get the old user.
275
  if ( apply_filters( 'wsal_disable_user_switching_plugin_tracking', false ) && class_exists( 'user_switching' ) ) {
283
  }
284
  }
285
 
286
+ $roles = [];
287
  if ( 1000 === $type ) {
288
  // when event 1000 is triggered, the user is not logged in
289
  // we need to extract the username and user roles from the event data
443
  throw new Exception( sprintf( esc_html__( 'Event %s already registered with WP Activity Log.', 'wp-security-audit-log' ), $code ) );
444
  }
445
 
446
+ /**
447
+ * WSAL Filter: `wsal_event_metadata_definition`
448
+ *
449
+ * Filters event meta data definition before registering specific event with the alert manager. This is the
450
+ * preferred way to change metadata definition of built-in events.
451
+ *
452
+ * @param array $metadata - Event data.
453
+ * @param integer $code - Event ID.
454
+ *
455
+ * @since 4.3.2
456
+ *
457
+ */
458
+ $metadata = apply_filters( 'wsal_event_metadata_definition', $metadata, $code );
459
+
460
  $this->_alerts[ $code ] = new WSAL_Alert( $code, $severity, $category, $subcategory, $desc, $message, $metadata, $links, $object, $event_type );
461
  }
462
 
660
  */
661
  $event_data = apply_filters( 'wsal_event_data_before_log', $event_data, $event_id );
662
 
 
663
  foreach ( $this->_loggers as $logger ) {
664
  $logger->Log( $event_id, $event_data );
665
  }
850
  return $is_disabled;
851
  }
852
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
853
  /**
854
  * Return alerts for MainWP Extension.
855
  *
901
  foreach ( $events as $event ) {
902
  // Get event meta.
903
  $meta_data = $event->GetMetaArray();
904
+ $meta_data['UserData'] = $this->get_event_user_data( WSAL_Utilities_UsersUtils::GetUsername( $meta_data ) );
905
  $mwp_events->events[ $event->id ] = new stdClass();
906
  $mwp_events->events[ $event->id ]->id = $event->id;
907
  $mwp_events->events[ $event->id ]->alert_id = $event->alert_id;
982
  public function get_latest_events( $limit = 1 ) {
983
  // Occurrence query.
984
  $occ_query = new WSAL_Models_OccurrenceQuery();
985
+ if ( ! $occ_query->getAdapter()->IsConnected() ) {
986
+ // connection problem while using external database (if local database is used, we would see WordPress's
987
+ // "Error Establishing a Database Connection" screen
988
+ return false;
989
+ }
990
 
991
  // Get site id.
992
  $site_id = (int) $this->plugin->settings()->get_view_site_id();
1486
  * @return array
1487
  */
1488
  private function generate_report( $filters ) {
1489
+ // check the report format
 
 
 
 
 
 
 
 
1490
  $report_format = empty( $filters['report-format'] ) ? 'html' : 'csv';
 
 
 
 
 
 
 
 
1491
  if ( ! in_array( $report_format, array( 'csv', 'html' ), true ) ) {
1492
  return false;
1493
  }
1494
 
1495
+ // some alert codes or alert groups are needed to run a report
1496
+ if ( empty( $filters['alert-codes']['groups'] ) && empty( $filters['alert-codes']['codes'] ) ) {
 
 
1497
  return false;
1498
  }
1499
 
1500
+ $args = WSAL_ReportArgs::build_from_alternative_filters( $filters, $this );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1501
 
1502
+ $next_date = empty( $filters['nextDate'] ) ? null : $filters['nextDate'];
1503
+ $limit = empty( $filters['limit'] ) ? 0 : $filters['limit'];
 
 
1504
 
1505
  $last_date = null;
1506
 
1507
  if ( isset( $filters['unique-ip'] ) && $filters['unique-ip'] ) {
1508
+ $results = $this->plugin->getConnector()->getAdapter( 'Occurrence' )->GetReportGrouped( $args );
1509
  } else {
1510
+ $results = $this->plugin->getConnector()->getAdapter( 'Occurrence' )->GetReporting( $args, $next_date, $limit );
1511
  }
1512
 
1513
  if ( ! empty( $results['lastDate'] ) ) {
1566
  * @throws Freemius_Exception
1567
  */
1568
  private function generate_statistics_unique_ips( $filters ) {
1569
+ $report_args = WSAL_ReportArgs::build_from_alternative_filters( $filters, $this );
1570
+ $results = $this->plugin->getConnector()->getAdapter( 'Occurrence' )->GetReportGrouped( $report_args );
 
 
 
 
 
 
 
 
 
 
 
1571
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1572
  return array_values( $results );
1573
  }
1574
 
1576
  * Get user ids for reports.
1577
  *
1578
  * @param array $usernames - Array of usernames.
1579
+ *
1580
  * @return string
1581
  */
1582
+ public function get_user_ids( $usernames ) {
1583
  global $wpdb;
1584
 
1585
  if ( empty( $usernames ) ) {
1625
  * @param array $event_codes - Event codes.
1626
  * @param bool $show_error - (Optional) False if errors do not need to be displayed.
1627
  */
1628
+ public function get_codes_by_groups( $event_groups, $event_codes, $show_error = true ) {
1629
  $_codes = array();
1630
  $has_event_groups = empty( $event_groups ) ? false : true;
1631
  $has_event_codes = empty( $event_codes ) ? false : true;
1746
  $occurrence->created_on = $created_on;
1747
 
1748
  $event_metadata = $occurrence->GetMetaArray();
1749
+ if ( ! $occurrence->_cachedMessage ) {
1750
+ $occurrence->_cachedMessage = $occurrence->GetAlert()->GetMessage( $event_metadata, null, $entry_id, $context );
 
 
 
 
 
1751
  }
1752
 
1753
  if ( ! $user_id ) {
1754
  $username = __( 'System', 'wp-security-audit-log' );
1755
  $roles = '';
1756
  } else {
1757
+ $username = WSAL_Utilities_UsersUtils::GetUsername( $event_metadata );
1758
  }
1759
 
1760
  // Meta details.
classes/AuditLogGridView.php CHANGED
@@ -5,7 +5,7 @@
5
  * CLass file for audit log list view.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -20,7 +20,7 @@ require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
20
  * This view is included in Audit Log Viewer Page.
21
  *
22
  * @see Views/AuditLog.php
23
- * @package Wsal
24
  */
25
  class WSAL_AuditLogGridView extends WP_List_Table {
26
 
@@ -77,15 +77,23 @@ class WSAL_AuditLogGridView extends WP_List_Table {
77
  */
78
  private $item_meta = array();
79
 
 
 
 
 
 
 
80
  /**
81
  * Method: Constructor.
82
  *
83
- * @param object $plugin - Instance of WpSecurityAuditLog.
 
84
  * @param stdClass $query_args - Events query arguments.
85
  */
86
- public function __construct( $plugin, $query_args ) {
87
- $this->_plugin = $plugin;
88
- $this->query_args = $query_args;
 
89
 
90
  parent::__construct(
91
  array(
@@ -213,31 +221,6 @@ class WSAL_AuditLogGridView extends WP_List_Table {
213
  }
214
  }
215
 
216
- // Switch to live or archive DB.
217
- if ( $this->_plugin->settings()->IsArchivingEnabled() ) {
218
- if (
219
- ( 'top' === $which && $this->_plugin->settings()->is_infinite_scroll() )
220
- || ! $this->_plugin->settings()->is_infinite_scroll()
221
- ) {
222
- $selected = 'live';
223
- $selected_db = get_transient( 'wsal_wp_selected_db' );
224
- if ( $selected_db && 'archive' === $selected_db ) {
225
- $selected = 'archive';
226
- }
227
- ?>
228
- <div class="wsal-ssa wsal-db">
229
- <select class="wsal-db" onchange="WsalDBChange(value);">
230
- <option value="live" <?php echo ( 'live' == $selected ) ? 'selected="selected"' : false; ?>>
231
- <?php esc_html_e( 'Live Database', 'wp-security-audit-log' ); ?>
232
- </option>
233
- <option value="archive" <?php echo ( 'archive' == $selected ) ? 'selected="selected"' : false; ?>>
234
- <?php esc_html_e( 'Archive Database', 'wp-security-audit-log' ); ?>
235
- </option>
236
- </select>
237
- </div>
238
- <?php
239
- }
240
- }
241
  }
242
 
243
  /**
@@ -401,17 +384,17 @@ class WSAL_AuditLogGridView extends WP_List_Table {
401
  return ! $info ? ( 'Unknown Site ' . $item->site_id )
402
  : ( '<a href="' . esc_attr( $info->siteurl ) . '">' . esc_html( $info->blogname ) . '</a>' );
403
  case 'mesg':
404
- ob_start();
405
- // login, logout and failed login has no message attached.
406
  if ( ! in_array( $item->alert_id, array( 1000, 1001, 1002 ), true ) ) {
407
- ?>
408
- <table id="Event<?php echo absint( $item->id ); ?>">
409
- <td class="wsal-grid-text-header"><?php esc_html_e( 'Message:', 'alm-' ); ?></td>
410
- <td class="wsal-grid-text-data"><?php echo $item->GetMessage( $this->item_meta[ $item->getId() ] ); ?></td>
411
- </table>
412
- <?php
 
413
  }
414
- return ob_get_clean();
415
  case 'info':
416
  $eventdate = $item->created_on
417
  ? WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime($item->created_on, 'date' )
@@ -421,7 +404,7 @@ class WSAL_AuditLogGridView extends WP_List_Table {
421
  ? WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime($item->created_on, 'time' )
422
  : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
423
 
424
- $username = WSAL_Alert::GetUsername( $this->item_meta[ $item->getId() ] ); // Get username.
425
  $user = get_user_by( 'login', $username ); // Get user.
426
  if ( empty( $this->name_type ) ) {
427
  $this->name_type = $this->_plugin->settings()->get_type_username();
@@ -820,13 +803,6 @@ class WSAL_AuditLogGridView extends WP_List_Table {
820
  * @return array
821
  */
822
  public function query_events( $paged = 0 ) {
823
- if ( $this->_plugin->settings()->IsArchivingEnabled() ) {
824
- // Switch to Archive DB.
825
- $selected_db = get_transient( 'wsal_wp_selected_db' );
826
- if ( $selected_db && 'archive' === $selected_db ) {
827
- $this->_plugin->settings()->SwitchToArchiveDB();
828
- }
829
- }
830
 
831
  // TO DO: Get rid of OccurrenceQuery and use the Occurence Model.
832
  $query = new WSAL_Models_OccurrenceQuery();
5
  * CLass file for audit log list view.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
20
  * This view is included in Audit Log Viewer Page.
21
  *
22
  * @see Views/AuditLog.php
23
+ * @package wsal
24
  */
25
  class WSAL_AuditLogGridView extends WP_List_Table {
26
 
77
  */
78
  private $item_meta = array();
79
 
80
+ /**
81
+ * @var WSAL_Views_AuditLog
82
+ * @since 4.3.2
83
+ */
84
+ private $audit_log_view;
85
+
86
  /**
87
  * Method: Constructor.
88
  *
89
+ * @param WpSecurityAuditLog $plugin - Instance of WpSecurityAuditLog.
90
+ * @param WSAL_Views_AuditLog $audit_log_view Audit log view.
91
  * @param stdClass $query_args - Events query arguments.
92
  */
93
+ public function __construct( $plugin, $audit_log_view, $query_args ) {
94
+ $this->_plugin = $plugin;
95
+ $this->audit_log_view = $audit_log_view;
96
+ $this->query_args = $query_args;
97
 
98
  parent::__construct(
99
  array(
221
  }
222
  }
223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  }
225
 
226
  /**
384
  return ! $info ? ( 'Unknown Site ' . $item->site_id )
385
  : ( '<a href="' . esc_attr( $info->siteurl ) . '">' . esc_html( $info->blogname ) . '</a>' );
386
  case 'mesg':
387
+ // login, logout and failed login have no message attached.
 
388
  if ( ! in_array( $item->alert_id, array( 1000, 1001, 1002 ), true ) ) {
389
+ $event_meta = $this->item_meta[ $item->getId() ];
390
+ $result = '<table id="Event' . absint( $item->id ) . '">';
391
+ $result .= '<td class="wsal-grid-text-header">' . esc_html__( 'Message:', 'wp-security-audit-log' ) . '</td>';
392
+ $result .= '<td class="wsal-grid-text-data">' . $item->GetMessage( $event_meta ) . '</td>';
393
+ $result .= '</table>';
394
+ $result .= $this->audit_log_view->maybe_build_teaser_html( $event_meta );
395
+ return $result;
396
  }
397
+ return '';
398
  case 'info':
399
  $eventdate = $item->created_on
400
  ? WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime($item->created_on, 'date' )
404
  ? WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime($item->created_on, 'time' )
405
  : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
406
 
407
+ $username = WSAL_Utilities_UsersUtils::GetUsername( $this->item_meta[ $item->getId() ] ); // Get username.
408
  $user = get_user_by( 'login', $username ); // Get user.
409
  if ( empty( $this->name_type ) ) {
410
  $this->name_type = $this->_plugin->settings()->get_type_username();
803
  * @return array
804
  */
805
  public function query_events( $paged = 0 ) {
 
 
 
 
 
 
 
806
 
807
  // TO DO: Get rid of OccurrenceQuery and use the Occurence Model.
808
  $query = new WSAL_Models_OccurrenceQuery();
classes/AuditLogListView.php CHANGED
@@ -5,7 +5,7 @@
5
  * CLass file for audit log list view.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -20,7 +20,7 @@ require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
20
  * This view is included in Audit Log Viewer Page.
21
  *
22
  * @see Views/AuditLog.php
23
- * @package Wsal
24
  */
25
  class WSAL_AuditLogListView extends WP_List_Table {
26
 
@@ -68,15 +68,23 @@ class WSAL_AuditLogListView extends WP_List_Table {
68
  */
69
  private $item_meta = array();
70
 
 
 
 
 
 
 
71
  /**
72
  * Method: Constructor.
73
  *
74
- * @param object $plugin - Instance of WpSecurityAuditLog.
 
75
  * @param stdClass $query_args - Events query arguments.
76
  */
77
- public function __construct( $plugin, $query_args ) {
78
- $this->_plugin = $plugin;
79
- $this->query_args = $query_args;
 
80
 
81
  parent::__construct(
82
  array(
@@ -211,32 +219,6 @@ class WSAL_AuditLogListView extends WP_List_Table {
211
  }
212
  }
213
 
214
-
215
- // Switch to live or archive DB.
216
- if ( $this->_plugin->settings()->IsArchivingEnabled() ) {
217
- if (
218
- ( 'top' === $which && $this->_plugin->settings()->is_infinite_scroll() )
219
- || ! $this->_plugin->settings()->is_infinite_scroll()
220
- ) {
221
- $selected = 'live';
222
- $selected_db = get_transient( 'wsal_wp_selected_db' );
223
- if ( $selected_db && 'archive' === $selected_db ) {
224
- $selected = 'archive';
225
- }
226
- ?>
227
- <div class="wsal-ssa wsal-db">
228
- <select class="wsal-db" onchange="WsalDBChange(value);">
229
- <option value="live" <?php echo ( 'live' == $selected ) ? 'selected="selected"' : false; ?>>
230
- <?php esc_html_e( 'Live Database', 'wp-security-audit-log' ); ?>
231
- </option>
232
- <option value="archive" <?php echo ( 'archive' == $selected ) ? 'selected="selected"' : false; ?>>
233
- <?php esc_html_e( 'Archive Database', 'wp-security-audit-log' ); ?>
234
- </option>
235
- </select>
236
- </div>
237
- <?php
238
- }
239
- }
240
  }
241
 
242
  /**
@@ -365,7 +347,6 @@ class WSAL_AuditLogListView extends WP_List_Table {
365
  */
366
  public function get_sortable_columns() {
367
  return array(
368
- 'read' => array( 'is_read', false ),
369
  'type' => array( 'alert_id', false ),
370
  'crtd' => array( 'created_on', true ),
371
  'user' => array( 'user', true ),
@@ -394,10 +375,6 @@ class WSAL_AuditLogListView extends WP_List_Table {
394
  $this->current_alert_id = $item->id;
395
 
396
  switch ( $column_name ) {
397
- case 'read':
398
- return '<span class="log-read log-read-'
399
- . ( $item->is_read ? 'old' : 'new' )
400
- . '" title="' . __( 'Click to toggle.', 'wp-security-audit-log' ) . '"></span>';
401
  case 'type':
402
  $code = $this->_plugin->alerts->GetAlert(
403
  $item->alert_id,
@@ -435,7 +412,7 @@ class WSAL_AuditLogListView extends WP_List_Table {
435
  ? WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime( $item->created_on, 'datetime', true, true )
436
  : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
437
  case 'user':
438
- $username = WSAL_Alert::GetUsername( $this->item_meta[ $item->getId() ] );
439
  $user = get_user_by( 'login', $username );
440
  $roles = '';
441
  $image = '<span class="dashicons dashicons-wordpress wsal-system-icon"></span>';
@@ -534,7 +511,10 @@ class WSAL_AuditLogListView extends WP_List_Table {
534
  return ! $info ? ( 'Unknown Site ' . $item->site_id )
535
  : ( '<a href="' . esc_attr( $info->siteurl ) . '">' . esc_html( $info->blogname ) . '</a>' );
536
  case 'mesg':
537
- return '<div id="Event' . $item->id . '">' . $item->GetMessage( $this->item_meta[ $item->getId() ] ) . '</div>';
 
 
 
538
  case 'data':
539
  $url = admin_url( 'admin-ajax.php' ) . '?action=AjaxInspector&amp;occurrence=' . $item->id;
540
  $tooltip = esc_attr__( 'View all details of this change', 'wp-security-audit-log' );
@@ -787,17 +767,9 @@ class WSAL_AuditLogListView extends WP_List_Table {
787
  * @return array
788
  */
789
  public function query_events( $paged = 0 ) {
790
- if ( $this->_plugin->settings()->IsArchivingEnabled() ) {
791
- // Switch to Archive DB.
792
- $selected_db = get_transient( 'wsal_wp_selected_db' );
793
- if ( $selected_db && 'archive' === $selected_db ) {
794
- $this->_plugin->settings()->SwitchToArchiveDB();
795
- }
796
- }
797
 
798
- // TO DO: Get rid of OccurrenceQuery and use the Occurence Model.
799
  $query = new WSAL_Models_OccurrenceQuery();
800
-
801
  $bid = (int) $this->query_args->site_id;
802
  if ( $bid ) {
803
  $query->addCondition( 'site_id = %s ', $bid );
5
  * CLass file for audit log list view.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
20
  * This view is included in Audit Log Viewer Page.
21
  *
22
  * @see Views/AuditLog.php
23
+ * @package wsal
24
  */
25
  class WSAL_AuditLogListView extends WP_List_Table {
26
 
68
  */
69
  private $item_meta = array();
70
 
71
+ /**
72
+ * @var WSAL_Views_AuditLog
73
+ * @since 4.3.2
74
+ */
75
+ private $audit_log_view;
76
+
77
  /**
78
  * Method: Constructor.
79
  *
80
+ * @param WpSecurityAuditLog $plugin - Instance of WpSecurityAuditLog.
81
+ * @param WSAL_Views_AuditLog $audit_log_view Audit log view.
82
  * @param stdClass $query_args - Events query arguments.
83
  */
84
+ public function __construct( $plugin, $audit_log_view, $query_args ) {
85
+ $this->_plugin = $plugin;
86
+ $this->audit_log_view = $audit_log_view;
87
+ $this->query_args = $query_args;
88
 
89
  parent::__construct(
90
  array(
219
  }
220
  }
221
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  }
223
 
224
  /**
347
  */
348
  public function get_sortable_columns() {
349
  return array(
 
350
  'type' => array( 'alert_id', false ),
351
  'crtd' => array( 'created_on', true ),
352
  'user' => array( 'user', true ),
375
  $this->current_alert_id = $item->id;
376
 
377
  switch ( $column_name ) {
 
 
 
 
378
  case 'type':
379
  $code = $this->_plugin->alerts->GetAlert(
380
  $item->alert_id,
412
  ? WSAL_Utilities_DateTimeFormatter::instance()->getFormattedDateTime( $item->created_on, 'datetime', true, true )
413
  : '<i>' . __( 'Unknown', 'wp-security-audit-log' ) . '</i>';
414
  case 'user':
415
+ $username = WSAL_Utilities_UsersUtils::GetUsername( $this->item_meta[ $item->getId() ] );
416
  $user = get_user_by( 'login', $username );
417
  $roles = '';
418
  $image = '<span class="dashicons dashicons-wordpress wsal-system-icon"></span>';
511
  return ! $info ? ( 'Unknown Site ' . $item->site_id )
512
  : ( '<a href="' . esc_attr( $info->siteurl ) . '">' . esc_html( $info->blogname ) . '</a>' );
513
  case 'mesg':
514
+ $event_meta = $this->item_meta[ $item->getId() ];
515
+ $result = '<div id="Event' . $item->id . '">' . $item->GetMessage( $event_meta ) . '</div>';
516
+ $result .= $this->audit_log_view->maybe_build_teaser_html( $event_meta );
517
+ return $result;
518
  case 'data':
519
  $url = admin_url( 'admin-ajax.php' ) . '?action=AjaxInspector&amp;occurrence=' . $item->id;
520
  $tooltip = esc_attr__( 'View all details of this change', 'wp-security-audit-log' );
767
  * @return array
768
  */
769
  public function query_events( $paged = 0 ) {
 
 
 
 
 
 
 
770
 
771
+ // TO DO: Get rid of OccurrenceQuery and use the Occurrence Model.
772
  $query = new WSAL_Models_OccurrenceQuery();
 
773
  $bid = (int) $this->query_args->site_id;
774
  if ( $bid ) {
775
  $query->addCondition( 'site_id = %s ', $bid );
classes/Autoloader.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Classes Auto Loader.
4
  *
5
- * @package Wsal
6
  */
7
  class WSAL_Autoloader {
8
 
2
  /**
3
  * Classes Auto Loader.
4
  *
5
+ * @package wsal
6
  */
7
  class WSAL_Autoloader {
8
 
classes/Connector/AbstractConnector.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Abstract class used as a class loader.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -20,7 +20,7 @@ require_once( 'wp-db-custom.php' );
20
  *
21
  * Abstract class used as a class loader.
22
  *
23
- * @package Wsal
24
  */
25
  abstract class WSAL_Connector_AbstractConnector {
26
 
4
  *
5
  * Abstract class used as a class loader.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
20
  *
21
  * Abstract class used as a class loader.
22
  *
23
+ * @package wsal
24
  */
25
  abstract class WSAL_Connector_AbstractConnector {
26
 
classes/Connector/ConnectorFactory.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Abstract class used for create the connector, only MySQL is implemented.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  * Abstract class used for create the connector, only MySQL is implemented.
19
  *
20
  * @todo Add other adapters.
21
- * @package Wsal
22
  */
23
  abstract class WSAL_Connector_ConnectorFactory {
24
 
@@ -33,7 +33,7 @@ abstract class WSAL_Connector_ConnectorFactory {
33
  *
34
  * @var array
35
  */
36
- private static $connector;
37
  /**
38
  * Occurrence is installed.
39
  *
@@ -54,31 +54,50 @@ abstract class WSAL_Connector_ConnectorFactory {
54
  /**
55
  * Returns a connector singleton
56
  *
57
- * @param array $config - Connection config.
58
  * @param bool $reset - True if reset.
59
  *
60
  * @return WSAL_Connector_ConnectorInterface
61
  * @throws Freemius_Exception
62
  */
63
  public static function GetConnector( $config = null, $reset = false ) {
64
- if ( ! empty( $config ) ) {
65
- $connection_config = $config;
 
 
66
  } else {
67
- $connection_config = self::GetConfig();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  }
69
 
70
  // TO DO: Load connection config.
71
- if ( null == self::$connector || ! empty( $config ) || $reset ) {
72
- switch ( strtolower( isset( $connection_config['type'] ) ? $connection_config['type'] : '' ) ) {
 
73
  // TO DO: Add other connectors.
74
  case 'mysql':
75
  default:
76
  // Use config.
77
- self::$connector = new WSAL_Connector_MySQLDB( $connection_config );
78
  }
79
  }
80
 
81
- return self::$connector;
82
  }
83
 
84
  /**
@@ -137,8 +156,8 @@ abstract class WSAL_Connector_ConnectorFactory {
137
  // only mysql supported at the moment
138
  if ( array_key_exists( 'type', $config ) && 'mysql' === $config['type'] ) {
139
  try {
140
- $test = new WSAL_Connector_MySQLDB( $config );
141
- return $test->TestConnection();
142
  } catch ( Exception $e ) {
143
  return false;
144
  }
4
  *
5
  * Abstract class used for create the connector, only MySQL is implemented.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
18
  * Abstract class used for create the connector, only MySQL is implemented.
19
  *
20
  * @todo Add other adapters.
21
+ * @package wsal
22
  */
23
  abstract class WSAL_Connector_ConnectorFactory {
24
 
33
  *
34
  * @var array
35
  */
36
+ private static $connectors = [];
37
  /**
38
  * Occurrence is installed.
39
  *
54
  /**
55
  * Returns a connector singleton
56
  *
57
+ * @param string|array $config DB configuration array, db alias or empty to use default connection.
58
  * @param bool $reset - True if reset.
59
  *
60
  * @return WSAL_Connector_ConnectorInterface
61
  * @throws Freemius_Exception
62
  */
63
  public static function GetConnector( $config = null, $reset = false ) {
64
+ $connection_config = null;
65
+ if ( is_null( $config ) || empty( $config ) ) {
66
+ // default config - local or external, depending on plugin settings and licensing
67
+ $connection_config = self::GetConfig( $config );
68
  } else {
69
+ if ( is_string( $config ) ) {
70
+ // string based config, can be used to retrieve local WP connection
71
+ if ( 'local' === $config ) {
72
+ // this forces the WSAL_Connector_MySQLDB to return connection to local WP database
73
+ $connection_config = null;
74
+ }
75
+ } else if ( is_array( $config ) ) {
76
+ // array config gets connection to whatever database configuration it holds
77
+ $connection_config = $config;
78
+ }
79
+ }
80
+
81
+ $cache_key = 'default';
82
+ if ( is_string( $config ) ) {
83
+ $cache_key = $connection_config;
84
+ } else if ( is_array( $connection_config ) ) {
85
+ $cache_key = $connection_config['name'];
86
  }
87
 
88
  // TO DO: Load connection config.
89
+ if ( ! array_key_exists($cache_key, self::$connectors) || $reset ) {
90
+ $connection_type = is_array( $connection_config ) && isset( $connection_config['type'] ) ? strtolower( $connection_config['type'] ) : '';
91
+ switch ( $connection_type ) {
92
  // TO DO: Add other connectors.
93
  case 'mysql':
94
  default:
95
  // Use config.
96
+ self::$connectors[$cache_key] = new WSAL_Connector_MySQLDB( $connection_config );
97
  }
98
  }
99
 
100
+ return self::$connectors[$cache_key];
101
  }
102
 
103
  /**
156
  // only mysql supported at the moment
157
  if ( array_key_exists( 'type', $config ) && 'mysql' === $config['type'] ) {
158
  try {
159
+ $connector = new WSAL_Connector_MySQLDB( $config );
160
+ return $connector->TestConnection();
161
  } catch ( Exception $e ) {
162
  return false;
163
  }
classes/Connector/ConnectorInterface.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Interface used by the WSAL_Connector.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  /**
16
  * Interface used by the WSAL_Connector.
17
  *
18
- * @package Wsal
19
  */
20
  interface WSAL_Connector_ConnectorInterface {
21
 
@@ -30,6 +30,8 @@ interface WSAL_Connector_ConnectorInterface {
30
 
31
  /**
32
  * Get the connection.
 
 
33
  */
34
  public function getConnection();
35
 
@@ -43,11 +45,6 @@ interface WSAL_Connector_ConnectorInterface {
43
  */
44
  public function isInstalled();
45
 
46
- /**
47
- * Can migrate?
48
- */
49
- public function canMigrate();
50
-
51
  /**
52
  * Install all.
53
  *
4
  *
5
  * Interface used by the WSAL_Connector.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
15
  /**
16
  * Interface used by the WSAL_Connector.
17
  *
18
+ * @package wsal
19
  */
20
  interface WSAL_Connector_ConnectorInterface {
21
 
30
 
31
  /**
32
  * Get the connection.
33
+ *
34
+ * @return wpdb
35
  */
36
  public function getConnection();
37
 
45
  */
46
  public function isInstalled();
47
 
 
 
 
 
 
48
  /**
49
  * Install all.
50
  *
classes/Connector/MySQLDB.php CHANGED
@@ -5,7 +5,7 @@
5
  * MySQL Connector Class
6
  * It uses wpdb WordPress DB Class
7
  *
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * MySQL Connector Class
18
  * It uses wpdb WordPress DB Class
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements WSAL_Connector_ConnectorInterface {
23
 
@@ -41,15 +41,15 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
41
  /**
42
  * Test the connection.
43
  *
44
- * @throws Exception - Connection failed.
45
  * @return bool
 
46
  */
47
  public function TestConnection() {
48
  error_reporting( E_ALL ^ ( E_NOTICE | E_WARNING | E_DEPRECATED ) );
49
  $connection_config = $this->connectionConfig;
50
  $password = $this->decryptString( $connection_config['password'] );
51
 
52
- $new_wpdb = new wpdbCustom( $connection_config['user'], $password, $connection_config['db_name'], $connection_config['hostname'], $connection_config['is_ssl'], $connection_config['is_cc'], $connection_config['ssl_ca'], $connection_config['ssl_cert'], $connection_config['ssl_key'], true );
53
 
54
  if ( isset( $new_wpdb->error ) && isset( $new_wpdb->dbh ) ) {
55
  throw new Exception( $new_wpdb->dbh->error, $new_wpdb->dbh->errno );
@@ -64,7 +64,7 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
64
  if ( $error_message ) {
65
  throw new Exception(
66
  sprintf(
67
- /* translators: 1 - mysqli error code, 2 - mysqli error message */
68
  __( 'Code %1$d: %2$s', 'wp-security-audit-log' ),
69
  $error_code,
70
  $error_message
@@ -83,26 +83,71 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
83
  }
84
 
85
  /**
86
- * Creates a connection and returns it
 
87
  *
88
- * @return wpdb Instance of WPDB.
 
 
 
89
  */
90
- private function createConnection() {
91
- if ( ! empty( $this->connectionConfig ) ) {
92
- $connection_config = $this->connectionConfig;
93
- $password = $this->decryptString( $connection_config['password'] );
94
- $new_wpdb = new wpdbCustom( $connection_config['user'], $password, $connection_config['db_name'], $connection_config['hostname'], $connection_config['is_ssl'], $connection_config['is_cc'], $connection_config['ssl_ca'], $connection_config['ssl_cert'], $connection_config['ssl_key'] );
95
- if ( array_key_exists( 'baseprefix', $connection_config ) ) {
96
- $new_wpdb->set_prefix( $connection_config['baseprefix'] );
97
- }
98
 
99
- return $new_wpdb;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  } else {
101
- global $wpdb;
102
- return $wpdb;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
104
  }
105
 
 
 
 
 
 
 
 
 
 
106
  /**
107
  * Returns a wpdb instance
108
  *
@@ -113,26 +158,43 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
113
  return $this->connection;
114
  } else {
115
  $this->connection = $this->createConnection();
 
116
  return $this->connection;
117
  }
118
  }
119
 
120
  /**
121
- * Close DB connection
 
 
122
  */
123
- public function closeConnection() {
124
- $current_wpdb = $this->getConnection();
125
- return $current_wpdb->close();
 
 
 
 
 
 
 
 
 
 
 
 
126
  }
127
 
128
  /**
129
  * Gets an adapter for the specified model.
130
  *
131
  * @param string $class_name - Class name.
 
132
  * @return WSAL_Adapters_ActiveRecordInterface
133
  */
134
  public function getAdapter( $class_name ) {
135
  $obj_name = $this->getAdapterClassName( $class_name );
 
136
  return new $obj_name( $this->getConnection() );
137
  }
138
 
@@ -140,6 +202,7 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
140
  * Gets an adapter class name for the specified model.
141
  *
142
  * @param string $class_name - Class name.
 
143
  * @return string
144
  */
145
  protected function getAdapterClassName( $class_name ) {
@@ -152,21 +215,27 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
152
  * @return bool true|false
153
  */
154
  public function isInstalled() {
155
- $wpdb = $this->getConnection();
156
- $table = $wpdb->base_prefix . 'wsal_occurrences';
157
- $db_result = $wpdb->query( "SELECT COUNT(1) FROM {$table};");
 
158
  return 1 === $db_result;
159
  }
160
 
161
  /**
162
- * Checks if old version tables are available
163
  *
164
- * @return bool true|false
165
  */
166
- public function canMigrate() {
167
- $wpdb = $this->getConnection();
168
- $table = $wpdb->base_prefix . 'wordpress_auditlog_events';
169
- return $table === $wpdb->get_var( "SHOW TABLES LIKE '" . $table . "'" );
 
 
 
 
 
170
  }
171
 
172
  /**
@@ -176,10 +245,11 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
176
  * @param bool $is_external_database
177
  */
178
  public function installSingle( $class_name, $is_external_database = false ) {
179
- if ( class_exists( $class_name ) ) {
180
- $class = new $class_name( $this->getConnection() );
181
  }
182
 
 
183
  if ( $is_external_database && $class instanceof WSAL_Adapters_MySQL_Session ) {
184
  // sessions table should only ever exist only in local database
185
  return;
@@ -195,22 +265,6 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
195
  }
196
  }
197
 
198
- /**
199
- * Install all DB tables.
200
- *
201
- * @param bool $is_external_database If true, some tables will not be created.
202
- */
203
- public function installAll( $is_external_database = false ) {
204
- $adapter_list = glob( $this->getAdaptersDirectory() . DIRECTORY_SEPARATOR . '*.php' );
205
- $adapter_list = apply_filters( 'wsal_install_adapters_list', $adapter_list );
206
- foreach ( $adapter_list as $file ) {
207
- $file_path = explode( DIRECTORY_SEPARATOR, $file );
208
- $file_name = $file_path[ count( $file_path ) - 1 ];
209
- $class_name = $this->getAdapterClassName( str_replace( 'Adapter.php', '', $file_name ) );
210
- $this->installSingle( $class_name, $is_external_database );
211
- }
212
- }
213
-
214
  /**
215
  * Uninstall all DB tables.
216
  */
@@ -228,235 +282,150 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
228
  }
229
 
230
  /**
231
- * Increase occurrence ID
232
  *
233
- * @return integer MAX(id)
 
 
234
  */
235
- private function GetIncreaseOccurrence() {
236
- $_wpdb = $this->getConnection();
237
- $occurrence_new = new WSAL_Adapters_MySQL_Occurrence( $_wpdb );
238
- $sql = 'SELECT MAX(id) FROM ' . $occurrence_new->GetTable();
239
- return (int) $_wpdb->get_var( $sql );
240
  }
241
 
242
  /**
243
- * Migrate Metadata from WP DB to External DB.
244
  *
245
- * @param integer $index - Index.
246
- * @param integer $limit - Limit.
247
  *
248
- * @return array
 
 
 
 
249
  */
250
- public function MigrateMeta( $index, $limit ) {
251
- $result = null;
252
- $offset = ( $index * $limit );
253
- global $wpdb;
254
- $_wpdb = $this->getConnection();
255
- // Add +1 because an alert is generated after delete the metadata table.
256
- $increase_occurrence_id = $this->GetIncreaseOccurrence() + 1;
257
-
258
- // Load data Meta from WP.
259
- $meta = new WSAL_Adapters_MySQL_Meta( $wpdb );
260
- if ( ! $meta->IsInstalled() ) {
261
- $result['empty'] = true;
262
- return $result;
263
  }
264
- $sql = 'SELECT * FROM ' . $meta->GetWPTable() . ' LIMIT ' . $limit . ' OFFSET ' . $offset;
265
- $metadata = $wpdb->get_results( $sql, ARRAY_A );
266
 
267
- // Insert data to External DB.
268
- if ( ! empty( $metadata ) ) {
269
- $meta_new = new WSAL_Adapters_MySQL_Meta( $_wpdb );
270
 
271
- $index++;
272
- $sql = 'INSERT INTO ' . $meta_new->GetTable() . ' (occurrence_id, name, value) VALUES ';
273
- foreach ( $metadata as $entry ) {
274
- $occurrence_id = intval( $entry['occurrence_id'] ) + $increase_occurrence_id;
275
- $sql .= $_wpdb->prepare(
276
- '( %d, %s, %s ), ',
277
- $occurrence_id,
278
- $entry['name'],
279
- $entry['value']
280
- );
281
- }
282
- $sql = rtrim( $sql, ', ' );
283
- $_wpdb->query( $sql );
284
 
285
- $result['complete'] = false;
286
- } else {
287
- $result['complete'] = true;
288
- $this->DeleteAfterMigrate( $meta );
289
  }
290
- $result['index'] = $index;
291
- return $result;
292
- }
293
 
294
- /**
295
- * Migrate Occurrences from WP DB to External DB.
296
- *
297
- * @param integer $index - Index.
298
- * @param integer $limit - Limit.
299
- *
300
- * @return array
301
- */
302
- public function MigrateOccurrence( $index, $limit ) {
303
- $result = null;
304
- $offset = ( $index * $limit );
305
- global $wpdb;
306
- $_wpdb = $this->getConnection();
307
 
308
- // Load data Occurrences from WP.
309
- $occurrence = new WSAL_Adapters_MySQL_Occurrence( $wpdb );
310
- if ( ! $occurrence->IsInstalled() ) {
311
- $result['empty'] = true;
312
- return $result;
313
- }
314
- $sql = 'SELECT * FROM ' . $occurrence->GetWPTable() . ' LIMIT ' . $limit . ' OFFSET ' . $offset;
315
- $occurrences = $wpdb->get_results( $sql, ARRAY_A );
316
- $result['count'] = count( $occurrences );
317
 
318
- // Insert data to External DB.
319
- if ( ! empty( $occurrences ) ) {
320
- $occurrence_new = new WSAL_Adapters_MySQL_Occurrence( $_wpdb );
 
 
 
321
 
322
- $index++;
323
- $sql = 'INSERT INTO ' . $occurrence_new->GetTable() . ' (site_id, alert_id, created_on, is_read) VALUES ';
324
- foreach ( $occurrences as $entry ) {
325
- $sql .= $_wpdb->prepare(
326
- '( %d, %d, %d, %d ), ',
327
- intval( $entry['site_id'] ),
328
- intval( $entry['alert_id'] ),
329
- $entry['created_on'],
330
- $entry['is_read']
331
- );
332
- }
333
- $sql = rtrim( $sql, ', ' );
334
- $_wpdb->query( $sql );
335
 
336
- $result['complete'] = false;
337
- } else {
338
- $result['complete'] = true;
339
- $this->DeleteAfterMigrate( $occurrence );
340
  }
341
- $result['index'] = $index;
342
- return $result;
 
 
 
 
 
343
  }
344
 
345
  /**
346
- * Migrate Back Occurrences from External DB to WP DB.
347
- *
348
- * @param integer $index - Index.
349
- * @param integer $limit - Limit.
350
  *
351
- * @return array
352
  */
353
- public function MigrateBackOccurrence( $index, $limit ) {
354
- $result = null;
355
- $offset = ( $index * $limit );
356
  global $wpdb;
357
- $_wpdb = $this->getConnection();
358
-
359
- // Load data Occurrences from External DB.
360
- $occurrence = new WSAL_Adapters_MySQL_Occurrence( $_wpdb );
361
- if ( ! $occurrence->IsInstalled() ) {
362
- $result['empty'] = true;
363
- return $result;
364
- }
365
- $sql = 'SELECT * FROM ' . $occurrence->GetTable() . ' LIMIT ' . $limit . ' OFFSET ' . $offset;
366
- $occurrences = $_wpdb->get_results( $sql, ARRAY_A );
367
- $result['count'] = count( $occurrences );
368
-
369
- // Insert data to WP.
370
- if ( ! empty( $occurrences ) ) {
371
- $occurrence_wp = new WSAL_Adapters_MySQL_Occurrence( $wpdb );
372
-
373
- $index++;
374
- $sql = 'INSERT INTO ' . $occurrence_wp->GetWPTable() . ' (id, site_id, alert_id, created_on, is_read) VALUES ';
375
- foreach ( $occurrences as $entry ) {
376
- $sql .= $wpdb->prepare(
377
- '( %d, %d, %d, %d, %d ), ',
378
- intval( $entry['id'] ),
379
- intval( $entry['site_id'] ),
380
- intval( $entry['alert_id'] ),
381
- $entry['created_on'],
382
- $entry['is_read']
383
- );
384
- }
385
- $sql = rtrim( $sql, ', ' );
386
- $wpdb->query( $sql );
387
-
388
- $result['complete'] = false;
389
- } else {
390
- $result['complete'] = true;
391
- }
392
- $result['index'] = $index;
393
- return $result;
394
  }
395
 
396
  /**
397
- * Migrate Back Metadata from External DB to WP DB.
398
  *
399
- * @param integer $index - Index.
400
- * @param integer $limit - Limit.
 
 
401
  *
402
- * @return array
403
  */
404
- public function MigrateBackMeta( $index, $limit ) {
405
- $result = null;
406
- $offset = ( $index * $limit );
407
- global $wpdb;
408
- $_wpdb = $this->getConnection();
409
 
410
- // Load data Meta from External DB.
411
- $meta = new WSAL_Adapters_MySQL_Meta( $_wpdb );
412
- if ( ! $meta->IsInstalled() ) {
413
- $result['empty'] = true;
414
- return $result;
415
  }
416
- $sql = 'SELECT * FROM ' . $meta->GetTable() . ' LIMIT ' . $limit . ' OFFSET ' . $offset;
417
- $metadata = $_wpdb->get_results( $sql, ARRAY_A );
418
 
419
- // Insert data to WP.
 
 
 
 
420
  if ( ! empty( $metadata ) ) {
421
- $meta_wp = new WSAL_Adapters_MySQL_Meta( $wpdb );
422
 
423
- $index++;
424
- $sql = 'INSERT INTO ' . $meta_wp->GetWPTable() . ' (occurrence_id, name, value) VALUES ';
425
  foreach ( $metadata as $entry ) {
426
- $sql .= $wpdb->prepare(
427
  '( %d, %s, %s ), ',
428
- intval( $entry['occurrence_id'] ),
429
  $entry['name'],
430
  $entry['value']
431
  );
432
  }
433
- $sql = rtrim( $sql, ', ' );
434
- $wpdb->query( $sql );
435
 
436
- $result['complete'] = false;
437
- } else {
438
- $result['complete'] = true;
439
  }
440
- $result['index'] = $index;
441
- return $result;
442
  }
443
 
444
  /**
445
- * Delete after Migrate alerts.
446
  *
447
- * @param object $record - Type of record.
 
 
448
  */
449
- private function DeleteAfterMigrate( $record ) {
450
  global $wpdb;
451
- $sql = 'DROP TABLE IF EXISTS ' . $record->GetTable();
452
- $wpdb->query( $sql );
453
  }
454
 
455
  /**
456
  * Encrypt plain text.
457
  * Encrypt string, before saves it to the DB.
458
  *
459
- * @param string $plaintext - Plain text that is going to be encrypted.
 
460
  * @return string
461
  * @since 2.6.3
462
  */
@@ -479,54 +448,6 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
479
  return $ciphertext;
480
  }
481
 
482
- /**
483
- * Encrypt plain text - Fallback.
484
- *
485
- * @param string $plaintext - Plain text that is going to be encrypted.
486
- * @deprecated 3.2.3.3
487
- */
488
- public function encryptString_fallback( $plaintext ) {
489
- $wsal = WpSecurityAuditLog::GetInstance();
490
- $wsal->wsal_deprecate( __METHOD__, '3.2.3.3' );
491
- }
492
-
493
- /**
494
- * Decrypt the encrypted string.
495
- * Decrypt string, after reads it from the DB.
496
- *
497
- * @param string $ciphertext_base64 - encrypted string.
498
- * @return string
499
- * @since 2.6.3
500
- */
501
- public function decryptString( $ciphertext_base64 ) {
502
-
503
- $plaintext = false;
504
- $encrypt_method = 'AES-256-CBC';
505
- $secret_key = $this->truncateKey();
506
- $secret_iv = $this->get_openssl_iv();
507
-
508
- // Hash the key.
509
- $key = hash( 'sha256', $secret_key );
510
-
511
- // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning.
512
- $iv = substr( hash( 'sha256', $secret_iv ), 0, 16 );
513
-
514
- $plaintext = openssl_decrypt( base64_decode( $ciphertext_base64 ), $encrypt_method, $key, 0, $iv );
515
-
516
- return $plaintext;
517
- }
518
-
519
- /**
520
- * Decrypt the encrypted string - Fallback.
521
- *
522
- * @param string $ciphertext_base64 - Encrypted string.
523
- * @deprecated 3.2.3.3
524
- */
525
- public function decryptString_fallback( $ciphertext_base64 ) {
526
- $wsal = WpSecurityAuditLog::GetInstance();
527
- $wsal->wsal_deprecate( __METHOD__, '3.2.3.3' );
528
- }
529
-
530
  /**
531
  * Archiving Occurrences Table.
532
  * Read from current DB and copy into Archive DB.
@@ -536,7 +457,7 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
536
  * @return array|false|null
537
  */
538
  public function ArchiveOccurrence( $args ) {
539
- $_wpdb = $this->getConnection();
540
  /** @var wpdbCustom $archive_db */
541
  $archive_db = $args['archive_db'];
542
 
@@ -568,24 +489,25 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
568
  if ( ! empty( $occurrences ) ) {
569
  $last = end( $occurrences );
570
  $args['last_created_on'] = $last['created_on'];
571
- $args['occurrence_ids'] = array();
572
 
573
  $occurrence_new = new WSAL_Adapters_MySQL_Occurrence( $archive_db );
574
 
575
  $sql = 'INSERT INTO ' . $occurrence_new->GetTable() . ' (id, site_id, alert_id, created_on, is_read) VALUES ';
576
  foreach ( $occurrences as $entry ) {
577
- $sql .= $archive_db->prepare(
578
  '( %d, %d, %d, %d, %d ), ',
579
  intval( $entry['id'] ),
580
  intval( $entry['site_id'] ),
581
  intval( $entry['alert_id'] ),
582
  $entry['created_on'],
583
- $entry['is_read']
584
  );
585
  $args['occurrence_ids'][] = $entry['id'];
586
  }
587
  $sql = rtrim( $sql, ', ' );
588
  $archive_db->query( $sql );
 
589
  return $args;
590
  } else {
591
  return false;
@@ -601,7 +523,7 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
601
  * @return array|false|null
602
  */
603
  public function ArchiveMeta( $args ) {
604
- $_wpdb = $this->getConnection();
605
  /** @var wpdbCustom $archive_db */
606
  $archive_db = $args['archive_db'];
607
 
@@ -611,8 +533,8 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
611
  return null;
612
  }
613
  $s_occurrence_ids = implode( ', ', $args['occurrence_ids'] );
614
- $sql = 'SELECT * FROM ' . $meta->GetTable() . ' WHERE occurrence_id IN (' . $s_occurrence_ids . ')';
615
- $metadata = $_wpdb->get_results( $sql, ARRAY_A );
616
 
617
  // Insert data to Archive DB.
618
  if ( ! empty( $metadata ) ) {
@@ -629,6 +551,7 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
629
  }
630
  $sql = rtrim( $sql, ', ' );
631
  $archive_db->query( $sql );
 
632
  return $args;
633
  } else {
634
  return false;
@@ -641,7 +564,7 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
641
  * @param array $args - Archive Database and occurrences IDs.
642
  */
643
  public function DeleteAfterArchive( $args ) {
644
- $_wpdb = $this->getConnection();
645
 
646
  $s_occurrence_ids = implode( ', ', $args['occurrence_ids'] );
647
 
@@ -654,40 +577,6 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
654
  $_wpdb->query( $sql );
655
  }
656
 
657
- /**
658
- * Truncate string longer than 32 characters.
659
- * Authentication Unique Key
660
- *
661
- * @see wp-config.php
662
- * @return string AUTH_KEY
663
- */
664
- private function truncateKey() {
665
- if ( ! defined( 'AUTH_KEY' ) ) {
666
- return 'x4>Tg@G-Kr6a]o-eJeP^?UO)KW;LbV)I';
667
- }
668
- $key_size = strlen( AUTH_KEY );
669
- if ( $key_size > 32 ) {
670
- return substr( AUTH_KEY, 0, 32 );
671
- } else {
672
- return AUTH_KEY;
673
- }
674
- }
675
-
676
- /**
677
- * Get OpenSSL IV for DB.
678
- *
679
- * @since 2.6.3
680
- */
681
- private function get_openssl_iv() {
682
- $secret_openssl_iv = 'і-(аэ┤#≥и┴зейН';
683
- $key_size = strlen( $secret_openssl_iv );
684
- if ( $key_size > 32 ) {
685
- return substr( $secret_openssl_iv, 0, 32 );
686
- } else {
687
- return $secret_openssl_iv;
688
- }
689
- }
690
-
691
  /**
692
  * Purge plugin occurrence & meta tables.
693
  *
5
  * MySQL Connector Class
6
  * It uses wpdb WordPress DB Class
7
  *
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * MySQL Connector Class
18
  * It uses wpdb WordPress DB Class
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements WSAL_Connector_ConnectorInterface {
23
 
41
  /**
42
  * Test the connection.
43
  *
 
44
  * @return bool
45
+ * @throws Exception - Connection failed.
46
  */
47
  public function TestConnection() {
48
  error_reporting( E_ALL ^ ( E_NOTICE | E_WARNING | E_DEPRECATED ) );
49
  $connection_config = $this->connectionConfig;
50
  $password = $this->decryptString( $connection_config['password'] );
51
 
52
+ $new_wpdb = new wpdbCustom( $connection_config['user'], $password, $connection_config['db_name'], $connection_config['hostname'], $connection_config['is_ssl'], $connection_config['is_cc'], $connection_config['ssl_ca'], $connection_config['ssl_cert'], $connection_config['ssl_key'] );
53
 
54
  if ( isset( $new_wpdb->error ) && isset( $new_wpdb->dbh ) ) {
55
  throw new Exception( $new_wpdb->dbh->error, $new_wpdb->dbh->errno );
64
  if ( $error_message ) {
65
  throw new Exception(
66
  sprintf(
67
+ /* translators: 1 - mysqli error code, 2 - mysqli error message */
68
  __( 'Code %1$d: %2$s', 'wp-security-audit-log' ),
69
  $error_code,
70
  $error_message
83
  }
84
 
85
  /**
86
+ * Decrypt the encrypted string.
87
+ * Decrypt string, after reads it from the DB.
88
  *
89
+ * @param string $ciphertext_base64 - encrypted string.
90
+ *
91
+ * @return string
92
+ * @since 2.6.3
93
  */
94
+ public function decryptString( $ciphertext_base64 ) {
95
+ $encrypt_method = 'AES-256-CBC';
96
+ $secret_key = $this->truncateKey();
97
+ $secret_iv = $this->get_openssl_iv();
 
 
 
 
98
 
99
+ // Hash the key.
100
+ $key = hash( 'sha256', $secret_key );
101
+
102
+ // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning.
103
+ $iv = substr( hash( 'sha256', $secret_iv ), 0, 16 );
104
+
105
+ return openssl_decrypt( base64_decode( $ciphertext_base64 ), $encrypt_method, $key, 0, $iv );
106
+ }
107
+
108
+ /**
109
+ * Truncate string longer than 32 characters.
110
+ * Authentication Unique Key
111
+ *
112
+ * @return string AUTH_KEY
113
+ * @see wp-config.php
114
+ */
115
+ private function truncateKey() {
116
+ if ( ! defined( 'AUTH_KEY' ) ) {
117
+ return 'x4>Tg@G-Kr6a]o-eJeP^?UO)KW;LbV)I';
118
+ }
119
+ $key_size = strlen( AUTH_KEY );
120
+ if ( $key_size > 32 ) {
121
+ return substr( AUTH_KEY, 0, 32 );
122
  } else {
123
+ return AUTH_KEY;
124
+ }
125
+ }
126
+
127
+ /**
128
+ * Get OpenSSL IV for DB.
129
+ *
130
+ * @since 2.6.3
131
+ */
132
+ private function get_openssl_iv() {
133
+ $secret_openssl_iv = 'і-(аэ┤#≥и┴зейН';
134
+ $key_size = strlen( $secret_openssl_iv );
135
+ if ( $key_size > 32 ) {
136
+ return substr( $secret_openssl_iv, 0, 32 );
137
+ } else {
138
+ return $secret_openssl_iv;
139
  }
140
  }
141
 
142
+ /**
143
+ * Close DB connection
144
+ */
145
+ public function closeConnection() {
146
+ $current_wpdb = $this->getConnection();
147
+
148
+ return $current_wpdb->close();
149
+ }
150
+
151
  /**
152
  * Returns a wpdb instance
153
  *
158
  return $this->connection;
159
  } else {
160
  $this->connection = $this->createConnection();
161
+
162
  return $this->connection;
163
  }
164
  }
165
 
166
  /**
167
+ * Creates a connection and returns it
168
+ *
169
+ * @return wpdb Instance of WPDB.
170
  */
171
+ private function createConnection() {
172
+ if ( ! empty( $this->connectionConfig ) ) {
173
+ $connection_config = $this->connectionConfig;
174
+ $password = $this->decryptString( $connection_config['password'] );
175
+ $new_wpdb = new wpdbCustom( $connection_config['user'], $password, $connection_config['db_name'], $connection_config['hostname'], $connection_config['is_ssl'], $connection_config['is_cc'], $connection_config['ssl_ca'], $connection_config['ssl_cert'], $connection_config['ssl_key'] );
176
+ if ( array_key_exists( 'baseprefix', $connection_config ) ) {
177
+ $new_wpdb->set_prefix( $connection_config['baseprefix'] );
178
+ }
179
+
180
+ return $new_wpdb;
181
+ } else {
182
+ global $wpdb;
183
+
184
+ return $wpdb;
185
+ }
186
  }
187
 
188
  /**
189
  * Gets an adapter for the specified model.
190
  *
191
  * @param string $class_name - Class name.
192
+ *
193
  * @return WSAL_Adapters_ActiveRecordInterface
194
  */
195
  public function getAdapter( $class_name ) {
196
  $obj_name = $this->getAdapterClassName( $class_name );
197
+
198
  return new $obj_name( $this->getConnection() );
199
  }
200
 
202
  * Gets an adapter class name for the specified model.
203
  *
204
  * @param string $class_name - Class name.
205
+ *
206
  * @return string
207
  */
208
  protected function getAdapterClassName( $class_name ) {
215
  * @return bool true|false
216
  */
217
  public function isInstalled() {
218
+ $wpdb = $this->getConnection();
219
+ $table = $wpdb->base_prefix . 'wsal_occurrences';
220
+ $db_result = $wpdb->query( "SELECT COUNT(1) FROM {$table};" );
221
+
222
  return 1 === $db_result;
223
  }
224
 
225
  /**
226
+ * Install all DB tables.
227
  *
228
+ * @param bool $is_external_database If true, some tables will not be created.
229
  */
230
+ public function installAll( $is_external_database = false ) {
231
+ $adapter_list = glob( $this->getAdaptersDirectory() . DIRECTORY_SEPARATOR . '*.php' );
232
+ $adapter_list = apply_filters( 'wsal_install_adapters_list', $adapter_list );
233
+ foreach ( $adapter_list as $file ) {
234
+ $file_path = explode( DIRECTORY_SEPARATOR, $file );
235
+ $file_name = $file_path[ count( $file_path ) - 1 ];
236
+ $class_name = $this->getAdapterClassName( str_replace( 'Adapter.php', '', $file_name ) );
237
+ $this->installSingle( $class_name, $is_external_database );
238
+ }
239
  }
240
 
241
  /**
245
  * @param bool $is_external_database
246
  */
247
  public function installSingle( $class_name, $is_external_database = false ) {
248
+ if ( ! class_exists( $class_name ) ) {
249
+ return;
250
  }
251
 
252
+ $class = new $class_name( $this->getConnection() );
253
  if ( $is_external_database && $class instanceof WSAL_Adapters_MySQL_Session ) {
254
  // sessions table should only ever exist only in local database
255
  return;
265
  }
266
  }
267
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  /**
269
  * Uninstall all DB tables.
270
  */
282
  }
283
 
284
  /**
285
+ * Migrate Occurrences from WP DB to External DB.
286
  *
287
+ * @param integer $limit - Limit.
288
+ *
289
+ * @return int
290
  */
291
+ public function MigrateOccurrenceFromLocalToExternal( $limit ) {
292
+ global $wpdb;
293
+
294
+ return $this->MigrateOccurrence( $wpdb, $this->getConnection(), $limit );
 
295
  }
296
 
297
  /**
298
+ * Migrates occurrence data and related metadata from a source database to the target database.
299
  *
300
+ * It also deletes the tables in the source database when there is no more data to migrate.
 
301
  *
302
+ * @param wpdb $source_db
303
+ * @param wpdb $target_db
304
+ * @param int $limit
305
+ *
306
+ * @return int Number of occurrence entries migrated.
307
  */
308
+ private function MigrateOccurrence( $source_db, $target_db, $limit ) {
309
+ // load occurrence data from the source database
310
+ $occurrence_adapter_source = new WSAL_Adapters_MySQL_Occurrence( $source_db );
311
+ if ( ! $occurrence_adapter_source->IsInstalled() ) {
312
+ return 0;
 
 
 
 
 
 
 
 
313
  }
 
 
314
 
315
+ $sql = 'SELECT * FROM ' . $occurrence_adapter_source->GetTable() . ' LIMIT ' . $limit;
316
+ $occurrences = $source_db->get_results( $sql, ARRAY_A );
 
317
 
318
+ // no more data to migrate, delete the old tables
319
+ if ( empty( $occurrences ) ) {
320
+ $this->DeleteAfterMigrate( $occurrence_adapter_source );
321
+ $this->DeleteAfterMigrate( new WSAL_Adapters_MySQL_Meta( $source_db ) );
 
 
 
 
 
 
 
 
 
322
 
323
+ return 0;
 
 
 
324
  }
 
 
 
325
 
326
+ // insert data to the target database
327
+ $occurrence_adapter_target = new WSAL_Adapters_MySQL_Occurrence( $target_db );
328
+ $occurrence_table_name_target = $occurrence_adapter_target->GetTable();
 
 
 
 
 
 
 
 
 
 
329
 
330
+ $occurrence_ids_to_delete = [];
331
+ foreach ( $occurrences as $entry ) {
 
 
 
 
 
 
 
332
 
333
+ $target_db->insert( $occurrence_table_name_target, [
334
+ 'site_id' => $entry['site_id'],
335
+ 'alert_id' => $entry['alert_id'],
336
+ 'created_on' => $entry['created_on'],
337
+ 'is_read' => $entry['is_read']
338
+ ], [ '%d', '%d', '%f', '%d' ] );
339
 
340
+ $old_entry_id = intval( $entry['id'] );
341
+ $new_entry_id = $target_db->insert_id;
342
+ $this->MigrateMeta( $source_db, $target_db, $old_entry_id, $new_entry_id );
 
 
 
 
 
 
 
 
 
 
343
 
344
+ array_push( $occurrence_ids_to_delete, $old_entry_id );
 
 
 
345
  }
346
+
347
+ // delete migrated events and associated meta data
348
+ $meta_adapter_source = new WSAL_Adapters_MySQL_Meta( $source_db );
349
+ $source_db->query( 'DELETE FROM ' . $occurrence_adapter_source->GetTable() . ' WHERE id IN (' . implode( ',', $occurrence_ids_to_delete ) . ');' );
350
+ $source_db->query( 'DELETE FROM ' . $meta_adapter_source->GetTable() . ' WHERE occurrence_id IN (' . implode( ',', $occurrence_ids_to_delete ) . ');' );
351
+
352
+ return count( $occurrence_ids_to_delete );
353
  }
354
 
355
  /**
356
+ * Delete after Migrate alerts.
 
 
 
357
  *
358
+ * @param object $record - Type of record.
359
  */
360
+ private function DeleteAfterMigrate( $record ) {
 
 
361
  global $wpdb;
362
+ $sql = 'DROP TABLE IF EXISTS ' . $record->GetTable();
363
+ $wpdb->query( $sql );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
364
  }
365
 
366
  /**
367
+ * Migrate Metadata from WP DB to External DB.
368
  *
369
+ * @param wpdb $source_db
370
+ * @param wpdb $target_db
371
+ * @param int $old_occurrence_id
372
+ * @param int $new_occurrence_id
373
  *
374
+ * @return int Number of metadata migrated.
375
  */
376
+ private function MigrateMeta( $source_db, $target_db, $old_occurrence_id, $new_occurrence_id ) {
 
 
 
 
377
 
378
+ // load meta data from the source database
379
+ $meta_adapter_source = new WSAL_Adapters_MySQL_Meta( $source_db );
380
+ if ( ! $meta_adapter_source->IsInstalled() ) {
381
+ return 0;
 
382
  }
 
 
383
 
384
+ $query = 'SELECT * FROM ' . $meta_adapter_source->GetTable() . ' WHERE occurrence_id = %d;';
385
+ $prepared_query = $source_db->prepare( $query, $old_occurrence_id );
386
+ $metadata = $source_db->get_results( $prepared_query, ARRAY_A );
387
+
388
+ // insert meta data to target database
389
  if ( ! empty( $metadata ) ) {
390
+ $meta_adapter_target = new WSAL_Adapters_MySQL_Meta( $target_db );
391
 
392
+ $query = 'INSERT INTO ' . $meta_adapter_target->GetTable() . ' (occurrence_id, name, value) VALUES ';
 
393
  foreach ( $metadata as $entry ) {
394
+ $query .= $target_db->prepare(
395
  '( %d, %s, %s ), ',
396
+ $new_occurrence_id,
397
  $entry['name'],
398
  $entry['value']
399
  );
400
  }
401
+ $query = rtrim( $query, ', ' );
402
+ $target_db->query( $query );
403
 
404
+ return count( $metadata );
 
 
405
  }
406
+
407
+ return 0;
408
  }
409
 
410
  /**
411
+ * Migrate Back Occurrences from External DB to WP DB.
412
  *
413
+ * @param integer $limit - Limit.
414
+ *
415
+ * @return array
416
  */
417
+ public function MigrateOccurrenceFromExternalToLocal( $limit ) {
418
  global $wpdb;
419
+
420
+ return $this->MigrateOccurrence( $this->getConnection(), $wpdb, $limit );
421
  }
422
 
423
  /**
424
  * Encrypt plain text.
425
  * Encrypt string, before saves it to the DB.
426
  *
427
+ * @param string $plaintext - Plain text that is going to be encrypted.
428
+ *
429
  * @return string
430
  * @since 2.6.3
431
  */
448
  return $ciphertext;
449
  }
450
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
451
  /**
452
  * Archiving Occurrences Table.
453
  * Read from current DB and copy into Archive DB.
457
  * @return array|false|null
458
  */
459
  public function ArchiveOccurrence( $args ) {
460
+ $_wpdb = $this->getConnection();
461
  /** @var wpdbCustom $archive_db */
462
  $archive_db = $args['archive_db'];
463
 
489
  if ( ! empty( $occurrences ) ) {
490
  $last = end( $occurrences );
491
  $args['last_created_on'] = $last['created_on'];
492
+ $args['occurrence_ids'] = array();
493
 
494
  $occurrence_new = new WSAL_Adapters_MySQL_Occurrence( $archive_db );
495
 
496
  $sql = 'INSERT INTO ' . $occurrence_new->GetTable() . ' (id, site_id, alert_id, created_on, is_read) VALUES ';
497
  foreach ( $occurrences as $entry ) {
498
+ $sql .= $archive_db->prepare(
499
  '( %d, %d, %d, %d, %d ), ',
500
  intval( $entry['id'] ),
501
  intval( $entry['site_id'] ),
502
  intval( $entry['alert_id'] ),
503
  $entry['created_on'],
504
+ 0
505
  );
506
  $args['occurrence_ids'][] = $entry['id'];
507
  }
508
  $sql = rtrim( $sql, ', ' );
509
  $archive_db->query( $sql );
510
+
511
  return $args;
512
  } else {
513
  return false;
523
  * @return array|false|null
524
  */
525
  public function ArchiveMeta( $args ) {
526
+ $_wpdb = $this->getConnection();
527
  /** @var wpdbCustom $archive_db */
528
  $archive_db = $args['archive_db'];
529
 
533
  return null;
534
  }
535
  $s_occurrence_ids = implode( ', ', $args['occurrence_ids'] );
536
+ $sql = 'SELECT * FROM ' . $meta->GetTable() . ' WHERE occurrence_id IN (' . $s_occurrence_ids . ')';
537
+ $metadata = $_wpdb->get_results( $sql, ARRAY_A );
538
 
539
  // Insert data to Archive DB.
540
  if ( ! empty( $metadata ) ) {
551
  }
552
  $sql = rtrim( $sql, ', ' );
553
  $archive_db->query( $sql );
554
+
555
  return $args;
556
  } else {
557
  return false;
564
  * @param array $args - Archive Database and occurrences IDs.
565
  */
566
  public function DeleteAfterArchive( $args ) {
567
+ $_wpdb = $this->getConnection();
568
 
569
  $s_occurrence_ids = implode( ', ', $args['occurrence_ids'] );
570
 
577
  $_wpdb->query( $sql );
578
  }
579
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
580
  /**
581
  * Purge plugin occurrence & meta tables.
582
  *
classes/Connector/wp-db-custom.php CHANGED
@@ -5,7 +5,7 @@
5
  * Test the DB connection.
6
  * It uses wpdb WordPress DB Class.
7
  *
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,17 +17,10 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * Test the DB connection.
18
  * It uses wpdb WordPress DB Class.
19
  *
20
- * @package Wsal
21
  */
22
  class wpdbCustom extends wpdb {
23
 
24
- /**
25
- * Allow bail?
26
- *
27
- * @var boolean
28
- */
29
- private $allow_bail = true;
30
-
31
  /**
32
  * Overwrite wpdb class for set $allow_bail to false
33
  * and hide the print of the error
@@ -42,9 +35,8 @@ class wpdbCustom extends wpdb {
42
  * @param string $ssl_ca - Certificate Authority.
43
  * @param string $ssl_cert - Client Certificate.
44
  * @param string $ssl_key - Client Key.
45
- * @param bool $test_connection - Set to true if testing connection.
46
  */
47
- public function __construct( $dbuser, $dbpassword, $dbname, $dbhost, $is_ssl, $is_cc, $ssl_ca, $ssl_cert, $ssl_key, $test_connection = false ) {
48
 
49
  if ( WP_DEBUG && WP_DEBUG_DISPLAY ) {
50
  $this->show_errors();
@@ -86,12 +78,7 @@ class wpdbCustom extends wpdb {
86
  }
87
  }
88
 
89
- if ( $test_connection ) {
90
- $this->allow_bail = false;
91
- $this->db_connect( false );
92
- } else {
93
- $this->db_connect();
94
- }
95
  }
96
 
97
  /**
@@ -192,37 +179,6 @@ class wpdbCustom extends wpdb {
192
  }
193
 
194
  if ( ! $this->dbh && $allow_bail ) {
195
- wp_load_translations_early();
196
-
197
- // Load custom DB error template, if present.
198
- if ( file_exists( WP_CONTENT_DIR . '/db-error.php' ) ) {
199
- require_once WP_CONTENT_DIR . '/db-error.php';
200
- die();
201
- }
202
-
203
- $message = '<h1>' . __( 'Error establishing a database connection' ) . "</h1>\n";
204
-
205
- $message .= '<p>' . sprintf(
206
- /* translators: 1: wp-config.php. 2: database host */
207
- __( 'This either means that the username and password information in your %1$s file is incorrect or we can&#8217;t contact the database server at %2$s. This could mean your host&#8217;s database server is down.' ),
208
- '<code>wp-config.php</code>',
209
- '<code>' . htmlspecialchars( $this->dbhost, ENT_QUOTES ) . '</code>'
210
- ) . "</p>\n";
211
-
212
- $message .= "<ul>\n";
213
- $message .= '<li>' . __( 'Are you sure you have the correct username and password?' ) . "</li>\n";
214
- $message .= '<li>' . __( 'Are you sure that you have typed the correct hostname?' ) . "</li>\n";
215
- $message .= '<li>' . __( 'Are you sure that the database server is running?' ) . "</li>\n";
216
- $message .= "</ul>\n";
217
-
218
- $message .= '<p>' . sprintf(
219
- /* translators: %s: support forums URL */
220
- __( 'If you&#8217;re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="%s">WordPress Support Forums</a>.' ),
221
- __( 'https://wordpress.org/support/' )
222
- ) . "</p>\n";
223
-
224
- $this->bail( $message, 'db_connect_fail' );
225
-
226
  return false;
227
  } elseif ( $this->dbh ) {
228
  if ( ! $this->has_connected ) {
@@ -267,47 +223,7 @@ class wpdbCustom extends wpdb {
267
 
268
  if ( ! $success ) {
269
  $this->ready = false;
270
-
271
- if ( ! did_action( 'template_redirect' ) && $this->allow_bail ) {
272
- wp_load_translations_early();
273
-
274
- $message = '<h1>' . __( 'Can&#8217;t select database' ) . "</h1>\n";
275
-
276
- $message .= '<p>' . sprintf(
277
- /* translators: %s: database name */
278
- __( 'We were able to connect to the database server (which means your username and password is okay) but not able to select the %s database.' ),
279
- '<code>' . htmlspecialchars( $db, ENT_QUOTES ) . '</code>'
280
- ) . "</p>\n";
281
-
282
- $message .= "<ul>\n";
283
- $message .= '<li>' . __( 'Are you sure it exists?' ) . "</li>\n";
284
-
285
- $message .= '<li>' . sprintf(
286
- /* translators: 1: database user, 2: database name */
287
- __( 'Does the user %1$s have permission to use the %2$s database?' ),
288
- '<code>' . htmlspecialchars( $this->dbuser, ENT_QUOTES ) . '</code>',
289
- '<code>' . htmlspecialchars( $db, ENT_QUOTES ) . '</code>'
290
- ) . "</li>\n";
291
-
292
- $message .= '<li>' . sprintf(
293
- /* translators: %s: database name */
294
- __( 'On some systems the name of your database is prefixed with your username, so it would be like <code>username_%1$s</code>. Could that be the problem?' ),
295
- htmlspecialchars( $db, ENT_QUOTES )
296
- ) . "</li>\n";
297
-
298
- $message .= "</ul>\n";
299
-
300
- $message .= '<p>' . sprintf(
301
- /* translators: %s: support forums URL */
302
- __( 'If you don&#8217;t know how to set up a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href="%s">WordPress Support Forums</a>.' ),
303
- __( 'https://wordpress.org/support/forums/' )
304
- ) . "</p>\n";
305
-
306
- $this->bail( $message, 'db_select_fail' );
307
- } else {
308
- $this->db_select_error = true;
309
- }
310
  }
311
  }
312
-
313
  }
5
  * Test the DB connection.
6
  * It uses wpdb WordPress DB Class.
7
  *
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * Test the DB connection.
18
  * It uses wpdb WordPress DB Class.
19
  *
20
+ * @package wsal
21
  */
22
  class wpdbCustom extends wpdb {
23
 
 
 
 
 
 
 
 
24
  /**
25
  * Overwrite wpdb class for set $allow_bail to false
26
  * and hide the print of the error
35
  * @param string $ssl_ca - Certificate Authority.
36
  * @param string $ssl_cert - Client Certificate.
37
  * @param string $ssl_key - Client Key.
 
38
  */
39
+ public function __construct( $dbuser, $dbpassword, $dbname, $dbhost, $is_ssl, $is_cc, $ssl_ca, $ssl_cert, $ssl_key ) {
40
 
41
  if ( WP_DEBUG && WP_DEBUG_DISPLAY ) {
42
  $this->show_errors();
78
  }
79
  }
80
 
81
+ $this->db_connect( false );
 
 
 
 
 
82
  }
83
 
84
  /**
179
  }
180
 
181
  if ( ! $this->dbh && $allow_bail ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
  return false;
183
  } elseif ( $this->dbh ) {
184
  if ( ! $this->has_connected ) {
223
 
224
  if ( ! $success ) {
225
  $this->ready = false;
226
+ $this->db_select_error = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  }
228
  }
 
229
  }
classes/ConstantManager.php CHANGED
@@ -5,7 +5,7 @@
5
  * CLass file for constant manager.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -18,10 +18,11 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  *
19
  * E_NOTICE, E_WARNING, E_CRITICAL, etc.
20
  *
21
- * @package Wsal
22
  */
23
  class WSAL_ConstantManager {
24
 
 
25
  /**
26
  * Constants array.
27
  *
5
  * CLass file for constant manager.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
18
  *
19
  * E_NOTICE, E_WARNING, E_CRITICAL, etc.
20
  *
21
+ * @package wsal
22
  */
23
  class WSAL_ConstantManager {
24
 
25
+
26
  /**
27
  * Constants array.
28
  *
classes/ExtensionPlaceholderView.php CHANGED
@@ -4,7 +4,7 @@
4
  * Abstract class used for the plugin extension placeholder views/admin pages.
5
  *
6
  * @see Views/*.php
7
- * @package Wsal
8
  * @since 4.1.5.2
9
  */
10
  abstract class WSAL_ExtensionPlaceholderView extends WSAL_AbstractView {
4
  * Abstract class used for the plugin extension placeholder views/admin pages.
5
  *
6
  * @see Views/*.php
7
+ * @package wsal
8
  * @since 4.1.5.2
9
  */
10
  abstract class WSAL_ExtensionPlaceholderView extends WSAL_AbstractView {
classes/Helpers/DataHelper.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Helper class used for encode/decode json data..
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  /**
16
  * Helper class used for encode/decode json data.
17
  *
18
- * @package Wsal
19
  */
20
  class WSAL_Helpers_DataHelper {
21
 
4
  *
5
  * Helper class used for encode/decode json data..
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
15
  /**
16
  * Helper class used for encode/decode json data.
17
  *
18
+ * @package wsal
19
  */
20
  class WSAL_Helpers_DataHelper {
21
 
classes/Helpers/Options.php CHANGED
@@ -5,7 +5,7 @@
5
  * Option Model gets and sets the options from the main WP options table.
6
  *
7
  * @since 4.0.2
8
- * @package Wsal
9
  */
10
 
11
  namespace WSAL\Helpers;
@@ -117,6 +117,7 @@ class Options {
117
  * @return bool
118
  */
119
  public function delete_option( $option_name = '' ) {
 
120
  if (is_multisite()) {
121
  switch_to_blog(get_main_network_id());
122
  }
@@ -258,4 +259,24 @@ class Options {
258
  }
259
  return true === $bool ? 'yes' : 'no';
260
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
261
  }
5
  * Option Model gets and sets the options from the main WP options table.
6
  *
7
  * @since 4.0.2
8
+ * @package wsal
9
  */
10
 
11
  namespace WSAL\Helpers;
117
  * @return bool
118
  */
119
  public function delete_option( $option_name = '' ) {
120
+
121
  if (is_multisite()) {
122
  switch_to_blog(get_main_network_id());
123
  }
259
  }
260
  return true === $bool ? 'yes' : 'no';
261
  }
262
+
263
+ /**
264
+ * Create neat email/sms string to display in the event.
265
+ *
266
+ * @param string $email
267
+ * @param string $sms
268
+ * @return string
269
+ */
270
+ public static function create_recipient_string( $email, $sms ) {
271
+ $recipient = ( isset( $email ) ) ? $email : '';
272
+ if ( isset( $sms ) && ! empty( $sms ) ) {
273
+ // Only add seperator if needed.
274
+ if ( ! empty( $recipient ) ) {
275
+ $recipient .= ' | ';
276
+ }
277
+ $recipient .= $sms;
278
+ }
279
+
280
+ return $recipient;
281
+ }
282
  }
classes/Loggers/Database.php CHANGED
@@ -5,7 +5,7 @@
5
  * Logger class for wsal.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -19,7 +19,7 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  * This class store the logs in the Database and adds the promo
20
  * alerts, there is also the function to clean up alerts.
21
  *
22
- * @package Wsal
23
  */
24
  class WSAL_Loggers_Database extends WSAL_AbstractLogger {
25
 
@@ -35,22 +35,28 @@ class WSAL_Loggers_Database extends WSAL_AbstractLogger {
35
  }
36
 
37
  /**
38
- * Log an event.
39
  *
40
- * 1. If native DB is being used then check DB connection.
41
- * 1a. If connection is good, then log the event.
42
- * 1b. If no connection then save the alert in a temp buffer.
 
 
 
 
 
 
 
 
43
  *
44
- * 2. If external DB is in action then send the event to a temp buffer.
45
  *
46
  * @param integer $type - Alert code.
47
  * @param array $data - Metadata.
48
  * @param integer $date - (Optional) created_on.
49
- * @param integer $siteid - (Optional) site_id.
50
- * @param bool $migrated - (Optional) is_migrated.
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;
@@ -58,10 +64,9 @@ class WSAL_Loggers_Database extends WSAL_AbstractLogger {
58
 
59
  // Create new occurrence.
60
  $occ = new WSAL_Models_Occurrence();
61
- $occ->is_migrated = $migrated;
62
- $occ->created_on = $this->get_correct_timestamp( $data, $date );
63
  $occ->alert_id = $type;
64
- $occ->site_id = ! is_null( $siteid ) ? $siteid : ( function_exists( 'get_current_blog_id' ) ? get_current_blog_id() : 0 );
65
 
66
  // we need to remove the timestamp to prevent from saving it as meta
67
  unset( $data['Timestamp'] );
@@ -69,36 +74,25 @@ class WSAL_Loggers_Database extends WSAL_AbstractLogger {
69
  // Get DB connector.
70
  $db_config = WSAL_Connector_ConnectorFactory::GetConfig(); // Get DB connector configuration.
71
 
72
- // Get external buffer option.
73
- $use_buffer = $this->plugin->GetGlobalBooleanSetting( 'adapter-use-buffer' );
74
- if ( $override_buffer ) {
75
- $use_buffer = false;
 
 
 
 
76
  }
77
 
78
- // Check external DB.
79
- if ( null === $db_config || ( is_array( $db_config ) && ! $use_buffer ) ) { // Not external DB.
80
- // Get connector for DB.
81
- $connector = $this->plugin->getConnector( $db_config );
82
- $wsal_db = $connector->getConnection(); // Get DB connection.
83
- $connection = true;
84
- if ( isset( $wsal_db->dbh->errno ) ) {
85
- $connection = 0 !== (int) $wsal_db->dbh->errno ? false : true; // Database connection error check.
86
- } elseif ( is_wp_error( $wsal_db->error ) ) {
87
- $connection = false;
88
- }
89
-
90
- // Check DB connection.
91
- if ( $connection ) { // If connected then save the alert in DB.
92
- // Save the alert occurrence.
93
- $occ->Save();
94
 
95
- // Set up meta data of the alert.
96
- $occ->SetMeta( $data );
97
- } else { // Else store the alerts in temporary option.
98
- $this->store_events_in_buffer( $occ, $data );
99
- }
100
- } elseif ( is_array( $db_config ) && $use_buffer ) { // External DB.
101
- $this->store_events_in_buffer( $occ, $data );
102
  }
103
 
104
  /**
@@ -106,38 +100,7 @@ class WSAL_Loggers_Database extends WSAL_AbstractLogger {
106
  *
107
  * @since 3.1.2
108
  */
109
- do_action( 'wsal_logged_alert', $occ, $type, $data, $date, $siteid, $migrated );
110
- }
111
-
112
- /**
113
- * Method: Store events in temporary buffer.
114
- *
115
- * @param WSAL_Models_Occurrence $occ – Event occurrence object.
116
- * @param array $event_data – Event meta-data.
117
- * @return boolean
118
- */
119
- private function store_events_in_buffer( $occ, $event_data ) {
120
- // Check event occurrence object.
121
- if ( ! empty( $occ ) && $occ instanceof WSAL_Models_Occurrence ) {
122
- // Get temporary stored alerts.
123
- $temp_alerts = $this->plugin->GetGlobalSetting( 'temp_alerts', array() );
124
-
125
- // Store current event in a temporary buffer.
126
- $temp_alerts[ $occ->created_on ]['alert'] = array(
127
- 'is_migrated' => $occ->is_migrated,
128
- 'created_on' => $occ->created_on,
129
- 'alert_id' => $occ->alert_id,
130
- 'site_id' => $occ->site_id,
131
- );
132
- $temp_alerts[ $occ->created_on ]['alert_data'] = $event_data;
133
-
134
- // Save temporary alerts to options.
135
- $this->plugin->SetGlobalSetting( 'temp_alerts', $temp_alerts );
136
- return true;
137
- }
138
-
139
- // Something wrong with $occ object.
140
- return false;
141
  }
142
 
143
  /**
@@ -155,16 +118,6 @@ class WSAL_Loggers_Database extends WSAL_AbstractLogger {
155
  return;
156
  }
157
 
158
- // Return if archiving cron is running.
159
- if ( $this->plugin->GetGlobalSetting( 'archiving-cron-started', false ) ) {
160
- return;
161
- }
162
-
163
- // If archiving is enabled then events are deleted from the archive database.
164
- if ( $this->plugin->settings()->IsArchivingEnabled() ) {
165
- // Switch to Archive DB.
166
- $this->plugin->settings()->SwitchToArchiveDB();
167
- }
168
 
169
  $occ = new WSAL_Models_Occurrence();
170
  $cnt_items = $occ->Count();
5
  * Logger class for wsal.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
19
  * This class store the logs in the Database and adds the promo
20
  * alerts, there is also the function to clean up alerts.
21
  *
22
+ * @package wsal
23
  */
24
  class WSAL_Loggers_Database extends WSAL_AbstractLogger {
25
 
35
  }
36
 
37
  /**
38
+ * Checks is the connection is for an external database.
39
  *
40
+ * @since 4.3.2
41
+ * @return boolean
42
+ */
43
+ public function is_external() {
44
+ $db_config = WSAL_Connector_ConnectorFactory::GetConfig();
45
+
46
+ return is_array( $db_config ) && ! empty( $db_config );
47
+ }
48
+
49
+ /**
50
+ * Log an event to the database.
51
  *
52
+ * There is no difference between local and external database handling os of version 4.3.2.
53
  *
54
  * @param integer $type - Alert code.
55
  * @param array $data - Metadata.
56
  * @param integer $date - (Optional) created_on.
57
+ * @param integer $site_id - (Optional) site_id.
 
 
58
  */
59
+ public function Log( $type, $data = array(), $date = null, $site_id = null ) {
60
  // PHP alerts logging was deprecated in version 4.2.0
61
  if ( $type < 0010 ) {
62
  return;
64
 
65
  // Create new occurrence.
66
  $occ = new WSAL_Models_Occurrence();
67
+ $occ->created_on = $this->get_correct_timestamp( $data, $date );
 
68
  $occ->alert_id = $type;
69
+ $occ->site_id = ! is_null( $site_id ) ? $site_id : ( function_exists( 'get_current_blog_id' ) ? get_current_blog_id() : 0 );
70
 
71
  // we need to remove the timestamp to prevent from saving it as meta
72
  unset( $data['Timestamp'] );
74
  // Get DB connector.
75
  $db_config = WSAL_Connector_ConnectorFactory::GetConfig(); // Get DB connector configuration.
76
 
77
+ // Get connector for DB.
78
+ $connector = $this->plugin->getConnector( $db_config );
79
+ $wsal_db = $connector->getConnection(); // Get DB connection.
80
+ $connection = true;
81
+ if ( isset( $wsal_db->dbh->errno ) ) {
82
+ $connection = ( 0 === (int) $wsal_db->dbh->errno ); // Database connection error check.
83
+ } elseif ( is_wp_error( $wsal_db->error ) ) {
84
+ $connection = false;
85
  }
86
 
87
+ // Check DB connection.
88
+ if ( $connection ) { // If connected then save the alert in DB.
89
+ // Save the alert occurrence.
90
+ $occ->Save();
 
 
 
 
 
 
 
 
 
 
 
 
91
 
92
+ // Set up meta data of the alert.
93
+ $occ->SetMeta( $data );
94
+ } else {
95
+ // @todo write to a debug log
 
 
 
96
  }
97
 
98
  /**
100
  *
101
  * @since 3.1.2
102
  */
103
+ do_action( 'wsal_logged_alert', $occ, $type, $data, $date, $site_id );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  }
105
 
106
  /**
118
  return;
119
  }
120
 
 
 
 
 
 
 
 
 
 
 
121
 
122
  $occ = new WSAL_Models_Occurrence();
123
  $cnt_items = $occ->Count();
classes/Models/ActiveRecord.php CHANGED
@@ -5,7 +5,7 @@
5
  * Abstract ActiveRecord model is the generic model for any kind
6
  * of adapter.
7
  *
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * Abstract ActiveRecord model is the generic model for any kind
18
  * of adapter.
19
  *
20
- * @package Wsal
21
  */
22
  abstract class WSAL_Models_ActiveRecord {
23
 
@@ -361,17 +361,13 @@ abstract class WSAL_Models_ActiveRecord {
361
  /**
362
  * Function used in WSAL reporting extension.
363
  *
364
- * @see WSAL_Adapters_MySQL_ActiveRecord::GetReporting()
365
- * @param int $_site_id - Site ID.
366
- * @param int $_user_id - User ID.
367
- * @param string $_role_name - User role.
368
- * @param int $_alert_code - Alert code.
369
- * @param int $_start_timestamp - From created_on.
370
- * @param int $_end_timestamp - To created_on.
371
  * @return array Report results.
 
372
  */
373
- public function GetReporting( $_site_id, $_user_id, $_role_name, $_alert_code, $_start_timestamp, $_end_timestamp ) {
374
- return $this->getAdapter()->GetReporting( $_site_id, $_user_id, $_role_name, $_alert_code, $_start_timestamp, $_end_timestamp );
375
  }
376
 
377
  /**
5
  * Abstract ActiveRecord model is the generic model for any kind
6
  * of adapter.
7
  *
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * Abstract ActiveRecord model is the generic model for any kind
18
  * of adapter.
19
  *
20
+ * @package wsal
21
  */
22
  abstract class WSAL_Models_ActiveRecord {
23
 
361
  /**
362
  * Function used in WSAL reporting extension.
363
  *
364
+ * @param WSAL_ReportArgs $report_args
365
+ *
 
 
 
 
 
366
  * @return array Report results.
367
+ * @see WSAL_Adapters_MySQL_ActiveRecord::GetReporting()
368
  */
369
+ public function GetReporting( $report_args ) {
370
+ return $this->getAdapter()->GetReporting( $report_args );
371
  }
372
 
373
  /**
classes/Models/Meta.php CHANGED
@@ -5,7 +5,7 @@
5
  * Metadata model is the model for the Metadata adapter,
6
  * used for save and update the metadata.
7
  *
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * Metadata model is the model for the Metadata adapter,
18
  * used for save and update the metadata.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Models_Meta extends WSAL_Models_ActiveRecord {
23
 
5
  * Metadata model is the model for the Metadata adapter,
6
  * used for save and update the metadata.
7
  *
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * Metadata model is the model for the Metadata adapter,
18
  * used for save and update the metadata.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Models_Meta extends WSAL_Models_ActiveRecord {
23
 
classes/Models/Occurrence.php CHANGED
@@ -5,7 +5,7 @@
5
  * Occurrence model is the model for the Occurrence adapter,
6
  * used for get the alert, set the meta fields, etc.
7
  *
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * Occurrence model is the model for the Occurrence adapter,
18
  * used for get the alert, set the meta fields, etc.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Models_Occurrence extends WSAL_Models_ActiveRecord {
23
 
@@ -53,6 +53,7 @@ class WSAL_Models_Occurrence extends WSAL_Models_ActiveRecord {
53
  * Is read.
54
  *
55
  * @var bool
 
56
  */
57
  public $is_read = false;
58
 
@@ -60,6 +61,7 @@ class WSAL_Models_Occurrence extends WSAL_Models_ActiveRecord {
60
  * Is migrated.
61
  *
62
  * @var bool
 
63
  */
64
  public $is_migrated = false;
65
 
@@ -70,6 +72,11 @@ class WSAL_Models_Occurrence extends WSAL_Models_ActiveRecord {
70
  */
71
  protected $adapterName = 'Occurrence';
72
 
 
 
 
 
 
73
  /**
74
  * Returns the alert related to this occurrence.
75
  *
@@ -172,19 +179,16 @@ class WSAL_Models_Occurrence extends WSAL_Models_ActiveRecord {
172
  * @see WSAL_Alert::GetMessage()
173
  */
174
  public function GetMessage( $meta = null, $context = false ) {
175
- if ( ! isset( $this->_cachedmessage ) ) {
176
- // Get correct message entry.
177
- if ( $this->is_migrated ) {
178
- $this->_cachedmessage = $this->GetMetaValue( 'MigratedMesg', false );
179
- }
180
- if ( ! $this->is_migrated || ! $this->_cachedmessage ) {
181
- $this->_cachedmessage = $this->GetAlert()->mesg;
182
  }
183
  // Fill variables in message.
184
  $meta_array = null === $meta ? $this->GetMetaArray() : $meta;
185
  $alert_object = $this->GetAlert();
186
  if ( null !== $alert_object && method_exists( $alert_object, 'GetMessage' ) ) {
187
- $this->_cachedmessage = $alert_object->GetMessage( $meta_array, $this->_cachedmessage, $this->getId(), $context );
188
  } else {
189
  /**
190
  * Reaching this point means we have an event we don't know
@@ -222,7 +226,7 @@ class WSAL_Models_Occurrence extends WSAL_Models_ActiveRecord {
222
  return $message;
223
  }
224
  }
225
- $this->_cachedmessage = isset( $cached_message ) ? $cached_message : sprintf(
226
  /* Translators: 1: html that opens a link, 2: html that closes a link. */
227
  __( '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.', 'wp-security-audit-log' ),
228
  '<a href="https://wpactivitylog.com/support/kb/create-custom-events-wordpress-activity-log/" rel="noopener noreferrer" target="_blank">',
@@ -230,7 +234,7 @@ class WSAL_Models_Occurrence extends WSAL_Models_ActiveRecord {
230
  );
231
  }
232
  }
233
- return $this->_cachedmessage;
234
  }
235
 
236
  /**
@@ -299,6 +303,15 @@ class WSAL_Models_Occurrence extends WSAL_Models_ActiveRecord {
299
  return isset( $meta['CurrentUserRoles'] ) ? $meta['CurrentUserRoles'] : array();
300
  }
301
 
 
 
 
 
 
 
 
 
 
302
  /**
303
  * Method: Get Microtime.
304
  *
5
  * Occurrence model is the model for the Occurrence adapter,
6
  * used for get the alert, set the meta fields, etc.
7
  *
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * Occurrence model is the model for the Occurrence adapter,
18
  * used for get the alert, set the meta fields, etc.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Models_Occurrence extends WSAL_Models_ActiveRecord {
23
 
53
  * Is read.
54
  *
55
  * @var bool
56
+ * @deprecated 4.3.2
57
  */
58
  public $is_read = false;
59
 
61
  * Is migrated.
62
  *
63
  * @var bool
64
+ * @deprecated 4.3.2
65
  */
66
  public $is_migrated = false;
67
 
72
  */
73
  protected $adapterName = 'Occurrence';
74
 
75
+ /**
76
+ * @var string
77
+ */
78
+ public $_cachedMessage;
79
+
80
  /**
81
  * Returns the alert related to this occurrence.
82
  *
179
  * @see WSAL_Alert::GetMessage()
180
  */
181
  public function GetMessage( $meta = null, $context = false ) {
182
+ if ( ! isset( $this->_cachedMessage ) ) {
183
+ // message caching
184
+ if ( ! $this->_cachedMessage ) {
185
+ $this->_cachedMessage = $this->GetAlert()->mesg;
 
 
 
186
  }
187
  // Fill variables in message.
188
  $meta_array = null === $meta ? $this->GetMetaArray() : $meta;
189
  $alert_object = $this->GetAlert();
190
  if ( null !== $alert_object && method_exists( $alert_object, 'GetMessage' ) ) {
191
+ $this->_cachedMessage = $alert_object->GetMessage( $meta_array, $this->_cachedMessage, $this->getId(), $context );
192
  } else {
193
  /**
194
  * Reaching this point means we have an event we don't know
226
  return $message;
227
  }
228
  }
229
+ $this->_cachedMessage = isset( $cached_message ) ? $cached_message : sprintf(
230
  /* Translators: 1: html that opens a link, 2: html that closes a link. */
231
  __( '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.', 'wp-security-audit-log' ),
232
  '<a href="https://wpactivitylog.com/support/kb/create-custom-events-wordpress-activity-log/" rel="noopener noreferrer" target="_blank">',
234
  );
235
  }
236
  }
237
+ return $this->_cachedMessage;
238
  }
239
 
240
  /**
303
  return isset( $meta['CurrentUserRoles'] ) ? $meta['CurrentUserRoles'] : array();
304
  }
305
 
306
+ /**
307
+ * Gets the username.
308
+ *
309
+ * @return string User's username.
310
+ */
311
+ public function GetUsername() {
312
+ return WSAL_Utilities_UsersUtils::GetUsername( $this->GetMetaArray() );
313
+ }
314
+
315
  /**
316
  * Method: Get Microtime.
317
  *
classes/Models/OccurrenceQuery.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * OccurrenceQuery model adds or clears arguments in the Query model.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  /**
16
  * OccurrenceQuery model adds or clears arguments in the Query model.
17
  *
18
- * @package Wsal
19
  */
20
  class WSAL_Models_OccurrenceQuery extends WSAL_Models_Query {
21
 
4
  *
5
  * OccurrenceQuery model adds or clears arguments in the Query model.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
15
  /**
16
  * OccurrenceQuery model adds or clears arguments in the Query model.
17
  *
18
+ * @package wsal
19
  */
20
  class WSAL_Models_OccurrenceQuery extends WSAL_Models_Query {
21
 
classes/Models/Query.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Query model is the class for all the query conditions.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  *
18
  * Query model is the class for all the query conditions.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Models_Query {
23
 
4
  *
5
  * Query model is the class for all the query conditions.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
17
  *
18
  * Query model is the class for all the query conditions.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Models_Query {
23
 
classes/Models/TmpUser.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Model used for the Temporary WP_users table.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  *
18
  * Model used for the Temporary WP_users table.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Models_TmpUser extends WSAL_Models_ActiveRecord {
23
 
4
  *
5
  * Model used for the Temporary WP_users table.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
17
  *
18
  * Model used for the Temporary WP_users table.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Models_TmpUser extends WSAL_Models_ActiveRecord {
23
 
classes/Multisite/NetworkWide/AbstractTracker.php CHANGED
@@ -7,7 +7,7 @@
7
  * executed directly (CPTs or taxonomies for example).
8
  *
9
  * @since 3.5.2
10
- * @package Wsal
11
  */
12
 
13
  namespace WSAL\Multisite\NetworkWide;
7
  * executed directly (CPTs or taxonomies for example).
8
  *
9
  * @since 3.5.2
10
+ * @package wsal
11
  */
12
 
13
  namespace WSAL\Multisite\NetworkWide;
classes/Multisite/NetworkWide/CPTsTracker.php CHANGED
@@ -5,7 +5,7 @@
5
  * Helper class used for tracking various bits of network wide data.
6
  *
7
  * @since 3.5.2
8
- * @package Wsal
9
  */
10
 
11
  namespace WSAL\Multisite\NetworkWide;
5
  * Helper class used for tracking various bits of network wide data.
6
  *
7
  * @since 3.5.2
8
+ * @package wsal
9
  */
10
 
11
  namespace WSAL\Multisite\NetworkWide;
classes/Multisite/NetworkWide/TrackerInterface.php CHANGED
@@ -5,7 +5,7 @@
5
  * Helper class used for tracking various bits of network wide data.
6
  *
7
  * @since 3.5.2
8
- * @package Wsal
9
  */
10
 
11
  namespace WSAL\Multisite\NetworkWide;
5
  * Helper class used for tracking various bits of network wide data.
6
  *
7
  * @since 3.5.2
8
+ * @package wsal
9
  */
10
 
11
  namespace WSAL\Multisite\NetworkWide;
classes/Nicer.php CHANGED
@@ -8,7 +8,7 @@
8
  * @link https://github.com/uuf6429/nice_r GitHub Repository
9
  * @version 2.0
10
  * @since 2.0
11
- * @package Wsal
12
  */
13
  class WSAL_Nicer {
14
 
8
  * @link https://github.com/uuf6429/nice_r GitHub Repository
9
  * @version 2.0
10
  * @since 2.0
11
+ * @package wsal
12
  */
13
  class WSAL_Nicer {
14
 
classes/Ref.php CHANGED
@@ -6,7 +6,7 @@
6
  * @link https://github.com/digitalnature/php-ref GitHub Repository
7
  * @version 1.2
8
  * @since 3.1.6
9
- * @package Wsal
10
  */
11
 
12
  // Exit if accessed directly.
6
  * @link https://github.com/digitalnature/php-ref GitHub Repository
7
  * @version 1.2
8
  * @since 3.1.6
9
+ * @package wsal
10
  */
11
 
12
  // Exit if accessed directly.
classes/ReportArgs.php ADDED
@@ -0,0 +1,287 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Exit if accessed directly.
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit;
6
+ }
7
+
8
+ /**
9
+ * Wrapper class for report filter arguments. Used mainly to prevent passing arbitrary arrays info data loading functions.
10
+ *
11
+ * @package wsal
12
+ * @subpackage reports
13
+ *
14
+ * @author Martin Krcho <martin@wpwhitesecurity.com>
15
+ * @since 4.3.2
16
+ */
17
+ class WSAL_ReportArgs {
18
+
19
+ /**
20
+ * An array of user IDs to include in report.
21
+ *
22
+ * @var int[]
23
+ */
24
+ public $user__in;
25
+
26
+ /**
27
+ * An array of user IDs to exclude from the report.
28
+ *
29
+ * @var int[]
30
+ */
31
+ public $user__not_in;
32
+
33
+ /**
34
+ * An array of site IDs to include in report.
35
+ *
36
+ * @var int[]
37
+ */
38
+ public $site__in;
39
+
40
+ /**
41
+ * An array of site IDs to exclude from the report.
42
+ *
43
+ * @var int[]
44
+ */
45
+ public $site__not_in;
46
+
47
+ /**
48
+ * An array of user role names to include in the report.
49
+ *
50
+ * Note: This holds role names, not the translatable display names.
51
+ *
52
+ * @var string[]
53
+ */
54
+ public $role__in;
55
+
56
+ /**
57
+ * An array of user role names to exclude from the report.
58
+ *
59
+ * Note: This holds role names, not the translatable display names.
60
+ *
61
+ * @var string[]
62
+ */
63
+ public $role__not_in;
64
+
65
+ /**
66
+ * An array of IP addresses to include in the report.
67
+ *
68
+ * @var string[]
69
+ */
70
+ public $ip__in;
71
+
72
+ /**
73
+ * An array of user role names to exclude from the report.
74
+ *
75
+ * @var string[]
76
+ */
77
+ public $ip__not_in;
78
+
79
+ /**
80
+ * An array of objects include in the report.
81
+ *
82
+ * @var string[]
83
+ */
84
+ public $object__in;
85
+
86
+ /**
87
+ * An array of objects to exclude from the report.
88
+ *
89
+ * @var string[]
90
+ */
91
+ public $object__not_in;
92
+
93
+ /**
94
+ * An array of event types include in the report.
95
+ *
96
+ * @var string[]
97
+ */
98
+ public $type__in;
99
+
100
+ /**
101
+ * An array of event types to exclude from the report.
102
+ *
103
+ * @var string[]
104
+ */
105
+ public $type__not_in;
106
+
107
+ /**
108
+ * Start date in format YYYY-MM-DD.
109
+ *
110
+ * @var string
111
+ */
112
+ public $start_date;
113
+
114
+ /**
115
+ * End date in format YYYY-MM-DD.
116
+ *
117
+ * @var string
118
+ */
119
+ public $end_date;
120
+
121
+ /**
122
+ * An array of event IDs to include in report.
123
+ *
124
+ * @var int[]
125
+ */
126
+ public $code__in;
127
+
128
+ /**
129
+ * An array of post types to include in report.
130
+ *
131
+ * @var string[]
132
+ */
133
+ public $post_type__in;
134
+
135
+ /**
136
+ * An array of post statuses to include in report.
137
+ *
138
+ * @var string[]
139
+ */
140
+ public $post_status__in;
141
+
142
+ /**
143
+ * @param array $filters
144
+ * @param WSAL_AlertManager $alert_manager
145
+ *
146
+ * @return false
147
+ */
148
+ public static function build_from_alternative_filters( $filters, $alert_manager ) {
149
+
150
+ $result = new WSAL_ReportArgs();
151
+
152
+ $sites = null;
153
+ if ( is_array( $sites ) && ! empty( $sites ) ) {
154
+ $result->site__in = $sites;
155
+ }
156
+
157
+ if ( ! empty( $filters['users'] ) ) {
158
+ $result->user__in = $alert_manager->get_user_ids( $filters['users'] );
159
+ }
160
+
161
+ if ( ! empty( $filters['users-exclude'] ) ) {
162
+ $result->user__not_in = $alert_manager->get_user_ids( $filters['users-exclude'] );
163
+ }
164
+
165
+ if ( is_array( $filters['roles'] ) && ! empty( $filters['roles'] ) ) {
166
+ $result->role__in = $filters['roles'];
167
+ }
168
+
169
+ if ( is_array( $filters['roles-exclude'] ) && ! empty( $filters['roles-exclude'] ) ) {
170
+ $result->role__not_in = $filters['roles-exclude'];
171
+ }
172
+
173
+ $ip_addresses = empty( $filters['ip-addresses'] ) ? null : $filters['ip-addresses'];
174
+ $alert_groups = $filters['alert-codes']['groups'];
175
+ $alert_codes = $filters['alert-codes']['alerts'];
176
+ $date_start = empty( $filters['date-range']['start'] ) ? null : $filters['date-range']['start'];
177
+ $date_end = empty( $filters['date-range']['end'] ) ? null : $filters['date-range']['end'];
178
+
179
+ // extract full list of alert codes
180
+ $codes = $alert_manager->get_codes_by_groups( $alert_groups, $alert_codes );
181
+
182
+
183
+
184
+
185
+ if ( is_array( $ip_addresses ) && ! empty( $ip_addresses ) ) {
186
+ $result->ip__in = $ip_addresses;
187
+ }
188
+
189
+ if ( is_array( $codes ) && ! empty( $codes ) ) {
190
+ $result->code__in = $codes;
191
+ }
192
+
193
+ if ( $date_start ) {
194
+ $result->start_date = $date_start;
195
+ }
196
+
197
+ if ( $date_end ) {
198
+ $result->end_date = $date_end;
199
+ }
200
+
201
+ return $result;
202
+ }
203
+
204
+ /**
205
+ * @param array $filters An array of filters as defined in the Reports extension form.
206
+ * @param WSAL_Rep_Common $report_utils
207
+ *
208
+ * @return WSAL_ReportArgs
209
+ */
210
+ public static function build_from_extension_filters( $filters, $report_utils ) {
211
+
212
+ $result = new WSAL_ReportArgs();
213
+
214
+ if ( is_array( $filters['sites'] ) && ! empty( $filters['sites'] ) ) {
215
+ $result->site__in = $filters['sites'];
216
+ }
217
+
218
+ if ( is_array( $filters['sites-exclude'] ) && ! empty( $filters['sites-exclude'] ) ) {
219
+ $result->site__not_in = $filters['sites-exclude'];
220
+ }
221
+
222
+ if ( is_array( $filters['users'] ) && ! empty( $filters['users'] ) ) {
223
+ $result->user__in = $filters['users'];
224
+ }
225
+
226
+ if ( is_array( $filters['users-exclude'] ) && ! empty( $filters['users-exclude'] ) ) {
227
+ $result->user__not_in = $filters['users-exclude'];
228
+ }
229
+
230
+ if ( is_array( $filters['roles'] ) && ! empty( $filters['roles'] ) ) {
231
+ $result->role__in = $filters['roles'];
232
+ }
233
+
234
+ if ( is_array( $filters['roles-exclude'] ) && ! empty( $filters['roles-exclude'] ) ) {
235
+ $result->role__not_in = $filters['roles-exclude'];
236
+ }
237
+
238
+ if ( is_array( $filters['alert_codes_post_types'] ) && ! empty( $filters['alert_codes_post_types'] ) ) {
239
+ $result->post_type__in = $filters['alert_codes_post_types'];
240
+ }
241
+
242
+ if ( is_array( $filters['alert_codes_post_statuses'] ) && ! empty( $filters['alert_codes_post_statuses'] ) ) {
243
+ $result->post_status__in = $filters['alert_codes_post_statuses'];
244
+ }
245
+
246
+ if ( is_array( $filters['objects'] ) && ! empty( $filters['objects'] ) ) {
247
+ $result->object__in = $filters['objects'];
248
+ }
249
+
250
+ if ( is_array( $filters['objects-exclude'] ) && ! empty( $filters['objects-exclude'] ) ) {
251
+ $result->object__not_in = $filters['objects-exclude'];
252
+ }
253
+
254
+ if ( is_array( $filters['event-types'] ) && ! empty( $filters['event-types'] ) ) {
255
+ $result->type__in = $filters['event-types'];
256
+ }
257
+
258
+ if ( is_array( $filters['event-types-exclude'] ) && ! empty( $filters['event-types-exclude'] ) ) {
259
+ $result->type__not_in = $filters['event-types-exclude'];
260
+ }
261
+
262
+ if ( is_array( $filters['ip-addresses'] ) && ! empty( $filters['ip-addresses'] ) ) {
263
+ $result->ip__in = $filters['ip-addresses'];
264
+ }
265
+
266
+ if ( is_array( $filters['ip-addresses-exclude'] ) && ! empty( $filters['ip-addresses-exclude'] ) ) {
267
+ $result->ip__not_in = $filters['ip-addresses-exclude'];
268
+ }
269
+
270
+ // extract full list of alert codes
271
+ $_codes = $report_utils->GetCodesByGroups( $filters['alert_codes_groups'], $filters['alert_codes_alerts'] );
272
+
273
+ if ( is_array( $_codes ) && ! empty( $_codes ) ) {
274
+ $result->code__in = $_codes;
275
+ }
276
+
277
+ if ( $filters['date_range_start'] ) {
278
+ $result->start_date = $filters['date_range_start'];
279
+ }
280
+
281
+ if ( $filters['date_range_end'] ) {
282
+ $result->end_date = $filters['date_range_end'];
283
+ }
284
+
285
+ return $result;
286
+ }
287
+ }
classes/SensorManager.php CHANGED
@@ -5,7 +5,7 @@
5
  * Sensor manager class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  *
19
  * This class loads all the sensors and initialize them.
20
  *
21
- * @package Wsal
22
  */
23
  final class WSAL_SensorManager extends WSAL_AbstractSensor {
24
 
5
  * Sensor manager class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
18
  *
19
  * This class loads all the sensors and initialize them.
20
  *
21
+ * @package wsal
22
  */
23
  final class WSAL_SensorManager extends WSAL_AbstractSensor {
24
 
classes/Sensors/ACFMeta.php CHANGED
@@ -5,7 +5,7 @@
5
  * Advanced Custom Fields sensor file.
6
  *
7
  * @since 4.1.3
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -19,8 +19,8 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  * 2131 ACF relationship added
20
  * 2132 ACF relationship removed
21
  *
22
- * @package Wsal
23
- * @subpackage Sensors
24
  * @since 4.1.3
25
  */
26
  class WSAL_Sensors_ACFMeta extends WSAL_AbstractMetaDataSensor {
@@ -76,7 +76,7 @@ class WSAL_Sensors_ACFMeta extends WSAL_AbstractMetaDataSensor {
76
  */
77
  public function on_field_updated( $meta_id, $object_id, $meta_key, $_meta_value ) {
78
  if ( in_array( $meta_key, array_keys( $this->old_meta ) ) ) {
79
- if ( $this->CanLogMetaKey( $object_id, $meta_key ) ) {
80
  $old_value = $this->convert_to_array_of_post_ids( $this->old_meta[ $meta_key ]['value'] );
81
  $new_value = $this->convert_to_array_of_post_ids( $_meta_value );
82
  $removed = array_diff( $old_value, $new_value );
5
  * Advanced Custom Fields sensor file.
6
  *
7
  * @since 4.1.3
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
19
  * 2131 ACF relationship added
20
  * 2132 ACF relationship removed
21
  *
22
+ * @package wsal
23
+ * @subpackage sensors
24
  * @since 4.1.3
25
  */
26
  class WSAL_Sensors_ACFMeta extends WSAL_AbstractMetaDataSensor {
76
  */
77
  public function on_field_updated( $meta_id, $object_id, $meta_key, $_meta_value ) {
78
  if ( in_array( $meta_key, array_keys( $this->old_meta ) ) ) {
79
+ if ( $this->CanLogMetaKey( 'post', $object_id, $meta_key ) ) {
80
  $old_value = $this->convert_to_array_of_post_ids( $this->old_meta[ $meta_key ]['value'] );
81
  $new_value = $this->convert_to_array_of_post_ids( $_meta_value );
82
  $removed = array_diff( $old_value, $new_value );
classes/Sensors/Comments.php CHANGED
@@ -5,7 +5,7 @@
5
  * Comments sensor class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -27,8 +27,8 @@ if ( ! defined( 'ABSPATH' ) ) {
27
  * 2098 User permanently deleted a comment
28
  * 2099 User posted a comment
29
  *
30
- * @package Wsal
31
- * @subpackage Sensors
32
  */
33
  class WSAL_Sensors_Comments extends WSAL_AbstractSensor {
34
 
5
  * Comments sensor class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
27
  * 2098 User permanently deleted a comment
28
  * 2099 User posted a comment
29
  *
30
+ * @package wsal
31
+ * @subpackage sensors
32
  */
33
  class WSAL_Sensors_Comments extends WSAL_AbstractSensor {
34
 
classes/Sensors/Content.php CHANGED
@@ -5,7 +5,7 @@
5
  * Content sensor class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
20
  * 5019 A plugin created a post
21
  * 5025 A plugin deleted a post
22
  *
23
- * @package Wsal
24
  */
25
  class WSAL_Sensors_Content extends WSAL_AbstractSensor {
26
 
@@ -455,6 +455,13 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
455
  $post_data = $this->get_post_event_data( $post ); // Get event post data.
456
 
457
  // Update post URL based on current actual path.
 
 
 
 
 
 
 
458
  $full_current_path = home_url( $current_path );
459
  if ( $full_current_path !== $post_data['PostUrl'] ) {
460
  $post_data['PostUrl'] = esc_url( $full_current_path );
@@ -1371,7 +1378,7 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
1371
 
1372
  if ( 2002 === $event ) {
1373
  // 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.
1374
- // So trigger 2002 regardess and "something" has changed in the post, we just dont detect it elsewhere.
1375
  $this->plugin->alerts->TriggerIf( $event, $event_data, array( $this, 'ignore_other_post_events' ) );
1376
  } else {
1377
  $this->plugin->alerts->Trigger( $event, $event_data );
5
  * Content sensor class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
20
  * 5019 A plugin created a post
21
  * 5025 A plugin deleted a post
22
  *
23
+ * @package wsal
24
  */
25
  class WSAL_Sensors_Content extends WSAL_AbstractSensor {
26
 
455
  $post_data = $this->get_post_event_data( $post ); // Get event post data.
456
 
457
  // Update post URL based on current actual path.
458
+ if ( $this->plugin->IsMultisite() && ! is_subdomain_install() ) {
459
+ // for multisite using subfolders, remove the subfolder
460
+ $subdir_path = parse_url( home_url(), PHP_URL_PATH );
461
+ $escaped = str_replace( '/', '\/', preg_quote( $subdir_path ) );
462
+ $current_path = preg_replace( '/' . $escaped . '/', '', $current_path );
463
+ }
464
+
465
  $full_current_path = home_url( $current_path );
466
  if ( $full_current_path !== $post_data['PostUrl'] ) {
467
  $post_data['PostUrl'] = esc_url( $full_current_path );
1378
 
1379
  if ( 2002 === $event ) {
1380
  // 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.
1381
+ // So trigger 2002 regardless and "something" has changed in the post, we just dont detect it elsewhere.
1382
  $this->plugin->alerts->TriggerIf( $event, $event_data, array( $this, 'ignore_other_post_events' ) );
1383
  } else {
1384
  $this->plugin->alerts->Trigger( $event, $event_data );
classes/Sensors/Database.php CHANGED
@@ -5,7 +5,7 @@
5
  * Database sensors class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -29,8 +29,8 @@ if ( ! defined( 'ABSPATH' ) ) {
29
  * 5023 WordPress modified tables structure
30
  * 5024 WordPress deleted tables
31
  *
32
- * @package Wsal
33
- * @subpackage Sensors
34
  */
35
  class WSAL_Sensors_Database extends WSAL_AbstractSensor {
36
 
@@ -401,7 +401,11 @@ class WSAL_Sensors_Database extends WSAL_AbstractSensor {
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) {
5
  * Database sensors class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
29
  * 5023 WordPress modified tables structure
30
  * 5024 WordPress deleted tables
31
  *
32
+ * @package wsal
33
+ * @subpackage sensors
34
  */
35
  class WSAL_Sensors_Database extends WSAL_AbstractSensor {
36
 
401
  private function check_if_table_exists( $table_name ) {
402
  try {
403
  global $wpdb;
404
+
405
+ // output buffering is here to prevent from error log messages that would be fired if the table didn't exist
406
+ ob_start();
407
  $db_result = $wpdb->query( "SELECT COUNT(1) FROM {$table_name};" );
408
+ ob_clean();
409
 
410
  return ( 1 === $db_result );
411
  } catch (Exception $e) {
classes/Sensors/Files.php CHANGED
@@ -5,7 +5,7 @@
5
  * Files sensors class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -21,8 +21,8 @@ if ( ! defined( 'ABSPATH' ) ) {
21
  * 2046 User changed a file using the theme editor
22
  * 2051 User changed a file using the plugin editor
23
  *
24
- * @package Wsal
25
- * @subpackage Sensors
26
  */
27
  class WSAL_Sensors_Files extends WSAL_AbstractSensor {
28
 
5
  * Files sensors class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
21
  * 2046 User changed a file using the theme editor
22
  * 2051 User changed a file using the plugin editor
23
  *
24
+ * @package wsal
25
+ * @subpackage sensors
26
  */
27
  class WSAL_Sensors_Files extends WSAL_AbstractSensor {
28
 
classes/Sensors/LogInOut.php CHANGED
@@ -5,7 +5,7 @@
5
  * Log In & Out sensor class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -23,8 +23,8 @@ if ( ! defined( 'ABSPATH' ) ) {
23
  * 1004 Login blocked
24
  * 4003 User has changed his or her password
25
  *
26
- * @package Wsal
27
- * @subpackage Sensors
28
  */
29
  class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
30
 
@@ -540,7 +540,13 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
540
  * @param object $errors Current WP_errors objtect.
541
  * @param object $user User making the request.
542
  */
543
- public function event_user_requested_pw_reset( $errors, $user ) {
 
 
 
 
 
 
544
  $user_roles = $this->plugin->settings()->GetCurrentUserRoles( $user->roles );
545
  $this->plugin->alerts->Trigger(
546
  1010,
5
  * Log In & Out sensor class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
23
  * 1004 Login blocked
24
  * 4003 User has changed his or her password
25
  *
26
+ * @package wsal
27
+ * @subpackage sensors
28
  */
29
  class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
30
 
540
  * @param object $errors Current WP_errors objtect.
541
  * @param object $user User making the request.
542
  */
543
+ public function event_user_requested_pw_reset( $errors, $user = null ) {
544
+
545
+ // If we dont have the user. do nothing.
546
+ if ( is_null( $user ) || ! isset( $user->roles ) ) {
547
+ return;
548
+ }
549
+
550
  $user_roles = $this->plugin->settings()->GetCurrentUserRoles( $user->roles );
551
  $this->plugin->alerts->Trigger(
552
  1010,
classes/Sensors/MainWP.php CHANGED
@@ -5,7 +5,7 @@
5
  * MainWP Plugins & Themes sensor file.
6
  *
7
  * @since 4.1.4
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -26,8 +26,8 @@ if ( ! defined( 'ABSPATH' ) ) {
26
  * 5007 User uninstalled a theme
27
  * 5031 User updated a theme
28
  *
29
- * @package Wsal
30
- * @subpackage Sensors
31
  */
32
  class WSAL_Sensors_MainWP extends WSAL_AbstractSensor {
33
 
5
  * MainWP Plugins & Themes sensor file.
6
  *
7
  * @since 4.1.4
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
26
  * 5007 User uninstalled a theme
27
  * 5031 User updated a theme
28
  *
29
+ * @package wsal
30
+ * @subpackage sensors
31
  */
32
  class WSAL_Sensors_MainWP extends WSAL_AbstractSensor {
33
 
classes/Sensors/Menus.php CHANGED
@@ -5,7 +5,7 @@
5
  * Menus sensor file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -26,8 +26,8 @@ if ( ! defined( 'ABSPATH' ) ) {
26
  * 2085 User changed order of the objects in a menu
27
  * 2089 User moved objects as a sub-item
28
  *
29
- * @package Wsal
30
- * @subpackage Sensors
31
  */
32
  class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
33
 
5
  * Menus sensor file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
26
  * 2085 User changed order of the objects in a menu
27
  * 2089 User moved objects as a sub-item
28
  *
29
+ * @package wsal
30
+ * @subpackage sensors
31
  */
32
  class WSAL_Sensors_Menus extends WSAL_AbstractSensor {
33
 
classes/Sensors/MetaData.php CHANGED
@@ -5,7 +5,7 @@
5
  * Meta Data sensor file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -27,8 +27,8 @@ if ( ! defined( 'ABSPATH' ) ) {
27
  * 4019 User changed nickname for a user
28
  * 4020 User changed the display name for a user
29
  *
30
- * @package Wsal
31
- * @subpackage Sensors
32
  * @since 1.0.0
33
  */
34
  class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
@@ -63,7 +63,7 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
63
  * @param mixed $meta_value - Meta value.
64
  */
65
  public function EventPostMetaCreated( $object_id, $meta_key, $meta_value ) {
66
- if ( ! $this->CanLogMetaKey( $object_id, $meta_key ) || is_array( $meta_value ) ) {
67
  return;
68
  }
69
 
@@ -155,7 +155,7 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
155
  * @param mixed $meta_value - Meta value.
156
  */
157
  public function EventPostMetaUpdated( $meta_id, $object_id, $meta_key, $meta_value ) {
158
- if ( ! $this->CanLogMetaKey( $object_id, $meta_key ) || is_array( $meta_value ) ) {
159
  return;
160
  }
161
 
@@ -281,7 +281,7 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
281
 
282
  $editor_link = $this->GetEditorLink( $post );
283
  foreach ( $meta_ids as $meta_id ) {
284
- if ( ! $this->CanLogMetaKey( $object_id, $meta_key ) ) {
285
  continue;
286
  }
287
 
@@ -349,7 +349,7 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
349
  */
350
  public function event_user_meta_created( $object_id, $meta_key, $meta_value ) {
351
  // Check to see if we can log the meta key.
352
- if ( ! $this->CanLogMetaKey( $object_id, $meta_key ) || is_array( $meta_value ) ) {
353
  return;
354
  }
355
 
@@ -409,7 +409,7 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
409
  */
410
  public function event_user_meta_updated( $meta_id, $object_id, $meta_key, $meta_value ) {
411
  // Check to see if we can log the meta key.
412
- if ( ! $this->CanLogMetaKey( $object_id, $meta_key ) || is_array( $meta_value ) ) {
413
  return;
414
  }
415
 
@@ -438,6 +438,7 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
438
  'LastName' => $user->user_lastname,
439
  'Roles' => is_array( $user->roles ) ? implode( ', ', $user->roles ) : $user->roles,
440
  'EditUserLink' => add_query_arg( 'user_id', $user->ID, admin_url( 'user-edit.php' ) ),
 
441
  ),
442
  array( $this, 'must_not_contain_role_changes' )
443
  );
@@ -459,6 +460,7 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
459
  'LastName' => $user->user_lastname,
460
  'Roles' => is_array( $user->roles ) ? implode( ', ', $user->roles ) : $user->roles,
461
  'EditUserLink' => add_query_arg( 'user_id', $user->ID, admin_url( 'user-edit.php' ) ),
 
462
  )
463
  );
464
  }
5
  * Meta Data sensor file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
27
  * 4019 User changed nickname for a user
28
  * 4020 User changed the display name for a user
29
  *
30
+ * @package wsal
31
+ * @subpackage sensors
32
  * @since 1.0.0
33
  */
34
  class WSAL_Sensors_MetaData extends WSAL_AbstractMetaDataSensor {
63
  * @param mixed $meta_value - Meta value.
64
  */
65
  public function EventPostMetaCreated( $object_id, $meta_key, $meta_value ) {
66
+ if ( ! $this->CanLogMetaKey( 'post', $object_id, $meta_key ) || is_array( $meta_value ) ) {
67
  return;
68
  }
69
 
155
  * @param mixed $meta_value - Meta value.
156
  */
157
  public function EventPostMetaUpdated( $meta_id, $object_id, $meta_key, $meta_value ) {
158
+ if ( ! $this->CanLogMetaKey( 'post', $object_id, $meta_key ) || is_array( $meta_value ) ) {
159
  return;
160
  }
161
 
281
 
282
  $editor_link = $this->GetEditorLink( $post );
283
  foreach ( $meta_ids as $meta_id ) {
284
+ if ( ! $this->CanLogMetaKey( 'post', $object_id, $meta_key ) ) {
285
  continue;
286
  }
287
 
349
  */
350
  public function event_user_meta_created( $object_id, $meta_key, $meta_value ) {
351
  // Check to see if we can log the meta key.
352
+ if ( ! $this->CanLogMetaKey( 'user', $object_id, $meta_key ) || is_array( $meta_value ) ) {
353
  return;
354
  }
355
 
409
  */
410
  public function event_user_meta_updated( $meta_id, $object_id, $meta_key, $meta_value ) {
411
  // Check to see if we can log the meta key.
412
+ if ( ! $this->CanLogMetaKey( 'user', $object_id, $meta_key ) || is_array( $meta_value ) ) {
413
  return;
414
  }
415
 
438
  'LastName' => $user->user_lastname,
439
  'Roles' => is_array( $user->roles ) ? implode( ', ', $user->roles ) : $user->roles,
440
  'EditUserLink' => add_query_arg( 'user_id', $user->ID, admin_url( 'user-edit.php' ) ),
441
+ 'MetaLink' => $meta_key,
442
  ),
443
  array( $this, 'must_not_contain_role_changes' )
444
  );
460
  'LastName' => $user->user_lastname,
461
  'Roles' => is_array( $user->roles ) ? implode( ', ', $user->roles ) : $user->roles,
462
  'EditUserLink' => add_query_arg( 'user_id', $user->ID, admin_url( 'user-edit.php' ) ),
463
+ 'MetaLink' => $meta_key,
464
  )
465
  );
466
  }
classes/Sensors/Multisite.php CHANGED
@@ -5,7 +5,7 @@
5
  * Multisite sensor file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -29,8 +29,8 @@ if ( ! defined( 'ABSPATH' ) ) {
29
  * 7005 Existing site deleted from network
30
  * 7012 Network registration option updated
31
  *
32
- * @package Wsal
33
- * @subpackage Sensors
34
  */
35
  class WSAL_Sensors_Multisite extends WSAL_AbstractSensor {
36
 
5
  * Multisite sensor file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
29
  * 7005 Existing site deleted from network
30
  * 7012 Network registration option updated
31
  *
32
+ * @package wsal
33
+ * @subpackage sensors
34
  */
35
  class WSAL_Sensors_Multisite extends WSAL_AbstractSensor {
36
 
classes/Sensors/PluginsThemes.php CHANGED
@@ -5,7 +5,7 @@
5
  * Plugins & Themes sensor file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -26,8 +26,8 @@ if ( ! defined( 'ABSPATH' ) ) {
26
  * 5007 User uninstalled a theme
27
  * 5031 User updated a theme
28
  *
29
- * @package Wsal
30
- * @subpackage Sensors
31
  */
32
  class WSAL_Sensors_PluginsThemes extends WSAL_AbstractSensor {
33
 
5
  * Plugins & Themes sensor file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
26
  * 5007 User uninstalled a theme
27
  * 5031 User updated a theme
28
  *
29
+ * @package wsal
30
+ * @subpackage sensors
31
  */
32
  class WSAL_Sensors_PluginsThemes extends WSAL_AbstractSensor {
33
 
classes/Sensors/Public.php CHANGED
@@ -5,7 +5,7 @@
5
  * Public/Visitor activity sensor class file.
6
  *
7
  * @since 3.3
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  /**
17
  * System Activity sensor.
18
  *
19
- * @package Wsal
20
  */
21
  class WSAL_Sensors_Public extends WSAL_AbstractSensor {
22
 
@@ -53,9 +53,10 @@ class WSAL_Sensors_Public extends WSAL_AbstractSensor {
53
  }
54
 
55
  $event_data = array(
56
- 'NewUserID' => $user_id,
57
- 'UserChanger' => ! empty( $current_user ) ? $current_user->user_login : '',
58
- 'NewUserData' => (object) $new_user_data,
 
59
  );
60
 
61
  $plugin->alerts->Trigger( $event, $event_data, true );
5
  * Public/Visitor activity sensor class file.
6
  *
7
  * @since 3.3
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
16
  /**
17
  * System Activity sensor.
18
  *
19
+ * @package wsal
20
  */
21
  class WSAL_Sensors_Public extends WSAL_AbstractSensor {
22
 
53
  }
54
 
55
  $event_data = array(
56
+ 'NewUserID' => $user_id,
57
+ 'UserChanger' => ! empty( $current_user ) ? $current_user->user_login : '',
58
+ 'NewUserData' => (object) $new_user_data,
59
+ 'EditUserLink' => add_query_arg( 'user_id', $user->ID, admin_url( 'user-edit.php' ) ),
60
  );
61
 
62
  $plugin->alerts->Trigger( $event, $event_data, true );
classes/Sensors/System.php CHANGED
@@ -5,7 +5,7 @@
5
  * System activity sensor class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -40,8 +40,8 @@ if ( ! defined( 'ABSPATH' ) ) {
40
  * 6017 Modified the list of keywords for comments moderation
41
  * 6018 Modified the list of keywords for comments blacklisting
42
  *
43
- * @package Wsal
44
- * @subpackage Sensors
45
  */
46
  class WSAL_Sensors_System extends WSAL_AbstractSensor {
47
 
5
  * System activity sensor class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
40
  * 6017 Modified the list of keywords for comments moderation
41
  * 6018 Modified the list of keywords for comments blacklisting
42
  *
43
+ * @package wsal
44
+ * @subpackage sensors
45
  */
46
  class WSAL_Sensors_System extends WSAL_AbstractSensor {
47
 
classes/Sensors/UserProfile.php CHANGED
@@ -5,7 +5,7 @@
5
  * User profile sensor file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -28,8 +28,8 @@ if ( ! defined( 'ABSPATH' ) ) {
28
  * 4009 User revoked from Super Admin privileges
29
  * 4014 User opened the profile page of another user
30
  *
31
- * @package Wsal
32
- * @subpackage Sensors
33
  */
34
  class WSAL_Sensors_UserProfile extends WSAL_AbstractSensor {
35
 
@@ -388,7 +388,7 @@ class WSAL_Sensors_UserProfile extends WSAL_AbstractSensor {
388
  'firstname' => ( empty( $current_user->user_firstname ) ) ? ' ' : $current_user->user_firstname,
389
  'lastname' => ( empty( $current_user->user_lastname ) ) ? ' ' : $current_user->user_lastname,
390
  'CurrentUserID' => $current_user->ID,
391
- 'EventType' => 'revoked',
392
  )
393
  );
394
  }
5
  * User profile sensor file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
28
  * 4009 User revoked from Super Admin privileges
29
  * 4014 User opened the profile page of another user
30
  *
31
+ * @package wsal
32
+ * @subpackage sensors
33
  */
34
  class WSAL_Sensors_UserProfile extends WSAL_AbstractSensor {
35
 
388
  'firstname' => ( empty( $current_user->user_firstname ) ) ? ' ' : $current_user->user_firstname,
389
  'lastname' => ( empty( $current_user->user_lastname ) ) ? ' ' : $current_user->user_lastname,
390
  'CurrentUserID' => $current_user->ID,
391
+ 'EventType' => 'submitted',
392
  )
393
  );
394
  }
classes/Sensors/Widgets.php CHANGED
@@ -5,7 +5,7 @@
5
  * Widgets sensor class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -22,8 +22,8 @@ if ( ! defined( 'ABSPATH' ) ) {
22
  * 2045 User moved widget
23
  * 2071 User changed widget position
24
  *
25
- * @package Wsal
26
- * @subpackage Sensors
27
  */
28
  class WSAL_Sensors_Widgets extends WSAL_AbstractSensor {
29
 
5
  * Widgets sensor class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
22
  * 2045 User moved widget
23
  * 2071 User changed widget position
24
  *
25
+ * @package wsal
26
+ * @subpackage sensors
27
  */
28
  class WSAL_Sensors_Widgets extends WSAL_AbstractSensor {
29
 
classes/Settings.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * WSAL settings class.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  /**
16
  * This class is the actual controller of the Settings Page.
17
  *
18
- * @package Wsal
19
  */
20
  class WSAL_Settings {
21
 
@@ -85,11 +85,18 @@ class WSAL_Settings {
85
  protected $_excluded_roles = array();
86
 
87
  /**
88
- * Custom fields excluded from monitoring.
89
  *
90
  * @var array
91
  */
92
- protected $_excluded_custom = array();
 
 
 
 
 
 
 
93
 
94
  /**
95
  * Custom Post Types excluded from monitoring.
@@ -184,7 +191,7 @@ class WSAL_Settings {
184
  * @return boolean
185
  */
186
  public function is_admin_bar_notif() {
187
- return ! $this->_plugin->GetGlobalSetting( 'disable-admin-bar-notif' );
188
  }
189
 
190
  /**
@@ -195,7 +202,7 @@ class WSAL_Settings {
195
  * @param boolean $newvalue - True if enabled.
196
  */
197
  public function set_admin_bar_notif( $newvalue ) {
198
- $this->_plugin->SetGlobalSetting( 'disable-admin-bar-notif', ! $newvalue );
199
  }
200
 
201
  /**
@@ -331,6 +338,18 @@ class WSAL_Settings {
331
  }
332
 
333
  public function SetPruningDateEnabled( $enabled ) {
 
 
 
 
 
 
 
 
 
 
 
 
334
  $this->_plugin->SetGlobalBooleanSetting( 'pruning-date-e', $enabled );
335
  }
336
 
@@ -361,6 +380,16 @@ class WSAL_Settings {
361
  * @param bool $enable - Enable/Disable.
362
  */
363
  public function set_login_page_notification( $enable ) {
 
 
 
 
 
 
 
 
 
 
364
  $this->_plugin->SetGlobalBooleanSetting( 'login_page_notification', $enable );
365
  }
366
 
@@ -380,6 +409,10 @@ class WSAL_Settings {
380
  */
381
  public function set_login_page_notification_text( $text ) {
382
  $text = wp_kses( $text, $this->_plugin->allowed_html_tags );
 
 
 
 
383
  $this->_plugin->SetGlobalSetting( 'login_page_notification_text', $text );
384
  }
385
 
@@ -432,6 +465,15 @@ class WSAL_Settings {
432
  * @param bool $enabled
433
  */
434
  public function SetIncognito( $enabled ) {
 
 
 
 
 
 
 
 
 
435
  $this->_plugin->SetGlobalBooleanSetting( 'hide-plugin', $enabled );
436
  }
437
 
@@ -452,6 +494,39 @@ class WSAL_Settings {
452
  * @param array $users_or_roles – Users/Roles.
453
  */
454
  public function SetAllowedPluginViewers( $users_or_roles ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
455
  $this->_viewers = $users_or_roles;
456
  $this->_plugin->SetGlobalSetting( 'plugin-viewers', implode( ',', $this->_viewers ) );
457
  }
@@ -473,6 +548,16 @@ class WSAL_Settings {
473
  * @since 3.2.3
474
  */
475
  public function set_restrict_plugin_setting( $setting ) {
 
 
 
 
 
 
 
 
 
 
476
  $this->_plugin->SetGlobalSetting( 'restrict-plugin-settings', $setting );
477
  }
478
 
@@ -698,6 +783,14 @@ class WSAL_Settings {
698
  }
699
 
700
  public function SetMainIPFromProxy( $enabled ) {
 
 
 
 
 
 
 
 
701
  $this->_plugin->SetGlobalBooleanSetting( 'use-proxy-ip', $enabled );
702
  }
703
 
@@ -828,6 +921,35 @@ class WSAL_Settings {
828
  * Users excluded from monitoring.
829
  */
830
  public function SetExcludedMonitoringUsers( $users ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
831
  $this->_excluded_users = $users;
832
  $this->_plugin->SetGlobalSetting( 'excluded-users', esc_html( implode( ',', $this->_excluded_users ) ) );
833
  }
@@ -846,6 +968,36 @@ class WSAL_Settings {
846
  * @since 2.6.7
847
  */
848
  public function set_excluded_post_types( $post_types ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
849
  $this->_post_types = $post_types;
850
  $this->_plugin->SetGlobalSetting( 'custom-post-types', esc_html( implode( ',', $this->_post_types ) ) );
851
  }
@@ -868,8 +1020,38 @@ class WSAL_Settings {
868
  * @param array $roles - Array of roles.
869
  */
870
  public function SetExcludedMonitoringRoles( $roles ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
871
  $this->_excluded_roles = $roles;
872
- $this->_plugin->SetGlobalSetting( 'excluded-roles', esc_html( implode( ',', $this->_excluded_roles ) ) );
873
  }
874
 
875
  /**
@@ -883,25 +1065,146 @@ class WSAL_Settings {
883
  }
884
 
885
  /**
886
- * Custom fields excluded from monitoring.
 
 
887
  */
888
- public function SetExcludedMonitoringCustom( $custom ) {
889
- $this->_excluded_custom = $custom;
890
- $this->_plugin->SetGlobalSetting( 'excluded-custom', esc_html( implode( ',', $this->_excluded_custom ) ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
891
  }
892
 
893
- public function GetExcludedMonitoringCustom() {
894
- if ( empty( $this->_excluded_custom ) ) {
895
- $this->_excluded_custom = array_unique( array_filter( explode( ',', $this->_plugin->GetGlobalSetting( 'excluded-custom' ) ) ) );
896
- asort( $this->_excluded_custom );
 
 
 
 
 
897
  }
898
- return $this->_excluded_custom;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
899
  }
900
 
901
  /**
902
  * IP excluded from monitoring.
903
  */
904
  public function SetExcludedMonitoringIP( $ip ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
905
  $this->_excluded_ip = $ip;
906
  $this->_plugin->SetGlobalSetting( 'excluded-ip', esc_html( implode( ',', $this->_excluded_ip ) ) );
907
  }
@@ -1197,23 +1500,6 @@ class WSAL_Settings {
1197
  return $this->_plugin->GetGlobalSetting( 'log-visitor-failed-login-limit', 10 );
1198
  }
1199
 
1200
- public function IsArchivingEnabled() {
1201
- return $this->_plugin->GetGlobalSetting( 'archiving-e' );
1202
- }
1203
-
1204
- /**
1205
- * Switch to Archive DB if is enabled.
1206
- */
1207
- public function SwitchToArchiveDB() {
1208
- if ( $this->IsArchivingEnabled() ) {
1209
- $connection_name = $this->_plugin->GetGlobalSetting( 'archive-connection' );
1210
- $connection = $this->_plugin->external_db_util->get_connection( $connection_name );
1211
- if ( is_array( $connection ) && ! empty( $connection ) ) {
1212
- $this->_plugin->getConnector( $connection )->getAdapter( 'Occurrence' );
1213
- }
1214
- }
1215
- }
1216
-
1217
 
1218
  /**
1219
  * Method: Get Token Type.
@@ -1230,9 +1516,19 @@ class WSAL_Settings {
1230
  $users[] = $obj->user_login;
1231
  }
1232
 
 
 
 
 
 
1233
  // Get user roles.
1234
  $roles = array_keys( get_editable_roles() );
1235
 
 
 
 
 
 
1236
  // Get custom post types.
1237
  $post_types = get_post_types( array(), 'names', 'and' );
1238
  // if we are running multisite and have networkwide cpt tracker get the
@@ -1244,16 +1540,6 @@ class WSAL_Settings {
1244
  }
1245
  }
1246
 
1247
- // Check if the token matched users.
1248
- if ( in_array( $token, $users ) ) {
1249
- return 'user';
1250
- }
1251
-
1252
- // Check if the token matched user roles.
1253
- if ( in_array( $token, $roles ) ) {
1254
- return 'role';
1255
- }
1256
-
1257
  // Check if the token matched post types.
1258
  if ( in_array( $token, $post_types ) ) {
1259
  return 'cpts';
@@ -1779,4 +2065,37 @@ class WSAL_Settings {
1779
  $this->_plugin->DeleteGlobalSetting( 'mainwp_enforced_settings' );
1780
  }
1781
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1782
  }
4
  *
5
  * WSAL settings class.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
15
  /**
16
  * This class is the actual controller of the Settings Page.
17
  *
18
+ * @package wsal
19
  */
20
  class WSAL_Settings {
21
 
85
  protected $_excluded_roles = array();
86
 
87
  /**
88
+ * Custom post meta fields excluded from monitoring.
89
  *
90
  * @var array
91
  */
92
+ protected $_excluded_post_meta = array();
93
+
94
+ /**
95
+ * Custom user meta fields excluded from monitoring.
96
+ *
97
+ * @var array
98
+ */
99
+ protected $_excluded_user_meta = array();
100
 
101
  /**
102
  * Custom Post Types excluded from monitoring.
191
  * @return boolean
192
  */
193
  public function is_admin_bar_notif() {
194
+ return ! $this->_plugin->GetGlobalBooleanSetting( 'disable-admin-bar-notif', true );
195
  }
196
 
197
  /**
202
  * @param boolean $newvalue - True if enabled.
203
  */
204
  public function set_admin_bar_notif( $newvalue ) {
205
+ $this->_plugin->SetGlobalBooleanSetting( 'disable-admin-bar-notif', ! $newvalue );
206
  }
207
 
208
  /**
338
  }
339
 
340
  public function SetPruningDateEnabled( $enabled ) {
341
+
342
+ $old_setting = $this->_plugin->GetGlobalBooleanSetting( 'pruning-date-e', false );
343
+ $enable = \WSAL\Helpers\Options::string_to_bool( $enabled );
344
+ if ( $old_setting !== $enable ) {
345
+ $event_id = 6052;
346
+ $alert_data = [
347
+ 'new_setting' => ( $enable ) ? 'Delete events older than ' . $this->_pruning = $this->_plugin->GetGlobalSetting( 'pruning-date' ) . ' ' . $this->_plugin->GetGlobalSetting( 'pruning-unit', 'months' ) : 'Keep all data',
348
+ 'previous_setting' => ( $old_setting ) ? 'Delete events older than ' . $this->_pruning = $this->_plugin->GetGlobalSetting( 'pruning-date' ) . ' ' . $this->_plugin->GetGlobalSetting( 'pruning-unit', 'months' ) : 'Keep all data',
349
+ ];
350
+ $this->_plugin->alerts->Trigger( $event_id, $alert_data );
351
+ }
352
+
353
  $this->_plugin->SetGlobalBooleanSetting( 'pruning-date-e', $enabled );
354
  }
355
 
380
  * @param bool $enable - Enable/Disable.
381
  */
382
  public function set_login_page_notification( $enable ) {
383
+ //Only trigger an event if an actual changes is made.
384
+ $old_setting = $this->_plugin->GetGlobalBooleanSetting( 'login_page_notification', false );
385
+ $enable = \WSAL\Helpers\Options::string_to_bool( $enable );
386
+ if ( $old_setting !== $enable ) {
387
+ $event_id = 6046;
388
+ $alert_data = [
389
+ 'EventType' => ( $enable ) ? 'enabled' : 'disabled',
390
+ ];
391
+ $this->_plugin->alerts->Trigger( $event_id, $alert_data );
392
+ }
393
  $this->_plugin->SetGlobalBooleanSetting( 'login_page_notification', $enable );
394
  }
395
 
409
  */
410
  public function set_login_page_notification_text( $text ) {
411
  $text = wp_kses( $text, $this->_plugin->allowed_html_tags );
412
+ $old_setting = $this->_plugin->GetGlobalSetting( 'login_page_notification_text' );
413
+ if ( ! empty( $old_setting ) && ! empty( $text ) && ! is_null( $old_setting ) && $old_setting !== $text ) {
414
+ $this->_plugin->alerts->Trigger( 6047 );
415
+ }
416
  $this->_plugin->SetGlobalSetting( 'login_page_notification_text', $text );
417
  }
418
 
465
  * @param bool $enabled
466
  */
467
  public function SetIncognito( $enabled ) {
468
+ $old_value = $this->_plugin->GetGlobalSetting( 'hide-plugin' );
469
+ $old_value = ( $old_value === "yes" ) ? true : false;
470
+ if ( $old_value !== $enabled ) {
471
+ $alert_data = [
472
+ 'EventType' => ( $enabled ) ? 'enabled' : 'disabled',
473
+ ];
474
+ $this->_plugin->alerts->Trigger( 6051, $alert_data );
475
+ }
476
+
477
  $this->_plugin->SetGlobalBooleanSetting( 'hide-plugin', $enabled );
478
  }
479
 
494
  * @param array $users_or_roles – Users/Roles.
495
  */
496
  public function SetAllowedPluginViewers( $users_or_roles ) {
497
+
498
+ $old_value = $this->_plugin->GetGlobalSetting( 'plugin-viewers' );
499
+ $changes = $this->determine_added_and_removed_items( $old_value, implode( ',', $users_or_roles ) );
500
+
501
+ if ( ! empty( $changes[ 'added' ] ) ) {
502
+ foreach ( $changes[ 'added' ] as $user ) {
503
+ $this->_plugin->alerts->Trigger(
504
+ 6050,
505
+ array(
506
+ 'user' => $user,
507
+ 'previous_users' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
508
+ 'EventType' => 'added',
509
+ )
510
+ );
511
+ }
512
+ }
513
+
514
+ if ( ! empty( $changes[ 'removed' ] ) && ! empty( $old_value ) ) {
515
+ foreach ( $changes[ 'removed' ] as $user ) {
516
+ if ( ! empty( $user ) ) {
517
+ $this->_plugin->alerts->Trigger(
518
+ 6050,
519
+ array(
520
+ 'user' => $user,
521
+ 'previous_users' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
522
+ 'EventType' => 'removed',
523
+ )
524
+ );
525
+ }
526
+ }
527
+ }
528
+
529
+
530
  $this->_viewers = $users_or_roles;
531
  $this->_plugin->SetGlobalSetting( 'plugin-viewers', implode( ',', $this->_viewers ) );
532
  }
548
  * @since 3.2.3
549
  */
550
  public function set_restrict_plugin_setting( $setting ) {
551
+ $old_value = $this->_plugin->GetGlobalSetting( 'restrict-plugin-settings', 'only_admins' );
552
+
553
+ if ( ! is_null( $old_value ) && $old_value !== $setting ) {
554
+ $alert_data = [
555
+ 'new_setting' => ucfirst( str_replace( '_', ' ', $setting ) ),
556
+ 'previous_setting' => ucfirst( str_replace( '_', ' ', $old_value ) ),
557
+ ];
558
+ $this->_plugin->alerts->Trigger( 6049, $alert_data );
559
+ }
560
+
561
  $this->_plugin->SetGlobalSetting( 'restrict-plugin-settings', $setting );
562
  }
563
 
783
  }
784
 
785
  public function SetMainIPFromProxy( $enabled ) {
786
+ $old_value = $this->_plugin->GetGlobalBooleanSetting( 'use-proxy-ip' );
787
+ $enabled = \WSAL\Helpers\Options::string_to_bool( $enabled );
788
+ if ( $old_value !== $enabled ) {
789
+ $alert_data = [
790
+ 'EventType' => ( $enabled ) ? 'enabled' : 'disabled',
791
+ ];
792
+ $this->_plugin->alerts->Trigger( 6048, $alert_data );
793
+ }
794
  $this->_plugin->SetGlobalBooleanSetting( 'use-proxy-ip', $enabled );
795
  }
796
 
921
  * Users excluded from monitoring.
922
  */
923
  public function SetExcludedMonitoringUsers( $users ) {
924
+
925
+ $old_value = $this->_plugin->GetGlobalSetting( 'excluded-users', [] );
926
+ $changes = $this->determine_added_and_removed_items( $old_value, implode( ',', $users ) );
927
+
928
+ if ( ! empty( $changes[ 'added' ] ) ) {
929
+ foreach ( $changes[ 'added' ] as $user ) {
930
+ $this->_plugin->alerts->Trigger(
931
+ 6053,
932
+ array(
933
+ 'user' => $user,
934
+ 'previous_users' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
935
+ 'EventType' => 'added',
936
+ )
937
+ );
938
+ }
939
+ }
940
+ if ( ! empty( $changes[ 'removed' ] ) && ! empty( $old_value ) ) {
941
+ foreach ( $changes[ 'removed' ] as $user ) {
942
+ $this->_plugin->alerts->Trigger(
943
+ 6053,
944
+ array(
945
+ 'user' => $user,
946
+ 'previous_users' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
947
+ 'EventType' => 'removed',
948
+ )
949
+ );
950
+ }
951
+ }
952
+
953
  $this->_excluded_users = $users;
954
  $this->_plugin->SetGlobalSetting( 'excluded-users', esc_html( implode( ',', $this->_excluded_users ) ) );
955
  }
968
  * @since 2.6.7
969
  */
970
  public function set_excluded_post_types( $post_types ) {
971
+
972
+ $old_value = $this->_plugin->GetGlobalSetting( 'custom-post-types', [] );
973
+ $changes = $this->determine_added_and_removed_items( $old_value, implode( ',', $post_types ) );
974
+
975
+ if ( ! empty( $changes[ 'added' ] ) ) {
976
+ foreach ( $changes[ 'added' ] as $post_type ) {
977
+ $this->_plugin->alerts->Trigger(
978
+ 6056,
979
+ array(
980
+ 'post_type' => $post_type,
981
+ 'previous_types' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
982
+ 'EventType' => 'added',
983
+ )
984
+ );
985
+ }
986
+ }
987
+
988
+ if ( ! empty( $changes[ 'removed' ] ) && ! empty( $old_value ) ) {
989
+ foreach ( $changes[ 'removed' ] as $post_type ) {
990
+ $this->_plugin->alerts->Trigger(
991
+ 6056,
992
+ array(
993
+ 'post_type' => $post_type,
994
+ 'previous_types' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
995
+ 'EventType' => 'removed',
996
+ )
997
+ );
998
+ }
999
+ }
1000
+
1001
  $this->_post_types = $post_types;
1002
  $this->_plugin->SetGlobalSetting( 'custom-post-types', esc_html( implode( ',', $this->_post_types ) ) );
1003
  }
1020
  * @param array $roles - Array of roles.
1021
  */
1022
  public function SetExcludedMonitoringRoles( $roles ) {
1023
+
1024
+ // Trigger alert.
1025
+ $old_value = $this->_plugin->GetGlobalSetting( 'excluded-roles', [] );
1026
+ $changes = $this->determine_added_and_removed_items( $old_value, implode( ',', $roles ) );
1027
+
1028
+ if ( ! empty( $changes[ 'added' ] ) ) {
1029
+ foreach ( $changes[ 'added' ] as $user ) {
1030
+ $this->_plugin->alerts->Trigger(
1031
+ 6054,
1032
+ array(
1033
+ 'role' => $user,
1034
+ 'previous_users' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
1035
+ 'EventType' => 'added',
1036
+ )
1037
+ );
1038
+ }
1039
+ }
1040
+ if ( ! empty( $changes[ 'removed' ] ) && ! empty( $old_value ) ) {
1041
+ foreach ( $changes[ 'removed' ] as $user ) {
1042
+ $this->_plugin->alerts->Trigger(
1043
+ 6054,
1044
+ array(
1045
+ 'role' => $user,
1046
+ 'previous_users' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
1047
+ 'EventType' => 'removed',
1048
+ )
1049
+ );
1050
+ }
1051
+ }
1052
+
1053
  $this->_excluded_roles = $roles;
1054
+ $this->_plugin->SetGlobalSetting( 'excluded-roles', esc_html( implode( ',', $roles ) ) );
1055
  }
1056
 
1057
  /**
1065
  }
1066
 
1067
  /**
1068
+ * Updates custom post meta fields excluded from monitoring.
1069
+ *
1070
+ * @param array $custom
1071
  */
1072
+ public function SetExcludedPostMetaFields( $custom ) {
1073
+ $old_value = $this->GetExcludedPostMetaFields();
1074
+ $changes = $this->determine_added_and_removed_items( $old_value, implode( ',', $custom ) );
1075
+
1076
+ if ( ! empty( $changes[ 'added' ] ) ) {
1077
+ foreach ( $changes[ 'added' ] as $custom_field ) {
1078
+ $this->_plugin->alerts->Trigger(
1079
+ 6057,
1080
+ array(
1081
+ 'custom_field' => $custom_field,
1082
+ 'previous_fields' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
1083
+ 'EventType' => 'added',
1084
+ )
1085
+ );
1086
+ }
1087
+ }
1088
+
1089
+ if ( ! empty( $changes[ 'removed' ] ) && ! empty( $old_value ) ) {
1090
+ foreach ( $changes[ 'removed' ] as $custom_field ) {
1091
+ $this->_plugin->alerts->Trigger(
1092
+ 6057,
1093
+ array(
1094
+ 'custom_field' => $custom_field,
1095
+ 'previous_fields' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
1096
+ 'EventType' => 'removed',
1097
+ )
1098
+ );
1099
+ }
1100
+ }
1101
+
1102
+ $this->_excluded_post_meta = $custom;
1103
+ $this->_plugin->SetGlobalSetting( 'excluded-post-meta', esc_html( implode( ',', $this->_excluded_post_meta ) ) );
1104
  }
1105
 
1106
+ /**
1107
+ * Retrieves a list of post meta fields excluded from monitoring.
1108
+ *
1109
+ * @return array
1110
+ */
1111
+ public function GetExcludedPostMetaFields() {
1112
+ if ( empty( $this->_excluded_post_meta ) ) {
1113
+ $this->_excluded_post_meta = array_unique( array_filter( explode( ',', $this->_plugin->GetGlobalSetting( 'excluded-post-meta' ) ) ) );
1114
+ asort( $this->_excluded_post_meta );
1115
  }
1116
+ return $this->_excluded_post_meta;
1117
+ }
1118
+
1119
+ /**
1120
+ * Updates custom user meta fields excluded from monitoring.
1121
+ *
1122
+ * @param array $custom
1123
+ *
1124
+ * @since 4.3.2
1125
+ */
1126
+ public function SetExcludedUserMetaFields( $custom ) {
1127
+
1128
+ $old_value = $this->GetExcludedUserMetaFields();
1129
+ $changes = $this->determine_added_and_removed_items( $old_value, implode( ',', $custom ) );
1130
+
1131
+ if ( ! empty( $changes[ 'added' ] ) ) {
1132
+ foreach ( $changes[ 'added' ] as $custom_field ) {
1133
+ $this->_plugin->alerts->Trigger(
1134
+ 6058,
1135
+ array(
1136
+ 'custom_field' => $custom_field,
1137
+ 'previous_fields' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
1138
+ 'EventType' => 'added',
1139
+ )
1140
+ );
1141
+ }
1142
+ }
1143
+
1144
+ if ( ! empty( $changes[ 'removed' ] ) && ! empty( $old_value ) ) {
1145
+ foreach ( $changes[ 'removed' ] as $custom_field ) {
1146
+ $this->_plugin->alerts->Trigger(
1147
+ 6058,
1148
+ array(
1149
+ 'custom_field' => $custom_field,
1150
+ 'previous_fields' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
1151
+ 'EventType' => 'removed',
1152
+ )
1153
+ );
1154
+ }
1155
+ }
1156
+
1157
+ $this->_excluded_user_meta = $custom;
1158
+ $this->_plugin->SetGlobalSetting( 'excluded-user-meta', esc_html( implode( ',', $this->_excluded_user_meta ) ) );
1159
+ }
1160
+
1161
+ /**
1162
+ * Retrieves a list of user meta fields excluded from monitoring.
1163
+ *
1164
+ * @return array
1165
+ * @since 4.3.2
1166
+ */
1167
+ public function GetExcludedUserMetaFields() {
1168
+ if ( empty( $this->_excluded_user_meta ) ) {
1169
+ $this->_excluded_user_meta = array_unique( array_filter( explode( ',', $this->_plugin->GetGlobalSetting( 'excluded-user-meta' ) ) ) );
1170
+ asort( $this->_excluded_user_meta );
1171
+ }
1172
+
1173
+ return $this->_excluded_user_meta;
1174
  }
1175
 
1176
  /**
1177
  * IP excluded from monitoring.
1178
  */
1179
  public function SetExcludedMonitoringIP( $ip ) {
1180
+ $old_value = $this->_plugin->GetGlobalSetting( 'excluded-ip', [] );
1181
+ $changes = $this->determine_added_and_removed_items( $old_value, implode( ',', $ip ) );
1182
+
1183
+ if ( ! empty( $changes[ 'added' ] ) ) {
1184
+ foreach ( $changes[ 'added' ] as $user ) {
1185
+ $this->_plugin->alerts->Trigger(
1186
+ 6055,
1187
+ array(
1188
+ 'ip' => $user,
1189
+ 'previous_ips' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
1190
+ 'EventType' => 'added',
1191
+ )
1192
+ );
1193
+ }
1194
+ }
1195
+ if ( ! empty( $changes[ 'removed' ] ) && ! empty( $old_value ) ) {
1196
+ foreach ( $changes[ 'removed' ] as $user ) {
1197
+ $this->_plugin->alerts->Trigger(
1198
+ 6055,
1199
+ array(
1200
+ 'ip' => $user,
1201
+ 'previous_ips' => ( empty( $old_value ) ) ? $this->tidy_blank_values( $old_value ) : str_replace( ',', ', ', $old_value ),
1202
+ 'EventType' => 'removed',
1203
+ )
1204
+ );
1205
+ }
1206
+ }
1207
+
1208
  $this->_excluded_ip = $ip;
1209
  $this->_plugin->SetGlobalSetting( 'excluded-ip', esc_html( implode( ',', $this->_excluded_ip ) ) );
1210
  }
1500
  return $this->_plugin->GetGlobalSetting( 'log-visitor-failed-login-limit', 10 );
1501
  }
1502
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1503
 
1504
  /**
1505
  * Method: Get Token Type.
1516
  $users[] = $obj->user_login;
1517
  }
1518
 
1519
+ // Check if the token matched users.
1520
+ if ( in_array( $token, $users ) ) {
1521
+ return 'user';
1522
+ }
1523
+
1524
  // Get user roles.
1525
  $roles = array_keys( get_editable_roles() );
1526
 
1527
+ // Check if the token matched user roles.
1528
+ if ( in_array( $token, $roles ) ) {
1529
+ return 'role';
1530
+ }
1531
+
1532
  // Get custom post types.
1533
  $post_types = get_post_types( array(), 'names', 'and' );
1534
  // if we are running multisite and have networkwide cpt tracker get the
1540
  }
1541
  }
1542
 
 
 
 
 
 
 
 
 
 
 
1543
  // Check if the token matched post types.
1544
  if ( in_array( $token, $post_types ) ) {
1545
  return 'cpts';
2065
  $this->_plugin->DeleteGlobalSetting( 'mainwp_enforced_settings' );
2066
  }
2067
 
2068
+ public function determine_added_and_removed_items( $old_value, $value ) {
2069
+ $old_value = ( ! is_array( $old_value ) ) ? explode( ',', $old_value ) : $old_value;
2070
+ $value = ( ! is_array( $value ) ) ? explode( ',', $value ) : $value;
2071
+ $return = [];
2072
+ $return[ 'removed' ] = array_filter( array_diff( $old_value, $value ) );
2073
+ $return[ 'added' ] = array_filter( array_diff( $value, $old_value ) );
2074
+
2075
+ return $return;
2076
+ }
2077
+
2078
+ public function tidy_blank_values( $value ) {
2079
+ return ( empty( $value ) ) ? __( 'None provided', 'wp-security-audit-log' ) : $value;
2080
+ }
2081
+
2082
+ /**
2083
+ * Retrieves current database version.
2084
+ *
2085
+ * @return int Current database version number.
2086
+ * @since 4.3.2
2087
+ */
2088
+ public function get_database_version() {
2089
+ return (int) $this->_plugin->GetGlobalSetting( 'db_version', 0 );
2090
+ }
2091
+
2092
+ /**
2093
+ * Updates the current database version.
2094
+ *
2095
+ * @param int $version Database version number.
2096
+ * @since 4.3.2
2097
+ */
2098
+ public function set_database_version( $version ) {
2099
+ $this->_plugin->SetGlobalSetting( 'db_version', $version );
2100
+ }
2101
  }
classes/ThirdPartyExtensions/AbstractExtension.php CHANGED
@@ -4,7 +4,52 @@ if ( ! class_exists( 'WSAL_AbstractExtension' ) ) {
4
 
5
  abstract class WSAL_AbstractExtension {
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  public function __construct() {
 
8
  $this->add_filters();
9
  }
10
 
@@ -42,5 +87,22 @@ if ( ! class_exists( 'WSAL_AbstractExtension' ) ) {
42
  public function modify_predefined_plugin_slug( $plugin ) {
43
  return $plugin;
44
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
46
  }
4
 
5
  abstract class WSAL_AbstractExtension {
6
 
7
+ /**
8
+ * @var WSAL_AbstractExtension[]
9
+ * @since 4.3.2
10
+ */
11
+ private static $extensions = [];
12
+
13
+ /**
14
+ * @var WSAL_AbstractExtension[]
15
+ * @since 4.3.2
16
+ */
17
+ private static $post_types_map;
18
+
19
+ /**
20
+ * @param string $post_type
21
+ *
22
+ * @return WSAL_AbstractExtension|null
23
+ * @since 4.3.2
24
+ */
25
+ public static function get_extension_for_post_type( $post_type ) {
26
+ if ( is_null( self::$post_types_map ) ) {
27
+ self::$post_types_map = [];
28
+ if ( ! empty( self::$extensions ) ) {
29
+ foreach ( self::$extensions as $extension ) {
30
+ $post_types = $extension->get_custom_post_types();
31
+ if ( ! empty( $post_types ) ) {
32
+ foreach ( $post_types as $_post_type ) {
33
+ self::$post_types_map[ $_post_type ] = $extension;
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
39
+
40
+ if ( array_key_exists( $post_type, self::$post_types_map ) ) {
41
+ return self::$post_types_map[ $post_type ];
42
+ }
43
+
44
+ return null;
45
+ }
46
+
47
+ /**
48
+ * WSAL_AbstractExtension constructor.
49
+ *
50
+ */
51
  public function __construct() {
52
+ array_push( self::$extensions, $this );
53
  $this->add_filters();
54
  }
55
 
87
  public function modify_predefined_plugin_slug( $plugin ) {
88
  return $plugin;
89
  }
90
+
91
+ /**
92
+ * Returns a list of custom post types associated with particular extension.
93
+ *
94
+ * @return array List of custom post types.
95
+ * @since 4.3.2
96
+ */
97
+ public function get_custom_post_types() {
98
+ return [];
99
+ }
100
+
101
+ abstract public function get_plugin_name();
102
+
103
+ abstract public function get_plugin_icon_url();
104
+
105
+ abstract public function get_color();
106
+
107
  }
108
  }
classes/ThirdPartyExtensions/BBPressExtension.php CHANGED
@@ -8,7 +8,7 @@ if ( ! class_exists( 'WSAL_BBPressExtension' ) ) {
8
  $new_plugin = array(
9
  array(
10
  'addon_for' => 'bbpress',
11
- 'title' => 'BBPress',
12
  'image_filename' => 'bbpress.png',
13
  'plugin_slug' => 'wp-security-audit-log-add-on-for-bbpress/wsal-bbpress.php',
14
  'plugin_basename' => 'wsal-bbpress.php',
@@ -19,21 +19,35 @@ if ( ! class_exists( 'WSAL_BBPressExtension' ) ) {
19
  );
20
 
21
  // combine the two arrays.
22
- $plugins = array_merge( $plugins, $new_plugin );
23
- return $plugins;
24
  }
25
 
26
  public function add_event_codes( $addon_event_codes ) {
27
  $new_event_codes = array(
28
  'bbpress' => array(
29
- 'name' => __( 'BBPress', 'wp-security-audit-log' ),
30
  'event_ids' => array( 8000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8015, 8016, 8017, 8018, 8019, 8020, 8021, 8022, 8023 ),
31
  ),
32
  );
33
 
34
  // combine the two arrays.
35
- $addon_event_codes = array_merge( $addon_event_codes, $new_event_codes );
36
- return $addon_event_codes;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  }
38
  }
39
  }
8
  $new_plugin = array(
9
  array(
10
  'addon_for' => 'bbpress',
11
+ 'title' => $this->get_plugin_name(),
12
  'image_filename' => 'bbpress.png',
13
  'plugin_slug' => 'wp-security-audit-log-add-on-for-bbpress/wsal-bbpress.php',
14
  'plugin_basename' => 'wsal-bbpress.php',
19
  );
20
 
21
  // combine the two arrays.
22
+ return array_merge( $plugins, $new_plugin );
 
23
  }
24
 
25
  public function add_event_codes( $addon_event_codes ) {
26
  $new_event_codes = array(
27
  'bbpress' => array(
28
+ 'name' => $this->get_plugin_name(),
29
  'event_ids' => array( 8000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8015, 8016, 8017, 8018, 8019, 8020, 8021, 8022, 8023 ),
30
  ),
31
  );
32
 
33
  // combine the two arrays.
34
+ return array_merge( $addon_event_codes, $new_event_codes );
35
+ }
36
+
37
+ public function get_custom_post_types() {
38
+ return [ 'forum', 'topic', 'reply' ];
39
+ }
40
+
41
+ public function get_plugin_name() {
42
+ return 'BBPress';
43
+ }
44
+
45
+ public function get_plugin_icon_url() {
46
+ return 'https://ps.w.org/wp-security-audit-log-add-on-for-bbpress/assets/icon-128x128.png?rev=2253395';
47
+ }
48
+
49
+ public function get_color() {
50
+ return '#8dc770';
51
  }
52
  }
53
  }
classes/ThirdPartyExtensions/GravityFormsExtension.php CHANGED
@@ -8,7 +8,7 @@ if ( ! class_exists( 'WSAL_GravityFormsExtension' ) ) {
8
  $new_plugin = array(
9
  array(
10
  'addon_for' => 'gravityforms',
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',
@@ -18,21 +18,31 @@ if ( ! class_exists( 'WSAL_GravityFormsExtension' ) ) {
18
  );
19
 
20
  // combine the two arrays.
21
- $plugins = array_merge( $plugins, $new_plugin );
22
- return $plugins;
23
  }
24
 
25
  public function add_event_codes( $addon_event_codes ) {
26
  $new_event_codes = array(
27
- 'yoast' => array(
28
- 'name' => __( 'Gravity Forms', 'wp-security-audit-log' ),
29
  'event_ids' => array( 5700, 5702, 5703, 5704, 5709, 5715, 5705, 5708, 5706, 5707, 5710, 5711, 5712, 5713, 5714, 5716 ),
30
  ),
31
  );
32
 
33
  // combine the two arrays.
34
- $addon_event_codes = array_merge( $addon_event_codes, $new_event_codes );
35
- return $addon_event_codes;
 
 
 
 
 
 
 
 
 
 
 
36
  }
37
  }
38
  }
8
  $new_plugin = array(
9
  array(
10
  'addon_for' => 'gravityforms',
11
+ 'title' => $this->get_plugin_name(),
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',
18
  );
19
 
20
  // combine the two arrays.
21
+ return array_merge( $plugins, $new_plugin );
 
22
  }
23
 
24
  public function add_event_codes( $addon_event_codes ) {
25
  $new_event_codes = array(
26
+ 'gravityforms' => array(
27
+ 'name' => $this->get_plugin_name(),
28
  'event_ids' => array( 5700, 5702, 5703, 5704, 5709, 5715, 5705, 5708, 5706, 5707, 5710, 5711, 5712, 5713, 5714, 5716 ),
29
  ),
30
  );
31
 
32
  // combine the two arrays.
33
+ return array_merge( $addon_event_codes, $new_event_codes );
34
+ }
35
+
36
+ public function get_plugin_name() {
37
+ return 'Gravity Forms';
38
+ }
39
+
40
+ public function get_plugin_icon_url() {
41
+ return 'https://ps.w.org/activity-log-gravity-forms/assets/icon-128x128.png?rev=2465070';
42
+ }
43
+
44
+ public function get_color() {
45
+ return '#F15A29';
46
  }
47
  }
48
  }
classes/ThirdPartyExtensions/WPFormsExtension.php CHANGED
@@ -8,7 +8,7 @@ if ( ! class_exists( 'WSAL_WPFormsExtension' ) ) {
8
  $new_plugin = array(
9
  array(
10
  'addon_for' => 'wpforms',
11
- 'title' => 'WPForms',
12
  'image_filename' => 'wpforms.png',
13
  'plugin_slug' => 'wp-security-audit-log-add-on-for-wpforms/wsal-wpforms.php',
14
  'plugin_basename' => 'wsal-wpforms.php',
@@ -19,21 +19,35 @@ if ( ! class_exists( 'WSAL_WPFormsExtension' ) ) {
19
  );
20
 
21
  // combine the two arrays.
22
- $plugins = array_merge( $plugins, $new_plugin );
23
- return $plugins;
24
  }
25
 
26
  public function add_event_codes( $addon_event_codes ) {
27
  $new_event_codes = array(
28
  'wpforms' => array(
29
- 'name' => __( 'WPForms', 'wp-security-audit-log' ),
30
  'event_ids' => array( 5500, 5501, 5502, 5503, 5504, 5505, 5506 ),
31
  ),
32
  );
33
 
34
  // combine the two arrays.
35
- $addon_event_codes = array_merge( $addon_event_codes, $new_event_codes );
36
- return $addon_event_codes;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  }
38
  }
39
  }
8
  $new_plugin = array(
9
  array(
10
  'addon_for' => 'wpforms',
11
+ 'title' => $this->get_plugin_name(),
12
  'image_filename' => 'wpforms.png',
13
  'plugin_slug' => 'wp-security-audit-log-add-on-for-wpforms/wsal-wpforms.php',
14
  'plugin_basename' => 'wsal-wpforms.php',
19
  );
20
 
21
  // combine the two arrays.
22
+ return array_merge( $plugins, $new_plugin );
 
23
  }
24
 
25
  public function add_event_codes( $addon_event_codes ) {
26
  $new_event_codes = array(
27
  'wpforms' => array(
28
+ 'name' => $this->get_plugin_name(),
29
  'event_ids' => array( 5500, 5501, 5502, 5503, 5504, 5505, 5506 ),
30
  ),
31
  );
32
 
33
  // combine the two arrays.
34
+ return array_merge( $addon_event_codes, $new_event_codes );
35
+ }
36
+
37
+ public function get_custom_post_types() {
38
+ return [ 'wpforms' ];
39
+ }
40
+
41
+ public function get_plugin_name() {
42
+ return 'WPForms';
43
+ }
44
+
45
+ public function get_plugin_icon_url() {
46
+ return 'https://ps.w.org/wp-security-audit-log-add-on-for-wpforms/assets/icon-128x128.png?rev=2241926';
47
+ }
48
+
49
+ public function get_color() {
50
+ return '#e27730';
51
  }
52
  }
53
  }
classes/ThirdPartyExtensions/WooCommerceExtension.php CHANGED
@@ -4,7 +4,7 @@ if ( ! class_exists( 'WSAL_WooCommerceExtension' ) ) {
4
 
5
  class WSAL_WooCommerceExtension extends WSAL_AbstractExtension {
6
 
7
- public function __construct() {
8
  parent::__construct();
9
  add_filter( 'wsal_save_settings_disabled_events', array( $this, 'save_settings_disabled_events' ), 10, 4 );
10
  }
@@ -13,7 +13,7 @@ if ( ! class_exists( 'WSAL_WooCommerceExtension' ) ) {
13
  $new_plugin = array(
14
  array(
15
  'addon_for' => 'woocommerce',
16
- 'title' => 'WooCommerce',
17
  'image_filename' => 'woocommerce.png',
18
  'plugin_slug' => 'wp-activity-log-for-woocommerce/wsal-woocommerce.php',
19
  'plugin_basename' => 'wsal-woocommerce.php',
@@ -24,21 +24,19 @@ if ( ! class_exists( 'WSAL_WooCommerceExtension' ) ) {
24
  );
25
 
26
  // combine the two arrays.
27
- $plugins = array_merge( $plugins, $new_plugin );
28
- return $plugins;
29
  }
30
 
31
  public function add_event_codes( $addon_event_codes ) {
32
  $new_event_codes = array(
33
  'woocommerce' => array(
34
- 'name' => __( 'WooCommerce', 'wp-security-audit-log' ),
35
  'event_ids' => array( 9000, 9001, 9003, 9004, 9005, 9006, 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9014, 9015, 9072, 9073, 9077, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9026, 9042, 9043, 9044, 9045, 9046, 9105, 9047, 9048, 9049, 9050, 9051, 9027, 9028, 9029, 9030, 9031, 9032, 9033, 9034, 9085, 9086, 9087, 9088, 9089, 9090, 9091, 9092, 9093, 9094, 9074, 9075, 9076, 9078, 9079, 9080, 9081, 9082, 9002, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9060, 9061, 9062, 9063, 9064, 9065, 9066, 9067, 9068, 9069, 9070, 9071, 9035, 9036, 9037, 9038, 9039, 9040, 9041, 9083, 9084, 9101, 9102, 9103, 9104 ),
36
  ),
37
  );
38
 
39
  // combine the two arrays.
40
- $addon_event_codes = array_merge( $addon_event_codes, $new_event_codes );
41
- return $addon_event_codes;
42
  }
43
 
44
  /**
@@ -67,5 +65,28 @@ if ( ! class_exists( 'WSAL_WooCommerceExtension' ) ) {
67
 
68
  return $disabled;
69
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  }
71
  }
4
 
5
  class WSAL_WooCommerceExtension extends WSAL_AbstractExtension {
6
 
7
+ public function __construct( ) {
8
  parent::__construct();
9
  add_filter( 'wsal_save_settings_disabled_events', array( $this, 'save_settings_disabled_events' ), 10, 4 );
10
  }
13
  $new_plugin = array(
14
  array(
15
  'addon_for' => 'woocommerce',
16
+ 'title' => $this->get_plugin_name(),
17
  'image_filename' => 'woocommerce.png',
18
  'plugin_slug' => 'wp-activity-log-for-woocommerce/wsal-woocommerce.php',
19
  'plugin_basename' => 'wsal-woocommerce.php',
24
  );
25
 
26
  // combine the two arrays.
27
+ return array_merge( $plugins, $new_plugin );
 
28
  }
29
 
30
  public function add_event_codes( $addon_event_codes ) {
31
  $new_event_codes = array(
32
  'woocommerce' => array(
33
+ 'name' => $this->get_plugin_name(),
34
  'event_ids' => array( 9000, 9001, 9003, 9004, 9005, 9006, 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9014, 9015, 9072, 9073, 9077, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9026, 9042, 9043, 9044, 9045, 9046, 9105, 9047, 9048, 9049, 9050, 9051, 9027, 9028, 9029, 9030, 9031, 9032, 9033, 9034, 9085, 9086, 9087, 9088, 9089, 9090, 9091, 9092, 9093, 9094, 9074, 9075, 9076, 9078, 9079, 9080, 9081, 9082, 9002, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9060, 9061, 9062, 9063, 9064, 9065, 9066, 9067, 9068, 9069, 9070, 9071, 9035, 9036, 9037, 9038, 9039, 9040, 9041, 9083, 9084, 9101, 9102, 9103, 9104 ),
35
  ),
36
  );
37
 
38
  // combine the two arrays.
39
+ return array_merge( $addon_event_codes, $new_event_codes );
 
40
  }
41
 
42
  /**
65
 
66
  return $disabled;
67
  }
68
+
69
+ public function get_custom_post_types() {
70
+ return [
71
+ 'product',
72
+ 'shop_coupon',
73
+ 'shop_order',
74
+ 'shop_order_refund',
75
+ 'product_variation',
76
+ 'wc_product_tab'
77
+ ];
78
+ }
79
+
80
+ public function get_plugin_name() {
81
+ return 'WooCommerce';
82
+ }
83
+
84
+ public function get_plugin_icon_url() {
85
+ return 'https://ps.w.org/wp-activity-log-for-woocommerce/assets/icon-128x128.png?rev=2357550';
86
+ }
87
+
88
+ public function get_color() {
89
+ return '#7f54b3';
90
+ }
91
  }
92
  }
classes/ThirdPartyExtensions/YoastSeoExtension.php CHANGED
@@ -8,7 +8,7 @@ if ( ! class_exists( 'WSAL_YoastSeoExtension' ) ) {
8
  $new_plugin = array(
9
  array(
10
  'addon_for' => 'wp-seo',
11
- 'title' => 'Yoast SEO',
12
  'image_filename' => 'yoast.png',
13
  'plugin_slug' => 'activity-log-wp-seo/activity-log-wp-seo.php',
14
  'plugin_basename' => 'activity-log-wp-seo.php',
@@ -19,30 +19,40 @@ if ( ! class_exists( 'WSAL_YoastSeoExtension' ) ) {
19
  );
20
 
21
  // combine the two arrays.
22
- $plugins = array_merge( $plugins, $new_plugin );
23
- return $plugins;
24
  }
25
 
26
  public function add_event_codes( $addon_event_codes ) {
27
  $new_event_codes = array(
28
  'yoast' => array(
29
- 'name' => __( 'Yoast SEO', 'wp-security-audit-log' ),
30
  'event_ids' => array( 8801, 8802, 8803, 8804, 8805, 8806, 8807, 8808, 8809, 8810, 8811, 8812, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8821, 8822, 8823, 8824, 8825 ),
31
  ),
32
  );
33
 
34
  // combine the two arrays.
35
- $addon_event_codes = array_merge( $addon_event_codes, $new_event_codes );
36
- return $addon_event_codes;
37
  }
38
 
39
  public function modify_predefined_plugin_slug( $plugin ) {
40
  // Correct yoast addon.
41
  if ( 'yoast' === $plugin ) {
42
- $plugin = 'wp-seo';
43
  }
44
 
45
  return $plugin;
46
  }
 
 
 
 
 
 
 
 
 
 
 
 
47
  }
48
  }
8
  $new_plugin = array(
9
  array(
10
  'addon_for' => 'wp-seo',
11
+ 'title' => $this->get_plugin_name(),
12
  'image_filename' => 'yoast.png',
13
  'plugin_slug' => 'activity-log-wp-seo/activity-log-wp-seo.php',
14
  'plugin_basename' => 'activity-log-wp-seo.php',
19
  );
20
 
21
  // combine the two arrays.
22
+ return array_merge( $plugins, $new_plugin );
 
23
  }
24
 
25
  public function add_event_codes( $addon_event_codes ) {
26
  $new_event_codes = array(
27
  'yoast' => array(
28
+ 'name' => $this->get_plugin_name(),
29
  'event_ids' => array( 8801, 8802, 8803, 8804, 8805, 8806, 8807, 8808, 8809, 8810, 8811, 8812, 8813, 8814, 8815, 8816, 8817, 8818, 8819, 8820, 8821, 8822, 8823, 8824, 8825 ),
30
  ),
31
  );
32
 
33
  // combine the two arrays.
34
+ return array_merge( $addon_event_codes, $new_event_codes );
 
35
  }
36
 
37
  public function modify_predefined_plugin_slug( $plugin ) {
38
  // Correct yoast addon.
39
  if ( 'yoast' === $plugin ) {
40
+ return 'wp-seo';
41
  }
42
 
43
  return $plugin;
44
  }
45
+
46
+ public function get_plugin_name() {
47
+ return 'Yoast SEO';
48
+ }
49
+
50
+ public function get_plugin_icon_url() {
51
+ return 'https://ps.w.org/activity-log-wp-seo/assets/icon-128x128.png?rev=2393849';
52
+ }
53
+
54
+ public function get_color() {
55
+ return '#a4286a';
56
+ }
57
  }
58
  }
classes/Utilities/DateTimeFormatter.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Singleton utility class used for formatting date and time strings.
6
  *
7
- * @package Wsal
8
  * @since 4.2.0
9
  */
10
 
@@ -150,22 +150,4 @@ class WSAL_Utilities_DateTimeFormatter {
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
  }
4
  *
5
  * Singleton utility class used for formatting date and time strings.
6
  *
7
+ * @package wsal
8
  * @since 4.2.0
9
  */
10
 
150
  return $result;
151
 
152
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  }
classes/Utilities/Emailer.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Utility class used for sending emails.
6
  *
7
- * @package Wsal
8
  * @since 3.3.1
9
  */
10
 
4
  *
5
  * Utility class used for sending emails.
6
  *
7
+ * @package wsal
8
  * @since 3.3.1
9
  */
10
 
classes/Utilities/PluginInstallAndActivate.php CHANGED
@@ -5,7 +5,7 @@
5
  * Provides the allowed plugins data as well as a render method to display the
6
  * items inside of a table with install/actiavte buttons.
7
  *
8
- * @package Wsal
9
  * @since 4.0.1
10
  */
11
 
5
  * Provides the allowed plugins data as well as a render method to display the
6
  * items inside of a table with install/actiavte buttons.
7
  *
8
+ * @package wsal
9
  * @since 4.0.1
10
  */
11
 
classes/Utilities/PluginInstallerAction.php CHANGED
@@ -5,7 +5,7 @@
5
  * Class file for installing plugins from the repo.
6
  *
7
  * @since 4.0.1
8
- * @package Wsal
9
  */
10
 
11
  if ( ! class_exists( 'WSAL_PluginInstallerAction' ) ) {
@@ -24,8 +24,6 @@ if ( ! class_exists( 'WSAL_PluginInstallerAction' ) ) {
24
  * @since 4.0.1
25
  */
26
  public function register() {
27
- // @TODO: remove this unprefixed call and swap to prefixed only.
28
- add_action( 'wp_ajax_run_addon_install', array( $this, 'run_addon_install' ) );
29
  add_action( 'wp_ajax_wsal_run_addon_install', array( $this, 'run_addon_install' ) );
30
  }
31
 
5
  * Class file for installing plugins from the repo.
6
  *
7
  * @since 4.0.1
8
+ * @package wsal
9
  */
10
 
11
  if ( ! class_exists( 'WSAL_PluginInstallerAction' ) ) {
24
  * @since 4.0.1
25
  */
26
  public function register() {
 
 
27
  add_action( 'wp_ajax_wsal_run_addon_install', array( $this, 'run_addon_install' ) );
28
  }
29
 
classes/Utilities/RequestUtils.php CHANGED
@@ -3,7 +3,7 @@
3
  /**
4
  * Utility class for handling request inputs.
5
  *
6
- * @package Wsal
7
  * @since 4.1.4
8
  */
9
  class WSAL_Utilities_RequestUtils {
3
  /**
4
  * Utility class for handling request inputs.
5
  *
6
+ * @package wsal
7
  * @since 4.1.4
8
  */
9
  class WSAL_Utilities_RequestUtils {
classes/Utilities/UserUtils.php CHANGED
@@ -8,8 +8,8 @@ if ( ! defined( 'ABSPATH' ) ) {
8
  /**
9
  * Utility class for some user related stuff.
10
  *
11
- * @package Wsal
12
- * @since latest
13
  */
14
  class WSAL_Utilities_UsersUtils {
15
 
@@ -25,7 +25,7 @@ class WSAL_Utilities_UsersUtils {
25
  * @param WP_User $user WordPress user object.
26
  *
27
  * @return string
28
- * @since latest
29
  */
30
  public static function get_display_label( $plugin, $user ) {
31
  if ( ! isset( self::$user_label_setting ) ) {
@@ -45,4 +45,29 @@ class WSAL_Utilities_UsersUtils {
45
 
46
  return $user->user_login;
47
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  }
8
  /**
9
  * Utility class for some user related stuff.
10
  *
11
+ * @package wsal
12
+ * @since 4.3.0
13
  */
14
  class WSAL_Utilities_UsersUtils {
15
 
25
  * @param WP_User $user WordPress user object.
26
  *
27
  * @return string
28
+ * @since 4.3.0
29
  */
30
  public static function get_display_label( $plugin, $user ) {
31
  if ( ! isset( self::$user_label_setting ) ) {
45
 
46
  return $user->user_login;
47
  }
48
+
49
+ /**
50
+ * Gets the username.
51
+ *
52
+ * @param array $meta - Event meta data.
53
+ *
54
+ * @return string User's username.
55
+ *
56
+ * @since 4.3.1 Made the meta attribute mandatory, changed to static and moved from occurrence to alert.
57
+ */
58
+ public static function GetUsername( $meta = null ) {
59
+ if ( ! is_array( $meta ) ) {
60
+ return '';
61
+ }
62
+
63
+ if ( isset( $meta['Username'] ) ) {
64
+ return $meta['Username'];
65
+ } elseif ( isset( $meta['CurrentUserID'] ) ) {
66
+ $data = get_userdata( $meta['CurrentUserID'] );
67
+
68
+ return $data ? $data->user_login : '';
69
+ }
70
+
71
+ return '';
72
+ }
73
  }
classes/ViewManager.php CHANGED
@@ -5,7 +5,7 @@
5
  * View manager class file.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -19,7 +19,7 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  * This class includes all the views, initialize them and shows the active one.
20
  * It creates also the menu items.
21
  *
22
- * @package Wsal
23
  */
24
  class WSAL_ViewManager {
25
 
5
  * View manager class file.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
19
  * This class includes all the views, initialize them and shows the active one.
20
  * It creates also the menu items.
21
  *
22
+ * @package wsal
23
  */
24
  class WSAL_ViewManager {
25
 
classes/Views/AuditLog.php CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  /**
17
  * Audit Log Viewer Page
18
  *
19
- * @package Wsal
20
  */
21
  class WSAL_Views_AuditLog extends WSAL_AbstractView {
22
 
@@ -77,10 +77,10 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
77
  add_action( 'wp_ajax_wsal_freemius_opt_in', array( $this, 'wsal_freemius_opt_in' ) );
78
  add_action( 'wp_ajax_wsal_dismiss_setup_modal', array( $this, 'dismiss_setup_modal' ) );
79
  add_action( 'wp_ajax_wsal_dismiss_advert', array( $this, 'wsal_dismiss_advert' ) );
80
- add_action( 'wp_ajax_wsal_dismiss_notice_disconnect', array( $this, 'dismiss_notice_disconnect' ) );
81
  add_action( 'wp_ajax_wsal_dismiss_notice_addon_available', array( $this, 'dismiss_notice_addon_available' ) );
 
82
  add_action( 'wp_ajax_wsal_dismiss_wp_pointer', array( $this, 'dismiss_wp_pointer' ) );
83
- add_action( 'all_admin_notices', array( $this, 'AdminNoticesPremium' ) );
84
  add_action( 'admin_enqueue_scripts', array( $this, 'load_pointers' ), 1000 );
85
  add_filter( 'wsal_pointers_toplevel_page_wsal-auditlog', array( $this, 'register_privacy_pointer' ), 10, 1 );
86
  add_action( 'admin_init', array( $this, 'handle_form_submission' ) );
@@ -121,7 +121,7 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
121
  * 2. DB disconnection notice.
122
  * 3. Freemius opt-in/out notice.
123
  */
124
- public function AdminNoticesPremium() {
125
  $is_current_view = $this->_plugin->views->GetActiveView() == $this;
126
 
127
  // Check if any of the extensions is activated.
@@ -196,26 +196,6 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
196
  endif;
197
  }
198
 
199
- // Get DB connector.
200
- $db_config = WSAL_Connector_ConnectorFactory::GetConfig(); // Get DB connector configuration.
201
- $wsal_db = $this->_plugin->getConnector( $db_config )->getConnection(); // Get DB connection.
202
- $connection = true;
203
- if ( isset( $wsal_db->dbh->errno ) ) {
204
- $connection = 0 !== (int) $wsal_db->dbh->errno ? false : true; // Database connection error check.
205
- } elseif ( is_wp_error( $wsal_db->error ) ) {
206
- $connection = false;
207
- }
208
-
209
- // Add connectivity notice.
210
- $notice_dismissed = get_transient( 'wsal-dismiss-notice-disconnect' );
211
- if ( ! $connection && false === $notice_dismissed && $is_current_view ) {
212
- ?>
213
- <div class="notice notice-error is-dismissible" id="wsal-notice-connect-issue">
214
- <p><?php esc_html_e( 'There are connectivity issues with the database where the WordPress activity log is stored. The logs will be temporary buffered in the WordPress database until the connection is fully restored.', 'wp-security-audit-log' ); ?></p>
215
- <?php wp_nonce_field( 'wsal_dismiss_notice_disconnect', 'wsal-dismiss-notice-disconnect', false, true ); ?>
216
- </div>
217
- <?php
218
- }
219
 
220
  // Check anonymous mode.
221
  if ( 'anonymous' === $this->_plugin->GetGlobalSetting( 'freemius_state', 'anonymous' ) ) { // If user manually opt-out then don't show the notice.
@@ -244,6 +224,8 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
244
 
245
  // Display add-on available notice.
246
  $screen = get_current_screen();
 
 
247
  if ( $is_current_view && in_array( $screen->base, array( 'toplevel_page_wsal-auditlog', 'toplevel_page_wsal-auditlog-network' ) ) ) {
248
  // Grab list of installed plugins.
249
  $all_plugins = get_plugins();
@@ -291,7 +273,7 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
291
  esc_html__( 'installed.', 'wp-security-audit-log' ),
292
  esc_html( $plugin_description ),
293
  esc_html__( 'Install extension', 'wp-security-audit-log' ),
294
- esc_url( add_query_arg( 'page', 'wsal-togglealerts#tab-third-party-plugins', network_admin_url( 'admin.php' ) ) )
295
  );
296
  ?>
297
  <?php wp_nonce_field( 'wsal_dismiss_notice_addon_available_' . $addon, 'wsal-dismiss-notice-addon-available-' . $addon, false, true ); ?>
@@ -304,24 +286,6 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
304
  }
305
  }
306
 
307
- /**
308
- * Method: Ajax handler for dismissing DB disconnect issue.
309
- */
310
- public function dismiss_notice_disconnect() {
311
- // Get $_POST array arguments.
312
- $post_array_args = array(
313
- 'nonce' => FILTER_SANITIZE_STRING,
314
- );
315
- $post_array = filter_input_array( INPUT_POST, $post_array_args );
316
-
317
- // Verify nonce.
318
- if ( wp_verify_nonce( $post_array['nonce'], 'wsal_dismiss_notice_disconnect' ) ) {
319
- set_transient( 'wsal-dismiss-notice-disconnect', 1, 6 * HOUR_IN_SECONDS );
320
- die();
321
- }
322
- die( 'Nonce verification failed!' );
323
- }
324
-
325
  /**
326
  * Method: Ajax handler for dismissing addon notice.
327
  */
@@ -420,9 +384,9 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
420
 
421
  // If 'grid' is requested use it otherwise use list view by default.
422
  if ( 'grid' !== $requested_view ) {
423
- $this->_view = new WSAL_AuditLogListView( $this->_plugin, $this->page_args );
424
  } else {
425
- $this->_view = new WSAL_AuditLogGridView( $this->_plugin, $this->page_args );
426
  }
427
 
428
  // if the requested view didn't match the view users last viewed
@@ -652,14 +616,6 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
652
  die( 'Occurrence parameter expected.' );
653
  }
654
 
655
- // Get selected db.
656
- $selected_db = get_transient( 'wsal_wp_selected_db' );
657
- $selected_db_user = (int) get_transient( 'wsal_wp_selected_db_user' );
658
-
659
- // Check if archive db is enabled and the current user matches the one who selected archive db.
660
- if ( ! empty( $selected_db ) && 'archive' === $selected_db && get_current_user_id() === $selected_db_user ) {
661
- $this->_plugin->settings()->SwitchToArchiveDB(); // Switch to archive DB.
662
- }
663
 
664
  $occ = new WSAL_Models_Occurrence();
665
  $occ->Load( 'id = %d', array( (int) $get_array['occurrence'] ) );
@@ -681,7 +637,7 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
681
  }
682
 
683
  /**
684
- * Ajax callback to refrest the view.
685
  */
686
  public function AjaxRefresh() {
687
  if ( ! $this->_plugin->settings()->CurrentUserCan( 'view' ) ) {
@@ -699,26 +655,13 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
699
  // Total number of alerts.
700
  $old = (int) $post_array['logcount'];
701
 
702
- // Check if the user is viewing archived db.
703
- $is_archive = false;
704
- if ( $this->_plugin->settings()->IsArchivingEnabled() ) {
705
- $selected_db = get_transient( 'wsal_wp_selected_db' );
706
- if ( $selected_db && 'archive' === $selected_db ) {
707
- $is_archive = true;
708
- }
709
- }
710
 
711
  // Check for new total number of alerts.
712
  $occ = new WSAL_Models_Occurrence();
713
  $new = (int) $occ->Count();
714
 
715
- // If the current view is archive then don't refresh.
716
- if ( $is_archive ) {
717
- echo 'false';
718
- } else {
719
- // If the count is changed, then return the new count.
720
- echo $old === $new ? 'false' : esc_html( $new );
721
- }
722
  die;
723
  }
724
 
@@ -770,18 +713,6 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
770
  die( json_encode( array_slice( $grp1 + $grp2, 0, 7 ) ) );
771
  }
772
 
773
- /**
774
- * Ajax callback to switch database.
775
- */
776
- public function AjaxSwitchDB() {
777
- // Filter $_POST array for security.
778
- $post_array = filter_input_array( INPUT_POST );
779
-
780
- if ( isset( $post_array['selected_db'] ) ) {
781
- set_transient( 'wsal_wp_selected_db', $post_array['selected_db'], HOUR_IN_SECONDS );
782
- set_transient( 'wsal_wp_selected_db_user', get_current_user_id(), HOUR_IN_SECONDS );
783
- }
784
- }
785
 
786
  /**
787
  * Ajax callback to download failed login log.
@@ -914,6 +845,14 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
914
  array(),
915
  filemtime( $this->_plugin->GetBaseDir() . '/css/auditlog.css' )
916
  );
 
 
 
 
 
 
 
 
917
  }
918
 
919
  /**
@@ -971,7 +910,7 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
971
  'msgError' => sprintf(
972
  /* translators: 1 - an opening link tag, 2 - the closing tag. */
973
  __( '<br>An error occurred when trying to install and activate the plugin. Please try install it again from the %1$sevent settings%2$s page.', 'wp-security-audit-log' ),
974
- '<a href="' . esc_url( add_query_arg( 'page', 'wsal-togglealerts#tab-third-party-plugins', network_admin_url( 'admin.php' ) ) ) . '">',
975
  '</a>'
976
  ),
977
  ),
@@ -1227,6 +1166,46 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
1227
  }
1228
 
1229
  $this->_plugin->SetGlobalBooleanSetting( 'setup-modal-dismissed', true );
1230
- echo wp_send_json_success();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1231
  }
1232
  }
16
  /**
17
  * Audit Log Viewer Page
18
  *
19
+ * @package wsal
20
  */
21
  class WSAL_Views_AuditLog extends WSAL_AbstractView {
22
 
77
  add_action( 'wp_ajax_wsal_freemius_opt_in', array( $this, 'wsal_freemius_opt_in' ) );
78
  add_action( 'wp_ajax_wsal_dismiss_setup_modal', array( $this, 'dismiss_setup_modal' ) );
79
  add_action( 'wp_ajax_wsal_dismiss_advert', array( $this, 'wsal_dismiss_advert' ) );
 
80
  add_action( 'wp_ajax_wsal_dismiss_notice_addon_available', array( $this, 'dismiss_notice_addon_available' ) );
81
+ add_action( 'wp_ajax_wsal_dismiss_missing_aws_sdk_nudge', array( $this, 'dismiss_missing_aws_sdk_nudge' ) );
82
  add_action( 'wp_ajax_wsal_dismiss_wp_pointer', array( $this, 'dismiss_wp_pointer' ) );
83
+ add_action( 'all_admin_notices', array( $this, 'AdminNotices' ) );
84
  add_action( 'admin_enqueue_scripts', array( $this, 'load_pointers' ), 1000 );
85
  add_filter( 'wsal_pointers_toplevel_page_wsal-auditlog', array( $this, 'register_privacy_pointer' ), 10, 1 );
86
  add_action( 'admin_init', array( $this, 'handle_form_submission' ) );
121
  * 2. DB disconnection notice.
122
  * 3. Freemius opt-in/out notice.
123
  */
124
+ public function AdminNotices() {
125
  $is_current_view = $this->_plugin->views->GetActiveView() == $this;
126
 
127
  // Check if any of the extensions is activated.
196
  endif;
197
  }
198
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
 
200
  // Check anonymous mode.
201
  if ( 'anonymous' === $this->_plugin->GetGlobalSetting( 'freemius_state', 'anonymous' ) ) { // If user manually opt-out then don't show the notice.
224
 
225
  // Display add-on available notice.
226
  $screen = get_current_screen();
227
+
228
+
229
  if ( $is_current_view && in_array( $screen->base, array( 'toplevel_page_wsal-auditlog', 'toplevel_page_wsal-auditlog-network' ) ) ) {
230
  // Grab list of installed plugins.
231
  $all_plugins = get_plugins();
273
  esc_html__( 'installed.', 'wp-security-audit-log' ),
274
  esc_html( $plugin_description ),
275
  esc_html__( 'Install extension', 'wp-security-audit-log' ),
276
+ $this->get_third_party_plugins_tab_url()
277
  );
278
  ?>
279
  <?php wp_nonce_field( 'wsal_dismiss_notice_addon_available_' . $addon, 'wsal-dismiss-notice-addon-available-' . $addon, false, true ); ?>
286
  }
287
  }
288
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
  /**
290
  * Method: Ajax handler for dismissing addon notice.
291
  */
384
 
385
  // If 'grid' is requested use it otherwise use list view by default.
386
  if ( 'grid' !== $requested_view ) {
387
+ $this->_view = new WSAL_AuditLogListView( $this->_plugin, $this, $this->page_args );
388
  } else {
389
+ $this->_view = new WSAL_AuditLogGridView( $this->_plugin, $this, $this->page_args );
390
  }
391
 
392
  // if the requested view didn't match the view users last viewed
616
  die( 'Occurrence parameter expected.' );
617
  }
618
 
 
 
 
 
 
 
 
 
619
 
620
  $occ = new WSAL_Models_Occurrence();
621
  $occ->Load( 'id = %d', array( (int) $get_array['occurrence'] ) );
637
  }
638
 
639
  /**
640
+ * Ajax callback to refresh the view.
641
  */
642
  public function AjaxRefresh() {
643
  if ( ! $this->_plugin->settings()->CurrentUserCan( 'view' ) ) {
655
  // Total number of alerts.
656
  $old = (int) $post_array['logcount'];
657
 
 
 
 
 
 
 
 
 
658
 
659
  // Check for new total number of alerts.
660
  $occ = new WSAL_Models_Occurrence();
661
  $new = (int) $occ->Count();
662
 
663
+ // If the count is changed, then return the new count.
664
+ echo $old === $new ? 'false' : esc_html( $new );
 
 
 
 
 
665
  die;
666
  }
667
 
713
  die( json_encode( array_slice( $grp1 + $grp2, 0, 7 ) ) );
714
  }
715
 
 
 
 
 
 
 
 
 
 
 
 
 
716
 
717
  /**
718
  * Ajax callback to download failed login log.
845
  array(),
846
  filemtime( $this->_plugin->GetBaseDir() . '/css/auditlog.css' )
847
  );
848
+
849
+ // admin notices styles
850
+ wp_enqueue_style(
851
+ 'wsal_admin_notices',
852
+ $this->_plugin->GetBaseUrl() . '/css/admin-notices.css',
853
+ array(),
854
+ filemtime( $this->_plugin->GetBaseDir() . '/css/admin-notices.css' )
855
+ );
856
  }
857
 
858
  /**
910
  'msgError' => sprintf(
911
  /* translators: 1 - an opening link tag, 2 - the closing tag. */
912
  __( '<br>An error occurred when trying to install and activate the plugin. Please try install it again from the %1$sevent settings%2$s page.', 'wp-security-audit-log' ),
913
+ $this->get_third_party_plugins_tab_url(),
914
  '</a>'
915
  ),
916
  ),
1166
  }
1167
 
1168
  $this->_plugin->SetGlobalBooleanSetting( 'setup-modal-dismissed', true );
1169
+ wp_send_json_success();
1170
+ }
1171
+
1172
+
1173
+ /**
1174
+ * @return string URL of the 3rd party extensions tab.
1175
+ * @since 4.3.2
1176
+ */
1177
+ public function get_third_party_plugins_tab_url() {
1178
+ return esc_url( add_query_arg( 'page', 'wsal-togglealerts#tab-third-party-plugins', network_admin_url( 'admin.php' ) ) );
1179
+ }
1180
+
1181
+ /**
1182
+ * Builds HTML markup to display 3rd party extension teaser if there is a post type in the event meta data and the
1183
+ * custom post belongs to certain 3rd party plugin.
1184
+ *
1185
+ * @param array $event_meta Event meta data array.
1186
+ *
1187
+ * @return string HTML teaser markup or empty string.
1188
+ * @since 4.3.2
1189
+ */
1190
+ public function maybe_build_teaser_html( $event_meta ) {
1191
+ $result = '';
1192
+ if ( array_key_exists( 'PostType', $event_meta ) ) {
1193
+ $extension = WSAL_AbstractExtension::get_extension_for_post_type( $event_meta['PostType'] );
1194
+ if ( ! is_null( $extension ) ) {
1195
+ $result .= '<div class="extension-ad" style="border-color: transparent transparent ' . $extension->get_color() . ' transparent;">';
1196
+ $result .= '</div>';
1197
+ $plugin_name = $extension->get_plugin_name();
1198
+ $link_title = sprintf(
1199
+ esc_html__( 'Install the activity log extension for %1$s for more detailed logging of changes done in %2$s.', 'wp-security-audit-log' ),
1200
+ $plugin_name,
1201
+ $plugin_name
1202
+ );
1203
+ $result .= '<a class="icon" title="' . $link_title . '" href="' . $this->get_third_party_plugins_tab_url() . '">';
1204
+ $result .= '<img src="' . $extension->get_plugin_icon_url() . '" />';
1205
+ $result .= '</div>';
1206
+ }
1207
+ }
1208
+
1209
+ return $result;
1210
  }
1211
  }
classes/Views/EmailNotifications.php CHANGED
@@ -5,7 +5,7 @@
5
  * WSAL email notifications page.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * Email Notifications Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Views_EmailNotifications extends WSAL_ExtensionPlaceholderView {
23
 
5
  * WSAL email notifications page.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * Email Notifications Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Views_EmailNotifications extends WSAL_ExtensionPlaceholderView {
23
 
classes/Views/ExternalDB.php CHANGED
@@ -5,7 +5,7 @@
5
  * WSAL external db page.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * External DB Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Views_ExternalDB extends WSAL_ExtensionPlaceholderView {
23
 
5
  * WSAL external db page.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * External DB Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Views_ExternalDB extends WSAL_ExtensionPlaceholderView {
23
 
classes/Views/Help.php CHANGED
@@ -5,7 +5,7 @@
5
  * WSAL help page.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -19,7 +19,7 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  * - Plugin Support
20
  * - Plugin Documentation
21
  *
22
- * @package Wsal
23
  */
24
  class WSAL_Views_Help extends WSAL_AbstractView {
25
 
5
  * WSAL help page.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
19
  * - Plugin Support
20
  * - Plugin Documentation
21
  *
22
+ * @package wsal
23
  */
24
  class WSAL_Views_Help extends WSAL_AbstractView {
25
 
classes/Views/LogInUsers.php CHANGED
@@ -5,7 +5,7 @@
5
  * WSAL users sessions page.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * User Sessions Management Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Views_LogInUsers extends WSAL_ExtensionPlaceholderView {
23
 
5
  * WSAL users sessions page.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * User Sessions Management Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Views_LogInUsers extends WSAL_ExtensionPlaceholderView {
23
 
classes/Views/Reports.php CHANGED
@@ -5,7 +5,7 @@
5
  * WSAL reports page.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * Reports Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Views_Reports extends WSAL_ExtensionPlaceholderView {
23
 
5
  * WSAL reports page.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * Reports Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Views_Reports extends WSAL_ExtensionPlaceholderView {
23
 
classes/Views/Search.php CHANGED
@@ -5,7 +5,7 @@
5
  * WSAL users sessions page.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  * Search Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
- * @package Wsal
21
  */
22
  class WSAL_Views_Search extends WSAL_ExtensionPlaceholderView {
23
 
5
  * WSAL users sessions page.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
17
  * Search Add-On promo Page.
18
  * Used only if the plugin is not activated.
19
  *
20
+ * @package wsal
21
  */
22
  class WSAL_Views_Search extends WSAL_ExtensionPlaceholderView {
23
 
classes/Views/Settings.php CHANGED
@@ -5,7 +5,7 @@
5
  * Settings page of the plugin.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -269,12 +269,6 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
269
  $now = current_time( 'timestamp' ); // Current time.
270
  $max_sdate = $this->_plugin->settings()->GetPruningDate(); // Pruning date.
271
 
272
- // If archiving is enabled then events are deleted from the archive database.
273
- $archiving = $this->_plugin->settings()->IsArchivingEnabled();
274
- if ( $archiving ) {
275
- // Switch to Archive DB.
276
- $this->_plugin->settings()->SwitchToArchiveDB();
277
- }
278
 
279
  // Calculate limit timestamp.
280
  $max_stamp = $now - ( strtotime( $max_sdate ) - $now );
@@ -813,7 +807,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
813
  <fieldset>
814
  <label>
815
  <input type="text" id="ViewerQueryBox" style="width: 250px;">
816
- <input type="button" id="ViewerQueryAdd" class="button-primary" value="Add">
817
 
818
  <p class="description">
819
  <?php esc_html_e( 'Specify the username or the users which do not have an admin role but can also see the WordPress activity role. You can also specify roles.', 'wp-security-audit-log' ); ?>
@@ -830,7 +824,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
830
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
831
  <input type="hidden" name="Viewers[]" value="<?php echo esc_attr( $item ); ?>"/>
832
  <?php echo esc_html( $item ); ?>
833
- <a href="javascript:;" title="Remove">&times;</a>
834
  </span>
835
  <?php endforeach; ?>
836
  </div>
@@ -888,7 +882,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
888
  <fieldset <?php echo disabled( $incognito_setting_enforced_by_mainwp ); ?>>
889
  <label for="incognito_yes">
890
  <input type="radio" name="Incognito" value="yes" id="incognito_yes" <?php checked( $this->_plugin->settings()->IsIncognito() ); ?> />
891
- <?php esc_html_e( 'Yes, hide the plugin from the list of installed plugins', 'wp-security-audit-log' ); ?>
892
  </label>
893
  <br/>
894
  <label for="incognito_no">
@@ -968,22 +962,10 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
968
  echo wp_kses( $retention_help_text, $this->_plugin->allowed_html_tags );
969
  ?>
970
  </p>
971
- <?php if ( $this->_plugin->settings()->IsArchivingEnabled() ) : ?>
972
- <p class="description">
973
- <?php
974
- $archiving_args = array(
975
- 'page' => 'wsal-ext-settings',
976
- 'tab' => 'archiving',
977
- );
978
- $archiving_page = add_query_arg( $archiving_args, admin_url( 'admin.php' ) );
979
- /* translators: 1: Archive page link tag. 2: Link closing tag. */
980
- echo '<span class="dashicons dashicons-warning"></span> ' . sprintf( esc_html__( 'Retention settings moved to %1$s archiving settings %2$s because archiving is enabled', 'wp-security-audit-log' ), '<a href="' . esc_url( $archiving_page ) . '" target="_blank">', '</a>' );
981
- ?>
982
- </p>
983
- <?php else : ?>
984
  <?php $this->render_retention_settings_table(); ?>
985
- <?php endif; ?>
986
- <!-- Activity log retention -->
987
 
988
  <h3><?php esc_html_e( 'What timestamp you would like to see in the WordPress activity log?', 'wp-security-audit-log' ); ?></h3>
989
  <p class="description"><?php esc_html_e( 'Note that the WordPress\' timezone might be different from that configured on the server so when you switch from UTC to WordPress timezone or vice versa you might notice a big difference.', 'wp-security-audit-log' ); ?></p>
@@ -1215,14 +1197,14 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1215
  <td>
1216
  <fieldset>
1217
  <input type="text" id="ExUserQueryBox" style="width: 250px;">
1218
- <input type="button" id="ExUserQueryAdd" class="button-primary" value="Add">
1219
  <br style="clear: both;"/>
1220
  <div id="ExUserList">
1221
  <?php foreach ( $this->_plugin->settings()->GetExcludedMonitoringUsers() as $item ) : ?>
1222
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1223
  <input type="hidden" name="ExUsers[]" value="<?php echo esc_attr( $item ); ?>"/>
1224
  <?php echo esc_html( $item ); ?>
1225
- <a href="javascript:;" title="Remove">&times;</a>
1226
  </span>
1227
  <?php endforeach; ?>
1228
  </div>
@@ -1236,14 +1218,14 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1236
  <td>
1237
  <fieldset>
1238
  <input type="text" id="ExRoleQueryBox" style="width: 250px;">
1239
- <input type="button" id="ExRoleQueryAdd" class="button-primary" value="Add">
1240
  <br style="clear: both;"/>
1241
  <div id="ExRoleList">
1242
  <?php foreach ( $this->_plugin->settings()->GetExcludedMonitoringRoles() as $item ) : ?>
1243
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1244
  <input type="hidden" name="ExRoles[]" value="<?php echo esc_attr( $item ); ?>"/>
1245
  <?php echo esc_html( $item ); ?>
1246
- <a href="javascript:;" title="Remove">&times;</a>
1247
  </span>
1248
  <?php endforeach; ?>
1249
  </div>
@@ -1257,14 +1239,14 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1257
  <td>
1258
  <fieldset>
1259
  <input type="text" id="IpAddrQueryBox" style="width: 250px;">
1260
- <input type="button" id="IpAddrQueryAdd" class="button-primary" value="Add">
1261
  <br style="clear: both;"/>
1262
  <div id="IpAddrList">
1263
  <?php foreach ( $this->_plugin->settings()->GetExcludedMonitoringIP() as $item ) : ?>
1264
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1265
  <input type="hidden" name="IpAddrs[]" value="<?php echo esc_attr( $item ); ?>"/>
1266
  <?php echo esc_html( $item ); ?>
1267
- <a href="javascript:;" title="Remove">&times;</a>
1268
  </span>
1269
  <?php endforeach; ?>
1270
  </div>
@@ -1279,14 +1261,14 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1279
  <td>
1280
  <fieldset>
1281
  <input type="text" id="ExCPTsQueryBox" style="width: 250px;">
1282
- <input type="button" id="ExCPTsQueryAdd" class="button-primary" value="Add">
1283
  <br style="clear: both;"/>
1284
  <div id="ExCPTsList">
1285
  <?php foreach ( $this->_plugin->settings()->get_excluded_post_types() as $item ) : ?>
1286
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1287
  <input type="hidden" name="ExCPTss[]" value="<?php echo esc_attr( $item ); ?>"/>
1288
  <?php echo esc_html( $item ); ?>
1289
- <a href="javascript:;" title="Remove">&times;</a>
1290
  </span>
1291
  <?php endforeach; ?>
1292
  </div>
@@ -1296,33 +1278,55 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1296
  </tr>
1297
  <!-- Exclude Custom Post Types -->
1298
 
1299
- <tr>
1300
- <th><label for="CustomQueryBox"><?php esc_html_e( 'Exclude Custom Fields:', 'wp-security-audit-log' ); ?></label></th>
1301
- <td>
1302
- <fieldset>
1303
- <input type="text" id="CustomQueryBox" style="width: 250px;">
1304
- <input type="button" id="CustomQueryAdd" class="button-primary" value="Add">
1305
- <br style="clear: both;"/>
1306
- <div id="CustomList">
1307
- <?php foreach ( $this->_plugin->settings()->GetExcludedMonitoringCustom() as $item ) : ?>
1308
- <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1309
- <input type="hidden" name="Customs[]" value="<?php echo esc_attr( $item ); ?>"/>
1310
- <?php echo esc_html( $item ); ?>
1311
- <a href="javascript:;" title="Remove">&times;</a>
1312
- </span>
1313
- <?php endforeach; ?>
1314
- </div>
1315
- </fieldset>
1316
- <p class="description"><?php esc_html_e( 'You can use the * wildcard to exclude multiple matching custom fields. For example to exclude all custom fields starting with wp123 enter wp123*', 'wp-security-audit-log' ); ?></p>
1317
- </td>
1318
- </tr>
1319
- <!-- Exclude Custom Fields -->
1320
  </tbody>
1321
  </table>
1322
  <!-- / Exclude Objects Tab -->
1323
  <?php
1324
  }
1325
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1326
  /**
1327
  * Save: `Exclude Objects`
1328
  */
@@ -1332,7 +1336,8 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1332
 
1333
  $this->_plugin->settings()->SetExcludedMonitoringUsers( isset( $post_array['ExUsers'] ) ? $post_array['ExUsers'] : array() );
1334
  $this->_plugin->settings()->SetExcludedMonitoringRoles( isset( $post_array['ExRoles'] ) ? $post_array['ExRoles'] : array() );
1335
- $this->_plugin->settings()->SetExcludedMonitoringCustom( isset( $post_array['Customs'] ) ? $post_array['Customs'] : array() );
 
1336
  $this->_plugin->settings()->SetExcludedMonitoringIP( isset( $post_array['IpAddrs'] ) ? $post_array['IpAddrs'] : array() );
1337
  $this->_plugin->settings()->set_excluded_post_types( isset( $post_array['ExCPTss'] ) ? $post_array['ExCPTss'] : array() );
1338
  }
@@ -1565,6 +1570,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1565
  'invalidFile' => esc_html__( 'Filename cannot be added because it contains invalid characters.', 'wp-security-audit-log' ),
1566
  'invalidFileExt' => esc_html__( 'File extension cannot be added because it contains invalid characters.', 'wp-security-audit-log' ),
1567
  'invalidDir' => esc_html__( 'Directory cannot be added because it contains invalid characters.', 'wp-security-audit-log' ),
 
1568
  'saveSettingsChanges' => esc_html__( 'Please save any changes before switching tabs.', 'wp-security-audit-log' ),
1569
  );
1570
  wp_localize_script( 'settings', 'wsal_data', $wsal_data );
@@ -1662,7 +1668,9 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
1662
 
1663
  // Get custom post types.
1664
  $custom_post_types = array();
1665
- $post_types = get_post_types( array(), 'names' );
 
 
1666
  // if we are running multisite and have networkwide cpt tracker get the
1667
  // list from and merge to the post_types array.
1668
  if ( is_multisite() && class_exists( '\WSAL\Multisite\NetworkWide\CPTsTracker' ) ) {
5
  * Settings page of the plugin.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
269
  $now = current_time( 'timestamp' ); // Current time.
270
  $max_sdate = $this->_plugin->settings()->GetPruningDate(); // Pruning date.
271
 
 
 
 
 
 
 
272
 
273
  // Calculate limit timestamp.
274
  $max_stamp = $now - ( strtotime( $max_sdate ) - $now );
807
  <fieldset>
808
  <label>
809
  <input type="text" id="ViewerQueryBox" style="width: 250px;">
810
+ <input type="button" id="ViewerQueryAdd" class="button-primary" value="<?php esc_attr_e( 'Add', 'wp-security-audit-log' ); ?>">
811
 
812
  <p class="description">
813
  <?php esc_html_e( 'Specify the username or the users which do not have an admin role but can also see the WordPress activity role. You can also specify roles.', 'wp-security-audit-log' ); ?>
824
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
825
  <input type="hidden" name="Viewers[]" value="<?php echo esc_attr( $item ); ?>"/>
826
  <?php echo esc_html( $item ); ?>
827
+ <a href="javascript:;" title="<?php esc_attr_e( 'Remove', 'wp-security-audit-log' ); ?>">&times;</a>
828
  </span>
829
  <?php endforeach; ?>
830
  </div>
882
  <fieldset <?php echo disabled( $incognito_setting_enforced_by_mainwp ); ?>>
883
  <label for="incognito_yes">
884
  <input type="radio" name="Incognito" value="yes" id="incognito_yes" <?php checked( $this->_plugin->settings()->IsIncognito() ); ?> />
885
+ <?php esc_html_e( 'Yes, hide the plugin and any WP Activity Log plugin extensions from the list of installed plugins', 'wp-security-audit-log' ); ?>
886
  </label>
887
  <br/>
888
  <label for="incognito_no">
962
  echo wp_kses( $retention_help_text, $this->_plugin->allowed_html_tags );
963
  ?>
964
  </p>
965
+
966
+ <?php?>
 
 
 
 
 
 
 
 
 
 
 
967
  <?php $this->render_retention_settings_table(); ?>
968
+ <?php?>
 
969
 
970
  <h3><?php esc_html_e( 'What timestamp you would like to see in the WordPress activity log?', 'wp-security-audit-log' ); ?></h3>
971
  <p class="description"><?php esc_html_e( 'Note that the WordPress\' timezone might be different from that configured on the server so when you switch from UTC to WordPress timezone or vice versa you might notice a big difference.', 'wp-security-audit-log' ); ?></p>
1197
  <td>
1198
  <fieldset>
1199
  <input type="text" id="ExUserQueryBox" style="width: 250px;">
1200
+ <input type="button" id="ExUserQueryAdd" class="button-primary" value="<?php esc_attr_e( 'Add', 'wp-security-audit-log' ); ?>">
1201
  <br style="clear: both;"/>
1202
  <div id="ExUserList">
1203
  <?php foreach ( $this->_plugin->settings()->GetExcludedMonitoringUsers() as $item ) : ?>
1204
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1205
  <input type="hidden" name="ExUsers[]" value="<?php echo esc_attr( $item ); ?>"/>
1206
  <?php echo esc_html( $item ); ?>
1207
+ <a href="javascript:;" title="<?php esc_attr_e( 'Remove', 'wp-security-audit-log' ); ?>">&times;</a>
1208
  </span>
1209
  <?php endforeach; ?>
1210
  </div>
1218
  <td>
1219
  <fieldset>
1220
  <input type="text" id="ExRoleQueryBox" style="width: 250px;">
1221
+ <input type="button" id="ExRoleQueryAdd" class="button-primary" value="<?php esc_attr_e( 'Add', 'wp-security-audit-log' ); ?>">
1222
  <br style="clear: both;"/>
1223
  <div id="ExRoleList">
1224
  <?php foreach ( $this->_plugin->settings()->GetExcludedMonitoringRoles() as $item ) : ?>
1225
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1226
  <input type="hidden" name="ExRoles[]" value="<?php echo esc_attr( $item ); ?>"/>
1227
  <?php echo esc_html( $item ); ?>
1228
+ <a href="javascript:;" title="<?php esc_attr_e( 'Remove', 'wp-security-audit-log' ); ?>">&times;</a>
1229
  </span>
1230
  <?php endforeach; ?>
1231
  </div>
1239
  <td>
1240
  <fieldset>
1241
  <input type="text" id="IpAddrQueryBox" style="width: 250px;">
1242
+ <input type="button" id="IpAddrQueryAdd" class="button-primary" value="<?php esc_attr_e( 'Add', 'wp-security-audit-log' ); ?>">
1243
  <br style="clear: both;"/>
1244
  <div id="IpAddrList">
1245
  <?php foreach ( $this->_plugin->settings()->GetExcludedMonitoringIP() as $item ) : ?>
1246
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1247
  <input type="hidden" name="IpAddrs[]" value="<?php echo esc_attr( $item ); ?>"/>
1248
  <?php echo esc_html( $item ); ?>
1249
+ <a href="javascript:;" title="<?php esc_attr_e( 'Remove', 'wp-security-audit-log' ); ?>">&times;</a>
1250
  </span>
1251
  <?php endforeach; ?>
1252
  </div>
1261
  <td>
1262
  <fieldset>
1263
  <input type="text" id="ExCPTsQueryBox" style="width: 250px;">
1264
+ <input type="button" id="ExCPTsQueryAdd" class="button-primary" value="<?php esc_attr_e( 'Add', 'wp-security-audit-log' ); ?>">
1265
  <br style="clear: both;"/>
1266
  <div id="ExCPTsList">
1267
  <?php foreach ( $this->_plugin->settings()->get_excluded_post_types() as $item ) : ?>
1268
  <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1269
  <input type="hidden" name="ExCPTss[]" value="<?php echo esc_attr( $item ); ?>"/>
1270
  <?php echo esc_html( $item ); ?>
1271
+ <a href="javascript:;" title="<?php esc_attr_e( 'Remove', 'wp-security-audit-log' ); ?>">&times;</a>
1272
  </span>
1273
  <?php endforeach; ?>
1274
  </div>
1278
  </tr>
1279
  <!-- Exclude Custom Post Types -->
1280
 
1281
+ <?php
1282
+ $this->renderMetaExclusionSection(
1283
+ esc_html__( 'Exclude custom post fields:', 'wp-security-audit-log' ),
1284
+ $this->_plugin->settings()->GetExcludedPostMetaFields(),
1285
+ 'PostMeta'
1286
+ );
1287
+ ?><!-- Exclude Custom Post Fields -->
1288
+
1289
+ <?php
1290
+ $this->renderMetaExclusionSection(
1291
+ esc_html__( 'Exclude custom user fields:', 'wp-security-audit-log' ),
1292
+ $this->_plugin->settings()->GetExcludedUserMetaFields(),
1293
+ 'UserMeta'
1294
+ );
1295
+ ?><!-- Exclude Custom User Fields -->
1296
+
 
 
 
 
 
1297
  </tbody>
1298
  </table>
1299
  <!-- / Exclude Objects Tab -->
1300
  <?php
1301
  }
1302
 
1303
+ private function renderMetaExclusionSection( $title, $values, $type ) {
1304
+ ?>
1305
+ <tr>
1306
+ <th><label for="Custom<?php echo $type; ?>QueryBox"><?php echo $title; ?></label></th>
1307
+ <td>
1308
+ <fieldset data-type="<?php echo $type; ?>">
1309
+ <input type="text" id="<?php echo $type; ?>QueryBox" class="js-query-box" style="width: 250px;">
1310
+ <input type="button" id="<?php echo $type; ?>QueryAdd" class="js-query-add button-primary"
1311
+ value="<?php esc_attr_e( 'Add', 'wp-security-audit-log' ); ?>">
1312
+ <br style="clear: both;"/>
1313
+ <div id="<?php echo $type; ?>List" class="js-list">
1314
+ <?php foreach ( $values as $item ) : ?>
1315
+ <span class="sectoken-<?php echo esc_attr( $this->GetTokenType( $item ) ); ?>">
1316
+ <input type="hidden" name="<?php echo $type; ?>s[]"
1317
+ value="<?php echo esc_attr( $item ); ?>"/>
1318
+ <?php echo esc_html( $item ); ?>
1319
+ <a href="javascript:;" title="<?php esc_attr_e( 'Remove', 'wp-security-audit-log' ); ?>">&times;</a>
1320
+ </span>
1321
+ <?php endforeach; ?>
1322
+ </div>
1323
+ </fieldset>
1324
+ <p class="description"><?php esc_html_e( 'You can use the * wildcard to exclude multiple matching custom fields. For example to exclude all custom fields starting with wp123 enter wp123*', 'wp-security-audit-log' ); ?></p>
1325
+ </td>
1326
+ </tr>
1327
+ <?php
1328
+ }
1329
+
1330
  /**
1331
  * Save: `Exclude Objects`
1332
  */
1336
 
1337
  $this->_plugin->settings()->SetExcludedMonitoringUsers( isset( $post_array['ExUsers'] ) ? $post_array['ExUsers'] : array() );
1338
  $this->_plugin->settings()->SetExcludedMonitoringRoles( isset( $post_array['ExRoles'] ) ? $post_array['ExRoles'] : array() );
1339
+ $this->_plugin->settings()->SetExcludedPostMetaFields( isset( $post_array['PostMetas'] ) ? $post_array['PostMetas'] : array() );
1340
+ $this->_plugin->settings()->SetExcludedUserMetaFields( isset( $post_array['UserMetas'] ) ? $post_array['UserMetas'] : array() );
1341
  $this->_plugin->settings()->SetExcludedMonitoringIP( isset( $post_array['IpAddrs'] ) ? $post_array['IpAddrs'] : array() );
1342
  $this->_plugin->settings()->set_excluded_post_types( isset( $post_array['ExCPTss'] ) ? $post_array['ExCPTss'] : array() );
1343
  }
1570
  'invalidFile' => esc_html__( 'Filename cannot be added because it contains invalid characters.', 'wp-security-audit-log' ),
1571
  'invalidFileExt' => esc_html__( 'File extension cannot be added because it contains invalid characters.', 'wp-security-audit-log' ),
1572
  'invalidDir' => esc_html__( 'Directory cannot be added because it contains invalid characters.', 'wp-security-audit-log' ),
1573
+ 'remove' => esc_html__( 'Remove', 'wp-security-audit-log' ),
1574
  'saveSettingsChanges' => esc_html__( 'Please save any changes before switching tabs.', 'wp-security-audit-log' ),
1575
  );
1576
  wp_localize_script( 'settings', 'wsal_data', $wsal_data );
1668
 
1669
  // Get custom post types.
1670
  $custom_post_types = array();
1671
+ $post_types = get_post_types( array(
1672
+ 'public' => false
1673
+ ), 'names' );
1674
  // if we are running multisite and have networkwide cpt tracker get the
1675
  // list from and merge to the post_types array.
1676
  if ( is_multisite() && class_exists( '\WSAL\Multisite\NetworkWide\CPTsTracker' ) ) {
classes/Views/SetupWizard.php CHANGED
@@ -5,7 +5,7 @@
5
  * WSAL setup class file.
6
  *
7
  * @since 3.2.3
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -555,7 +555,7 @@ final class WSAL_Views_SetupWizard {
555
  ?>
556
  <form method="post" class="wsal-setup-form">
557
  <?php wp_nonce_field( 'wsal-step-frontend-register' ); ?>
558
- <h4><?php esc_html_e( 'Can visitors register for a user on your website?', 'wp-security-audit-log' ); ?></h4>
559
  <fieldset>
560
  <label for="wsal-frontend-events-register-yes">
561
  <input id="wsal-frontend-events-register-yes" name="wsal-frontend-register" type="radio" value="1">
5
  * WSAL setup class file.
6
  *
7
  * @since 3.2.3
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
555
  ?>
556
  <form method="post" class="wsal-setup-form">
557
  <?php wp_nonce_field( 'wsal-step-frontend-register' ); ?>
558
+ <h4><?php esc_html_e( 'Can visitors register as a user on your website?', 'wp-security-audit-log' ); ?></h4>
559
  <fieldset>
560
  <label for="wsal-frontend-events-register-yes">
561
  <input id="wsal-frontend-events-register-yes" name="wsal-frontend-register" type="radio" value="1">
classes/Views/ToggleAlerts.php CHANGED
@@ -5,7 +5,7 @@
5
  * Settings page of the plugin.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  /**
17
  * Enable/Disable Alerts Page.
18
  *
19
- * @package Wsal
20
  */
21
  class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
22
 
5
  * Settings page of the plugin.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
16
  /**
17
  * Enable/Disable Alerts Page.
18
  *
19
+ * @package wsal
20
  */
21
  class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
22
 
classes/WidgetManager.php CHANGED
@@ -5,7 +5,7 @@
5
  * Manager class for WSAL's WP Dashboard widget.
6
  *
7
  * @since 1.0.0
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
@@ -18,7 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  *
19
  * Plugin Widget used in the WordPress Dashboard.
20
  *
21
- * @package Wsal
22
  */
23
  class WSAL_WidgetManager {
24
 
@@ -83,7 +83,7 @@ class WSAL_WidgetManager {
83
  $url = 'admin.php?page=' . $this->_plugin->views->views[0]->GetSafeViewName();
84
  foreach ( $results as $entry ) :
85
  $event_meta = $entry->GetMetaArray();
86
- $username = WSAL_Alert::GetUsername( $event_meta );
87
  ?>
88
  <tr>
89
  <td><?php echo ( $username ) ? esc_html( $username ) : '<i>unknown</i>'; ?></td>
5
  * Manager class for WSAL's WP Dashboard widget.
6
  *
7
  * @since 1.0.0
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
18
  *
19
  * Plugin Widget used in the WordPress Dashboard.
20
  *
21
+ * @package wsal
22
  */
23
  class WSAL_WidgetManager {
24
 
83
  $url = 'admin.php?page=' . $this->_plugin->views->views[0]->GetSafeViewName();
84
  foreach ( $results as $entry ) :
85
  $event_meta = $entry->GetMetaArray();
86
+ $username = WSAL_Utilities_UsersUtils::GetUsername( $event_meta );
87
  ?>
88
  <tr>
89
  <td><?php echo ( $username ) ? esc_html( $username ) : '<i>unknown</i>'; ?></td>
css/admin-notices.css ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Audit Log Admin Notice
3
+ */
4
+ .wsal_notice {
5
+ position: relative;
6
+ }
7
+
8
+ .wsal_notice__wrapper {
9
+ display: table;
10
+ width: 100%;
11
+ margin: 12px 0;
12
+ }
13
+
14
+ .wsal_notice__wrapper .wsal_notice__content {
15
+ display: table-cell;
16
+ vertical-align: middle;
17
+ padding-right: 12px;
18
+ }
19
+
20
+ .wsal_notice__wrapper img {
21
+ height: 70px;
22
+ margin-right: 5px;
23
+ }
24
+
25
+ div.wsal_notice__wrapper p {
26
+ display: inline-block;
27
+ width: 89%;
28
+ vertical-align: top;
29
+ }
30
+
31
+ .wsal_notice__btns {
32
+ display: table-cell;
33
+ vertical-align: top;
34
+ width: 235px;
35
+ text-align: right;
36
+ }
37
+
38
+ .wsal_notice__btns a.wsal_notice__btn {
39
+ background: #00ad50;
40
+ border-color: #00ad50 #009344 #009344 #009344;
41
+ box-shadow: 0 1px 0 #00ad50;
42
+ text-shadow: none;
43
+ }
44
+
45
+ .wsal_notice__btns a.wsal_notice__btn:hover {
46
+ background: #00b353;
47
+ border-color: #00ad50 #009344 #009344 #009344;
48
+ }
49
+
50
+ .wsal_notice__btns a.button-primary {
51
+ margin-bottom: 7px;
52
+ }
53
+
54
+ .wsal_notice__btns > div {
55
+ width: 110px;
56
+ margin-top: 5px;
57
+ }
58
+
59
+ .wsal_notice__btns a.wsal_notice__btn_dismiss {
60
+ display: inline-block;
61
+ color: #AAA;
62
+ font-size: 11px;
63
+ text-decoration: none;
64
+ padding: 0;
65
+ position: absolute;
66
+ right: 14px;
67
+ bottom: 3px;
68
+ }
69
+
70
+ /* Addon Notices */
71
+ .notice-addon-available {
72
+ display: flex;
73
+ }
74
+
75
+ .addon-logo-wrapper {
76
+ display: flex;
77
+ margin-right: 20px;
78
+ }
79
+
80
+ .notice-addon-available img {
81
+ max-height: 48px;
82
+ align-self: center;
83
+ }
84
+
85
+ .notice-addon-available .button {
86
+ margin-top: 8px;
87
+ }
88
+
89
+ .notice-addon-available .notice-dismiss {
90
+ margin-top: 5px;
91
+ }
css/auditlog.css CHANGED
@@ -70,6 +70,39 @@ th.column-mesg {
70
  padding: 0;
71
  }
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  .wsal-table-grid .mesg.column-mesg,
74
  .wsal-table-grid th.column-mesg {
75
  padding-left: 10px;
@@ -257,75 +290,6 @@ td.column-user {
257
  margin: 0;
258
  }
259
 
260
- /**
261
- * Audit Log Admin Notice
262
- */
263
- .wsal_notice {
264
- position: relative;
265
- }
266
-
267
- .wsal_notice__wrapper {
268
- display: table;
269
- width: 100%;
270
- margin: 12px 0;
271
- }
272
-
273
- .wsal_notice__wrapper .wsal_notice__content {
274
- display: table-cell;
275
- vertical-align: middle;
276
- padding-right: 12px;
277
- }
278
-
279
- .wsal_notice__wrapper img {
280
- height: 70px;
281
- margin-right: 5px;
282
- }
283
-
284
- div.wsal_notice__wrapper p {
285
- display: inline-block;
286
- width: 89%;
287
- vertical-align: top;
288
- }
289
-
290
- .wsal_notice__btns {
291
- display: table-cell;
292
- vertical-align: top;
293
- width: 235px;
294
- text-align: right;
295
- }
296
-
297
- .wsal_notice__btns a.wsal_notice__btn {
298
- background: #00ad50;
299
- border-color: #00ad50 #009344 #009344 #009344;
300
- box-shadow: 0 1px 0 #00ad50;
301
- text-shadow: none;
302
- }
303
-
304
- .wsal_notice__btns a.wsal_notice__btn:hover {
305
- background: #00b353;
306
- border-color: #00ad50 #009344 #009344 #009344;
307
- }
308
-
309
- .wsal_notice__btns a.button-primary {
310
- margin-bottom: 7px;
311
- }
312
-
313
- .wsal_notice__btns > div {
314
- width: 110px;
315
- margin-top: 5px;
316
- }
317
-
318
- .wsal_notice__btns a.wsal_notice__btn_dismiss {
319
- display: inline-block;
320
- color: #AAA;
321
- font-size: 11px;
322
- text-decoration: none;
323
- padding: 0;
324
- position: absolute;
325
- right: 14px;
326
- bottom: 3px;
327
- }
328
-
329
  .wsal-premium {
330
  position: absolute;
331
  right: 0;
@@ -658,26 +622,3 @@ input#wsal_as_widget_event::-webkit-outer-spin-button {
658
  -webkit-appearance: none;
659
  margin: 0;
660
  }
661
-
662
- /* Addon Notices */
663
- .notice-addon-available {
664
- display: flex;
665
- }
666
-
667
- .addon-logo-wrapper {
668
- display: flex;
669
- margin-right: 20px;
670
- }
671
-
672
- .notice-addon-available img {
673
- max-height: 48px;
674
- align-self: center;
675
- }
676
-
677
- .notice-addon-available .button {
678
- margin-top: 8px;
679
- }
680
-
681
- .notice-addon-available .notice-dismiss {
682
- margin-top: 5px;
683
- }
70
  padding: 0;
71
  }
72
 
73
+ .wp-list-table .column-mesg {
74
+ position: relative;
75
+ }
76
+
77
+ .wp-list-table .column-mesg .extension-ad {
78
+ position: absolute;
79
+ bottom: 0;
80
+ right: 0;
81
+ width: 0;
82
+ height: 0;
83
+ border-style: solid;
84
+ border-width: 0 0 100px 100px;
85
+ }
86
+
87
+ .wp-list-table .column-mesg .icon {
88
+ position: absolute;
89
+ bottom: 6px;
90
+ right: 6px;
91
+ background: white;
92
+ box-shadow: rgb(0 0 0 / 24%) 0px 3px 8px;
93
+ border-radius: 9px;
94
+ padding: 12px;
95
+ line-height: 1em !important;
96
+ margin: 0;
97
+ border-radius: 9px;
98
+ padding: 12px;
99
+ }
100
+
101
+ .wp-list-table .column-mesg .icon img {
102
+ width: 48px;
103
+ height: 48px;
104
+ }
105
+
106
  .wsal-table-grid .mesg.column-mesg,
107
  .wsal-table-grid th.column-mesg {
108
  padding-left: 10px;
290
  margin: 0;
291
  }
292
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  .wsal-premium {
294
  position: absolute;
295
  right: 0;
622
  -webkit-appearance: none;
623
  margin: 0;
624
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
defaults.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * Alerts are defined in this file.
6
  *
7
- * @package Wsal
8
  */
9
 
10
  // Exit if accessed directly.
@@ -880,7 +880,7 @@ function wsaldefaults_wsal_init() {
880
  2054,
881
  WSAL_LOW,
882
  __( 'User updated a custom field value for a post', 'wp-security-audit-log' ),
883
- __( 'Modified the value of the custom field %MetaName% in the post %PostTitle%.', 'wp-security-audit-log' ),
884
  [
885
  __( 'Post ID', 'wp-security-audit-log' ) => '%PostID%',
886
  __( 'Post type', 'wp-security-audit-log' ) => '%PostType%',
@@ -1818,7 +1818,7 @@ function wsaldefaults_wsal_init() {
1818
  __( 'Previous value', 'wp-security-audit-log' ) => '%old_value%',
1819
  __( 'New value', 'wp-security-audit-log' ) => '%new_value%'
1820
  ],
1821
- wsaldefaults_build_links( [ 'EditUserLink' ] ),
1822
  'user',
1823
  'modified'
1824
  ),
@@ -1833,7 +1833,7 @@ function wsaldefaults_wsal_init() {
1833
  __( 'Last name', 'wp-security-audit-log' ) => '%LastName%',
1834
  __( 'Custom field value', 'wp-security-audit-log' ) => '%new_value%'
1835
  ],
1836
- wsaldefaults_build_links( [ 'EditUserLink' ] ),
1837
  'user',
1838
  'modified'
1839
  ),
@@ -2109,42 +2109,6 @@ function wsaldefaults_wsal_init() {
2109
  'plugin',
2110
  'updated'
2111
  ),
2112
- array(
2113
- 5010,
2114
- WSAL_LOW,
2115
- __( 'Plugin created table', 'wp-security-audit-log' ),
2116
- __( 'The plugin %Plugin->Name% created this table in the database.', 'wp-security-audit-log' ),
2117
- [
2118
- __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
2119
- ],
2120
- [],
2121
- 'database',
2122
- 'created'
2123
- ),
2124
- array(
2125
- 5011,
2126
- WSAL_LOW,
2127
- __( 'Plugin modified table structure', 'wp-security-audit-log' ),
2128
- __( 'The plugin %Plugin->Name% modified the structure of a database table.', 'wp-security-audit-log' ),
2129
- [
2130
- __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
2131
- ],
2132
- [],
2133
- 'database',
2134
- 'modified'
2135
- ),
2136
- array(
2137
- 5012,
2138
- WSAL_MEDIUM,
2139
- __( 'Plugin deleted table', 'wp-security-audit-log' ),
2140
- __( 'The plugin %Plugin->Name% deleted this table from the database.', 'wp-security-audit-log' ),
2141
- [
2142
- __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
2143
- ],
2144
- [],
2145
- 'database',
2146
- 'deleted'
2147
- ),
2148
  array(
2149
  5019,
2150
  WSAL_MEDIUM,
@@ -2227,42 +2191,6 @@ function wsaldefaults_wsal_init() {
2227
  'theme',
2228
  'deleted'
2229
  ),
2230
- array(
2231
- 5013,
2232
- WSAL_LOW,
2233
- __( 'Theme created tables', 'wp-security-audit-log' ),
2234
- __( 'The theme %Theme->Name% created this tables in the database.', 'wp-security-audit-log' ),
2235
- [
2236
- __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
2237
- ],
2238
- [],
2239
- 'database',
2240
- 'created'
2241
- ),
2242
- array(
2243
- 5014,
2244
- WSAL_LOW,
2245
- __( 'Theme modified tables structure', 'wp-security-audit-log' ),
2246
- __( 'The theme %Theme->Name% modified the structure of this database table', 'wp-security-audit-log' ),
2247
- [
2248
- __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
2249
- ],
2250
- [],
2251
- 'database',
2252
- 'modified'
2253
- ),
2254
- array(
2255
- 5015,
2256
- WSAL_MEDIUM,
2257
- __( 'Theme deleted tables', 'wp-security-audit-log' ),
2258
- __( 'The theme %Theme->Name% deleted this table from the database.', 'wp-security-audit-log' ),
2259
- [
2260
- __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
2261
- ],
2262
- [],
2263
- 'database',
2264
- 'deleted'
2265
- ),
2266
  array(
2267
  5031,
2268
  WSAL_LOW,
@@ -2316,81 +2244,6 @@ function wsaldefaults_wsal_init() {
2316
  'deactivated'
2317
  ),
2318
  ),
2319
-
2320
- __( 'Database Events', 'wp-security-audit-log' ) => array(
2321
- array(
2322
- 5016,
2323
- WSAL_HIGH,
2324
- __( 'Unknown component created tables', 'wp-security-audit-log' ),
2325
- __( 'An unknown component created these tables in the database.', 'wp-security-audit-log' ),
2326
- [
2327
- __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
2328
- ],
2329
- [],
2330
- 'database',
2331
- 'created'
2332
- ),
2333
- array(
2334
- 5017,
2335
- WSAL_HIGH,
2336
- __( 'Unknown component modified tables structure', 'wp-security-audit-log' ),
2337
- __( 'An unknown component modified the structure of these database tables.', 'wp-security-audit-log' ),
2338
- [
2339
- __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
2340
- ],
2341
- [],
2342
- 'database',
2343
- 'modified'
2344
- ),
2345
- array(
2346
- 5018,
2347
- WSAL_HIGH,
2348
- __( 'Unknown component deleted tables', 'wp-security-audit-log' ),
2349
- __( 'An unknown component deleted these tables from the database.', 'wp-security-audit-log' ),
2350
- [
2351
- __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
2352
- ],
2353
- [],
2354
- 'database',
2355
- 'deleted'
2356
- ),
2357
- array(
2358
- 5022,
2359
- WSAL_HIGH,
2360
- __( 'WordPress created tables', 'wp-security-audit-log' ),
2361
- __( 'WordPress has created these tables in the database.', 'wp-security-audit-log' ),
2362
- [
2363
- __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
2364
- ],
2365
- [],
2366
- 'database',
2367
- 'created'
2368
- ),
2369
- array(
2370
- 5023,
2371
- WSAL_HIGH,
2372
- __( 'WordPress modified tables structure', 'wp-security-audit-log' ),
2373
- __( 'WordPress modified the structure of these database tables.', 'wp-security-audit-log' ),
2374
- [
2375
- __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
2376
- ],
2377
- [],
2378
- 'database',
2379
- 'modified'
2380
- ),
2381
- array(
2382
- 5024,
2383
- WSAL_HIGH,
2384
- __( 'WordPress deleted tables', 'wp-security-audit-log' ),
2385
- __( 'WordPress deleted these tables from the database.', 'wp-security-audit-log' ),
2386
- [
2387
- __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
2388
- ],
2389
- [],
2390
- 'database',
2391
- 'deleted'
2392
- ),
2393
- ),
2394
  ),
2395
 
2396
  __( 'WordPress & System', 'wp-security-audit-log' ) => array(
@@ -2490,6 +2343,7 @@ function wsaldefaults_wsal_init() {
2490
  'wp-activity-log',
2491
  'deleted'
2492
  ),
 
2493
  array(
2494
  6043,
2495
  WSAL_HIGH,
@@ -2500,120 +2354,464 @@ function wsaldefaults_wsal_init() {
2500
  'wp-activity-log',
2501
  'modified'
2502
  ),
2503
- ),
2504
 
2505
- __( 'WordPress Site Settings', 'wp-security-audit-log' ) => array(
2506
  array(
2507
- 6001,
2508
- WSAL_CRITICAL,
2509
- __( 'Option Anyone Can Register in WordPress settings changed', 'wp-security-audit-log' ),
2510
- __( 'The <strong>Membership</strong> setting <strong>Anyone can register</strong>.', 'wp-security-audit-log' ),
2511
  [],
2512
  [],
2513
- 'system-setting',
2514
  'enabled'
2515
  ),
2516
  array(
2517
- 6002,
2518
- WSAL_CRITICAL,
2519
- __( 'New User Default Role changed', 'wp-security-audit-log' ),
2520
- __( 'Changed the <strong>New user default role</strong> WordPress setting.', 'wp-security-audit-log' ),
2521
- [
2522
- __( 'Previous role', 'wp-security-audit-log' ) => '%OldRole%',
2523
- __( 'New role', 'wp-security-audit-log' ) => '%NewRole%'
2524
- ],
2525
  [],
2526
- 'system-setting',
 
2527
  'modified'
2528
  ),
2529
  array(
2530
- 6003,
2531
- WSAL_CRITICAL,
2532
- __( 'WordPress Administrator Notification email changed', 'wp-security-audit-log' ),
2533
- __( 'Change the <strong>Administrator email address</strong> in the WordPress settings.', 'wp-security-audit-log' ),
2534
- [
2535
- __( 'Previous address', 'wp-security-audit-log' ) => '%OldEmail%',
2536
- __( 'New address', 'wp-security-audit-log' ) => '%NewEmail%'
2537
- ],
2538
  [],
2539
- 'system-setting',
2540
- 'modified'
 
2541
  ),
2542
  array(
2543
- 6005,
2544
  WSAL_HIGH,
2545
- __( 'User changes the WordPress Permalinks', 'wp-security-audit-log' ),
2546
- __( 'Changed the <strong>WordPress permalinks</strong>.', 'wp-security-audit-log' ),
2547
  [
2548
- __( 'Previous permalinks', 'wp-security-audit-log' ) => '%OldPattern%',
2549
- __( 'New permalinks', 'wp-security-audit-log' ) => '%NewPattern%'
2550
  ],
2551
  [],
2552
- 'system-setting',
2553
  'modified'
2554
  ),
2555
  array(
2556
- 6008,
2557
- WSAL_INFORMATIONAL,
2558
- __( 'Enabled/Disabled the option Discourage search engines from indexing this site', 'wp-security-audit-log' ),
2559
- __( 'Changed the status of the WordPress setting <strong>Search engine visibility</strong> (Discourage search engines from indexing this site)', 'wp-security-audit-log' ),
2560
- [],
 
 
2561
  [],
2562
- 'system-setting',
2563
- 'enabled'
2564
  ),
2565
  array(
2566
- 6009,
2567
  WSAL_MEDIUM,
2568
- __( 'Enabled/Disabled comments on all the website', 'wp-security-audit-log' ),
2569
- __( 'Changed the status of the WordPress setting <strong>Allow people to submit comments on new posts</strong>.', 'wp-security-audit-log' ),
2570
  [],
2571
  [],
2572
- 'system-setting',
2573
  'enabled'
2574
  ),
2575
-
2576
  array(
2577
- 6010,
2578
- WSAL_MEDIUM,
2579
- __( 'Enabled/Disabled the option Comment author must fill out name and email', 'wp-security-audit-log' ),
2580
- __( 'Changed the status of the WordPress setting <strong>.Comment author must fill out name and email</strong>.', 'wp-security-audit-log' ),
2581
- [],
 
 
2582
  [],
2583
- 'system-setting',
2584
- 'enabled'
2585
  ),
2586
  array(
2587
- 6011,
2588
- WSAL_MEDIUM,
2589
- __( 'Enabled/Disabled the option Users must be logged in and registered to comment', 'wp-security-audit-log' ),
2590
- __( 'Changed the status of the WordPress setting <strong>Users must be registered and logged in to comment</strong>.', 'wp-security-audit-log' ),
2591
- [],
 
 
2592
  [],
2593
- 'system-setting',
2594
- 'enabled'
2595
  ),
2596
  array(
2597
- 6012,
2598
- WSAL_INFORMATIONAL,
2599
- __( 'Enabled/Disabled the option to automatically close comments', 'wp-security-audit-log' ),
2600
- __( 'Changed the status of the WordPress setting <strong>Automatically close comments after %Value% days</strong>.', 'wp-security-audit-log' ),
2601
- [],
 
 
2602
  [],
2603
- 'system-setting',
2604
- 'enabled'
2605
  ),
2606
  array(
2607
- 6013,
2608
- WSAL_INFORMATIONAL,
2609
- __( 'Changed the value of the option Automatically close comments', 'wp-security-audit-log' ),
2610
- __( 'Changed the value of the WordPress setting <strong>Automatically close comments after a number of days</strong> to %NewValue%.', 'wp-security-audit-log' ),
2611
  [
2612
- __( 'Previous value', 'wp-security-audit-log' ) => '%OldValue%'
2613
  ],
2614
  [],
2615
- 'system-setting',
2616
- 'modified'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2617
  ),
2618
  array(
2619
  6014,
@@ -2791,6 +2989,153 @@ function wsaldefaults_wsal_init() {
2791
  'modified'
2792
  ),
2793
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2794
  ),
2795
 
2796
  __( 'Multisite Network Sites', 'wp-security-audit-log' ) => array(
4
  *
5
  * Alerts are defined in this file.
6
  *
7
+ * @package wsal
8
  */
9
 
10
  // Exit if accessed directly.
880
  2054,
881
  WSAL_LOW,
882
  __( 'User updated a custom field value for a post', 'wp-security-audit-log' ),
883
+ __( 'Modified the value of the custom field %MetaKey% in the post %PostTitle%.', 'wp-security-audit-log' ),
884
  [
885
  __( 'Post ID', 'wp-security-audit-log' ) => '%PostID%',
886
  __( 'Post type', 'wp-security-audit-log' ) => '%PostType%',
1818
  __( 'Previous value', 'wp-security-audit-log' ) => '%old_value%',
1819
  __( 'New value', 'wp-security-audit-log' ) => '%new_value%'
1820
  ],
1821
+ wsaldefaults_build_links( [ 'EditUserLink', 'MetaLink' ] ),
1822
  'user',
1823
  'modified'
1824
  ),
1833
  __( 'Last name', 'wp-security-audit-log' ) => '%LastName%',
1834
  __( 'Custom field value', 'wp-security-audit-log' ) => '%new_value%'
1835
  ],
1836
+ wsaldefaults_build_links( [ 'EditUserLink', 'MetaLink' ] ),
1837
  'user',
1838
  'modified'
1839
  ),
2109
  'plugin',
2110
  'updated'
2111
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2112
  array(
2113
  5019,
2114
  WSAL_MEDIUM,
2191
  'theme',
2192
  'deleted'
2193
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2194
  array(
2195
  5031,
2196
  WSAL_LOW,
2244
  'deactivated'
2245
  ),
2246
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2247
  ),
2248
 
2249
  __( 'WordPress & System', 'wp-security-audit-log' ) => array(
2343
  'wp-activity-log',
2344
  'deleted'
2345
  ),
2346
+
2347
  array(
2348
  6043,
2349
  WSAL_HIGH,
2354
  'wp-activity-log',
2355
  'modified'
2356
  ),
 
2357
 
 
2358
  array(
2359
+ 6046,
2360
+ WSAL_LOW,
2361
+ __( 'Changed the status of the Login Page Notification', 'wp-security-audit-log' ),
2362
+ __( 'Changed the status of the <strong>Login Page Notification.</strong>', 'wp-security-audit-log' ),
2363
  [],
2364
  [],
2365
+ 'wp-activity-log',
2366
  'enabled'
2367
  ),
2368
  array(
2369
+ 6047,
2370
+ WSAL_LOW,
2371
+ __( 'Changed the text of the Login Page Notification', 'wp-security-audit-log' ),
2372
+ __( 'Changed the text of the <strong>Login Page Notification.</strong>', 'wp-security-audit-log' ),
 
 
 
 
2373
  [],
2374
+ [],
2375
+ 'wp-activity-log',
2376
  'modified'
2377
  ),
2378
  array(
2379
+ 6048,
2380
+ WSAL_LOW,
2381
+ __( 'Changed the status of the Reverse proxy / firewall option', 'wp-security-audit-log' ),
2382
+ __( 'Changed the status of the <strong>Reverse proxy / firewall option.</strong>', 'wp-security-audit-log' ),
 
 
 
 
2383
  [],
2384
+ [],
2385
+ 'wp-activity-log',
2386
+ 'enabled'
2387
  ),
2388
  array(
2389
+ 6049,
2390
  WSAL_HIGH,
2391
+ __( 'Changed the Restrict plugin access setting', 'wp-security-audit-log' ),
2392
+ __( 'Changed the <strong>Restrict plugin access</strong> setting to %new_setting%.', 'wp-security-audit-log' ),
2393
  [
2394
+ __( 'Previous setting', 'wp-security-audit-log' ) => '%previous_setting%',
 
2395
  ],
2396
  [],
2397
+ 'wp-activity-log',
2398
  'modified'
2399
  ),
2400
  array(
2401
+ 6050,
2402
+ WSAL_HIGH,
2403
+ __( 'The user %user% to / from the list of users who can view the activity log', 'wp-security-audit-log' ),
2404
+ __( 'The user %user% to / from the list of users who can view the activity log.', 'wp-security-audit-log' ),
2405
+ [
2406
+ __( 'Previous list of users who had access to view the activity log', 'wp-security-audit-log' ) => '%previous_users%',
2407
+ ],
2408
  [],
2409
+ 'wp-activity-log',
2410
+ 'added'
2411
  ),
2412
  array(
2413
+ 6051,
2414
  WSAL_MEDIUM,
2415
+ __( 'Changed the status of the Hide plugin in plugins page setting', 'wp-security-audit-log' ),
2416
+ __( 'Changed the status of the <strong>Hide plugin in plugins page</strong> setting.', 'wp-security-audit-log' ),
2417
  [],
2418
  [],
2419
+ 'wp-activity-log',
2420
  'enabled'
2421
  ),
 
2422
  array(
2423
+ 6052,
2424
+ WSAL_HIGH,
2425
+ __( 'Changed the Activity log retention setting', 'wp-security-audit-log' ),
2426
+ __( 'Changed the <strong>Activity log retention</strong> to %new_setting%.', 'wp-security-audit-log' ),
2427
+ [
2428
+ __( 'Previous setting', 'wp-security-audit-log' ) => '%previous_setting%',
2429
+ ],
2430
  [],
2431
+ 'wp-activity-log',
2432
+ 'modified'
2433
  ),
2434
  array(
2435
+ 6053,
2436
+ WSAL_LOW,
2437
+ __( 'A user was added to / from the list of excluded users from the activity log', 'wp-security-audit-log' ),
2438
+ __( 'The user %user% to / from the list of excluded users from the activity log.', 'wp-security-audit-log' ),
2439
+ [
2440
+ __( 'Previous list of users', 'wp-security-audit-log' ) => '%previous_users%',
2441
+ ],
2442
  [],
2443
+ 'wp-activity-log',
2444
+ 'added'
2445
  ),
2446
  array(
2447
+ 6054,
2448
+ WSAL_LOW,
2449
+ __( 'A user role was added to / from the list of excluded roles from the activity log', 'wp-security-audit-log' ),
2450
+ __( 'The user role %role% to / from the list of excluded roles from the activity log.', 'wp-security-audit-log' ),
2451
+ [
2452
+ __( 'Previous list of users', 'wp-security-audit-log' ) => '%previous_users%',
2453
+ ],
2454
  [],
2455
+ 'wp-activity-log',
2456
+ 'added'
2457
  ),
2458
  array(
2459
+ 6055,
2460
+ WSAL_LOW,
2461
+ __( 'An IP address was added to / from the list of excluded IP addresses from the activity log', 'wp-security-audit-log' ),
2462
+ __( 'The IP address %ip% to / from the list of excluded IP addresses from the activity log.', 'wp-security-audit-log' ),
2463
  [
2464
+ __( 'Previous list of IPs', 'wp-security-audit-log' ) => '%previous_ips%',
2465
  ],
2466
  [],
2467
+ 'wp-activity-log',
2468
+ 'added'
2469
+ ),
2470
+ array(
2471
+ 6056,
2472
+ WSAL_LOW,
2473
+ __( 'A post type was added to / from the list of excluded post types from the activity log', 'wp-security-audit-log' ),
2474
+ __( 'The post type %post_type% to / from the list of excluded post types from the activity log.', 'wp-security-audit-log' ),
2475
+ [
2476
+ __( 'Previous list of Post types', 'wp-security-audit-log' ) => '%previous_types%',
2477
+ ],
2478
+ [],
2479
+ 'wp-activity-log',
2480
+ 'added'
2481
+ ),
2482
+ array(
2483
+ 6057,
2484
+ WSAL_LOW,
2485
+ __( 'A custom field was added to / from the list of excluded custom fields from the activity log', 'wp-security-audit-log' ),
2486
+ __( 'The custom field %custom_field% to / from the list of excluded custom fields from the activity log.', 'wp-security-audit-log' ),
2487
+ [
2488
+ __( 'Previous list of Custom fields', 'wp-security-audit-log' ) => '%previous_fields%',
2489
+ ],
2490
+ [],
2491
+ 'wp-activity-log',
2492
+ 'added'
2493
+ ),
2494
+ array(
2495
+ 6058,
2496
+ WSAL_LOW,
2497
+ __( 'A custom field was added to / from the list of excluded user profile custom fields from the activity log', 'wp-security-audit-log' ),
2498
+ __( 'The custom field %custom_field% to / from the list of excluded user profile custom fields from the activity log.', 'wp-security-audit-log' ),
2499
+ [
2500
+ __( 'Previous list of user profile Custom fields', 'wp-security-audit-log' ) => '%previous_fields%',
2501
+ ],
2502
+ [],
2503
+ 'wp-activity-log',
2504
+ 'added'
2505
+ ),
2506
+ ),
2507
+
2508
+ __( 'Notifications & Integrations', 'wp-security-audit-log' ) => array(
2509
+ array(
2510
+ 6310,
2511
+ WSAL_LOW,
2512
+ __( 'Changed the status of the Daily Summary of Activity Log', 'wp-security-audit-log' ),
2513
+ __( 'Changed the status of the <strong>Daily Summary of Activity Log.</strong>.', 'wp-security-audit-log' ),
2514
+ [],
2515
+ [],
2516
+ 'wp-activity-log',
2517
+ 'enabled'
2518
+ ),
2519
+ array(
2520
+ 6311,
2521
+ WSAL_LOW,
2522
+ __( 'Modified the reciepients of the Daily Summary of Activity Log.', 'wp-security-audit-log' ),
2523
+ __( 'Modified the reciepients of the <strong>Daily Summary of Activity Log</strong>.', 'wp-security-audit-log' ),
2524
+ [
2525
+ __( 'New recipient', 'wp-security-audit-log' ) => '%recipient%',
2526
+ __( 'Previous recipient', 'wp-security-audit-log' ) => '%previous_recipient%',
2527
+ ],
2528
+ [],
2529
+ 'wp-activity-log',
2530
+ 'modified'
2531
+ ),
2532
+ array(
2533
+ 6312,
2534
+ WSAL_LOW,
2535
+ __( 'Changed the status of a built in notification', 'wp-security-audit-log' ),
2536
+ __( 'Changed the status of the built in notification %notification_name%.', 'wp-security-audit-log' ),
2537
+ [],
2538
+ [],
2539
+ 'wp-activity-log',
2540
+ 'enabled'
2541
+ ),
2542
+ array(
2543
+ 6313,
2544
+ WSAL_LOW,
2545
+ __( 'Modified the recipient(s) of the built a notification', 'wp-security-audit-log' ),
2546
+ __( 'Modified the recipient(s) of the built in notification %notification_name%.', 'wp-security-audit-log' ),
2547
+ [
2548
+ __( 'New recipient(s)', 'wp-security-audit-log' ) => '%recipient%',
2549
+ __( 'Previous recipient(s)', 'wp-security-audit-log' ) => '%previous_recipient%',
2550
+ ],
2551
+ [],
2552
+ 'wp-activity-log',
2553
+ 'added'
2554
+ ),
2555
+ array(
2556
+ 6314,
2557
+ WSAL_LOW,
2558
+ __( 'Added a new custom notification', 'wp-security-audit-log' ),
2559
+ __( 'Added a new custom notification %notification_name%.', 'wp-security-audit-log' ),
2560
+ [
2561
+ __( 'Recipient(s)', 'wp-security-audit-log' ) => '%recipient%',
2562
+ ],
2563
+ [],
2564
+ 'wp-activity-log',
2565
+ 'added'
2566
+ ),
2567
+ array(
2568
+ 6315,
2569
+ WSAL_LOW,
2570
+ __( 'Modified a custom notification', 'wp-security-audit-log' ),
2571
+ __( 'Modified the custom notification %notification_name%.', 'wp-security-audit-log' ),
2572
+ [
2573
+ __( 'Recipient(s)', 'wp-security-audit-log' ) => '%recipient%',
2574
+ ],
2575
+ [],
2576
+ 'wp-activity-log',
2577
+ 'modified'
2578
+ ),
2579
+ array(
2580
+ 6316,
2581
+ WSAL_LOW,
2582
+ __( 'Changed the status of a custom notification', 'wp-security-audit-log' ),
2583
+ __( 'Changed the status of the custom notification %notification_name%.', 'wp-security-audit-log' ),
2584
+ [],
2585
+ [],
2586
+ 'wp-activity-log',
2587
+ 'enabled'
2588
+ ),
2589
+ array(
2590
+ 6317,
2591
+ WSAL_LOW,
2592
+ __( 'Deleted a custom notification', 'wp-security-audit-log' ),
2593
+ __( 'Deleted the custom notification %notification_name%.', 'wp-security-audit-log' ),
2594
+ [],
2595
+ [],
2596
+ 'wp-activity-log',
2597
+ 'deleted'
2598
+ ),
2599
+ array(
2600
+ 6318,
2601
+ WSAL_LOW,
2602
+ __( 'Modified a default notification template', 'wp-security-audit-log' ),
2603
+ __( 'Modified the default %template_name% notification template.', 'wp-security-audit-log' ),
2604
+ [],
2605
+ [],
2606
+ 'wp-activity-log',
2607
+ 'modified'
2608
+ ),
2609
+
2610
+ // Integrations.
2611
+ array(
2612
+ 6320,
2613
+ WSAL_HIGH,
2614
+ __( 'Added a new integrations connection', 'wp-security-audit-log' ),
2615
+ __( 'Added a new integrations connection %name%', 'wp-security-audit-log' ),
2616
+ [
2617
+ __( 'Connection type', 'wp-security-audit-log' ) => '%type%',
2618
+ ],
2619
+ [],
2620
+ 'wp-activity-log',
2621
+ 'added'
2622
+ ),
2623
+ array(
2624
+ 6321,
2625
+ WSAL_HIGH,
2626
+ __( 'Modified an integrations connection', 'wp-security-audit-log' ),
2627
+ __( 'Modified the integrations connection %name%.', 'wp-security-audit-log' ),
2628
+ [
2629
+ __( 'Connection type', 'wp-security-audit-log' ) => '%type%',
2630
+ ],
2631
+ [],
2632
+ 'wp-activity-log',
2633
+ 'modified'
2634
+ ),
2635
+ array(
2636
+ 6322,
2637
+ WSAL_HIGH,
2638
+ __( 'Deleted a integrations connection', 'wp-security-audit-log' ),
2639
+ __( 'Deleted the integrations connection %name%.', 'wp-security-audit-log' ),
2640
+ [],
2641
+ [],
2642
+ 'wp-activity-log',
2643
+ 'deleted'
2644
+ ),
2645
+ array(
2646
+ 6323,
2647
+ WSAL_HIGH,
2648
+ __( 'Added a new activity log mirror', 'wp-security-audit-log' ),
2649
+ __( 'Added a new activity log mirror %name%.', 'wp-security-audit-log' ),
2650
+ [
2651
+ __( 'Connection used by this mirror', 'wp-security-audit-log' ) => '%connection%',
2652
+ ],
2653
+ [],
2654
+ 'wp-activity-log',
2655
+ 'added'
2656
+ ),
2657
+ array(
2658
+ 6324,
2659
+ WSAL_HIGH,
2660
+ __( 'Modified an activity log mirror', 'wp-security-audit-log' ),
2661
+ __( 'Modified the activity log mirror %name%.', 'wp-security-audit-log' ),
2662
+ [
2663
+ __( 'Connection used by this mirror', 'wp-security-audit-log' ) => '%connection%',
2664
+ ],
2665
+ [],
2666
+ 'wp-activity-log',
2667
+ 'modified'
2668
+ ),
2669
+ array(
2670
+ 6325,
2671
+ WSAL_LOW,
2672
+ __( 'Changed the status of an activity log mirror', 'wp-security-audit-log' ),
2673
+ __( 'Changed the status of the activity log mirror %name%.', 'wp-security-audit-log' ),
2674
+ [
2675
+ __( 'Connection used by this mirror', 'wp-security-audit-log' ) => '%connection%',
2676
+ ],
2677
+ [],
2678
+ 'wp-activity-log',
2679
+ 'deleted'
2680
+ ),
2681
+ array(
2682
+ 6326,
2683
+ WSAL_HIGH,
2684
+ __( 'Deleted an activity log mirror', 'wp-security-audit-log' ),
2685
+ __( 'Deleted the activity log mirror %name%.', 'wp-security-audit-log' ),
2686
+ [],
2687
+ [],
2688
+ 'wp-activity-log',
2689
+ 'deleted'
2690
+ ),
2691
+ array(
2692
+ 6327,
2693
+ WSAL_HIGH,
2694
+ __( 'Changed the status of Logging of events to the database', 'wp-security-audit-log' ),
2695
+ __( 'Changed the status of <strong>Logging of events to the database</strong>.', 'wp-security-audit-log' ),
2696
+ [],
2697
+ [],
2698
+ 'wp-activity-log',
2699
+ 'enabled'
2700
+ ),
2701
+ ),
2702
+
2703
+ __( 'WordPress Site Settings', 'wp-security-audit-log' ) => array(
2704
+ array(
2705
+ 6001,
2706
+ WSAL_CRITICAL,
2707
+ __( 'Option Anyone Can Register in WordPress settings changed', 'wp-security-audit-log' ),
2708
+ __( 'The <strong>Membership</strong> setting <strong>Anyone can register</strong>.', 'wp-security-audit-log' ),
2709
+ [],
2710
+ [],
2711
+ 'system-setting',
2712
+ 'enabled'
2713
+ ),
2714
+ array(
2715
+ 6002,
2716
+ WSAL_CRITICAL,
2717
+ __( 'New User Default Role changed', 'wp-security-audit-log' ),
2718
+ __( 'Changed the <strong>New user default role</strong> WordPress setting.', 'wp-security-audit-log' ),
2719
+ [
2720
+ __( 'Previous role', 'wp-security-audit-log' ) => '%OldRole%',
2721
+ __( 'New role', 'wp-security-audit-log' ) => '%NewRole%'
2722
+ ],
2723
+ [],
2724
+ 'system-setting',
2725
+ 'modified'
2726
+ ),
2727
+ array(
2728
+ 6003,
2729
+ WSAL_CRITICAL,
2730
+ __( 'WordPress Administrator Notification email changed', 'wp-security-audit-log' ),
2731
+ __( 'Change the <strong>Administrator email address</strong> in the WordPress settings.', 'wp-security-audit-log' ),
2732
+ [
2733
+ __( 'Previous address', 'wp-security-audit-log' ) => '%OldEmail%',
2734
+ __( 'New address', 'wp-security-audit-log' ) => '%NewEmail%'
2735
+ ],
2736
+ [],
2737
+ 'system-setting',
2738
+ 'modified'
2739
+ ),
2740
+ array(
2741
+ 6005,
2742
+ WSAL_HIGH,
2743
+ __( 'User changes the WordPress Permalinks', 'wp-security-audit-log' ),
2744
+ __( 'Changed the <strong>WordPress permalinks</strong>.', 'wp-security-audit-log' ),
2745
+ [
2746
+ __( 'Previous permalinks', 'wp-security-audit-log' ) => '%OldPattern%',
2747
+ __( 'New permalinks', 'wp-security-audit-log' ) => '%NewPattern%'
2748
+ ],
2749
+ [],
2750
+ 'system-setting',
2751
+ 'modified'
2752
+ ),
2753
+ array(
2754
+ 6008,
2755
+ WSAL_INFORMATIONAL,
2756
+ __( 'Enabled/Disabled the option Discourage search engines from indexing this site', 'wp-security-audit-log' ),
2757
+ __( 'Changed the status of the WordPress setting <strong>Search engine visibility</strong> (Discourage search engines from indexing this site)', 'wp-security-audit-log' ),
2758
+ [],
2759
+ [],
2760
+ 'system-setting',
2761
+ 'enabled'
2762
+ ),
2763
+ array(
2764
+ 6009,
2765
+ WSAL_MEDIUM,
2766
+ __( 'Enabled/Disabled comments on all the website', 'wp-security-audit-log' ),
2767
+ __( 'Changed the status of the WordPress setting <strong>Allow people to submit comments on new posts</strong>.', 'wp-security-audit-log' ),
2768
+ [],
2769
+ [],
2770
+ 'system-setting',
2771
+ 'enabled'
2772
+ ),
2773
+
2774
+ array(
2775
+ 6010,
2776
+ WSAL_MEDIUM,
2777
+ __( 'Enabled/Disabled the option Comment author must fill out name and email', 'wp-security-audit-log' ),
2778
+ __( 'Changed the status of the WordPress setting <strong>.Comment author must fill out name and email</strong>.', 'wp-security-audit-log' ),
2779
+ [],
2780
+ [],
2781
+ 'system-setting',
2782
+ 'enabled'
2783
+ ),
2784
+ array(
2785
+ 6011,
2786
+ WSAL_MEDIUM,
2787
+ __( 'Enabled/Disabled the option Users must be logged in and registered to comment', 'wp-security-audit-log' ),
2788
+ __( 'Changed the status of the WordPress setting <strong>Users must be registered and logged in to comment</strong>.', 'wp-security-audit-log' ),
2789
+ [],
2790
+ [],
2791
+ 'system-setting',
2792
+ 'enabled'
2793
+ ),
2794
+ array(
2795
+ 6012,
2796
+ WSAL_INFORMATIONAL,
2797
+ __( 'Enabled/Disabled the option to automatically close comments', 'wp-security-audit-log' ),
2798
+ __( 'Changed the status of the WordPress setting <strong>Automatically close comments after %Value% days</strong>.', 'wp-security-audit-log' ),
2799
+ [],
2800
+ [],
2801
+ 'system-setting',
2802
+ 'enabled'
2803
+ ),
2804
+ array(
2805
+ 6013,
2806
+ WSAL_INFORMATIONAL,
2807
+ __( 'Changed the value of the option Automatically close comments', 'wp-security-audit-log' ),
2808
+ __( 'Changed the value of the WordPress setting <strong>Automatically close comments after a number of days</strong> to %NewValue%.', 'wp-security-audit-log' ),
2809
+ [
2810
+ __( 'Previous value', 'wp-security-audit-log' ) => '%OldValue%'
2811
+ ],
2812
+ [],
2813
+ 'system-setting',
2814
+ 'modified'
2815
  ),
2816
  array(
2817
  6014,
2989
  'modified'
2990
  ),
2991
  ),
2992
+
2993
+ __( 'Database Events', 'wp-security-audit-log' ) => array(
2994
+ array(
2995
+ 5010,
2996
+ WSAL_LOW,
2997
+ __( 'Plugin created table', 'wp-security-audit-log' ),
2998
+ __( 'The plugin %Plugin->Name% created this table in the database.', 'wp-security-audit-log' ),
2999
+ [
3000
+ __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
3001
+ ],
3002
+ [],
3003
+ 'database',
3004
+ 'created'
3005
+ ),
3006
+ array(
3007
+ 5011,
3008
+ WSAL_LOW,
3009
+ __( 'Plugin modified table structure', 'wp-security-audit-log' ),
3010
+ __( 'The plugin %Plugin->Name% modified the structure of a database table.', 'wp-security-audit-log' ),
3011
+ [
3012
+ __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
3013
+ ],
3014
+ [],
3015
+ 'database',
3016
+ 'modified'
3017
+ ),
3018
+ array(
3019
+ 5012,
3020
+ WSAL_MEDIUM,
3021
+ __( 'Plugin deleted table', 'wp-security-audit-log' ),
3022
+ __( 'The plugin %Plugin->Name% deleted this table from the database.', 'wp-security-audit-log' ),
3023
+ [
3024
+ __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
3025
+ ],
3026
+ [],
3027
+ 'database',
3028
+ 'deleted'
3029
+ ),
3030
+ array(
3031
+ 5013,
3032
+ WSAL_LOW,
3033
+ __( 'Theme created tables', 'wp-security-audit-log' ),
3034
+ __( 'The theme %Theme->Name% created this tables in the database.', 'wp-security-audit-log' ),
3035
+ [
3036
+ __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
3037
+ ],
3038
+ [],
3039
+ 'database',
3040
+ 'created'
3041
+ ),
3042
+ array(
3043
+ 5014,
3044
+ WSAL_LOW,
3045
+ __( 'Theme modified tables structure', 'wp-security-audit-log' ),
3046
+ __( 'The theme %Theme->Name% modified the structure of this database table', 'wp-security-audit-log' ),
3047
+ [
3048
+ __( 'Table', 'wp-security-audit-log' ) => '%TableNames%'
3049
+ ],
3050
+ [],
3051
+ 'database',
3052
+ 'modified'
3053
+ ),
3054
+ array(
3055
+ 5015,
3056
+ WSAL_MEDIUM,
3057
+ __( 'Theme deleted tables', 'wp-security-audit-log' ),
3058
+ __( 'The theme %Theme->Name% deleted this table from the database.', 'wp-security-audit-log' ),
3059
+ [
3060
+ __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
3061
+ ],
3062
+ [],
3063
+ 'database',
3064
+ 'deleted'
3065
+ ),
3066
+ array(
3067
+ 5016,
3068
+ WSAL_HIGH,
3069
+ __( 'Unknown component created tables', 'wp-security-audit-log' ),
3070
+ __( 'An unknown component created these tables in the database.', 'wp-security-audit-log' ),
3071
+ [
3072
+ __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
3073
+ ],
3074
+ [],
3075
+ 'database',
3076
+ 'created'
3077
+ ),
3078
+ array(
3079
+ 5017,
3080
+ WSAL_HIGH,
3081
+ __( 'Unknown component modified tables structure', 'wp-security-audit-log' ),
3082
+ __( 'An unknown component modified the structure of these database tables.', 'wp-security-audit-log' ),
3083
+ [
3084
+ __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
3085
+ ],
3086
+ [],
3087
+ 'database',
3088
+ 'modified'
3089
+ ),
3090
+ array(
3091
+ 5018,
3092
+ WSAL_HIGH,
3093
+ __( 'Unknown component deleted tables', 'wp-security-audit-log' ),
3094
+ __( 'An unknown component deleted these tables from the database.', 'wp-security-audit-log' ),
3095
+ [
3096
+ __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
3097
+ ],
3098
+ [],
3099
+ 'database',
3100
+ 'deleted'
3101
+ ),
3102
+ array(
3103
+ 5022,
3104
+ WSAL_HIGH,
3105
+ __( 'WordPress created tables', 'wp-security-audit-log' ),
3106
+ __( 'WordPress has created these tables in the database.', 'wp-security-audit-log' ),
3107
+ [
3108
+ __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
3109
+ ],
3110
+ [],
3111
+ 'database',
3112
+ 'created'
3113
+ ),
3114
+ array(
3115
+ 5023,
3116
+ WSAL_HIGH,
3117
+ __( 'WordPress modified tables structure', 'wp-security-audit-log' ),
3118
+ __( 'WordPress modified the structure of these database tables.', 'wp-security-audit-log' ),
3119
+ [
3120
+ __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
3121
+ ],
3122
+ [],
3123
+ 'database',
3124
+ 'modified'
3125
+ ),
3126
+ array(
3127
+ 5024,
3128
+ WSAL_HIGH,
3129
+ __( 'WordPress deleted tables', 'wp-security-audit-log' ),
3130
+ __( 'WordPress deleted these tables from the database.', 'wp-security-audit-log' ),
3131
+ [
3132
+ __( 'Tables', 'wp-security-audit-log' ) => '%TableNames%'
3133
+ ],
3134
+ [],
3135
+ 'database',
3136
+ 'deleted'
3137
+ ),
3138
+ ),
3139
  ),
3140
 
3141
  __( 'Multisite Network Sites', 'wp-security-audit-log' ) => array(
js/auditlog.js CHANGED
@@ -201,13 +201,18 @@ function WsalSsasChange(value) {
201
  }
202
 
203
  function WsalDisableCustom(link, meta_key) {
204
- var nonce = jQuery(link).data('disable-custom-nonce');
205
- jQuery(link).hide();
206
  jQuery.ajax({
207
  type: 'POST',
208
  url: ajaxurl,
209
  async: false,
210
- data: { action: 'AjaxDisableCustomField', notice: meta_key, disable_nonce: nonce },
 
 
 
 
 
211
  success: function (data) {
212
  var notice = jQuery('<div class="updated" data-notice-name="notifications-extension"></div>').html(data);
213
  jQuery("h2:first").after(notice);
@@ -445,29 +450,6 @@ var wsalLoadEventsResponse = true; // Global variable to check events loading re
445
 
446
  jQuery( document ).ready( function() {
447
 
448
- /**
449
- * Dismiss DB disconnect issue notice.
450
- */
451
- jQuery( '#wsal-notice-connect-issue' ).click( function() {
452
- jQuery.ajax({
453
- type: 'POST',
454
- url: ajaxurl,
455
- async: true,
456
- data: {
457
- action: 'wsal_dismiss_notice_disconnect',
458
- nonce: jQuery( '#wsal-dismiss-notice-disconnect' ).val()
459
- },
460
- success: function( data ) {
461
- console.log( data );
462
- },
463
- error: function( xhr, textStatus, error ) {
464
- console.log( xhr.statusText );
465
- console.log( textStatus );
466
- console.log( error );
467
- }
468
- });
469
- });
470
-
471
  /**
472
  * Dismiss addon-available notice.
473
  */
@@ -570,3 +552,28 @@ function wsal_addon_installer_ajax( button ) {
570
  }
571
  );
572
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  }
202
 
203
  function WsalDisableCustom(link, meta_key) {
204
+ var linkElm = jQuery(link);
205
+ linkElm.hide();
206
  jQuery.ajax({
207
  type: 'POST',
208
  url: ajaxurl,
209
  async: false,
210
+ data: {
211
+ action: 'AjaxDisableCustomField',
212
+ notice: meta_key,
213
+ disable_nonce: linkElm.data('disable-custom-nonce'),
214
+ object_type: linkElm.data('object-type')
215
+ },
216
  success: function (data) {
217
  var notice = jQuery('<div class="updated" data-notice-name="notifications-extension"></div>').html(data);
218
  jQuery("h2:first").after(notice);
450
 
451
  jQuery( document ).ready( function() {
452
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
453
  /**
454
  * Dismiss addon-available notice.
455
  */
552
  }
553
  );
554
  }
555
+
556
+ jQuery( document ).ready( function() {
557
+
558
+ jQuery( document ).on( 'click', '.notice.is-dismissible .notice-dismiss', function(event) {
559
+ var noticeElm = jQuery(this).parent();
560
+ var action = noticeElm.attr('data-dismiss-action');
561
+ console.log(noticeElm);
562
+ console.log(action);
563
+ if ( !action ){
564
+ return;
565
+ }
566
+
567
+ event.preventDefault();
568
+ jQuery.ajax({
569
+ type: 'POST',
570
+ url: ajaxurl,
571
+ async: true,
572
+ data: {
573
+ action: jQuery(this).parent().attr('data-dismiss-action'),
574
+ nonce: jQuery(this).parent().attr('data-nonce')
575
+ }
576
+ });
577
+ });
578
+
579
+ });
js/common.js CHANGED
@@ -71,40 +71,38 @@ jQuery( document ).ready( function() {
71
  dataType : "json",
72
  url: wsalCommonData.ajaxURL,
73
  data : {
74
- action: "run_addon_install",
75
  plugin_slug: PluginSlug,
76
  plugin_url: PluginDownloadUrl,
77
  _wpnonce: nonceValue
78
  },
79
  complete: function( data ) {
 
80
  if( data.responseText == '"already_installed"' ) {
81
  jQuery(currentButton).html( wsalCommonData.already_installed ).addClass('disabled');
82
  jQuery(currentButton).next('.spinner').hide('200');
83
- if (typeof RedirectToTab !== 'undefined') {
84
- window.location.href="admin.php?page=wsal-togglealerts" + RedirectToTab;
85
- jQuery('[href="' + RedirectToTab + '"]').trigger('click');
86
- }
87
  jQuery(currentButton).addClass('disabled');
88
  } else if ( data.responseText == '"activated"' ) {
89
  jQuery(currentButton).html( wsalCommonData.activated ).addClass('disabled');
90
  jQuery(currentButton).next('.spinner').hide('200');
91
- if (typeof RedirectToTab !== 'undefined') {
92
- window.location.href="admin.php?page=wsal-togglealerts" + RedirectToTab;
93
- jQuery('[href="' + RedirectToTab + '"]').trigger('click');
94
- }
95
  jQuery(currentButton).addClass('disabled');
96
- } else if ( JSON.stringify(data.responseText).toLowerCase().indexOf('failed') >= 0 ) {
97
  jQuery(currentButton).html( wsalCommonData.failed ).addClass('disabled');
98
  jQuery(currentButton).next('.spinner').hide('200');
99
- } else if ( data.responseText == '"success"' || JSON.stringify(data.responseText).toLowerCase().indexOf('success') >= 0 ) {
 
100
  jQuery(currentButton).html( wsalCommonData.installed ).addClass('disabled');
101
  jQuery(currentButton).next('.spinner').hide('200');
102
- if (typeof RedirectToTab !== 'undefined') {
103
- window.location.href="admin.php?page=wsal-togglealerts" + RedirectToTab;
104
- }
105
- // Reload as tabs are not present on page.
106
- location.reload();
107
- }
 
 
 
 
108
  jQuery(".install-addon").not(this).prop('disabled', false);
109
  },
110
  });
71
  dataType : "json",
72
  url: wsalCommonData.ajaxURL,
73
  data : {
74
+ action: "wsal_run_addon_install",
75
  plugin_slug: PluginSlug,
76
  plugin_url: PluginDownloadUrl,
77
  _wpnonce: nonceValue
78
  },
79
  complete: function( data ) {
80
+ var do_redirect = true;
81
  if( data.responseText == '"already_installed"' ) {
82
  jQuery(currentButton).html( wsalCommonData.already_installed ).addClass('disabled');
83
  jQuery(currentButton).next('.spinner').hide('200');
 
 
 
 
84
  jQuery(currentButton).addClass('disabled');
85
  } else if ( data.responseText == '"activated"' ) {
86
  jQuery(currentButton).html( wsalCommonData.activated ).addClass('disabled');
87
  jQuery(currentButton).next('.spinner').hide('200');
 
 
 
 
88
  jQuery(currentButton).addClass('disabled');
89
+ } else if ( JSON.stringify(data.responseText).toLowerCase().indexOf('failed') >= 0 ) {
90
  jQuery(currentButton).html( wsalCommonData.failed ).addClass('disabled');
91
  jQuery(currentButton).next('.spinner').hide('200');
92
+ do_redirect = false;
93
+ } else if ( data.responseText == '"success"' || JSON.stringify(data.responseText).toLowerCase().indexOf('success') >= 0 ) {
94
  jQuery(currentButton).html( wsalCommonData.installed ).addClass('disabled');
95
  jQuery(currentButton).next('.spinner').hide('200');
96
+ }
97
+
98
+ if (do_redirect && typeof RedirectToTab !== 'undefined') {
99
+ setTimeout(function(){
100
+ window.location="admin.php?page=wsal-togglealerts" + RedirectToTab;
101
+ jQuery('[href="' + RedirectToTab + '"]').trigger('click');
102
+ // Reload as tabs are not present on page.
103
+ window.location.reload();
104
+ },100);
105
+ }
106
  jQuery(".install-addon").not(this).prop('disabled', false);
107
  },
108
  });
js/settings.js CHANGED
@@ -11,17 +11,25 @@ jQuery( document ).ready( function() {
11
  });
12
  };
13
 
14
- jQuery( '#ViewerQueryBox, #EditorQueryBox, #ExRoleQueryBox, #ExUserQueryBox, #CustomQueryBox, #IpAddrQueryBox, #ExCPTsQueryBox, #ExURLsQueryBox' ).keydown( function( event ) {
15
  if ( 13 === event.keyCode ) {
16
- var type = jQuery( this ).attr( 'id' ).substr( 0, 6 );
17
- console.log( type );
 
 
18
  jQuery( '#' + type + 'QueryAdd' ).click();
19
  return false;
20
  }
21
  });
22
 
23
- jQuery( '#ViewerQueryAdd, #EditorQueryAdd, #ExRoleQueryAdd, #ExUserQueryAdd, #CustomQueryAdd, #IpAddrQueryAdd, #ExCPTsQueryAdd, #ExURLsQueryAdd' ).click( function() {
24
- var type = jQuery( this ).attr( 'id' ).substr( 0, 6 );
 
 
 
 
 
 
25
  var value = jQuery.trim( jQuery( '#' + type + 'QueryBox' ).val() );
26
  var existing = jQuery( '#' + type + 'List input' ).filter( function() {
27
  return this.value === value;
@@ -61,7 +69,7 @@ jQuery( document ).ready( function() {
61
  jQuery( '#' + type + 'QueryBox' ).val( '' );
62
  return;
63
  }
64
- } else if ( 'Custom' != type && 'IpAddr' != type ) {
65
  if ( 'other' === data.tokenType ) {
66
  alert( wsal_data.invalidUser );
67
  jQuery( '#' + type + 'QueryBox' ).val( '' );
@@ -71,7 +79,7 @@ jQuery( document ).ready( function() {
71
  jQuery( '#' + type + 'QueryBox' ).val( '' );
72
  jQuery( '#' + type + 'List' ).append( jQuery( '<span class="sectoken-' + data.tokenType + '"/>' ).text( data.token ).append(
73
  jQuery( '<input type="hidden" name="' + type + 's[]"/>' ).val( data.token ),
74
- jQuery( '<a href="javascript:;" title="Remove">&times;</a>' ).click( RemoveSecToken )
75
  ) );
76
  } else {
77
  alert( data.message );
@@ -82,7 +90,7 @@ jQuery( document ).ready( function() {
82
  );
83
  });
84
 
85
- jQuery( '#ViewerList>span>a, #EditorList>span>a, #ExRoleList>span>a, #ExUserList>span>a, #CustomList>span>a, #IpAddrList>span>a, #ExCPTsList>span>a, #ExURLsList>span>a' ).click( RemoveSecToken );
86
 
87
  var usersUrl = ajaxurl + '?action=AjaxGetAllUsers&wsal_nonce=' + wsal_data.wp_nonce;
88
  jQuery( '#ExUserQueryBox' ).autocomplete({
11
  });
12
  };
13
 
14
+ jQuery( '.js-query-box, #ViewerQueryBox, #EditorQueryBox, #ExRoleQueryBox, #ExUserQueryBox, #CustomQueryBox, #IpAddrQueryBox, #ExCPTsQueryBox, #ExURLsQueryBox' ).keydown( function( event ) {
15
  if ( 13 === event.keyCode ) {
16
+ var type = jQuery( this ).closest( 'fieldset' ).attr( 'data-type' );
17
+ if (! type ) {
18
+ type = jQuery( this ).attr( 'id' ).substr( 0, 6 );
19
+ }
20
  jQuery( '#' + type + 'QueryAdd' ).click();
21
  return false;
22
  }
23
  });
24
 
25
+ jQuery( '.js-query-add, #ViewerQueryAdd, #EditorQueryAdd, #ExRoleQueryAdd, #ExUserQueryAdd, #CustomQueryAdd, #IpAddrQueryAdd, #ExCPTsQueryAdd, #ExURLsQueryAdd' ).click( function() {
26
+ var buttonElm = jQuery( this );
27
+ var fieldsetElm = buttonElm.closest( 'fieldset' );
28
+ var type = fieldsetElm.attr( 'data-type' );
29
+ if (! type ) {
30
+ type = buttonElm.attr('id').substr(0, 6);
31
+ }
32
+
33
  var value = jQuery.trim( jQuery( '#' + type + 'QueryBox' ).val() );
34
  var existing = jQuery( '#' + type + 'List input' ).filter( function() {
35
  return this.value === value;
69
  jQuery( '#' + type + 'QueryBox' ).val( '' );
70
  return;
71
  }
72
+ } else if ( 'UserMeta' != type && 'PostMeta' != type && 'IpAddr' != type ) {
73
  if ( 'other' === data.tokenType ) {
74
  alert( wsal_data.invalidUser );
75
  jQuery( '#' + type + 'QueryBox' ).val( '' );
79
  jQuery( '#' + type + 'QueryBox' ).val( '' );
80
  jQuery( '#' + type + 'List' ).append( jQuery( '<span class="sectoken-' + data.tokenType + '"/>' ).text( data.token ).append(
81
  jQuery( '<input type="hidden" name="' + type + 's[]"/>' ).val( data.token ),
82
+ jQuery( '<a href="javascript:;" title="' + wsal_data.remove + '">&times;</a>' ).click( RemoveSecToken )
83
  ) );
84
  } else {
85
  alert( data.message );
90
  );
91
  });
92
 
93
+ jQuery( '.js-list>span>a, #ViewerList>span>a, #EditorList>span>a, #ExRoleList>span>a, #ExUserList>span>a, #CustomList>span>a, #IpAddrList>span>a, #ExCPTsList>span>a, #ExURLsList>span>a' ).click( RemoveSecToken );
94
 
95
  var usersUrl = ajaxurl + '?action=AjaxGetAllUsers&wsal_nonce=' + wsal_data.wp_nonce;
96
  jQuery( '#ExUserQueryBox' ).autocomplete({
languages/wp-security-audit-log-de_DE.mo ADDED
Binary file
languages/wp-security-audit-log-es_ES.mo ADDED
Binary file
languages/wp-security-audit-log-fr_FR.mo ADDED
Binary file
languages/wp-security-audit-log-it_IT.mo ADDED
Binary file
languages/wp-security-audit-log-ro_RO.mo ADDED
Binary file
languages/wp-security-audit-log.pot CHANGED
@@ -1,6 +1,5 @@
1
  # Copyright (C) 2021 wp-security-audit-log
2
  # This file is distributed under the same license as the wp-security-audit-log package.
3
- #, fuzzy
4
  msgid ""
5
  msgstr ""
6
  "Project-Id-Version: wp-security-audit-log\n"
@@ -12,4802 +11,8048 @@ msgstr ""
12
  "Report-Msgid-Bugs-To: https://www.wpwhitesecurity.com\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
- "POT-Creation-Date: \n"
18
- "PO-Revision-Date: \n"
19
- "X-Generator: Poedit 2.4.3\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
 
 
22
 
23
- #: classes/AlertFormatter.php:62
24
- msgid "Exclude Custom Field from the Monitoring"
25
  msgstr ""
26
 
27
- #: classes/AlertFormatter.php:87
28
- msgid "unknown"
29
  msgstr ""
30
 
31
- #: classes/AlertFormatter.php:134
32
- msgid "Download the log file."
33
  msgstr ""
34
 
35
- #: classes/AlertFormatter.php:142
36
- msgid "published"
37
  msgstr ""
38
 
39
- #: classes/AlertManager.php:412
40
- #, php-format
41
- msgid "Event with code %d has not be registered."
42
  msgstr ""
43
 
44
- #: classes/AlertManager.php:496
45
- #, php-format
46
- msgid "Event %s already registered with WP Activity Log."
47
  msgstr ""
48
 
49
- #: classes/AlertManager.php:527
50
- 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."
51
  msgstr ""
52
 
53
- #: classes/AlertManager.php:530
54
- #, php-format
55
- msgid "%4$s to help you solve this issue."
56
  msgstr ""
57
 
58
- #: classes/AlertManager.php:532
59
- msgid "ERROR:"
60
  msgstr ""
61
 
62
- #: classes/AlertManager.php:534
63
- msgid "Contact us"
64
  msgstr ""
65
 
66
- #: classes/AlertManager.php:1146 classes/AuditLogListView.php:290
67
- #: classes/AuditLogListView.php:324 classes/Views/Settings.php:1094
68
- #: classes/WidgetManager.php:76 defaults.php:1689
69
- msgid "User"
70
  msgstr ""
71
 
72
- #: classes/AlertManager.php:1147 classes/AlertManager.php:1936
73
- #: classes/AuditLogGridView.php:473 classes/AuditLogListView.php:467
74
- #: defaults.php:2397
75
- msgid "System"
76
  msgstr ""
77
 
78
- #: classes/AlertManager.php:1148 classes/AuditLogGridView.php:464
79
- #: classes/AuditLogListView.php:461 defaults.php:2157 defaults.php:2172
80
- msgid "Plugin"
81
  msgstr ""
82
 
83
- #: classes/AlertManager.php:1149
84
- msgid "Database"
85
  msgstr ""
86
 
87
- #: classes/AlertManager.php:1150 defaults.php:915
88
- msgid "Post"
89
  msgstr ""
90
 
91
- #: classes/AlertManager.php:1151 classes/AlertManager.php:1155
92
- msgid "File"
93
  msgstr ""
94
 
95
- #: classes/AlertManager.php:1152
96
- msgid "Tag"
97
  msgstr ""
98
 
99
- #: classes/AlertManager.php:1153 defaults.php:79
100
- msgid "Comment"
101
  msgstr ""
102
 
103
- #: classes/AlertManager.php:1154
104
- msgid "Setting"
105
  msgstr ""
106
 
107
- #: classes/AlertManager.php:1156
108
- msgid "System Setting"
109
  msgstr ""
110
 
111
- #: classes/AlertManager.php:1157
112
- msgid "MainWP Network"
113
  msgstr ""
114
 
115
- #: classes/AlertManager.php:1158
116
- msgid "MainWP"
117
  msgstr ""
118
 
119
- #: classes/AlertManager.php:1159
120
- msgid "Category"
121
  msgstr ""
122
 
123
- #: classes/AlertManager.php:1160
124
- msgid "Custom Field"
125
  msgstr ""
126
 
127
- #: classes/AlertManager.php:1161
128
- msgid "Widget"
129
  msgstr ""
130
 
131
- #: classes/AlertManager.php:1162
132
- msgid "Menu"
133
  msgstr ""
134
 
135
- #: classes/AlertManager.php:1163
136
- msgid "Theme"
137
  msgstr ""
138
 
139
- #: classes/AlertManager.php:1164
140
- msgid "Activity log"
141
  msgstr ""
142
 
143
- #: classes/AlertManager.php:1165 wp-security-audit-log.php:980
144
- msgid "WP Activity Log"
145
  msgstr ""
146
 
147
- #: classes/AlertManager.php:1166
148
- msgid "Multisite Network"
149
  msgstr ""
150
 
151
- #: classes/AlertManager.php:1167
152
- msgid "IP Address"
153
  msgstr ""
154
 
155
- #: classes/AlertManager.php:1183
156
- msgid "unknown object"
157
  msgstr ""
158
 
159
- #: classes/AlertManager.php:1220
160
- msgid "Login"
161
  msgstr ""
162
 
163
- #: classes/AlertManager.php:1221
164
- msgid "Logout"
165
  msgstr ""
166
 
167
- #: classes/AlertManager.php:1222
168
- msgid "Installed"
169
  msgstr ""
170
 
171
- #: classes/AlertManager.php:1223
172
- msgid "Activated"
173
  msgstr ""
174
 
175
- #: classes/AlertManager.php:1224
176
- msgid "Deactivated"
177
  msgstr ""
178
 
179
- #: classes/AlertManager.php:1225
180
- msgid "Uninstalled"
181
  msgstr ""
182
 
183
- #: classes/AlertManager.php:1226
184
- msgid "Updated"
185
  msgstr ""
186
 
187
- #: classes/AlertManager.php:1227
188
- msgid "Created"
189
  msgstr ""
190
 
191
- #: classes/AlertManager.php:1228
192
- msgid "Modified"
193
  msgstr ""
194
 
195
- #: classes/AlertManager.php:1229
196
- msgid "Deleted"
197
  msgstr ""
198
 
199
- #: classes/AlertManager.php:1230
200
- msgid "Published"
201
  msgstr ""
202
 
203
- #: classes/AlertManager.php:1231
204
- msgid "Approved"
205
  msgstr ""
206
 
207
- #: classes/AlertManager.php:1232
208
- msgid "Unapproved"
209
  msgstr ""
210
 
211
- #: classes/AlertManager.php:1233
212
- msgid "Enabled"
213
  msgstr ""
214
 
215
- #: classes/AlertManager.php:1234
216
- msgid "Disabled"
217
  msgstr ""
218
 
219
- #: classes/AlertManager.php:1235
220
- msgid "Added"
221
  msgstr ""
222
 
223
- #: classes/AlertManager.php:1236
224
- msgid "Failed Login"
225
  msgstr ""
226
 
227
- #: classes/AlertManager.php:1237
228
- msgid "Blocked"
229
  msgstr ""
230
 
231
- #: classes/AlertManager.php:1238
232
- msgid "Uploaded"
233
  msgstr ""
234
 
235
- #: classes/AlertManager.php:1239
236
- msgid "Restored"
237
  msgstr ""
238
 
239
- #: classes/AlertManager.php:1240
240
- msgid "Opened"
241
  msgstr ""
242
 
243
- #: classes/AlertManager.php:1241
244
- msgid "Viewed"
245
  msgstr ""
246
 
247
- #: classes/AlertManager.php:1242
248
- msgid "Started"
249
  msgstr ""
250
 
251
- #: classes/AlertManager.php:1243
252
- msgid "Stopped"
253
  msgstr ""
254
 
255
- #: classes/AlertManager.php:1244
256
- msgid "Removed"
257
  msgstr ""
258
 
259
- #: classes/AlertManager.php:1245
260
- msgid "Unblocked"
261
  msgstr ""
262
 
263
- #: classes/AlertManager.php:1246
264
- msgid "Renamed"
265
  msgstr ""
266
 
267
- #: classes/AlertManager.php:1247
268
- msgid "Duplicated"
269
  msgstr ""
270
 
271
- #: classes/AlertManager.php:1248
272
- msgid "Submitted"
273
  msgstr ""
274
 
275
- #: classes/AlertManager.php:1249
276
- msgid "Revoked"
277
  msgstr ""
278
 
279
- #: classes/AlertManager.php:1266
280
- msgid "unknown type"
281
  msgstr ""
282
 
283
- #: classes/AlertManager.php:1514 classes/Views/ToggleAlerts.php:211
284
- #: classes/Views/ToggleAlerts.php:244 defaults.php:1491
285
- msgid "Pages"
286
  msgstr ""
287
 
288
- #: classes/AlertManager.php:1514 classes/Views/ToggleAlerts.php:211
289
- #: classes/Views/ToggleAlerts.php:244 defaults.php:1306
290
- msgid "Custom Post Types"
291
  msgstr ""
292
 
293
- #: classes/AlertManager.php:1829
294
- msgid "System Activity"
295
  msgstr ""
296
 
297
- #: classes/AlertManager.php:1893 classes/ConstantManager.php:146
298
- msgid "Unknown error code."
299
  msgstr ""
300
 
301
- #: classes/AlertManager.php:1900 classes/AlertManager.php:1912
302
- msgid "Unknown Site"
303
  msgstr ""
304
 
305
- #: classes/AuditLogGridView.php:104 classes/AuditLogListView.php:95
306
- msgid "No events so far."
307
  msgstr ""
308
 
309
- #: classes/AuditLogGridView.php:141 classes/AuditLogListView.php:139
310
- msgid "List View"
311
  msgstr ""
312
 
313
- #: classes/AuditLogGridView.php:142 classes/AuditLogListView.php:140
314
- msgid "Grid View"
315
  msgstr ""
316
 
317
- #: classes/AuditLogGridView.php:167 classes/AuditLogListView.php:165
318
- msgid "Show "
319
  msgstr ""
320
 
321
- #: classes/AuditLogGridView.php:175 classes/AuditLogListView.php:173
322
- msgid " Items"
323
  msgstr ""
324
 
325
- #: classes/AuditLogGridView.php:182 classes/AuditLogListView.php:180
326
- msgid " End of Activity Log —"
327
  msgstr ""
328
 
329
- #: classes/AuditLogGridView.php:203 classes/AuditLogListView.php:201
330
- #: classes/Views/AuditLog.php:624
331
- msgid "All Sites"
332
  msgstr ""
333
 
334
- #: classes/AuditLogGridView.php:231 classes/AuditLogListView.php:230
335
- msgid "Live Database"
336
  msgstr ""
337
 
338
- #: classes/AuditLogGridView.php:234 classes/AuditLogListView.php:233
339
- msgid "Archive Database"
340
  msgstr ""
341
 
342
- #: classes/AuditLogGridView.php:288 classes/AuditLogGridView.php:312
343
- #: classes/AuditLogListView.php:287 classes/AuditLogListView.php:315
344
- #: defaults.php:696 defaults.php:711
345
- msgid "ID"
346
  msgstr ""
347
 
348
- #: classes/AuditLogGridView.php:289 classes/AuditLogGridView.php:315
349
- #: classes/AuditLogListView.php:288 classes/AuditLogListView.php:318
350
- #: classes/Views/Settings.php:1090 classes/Views/ToggleAlerts.php:299
351
- msgid "Severity"
352
  msgstr ""
353
 
354
- #: classes/AuditLogGridView.php:290
355
- msgid "Info"
356
  msgstr ""
357
 
358
- #: classes/AuditLogGridView.php:295 classes/AuditLogListView.php:298
359
- #: classes/AuditLogListView.php:330
360
- msgid "Site"
361
  msgstr ""
362
 
363
- #: classes/AuditLogGridView.php:298 classes/AuditLogGridView.php:321
364
- #: classes/AuditLogListView.php:301 classes/AuditLogListView.php:339
365
- msgid "Message"
366
  msgstr ""
367
 
368
- #: classes/AuditLogGridView.php:318
369
- msgid "Grid"
370
  msgstr ""
371
 
372
- #: classes/AuditLogGridView.php:386 classes/AuditLogListView.php:421
373
- msgid "Disable this type of events."
374
  msgstr ""
375
 
376
- #: classes/AuditLogGridView.php:409
377
- msgid "Message:"
378
  msgstr ""
379
 
380
- #: classes/AuditLogGridView.php:418 classes/AuditLogGridView.php:422
381
- #: classes/AuditLogGridView.php:461 classes/AuditLogListView.php:436
382
- #: classes/AuditLogListView.php:458
383
- msgid "Unknown"
384
  msgstr ""
385
 
386
- #: classes/AuditLogGridView.php:446
387
- msgid "Show me all activity by this User"
388
  msgstr ""
389
 
390
- #: classes/AuditLogGridView.php:467 classes/AuditLogListView.php:463
391
- #: defaults.php:2046
392
- msgid "Plugins"
393
  msgstr ""
394
 
395
- #: classes/AuditLogGridView.php:470 classes/AuditLogListView.php:465
396
- msgid "Unregistered user"
397
  msgstr ""
398
 
399
- #: classes/AuditLogGridView.php:507 classes/AuditLogGridView.php:520
400
- #: classes/AuditLogListView.php:498 classes/AuditLogListView.php:511
401
- msgid "Show me all activity originating from this IP Address"
402
  msgstr ""
403
 
404
- #: classes/AuditLogGridView.php:549
405
- msgid "Date:"
406
  msgstr ""
407
 
408
- #: classes/AuditLogGridView.php:553
409
- msgid "Time:"
410
  msgstr ""
411
 
412
- #: classes/AuditLogGridView.php:557
413
- msgid "User:"
414
  msgstr ""
415
 
416
- #: classes/AuditLogGridView.php:561
417
- msgid "IP:"
418
  msgstr ""
419
 
420
- #: classes/AuditLogGridView.php:565
421
- msgid "Object:"
422
  msgstr ""
423
 
424
- #: classes/AuditLogGridView.php:569
425
- msgid "Event Type:"
426
  msgstr ""
427
 
428
- #: classes/AuditLogGridView.php:577 classes/AuditLogListView.php:540
429
- msgid "View all details of this change"
430
  msgstr ""
431
 
432
- #: classes/AuditLogGridView.php:578 classes/AuditLogListView.php:541
433
- msgid "Alert Data Inspector"
434
  msgstr ""
435
 
436
- #: classes/AuditLogGridView.php:738 classes/AuditLogListView.php:705
437
- msgid "Select All"
438
  msgstr ""
439
 
440
- #: classes/AuditLogListView.php:289 classes/AuditLogListView.php:321
441
- msgid "Date"
442
  msgstr ""
443
 
444
- #: classes/AuditLogListView.php:291 classes/AuditLogListView.php:327
445
- msgid "IP"
446
  msgstr ""
447
 
448
- #: classes/AuditLogListView.php:292 classes/AuditLogListView.php:333
449
- #: classes/WidgetManager.php:77
450
- msgid "Object"
451
  msgstr ""
452
 
453
- #: classes/AuditLogListView.php:293 classes/AuditLogListView.php:336
454
- #: classes/WidgetManager.php:78
455
- msgid "Event Type"
456
  msgstr ""
457
 
458
- #: classes/AuditLogListView.php:400
459
- msgid "Click to toggle."
460
  msgstr ""
461
 
462
- #: classes/AuditLogListView.php:405 classes/Models/Occurrence.php:83
463
- msgid "Alert message not found."
464
  msgstr ""
465
 
466
- #: classes/AuditLogListView.php:406 classes/Models/Occurrence.php:84
467
- msgid "Alert description not found."
468
  msgstr ""
469
 
470
- #: classes/Connector/MySQLDB.php:60
471
- msgid "Error establishing a database connection. DB username or password are not valid."
472
  msgstr ""
473
 
474
- #: classes/Connector/MySQLDB.php:68
475
- #, php-format
476
- msgid "Code %1$d: %2$s"
477
  msgstr ""
478
 
479
- #: classes/Connector/wp-db-custom.php:203
480
- msgid "Error establishing a database connection"
481
  msgstr ""
482
 
483
- #: classes/Connector/wp-db-custom.php:207
484
- #, php-format
485
- msgid "This either means that the username and password information in your %1$s file is incorrect or we can&#8217;t contact the database server at %2$s. This could mean your host&#8217;s database server is down."
486
  msgstr ""
487
 
488
- #: classes/Connector/wp-db-custom.php:213
489
- msgid "Are you sure you have the correct username and password?"
490
  msgstr ""
491
 
492
- #: classes/Connector/wp-db-custom.php:214
493
- msgid "Are you sure that you have typed the correct hostname?"
494
  msgstr ""
495
 
496
- #: classes/Connector/wp-db-custom.php:215
497
- msgid "Are you sure that the database server is running?"
498
  msgstr ""
499
 
500
- #: classes/Connector/wp-db-custom.php:220
501
- #, php-format
502
- msgid "If you&#8217;re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href=\"%s\">WordPress Support Forums</a>."
503
  msgstr ""
504
 
505
- #: classes/Connector/wp-db-custom.php:221
506
- msgid "https://wordpress.org/support/"
507
  msgstr ""
508
 
509
- #: classes/Connector/wp-db-custom.php:274
510
- msgid "Can&#8217;t select database"
511
  msgstr ""
512
 
513
- #: classes/Connector/wp-db-custom.php:278
514
- #, php-format
515
- msgid "We were able to connect to the database server (which means your username and password is okay) but not able to select the %s database."
516
  msgstr ""
517
 
518
- #: classes/Connector/wp-db-custom.php:283
519
- msgid "Are you sure it exists?"
520
  msgstr ""
521
 
522
- #: classes/Connector/wp-db-custom.php:287
523
- #, php-format
524
- msgid "Does the user %1$s have permission to use the %2$s database?"
525
  msgstr ""
526
 
527
- #: classes/Connector/wp-db-custom.php:294
528
- #, php-format
529
- msgid "On some systems the name of your database is prefixed with your username, so it would be like <code>username_%1$s</code>. Could that be the problem?"
530
  msgstr ""
531
 
532
- #: classes/Connector/wp-db-custom.php:302
533
- #, php-format
534
- msgid "If you don&#8217;t know how to set up a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href=\"%s\">WordPress Support Forums</a>."
535
  msgstr ""
536
 
537
- #: classes/Connector/wp-db-custom.php:303
538
- msgid "https://wordpress.org/support/forums/"
539
  msgstr ""
540
 
541
- #: classes/ConstantManager.php:158 classes/ConstantManager.php:164
542
- #: classes/Views/ToggleAlerts.php:430 classes/Views/ToggleAlerts.php:436
543
- msgid "Critical"
544
  msgstr ""
545
 
546
- #: classes/ConstantManager.php:160 classes/Views/ToggleAlerts.php:432
547
- msgid "Warning"
548
  msgstr ""
549
 
550
- #: classes/ConstantManager.php:162 classes/Views/ToggleAlerts.php:434
551
- #: classes/Views/ToggleAlerts.php:446
552
- msgid "Notification"
553
  msgstr ""
554
 
555
- #: classes/ConstantManager.php:166 classes/Views/ToggleAlerts.php:438
556
- msgid "High"
557
  msgstr ""
558
 
559
- #: classes/ConstantManager.php:168 classes/Views/ToggleAlerts.php:440
560
- msgid "Medium"
561
  msgstr ""
562
 
563
- #: classes/ConstantManager.php:170 classes/Views/ToggleAlerts.php:442
564
- msgid "Low"
565
  msgstr ""
566
 
567
- #: classes/ConstantManager.php:172 classes/Views/ToggleAlerts.php:444
568
- msgid "Informational"
569
  msgstr ""
570
 
571
- #: classes/Models/Occurrence.php:202
572
- msgid "WFCM"
573
  msgstr ""
574
 
575
- #: classes/Models/Occurrence.php:227
576
- #, php-format
577
- 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."
578
  msgstr ""
579
 
580
- #: classes/Sensors/Content.php:690
581
- msgid "Default template"
582
  msgstr ""
583
 
584
- #: classes/Sensors/Content.php:691
585
- msgid "Default"
586
  msgstr ""
587
 
588
- #: classes/Sensors/Content.php:733
589
- msgid "No previous image"
590
  msgstr ""
591
 
592
- #: classes/Sensors/Content.php:734
593
- msgid "No image"
594
  msgstr ""
595
 
596
- #: classes/Sensors/Content.php:1088 classes/Sensors/Content.php:1096
597
- msgid "Password Protected"
598
  msgstr ""
599
 
600
- #: classes/Sensors/Content.php:1090 classes/Sensors/Content.php:1098
601
- msgid "Private"
602
  msgstr ""
603
 
604
- #: classes/Sensors/Content.php:1092 classes/Sensors/Content.php:1100
605
- msgid "Public"
606
  msgstr ""
607
 
608
- #: classes/Sensors/Content.php:1263
609
- msgid "no tags"
610
  msgstr ""
611
 
612
- #: classes/Sensors/Multisite.php:80
613
- msgid "disabled"
614
  msgstr ""
615
 
616
- #: classes/Sensors/Multisite.php:81
617
- msgid "user accounts only"
618
  msgstr ""
619
 
620
- #: classes/Sensors/Multisite.php:82
621
- msgid "users can register new sites"
622
  msgstr ""
623
 
624
- #: classes/Sensors/Multisite.php:83
625
- msgid "sites & users can be registered"
626
  msgstr ""
627
 
628
- #: classes/Sensors/System.php:175 classes/Sensors/System.php:176
629
- msgid "latest posts"
630
  msgstr ""
631
 
632
- #: classes/Sensors/System.php:175 classes/Sensors/System.php:176
633
- msgid "static page"
634
  msgstr ""
635
 
636
- #: classes/Sensors/System.php:355
637
- msgid "automatically update to all new versions of WordPress"
638
  msgstr ""
639
 
640
- #: classes/Sensors/System.php:355
641
- msgid "automatically update maintenance and security releases only"
642
  msgstr ""
643
 
644
- #: classes/Settings.php:355
645
- msgid "This function is deprecated"
646
  msgstr ""
647
 
648
- #: classes/Settings.php:1628
649
- msgid "Root directory of WordPress (excluding sub directories)"
650
  msgstr ""
651
 
652
- #: classes/Settings.php:1629
653
- msgid "WP Admin directory (/wp-admin/)"
654
  msgstr ""
655
 
656
- #: classes/Settings.php:1630
657
- msgid "WP Includes directory (/wp-includes/)"
658
  msgstr ""
659
 
660
- #: classes/Settings.php:1631
661
- msgid "/wp-content/ directory (excluding plugins, themes & uploads directories)"
662
  msgstr ""
663
 
664
- #: classes/Settings.php:1632
665
- msgid "Themes directory (/wp-content/themes/)"
666
  msgstr ""
667
 
668
- #: classes/Settings.php:1633
669
- msgid "Plugins directory (/wp-content/plugins/)"
670
  msgstr ""
671
 
672
- #: classes/Settings.php:1634
673
- msgid "Uploads directory (/wp-content/uploads/)"
674
  msgstr ""
675
 
676
- #: classes/Settings.php:1639
677
- msgid "Uploads directory of all sub sites on this network (/wp-content/sites/*)"
678
  msgstr ""
679
 
680
- #: classes/ThirdPartyExtensions/BBPressExtension.php:29
681
- msgid "BBPress"
682
  msgstr ""
683
 
684
- #: classes/ThirdPartyExtensions/GravityFormsExtension.php:11
685
- #: classes/ThirdPartyExtensions/GravityFormsExtension.php:28
686
- msgid "Gravity Forms"
687
  msgstr ""
688
 
689
- #: classes/ThirdPartyExtensions/GravityFormsExtension.php:16
690
- msgid "Keep a record of when someone adds, modifies or deletes forms, entries and more in the Gravity Forms plugin."
691
  msgstr ""
692
 
693
- #: classes/ThirdPartyExtensions/WPFormsExtension.php:29
694
- msgid "WPForms"
695
  msgstr ""
696
 
697
- #: classes/ThirdPartyExtensions/WooCommerceExtension.php:34
698
- #: classes/Views/ToggleAlerts.php:310
699
- msgid "WooCommerce"
700
  msgstr ""
701
 
702
- #: classes/ThirdPartyExtensions/YoastSeoExtension.php:29
703
- msgid "Yoast SEO"
704
  msgstr ""
705
 
706
- #: classes/Utilities/Emailer.php:54
707
- #, php-format
708
- msgid "WP Activity Log plugin disabled on %s"
709
  msgstr ""
710
 
711
- #: classes/Utilities/Emailer.php:57
712
- msgid "Hello admin,"
713
  msgstr ""
714
 
715
- #: classes/Utilities/Emailer.php:62
716
- #, php-format
717
- 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."
718
  msgstr ""
719
 
720
- #: classes/Utilities/PluginInstallAndActivate.php:82
721
- 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."
722
  msgstr ""
723
 
724
- #: classes/Utilities/PluginInstallAndActivate.php:101
725
- #: classes/Views/SetupWizard.php:829
726
- msgid "Extension for "
727
  msgstr ""
728
 
729
- #: classes/Utilities/PluginInstallAndActivate.php:106
730
- #: classes/Views/SetupWizard.php:834
731
- msgid "Extension installed, activate now?"
732
  msgstr ""
733
 
734
- #: classes/Utilities/PluginInstallAndActivate.php:108
735
- #: classes/Views/SetupWizard.php:272 classes/Views/SetupWizard.php:836
736
- #: wp-security-audit-log.php:1289
737
- msgid "Extension installed"
738
  msgstr ""
739
 
740
- #: classes/Utilities/PluginInstallAndActivate.php:110
741
- #: classes/Views/SetupWizard.php:838
742
- msgid "Install Extension"
743
  msgstr ""
744
 
745
- #: classes/Utilities/PluginInstallerAction.php:82
746
- msgid "Tried to install a zip or slug that was not in the allowed list"
747
  msgstr ""
748
 
749
- #: classes/ViewManager.php:141
750
- msgid "WP Activity Log requires Website File Changes Monitor 1.6.0. Please upgrade that plugin."
751
  msgstr ""
752
 
753
- #: classes/ViewManager.php:283
754
- msgid "Free Premium Trial"
755
  msgstr ""
756
 
757
- #: classes/Views/AuditLog.php:98
758
- msgid "Get instantly alerted of critical changes via SMS & email, search the activity log, generate user reports, see who is logged in and more!"
759
  msgstr ""
760
 
761
- #: classes/Views/AuditLog.php:99
762
- msgid "Upgrade to premium to unlock these powerful activity log features & more!"
763
  msgstr ""
764
 
765
- #: classes/Views/AuditLog.php:102
766
- msgid "Instant SMS & email alerts, search & filters, reports, users sessions management and much more!"
767
  msgstr ""
768
 
769
- #: classes/Views/AuditLog.php:103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
770
  msgid "Upgrade to premium to get more out of your activity logs!"
771
  msgstr ""
772
 
773
- #: classes/Views/AuditLog.php:106
774
- msgid "See who logged in on your site in real-time, generate reports, get SMS & email alerts of critical changes and more!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
775
  msgstr ""
776
 
777
- #: classes/Views/AuditLog.php:107
778
- msgid "Unlock these and other powerful features with WP Activity Log Premium."
779
  msgstr ""
780
 
781
- #: classes/Views/AuditLog.php:185
782
- msgid "UPGRADE NOW"
783
  msgstr ""
784
 
785
- #: classes/Views/AuditLog.php:186
786
- msgid "Start Free Trial"
787
  msgstr ""
788
 
789
- #: classes/Views/AuditLog.php:187
790
- msgid "Tell me more"
791
  msgstr ""
792
 
793
- #: classes/Views/AuditLog.php:189
794
- msgid "Dismiss the banner"
795
  msgstr ""
796
 
797
- #: classes/Views/AuditLog.php:189
798
- msgid "Close"
799
  msgstr ""
800
 
801
- #: classes/Views/AuditLog.php:214
802
- msgid "There are connectivity issues with the database where the WordPress activity log is stored. The logs will be temporary buffered in the WordPress database until the connection is fully restored."
803
  msgstr ""
804
 
805
- #: classes/Views/AuditLog.php:232
806
- msgid "Help WP Activity Log improve."
807
  msgstr ""
808
 
809
- #: classes/Views/AuditLog.php:233
810
- msgid "Gathering non-sensitive diagnostic data about the plugin install helps us improve the plugin. When you opt-in, you also subscribe to our announcements (you can opt-out at any time). If you would rather opt-out, we will not collect any data."
811
  msgstr ""
812
 
813
- #: classes/Views/AuditLog.php:233
814
- msgid "Read more about what we collect."
815
  msgstr ""
816
 
817
- #: classes/Views/AuditLog.php:235
818
- msgid "Sure, opt-in"
819
  msgstr ""
820
 
821
- #: classes/Views/AuditLog.php:236
822
- msgid "No, thank you"
823
  msgstr ""
824
 
825
- #: classes/Views/AuditLog.php:289
826
- msgid "We noticed you have"
827
  msgstr ""
828
 
829
- #: classes/Views/AuditLog.php:291
830
- msgid "installed."
831
  msgstr ""
832
 
833
- #: classes/Views/AuditLog.php:293
834
- msgid "Install extension"
835
  msgstr ""
836
 
837
- #: classes/Views/AuditLog.php:356 classes/Views/Settings.php:92
838
- msgid "Activity Log Viewer"
839
  msgstr ""
840
 
841
- #: classes/Views/AuditLog.php:383
842
- msgid "Log Viewer"
843
  msgstr ""
844
 
845
- #: classes/Views/AuditLog.php:540 classes/Views/Settings.php:326
846
- #: classes/Views/ToggleAlerts.php:109
847
- msgid "You do not have sufficient permissions to access this page."
848
  msgstr ""
849
 
850
- #: classes/Views/AuditLog.php:589
851
- msgid "Thank you for installing WP Activity Log. Do you want to run the wizard to configure the basic plugin settings?"
852
  msgstr ""
853
 
854
- #: classes/Views/AuditLog.php:591 classes/Views/Settings.php:531
855
- #: classes/Views/Settings.php:558 classes/Views/Settings.php:624
856
- #: classes/Views/Settings.php:682 classes/Views/Settings.php:1126
857
- #: classes/Views/Settings.php:1387 classes/Views/Settings.php:1428
858
- #: classes/Views/Settings.php:1449 classes/Views/Settings.php:1459
859
- #: classes/Views/SetupWizard.php:562
860
- msgid "Yes"
861
  msgstr ""
862
 
863
- #: classes/Views/AuditLog.php:592 classes/Views/Settings.php:536
864
- #: classes/Views/Settings.php:563 classes/Views/Settings.php:654
865
- #: classes/Views/Settings.php:692 classes/Views/Settings.php:1131
866
- #: classes/Views/Settings.php:1394 classes/Views/Settings.php:1435
867
- #: classes/Views/Settings.php:1450 classes/Views/Settings.php:1460
868
- #: classes/Views/SetupWizard.php:567
869
- msgid "No"
870
  msgstr ""
871
 
872
- #: classes/Views/AuditLog.php:623
873
- msgid "Please enter the number of alerts you would like to see on one page:"
874
  msgstr ""
875
 
876
- #: classes/Views/AuditLog.php:625
877
- msgid "No Results"
878
  msgstr ""
879
 
880
- #: classes/Views/AuditLog.php:795 classes/Views/AuditLog.php:838
881
- #: classes/Views/AuditLog.php:1108 classes/Views/AuditLog.php:1170
882
- #: classes/Views/AuditLog.php:1223 classes/Views/Settings.php:235
883
- #: classes/Views/Settings.php:1602 classes/Views/Settings.php:1630
884
- #: classes/Views/Settings.php:1660 classes/Views/SetupWizard.php:96
885
- msgid "Nonce verification failed."
886
  msgstr ""
887
 
888
- #: classes/Views/AuditLog.php:813
889
- msgid "No users found."
890
  msgstr ""
891
 
892
- #: classes/Views/AuditLog.php:878
893
- msgid "Freemius opt choice selected."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
894
  msgstr ""
895
 
896
- #: classes/Views/AuditLog.php:885
897
- msgid "Freemius opt choice not found."
898
  msgstr ""
899
 
900
- #: classes/Views/AuditLog.php:973
901
- #, php-format
902
- msgid "<br>An error occurred when trying to install and activate the plugin. Please try install it again from the %1$sevent settings%2$s page."
903
  msgstr ""
904
 
905
- #: classes/Views/AuditLog.php:1072
906
- msgid "WordPress Activity Log"
907
  msgstr ""
908
 
909
- #: classes/Views/AuditLog.php:1073
910
- msgid "When a user makes a change on your website the plugin will keep a record of that event here. Right now there is nothing because this is a new install."
911
  msgstr ""
912
 
913
- #: classes/Views/AuditLog.php:1074
914
- msgid "Thank you for using WP Activity Log"
915
  msgstr ""
916
 
917
- #: classes/Views/AuditLog.php:1097 classes/Views/AuditLog.php:1207
918
- msgid "You do not have sufficient permissions to dismiss this notice."
919
  msgstr ""
920
 
921
- #: classes/Views/AuditLog.php:1165
922
- msgid "Access Denied"
923
  msgstr ""
924
 
925
- #: classes/Views/EmailNotifications.php:28
926
- msgid "Notifications Extension"
927
  msgstr ""
928
 
929
- #: classes/Views/EmailNotifications.php:35
930
- msgid "Notifications &#8682;"
931
  msgstr ""
932
 
933
- #: classes/Views/EmailNotifications.php:49
934
- msgid "SMS & Email Notifications"
935
  msgstr ""
936
 
937
- #: classes/Views/EmailNotifications.php:50
938
- msgid "Get instantly alerted of important changes on your site via SMS and email notifications. Upgrade to premium and:"
939
  msgstr ""
940
 
941
- #: classes/Views/EmailNotifications.php:53
942
- msgid "Configure any type of SMS & email notifications"
943
  msgstr ""
944
 
945
- #: classes/Views/EmailNotifications.php:54
946
- msgid "Receive notifications for when users login, change their password or change content"
947
  msgstr ""
948
 
949
- #: classes/Views/EmailNotifications.php:55
950
- msgid "Get alerted of site changes like plugin installs, theme changes etc"
951
  msgstr ""
952
 
953
- #: classes/Views/EmailNotifications.php:56
954
- msgid "Enable built-in security email notifications of suspicious user activity"
955
  msgstr ""
956
 
957
- #: classes/Views/EmailNotifications.php:57
958
- msgid "Personalize all email and SMS templates"
959
  msgstr ""
960
 
961
- #: classes/Views/EmailNotifications.php:58
962
- msgid "Use the trigger builder to configure any type of notification criteria!"
963
  msgstr ""
964
 
965
- #: classes/Views/EmailNotifications.php:60
966
- msgid "Getting started is really easy. You can use one of the plugin’s built-in notifications or create your own using the easy to use trigger builder."
967
  msgstr ""
968
 
969
- #: classes/Views/EmailNotifications.php:63
970
- msgid "Email and SMS notifications instantly alert you of important changes on your WordPress site."
971
  msgstr ""
972
 
973
- #: classes/Views/EmailNotifications.php:67
974
- msgid "Easily enable any of the built-in security and user management notifications."
975
  msgstr ""
976
 
977
- #: classes/Views/EmailNotifications.php:71
978
- msgid "Use the trigger builder to configure any type of email and SMS notification to get instantly alerted of site changes that are important to you and your business."
979
  msgstr ""
980
 
981
- #: classes/Views/EmailNotifications.php:75
982
- msgid "All email and SMS templates are configurable, allowing you to personalize them."
983
  msgstr ""
984
 
985
- #: classes/Views/ExternalDB.php:28
986
- msgid "External DB Extension"
987
  msgstr ""
988
 
989
- #: classes/Views/ExternalDB.php:35
990
- msgid "DB & Integrations &#8682;"
991
  msgstr ""
992
 
993
- #: classes/Views/ExternalDB.php:49
994
- msgid "Activity log database & integration tools"
995
  msgstr ""
996
 
997
- #: classes/Views/ExternalDB.php:50
998
- msgid "There are several benefits to segregating the logs from the main site database, and to be able to mirror the logs to third party and centralized business solutions. Upgrade to premium and:"
999
  msgstr ""
1000
 
1001
- #: classes/Views/ExternalDB.php:53
1002
- msgid "Store the audit logs of your sites on an external database"
1003
  msgstr ""
1004
 
1005
- #: classes/Views/ExternalDB.php:54
1006
- msgid "Configuring archiving and store older log data in a segregated database"
1007
  msgstr ""
1008
 
1009
- #: classes/Views/ExternalDB.php:55
1010
- msgid "Mirror the logs to syslog, Slack, Papertrail and central business communication services"
1011
  msgstr ""
1012
 
1013
- #: classes/Views/ExternalDB.php:56
1014
- msgid "Configure filters to filter what is mirrored and archived in the databases and services"
1015
  msgstr ""
1016
 
1017
- #: classes/Views/ExternalDB.php:61
1018
- msgid "Easily configure integration and database connections thanks to a user friendly wizard."
1019
  msgstr ""
1020
 
1021
- #: classes/Views/ExternalDB.php:65
1022
- msgid "Configure activity log filters for third party services connections."
1023
  msgstr ""
1024
 
1025
- #: classes/Views/ExternalDB.php:69
1026
- msgid "Configure an unlimited number of connections to different databases and third party services."
1027
  msgstr ""
1028
 
1029
- #: classes/Views/Help.php:62 classes/Views/Help.php:113
1030
- msgid "Help"
1031
  msgstr ""
1032
 
1033
- #: classes/Views/Help.php:71 classes/Views/Help.php:242
1034
- msgid "Contact Us"
1035
  msgstr ""
1036
 
1037
- #: classes/Views/Help.php:77 classes/Views/Help.php:264
1038
- msgid "System Info"
1039
  msgstr ""
1040
 
1041
- #: classes/Views/Help.php:127
1042
- msgid "Help & Contact Us"
1043
  msgstr ""
1044
 
1045
- #: classes/Views/Help.php:187
1046
- msgid "Getting Started"
1047
  msgstr ""
1048
 
1049
- #: classes/Views/Help.php:188
1050
- 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."
1051
  msgstr ""
1052
 
1053
- #: classes/Views/Help.php:192
1054
- msgid "Plugin Support"
1055
  msgstr ""
1056
 
1057
- #: classes/Views/Help.php:194
1058
- msgid "Have you encountered or noticed any issues while using WP Activity Log plugin?"
1059
  msgstr ""
1060
 
1061
- #: classes/Views/Help.php:195
1062
- 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."
1063
  msgstr ""
1064
 
1065
- #: classes/Views/Help.php:197
1066
- msgid "Free Support Forum"
1067
  msgstr ""
1068
 
1069
- #: classes/Views/Help.php:199
1070
- msgid "Free Support Email"
1071
  msgstr ""
1072
 
1073
- #: classes/Views/Help.php:203
1074
- msgid "Plugin Documentation"
1075
  msgstr ""
1076
 
1077
- #: classes/Views/Help.php:205
1078
- msgid "For more technical information about the WP Activity Log plugin please visit the plugin’s knowledge base."
1079
  msgstr ""
1080
 
1081
- #: classes/Views/Help.php:206
1082
- 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."
1083
  msgstr ""
1084
 
1085
- #: classes/Views/Help.php:208
1086
- msgid "Plugin Website"
1087
  msgstr ""
1088
 
1089
- #: classes/Views/Help.php:210
1090
- msgid "Knowledge Base"
1091
  msgstr ""
1092
 
1093
- #: classes/Views/Help.php:212
1094
- msgid "List of activity logs event IDs"
1095
  msgstr ""
1096
 
1097
- #: classes/Views/Help.php:216
1098
- msgid "Rate WP Activity Log"
1099
  msgstr ""
1100
 
1101
- #: classes/Views/Help.php:218
1102
- 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."
1103
  msgstr ""
1104
 
1105
- #: classes/Views/Help.php:219
1106
- 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."
1107
  msgstr ""
1108
 
1109
- #: classes/Views/Help.php:220
1110
- 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."
1111
  msgstr ""
1112
 
1113
- #: classes/Views/Help.php:221
1114
- msgid "We appreciate every star!"
1115
  msgstr ""
1116
 
1117
- #: classes/Views/Help.php:231
1118
- msgid "Rate Plugin"
1119
  msgstr ""
1120
 
1121
- #: classes/Views/Help.php:282
1122
- msgid "Enforce strong password policies on WordPress"
1123
  msgstr ""
1124
 
1125
- #: classes/Views/Help.php:288
1126
- msgid "Automatically identify unauthorized file changes on WordPress"
1127
  msgstr ""
1128
 
1129
- #: classes/Views/Help.php:294
1130
- msgid "Add an extra layer of security to your login pages with 2FA & require your users to use it."
1131
  msgstr ""
1132
 
1133
- #: classes/Views/Help.php:300
1134
- msgid "See the child sites activity logs from the central MainWP dashboard"
1135
  msgstr ""
1136
 
1137
- #: classes/Views/Help.php:306
1138
- msgid "Our other WordPress plugins"
1139
  msgstr ""
1140
 
1141
- #: classes/Views/Help.php:317
1142
- msgid "LEARN MORE"
1143
  msgstr ""
1144
 
1145
- #: classes/Views/LogInUsers.php:28
1146
- msgid "User Sessions Management Extension"
1147
  msgstr ""
1148
 
1149
- #: classes/Views/LogInUsers.php:35
1150
- msgid "Logged In Users &#8682;"
1151
  msgstr ""
1152
 
1153
- #: classes/Views/LogInUsers.php:49
1154
- msgid "Real-Time Users Sessions Management"
1155
  msgstr ""
1156
 
1157
- #: classes/Views/LogInUsers.php:50
1158
- msgid "Better manage your users’ logins and sessions. Upgrade to premium and:"
1159
  msgstr ""
1160
 
1161
- #: classes/Views/LogInUsers.php:54
1162
- msgid "See who is logged in to your site"
1163
  msgstr ""
1164
 
1165
- #: classes/Views/LogInUsers.php:55
1166
- msgid "When they logged in and from where"
1167
  msgstr ""
1168
 
1169
- #: classes/Views/LogInUsers.php:56
1170
- msgid "The last change they have done in real-time"
1171
  msgstr ""
1172
 
1173
- #: classes/Views/LogInUsers.php:57
1174
- msgid "Terminate any users’ session with a click of a button"
1175
  msgstr ""
1176
 
1177
- #: classes/Views/LogInUsers.php:58
1178
- msgid "Limit or block multiple sessions for the same user"
1179
  msgstr ""
1180
 
1181
- #: classes/Views/LogInUsers.php:59
1182
- msgid "Get alerted of multiple same user sessions"
1183
  msgstr ""
1184
 
1185
- #: classes/Views/LogInUsers.php:63
1186
- msgid "See who is logged in to your WordPress site and multisite network in real-time."
1187
  msgstr ""
1188
 
1189
- #: classes/Views/LogInUsers.php:67
1190
- msgid "Limit, manage and block multiple same user sessions easily."
1191
  msgstr ""
1192
 
1193
- #: classes/Views/Reports.php:28
1194
- msgid "Reports Extension"
1195
  msgstr ""
1196
 
1197
- #: classes/Views/Reports.php:35
1198
- msgid "Reports &#8682;"
1199
  msgstr ""
1200
 
1201
- #: classes/Views/Reports.php:49
1202
- msgid "Individual, Scheduled & Automated Reports"
1203
  msgstr ""
1204
 
1205
- #: classes/Views/Reports.php:50
1206
- msgid "Many are not fans of reports, however reports are vital in business. With them you can make informed decisions that allow you to improve user productivity and the business. Upgrade to Premium so you can:"
1207
  msgstr ""
1208
 
1209
- #: classes/Views/Reports.php:53
1210
- msgid "Generate any type of user and site (in multisite) activity report"
1211
  msgstr ""
1212
 
1213
- #: classes/Views/Reports.php:54
1214
- msgid "Automate and schedule daily, weekly, monthly and quarterly reports"
1215
  msgstr ""
1216
 
1217
- #: classes/Views/Reports.php:55
1218
- msgid "Received reports automatically via email"
1219
  msgstr ""
1220
 
1221
- #: classes/Views/Reports.php:56
1222
- msgid "Create statistics reports about users’ views, logins, activity from IP addresses & more"
1223
  msgstr ""
1224
 
1225
- #: classes/Views/Reports.php:58
1226
- msgid "Reports are vital to the success of your business and management of your site."
1227
  msgstr ""
1228
 
1229
- #: classes/Views/Reports.php:61
1230
- msgid "Generate a HTML or CSV report."
1231
  msgstr ""
1232
 
1233
- #: classes/Views/Reports.php:65
1234
- msgid "Easily configure a criteria for your reports."
1235
  msgstr ""
1236
 
1237
- #: classes/Views/Reports.php:69
1238
- msgid "Schedule reports that are sent to you by email automatically."
1239
  msgstr ""
1240
 
1241
- #: classes/Views/Search.php:28
1242
- msgid "Search Extension"
1243
  msgstr ""
1244
 
1245
- #: classes/Views/Search.php:35
1246
- msgid "Search &#8682;"
1247
  msgstr ""
1248
 
1249
- #: classes/Views/Search.php:49
1250
- msgid "Search & Filters for the Activity Log"
1251
  msgstr ""
1252
 
1253
- #: classes/Views/Search.php:50
1254
- msgid "You can find all the information you want in the activity log, if you know what you are looking for and have the right tools. Upgrade to premium so you can:"
1255
  msgstr ""
1256
 
1257
- #: classes/Views/Search.php:53
1258
- msgid "Do text searches and use filters to fine tune the search results"
1259
  msgstr ""
1260
 
1261
- #: classes/Views/Search.php:54
1262
- msgid "Easily find when and who did a specific change on your site"
1263
  msgstr ""
1264
 
1265
- #: classes/Views/Search.php:55
1266
- msgid "Easily identify and track back suspicious user behaviour"
1267
  msgstr ""
1268
 
1269
- #: classes/Views/Search.php:56
1270
- msgid "Search for the cause of a problem and ease troubleshooting"
1271
  msgstr ""
1272
 
1273
- #: classes/Views/Search.php:57
1274
- msgid "Save search terms and filters for future use and improved productivity"
1275
  msgstr ""
1276
 
1277
- #: classes/Views/Search.php:62
1278
- msgid "Use the text search to find a specific change."
1279
  msgstr ""
1280
 
1281
- #: classes/Views/Search.php:66
1282
- msgid "Configure any filter you need to fine tune the search results and find what you are looking for with much less effort."
1283
  msgstr ""
1284
 
1285
- #: classes/Views/Search.php:70
1286
- msgid "Save search terms and filters to run the searches again in the future with just a single click."
1287
  msgstr ""
1288
 
1289
- #: classes/Views/Settings.php:85
1290
- msgid "General"
1291
  msgstr ""
1292
 
1293
- #: classes/Views/Settings.php:99 classes/Views/ToggleAlerts.php:422
1294
- #: defaults.php:2947
1295
- msgid "File Changes"
1296
  msgstr ""
1297
 
1298
- #: classes/Views/Settings.php:105
1299
- msgid "Exclude Objects"
1300
  msgstr ""
1301
 
1302
- #: classes/Views/Settings.php:112
1303
- msgid "Advanced Settings"
1304
  msgstr ""
1305
 
1306
- #: classes/Views/Settings.php:161 classes/Views/Settings.php:175
1307
- msgid "Settings"
1308
  msgstr ""
1309
 
1310
- #: classes/Views/Settings.php:202
1311
- msgid "Current user is not allowed to save settings."
1312
  msgstr ""
1313
 
1314
- #: classes/Views/Settings.php:208
1315
- msgid "Unknown settings tab."
1316
  msgstr ""
1317
 
1318
- #: classes/Views/Settings.php:220 classes/Views/Settings.php:1690
1319
- #: classes/Views/Settings.php:1713 classes/Views/SetupWizard.php:83
1320
- msgid "Access Denied."
1321
  msgstr ""
1322
 
1323
- #: classes/Views/Settings.php:245 classes/Views/SetupWizard.php:106
1324
- msgid "Invalid input."
1325
  msgstr ""
1326
 
1327
- #: classes/Views/Settings.php:338
1328
- msgid "Message sent successfully."
1329
  msgstr ""
1330
 
1331
- #: classes/Views/Settings.php:342 classes/Views/ToggleAlerts.php:126
1332
- msgid "Settings have been saved."
1333
  msgstr ""
1334
 
1335
- #: classes/Views/Settings.php:348 classes/Views/ToggleAlerts.php:132
1336
- msgid "Error: "
1337
  msgstr ""
1338
 
1339
- #: classes/Views/Settings.php:360
1340
- msgid "Old data successfully purged."
1341
  msgstr ""
1342
 
1343
- #: classes/Views/Settings.php:366
1344
- msgid "No data is old enough to be purged."
1345
  msgstr ""
1346
 
1347
- #: classes/Views/Settings.php:397
1348
- msgid "Send Message"
1349
  msgstr ""
1350
 
1351
- #: classes/Views/Settings.php:452
1352
- msgid "Use infinite scroll or pagination for the event viewer?"
1353
  msgstr ""
1354
 
1355
- #: classes/Views/Settings.php:457
1356
- #, php-format
1357
- msgid "When using infinite scroll the event viewer and search results %s load up much faster and require less resources."
1358
  msgstr ""
1359
 
1360
- #: classes/Views/Settings.php:458
1361
- msgid "(Premium feature)"
1362
  msgstr ""
1363
 
1364
- #: classes/Views/Settings.php:465
1365
- msgid "Select event viewer view type:"
1366
  msgstr ""
1367
 
1368
- #: classes/Views/Settings.php:470
1369
- msgid "Infinite Scroll (Recommended)"
1370
  msgstr ""
1371
 
1372
- #: classes/Views/Settings.php:475
1373
- msgid "Pagination"
1374
  msgstr ""
1375
 
1376
- #: classes/Views/Settings.php:486
1377
- msgid "Do you want the activity log viewer to auto refresh?"
1378
  msgstr ""
1379
 
1380
- #: classes/Views/Settings.php:487
1381
- msgid "The activity log viewer auto refreshes every 30 seconds when opened so you can see the latest events as they happen almost in real time."
1382
  msgstr ""
1383
 
1384
- #: classes/Views/Settings.php:491
1385
- msgid "Refresh activity log viewer"
1386
  msgstr ""
1387
 
1388
- #: classes/Views/Settings.php:497
1389
- msgid "Auto refresh"
1390
  msgstr ""
1391
 
1392
- #: classes/Views/Settings.php:502
1393
- msgid "Do not auto refresh"
1394
  msgstr ""
1395
 
1396
- #: classes/Views/Settings.php:512
1397
- msgid "Display latest events widget in Dashboard & Admin bar"
1398
  msgstr ""
1399
 
1400
- #: classes/Views/Settings.php:517
1401
- #, php-format
1402
- msgid "The events widget displays the latest %d security events in the dashboard and the admin bar notification displays the latest event."
1403
  msgstr ""
1404
 
1405
- #: classes/Views/Settings.php:525
1406
- msgid "Dashboard Widget"
1407
  msgstr ""
1408
 
1409
- #: classes/Views/Settings.php:546
1410
- msgid "Admin Bar Notification"
1411
  msgstr ""
1412
 
1413
- #: classes/Views/Settings.php:549
1414
- msgid "Admin Bar Notification (Premium)"
1415
  msgstr ""
1416
 
1417
- #: classes/Views/Settings.php:573
1418
- msgid "Admin Bar Notification Updates"
1419
  msgstr ""
1420
 
1421
- #: classes/Views/Settings.php:576
1422
- msgid "Admin Bar Notification Updates (Premium)"
1423
  msgstr ""
1424
 
1425
- #: classes/Views/Settings.php:585
1426
- msgid "Update in near real time"
1427
  msgstr ""
1428
 
1429
- #: classes/Views/Settings.php:590
1430
- msgid "Update only on page refreshes"
1431
  msgstr ""
1432
 
1433
- #: classes/Views/Settings.php:600
1434
- msgid "Add user notification on the WordPress login page"
1435
  msgstr ""
1436
 
1437
- #: classes/Views/Settings.php:601
1438
- msgid "Many compliance regulations (such as the GDPR) require website administrators to tell the users of their website that all the changes they do when logged in are being logged."
1439
  msgstr ""
1440
 
1441
- #: classes/Views/Settings.php:605
1442
- msgid "Login Page Notification"
1443
  msgstr ""
1444
 
1445
- #: classes/Views/Settings.php:630
1446
- 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/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=settings+pages\" target=\"_blank\">WP Activity Log plugin</a>. The audit log also includes the IP address where you accessed this site from."
1447
  msgstr ""
1448
 
1449
- #: classes/Views/Settings.php:648
1450
- msgid "<strong>Note: </strong>"
1451
  msgstr ""
1452
 
1453
- #: classes/Views/Settings.php:648
1454
- msgid "The only HTML code allowed in the login page notification is for links ( < a href >< /a > )."
1455
  msgstr ""
1456
 
1457
- #: classes/Views/Settings.php:664
1458
- msgid "Is your website running behind a firewall or reverse proxy?"
1459
  msgstr ""
1460
 
1461
- #: classes/Views/Settings.php:669
1462
- #, php-format
1463
- msgid "If your website is running behind a firewall set this option to yes so the plugin retrieves the end user’s IP address from the proxy header - %s."
1464
  msgstr ""
1465
 
1466
- #: classes/Views/Settings.php:670 classes/Views/Settings.php:716
1467
- #: classes/Views/Settings.php:771
1468
- msgid "learn more"
1469
  msgstr ""
1470
 
1471
- #: classes/Views/Settings.php:677
1472
- msgid "Reverse Proxy / Firewall Options"
1473
  msgstr ""
1474
 
1475
- #: classes/Views/Settings.php:687
1476
- msgid "Filter internal IP addresses from the proxy headers. Enable this option only if you are\tare still seeing the internal IP addresses of the firewall or proxy."
1477
  msgstr ""
1478
 
1479
- #: classes/Views/Settings.php:703
1480
- msgid "Who can change the plugin settings?"
1481
  msgstr ""
1482
 
1483
- #: classes/Views/Settings.php:715
1484
- #, php-format
1485
- msgid "By default only users with administrator role (single site) and super administrator role (multisite) can change the settings of the plugin. Though you can restrict the privileges to just your user - %s."
1486
  msgstr ""
1487
 
1488
- #: classes/Views/Settings.php:726
1489
- msgid "Restrict plugin access"
1490
  msgstr ""
1491
 
1492
- #: classes/Views/Settings.php:731 classes/Views/Settings.php:786
1493
- msgid "Only me"
1494
  msgstr ""
1495
 
1496
- #: classes/Views/Settings.php:738
1497
- msgid "All superadmins"
1498
  msgstr ""
1499
 
1500
- #: classes/Views/Settings.php:740
1501
- msgid "All administrators"
1502
  msgstr ""
1503
 
1504
- #: classes/Views/Settings.php:753
1505
- msgid "Allow other users to view the activity log"
1506
  msgstr ""
1507
 
1508
- #: classes/Views/Settings.php:765
1509
- msgid "By default only super administrators and the child sites' administrators can view the WordPress activity log. Though you can change this by using the setting below."
1510
  msgstr ""
1511
 
1512
- #: classes/Views/Settings.php:767
1513
- msgid "By default only users with administrator role can view the WordPress activity log. To allow someone who does not have an admin role to view the activity log, specify them in the below setting."
1514
  msgstr ""
1515
 
1516
- #: classes/Views/Settings.php:780 classes/Views/Settings.php:810
1517
- msgid "Can view events"
1518
  msgstr ""
1519
 
1520
- #: classes/Views/Settings.php:787
1521
- msgid "Super administators only"
 
1522
  msgstr ""
1523
 
1524
- #: classes/Views/Settings.php:788
1525
- msgid "Super administators and site administrators"
1526
  msgstr ""
1527
 
1528
- #: classes/Views/Settings.php:804
1529
- msgid "To allow someone who does not have an admin role to view the activity log, specify them in the below setting."
1530
  msgstr ""
1531
 
1532
- #: classes/Views/Settings.php:810
1533
- msgid "Can also view events"
1534
  msgstr ""
1535
 
1536
- #: classes/Views/Settings.php:819
1537
- msgid "Specify the username or the users which do not have an admin role but can also see the WordPress activity role. You can also specify roles."
1538
  msgstr ""
1539
 
1540
- #: classes/Views/Settings.php:845
1541
- msgid "Which email address should the plugin use as a from address?"
1542
  msgstr ""
1543
 
1544
- #: classes/Views/Settings.php:846
1545
- msgid "By default when the plugin sends an email notification it uses the email address specified in this website’s general settings. Though you can change the email address and display name from this section."
1546
  msgstr ""
1547
 
1548
- #: classes/Views/Settings.php:850
1549
- msgid "From Email & Name"
1550
  msgstr ""
1551
 
1552
- #: classes/Views/Settings.php:856
1553
- msgid "Use the email address from the WordPress general settings"
1554
  msgstr ""
1555
 
1556
- #: classes/Views/Settings.php:861
1557
- msgid "Use another email address"
1558
  msgstr ""
1559
 
1560
- #: classes/Views/Settings.php:865
1561
- msgid "Email Address"
1562
  msgstr ""
1563
 
1564
- #: classes/Views/Settings.php:870
1565
- msgid "Display Name"
1566
  msgstr ""
1567
 
1568
- #: classes/Views/Settings.php:881
1569
- msgid "Do you want to hide the plugin from the list of installed plugins?"
1570
  msgstr ""
1571
 
1572
- #: classes/Views/Settings.php:882
1573
- 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."
1574
  msgstr ""
1575
 
1576
- #: classes/Views/Settings.php:886
1577
- msgid "Hide Plugin in Plugins Page"
1578
  msgstr ""
1579
 
1580
- #: classes/Views/Settings.php:891
1581
- msgid "Yes, hide the plugin from the list of installed plugins"
1582
  msgstr ""
1583
 
1584
- #: classes/Views/Settings.php:896
1585
- msgid "No, do not hide the plugin"
1586
  msgstr ""
1587
 
1588
- #: classes/Views/Settings.php:962
1589
- msgid "For how long do you want to keep the activity log events (Retention settings) ?"
1590
  msgstr ""
1591
 
1592
- #: classes/Views/Settings.php:965
1593
- msgid "The plugin uses an efficient way to store the activity log data in the WordPress database, though the more data you keep the more disk space will be required. "
1594
  msgstr ""
1595
 
1596
- #: classes/Views/Settings.php:966
1597
- msgid "<a href=\"https://wpactivitylog.com/pricing/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=settings+pages\" target=\"_blank\">Upgrade to Premium</a> to store the activity log data in an external database."
1598
  msgstr ""
1599
 
1600
- #: classes/Views/Settings.php:980
1601
- #, php-format
1602
- msgid "Retention settings moved to %1$s archiving settings %2$s because archiving is enabled"
1603
  msgstr ""
1604
 
1605
- #: classes/Views/Settings.php:988
1606
- msgid "What timestamp you would like to see in the WordPress activity log?"
1607
  msgstr ""
1608
 
1609
- #: classes/Views/Settings.php:989
1610
- msgid "Note that the WordPress' timezone might be different from that configured on the server so when you switch from UTC to WordPress timezone or vice versa you might notice a big difference."
1611
  msgstr ""
1612
 
1613
- #: classes/Views/Settings.php:993
1614
- msgid "Events Timestamp"
1615
  msgstr ""
1616
 
1617
- #: classes/Views/Settings.php:1013
1618
- msgid "UTC"
1619
  msgstr ""
1620
 
1621
- #: classes/Views/Settings.php:1019
1622
- msgid "Timezone configured on this WordPress website"
1623
  msgstr ""
1624
 
1625
- #: classes/Views/Settings.php:1026
1626
- msgid "Show Milliseconds"
1627
  msgstr ""
1628
 
1629
- #: classes/Views/Settings.php:1033
1630
- msgid "Show Milliseconds in list view"
1631
  msgstr ""
1632
 
1633
- #: classes/Views/Settings.php:1043
1634
- msgid "What user information should be displayed in the WordPress activity log?"
1635
  msgstr ""
1636
 
1637
- #: classes/Views/Settings.php:1044
1638
- msgid "Usernames might not be the same as a user's first and last name so it can be difficult to recognize whose user was that did a change. When there is no first & last name or public display name configured the plugin will revert back to the WordPress username."
1639
  msgstr ""
1640
 
1641
- #: classes/Views/Settings.php:1048
1642
- msgid "User information in Activity log"
1643
  msgstr ""
1644
 
1645
- #: classes/Views/Settings.php:1054
1646
- msgid "WordPress username"
1647
  msgstr ""
1648
 
1649
- #: classes/Views/Settings.php:1059
1650
- msgid "First name & last name"
1651
  msgstr ""
1652
 
1653
- #: classes/Views/Settings.php:1064
1654
- msgid "Configured public display name"
1655
  msgstr ""
1656
 
1657
- #: classes/Views/Settings.php:1074
1658
- msgid "Select the columns to be displayed in the WordPress activity log"
1659
  msgstr ""
1660
 
1661
- #: classes/Views/Settings.php:1075
1662
- msgid "When you deselect a column it won’t be shown in the activity log viewer in both views. The data will still be recorded by the plugin."
 
 
 
 
 
 
 
 
 
1663
  msgstr ""
1664
 
1665
- #: classes/Views/Settings.php:1079
1666
- msgid "Activity log columns selection"
1667
  msgstr ""
1668
 
1669
- #: classes/Views/Settings.php:1088
1670
- msgid "Event ID"
 
 
1671
  msgstr ""
1672
 
1673
- #: classes/Views/Settings.php:1092
1674
- msgid "Date & Time"
1675
  msgstr ""
1676
 
1677
- #: classes/Views/Settings.php:1096
1678
- msgid "Source IP Address"
1679
  msgstr ""
1680
 
1681
- #: classes/Views/Settings.php:1098
1682
- msgid "Info (used in Grid view mode only)"
1683
  msgstr ""
1684
 
1685
- #: classes/Views/Settings.php:1114
1686
- msgid "Do you want to keep a log of WordPress background activity?"
1687
  msgstr ""
1688
 
1689
- #: classes/Views/Settings.php:1116
1690
- msgid "WordPress does a lot of things in the background that you do not necessarily need to know about, such as; deletion of post revisions, deletion of auto saved drafts etc. By default the plugin does not report them since there might be a lot and are irrelevant to the user."
1691
  msgstr ""
1692
 
1693
- #: classes/Views/Settings.php:1121
1694
- msgid "Enable Events for WordPress Background Activity"
1695
  msgstr ""
1696
 
1697
- #: classes/Views/Settings.php:1180 classes/Views/ToggleAlerts.php:522
1698
- msgid "Website File Changes Monitor"
1699
  msgstr ""
1700
 
1701
- #: classes/Views/Settings.php:1181 classes/Views/ToggleAlerts.php:523
1702
- msgid "To keep a log of file changes please install Website File Changes Monitor, a plugin which is also developed by us."
1703
  msgstr ""
1704
 
1705
- #: classes/Views/Settings.php:1182 classes/Views/ToggleAlerts.php:524
1706
- msgid "Install plugin now"
1707
  msgstr ""
1708
 
1709
- #: classes/Views/Settings.php:1182 classes/Views/ToggleAlerts.php:524
1710
- msgid "Learn More"
 
1711
  msgstr ""
1712
 
1713
- #: classes/Views/Settings.php:1196
1714
- msgid "Configure how often file changes scan run and other settings from the"
1715
  msgstr ""
1716
 
1717
- #: classes/Views/Settings.php:1196
1718
- msgid "Website File Changes plugin settings"
1719
  msgstr ""
1720
 
1721
- #: classes/Views/Settings.php:1210
1722
- 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."
1723
  msgstr ""
1724
 
1725
- #: classes/Views/Settings.php:1214
1726
- msgid "Exclude Users:"
1727
  msgstr ""
1728
 
1729
- #: classes/Views/Settings.php:1235
1730
- msgid "Exclude Roles:"
1731
  msgstr ""
1732
 
1733
- #: classes/Views/Settings.php:1256
1734
- msgid "Exclude IP Address(es):"
1735
  msgstr ""
1736
 
1737
- #: classes/Views/Settings.php:1272
1738
- 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."
1739
  msgstr ""
1740
 
1741
- #: classes/Views/Settings.php:1278
1742
- msgid "Exclude Post Type:"
1743
  msgstr ""
1744
 
1745
- #: classes/Views/Settings.php:1294
1746
- 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."
1747
  msgstr ""
1748
 
1749
- #: classes/Views/Settings.php:1300
1750
- msgid "Exclude Custom Fields:"
1751
  msgstr ""
1752
 
1753
- #: classes/Views/Settings.php:1316
1754
- msgid "You can use the * wildcard to exclude multiple matching custom fields. For example to exclude all custom fields starting with wp123 enter wp123*"
1755
  msgstr ""
1756
 
1757
- #: classes/Views/Settings.php:1346
1758
- msgid "These settings are for advanced users."
1759
  msgstr ""
1760
 
1761
- #: classes/Views/Settings.php:1347
1762
- 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>."
1763
  msgstr ""
1764
 
1765
- #: classes/Views/Settings.php:1350
1766
- msgid "Reset plugin settings to default"
1767
  msgstr ""
1768
 
1769
- #: classes/Views/Settings.php:1351
1770
- 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."
1771
  msgstr ""
1772
 
1773
- #: classes/Views/Settings.php:1355
1774
- msgid "Reset Settings"
1775
  msgstr ""
1776
 
1777
- #: classes/Views/Settings.php:1357
1778
- msgid "RESET"
1779
  msgstr ""
1780
 
1781
- #: classes/Views/Settings.php:1363
1782
- msgid "Purge the WordPress activity log"
1783
  msgstr ""
1784
 
1785
- #: classes/Views/Settings.php:1364
1786
- msgid "Click the Purge button below to delete all the data from the WordPress activity log and start afresh."
1787
  msgstr ""
1788
 
1789
- #: classes/Views/Settings.php:1368
1790
- msgid "Purge Activity Log"
1791
  msgstr ""
1792
 
1793
- #: classes/Views/Settings.php:1370
1794
- msgid "PURGE"
1795
  msgstr ""
1796
 
1797
- #: classes/Views/Settings.php:1377
1798
- msgid "MainWP Child Site Stealth Mode"
1799
  msgstr ""
1800
 
1801
- #: classes/Views/Settings.php:1378
1802
- 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."
1803
  msgstr ""
1804
 
1805
- #: classes/Views/Settings.php:1382
1806
- msgid "Enable MainWP Child Site Stealth Mode"
1807
  msgstr ""
1808
 
1809
- #: classes/Views/Settings.php:1402
1810
- msgid "Admin blocking plugins support"
1811
  msgstr ""
1812
 
1813
- #: classes/Views/Settings.php:1407
1814
- msgid "Enable early plugin loading on sites that use admin blocking plugins"
1815
  msgstr ""
1816
 
1817
- #: classes/Views/Settings.php:1416
1818
- msgid "Do you want to delete the plugin data from the database upon uninstall?"
1819
  msgstr ""
1820
 
1821
- #: classes/Views/Settings.php:1417
1822
- 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."
1823
  msgstr ""
1824
 
1825
- #: classes/Views/Settings.php:1421
1826
- msgid "Remove Data on Uninstall"
1827
  msgstr ""
1828
 
1829
- #: classes/Views/Settings.php:1446
1830
- msgid "Are you sure you want to reset all the plugin settings to default? This action cannot be undone."
1831
  msgstr ""
1832
 
1833
- #: classes/Views/Settings.php:1456
1834
- msgid "Are you sure you want to purge all the activity log data?"
1835
  msgstr ""
1836
 
1837
- #: classes/Views/Settings.php:1480
1838
- msgid "MainWP Child plugin is not active on this website."
1839
  msgstr ""
1840
 
1841
- #: classes/Views/Settings.php:1561
1842
- msgid "The specified value is not a valid URL!"
1843
  msgstr ""
1844
 
1845
- #: classes/Views/Settings.php:1562
1846
- msgid "The specified value is not a valid post type!"
1847
  msgstr ""
1848
 
1849
- #: classes/Views/Settings.php:1563
1850
- msgid "The specified value is not a valid IP address!"
1851
  msgstr ""
1852
 
1853
- #: classes/Views/Settings.php:1564
1854
- msgid "The specified value is not a user nor a role!"
1855
  msgstr ""
1856
 
1857
- #: classes/Views/Settings.php:1565
1858
- msgid "Filename cannot be added because it contains invalid characters."
1859
  msgstr ""
1860
 
1861
- #: classes/Views/Settings.php:1566
1862
- msgid "File extension cannot be added because it contains invalid characters."
1863
  msgstr ""
1864
 
1865
- #: classes/Views/Settings.php:1567
1866
- msgid "Directory cannot be added because it contains invalid characters."
1867
  msgstr ""
1868
 
1869
- #: classes/Views/Settings.php:1568
1870
- msgid "Please save any changes before switching tabs."
1871
  msgstr ""
1872
 
1873
- #: classes/Views/Settings.php:1696 classes/Views/Settings.php:1719
1874
- msgid "Nonce Verification Failed."
1875
  msgstr ""
1876
 
1877
- #: classes/Views/Settings.php:1704
1878
- msgid "Plugin settings have been reset."
1879
  msgstr ""
1880
 
1881
- #: classes/Views/Settings.php:1728
1882
- msgid "Tables has been reset."
1883
  msgstr ""
1884
 
1885
- #: classes/Views/Settings.php:1730
1886
- msgid "Reset query failed."
1887
  msgstr ""
1888
 
1889
- #: classes/Views/Settings.php:1743
1890
- msgid "Activity log retention"
1891
  msgstr ""
1892
 
1893
- #: classes/Views/Settings.php:1749
1894
- msgid "Keep all data"
1895
  msgstr ""
1896
 
1897
- #: classes/Views/Settings.php:1776
1898
- msgid "Delete events older than"
1899
  msgstr ""
1900
 
1901
- #: classes/Views/Settings.php:1784
1902
- msgid "Months"
1903
  msgstr ""
1904
 
1905
- #: classes/Views/Settings.php:1785
1906
- msgid "Years"
1907
  msgstr ""
1908
 
1909
- #: classes/Views/Settings.php:1793
1910
- msgid "The next scheduled purging of activity log data that is older than "
1911
  msgstr ""
1912
 
1913
- #: classes/Views/Settings.php:1800
1914
- msgid "You can run the purging process now by clicking the button below."
1915
  msgstr ""
1916
 
1917
- #: classes/Views/Settings.php:1804
1918
- msgid "Purge Old Data"
1919
  msgstr ""
1920
 
1921
- #: classes/Views/SetupWizard.php:178
1922
- msgid "Welcome"
1923
  msgstr ""
1924
 
1925
- #: classes/Views/SetupWizard.php:182
1926
- msgid "Log Details"
1927
  msgstr ""
1928
 
1929
- #: classes/Views/SetupWizard.php:187
1930
- msgid "Log In"
1931
  msgstr ""
1932
 
1933
- #: classes/Views/SetupWizard.php:192
1934
- msgid "User Registrations"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1935
  msgstr ""
1936
 
1937
- #: classes/Views/SetupWizard.php:197
1938
- msgid "Log Retention"
1939
  msgstr ""
1940
 
1941
- #: classes/Views/SetupWizard.php:202 classes/Views/SetupWizard.php:736
1942
- #: classes/Views/SetupWizard.php:737
1943
- msgid "Finish"
1944
  msgstr ""
1945
 
1946
- #: classes/Views/SetupWizard.php:262
1947
- msgid "Specified value in not a user."
1948
  msgstr ""
1949
 
1950
- #: classes/Views/SetupWizard.php:263
1951
- msgid "Specified value in not a role."
1952
  msgstr ""
1953
 
1954
- #: classes/Views/SetupWizard.php:264
1955
- msgid "Specified value in not an IP address."
1956
  msgstr ""
1957
 
1958
- #: classes/Views/SetupWizard.php:270 wp-security-audit-log.php:1287
1959
- msgid "Installing, please wait"
1960
  msgstr ""
1961
 
1962
- #: classes/Views/SetupWizard.php:271 wp-security-audit-log.php:1288
1963
- msgid "Already installed"
1964
  msgstr ""
1965
 
1966
- #: classes/Views/SetupWizard.php:273 wp-security-audit-log.php:1290
1967
- msgid "Extension activated"
1968
  msgstr ""
1969
 
1970
- #: classes/Views/SetupWizard.php:274 wp-security-audit-log.php:1291
1971
- msgid "Install failed"
1972
  msgstr ""
1973
 
1974
- #: classes/Views/SetupWizard.php:304
1975
- msgid "WP Activity Log &rsaquo; Setup Wizard"
1976
  msgstr ""
1977
 
1978
- #: classes/Views/SetupWizard.php:322
1979
- msgid "Close Wizard"
1980
  msgstr ""
1981
 
1982
- #: classes/Views/SetupWizard.php:415
1983
- #, php-format
1984
- msgid "You have reached an invaild step - %1$sreturn to the start of the wizard%2$s."
1985
  msgstr ""
1986
 
1987
- #: classes/Views/SetupWizard.php:432
1988
- msgid "This wizard helps you configure the basic plugin settings. All these settings can be changed at a later stage from the plugin settings."
1989
  msgstr ""
1990
 
1991
- #: classes/Views/SetupWizard.php:437
1992
- msgid "Start Configuring the Plugin"
1993
  msgstr ""
1994
 
1995
- #: classes/Views/SetupWizard.php:441
1996
- msgid "Exit Wizard"
1997
  msgstr ""
1998
 
1999
- #: classes/Views/SetupWizard.php:454
2000
- msgid "Please select the level of detail for your WordPress activity logs:"
2001
  msgstr ""
2002
 
2003
- #: classes/Views/SetupWizard.php:458
2004
- msgid "Basic (I want a high level overview and I am not interested in the detail)"
2005
  msgstr ""
2006
 
2007
- #: classes/Views/SetupWizard.php:463
2008
- msgid "Geek (I want to know everything that is happening on my WordPress)"
2009
  msgstr ""
2010
 
2011
- #: classes/Views/SetupWizard.php:465
2012
- msgid "Note: You can change the WordPress logging level from the plugin’s settings anytime."
2013
  msgstr ""
2014
 
2015
- #: classes/Views/SetupWizard.php:468 classes/Views/SetupWizard.php:525
2016
- #: classes/Views/SetupWizard.php:574 classes/Views/SetupWizard.php:634
2017
- #: classes/Views/SetupWizard.php:635 classes/Views/SetupWizard.php:851
2018
- #: classes/Views/SetupWizard.php:852
2019
- msgid "Next"
2020
  msgstr ""
2021
 
2022
- #: classes/Views/SetupWizard.php:509
2023
- msgid "Do you or your users use other pages to log in to WordPress other than the default login page ( /wp-admin/ )?"
2024
  msgstr ""
2025
 
2026
- #: classes/Views/SetupWizard.php:513
2027
- msgid "Yes, we use other pages to login to WordPress."
2028
  msgstr ""
2029
 
2030
- #: classes/Views/SetupWizard.php:518
2031
- msgid "No, we only use the default WordPress login page."
2032
  msgstr ""
2033
 
2034
- #: classes/Views/SetupWizard.php:520
2035
- msgid "If your website is a membership or ecommerce website most probably you have more than one area from where the users can login. If you are not sure, select Yes."
2036
  msgstr ""
2037
 
2038
- #: classes/Views/SetupWizard.php:523 classes/Views/SetupWizard.php:572
2039
- #: classes/Views/SetupWizard.php:626
2040
- msgid "Note: You can change the WordPress activity log retention settings at any time from the plugin settings later on."
2041
  msgstr ""
2042
 
2043
- #: classes/Views/SetupWizard.php:558
2044
- msgid "Can visitors register for a user on your website?"
2045
  msgstr ""
2046
 
2047
- #: classes/Views/SetupWizard.php:569
2048
- msgid "If you are not sure about this setting, check if the Membership setting in the WordPress General settings is checked or not. If it is not checked (default) select No."
2049
  msgstr ""
2050
 
2051
- #: classes/Views/SetupWizard.php:608
2052
- msgid "How long do you want to keep the data in the WordPress activity Log?"
2053
  msgstr ""
2054
 
2055
- #: classes/Views/SetupWizard.php:613
2056
- msgid "6 months (data older than 6 months will be deleted)"
2057
  msgstr ""
2058
 
2059
- #: classes/Views/SetupWizard.php:618
2060
- msgid "12 months (data older than 12 months will be deleted)"
2061
  msgstr ""
2062
 
2063
- #: classes/Views/SetupWizard.php:623
2064
- msgid "Keep all data."
2065
  msgstr ""
2066
 
2067
- #: classes/Views/SetupWizard.php:644
2068
- msgid "The plugin stores the data in the WordPress database in a very efficient way, though the more data you keep the more hard disk space it will consume. If you need need to retain a lot of data we would recommend you to <a href=\"https://wpactivitylog.com/features/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=wizard+configuration\" target=\"_blank\">upgrade to Premium</a> and use the Database tools to store the WordPress activity log in an external database."
2069
  msgstr ""
2070
 
2071
- #: classes/Views/SetupWizard.php:707
2072
- msgid "Your plugin is all set and it is ready to start keeping a record of everything that is happening on your WordPress in a WordPress activity log."
2073
  msgstr ""
2074
 
2075
- #: classes/Views/SetupWizard.php:708
2076
- msgid "Below are a few useful links you might need to refer to:"
 
2077
  msgstr ""
2078
 
2079
- #: classes/Views/SetupWizard.php:713
2080
- msgid "Getting started with the WP Activity Log plugin"
2081
  msgstr ""
2082
 
2083
- #: classes/Views/SetupWizard.php:718
2084
- msgid "Knowledge Base & Support Documents"
 
2085
  msgstr ""
2086
 
2087
- #: classes/Views/SetupWizard.php:723
2088
- msgid "Benefits of keeping a WordPress activity log"
2089
  msgstr ""
2090
 
2091
- #: classes/Views/SetupWizard.php:728
2092
- msgid "We trust this plugin meets all your activity log requirements. Should you encounter any problems, have feature requests or would like to share some feedback, <a href=\"https://wpactivitylog.com/contact/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=wizard+configuration\" rel=\"noopener noreferrer\" target=\"_blank\">please get in touch!</a>"
2093
  msgstr ""
2094
 
2095
- #: classes/Views/SetupWizard.php:764
2096
- msgid "Third Party Extensions"
2097
  msgstr ""
2098
 
2099
- #: classes/Views/SetupWizard.php:805
2100
- msgid "Monitoring changes done in third party plugins"
2101
  msgstr ""
2102
 
2103
- #: classes/Views/SetupWizard.php:806
2104
- msgid "We noticed that the below plugins are installed on this website. You can install our extensions to also keep a log of changes users do on these plugins."
2105
  msgstr ""
2106
 
2107
- #: classes/Views/ToggleAlerts.php:27 classes/Views/ToggleAlerts.php:41
2108
- msgid "Enable/Disable Events"
2109
  msgstr ""
2110
 
2111
- #: classes/Views/ToggleAlerts.php:158
2112
- msgid "Basic"
2113
  msgstr ""
2114
 
2115
- #: classes/Views/ToggleAlerts.php:159
2116
- msgid "Geek"
2117
  msgstr ""
2118
 
2119
- #: classes/Views/ToggleAlerts.php:160
2120
- msgid "Custom"
2121
  msgstr ""
2122
 
2123
- #: classes/Views/ToggleAlerts.php:180
2124
- msgid "Log Level: "
2125
  msgstr ""
2126
 
2127
- #: classes/Views/ToggleAlerts.php:187
2128
- 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."
2129
  msgstr ""
2130
 
2131
- #: classes/Views/ToggleAlerts.php:197
2132
- msgid "Third party plugins"
2133
  msgstr ""
2134
 
2135
- #: classes/Views/ToggleAlerts.php:298
2136
- msgid "Code"
2137
  msgstr ""
2138
 
2139
- #: classes/Views/ToggleAlerts.php:300 classes/WidgetManager.php:79
2140
- msgid "Description"
2141
  msgstr ""
2142
 
2143
- #: classes/Views/ToggleAlerts.php:304 defaults.php:325
2144
- msgid "Content"
2145
  msgstr ""
2146
 
2147
- #: classes/Views/ToggleAlerts.php:307
2148
- msgid "<strong>Note:</strong> Post refers to any type of content, i.e. blog post, page or a post with a custom post type."
2149
  msgstr ""
2150
 
2151
- #: classes/Views/ToggleAlerts.php:310 classes/Views/ToggleAlerts.php:318
2152
- msgid "WooCommerce Products"
2153
  msgstr ""
2154
 
2155
- #: classes/Views/ToggleAlerts.php:314
2156
- msgid "The plugin WooCommerce is not installed on your website so these events have been disabled."
2157
  msgstr ""
2158
 
2159
- #: classes/Views/ToggleAlerts.php:321
2160
- msgid "Products"
2161
  msgstr ""
2162
 
2163
- #: classes/Views/ToggleAlerts.php:327
2164
- msgid "Post Changes"
2165
  msgstr ""
2166
 
2167
- #: classes/Views/ToggleAlerts.php:330 defaults.php:2797
2168
- msgid "MultiSite"
2169
  msgstr ""
2170
 
2171
- #: classes/Views/ToggleAlerts.php:334
2172
- msgid "Your website is a single site so the multisite events have been disabled."
2173
  msgstr ""
2174
 
2175
- #: classes/Views/ToggleAlerts.php:338
2176
- msgid "Other User Activity"
2177
  msgstr ""
2178
 
2179
- #: classes/Views/ToggleAlerts.php:341
2180
- msgid "Logins & Logouts"
2181
  msgstr ""
2182
 
2183
- #: classes/Views/ToggleAlerts.php:353 classes/Views/ToggleAlerts.php:512
2184
- #: defaults.php:2948
2185
- msgid "Monitor File Changes"
2186
  msgstr ""
2187
 
2188
- #: classes/Views/ToggleAlerts.php:364
2189
- msgid "Not Implemented"
2190
  msgstr ""
2191
 
2192
- #: classes/Views/ToggleAlerts.php:367
2193
- msgid "Not Available"
2194
  msgstr ""
2195
 
2196
- #: classes/Views/ToggleAlerts.php:382
2197
- msgid "User Logins/Logouts"
2198
  msgstr ""
2199
 
2200
- #: classes/Views/ToggleAlerts.php:385
2201
- msgid "User Sessions"
2202
  msgstr ""
2203
 
2204
- #: classes/Views/ToggleAlerts.php:388
2205
- msgid "Files"
2206
  msgstr ""
2207
 
2208
- #: classes/Views/ToggleAlerts.php:391
2209
- msgid "Post Settings"
2210
  msgstr ""
2211
 
2212
- #: classes/Views/ToggleAlerts.php:461
2213
- 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."
2214
  msgstr ""
2215
 
2216
- #: classes/Views/ToggleAlerts.php:475 classes/Views/ToggleAlerts.php:488
2217
- 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)"
2218
  msgstr ""
2219
 
2220
- #: classes/Views/ToggleAlerts.php:502
2221
- msgid "Keep a log of user log in activity on custom login forms (such as WooCommerce & membership plugins)"
2222
  msgstr ""
2223
 
2224
- #: classes/Views/ToggleAlerts.php:548
2225
- msgid "Save Changes"
2226
  msgstr ""
2227
 
2228
- #: classes/Views/ToggleAlerts.php:555
2229
- msgid "Log Level Updated"
2230
  msgstr ""
2231
 
2232
- #: classes/Views/ToggleAlerts.php:559
2233
- #, php-format
2234
- msgid "The %s log level has been successfully loaded and applied."
2235
  msgstr ""
2236
 
2237
- #: classes/Views/ToggleAlerts.php:563
2238
- msgid "OK"
2239
  msgstr ""
2240
 
2241
- #: classes/Views/ToggleAlerts.php:578
2242
- msgid "Enable File Integrity Scanner"
2243
  msgstr ""
2244
 
2245
- #: classes/Views/ToggleAlerts.php:580
2246
- msgid "The file integrity scanner is switched off. To enable this event it has to be switched on."
2247
  msgstr ""
2248
 
2249
- #: classes/Views/ToggleAlerts.php:584
2250
- msgid "SWITCH ON"
2251
  msgstr ""
2252
 
2253
- #: classes/Views/ToggleAlerts.php:585
2254
- msgid "DISABLE EVENT"
2255
  msgstr ""
2256
 
2257
- #: classes/Views/addons/html-view.php:95 classes/Views/addons/html-view.php:120
2258
- msgid "Upgrade to Premium"
2259
  msgstr ""
2260
 
2261
- #: classes/Views/addons/html-view.php:96
2262
- msgid "More Information"
2263
  msgstr ""
2264
 
2265
- #: classes/Views/addons/html-view.php:104
2266
- msgid "Screenshots"
2267
  msgstr ""
2268
 
2269
- #: classes/Views/addons/html-view.php:121
2270
- msgid "Start Free 14-Day Premium Trial"
2271
  msgstr ""
2272
 
2273
- #: classes/WidgetManager.php:55
2274
- msgid "Latest Events"
2275
  msgstr ""
2276
 
2277
- #: classes/WidgetManager.php:71
2278
- msgid "No events found."
 
 
 
 
2279
  msgstr ""
2280
 
2281
- #: defaults.php:71
2282
- msgid "View category"
2283
  msgstr ""
2284
 
2285
- #: defaults.php:75
2286
- msgid "Contact Support"
2287
  msgstr ""
2288
 
2289
- #: defaults.php:88
2290
- msgid "View page in the editor"
 
2291
  msgstr ""
2292
 
2293
- #: defaults.php:92
2294
- msgid "View the post in editor"
2295
  msgstr ""
2296
 
2297
- #: defaults.php:97
2298
- msgid "View the order"
2299
  msgstr ""
2300
 
2301
- #: defaults.php:101
2302
- msgid "User profile page"
2303
  msgstr ""
2304
 
2305
- #: defaults.php:105
2306
- msgid "Open the log file"
2307
  msgstr ""
2308
 
2309
- #: defaults.php:113
2310
- msgid "View menu"
2311
  msgstr ""
2312
 
2313
- #: defaults.php:117 defaults.php:122 defaults.php:2804 defaults.php:2816
2314
- #: defaults.php:2828 defaults.php:2840 defaults.php:2852 defaults.php:2864
2315
- msgid "URL"
2316
  msgstr ""
2317
 
2318
- #: defaults.php:126
2319
- msgid "View the content changes"
2320
  msgstr ""
2321
 
2322
- #: defaults.php:130
2323
- msgid "View tag"
2324
  msgstr ""
2325
 
2326
- #: defaults.php:173
2327
- msgid "Critical severity events."
2328
  msgstr ""
2329
 
2330
- #: defaults.php:175
2331
- msgid "High severity events."
2332
  msgstr ""
2333
 
2334
- #: defaults.php:177
2335
- msgid "Medium severity events."
2336
  msgstr ""
2337
 
2338
- #: defaults.php:179
2339
- msgid "Low severity events."
2340
  msgstr ""
2341
 
2342
- #: defaults.php:181
2343
- msgid "Informational events."
2344
  msgstr ""
2345
 
2346
- #: defaults.php:186
2347
- msgid "Users Logins & Sessions Events"
2348
  msgstr ""
2349
 
2350
- #: defaults.php:187
2351
- msgid "User Activity"
2352
  msgstr ""
2353
 
2354
- #: defaults.php:191
2355
- msgid "User logged in"
2356
  msgstr ""
2357
 
2358
- #: defaults.php:192
2359
- msgid "User logged in."
2360
  msgstr ""
2361
 
2362
- #: defaults.php:201
2363
- msgid "User logged out"
2364
  msgstr ""
2365
 
2366
- #: defaults.php:202
2367
- msgid "User logged out."
2368
  msgstr ""
2369
 
2370
- #: defaults.php:211
2371
- msgid "Login failed"
2372
  msgstr ""
2373
 
2374
- #: defaults.php:212 defaults.php:222
2375
- msgid "%Attempts% failed login(s)."
2376
  msgstr ""
2377
 
2378
- #: defaults.php:221
2379
- msgid "Login failed / non existing user"
2380
  msgstr ""
2381
 
2382
- #: defaults.php:231
2383
- msgid "Login blocked"
2384
  msgstr ""
2385
 
2386
- #: defaults.php:232
2387
- msgid "Login blocked because other session(s) already exist for this user."
2388
  msgstr ""
2389
 
2390
- #: defaults.php:234
2391
- msgid "IP address"
2392
  msgstr ""
2393
 
2394
- #: defaults.php:243
2395
- msgid "User logged in with existing session(s)"
2396
  msgstr ""
2397
 
2398
- #: defaults.php:244
2399
- msgid "User logged in however there are other session(s) already for this user."
2400
  msgstr ""
2401
 
2402
- #: defaults.php:246
2403
- msgid "IP address(es)"
2404
  msgstr ""
2405
 
2406
- #: defaults.php:255
2407
- msgid "User logged out all other sessions with the same username"
2408
  msgstr ""
2409
 
2410
- #: defaults.php:256
2411
- msgid "Logged out all other sessions with the same user."
 
2412
  msgstr ""
2413
 
2414
- #: defaults.php:265
2415
- msgid "User session destroyed and logged out"
2416
  msgstr ""
2417
 
2418
- #: defaults.php:266
2419
- msgid "Terminated the session of the user %TargetUserName%."
2420
  msgstr ""
2421
 
2422
- #: defaults.php:268 defaults.php:281 defaults.php:1701 defaults.php:1729
2423
- #: defaults.php:1743 defaults.php:1757 defaults.php:1772 defaults.php:1787
2424
- #: defaults.php:1801 defaults.php:1815 defaults.php:1831 defaults.php:1846
2425
- #: defaults.php:1860 defaults.php:1874 defaults.php:1889 defaults.php:1905
2426
- #: defaults.php:1919 defaults.php:1934 defaults.php:1948 defaults.php:1962
2427
- #: defaults.php:1979 defaults.php:1993 defaults.php:2007
2428
- msgid "Role"
2429
  msgstr ""
2430
 
2431
- #: defaults.php:269
2432
- msgid "Session ID"
2433
  msgstr ""
2434
 
2435
- #: defaults.php:278
2436
- msgid "Switched to another user"
2437
  msgstr ""
2438
 
2439
- #: defaults.php:279
2440
- msgid "Switched the session to being logged in as %TargetUserName%."
2441
  msgstr ""
2442
 
2443
- #: defaults.php:290
2444
- msgid "User uploaded file to the Uploads directory"
2445
  msgstr ""
2446
 
2447
- #: defaults.php:291
2448
- msgid "Uploaded a file called %FileName%."
2449
  msgstr ""
2450
 
2451
- #: defaults.php:293 defaults.php:305
2452
- msgid "Directory"
2453
  msgstr ""
2454
 
2455
- #: defaults.php:302
2456
- msgid "User deleted file from Uploads directory"
 
2457
  msgstr ""
2458
 
2459
- #: defaults.php:303
2460
- msgid "Deleted the file %FileName%."
2461
  msgstr ""
2462
 
2463
- #: defaults.php:314
2464
- msgid "User requested a password reset"
2465
  msgstr ""
2466
 
2467
- #: defaults.php:315
2468
- msgid "User requested a password reset. This does not mean that the password was changed."
2469
  msgstr ""
2470
 
2471
- #: defaults.php:324
2472
- msgid "Content & Comments"
2473
  msgstr ""
2474
 
2475
- #: defaults.php:329
2476
- msgid "User created a new post and saved it as draft"
2477
  msgstr ""
2478
 
2479
- #: defaults.php:330
2480
- msgid "Created the post %PostTitle%."
2481
  msgstr ""
2482
 
2483
- #: defaults.php:332 defaults.php:346 defaults.php:360 defaults.php:374
2484
- #: defaults.php:388 defaults.php:402 defaults.php:416 defaults.php:432
2485
- #: defaults.php:447 defaults.php:461 defaults.php:476 defaults.php:491
2486
- #: defaults.php:506 defaults.php:521 defaults.php:535 defaults.php:549
2487
- #: defaults.php:563 defaults.php:577 defaults.php:591 defaults.php:605
2488
- #: defaults.php:619 defaults.php:633 defaults.php:647 defaults.php:661
2489
- #: defaults.php:677 defaults.php:791 defaults.php:870 defaults.php:885
2490
- #: defaults.php:901 defaults.php:916 defaults.php:933 defaults.php:948
2491
- #: defaults.php:969 defaults.php:984 defaults.php:999 defaults.php:1014
2492
- #: defaults.php:1029 defaults.php:1044 defaults.php:1059 defaults.php:1074
2493
- #: defaults.php:1089 defaults.php:1104 defaults.php:1123 defaults.php:2154
2494
- #: defaults.php:2169
2495
- msgid "Post ID"
2496
  msgstr ""
2497
 
2498
- #: defaults.php:333 defaults.php:347 defaults.php:361 defaults.php:375
2499
- #: defaults.php:389 defaults.php:403 defaults.php:417 defaults.php:433
2500
- #: defaults.php:448 defaults.php:462 defaults.php:477 defaults.php:492
2501
- #: defaults.php:507 defaults.php:522 defaults.php:536 defaults.php:550
2502
- #: defaults.php:564 defaults.php:578 defaults.php:592 defaults.php:606
2503
- #: defaults.php:620 defaults.php:634 defaults.php:648 defaults.php:662
2504
- #: defaults.php:678 defaults.php:792 defaults.php:871 defaults.php:886
2505
- #: defaults.php:902 defaults.php:917 defaults.php:934 defaults.php:949
2506
- #: defaults.php:970 defaults.php:985 defaults.php:1000 defaults.php:1015
2507
- #: defaults.php:1030 defaults.php:1045 defaults.php:1060 defaults.php:1075
2508
- #: defaults.php:1090 defaults.php:1105 defaults.php:1124 defaults.php:2155
2509
- #: defaults.php:2170
2510
- msgid "Post type"
2511
  msgstr ""
2512
 
2513
- #: defaults.php:334 defaults.php:348 defaults.php:362 defaults.php:376
2514
- #: defaults.php:390 defaults.php:404 defaults.php:418 defaults.php:434
2515
- #: defaults.php:463 defaults.php:478 defaults.php:493 defaults.php:508
2516
- #: defaults.php:523 defaults.php:537 defaults.php:551 defaults.php:565
2517
- #: defaults.php:579 defaults.php:593 defaults.php:607 defaults.php:621
2518
- #: defaults.php:635 defaults.php:649 defaults.php:663 defaults.php:679
2519
- #: defaults.php:793 defaults.php:872 defaults.php:887 defaults.php:903
2520
- #: defaults.php:918 defaults.php:935 defaults.php:950 defaults.php:971
2521
- #: defaults.php:986 defaults.php:1001 defaults.php:1016 defaults.php:1031
2522
- #: defaults.php:1046 defaults.php:1061 defaults.php:1076 defaults.php:1091
2523
- #: defaults.php:1106 defaults.php:1125 defaults.php:2156 defaults.php:2171
2524
- msgid "Post status"
2525
  msgstr ""
2526
 
2527
- #: defaults.php:343
2528
- msgid "User published a post"
2529
  msgstr ""
2530
 
2531
- #: defaults.php:344
2532
- msgid "Published the post %PostTitle%."
2533
  msgstr ""
2534
 
2535
- #: defaults.php:357
2536
- msgid "User modified a post"
2537
  msgstr ""
2538
 
2539
- #: defaults.php:358
2540
- msgid "Modified the post %PostTitle%."
 
2541
  msgstr ""
2542
 
2543
- #: defaults.php:371
2544
- msgid "User permanently deleted a post from the trash"
2545
  msgstr ""
2546
 
2547
- #: defaults.php:372
2548
- msgid "Permanently deleted the post %PostTitle%."
2549
  msgstr ""
2550
 
2551
- #: defaults.php:385
2552
- msgid "User moved a post to the trash"
2553
  msgstr ""
2554
 
2555
- #: defaults.php:386
2556
- msgid "Moved the post %PostTitle% to trash."
 
 
2557
  msgstr ""
2558
 
2559
- #: defaults.php:399
2560
- msgid "User restored a post from trash"
2561
  msgstr ""
2562
 
2563
- #: defaults.php:400
2564
- msgid "Restored the post %PostTitle% from trash."
2565
  msgstr ""
2566
 
2567
- #: defaults.php:413
2568
- msgid "User changed post URL"
2569
  msgstr ""
2570
 
2571
- #: defaults.php:414
2572
- msgid "Changed the URL of the post %PostTitle%."
2573
  msgstr ""
2574
 
2575
- #: defaults.php:419 defaults.php:2676 defaults.php:2688
2576
- msgid "Previous URL"
2577
  msgstr ""
2578
 
2579
- #: defaults.php:420
2580
- msgid "New URL"
2581
  msgstr ""
2582
 
2583
- #: defaults.php:429
2584
- msgid "User changed post author"
2585
  msgstr ""
2586
 
2587
- #: defaults.php:430
2588
- msgid "Changed the author of the post %PostTitle% to %NewAuthor%."
2589
  msgstr ""
2590
 
2591
- #: defaults.php:435
2592
- msgid "Previous author"
2593
  msgstr ""
2594
 
2595
- #: defaults.php:444
2596
- msgid "User changed post status"
2597
  msgstr ""
2598
 
2599
- #: defaults.php:445
2600
- msgid "Changed the status of the post %PostTitle% to %NewStatus%."
2601
  msgstr ""
2602
 
2603
- #: defaults.php:449
2604
- msgid "Previous status"
 
2605
  msgstr ""
2606
 
2607
- #: defaults.php:458
2608
- msgid "User changed the visibility of a post"
2609
  msgstr ""
2610
 
2611
- #: defaults.php:459
2612
- msgid "Changed the visibility of the post %PostTitle% to %NewVisibility%."
2613
  msgstr ""
2614
 
2615
- #: defaults.php:464
2616
- msgid "Previous visibility status"
2617
  msgstr ""
2618
 
2619
- #: defaults.php:473
2620
- msgid "User changed the date of a post"
2621
  msgstr ""
2622
 
2623
- #: defaults.php:474
2624
- msgid "Changed the date of the post %PostTitle% to %NewDate%."
2625
  msgstr ""
2626
 
2627
- #: defaults.php:479
2628
- msgid "Previous date"
2629
  msgstr ""
2630
 
2631
- #: defaults.php:488
2632
- msgid "User changed the parent of a page"
2633
  msgstr ""
2634
 
2635
- #: defaults.php:489
2636
- msgid "Changed the parent of the post %PostTitle% to %NewParentName%."
2637
  msgstr ""
2638
 
2639
- #: defaults.php:494 defaults.php:831
2640
- msgid "Previous parent"
2641
  msgstr ""
2642
 
2643
- #: defaults.php:503
2644
- msgid "User changed the template of a page"
2645
  msgstr ""
2646
 
2647
- #: defaults.php:504
2648
- msgid "Changed the template of the post %PostTitle% to %NewTemplate%."
2649
  msgstr ""
2650
 
2651
- #: defaults.php:509
2652
- msgid "Previous template"
2653
  msgstr ""
2654
 
2655
- #: defaults.php:518
2656
- msgid "User set a post as sticky"
2657
  msgstr ""
2658
 
2659
- #: defaults.php:519
2660
- msgid "Set the post %PostTitle% as sticky."
2661
  msgstr ""
2662
 
2663
- #: defaults.php:532
2664
- msgid "User removed post from sticky"
2665
  msgstr ""
2666
 
2667
- #: defaults.php:533
2668
- msgid "Removed the post %PostTitle% from sticky."
2669
  msgstr ""
2670
 
2671
- #: defaults.php:546
2672
- msgid "User modified the content of a post"
2673
  msgstr ""
2674
 
2675
- #: defaults.php:547
2676
- msgid "Modified the content of the post %PostTitle%."
2677
  msgstr ""
2678
 
2679
- #: defaults.php:560
2680
- msgid "User submitted a post for review"
2681
  msgstr ""
2682
 
2683
- #: defaults.php:561
2684
- msgid "Submitted the post %PostTitle% for review."
2685
  msgstr ""
2686
 
2687
- #: defaults.php:574
2688
- msgid "User scheduled a post"
2689
  msgstr ""
2690
 
2691
- #: defaults.php:575
2692
- msgid "Scheduled the post %PostTitle% to be published on %PublishingDate%."
2693
  msgstr ""
2694
 
2695
- #: defaults.php:588
2696
- msgid "User changed title of a post"
2697
  msgstr ""
2698
 
2699
- #: defaults.php:589
2700
- msgid "Changed the title of the post %OldTitle% to %NewTitle%."
2701
  msgstr ""
2702
 
2703
- #: defaults.php:602
2704
- msgid "User opened a post in the editor"
2705
  msgstr ""
2706
 
2707
- #: defaults.php:603
2708
- msgid "Opened the post %PostTitle% in the editor."
2709
  msgstr ""
2710
 
2711
- #: defaults.php:616
2712
- msgid "User viewed a post"
2713
  msgstr ""
2714
 
2715
- #: defaults.php:617
2716
- msgid "Viewed the post %PostTitle%."
2717
  msgstr ""
2718
 
2719
- #: defaults.php:630
2720
- msgid "User enabled/disabled comments in a post"
2721
  msgstr ""
2722
 
2723
- #: defaults.php:631
2724
- msgid "Comments in the post %PostTitle%."
2725
  msgstr ""
2726
 
2727
- #: defaults.php:644
2728
- msgid "User enabled/disabled trackbacks and pingbacks in a post"
2729
  msgstr ""
2730
 
2731
- #: defaults.php:645
2732
- msgid "Pingbacks and Trackbacks in the post %PostTitle%."
2733
  msgstr ""
2734
 
2735
- #: defaults.php:658
2736
- msgid "User updated the excerpt in a post"
2737
  msgstr ""
2738
 
2739
- #: defaults.php:659
2740
- msgid "The excerpt of the post %PostTitle%."
2741
  msgstr ""
2742
 
2743
- #: defaults.php:664
2744
- msgid "Previous excerpt entry"
2745
  msgstr ""
2746
 
2747
- #: defaults.php:665
2748
- msgid "New excerpt entry"
2749
  msgstr ""
2750
 
2751
- #: defaults.php:674
2752
- msgid "User updated the featured image in a post"
2753
  msgstr ""
2754
 
2755
- #: defaults.php:675
2756
- msgid "The featured image of the post %PostTitle%."
2757
  msgstr ""
2758
 
2759
- #: defaults.php:680
2760
- msgid "Previous image"
2761
  msgstr ""
2762
 
2763
- #: defaults.php:681
2764
- msgid "New image"
2765
  msgstr ""
2766
 
2767
- #: defaults.php:689
2768
- msgid "Tags"
2769
  msgstr ""
2770
 
2771
- #: defaults.php:693
2772
- msgid "User added post tag"
2773
  msgstr ""
2774
 
2775
- #: defaults.php:694
2776
- msgid "Added tag(s) to the post %PostTitle%."
2777
  msgstr ""
2778
 
2779
- #: defaults.php:697 defaults.php:712
2780
- msgid "Type"
2781
  msgstr ""
2782
 
2783
- #: defaults.php:698 defaults.php:713
2784
- msgid "Status"
2785
  msgstr ""
2786
 
2787
- #: defaults.php:699
2788
- msgid "Added tag(s)"
2789
  msgstr ""
2790
 
2791
- #: defaults.php:708
2792
- msgid "User removed post tag"
2793
  msgstr ""
2794
 
2795
- #: defaults.php:709
2796
- msgid "Removed tag(s) from the post %PostTitle%."
2797
  msgstr ""
2798
 
2799
- #: defaults.php:714
2800
- msgid "Removed tag(s)"
2801
  msgstr ""
2802
 
2803
- #: defaults.php:723
2804
- msgid "User created new tag"
2805
  msgstr ""
2806
 
2807
- #: defaults.php:724
2808
- msgid "Created the tag %TagName%."
2809
  msgstr ""
2810
 
2811
- #: defaults.php:726 defaults.php:738 defaults.php:750 defaults.php:774
2812
- #: defaults.php:806 defaults.php:818 defaults.php:830 defaults.php:843
2813
- msgid "Slug"
2814
  msgstr ""
2815
 
2816
- #: defaults.php:735
2817
- msgid "User deleted tag"
2818
  msgstr ""
2819
 
2820
- #: defaults.php:736
2821
- msgid "Deleted the tag %TagName%."
2822
  msgstr ""
2823
 
2824
- #: defaults.php:747
2825
- msgid "Renamed the tag %old_name% to %new_name%."
2826
  msgstr ""
2827
 
2828
- #: defaults.php:759
2829
- msgid "User changed tag slug"
2830
  msgstr ""
2831
 
2832
- #: defaults.php:760
2833
- msgid "Changed the slug of the tag %tag% to %new_slug%."
2834
  msgstr ""
2835
 
2836
- #: defaults.php:762 defaults.php:855
2837
- msgid "Previous slug"
2838
  msgstr ""
2839
 
2840
- #: defaults.php:771
2841
- msgid "User changed tag description"
2842
  msgstr ""
2843
 
2844
- #: defaults.php:772
2845
- msgid "Changed the description of the tag %tag%."
2846
  msgstr ""
2847
 
2848
- #: defaults.php:775
2849
- msgid "Previous description"
2850
  msgstr ""
2851
 
2852
- #: defaults.php:776
2853
- msgid "New description"
2854
  msgstr ""
2855
 
2856
- #: defaults.php:784
2857
- msgid "Categories"
 
 
2858
  msgstr ""
2859
 
2860
- #: defaults.php:788
2861
- msgid "User changed post category"
2862
  msgstr ""
2863
 
2864
- #: defaults.php:789
2865
- msgid "Changed the category(ies) of the post %PostTitle% to %NewCategories%."
2866
  msgstr ""
2867
 
2868
- #: defaults.php:794
2869
- msgid "Previous category(ies)"
2870
  msgstr ""
2871
 
2872
- #: defaults.php:803
2873
- msgid "User created new category"
2874
  msgstr ""
2875
 
2876
- #: defaults.php:804
2877
- msgid "Created the category %CategoryName%."
2878
  msgstr ""
2879
 
2880
- #: defaults.php:815
2881
- msgid "User deleted category"
2882
  msgstr ""
2883
 
2884
- #: defaults.php:816
2885
- msgid "Deleted the category %CategoryName%."
2886
  msgstr ""
2887
 
2888
- #: defaults.php:827
2889
- msgid "Changed the parent of a category"
2890
  msgstr ""
2891
 
2892
- #: defaults.php:828
2893
- msgid "Changed the parent of the category %CategoryName% to %NewParent%."
2894
  msgstr ""
2895
 
2896
- #: defaults.php:840
2897
- msgid "User changed category name"
2898
  msgstr ""
2899
 
2900
- #: defaults.php:841
2901
- msgid "Renamed the category %old_name% to %new_name%."
2902
  msgstr ""
2903
 
2904
- #: defaults.php:852
2905
- msgid "User changed category slug"
2906
  msgstr ""
2907
 
2908
- #: defaults.php:853
2909
- msgid "Changed the slug of the category %CategoryName% to %new_slug%."
2910
  msgstr ""
2911
 
2912
- #: defaults.php:863
2913
- msgid "Custom Fields"
2914
  msgstr ""
2915
 
2916
- #: defaults.php:867
2917
- msgid "User created a custom field for a post"
2918
  msgstr ""
2919
 
2920
- #: defaults.php:868
2921
- msgid "Created the new custom field %MetaKey% in the post %PostTitle%."
2922
  msgstr ""
2923
 
2924
- #: defaults.php:873 defaults.php:1834
2925
- msgid "Custom field value"
2926
  msgstr ""
2927
 
2928
- #: defaults.php:882
2929
- msgid "User updated a custom field value for a post"
2930
  msgstr ""
2931
 
2932
- #: defaults.php:883
2933
- msgid "Modified the value of the custom field %MetaName% in the post %PostTitle%."
2934
  msgstr ""
2935
 
2936
- #: defaults.php:888
2937
- msgid "Previous custom field value"
2938
  msgstr ""
2939
 
2940
- #: defaults.php:889
2941
- msgid "New custom field value"
2942
  msgstr ""
2943
 
2944
- #: defaults.php:898
2945
- msgid "User deleted a custom field from a post"
2946
  msgstr ""
2947
 
2948
- #: defaults.php:899
2949
- msgid "Deleted the custom field %MetaKey% from the post %PostTitle%."
2950
  msgstr ""
2951
 
2952
- #: defaults.php:912
2953
- msgid "User updated a custom field name for a post"
2954
  msgstr ""
2955
 
2956
- #: defaults.php:913
2957
- msgid "Renamed the custom field %MetaKeyOld% on post %PostTitle% to %MetaKeNew%."
2958
  msgstr ""
2959
 
2960
- #: defaults.php:926
2961
- msgid "Custom Fields (ACF)"
2962
  msgstr ""
2963
 
2964
- #: defaults.php:930
2965
- msgid "User added relationship to a custom field value for a post"
2966
  msgstr ""
2967
 
2968
- #: defaults.php:931
2969
- msgid "Added relationships to the custom field %MetaKey% in the post %PostTitle%."
2970
  msgstr ""
2971
 
2972
- #: defaults.php:936
2973
- msgid "New relationships"
2974
  msgstr ""
2975
 
2976
- #: defaults.php:945
2977
- msgid "User removed relationship from a custom field value for a post"
2978
  msgstr ""
2979
 
2980
- #: defaults.php:946
2981
- msgid "Removed relationships from the custom field %MetaKey% in the post %PostTitle%."
2982
  msgstr ""
2983
 
2984
- #: defaults.php:951
2985
- msgid "Removed relationships"
2986
  msgstr ""
2987
 
2988
- #: defaults.php:962
2989
- msgid "Comments"
 
2990
  msgstr ""
2991
 
2992
- #: defaults.php:966
2993
- msgid "User approved a comment"
2994
  msgstr ""
2995
 
2996
- #: defaults.php:967
2997
- msgid "Approved the comment posted by %Author% on the post %PostTitle%."
2998
  msgstr ""
2999
 
3000
- #: defaults.php:972 defaults.php:987 defaults.php:1002 defaults.php:1017
3001
- #: defaults.php:1032 defaults.php:1047 defaults.php:1062 defaults.php:1077
3002
- #: defaults.php:1092 defaults.php:1107 defaults.php:1126
3003
- msgid "Comment ID"
3004
  msgstr ""
3005
 
3006
- #: defaults.php:981
3007
- msgid "User unapproved a comment"
3008
  msgstr ""
3009
 
3010
- #: defaults.php:982
3011
- msgid "Unapproved the comment posted by %Author% on the post %PostTitle%."
3012
  msgstr ""
3013
 
3014
- #: defaults.php:996
3015
- msgid "User replied to a comment"
3016
  msgstr ""
3017
 
3018
- #: defaults.php:997
3019
- msgid "Replied to the comment posted by %Author% on the post %PostTitle%."
3020
  msgstr ""
3021
 
3022
- #: defaults.php:1011
3023
- msgid "User edited a comment"
3024
  msgstr ""
3025
 
3026
- #: defaults.php:1012
3027
- msgid "Edited the comment posted by %Author% on the post %PostTitle%."
3028
  msgstr ""
3029
 
3030
- #: defaults.php:1026
3031
- msgid "User marked a comment as Spam"
3032
  msgstr ""
3033
 
3034
- #: defaults.php:1027
3035
- msgid "Marked the comment posted by %Author% on the post %PostTitle% as spam."
3036
  msgstr ""
3037
 
3038
- #: defaults.php:1041
3039
- msgid "User marked a comment as Not Spam"
3040
  msgstr ""
3041
 
3042
- #: defaults.php:1042
3043
- msgid "Marked the comment posted by %Author% on the post %PostTitle% as not spam."
3044
  msgstr ""
3045
 
3046
- #: defaults.php:1056
3047
- msgid "User moved a comment to trash"
3048
  msgstr ""
3049
 
3050
- #: defaults.php:1057
3051
- msgid "Moved the comment posted by %Author% on the post %PostTitle% to trash."
3052
  msgstr ""
3053
 
3054
- #: defaults.php:1071
3055
- msgid "User restored a comment from the trash"
3056
  msgstr ""
3057
 
3058
- #: defaults.php:1072
3059
- msgid "Restored the comment posted by %Author% on the post %PostTitle% from trash."
3060
  msgstr ""
3061
 
3062
- #: defaults.php:1086
3063
- msgid "User permanently deleted a comment"
3064
  msgstr ""
3065
 
3066
- #: defaults.php:1087
3067
- msgid "Permanently deleted the comment posted by %Author% on the post %PostTitle%."
3068
  msgstr ""
3069
 
3070
- #: defaults.php:1101
3071
- msgid "User posted a comment"
3072
  msgstr ""
3073
 
3074
- #: defaults.php:1102 defaults.php:1121
3075
- msgid "Posted a comment on the post %PostTitle%."
3076
  msgstr ""
3077
 
3078
- #: defaults.php:1120
3079
- msgid "Visitor posted a comment"
3080
  msgstr ""
3081
 
3082
- #: defaults.php:1137
3083
- msgid "Widgets"
3084
  msgstr ""
3085
 
3086
- #: defaults.php:1141
3087
- msgid "User added a new widget"
3088
  msgstr ""
3089
 
3090
- #: defaults.php:1142
3091
- msgid "Added a new %WidgetName% widget in %Sidebar%."
3092
  msgstr ""
3093
 
3094
- #: defaults.php:1151
3095
- msgid "User modified a widget"
3096
  msgstr ""
3097
 
3098
- #: defaults.php:1152
3099
- msgid "Modified the %WidgetName% widget in %Sidebar%."
3100
  msgstr ""
3101
 
3102
- #: defaults.php:1161
3103
- msgid "User deleted widget"
3104
  msgstr ""
3105
 
3106
- #: defaults.php:1162
3107
- msgid "Deleted the %WidgetName% widget from %Sidebar%."
3108
  msgstr ""
3109
 
3110
- #: defaults.php:1171
3111
- msgid "User moved widget"
3112
  msgstr ""
3113
 
3114
- #: defaults.php:1172
3115
- msgid "Moved the %WidgetName% widget."
3116
  msgstr ""
3117
 
3118
- #: defaults.php:1174
3119
- msgid "From"
 
3120
  msgstr ""
3121
 
3122
- #: defaults.php:1175
3123
- msgid "To"
3124
  msgstr ""
3125
 
3126
- #: defaults.php:1184
3127
- msgid "User changed widget position"
3128
  msgstr ""
3129
 
3130
- #: defaults.php:1185
3131
- msgid "Changed the position of the %WidgetName% widget in %Sidebar%."
3132
  msgstr ""
3133
 
3134
- #: defaults.php:1196
3135
- msgid "Menus"
3136
  msgstr ""
3137
 
3138
- #: defaults.php:1200
3139
- msgid "User created new menu"
3140
  msgstr ""
3141
 
3142
- #: defaults.php:1201
3143
- msgid "New menu called %MenuName%."
3144
  msgstr ""
3145
 
3146
- #: defaults.php:1210
3147
- msgid "User added content to a menu"
3148
  msgstr ""
3149
 
3150
- #: defaults.php:1211
3151
- msgid "Added the item %ContentName% to the menu %MenuName%."
3152
  msgstr ""
3153
 
3154
- #: defaults.php:1213 defaults.php:1225 defaults.php:1257
3155
- msgid "Item type"
3156
  msgstr ""
3157
 
3158
- #: defaults.php:1222
3159
- msgid "User removed content from a menu"
3160
  msgstr ""
3161
 
3162
- #: defaults.php:1223
3163
- msgid "Removed the item %ContentName% from the menu %MenuName%."
3164
  msgstr ""
3165
 
3166
- #: defaults.php:1234
3167
- msgid "User deleted menu"
3168
  msgstr ""
3169
 
3170
- #: defaults.php:1235
3171
- msgid "Deleted the menu %MenuName%."
3172
  msgstr ""
3173
 
3174
- #: defaults.php:1244
3175
- msgid "User changed menu setting"
3176
  msgstr ""
3177
 
3178
- #: defaults.php:1245
3179
- msgid "The setting %MenuSetting% in the menu %MenuName%."
3180
  msgstr ""
3181
 
3182
- #: defaults.php:1254
3183
- msgid "User modified content in a menu"
3184
  msgstr ""
3185
 
3186
- #: defaults.php:1255
3187
- msgid "Modified the item %ContentName% in the menu %MenuName%."
3188
  msgstr ""
3189
 
3190
- #: defaults.php:1266
3191
- msgid "User changed name of a menu"
3192
  msgstr ""
3193
 
3194
- #: defaults.php:1267
3195
- msgid "Renamed the menu %OldMenuName% to %MenuName%."
3196
  msgstr ""
3197
 
3198
- #: defaults.php:1276
3199
- msgid "User changed order of the objects in a menu"
3200
  msgstr ""
3201
 
3202
- #: defaults.php:1277
3203
- msgid "Changed the order of the items in the menu %MenuName%."
3204
  msgstr ""
3205
 
3206
- #: defaults.php:1286
3207
- msgid "User moved objects as a sub-item"
3208
  msgstr ""
3209
 
3210
- #: defaults.php:1287
3211
- msgid "Moved items as sub-items in the menu %MenuName%."
3212
  msgstr ""
3213
 
3214
- #: defaults.php:1289
3215
- msgid "Moved item"
3216
  msgstr ""
3217
 
3218
- #: defaults.php:1290
3219
- msgid "as a sub-item of"
3220
  msgstr ""
3221
 
3222
- #: defaults.php:1310
3223
- msgid "User modified a draft blog post"
3224
  msgstr ""
3225
 
3226
- #: defaults.php:1311
3227
- msgid "Modified the draft post with the %PostTitle%. %EditorLinkPost%."
3228
  msgstr ""
3229
 
3230
- #: defaults.php:1316
3231
- msgid "User created a new post with custom post type and saved it as draft"
3232
  msgstr ""
3233
 
3234
- #: defaults.php:1317
3235
- msgid "Created a new custom post called %PostTitle% of type %PostType%. %EditorLinkPost%."
3236
  msgstr ""
3237
 
3238
- #: defaults.php:1322
3239
- msgid "User published a post with custom post type"
3240
  msgstr ""
3241
 
3242
- #: defaults.php:1323
3243
- msgid "Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%."
3244
  msgstr ""
3245
 
3246
- #: defaults.php:1328
3247
- msgid "User modified a post with custom post type"
3248
  msgstr ""
3249
 
3250
- #: defaults.php:1329
3251
- msgid "Modified the custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%."
3252
  msgstr ""
3253
 
3254
- #: defaults.php:1334
3255
- msgid "User modified a draft post with custom post type"
3256
  msgstr ""
3257
 
3258
- #: defaults.php:1335
3259
- msgid "Modified the draft custom post %PostTitle% of type is %PostType%. %EditorLinkPost%."
3260
  msgstr ""
3261
 
3262
- #: defaults.php:1340
3263
- msgid "User permanently deleted post with custom post type"
3264
  msgstr ""
3265
 
3266
- #: defaults.php:1341
3267
- msgid "Permanently Deleted the custom post %PostTitle% of type %PostType%."
3268
  msgstr ""
3269
 
3270
- #: defaults.php:1346
3271
- msgid "User moved post with custom post type to trash"
3272
  msgstr ""
3273
 
3274
- #: defaults.php:1347
3275
- msgid "Moved the custom post %PostTitle% of type %PostType% to trash. Post URL was %PostUrl%."
3276
  msgstr ""
3277
 
3278
- #: defaults.php:1352
3279
- msgid "User restored post with custom post type from trash"
3280
  msgstr ""
3281
 
3282
- #: defaults.php:1353
3283
- msgid "The custom post %PostTitle% of type %PostType% has been restored from trash. %EditorLinkPost%."
3284
  msgstr ""
3285
 
3286
- #: defaults.php:1358
3287
- msgid "User changed the category of a post with custom post type"
3288
  msgstr ""
3289
 
3290
- #: defaults.php:1359
3291
- msgid "Changed the category(ies) of the custom post %PostTitle% of type %PostType% from %OldCategories% to %NewCategories%. %EditorLinkPost%."
3292
  msgstr ""
3293
 
3294
- #: defaults.php:1364
3295
- msgid "User changed the URL of a post with custom post type"
3296
  msgstr ""
3297
 
3298
- #: defaults.php:1365
3299
- msgid "Changed the URL of the custom post %PostTitle% of type %PostType% from %OldUrl% to %NewUrl%. %EditorLinkPost%."
3300
  msgstr ""
3301
 
3302
- #: defaults.php:1370
3303
- msgid "User changed the author or post with custom post type"
3304
  msgstr ""
3305
 
3306
- #: defaults.php:1371
3307
- msgid "Changed the author of custom post %PostTitle% of type %PostType% from %OldAuthor% to %NewAuthor%. %EditorLinkPost%."
3308
  msgstr ""
3309
 
3310
- #: defaults.php:1376
3311
- msgid "User changed the status of post with custom post type"
3312
  msgstr ""
3313
 
3314
- #: defaults.php:1377
3315
- msgid "Changed the status of custom post %PostTitle% of type %PostType% from %OldStatus% to %NewStatus%. %EditorLinkPost%."
3316
  msgstr ""
3317
 
3318
- #: defaults.php:1382
3319
- msgid "User changed the visibility of a post with custom post type"
3320
  msgstr ""
3321
 
3322
- #: defaults.php:1383
3323
- msgid "Changed the visibility of the custom post %PostTitle% of type %PostType% from %OldVisibility% to %NewVisibility%. %EditorLinkPost%."
3324
  msgstr ""
3325
 
3326
- #: defaults.php:1388
3327
- msgid "User changed the date of post with custom post type"
3328
  msgstr ""
3329
 
3330
- #: defaults.php:1389
3331
- msgid "Changed the date of the custom post %PostTitle% of type %PostType% from %OldDate% to %NewDate%. %EditorLinkPost%."
3332
  msgstr ""
3333
 
3334
- #: defaults.php:1394
3335
- msgid "User created a custom field for a custom post type"
3336
  msgstr ""
3337
 
3338
- #: defaults.php:1395
3339
- msgid "Created a new custom field %MetaKey% with value %MetaValue% in custom post %PostTitle% of type %PostType%. %EditorLinkPost%.<br>%MetaLink%."
3340
  msgstr ""
3341
 
3342
- #: defaults.php:1400
3343
- msgid "User updated a custom field for a custom post type"
 
3344
  msgstr ""
3345
 
3346
- #: defaults.php:1401
3347
- msgid "Modified the value of the custom field %MetaKey% from %MetaValueOld% to %MetaValueNew% in custom post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
3348
  msgstr ""
3349
 
3350
- #: defaults.php:1406
3351
- msgid "User deleted a custom field from a custom post type"
3352
  msgstr ""
3353
 
3354
- #: defaults.php:1407
3355
- msgid "Deleted the custom field %MetaKey% with id %MetaID% from custom post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
3356
  msgstr ""
3357
 
3358
- #: defaults.php:1412
3359
- msgid "User updated a custom field name for a custom post type"
3360
  msgstr ""
3361
 
3362
- #: defaults.php:1413
3363
- msgid "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in custom post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
3364
  msgstr ""
3365
 
3366
- #: defaults.php:1418
3367
- msgid "User modified content for a published custom post type"
3368
  msgstr ""
3369
 
3370
- #: defaults.php:1419
3371
- msgid "Modified the content of the published custom post type %PostTitle%. Post URL is %PostUrl%. %EditorLinkPost%."
3372
  msgstr ""
3373
 
3374
- #: defaults.php:1424
3375
- msgid "User modified content for a draft post"
 
3376
  msgstr ""
3377
 
3378
- #: defaults.php:1425
3379
- msgid "Modified the content of the draft post %PostTitle%.%RevisionLink% %EditorLinkPost%."
3380
  msgstr ""
3381
 
3382
- #: defaults.php:1430
3383
- msgid "User modified content for a draft custom post type"
3384
  msgstr ""
3385
 
3386
- #: defaults.php:1431
3387
- msgid "Modified the content of the draft custom post type %PostTitle%.%EditorLinkPost%."
3388
  msgstr ""
3389
 
3390
- #: defaults.php:1436
3391
- msgid "User modified content of a post"
3392
  msgstr ""
3393
 
3394
- #: defaults.php:1437
3395
- msgid "Modified the content of post %PostTitle% which is submitted for review.%RevisionLink% %EditorLinkPost%."
3396
  msgstr ""
3397
 
3398
- #: defaults.php:1442
3399
- msgid "User scheduled a custom post type"
3400
  msgstr ""
3401
 
3402
- #: defaults.php:1443
3403
- msgid "Scheduled the custom post type %PostTitle% to be published %PublishingDate%. %EditorLinkPost%."
3404
  msgstr ""
3405
 
3406
- #: defaults.php:1448
3407
- msgid "User changed title of a custom post type"
3408
  msgstr ""
3409
 
3410
- #: defaults.php:1449
3411
- msgid "Changed the title of the custom post %OldTitle% to %NewTitle%. %EditorLinkPost%."
3412
  msgstr ""
3413
 
3414
- #: defaults.php:1454
3415
- msgid "User opened a custom post type in the editor"
3416
  msgstr ""
3417
 
3418
- #: defaults.php:1455
3419
- msgid "Opened the custom post %PostTitle% of type %PostType% in the editor. View the post: %EditorLinkPost%."
3420
  msgstr ""
3421
 
3422
- #: defaults.php:1460
3423
- msgid "User viewed a custom post type"
 
 
 
 
3424
  msgstr ""
3425
 
3426
- #: defaults.php:1461
3427
- msgid "Viewed the custom post %PostTitle% of type %PostType%. View the post: %PostUrl%."
3428
  msgstr ""
3429
 
3430
- #: defaults.php:1466
3431
- msgid "A plugin created a custom post"
3432
  msgstr ""
3433
 
3434
- #: defaults.php:1467
3435
- msgid "A plugin automatically created the following custom post: %PostTitle%."
3436
  msgstr ""
3437
 
3438
- #: defaults.php:1472
3439
- msgid "A plugin deleted a custom post"
3440
  msgstr ""
3441
 
3442
- #: defaults.php:1473
3443
- msgid "A plugin automatically deleted the following custom post: %PostTitle%."
3444
  msgstr ""
3445
 
3446
- #: defaults.php:1478
3447
- msgid "A plugin modified a custom post"
3448
  msgstr ""
3449
 
3450
- #: defaults.php:1479
3451
- msgid "Plugin modified the custom post %PostTitle%. View the post: %EditorLinkPost%."
3452
  msgstr ""
3453
 
3454
- #: defaults.php:1495
3455
- msgid "User created a new WordPress page and saved it as draft"
3456
  msgstr ""
3457
 
3458
- #: defaults.php:1496
3459
- msgid "Created a new page called %PostTitle% and saved it as draft. %EditorLinkPage%."
3460
  msgstr ""
3461
 
3462
- #: defaults.php:1501
3463
- msgid "User published a WordPress page"
3464
  msgstr ""
3465
 
3466
- #: defaults.php:1502
3467
- msgid "Published a page called %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
3468
  msgstr ""
3469
 
3470
- #: defaults.php:1507
3471
- msgid "User modified a published WordPress page"
3472
  msgstr ""
3473
 
3474
- #: defaults.php:1508
3475
- msgid "Modified the published page %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
3476
  msgstr ""
3477
 
3478
- #: defaults.php:1513
3479
- msgid "User modified a draft WordPress page"
3480
  msgstr ""
3481
 
3482
- #: defaults.php:1514
3483
- msgid "Modified the draft page %PostTitle%. Page ID is %PostID%. %EditorLinkPage%."
3484
  msgstr ""
3485
 
3486
- #: defaults.php:1519
3487
- msgid "User permanently deleted a page from the trash"
3488
  msgstr ""
3489
 
3490
- #: defaults.php:1520
3491
- msgid "Permanently deleted the page %PostTitle%."
3492
  msgstr ""
3493
 
3494
- #: defaults.php:1525
3495
- msgid "User moved WordPress page to the trash"
3496
  msgstr ""
3497
 
3498
- #: defaults.php:1526
3499
- msgid "Moved the page %PostTitle% to trash. Page URL was %PostUrl%."
3500
  msgstr ""
3501
 
3502
- #: defaults.php:1531
3503
- msgid "User restored a WordPress page from trash"
3504
  msgstr ""
3505
 
3506
- #: defaults.php:1532
3507
- msgid "Page %PostTitle% has been restored from trash. %EditorLinkPage%."
3508
  msgstr ""
3509
 
3510
- #: defaults.php:1537
3511
- msgid "User changed page URL"
3512
  msgstr ""
3513
 
3514
- #: defaults.php:1538
3515
- msgid "Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%. %EditorLinkPage%."
3516
  msgstr ""
3517
 
3518
- #: defaults.php:1543
3519
- msgid "User changed page author"
3520
  msgstr ""
3521
 
3522
- #: defaults.php:1544
3523
- msgid "Changed the author of the page %PostTitle% from %OldAuthor% to %NewAuthor%. %EditorLinkPage%."
3524
  msgstr ""
3525
 
3526
- #: defaults.php:1549
3527
- msgid "User changed page status"
3528
  msgstr ""
3529
 
3530
- #: defaults.php:1550
3531
- msgid "Changed the status of the page %PostTitle% from %OldStatus% to %NewStatus%. %EditorLinkPage%."
3532
  msgstr ""
3533
 
3534
- #: defaults.php:1555
3535
- msgid "User changed the visibility of a page post"
3536
  msgstr ""
3537
 
3538
- #: defaults.php:1556
3539
- msgid "Changed the visibility of the page %PostTitle% from %OldVisibility% to %NewVisibility%. %EditorLinkPage%."
3540
  msgstr ""
3541
 
3542
- #: defaults.php:1561
3543
- msgid "User changed the date of a page post"
3544
  msgstr ""
3545
 
3546
- #: defaults.php:1562
3547
- msgid "Changed the date of the page %PostTitle% from %OldDate% to %NewDate%. %EditorLinkPage%."
3548
  msgstr ""
3549
 
3550
- #: defaults.php:1567
3551
- msgid "User created a custom field for a page"
3552
  msgstr ""
3553
 
3554
- #: defaults.php:1568
3555
- msgid "Created a new custom field called %MetaKey% with value %MetaValue% in the page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
3556
  msgstr ""
3557
 
3558
- #: defaults.php:1573
3559
- msgid "User updated a custom field value for a page"
3560
  msgstr ""
3561
 
3562
- #: defaults.php:1574
3563
- msgid "Modified the value of the custom field %MetaKey% from %MetaValueOld% to %MetaValueNew% in the page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
3564
  msgstr ""
3565
 
3566
- #: defaults.php:1579
3567
- msgid "User deleted a custom field from a page"
3568
  msgstr ""
3569
 
3570
- #: defaults.php:1580
3571
- msgid "Deleted the custom field %MetaKey% with id %MetaID% from page %PostTitle% %EditorLinkPage%<br>%MetaLink%."
3572
  msgstr ""
3573
 
3574
- #: defaults.php:1585
3575
- msgid "User updated a custom field name for a page"
3576
  msgstr ""
3577
 
3578
- #: defaults.php:1586
3579
- msgid "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in the page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
3580
  msgstr ""
3581
 
3582
- #: defaults.php:1591
3583
- msgid "User modified content for a published page"
3584
  msgstr ""
3585
 
3586
- #: defaults.php:1592
3587
- msgid "Modified the content of the published page %PostTitle%. Page URL is %PostUrl%. %RevisionLink% %EditorLinkPage%."
3588
  msgstr ""
3589
 
3590
- #: defaults.php:1597
3591
- msgid "User modified content for a draft page"
3592
  msgstr ""
3593
 
3594
- #: defaults.php:1598
3595
- msgid "Modified the content of draft page %PostTitle%.%RevisionLink% %EditorLinkPage%."
3596
  msgstr ""
3597
 
3598
- #: defaults.php:1603
3599
- msgid "User scheduled a page"
3600
  msgstr ""
3601
 
3602
- #: defaults.php:1604
3603
- msgid "Scheduled the page %PostTitle% to be published %PublishingDate%. %EditorLinkPage%."
3604
  msgstr ""
3605
 
3606
- #: defaults.php:1609
3607
- msgid "User changed title of a page"
3608
  msgstr ""
3609
 
3610
- #: defaults.php:1610
3611
- msgid "Changed the title of the page %OldTitle% to %NewTitle%. %EditorLinkPage%."
3612
  msgstr ""
3613
 
3614
- #: defaults.php:1615
3615
- msgid "User opened a page in the editor"
3616
  msgstr ""
3617
 
3618
- #: defaults.php:1616
3619
- msgid "Opened the page %PostTitle% in the editor. View the page: %EditorLinkPage%."
3620
  msgstr ""
3621
 
3622
- #: defaults.php:1621
3623
- msgid "User viewed a page"
3624
  msgstr ""
3625
 
3626
- #: defaults.php:1622
3627
- msgid "Viewed the page %PostTitle%. View the page: %PostUrl%."
3628
  msgstr ""
3629
 
3630
- #: defaults.php:1627
3631
- msgid "User disabled Comments/Trackbacks and Pingbacks on a draft post"
3632
  msgstr ""
3633
 
3634
- #: defaults.php:1628
3635
- msgid "Disabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
3636
  msgstr ""
3637
 
3638
- #: defaults.php:1633
3639
- msgid "User enabled Comments/Trackbacks and Pingbacks on a draft post"
3640
  msgstr ""
3641
 
3642
- #: defaults.php:1634
3643
- msgid "Enabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
3644
  msgstr ""
3645
 
3646
- #: defaults.php:1639
3647
- msgid "User disabled Comments/Trackbacks and Pingbacks on a published page"
3648
  msgstr ""
3649
 
3650
- #: defaults.php:1640
3651
- msgid "Disabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
3652
  msgstr ""
3653
 
3654
- #: defaults.php:1645
3655
- msgid "User enabled Comments/Trackbacks and Pingbacks on a published page"
3656
  msgstr ""
3657
 
3658
- #: defaults.php:1646
3659
- msgid "Enabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
3660
  msgstr ""
3661
 
3662
- #: defaults.php:1651
3663
- msgid "User disabled Comments/Trackbacks and Pingbacks on a draft page"
3664
  msgstr ""
3665
 
3666
- #: defaults.php:1652
3667
- msgid "Disabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
3668
  msgstr ""
3669
 
3670
- #: defaults.php:1657
3671
- msgid "User enabled Comments/Trackbacks and Pingbacks on a draft page"
3672
  msgstr ""
3673
 
3674
- #: defaults.php:1658
3675
- msgid "Enabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
3676
  msgstr ""
3677
 
3678
- #: defaults.php:1663
3679
- msgid "A plugin created a page"
3680
  msgstr ""
3681
 
3682
- #: defaults.php:1664
3683
- msgid "A plugin automatically created the following page: %PostTitle%."
3684
  msgstr ""
3685
 
3686
- #: defaults.php:1669
3687
- msgid "A plugin deleted a page"
3688
  msgstr ""
3689
 
3690
- #: defaults.php:1670
3691
- msgid "A plugin automatically deleted the following page: %PostTitle%."
3692
  msgstr ""
3693
 
3694
- #: defaults.php:1675
3695
- msgid "A plugin modified a page"
3696
  msgstr ""
3697
 
3698
- #: defaults.php:1676
3699
- msgid "Plugin modified the page %PostTitle%. View the page: %EditorLinkPage%."
3700
  msgstr ""
3701
 
3702
- #: defaults.php:1681
3703
- msgid "User Accounts"
3704
  msgstr ""
3705
 
3706
- #: defaults.php:1682
3707
- msgid "User Profiles"
3708
  msgstr ""
3709
 
3710
- #: defaults.php:1686
3711
- msgid "New user was created on WordPress"
3712
  msgstr ""
3713
 
3714
- #: defaults.php:1687
3715
- msgid "A new user %NewUserData->Username% is created via registration."
3716
  msgstr ""
3717
 
3718
- #: defaults.php:1698
3719
- msgid "User created another WordPress user"
3720
  msgstr ""
3721
 
3722
- #: defaults.php:1699
3723
- msgid "Created the new user: %NewUserData->Username%."
3724
  msgstr ""
3725
 
3726
- #: defaults.php:1702 defaults.php:1716 defaults.php:1730 defaults.php:1744
3727
- #: defaults.php:1758 defaults.php:1773 defaults.php:1788 defaults.php:1802
3728
- #: defaults.php:1816 defaults.php:1832 defaults.php:1861 defaults.php:1875
3729
- #: defaults.php:1890 defaults.php:1906 defaults.php:1920 defaults.php:1935
3730
- #: defaults.php:1949 defaults.php:1963 defaults.php:1980 defaults.php:1994
3731
- #: defaults.php:2008 defaults.php:2022 defaults.php:2035
3732
- msgid "First name"
3733
  msgstr ""
3734
 
3735
- #: defaults.php:1703 defaults.php:1717 defaults.php:1731 defaults.php:1745
3736
- #: defaults.php:1759 defaults.php:1774 defaults.php:1789 defaults.php:1803
3737
- #: defaults.php:1817 defaults.php:1833 defaults.php:1848 defaults.php:1876
3738
- #: defaults.php:1891 defaults.php:1907 defaults.php:1921 defaults.php:1936
3739
- #: defaults.php:1950 defaults.php:1964 defaults.php:1981 defaults.php:1995
3740
- #: defaults.php:2009 defaults.php:2023 defaults.php:2036
3741
- msgid "Last name"
3742
  msgstr ""
3743
 
3744
- #: defaults.php:1712
3745
- msgid "The role of a user was changed by another WordPress user"
3746
  msgstr ""
3747
 
3748
- #: defaults.php:1713
3749
- msgid "Changed the role of user %TargetUsername% to %NewRole%."
3750
  msgstr ""
3751
 
3752
- #: defaults.php:1715 defaults.php:2522
3753
- msgid "Previous role"
3754
  msgstr ""
3755
 
3756
- #: defaults.php:1726
3757
- msgid "User has changed his or her password"
3758
  msgstr ""
3759
 
3760
- #: defaults.php:1727
3761
- msgid "Changed the password."
3762
  msgstr ""
3763
 
3764
- #: defaults.php:1740
3765
- msgid "User changed another user's password"
3766
  msgstr ""
3767
 
3768
- #: defaults.php:1741
3769
- msgid "Changed the password of the user %TargetUserData->Username%."
3770
  msgstr ""
3771
 
3772
- #: defaults.php:1754
3773
- msgid "User changed his or her email address"
3774
  msgstr ""
3775
 
3776
- #: defaults.php:1755
3777
- msgid "Changed the email address to %NewEmail%."
3778
  msgstr ""
3779
 
3780
- #: defaults.php:1760 defaults.php:1775
3781
- msgid "Previous email address"
3782
  msgstr ""
3783
 
3784
- #: defaults.php:1769
3785
- msgid "User changed another user's email address"
3786
  msgstr ""
3787
 
3788
- #: defaults.php:1770
3789
- msgid "Changed the email address of the user %TargetUsername% to %NewEmail%."
3790
  msgstr ""
3791
 
3792
- #: defaults.php:1784
3793
- msgid "User was deleted by another user"
3794
  msgstr ""
3795
 
3796
- #: defaults.php:1785
3797
- msgid "Deleted the user %TargetUserData->Username%."
3798
  msgstr ""
3799
 
3800
- #: defaults.php:1798
3801
- msgid "User opened the profile page of another user"
3802
  msgstr ""
3803
 
3804
- #: defaults.php:1799
3805
- msgid "Opened the profile page of user %TargetUsername%."
3806
  msgstr ""
3807
 
3808
- #: defaults.php:1812
3809
- msgid "User updated a custom field value for a user"
3810
  msgstr ""
3811
 
3812
- #: defaults.php:1813
3813
- msgid "Changed the value of the custom field %custom_field_name% in the user profile %TargetUsername%."
3814
  msgstr ""
3815
 
3816
- #: defaults.php:1818 defaults.php:2612 defaults.php:2644 defaults.php:2908
3817
- msgid "Previous value"
3818
  msgstr ""
3819
 
3820
- #: defaults.php:1819 defaults.php:2909
3821
- msgid "New value"
3822
  msgstr ""
3823
 
3824
- #: defaults.php:1828
3825
- msgid "User created a custom field value for a user"
3826
  msgstr ""
3827
 
3828
- #: defaults.php:1829
3829
- msgid "Created the custom field %custom_field_name% in the user profile %TargetUsername%."
3830
  msgstr ""
3831
 
3832
- #: defaults.php:1843
3833
- msgid "User changed first name for a user"
3834
  msgstr ""
3835
 
3836
- #: defaults.php:1844
3837
- msgid "Changed the first name of the user %TargetUsername% to %new_firstname%."
3838
  msgstr ""
3839
 
3840
- #: defaults.php:1847
3841
- msgid "Previous name"
3842
  msgstr ""
3843
 
3844
- #: defaults.php:1857
3845
- msgid "User changed last name for a user"
3846
  msgstr ""
3847
 
3848
- #: defaults.php:1858
3849
- msgid "Changed the last name of the user %TargetUsername% to %new_lastname%."
3850
  msgstr ""
3851
 
3852
- #: defaults.php:1862
3853
- msgid "Previous last name"
3854
  msgstr ""
3855
 
3856
- #: defaults.php:1871
3857
- msgid "User changed nickname for a user"
3858
  msgstr ""
3859
 
3860
- #: defaults.php:1872
3861
- msgid "Changed the nickname of the user %TargetUsername% to %new_nickname%."
3862
  msgstr ""
3863
 
3864
- #: defaults.php:1877
3865
- msgid "Previous nickname"
3866
  msgstr ""
3867
 
3868
- #: defaults.php:1886
3869
- msgid "User changed the display name for a user"
3870
  msgstr ""
3871
 
3872
- #: defaults.php:1887
3873
- msgid "Changed the display name of the user %TargetUsername% to %new_displayname%."
3874
  msgstr ""
3875
 
3876
- #: defaults.php:1892
3877
- msgid "Previous display name"
3878
  msgstr ""
3879
 
3880
- #: defaults.php:1902 defaults.php:1916
3881
- msgid "User created an application password"
3882
  msgstr ""
3883
 
3884
- #: defaults.php:1903
3885
- msgid "The application password %friendly_name%."
3886
  msgstr ""
3887
 
3888
- #: defaults.php:1917
3889
- msgid "The application password %friendly_name% for the user %login%."
3890
  msgstr ""
3891
 
3892
- #: defaults.php:1931
3893
- msgid "User revoked all application passwords"
3894
  msgstr ""
3895
 
3896
- #: defaults.php:1932
3897
- msgid "All application passwords."
3898
  msgstr ""
3899
 
3900
- #: defaults.php:1945
3901
- msgid "User revoked all application passwords for a user"
3902
  msgstr ""
3903
 
3904
- #: defaults.php:1946
3905
- msgid "All application passwords from the user %login%."
3906
  msgstr ""
3907
 
3908
- #: defaults.php:1959
3909
- msgid "Admin sent a password reset request to a user"
3910
  msgstr ""
3911
 
3912
- #: defaults.php:1960
3913
- msgid "Sent a password reset request to the user %login%."
3914
  msgstr ""
3915
 
3916
- #: defaults.php:1972
3917
- msgid "Multisite User Profiles"
3918
  msgstr ""
3919
 
3920
- #: defaults.php:1976
3921
- msgid "User granted Super Admin privileges"
3922
  msgstr ""
3923
 
3924
- #: defaults.php:1977
3925
- msgid "Granted Super Admin privileges to the user %TargetUsername%."
3926
  msgstr ""
3927
 
3928
- #: defaults.php:1990
3929
- msgid "User revoked from Super Admin privileges"
3930
  msgstr ""
3931
 
3932
- #: defaults.php:1991
3933
- msgid "Revoked Super Admin privileges from %TargetUsername%."
3934
  msgstr ""
3935
 
3936
- #: defaults.php:2004
3937
- msgid "Existing user added to a site"
3938
  msgstr ""
3939
 
3940
- #: defaults.php:2005
3941
- msgid "Added user %TargetUsername% to the site %SiteName%."
3942
  msgstr ""
3943
 
3944
- #: defaults.php:2018
3945
- msgid "User removed from site"
3946
  msgstr ""
3947
 
3948
- #: defaults.php:2019
3949
- msgid "Removed user %TargetUsername% from the site %SiteName%"
3950
  msgstr ""
3951
 
3952
- #: defaults.php:2021
3953
- msgid "Site role"
3954
  msgstr ""
3955
 
3956
- #: defaults.php:2032
3957
- msgid "New network user created"
3958
  msgstr ""
3959
 
3960
- #: defaults.php:2033
3961
- msgid "Created the new network user %NewUserData->Username%."
3962
  msgstr ""
3963
 
3964
- #: defaults.php:2045
3965
- msgid "Plugins & Themes"
3966
  msgstr ""
3967
 
3968
- #: defaults.php:2050
3969
- msgid "User installed a plugin"
3970
  msgstr ""
3971
 
3972
- #: defaults.php:2051
3973
- msgid "Installed the plugin %Plugin->Name%."
3974
  msgstr ""
3975
 
3976
- #: defaults.php:2053 defaults.php:2066 defaults.php:2079 defaults.php:2092
3977
- #: defaults.php:2197 defaults.php:2210 defaults.php:2223 defaults.php:2298
3978
- #: defaults.php:2311
3979
- msgid "Version"
3980
  msgstr ""
3981
 
3982
- #: defaults.php:2054 defaults.php:2067 defaults.php:2080 defaults.php:2093
3983
- #: defaults.php:2106 defaults.php:2198 defaults.php:2211 defaults.php:2224
3984
- #: defaults.php:2273 defaults.php:2299 defaults.php:2312
3985
- msgid "Install location"
3986
  msgstr ""
3987
 
3988
- #: defaults.php:2063
3989
- msgid "User activated a WordPress plugin"
3990
  msgstr ""
3991
 
3992
- #: defaults.php:2064
3993
- msgid "Activated the plugin %PluginData->Name%."
3994
  msgstr ""
3995
 
3996
- #: defaults.php:2076
3997
- msgid "User deactivated a WordPress plugin"
3998
  msgstr ""
3999
 
4000
- #: defaults.php:2077
4001
- msgid "Deactivated the plugin %PluginData->Name%."
4002
  msgstr ""
4003
 
4004
- #: defaults.php:2089
4005
- msgid "User uninstalled a plugin"
4006
  msgstr ""
4007
 
4008
- #: defaults.php:2090
4009
- msgid "Uninstalled the plugin %PluginData->Name%."
4010
  msgstr ""
4011
 
4012
- #: defaults.php:2102
4013
- msgid "User upgraded a plugin"
4014
  msgstr ""
4015
 
4016
- #: defaults.php:2103
4017
- msgid "Updated the plugin %PluginData->Name%."
4018
  msgstr ""
4019
 
4020
- #: defaults.php:2105
4021
- msgid "Updated version"
4022
  msgstr ""
4023
 
4024
- #: defaults.php:2115
4025
- msgid "Plugin created table"
4026
  msgstr ""
4027
 
4028
- #: defaults.php:2116
4029
- msgid "The plugin %Plugin->Name% created this table in the database."
4030
  msgstr ""
4031
 
4032
- #: defaults.php:2118 defaults.php:2130 defaults.php:2142 defaults.php:2236
4033
- #: defaults.php:2248
4034
- msgid "Table"
4035
  msgstr ""
4036
 
4037
- #: defaults.php:2127
4038
- msgid "Plugin modified table structure"
4039
  msgstr ""
4040
 
4041
- #: defaults.php:2128
4042
- msgid "The plugin %Plugin->Name% modified the structure of a database table."
4043
  msgstr ""
4044
 
4045
- #: defaults.php:2139
4046
- msgid "Plugin deleted table"
4047
  msgstr ""
4048
 
4049
- #: defaults.php:2140
4050
- msgid "The plugin %Plugin->Name% deleted this table from the database."
4051
  msgstr ""
4052
 
4053
- #: defaults.php:2151
4054
- msgid "A plugin created a post"
4055
  msgstr ""
4056
 
4057
- #: defaults.php:2152
4058
- msgid "The plugin created the post %PostTitle%."
4059
  msgstr ""
4060
 
4061
- #: defaults.php:2166
4062
- msgid "A plugin deleted a post"
4063
  msgstr ""
4064
 
4065
- #: defaults.php:2167
4066
- msgid "A plugin deleted the post %PostTitle%."
4067
  msgstr ""
4068
 
4069
- #: defaults.php:2181
4070
- msgid "User changed a file using the plugin editor"
4071
  msgstr ""
4072
 
4073
- #: defaults.php:2182
4074
- msgid "Modified the file %File% with the plugin editor."
4075
  msgstr ""
4076
 
4077
- #: defaults.php:2190
4078
- msgid "Themes"
4079
  msgstr ""
4080
 
4081
- #: defaults.php:2194
4082
- msgid "User installed a theme"
4083
  msgstr ""
4084
 
4085
- #: defaults.php:2195
4086
- msgid "Installed the theme %Theme->Name%."
4087
  msgstr ""
4088
 
4089
- #: defaults.php:2207
4090
- msgid "User activated a theme"
4091
  msgstr ""
4092
 
4093
- #: defaults.php:2208
4094
- msgid "Activated the theme %Theme->Name%."
4095
  msgstr ""
4096
 
4097
- #: defaults.php:2220
4098
- msgid "User uninstalled a theme"
4099
  msgstr ""
4100
 
4101
- #: defaults.php:2221
4102
- msgid "Deleted the theme %Theme->Name%."
4103
  msgstr ""
4104
 
4105
- #: defaults.php:2233
4106
- msgid "Theme created tables"
4107
  msgstr ""
4108
 
4109
- #: defaults.php:2234
4110
- msgid "The theme %Theme->Name% created this tables in the database."
4111
  msgstr ""
4112
 
4113
- #: defaults.php:2245
4114
- msgid "Theme modified tables structure"
4115
  msgstr ""
4116
 
4117
- #: defaults.php:2246
4118
- msgid "The theme %Theme->Name% modified the structure of this database table"
4119
  msgstr ""
4120
 
4121
- #: defaults.php:2257
4122
- msgid "Theme deleted tables"
4123
  msgstr ""
4124
 
4125
- #: defaults.php:2258
4126
- msgid "The theme %Theme->Name% deleted this table from the database."
4127
  msgstr ""
4128
 
4129
- #: defaults.php:2260 defaults.php:2327 defaults.php:2339 defaults.php:2351
4130
- #: defaults.php:2363 defaults.php:2375 defaults.php:2387
4131
- msgid "Tables"
4132
  msgstr ""
4133
 
4134
- #: defaults.php:2269
4135
- msgid "User updated a theme"
4136
  msgstr ""
4137
 
4138
- #: defaults.php:2270
4139
- msgid "Updated the theme %Theme->Name%."
4140
  msgstr ""
4141
 
4142
- #: defaults.php:2272 defaults.php:2441
4143
- msgid "New version"
4144
  msgstr ""
4145
 
4146
- #: defaults.php:2282
4147
- msgid "User changed a file using the theme editor"
4148
  msgstr ""
4149
 
4150
- #: defaults.php:2283
4151
- msgid "Modified the file %Theme%/%File% with the theme editor."
4152
  msgstr ""
4153
 
4154
- #: defaults.php:2291
4155
- msgid "Themes on Multisite"
4156
  msgstr ""
4157
 
4158
- #: defaults.php:2295
4159
- msgid "Activated theme on network"
4160
  msgstr ""
4161
 
4162
- #: defaults.php:2296
4163
- msgid "Network activated the theme %Theme->Name%."
4164
  msgstr ""
4165
 
4166
- #: defaults.php:2308
4167
- msgid "Deactivated theme from network"
4168
  msgstr ""
4169
 
4170
- #: defaults.php:2309
4171
- msgid "Network deactivated the theme %Theme->Name%."
4172
  msgstr ""
4173
 
4174
- #: defaults.php:2320
4175
- msgid "Database Events"
4176
  msgstr ""
4177
 
4178
- #: defaults.php:2324
4179
- msgid "Unknown component created tables"
4180
  msgstr ""
4181
 
4182
- #: defaults.php:2325
4183
- msgid "An unknown component created these tables in the database."
4184
  msgstr ""
4185
 
4186
- #: defaults.php:2336
4187
- msgid "Unknown component modified tables structure"
4188
  msgstr ""
4189
 
4190
- #: defaults.php:2337
4191
- msgid "An unknown component modified the structure of these database tables."
4192
  msgstr ""
4193
 
4194
- #: defaults.php:2348
4195
- msgid "Unknown component deleted tables"
4196
  msgstr ""
4197
 
4198
- #: defaults.php:2349
4199
- msgid "An unknown component deleted these tables from the database."
4200
  msgstr ""
4201
 
4202
- #: defaults.php:2360
4203
- msgid "WordPress created tables"
 
4204
  msgstr ""
4205
 
4206
- #: defaults.php:2361
4207
- msgid "WordPress has created these tables in the database."
4208
  msgstr ""
4209
 
4210
- #: defaults.php:2372
4211
- msgid "WordPress modified tables structure"
4212
  msgstr ""
4213
 
4214
- #: defaults.php:2373
4215
- msgid "WordPress modified the structure of these database tables."
4216
  msgstr ""
4217
 
4218
- #: defaults.php:2384
4219
- msgid "WordPress deleted tables"
4220
  msgstr ""
4221
 
4222
- #: defaults.php:2385
4223
- msgid "WordPress deleted these tables from the database."
4224
  msgstr ""
4225
 
4226
- #: defaults.php:2396
4227
- msgid "WordPress & System"
4228
  msgstr ""
4229
 
4230
- #: defaults.php:2401
4231
- msgid "Unknown Error"
4232
  msgstr ""
4233
 
4234
- #: defaults.php:2402
4235
- msgid "An unexpected error has occurred."
4236
  msgstr ""
4237
 
4238
- #: defaults.php:2407
4239
- msgid "PHP error"
4240
  msgstr ""
4241
 
4242
- #: defaults.php:2408 defaults.php:2414 defaults.php:2420 defaults.php:2426
4243
- #: defaults.php:2432
4244
- msgid "%Message%."
4245
  msgstr ""
4246
 
4247
- #: defaults.php:2413
4248
- msgid "PHP warning"
4249
  msgstr ""
4250
 
4251
- #: defaults.php:2419
4252
- msgid "PHP notice"
4253
  msgstr ""
4254
 
4255
- #: defaults.php:2425
4256
- msgid "PHP exception"
4257
  msgstr ""
4258
 
4259
- #: defaults.php:2431
4260
- msgid "PHP shutdown error"
4261
  msgstr ""
4262
 
4263
- #: defaults.php:2437
4264
- msgid "WordPress was updated"
4265
  msgstr ""
4266
 
4267
- #: defaults.php:2438
4268
- msgid "Updated WordPress."
4269
  msgstr ""
4270
 
4271
- #: defaults.php:2440
4272
- msgid "Previous version"
4273
  msgstr ""
4274
 
4275
- #: defaults.php:2457
4276
- msgid "Advertising Extensions"
4277
  msgstr ""
4278
 
4279
- #: defaults.php:2458
4280
- msgid "%PromoName% %PromoMessage%"
4281
  msgstr ""
4282
 
4283
- #: defaults.php:2462
4284
- msgid "Activity log plugin"
4285
  msgstr ""
4286
 
4287
- #: defaults.php:2466
4288
- msgid "Events automatically pruned by system"
4289
  msgstr ""
4290
 
4291
- #: defaults.php:2467
4292
- msgid "System automatically deleted %EventCount% events from the activity log."
4293
  msgstr ""
4294
 
4295
- #: defaults.php:2476
4296
- msgid "Reset the plugin's settings to default"
4297
  msgstr ""
4298
 
4299
- #: defaults.php:2477
4300
- msgid "Reset the activity log plugin's settings to default."
4301
  msgstr ""
4302
 
4303
- #: defaults.php:2486
4304
- msgid "Purged the activity log"
4305
  msgstr ""
4306
 
4307
- #: defaults.php:2487
4308
- msgid "Purged the activity log."
4309
  msgstr ""
4310
 
4311
- #: defaults.php:2496
4312
- msgid "Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard"
4313
  msgstr ""
4314
 
4315
- #: defaults.php:2497
4316
- msgid "Some <strong>WP Activity Log</strong> plugin settings on this site were propagated and overridden from the MainWP dashboard."
4317
  msgstr ""
4318
 
4319
- #: defaults.php:2505
4320
- msgid "WordPress Site Settings"
4321
  msgstr ""
4322
 
4323
- #: defaults.php:2509
4324
- msgid "Option Anyone Can Register in WordPress settings changed"
4325
  msgstr ""
4326
 
4327
- #: defaults.php:2510
4328
- msgid "The <strong>Membership</strong> setting <strong>Anyone can register</strong>."
4329
  msgstr ""
4330
 
4331
- #: defaults.php:2519
4332
- msgid "New User Default Role changed"
4333
  msgstr ""
4334
 
4335
- #: defaults.php:2520
4336
- msgid "Changed the <strong>New user default role</strong> WordPress setting."
4337
  msgstr ""
4338
 
4339
- #: defaults.php:2523
4340
- msgid "New role"
4341
  msgstr ""
4342
 
4343
- #: defaults.php:2532
4344
- msgid "WordPress Administrator Notification email changed"
4345
  msgstr ""
4346
 
4347
- #: defaults.php:2533
4348
- msgid "Change the <strong>Administrator email address</strong> in the WordPress settings."
4349
  msgstr ""
4350
 
4351
- #: defaults.php:2535
4352
- msgid "Previous address"
4353
  msgstr ""
4354
 
4355
- #: defaults.php:2536
4356
- msgid "New address"
4357
  msgstr ""
4358
 
4359
- #: defaults.php:2545
4360
- msgid "User changes the WordPress Permalinks"
4361
  msgstr ""
4362
 
4363
- #: defaults.php:2546
4364
- msgid "Changed the <strong>WordPress permalinks</strong>."
4365
  msgstr ""
4366
 
4367
- #: defaults.php:2548
4368
- msgid "Previous permalinks"
4369
  msgstr ""
4370
 
4371
- #: defaults.php:2549
4372
- msgid "New permalinks"
4373
  msgstr ""
4374
 
4375
- #: defaults.php:2558
4376
- msgid "Enabled/Disabled the option Discourage search engines from indexing this site"
4377
  msgstr ""
4378
 
4379
- #: defaults.php:2559
4380
- msgid "Changed the status of the WordPress setting <strong>Search engine visibility</strong> (Discourage search engines from indexing this site)"
4381
  msgstr ""
4382
 
4383
- #: defaults.php:2568
4384
- msgid "Enabled/Disabled comments on all the website"
4385
  msgstr ""
4386
 
4387
- #: defaults.php:2569
4388
- msgid "Changed the status of the WordPress setting <strong>Allow people to submit comments on new posts</strong>."
4389
  msgstr ""
4390
 
4391
- #: defaults.php:2579
4392
- msgid "Enabled/Disabled the option Comment author must fill out name and email"
4393
  msgstr ""
4394
 
4395
- #: defaults.php:2580
4396
- msgid "Changed the status of the WordPress setting <strong>.Comment author must fill out name and email</strong>."
4397
  msgstr ""
4398
 
4399
- #: defaults.php:2589
4400
- msgid "Enabled/Disabled the option Users must be logged in and registered to comment"
 
4401
  msgstr ""
4402
 
4403
- #: defaults.php:2590
4404
- msgid "Changed the status of the WordPress setting <strong>Users must be registered and logged in to comment</strong>."
4405
  msgstr ""
4406
 
4407
- #: defaults.php:2599
4408
- msgid "Enabled/Disabled the option to automatically close comments"
4409
  msgstr ""
4410
 
4411
- #: defaults.php:2600
4412
- msgid "Changed the status of the WordPress setting <strong>Automatically close comments after %Value% days</strong>."
4413
  msgstr ""
4414
 
4415
- #: defaults.php:2609
4416
- msgid "Changed the value of the option Automatically close comments"
4417
  msgstr ""
4418
 
4419
- #: defaults.php:2610
4420
- msgid "Changed the value of the WordPress setting <strong>Automatically close comments after a number of days</strong> to %NewValue%."
4421
  msgstr ""
4422
 
4423
- #: defaults.php:2621
4424
- msgid "Enabled/Disabled the option for comments to be manually approved"
 
4425
  msgstr ""
4426
 
4427
- #: defaults.php:2622
4428
- msgid "Changed the value of the WordPress setting <strong>Comments must be manualy approved</strong>."
4429
  msgstr ""
4430
 
4431
- #: defaults.php:2631
4432
- msgid "Enabled/Disabled the option for an author to have previously approved comments for the comments to appear"
4433
  msgstr ""
4434
 
4435
- #: defaults.php:2632
4436
- msgid "Changed the value of the WordPress setting <strong>Comment author must have a previously approved comment</strong>."
4437
  msgstr ""
4438
 
4439
- #: defaults.php:2641
4440
- msgid "Changed the number of links that a comment must have to be held in the queue"
4441
  msgstr ""
4442
 
4443
- #: defaults.php:2642
4444
- msgid "Changed the value of the WordPress setting <strong>Hold a comment in the queue if it contains links</strong> to %NewValue% links."
4445
  msgstr ""
4446
 
4447
- #: defaults.php:2653
4448
- msgid "Modified the list of keywords for comments moderation"
4449
  msgstr ""
4450
 
4451
- #: defaults.php:2654
4452
- msgid "Modified the list of keywords for comments medoration in WordPress."
4453
  msgstr ""
4454
 
4455
- #: defaults.php:2663
4456
- msgid "Modified the list of keywords for comments blacklisting"
4457
  msgstr ""
4458
 
4459
- #: defaults.php:2664
4460
- msgid "Modified the list of <strong>Disallowed comment keys</strong> (keywords) for comments blacklisting in WordPress."
4461
  msgstr ""
4462
 
4463
- #: defaults.php:2673
4464
- msgid "Option WordPress Address (URL) in WordPress settings changed"
4465
  msgstr ""
4466
 
4467
- #: defaults.php:2674
4468
- msgid "Changed the <strong>WordPress address (URL)</strong> tp %new_url%."
4469
  msgstr ""
4470
 
4471
- #: defaults.php:2685
4472
- msgid "Option Site Address (URL) in WordPress settings changed"
4473
  msgstr ""
4474
 
4475
- #: defaults.php:2686
4476
- msgid "Changed the <strong>Site address (URL)</strong> to %new_url%."
4477
  msgstr ""
4478
 
4479
- #: defaults.php:2697
4480
- msgid "Option Your homepage displays in WordPress settings changed"
4481
  msgstr ""
4482
 
4483
- #: defaults.php:2698
4484
- msgid "Changed the <strong>Your homepage displays</strong> WordPress setting to %new_homepage%."
4485
  msgstr ""
4486
 
4487
- #: defaults.php:2700 defaults.php:2787 defaults.php:2933
4488
- msgid "Previous setting"
4489
  msgstr ""
4490
 
4491
- #: defaults.php:2709
4492
- msgid "Option homepage in WordPress settings changed"
4493
  msgstr ""
4494
 
4495
- #: defaults.php:2710
4496
- msgid "Changed the <strong>Homepage</strong> in the WordPress settings to %new_page%."
4497
  msgstr ""
4498
 
4499
- #: defaults.php:2712 defaults.php:2724
4500
- msgid "Previous page"
4501
  msgstr ""
4502
 
4503
- #: defaults.php:2721
4504
- msgid "Option posts page in WordPress settings changed"
4505
  msgstr ""
4506
 
4507
- #: defaults.php:2722
4508
- msgid "Changed the <strong> Posts</strong> page in the WordPress settings to %new_page%."
4509
  msgstr ""
4510
 
4511
- #: defaults.php:2734
4512
- msgid "Option Timezone in WordPress settings changed"
4513
  msgstr ""
4514
 
4515
- #: defaults.php:2735
4516
- msgid "Changed the <strong>Timezone</strong> in the WordPress settings to %new_timezone%."
4517
  msgstr ""
4518
 
4519
- #: defaults.php:2737
4520
- msgid "Previous timezone"
4521
  msgstr ""
4522
 
4523
- #: defaults.php:2746
4524
- msgid "Option Date format in WordPress settings changed"
4525
  msgstr ""
4526
 
4527
- #: defaults.php:2747
4528
- msgid "Changed the <strong>Date format</strong> in the WordPress settings to %new_date_format%."
4529
  msgstr ""
4530
 
4531
- #: defaults.php:2749 defaults.php:2761
4532
- msgid "Previous format"
4533
  msgstr ""
4534
 
4535
- #: defaults.php:2758
4536
- msgid "Option Time format in WordPress settings changed"
4537
  msgstr ""
4538
 
4539
- #: defaults.php:2759
4540
- msgid "Changed the <strong>Time format</strong> in the WordPress settings to %new_time_format%."
4541
  msgstr ""
4542
 
4543
- #: defaults.php:2771
4544
- msgid "Option Automatic updates setting changed"
4545
  msgstr ""
4546
 
4547
- #: defaults.php:2772
4548
- msgid "Changed the <strong>Automatic updates</strong> setting."
4549
  msgstr ""
4550
 
4551
- #: defaults.php:2774
4552
- msgid "New setting status"
4553
  msgstr ""
4554
 
4555
- #: defaults.php:2784
4556
- msgid "Option Site Language setting changed"
4557
  msgstr ""
4558
 
4559
- #: defaults.php:2785
4560
- msgid "Changed the <strong>Site Language</strong> to %new_value%."
4561
  msgstr ""
4562
 
4563
- #: defaults.php:2796
4564
- msgid "Multisite Network Sites"
4565
  msgstr ""
4566
 
4567
- #: defaults.php:2801
4568
- msgid "New site added on the network"
4569
  msgstr ""
4570
 
4571
- #: defaults.php:2802
4572
- msgid "Added the new site %SiteName% to the network."
4573
  msgstr ""
4574
 
4575
- #: defaults.php:2813
4576
- msgid "Existing site archived"
4577
  msgstr ""
4578
 
4579
- #: defaults.php:2814
4580
- msgid "Archived the site %SiteName% on the network."
4581
  msgstr ""
4582
 
4583
- #: defaults.php:2825
4584
- msgid "Archived site has been unarchived"
4585
  msgstr ""
4586
 
4587
- #: defaults.php:2826
4588
- msgid "Unarchived the site %SiteName%."
4589
  msgstr ""
4590
 
4591
- #: defaults.php:2837
4592
- msgid "Deactivated site has been activated"
4593
  msgstr ""
4594
 
4595
- #: defaults.php:2838
4596
- msgid "Activated the site %SiteName% on the network."
4597
  msgstr ""
4598
 
4599
- #: defaults.php:2849
4600
- msgid "Site has been deactivated"
4601
  msgstr ""
4602
 
4603
- #: defaults.php:2850
4604
- msgid "Deactiveated the site %SiteName% on the network."
 
4605
  msgstr ""
4606
 
4607
- #: defaults.php:2861
4608
- msgid "Existing site deleted from network"
4609
  msgstr ""
4610
 
4611
- #: defaults.php:2862
4612
- msgid "The site: %SiteName%."
4613
  msgstr ""
4614
 
4615
- #: defaults.php:2873
4616
- msgid "Allow site administrators to add new users to their sites settings changed"
4617
  msgstr ""
4618
 
4619
- #: defaults.php:2874
4620
- msgid "Changed the status of the network setting <strong>Allow site administrators to add new users to their sites</strong>."
4621
  msgstr ""
4622
 
4623
- #: defaults.php:2883
4624
- msgid "Site upload space settings changed"
4625
  msgstr ""
4626
 
4627
- #: defaults.php:2884
4628
- msgid "Changed the status of the network setting <strong>Site upload space</strong> (to limit space allocated for each site's upload directory)."
4629
  msgstr ""
4630
 
4631
- #: defaults.php:2893
4632
- msgid "Site upload space file size settings changed"
4633
  msgstr ""
4634
 
4635
- #: defaults.php:2894
4636
- msgid "Changed the file size in the <strong>Site upload space</strong> network setting to %new_value%."
4637
  msgstr ""
4638
 
4639
- #: defaults.php:2896
4640
- msgid "Previous size (MB)"
4641
  msgstr ""
4642
 
4643
- #: defaults.php:2905
4644
- msgid "Site Upload file types settings changed"
4645
  msgstr ""
4646
 
4647
- #: defaults.php:2906
4648
- msgid "Changed the network setting <strong>Upload file types (list of allowed file types)</strong>."
4649
  msgstr ""
4650
 
4651
- #: defaults.php:2918
4652
- msgid "Site Max upload file size settings changed"
4653
  msgstr ""
4654
 
4655
- #: defaults.php:2919
4656
- msgid "Changed the <strong>Max upload file size</strong> network setting to %new_value%."
4657
  msgstr ""
4658
 
4659
- #: defaults.php:2921
4660
- msgid "Previous size (KB)"
4661
  msgstr ""
4662
 
4663
- #: defaults.php:2930
4664
- msgid "Allow new registrations settings changed"
4665
  msgstr ""
4666
 
4667
- #: defaults.php:2931
4668
- msgid "Changed the <strong>Allow new registrations</strong> setting to %new_setting%."
4669
  msgstr ""
4670
 
4671
- #: defaults.php:2952
4672
- msgid "Dummy"
4673
  msgstr ""
4674
 
4675
- #: wp-security-audit-log.php:928 wp-security-audit-log.php:955
4676
- #, php-format
4677
- msgid "Hey %1$s"
4678
  msgstr ""
4679
 
4680
- #: wp-security-audit-log.php:929
4681
- msgid "Never miss an important update! Opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with freemius.com."
4682
  msgstr ""
4683
 
4684
- #: wp-security-audit-log.php:930 wp-security-audit-log.php:958
4685
- msgid "Note: "
4686
  msgstr ""
4687
 
4688
- #: wp-security-audit-log.php:931 wp-security-audit-log.php:959
4689
- msgid "NO ACTIVITY LOG ACTIVITY & DATA IS SENT BACK TO OUR SERVERS."
4690
  msgstr ""
4691
 
4692
- #: wp-security-audit-log.php:957
4693
- #, php-format
4694
- 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."
4695
  msgstr ""
4696
 
4697
- #: wp-security-audit-log.php:979
4698
- #, php-format
4699
- msgid "Get a free 7-day trial of the premium edition of %s. No credit card required, no commitments!"
4700
  msgstr ""
4701
 
4702
- #: wp-security-audit-log.php:984
4703
- msgid "Start free trial"
4704
  msgstr ""
4705
 
4706
- #: wp-security-audit-log.php:1052
4707
- #, php-format
4708
- msgid "You need to activate the licence key to use WP Activity Log Premium. %2$s"
4709
  msgstr ""
4710
 
4711
- #: wp-security-audit-log.php:1053
4712
- msgid "Activate the licence key now"
4713
  msgstr ""
4714
 
4715
- #: wp-security-audit-log.php:1071
4716
- #, php-format
4717
- msgid "%s You need to renew your license to continue using premium features."
4718
  msgstr ""
4719
 
4720
- #: wp-security-audit-log.php:1075
4721
- #, php-format
4722
- msgid "The license is limited to %s sub-sites. You need to upgrade your license to cover all the sub-sites on this network."
4723
  msgstr ""
4724
 
4725
- #: wp-security-audit-log.php:1186
4726
- msgid "Error: You do not have sufficient permissions to disable this custom field."
4727
  msgstr ""
4728
 
4729
- #: wp-security-audit-log.php:1221
4730
- #, php-format
4731
- msgid "Custom Field <strong>%1$s</strong> is no longer being monitored.<br />Enable the monitoring of this custom field again from the"
4732
  msgstr ""
4733
 
4734
- #: wp-security-audit-log.php:1224
4735
- msgid "Excluded Objects"
4736
  msgstr ""
4737
 
4738
- #: wp-security-audit-log.php:1225
4739
- msgid " tab in the plugin settings"
 
4740
  msgstr ""
4741
 
4742
- #: wp-security-audit-log.php:1238
4743
- msgid "Error: You do not have sufficient permissions to disable this alert."
4744
  msgstr ""
4745
 
4746
- #: wp-security-audit-log.php:1262
4747
- #, php-format
4748
- msgid "Alert %1$s is no longer being monitored.<br /> %2$s"
4749
  msgstr ""
4750
 
4751
- #: wp-security-audit-log.php:1262
4752
- msgid "You can enable this alert again from the Enable/Disable Alerts node in the plugin menu."
4753
  msgstr ""
4754
 
4755
- #: wp-security-audit-log.php:1343
4756
- #, php-format
4757
- msgid "You are using a version of PHP that is older than %s, which is no longer supported."
4758
  msgstr ""
4759
 
4760
- #: wp-security-audit-log.php:1345
4761
- 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."
4762
  msgstr ""
4763
 
4764
- #: wp-security-audit-log.php:1350
4765
- #, php-format
4766
- msgid "Please install the %s plugin on the MainWP dashboard."
4767
  msgstr ""
4768
 
4769
- #: wp-security-audit-log.php:1350
4770
- msgid "Activity Log for MainWP"
4771
  msgstr ""
4772
 
4773
- #: wp-security-audit-log.php:1352
4774
- #, php-format
4775
- msgid "The WP Activity Log should be installed on the child sites only. Refer to the %s for more information."
4776
  msgstr ""
4777
 
4778
- #: wp-security-audit-log.php:1352
4779
- msgid "getting started guide"
4780
  msgstr ""
4781
 
4782
- #: wp-security-audit-log.php:1897
4783
- 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."
4784
  msgstr ""
4785
 
4786
- #: wp-security-audit-log.php:1916
4787
- msgid "Every 6 hours"
4788
  msgstr ""
4789
 
4790
- #: wp-security-audit-log.php:1920
4791
- msgid "Every 45 minutes"
4792
  msgstr ""
4793
 
4794
- #: wp-security-audit-log.php:1924
4795
- msgid "Every 30 minutes"
4796
  msgstr ""
4797
 
4798
- #: wp-security-audit-log.php:1928
4799
- msgid "Every 15 minutes"
4800
  msgstr ""
4801
 
4802
- #: wp-security-audit-log.php:1932
4803
- msgid "Every 10 minutes"
4804
  msgstr ""
4805
 
4806
- #: wp-security-audit-log.php:1936
4807
- msgid "Every 1 minute"
4808
  msgstr ""
4809
 
4810
- #: wp-security-audit-log.php:1950
4811
- #, php-format
4812
- msgid "Method %1$s is deprecated since version %2$s!"
4813
  msgstr ""
1
  # Copyright (C) 2021 wp-security-audit-log
2
  # This file is distributed under the same license as the wp-security-audit-log package.
 
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: wp-security-audit-log\n"
11
  "Report-Msgid-Bugs-To: https://www.wpwhitesecurity.com\n"
12
  "X-Poedit-Basepath: ..\n"
13
  "X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
 
 
 
 
 
14
  "X-Poedit-SearchPath-0: .\n"
15
  "X-Poedit-SearchPathExcluded-0: *.js\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
 
19
+ #: defaults.php:173
20
+ msgid "Critical severity events."
21
  msgstr ""
22
 
23
+ #: defaults.php:175
24
+ msgid "High severity events."
25
  msgstr ""
26
 
27
+ #: defaults.php:177
28
+ msgid "Medium severity events."
29
  msgstr ""
30
 
31
+ #: defaults.php:179
32
+ msgid "Low severity events."
33
  msgstr ""
34
 
35
+ #: defaults.php:181
36
+ msgid "Informational events."
 
37
  msgstr ""
38
 
39
+ #: defaults.php:186
40
+ msgid "Users Logins & Sessions Events"
 
41
  msgstr ""
42
 
43
+ #: defaults.php:187, extensions/email-notifications/classes/Notifications.php:1339
44
+ msgid "User Activity"
45
  msgstr ""
46
 
47
+ #: defaults.php:191
48
+ msgid "User logged in"
 
49
  msgstr ""
50
 
51
+ #: defaults.php:192
52
+ msgid "User logged in."
53
  msgstr ""
54
 
55
+ #: defaults.php:201
56
+ msgid "User logged out"
57
  msgstr ""
58
 
59
+ #: defaults.php:202
60
+ msgid "User logged out."
 
 
61
  msgstr ""
62
 
63
+ #: defaults.php:211
64
+ msgid "Login failed"
 
 
65
  msgstr ""
66
 
67
+ #: defaults.php:212, defaults.php:222
68
+ msgid "%Attempts% failed login(s)."
 
69
  msgstr ""
70
 
71
+ #: defaults.php:221
72
+ msgid "Login failed / non existing user"
73
  msgstr ""
74
 
75
+ #: defaults.php:231
76
+ msgid "Login blocked"
77
  msgstr ""
78
 
79
+ #: defaults.php:232
80
+ msgid "Login blocked because other session(s) already exist for this user."
81
  msgstr ""
82
 
83
+ #: defaults.php:234, extensions/email-notifications/classes/Common.php:1106
84
+ msgid "IP address"
85
  msgstr ""
86
 
87
+ #: defaults.php:243
88
+ msgid "User logged in with existing session(s)"
89
  msgstr ""
90
 
91
+ #: defaults.php:244
92
+ msgid "User logged in however there are other session(s) already for this user."
93
  msgstr ""
94
 
95
+ #: defaults.php:246, extensions/reports/classes/HtmlReportGenerator.php:130
96
+ msgid "IP address(es)"
97
  msgstr ""
98
 
99
+ #: defaults.php:255
100
+ msgid "User logged out all other sessions with the same username"
101
  msgstr ""
102
 
103
+ #: defaults.php:256
104
+ msgid "Logged out all other sessions with the same user."
105
  msgstr ""
106
 
107
+ #: defaults.php:265
108
+ msgid "User session destroyed and logged out"
109
  msgstr ""
110
 
111
+ #: defaults.php:266
112
+ msgid "Terminated the session of the user %TargetUserName%."
113
  msgstr ""
114
 
115
+ #: defaults.php:268, defaults.php:281, defaults.php:1701, defaults.php:1729, defaults.php:1743, defaults.php:1757, defaults.php:1772, defaults.php:1787, defaults.php:1801, defaults.php:1815, defaults.php:1831, defaults.php:1846, defaults.php:1860, defaults.php:1874, defaults.php:1889, defaults.php:1905, defaults.php:1919, defaults.php:1934, defaults.php:1948, defaults.php:1962, defaults.php:1979, defaults.php:1993, defaults.php:2007, extensions/reports/classes/CsvReportGenerator.php:82, extensions/reports/classes/CsvReportGenerator.php:66, extensions/reports/classes/HtmlReportGenerator.php:246, extensions/reports/classes/HtmlReportGenerator.php:222
116
+ msgid "Role"
117
  msgstr ""
118
 
119
+ #: defaults.php:269
120
+ msgid "Session ID"
121
  msgstr ""
122
 
123
+ #: defaults.php:278
124
+ msgid "Switched to another user"
125
  msgstr ""
126
 
127
+ #: defaults.php:279
128
+ msgid "Switched the session to being logged in as %TargetUserName%."
129
  msgstr ""
130
 
131
+ #: defaults.php:290
132
+ msgid "User uploaded file to the Uploads directory"
133
  msgstr ""
134
 
135
+ #: defaults.php:291
136
+ msgid "Uploaded a file called %FileName%."
137
  msgstr ""
138
 
139
+ #: defaults.php:293, defaults.php:305
140
+ msgid "Directory"
141
  msgstr ""
142
 
143
+ #: defaults.php:302
144
+ msgid "User deleted file from Uploads directory"
145
  msgstr ""
146
 
147
+ #: defaults.php:303
148
+ msgid "Deleted the file %FileName%."
149
  msgstr ""
150
 
151
+ #: defaults.php:314
152
+ msgid "User requested a password reset"
153
  msgstr ""
154
 
155
+ #: defaults.php:315
156
+ msgid "User requested a password reset. This does not mean that the password was changed."
157
  msgstr ""
158
 
159
+ #: defaults.php:324
160
+ msgid "Content & Comments"
161
  msgstr ""
162
 
163
+ #: defaults.php:325
164
+ msgid "Content"
165
  msgstr ""
166
 
167
+ #: defaults.php:329
168
+ msgid "User created a new post and saved it as draft"
169
  msgstr ""
170
 
171
+ #: defaults.php:330
172
+ msgid "Created the post %PostTitle%."
173
  msgstr ""
174
 
175
+ #: defaults.php:332, defaults.php:346, defaults.php:360, defaults.php:374, defaults.php:388, defaults.php:402, defaults.php:416, defaults.php:432, defaults.php:447, defaults.php:461, defaults.php:476, defaults.php:491, defaults.php:506, defaults.php:521, defaults.php:535, defaults.php:549, defaults.php:563, defaults.php:577, defaults.php:591, defaults.php:605, defaults.php:619, defaults.php:633, defaults.php:647, defaults.php:661, defaults.php:677, defaults.php:791, defaults.php:870, defaults.php:885, defaults.php:901, defaults.php:916, defaults.php:933, defaults.php:948, defaults.php:969, defaults.php:984, defaults.php:999, defaults.php:1014, defaults.php:1029, defaults.php:1044, defaults.php:1059, defaults.php:1074, defaults.php:1089, defaults.php:1104, defaults.php:1123, defaults.php:2118, defaults.php:2133, extensions/search/classes/FilterManager.php:503, extensions/search/classes/Filters/PostIDFilter.php:29, extensions/search/classes/Filters/PostIDFilter.php:57
176
+ msgid "Post ID"
177
  msgstr ""
178
 
179
+ #: defaults.php:333, defaults.php:347, defaults.php:361, defaults.php:375, defaults.php:389, defaults.php:403, defaults.php:417, defaults.php:433, defaults.php:448, defaults.php:462, defaults.php:477, defaults.php:492, defaults.php:507, defaults.php:522, defaults.php:536, defaults.php:550, defaults.php:564, defaults.php:578, defaults.php:592, defaults.php:606, defaults.php:620, defaults.php:634, defaults.php:648, defaults.php:662, defaults.php:678, defaults.php:792, defaults.php:871, defaults.php:886, defaults.php:902, defaults.php:917, defaults.php:934, defaults.php:949, defaults.php:970, defaults.php:985, defaults.php:1000, defaults.php:1015, defaults.php:1030, defaults.php:1045, defaults.php:1060, defaults.php:1075, defaults.php:1090, defaults.php:1105, defaults.php:1124, defaults.php:2119, defaults.php:2134
180
+ msgid "Post type"
181
  msgstr ""
182
 
183
+ #: defaults.php:334, defaults.php:348, defaults.php:362, defaults.php:376, defaults.php:390, defaults.php:404, defaults.php:418, defaults.php:434, defaults.php:463, defaults.php:478, defaults.php:493, defaults.php:508, defaults.php:523, defaults.php:537, defaults.php:551, defaults.php:565, defaults.php:579, defaults.php:593, defaults.php:607, defaults.php:621, defaults.php:635, defaults.php:649, defaults.php:663, defaults.php:679, defaults.php:793, defaults.php:872, defaults.php:887, defaults.php:903, defaults.php:918, defaults.php:935, defaults.php:950, defaults.php:971, defaults.php:986, defaults.php:1001, defaults.php:1016, defaults.php:1031, defaults.php:1046, defaults.php:1061, defaults.php:1076, defaults.php:1091, defaults.php:1106, defaults.php:1125, defaults.php:2120, defaults.php:2135
184
+ msgid "Post status"
185
  msgstr ""
186
 
187
+ #: defaults.php:343
188
+ msgid "User published a post"
189
  msgstr ""
190
 
191
+ #: defaults.php:344
192
+ msgid "Published the post %PostTitle%."
193
  msgstr ""
194
 
195
+ #: defaults.php:357
196
+ msgid "User modified a post"
197
  msgstr ""
198
 
199
+ #: defaults.php:358
200
+ msgid "Modified the post %PostTitle%."
201
  msgstr ""
202
 
203
+ #: defaults.php:371
204
+ msgid "User permanently deleted a post from the trash"
205
  msgstr ""
206
 
207
+ #: defaults.php:372
208
+ msgid "Permanently deleted the post %PostTitle%."
209
  msgstr ""
210
 
211
+ #: defaults.php:385
212
+ msgid "User moved a post to the trash"
213
  msgstr ""
214
 
215
+ #: defaults.php:386
216
+ msgid "Moved the post %PostTitle% to trash."
217
  msgstr ""
218
 
219
+ #: defaults.php:399
220
+ msgid "User restored a post from trash"
221
  msgstr ""
222
 
223
+ #: defaults.php:400
224
+ msgid "Restored the post %PostTitle% from trash."
225
  msgstr ""
226
 
227
+ #: defaults.php:413
228
+ msgid "User changed post URL"
229
  msgstr ""
230
 
231
+ #: defaults.php:414
232
+ msgid "Changed the URL of the post %PostTitle%."
233
  msgstr ""
234
 
235
+ #: defaults.php:419, defaults.php:2874, defaults.php:2886
236
+ msgid "Previous URL"
237
  msgstr ""
238
 
239
+ #: defaults.php:420
240
+ msgid "New URL"
241
  msgstr ""
242
 
243
+ #: defaults.php:429
244
+ msgid "User changed post author"
245
  msgstr ""
246
 
247
+ #: defaults.php:430
248
+ msgid "Changed the author of the post %PostTitle% to %NewAuthor%."
249
  msgstr ""
250
 
251
+ #: defaults.php:435
252
+ msgid "Previous author"
253
  msgstr ""
254
 
255
+ #: defaults.php:444
256
+ msgid "User changed post status"
257
  msgstr ""
258
 
259
+ #: defaults.php:445
260
+ msgid "Changed the status of the post %PostTitle% to %NewStatus%."
261
  msgstr ""
262
 
263
+ #: defaults.php:449
264
+ msgid "Previous status"
265
  msgstr ""
266
 
267
+ #: defaults.php:458
268
+ msgid "User changed the visibility of a post"
269
  msgstr ""
270
 
271
+ #: defaults.php:459
272
+ msgid "Changed the visibility of the post %PostTitle% to %NewVisibility%."
 
273
  msgstr ""
274
 
275
+ #: defaults.php:464
276
+ msgid "Previous visibility status"
 
277
  msgstr ""
278
 
279
+ #: defaults.php:473
280
+ msgid "User changed the date of a post"
281
  msgstr ""
282
 
283
+ #: defaults.php:474
284
+ msgid "Changed the date of the post %PostTitle% to %NewDate%."
285
  msgstr ""
286
 
287
+ #: defaults.php:479
288
+ msgid "Previous date"
289
  msgstr ""
290
 
291
+ #: defaults.php:488
292
+ msgid "User changed the parent of a page"
293
  msgstr ""
294
 
295
+ #: defaults.php:489
296
+ msgid "Changed the parent of the post %PostTitle% to %NewParentName%."
297
  msgstr ""
298
 
299
+ #: defaults.php:494, defaults.php:831
300
+ msgid "Previous parent"
301
  msgstr ""
302
 
303
+ #: defaults.php:503
304
+ msgid "User changed the template of a page"
305
  msgstr ""
306
 
307
+ #: defaults.php:504
308
+ msgid "Changed the template of the post %PostTitle% to %NewTemplate%."
309
  msgstr ""
310
 
311
+ #: defaults.php:509
312
+ msgid "Previous template"
313
  msgstr ""
314
 
315
+ #: defaults.php:518
316
+ msgid "User set a post as sticky"
 
317
  msgstr ""
318
 
319
+ #: defaults.php:519
320
+ msgid "Set the post %PostTitle% as sticky."
321
  msgstr ""
322
 
323
+ #: defaults.php:532
324
+ msgid "User removed post from sticky"
325
  msgstr ""
326
 
327
+ #: defaults.php:533
328
+ msgid "Removed the post %PostTitle% from sticky."
 
 
329
  msgstr ""
330
 
331
+ #: defaults.php:546
332
+ msgid "User modified the content of a post"
 
 
333
  msgstr ""
334
 
335
+ #: defaults.php:547
336
+ msgid "Modified the content of the post %PostTitle%."
337
  msgstr ""
338
 
339
+ #: defaults.php:560
340
+ msgid "User submitted a post for review"
 
341
  msgstr ""
342
 
343
+ #: defaults.php:561
344
+ msgid "Submitted the post %PostTitle% for review."
 
345
  msgstr ""
346
 
347
+ #: defaults.php:574
348
+ msgid "User scheduled a post"
349
  msgstr ""
350
 
351
+ #: defaults.php:575
352
+ msgid "Scheduled the post %PostTitle% to be published on %PublishingDate%."
353
  msgstr ""
354
 
355
+ #: defaults.php:588
356
+ msgid "User changed title of a post"
357
  msgstr ""
358
 
359
+ #: defaults.php:589
360
+ msgid "Changed the title of the post %OldTitle% to %NewTitle%."
 
 
361
  msgstr ""
362
 
363
+ #: defaults.php:602
364
+ msgid "User opened a post in the editor"
365
  msgstr ""
366
 
367
+ #: defaults.php:603
368
+ msgid "Opened the post %PostTitle% in the editor."
 
369
  msgstr ""
370
 
371
+ #: defaults.php:616
372
+ msgid "User viewed a post"
373
  msgstr ""
374
 
375
+ #: defaults.php:617
376
+ msgid "Viewed the post %PostTitle%."
 
377
  msgstr ""
378
 
379
+ #: defaults.php:630
380
+ msgid "User enabled/disabled comments in a post"
381
  msgstr ""
382
 
383
+ #: defaults.php:631
384
+ msgid "Comments in the post %PostTitle%."
385
  msgstr ""
386
 
387
+ #: defaults.php:644
388
+ msgid "User enabled/disabled trackbacks and pingbacks in a post"
389
  msgstr ""
390
 
391
+ #: defaults.php:645
392
+ msgid "Pingbacks and Trackbacks in the post %PostTitle%."
393
  msgstr ""
394
 
395
+ #: defaults.php:658
396
+ msgid "User updated the excerpt in a post"
397
  msgstr ""
398
 
399
+ #: defaults.php:659
400
+ msgid "The excerpt of the post %PostTitle%."
401
  msgstr ""
402
 
403
+ #: defaults.php:664
404
+ msgid "Previous excerpt entry"
405
  msgstr ""
406
 
407
+ #: defaults.php:665
408
+ msgid "New excerpt entry"
409
  msgstr ""
410
 
411
+ #: defaults.php:674
412
+ msgid "User updated the featured image in a post"
413
  msgstr ""
414
 
415
+ #: defaults.php:675
416
+ msgid "The featured image of the post %PostTitle%."
417
  msgstr ""
418
 
419
+ #: defaults.php:680
420
+ msgid "Previous image"
421
  msgstr ""
422
 
423
+ #: defaults.php:681
424
+ msgid "New image"
 
425
  msgstr ""
426
 
427
+ #: defaults.php:689
428
+ msgid "Tags"
 
429
  msgstr ""
430
 
431
+ #: defaults.php:693
432
+ msgid "User added post tag"
433
  msgstr ""
434
 
435
+ #: defaults.php:694
436
+ msgid "Added tag(s) to the post %PostTitle%."
437
  msgstr ""
438
 
439
+ #: defaults.php:696, defaults.php:711, classes/AuditLogGridView.php:271, classes/AuditLogGridView.php:295, classes/AuditLogListView.php:269, classes/AuditLogListView.php:297
440
+ msgid "ID"
441
  msgstr ""
442
 
443
+ #: defaults.php:697, defaults.php:712, extensions/external-db/classes/Connections.php:97, extensions/external-db/classes/Mirroring.php:92, extensions/reports/classes/CsvReportGenerator.php:78, extensions/reports/classes/HtmlReportGenerator.php:242
444
+ msgid "Type"
445
  msgstr ""
446
 
447
+ #: defaults.php:698, defaults.php:713
448
+ msgid "Status"
 
449
  msgstr ""
450
 
451
+ #: defaults.php:699
452
+ msgid "Added tag(s)"
453
  msgstr ""
454
 
455
+ #: defaults.php:708
456
+ msgid "User removed post tag"
 
457
  msgstr ""
458
 
459
+ #: defaults.php:709
460
+ msgid "Removed tag(s) from the post %PostTitle%."
461
  msgstr ""
462
 
463
+ #: defaults.php:714
464
+ msgid "Removed tag(s)"
465
  msgstr ""
466
 
467
+ #: defaults.php:723
468
+ msgid "User created new tag"
469
  msgstr ""
470
 
471
+ #: defaults.php:724
472
+ msgid "Created the tag %TagName%."
 
473
  msgstr ""
474
 
475
+ #: defaults.php:726, defaults.php:738, defaults.php:750, defaults.php:774, defaults.php:806, defaults.php:818, defaults.php:830, defaults.php:843
476
+ msgid "Slug"
477
  msgstr ""
478
 
479
+ #: defaults.php:735
480
+ msgid "User deleted tag"
481
  msgstr ""
482
 
483
+ #: defaults.php:736
484
+ msgid "Deleted the tag %TagName%."
 
485
  msgstr ""
486
 
487
+ #: defaults.php:747
488
+ msgid "Renamed the tag %old_name% to %new_name%."
489
  msgstr ""
490
 
491
+ #: defaults.php:759
492
+ msgid "User changed tag slug"
 
493
  msgstr ""
494
 
495
+ #: defaults.php:760
496
+ msgid "Changed the slug of the tag %tag% to %new_slug%."
 
497
  msgstr ""
498
 
499
+ #: defaults.php:762, defaults.php:855
500
+ msgid "Previous slug"
 
501
  msgstr ""
502
 
503
+ #: defaults.php:771
504
+ msgid "User changed tag description"
505
  msgstr ""
506
 
507
+ #: defaults.php:772
508
+ msgid "Changed the description of the tag %tag%."
 
509
  msgstr ""
510
 
511
+ #: defaults.php:775
512
+ msgid "Previous description"
513
  msgstr ""
514
 
515
+ #: defaults.php:776
516
+ msgid "New description"
 
517
  msgstr ""
518
 
519
+ #: defaults.php:784
520
+ msgid "Categories"
521
  msgstr ""
522
 
523
+ #: defaults.php:788
524
+ msgid "User changed post category"
525
  msgstr ""
526
 
527
+ #: defaults.php:789
528
+ msgid "Changed the category(ies) of the post %PostTitle% to %NewCategories%."
529
  msgstr ""
530
 
531
+ #: defaults.php:794
532
+ msgid "Previous category(ies)"
533
  msgstr ""
534
 
535
+ #: defaults.php:803
536
+ msgid "User created new category"
537
  msgstr ""
538
 
539
+ #: defaults.php:804
540
+ msgid "Created the category %CategoryName%."
 
541
  msgstr ""
542
 
543
+ #: defaults.php:815
544
+ msgid "User deleted category"
545
  msgstr ""
546
 
547
+ #: defaults.php:816
548
+ msgid "Deleted the category %CategoryName%."
549
  msgstr ""
550
 
551
+ #: defaults.php:827
552
+ msgid "Changed the parent of a category"
553
  msgstr ""
554
 
555
+ #: defaults.php:828
556
+ msgid "Changed the parent of the category %CategoryName% to %NewParent%."
557
  msgstr ""
558
 
559
+ #: defaults.php:840
560
+ msgid "User changed category name"
561
  msgstr ""
562
 
563
+ #: defaults.php:841
564
+ msgid "Renamed the category %old_name% to %new_name%."
565
  msgstr ""
566
 
567
+ #: defaults.php:852
568
+ msgid "User changed category slug"
569
  msgstr ""
570
 
571
+ #: defaults.php:853
572
+ msgid "Changed the slug of the category %CategoryName% to %new_slug%."
573
  msgstr ""
574
 
575
+ #: defaults.php:863
576
+ msgid "Custom Fields"
577
  msgstr ""
578
 
579
+ #: defaults.php:867
580
+ msgid "User created a custom field for a post"
581
  msgstr ""
582
 
583
+ #: defaults.php:868
584
+ msgid "Created the new custom field %MetaKey% in the post %PostTitle%."
585
  msgstr ""
586
 
587
+ #: defaults.php:873, defaults.php:1834
588
+ msgid "Custom field value"
589
  msgstr ""
590
 
591
+ #: defaults.php:882
592
+ msgid "User updated a custom field value for a post"
593
  msgstr ""
594
 
595
+ #: defaults.php:883
596
+ msgid "Modified the value of the custom field %MetaKey% in the post %PostTitle%."
597
  msgstr ""
598
 
599
+ #: defaults.php:888
600
+ msgid "Previous custom field value"
601
  msgstr ""
602
 
603
+ #: defaults.php:889
604
+ msgid "New custom field value"
605
  msgstr ""
606
 
607
+ #: defaults.php:898
608
+ msgid "User deleted a custom field from a post"
609
  msgstr ""
610
 
611
+ #: defaults.php:899
612
+ msgid "Deleted the custom field %MetaKey% from the post %PostTitle%."
613
  msgstr ""
614
 
615
+ #: defaults.php:912
616
+ msgid "User updated a custom field name for a post"
617
  msgstr ""
618
 
619
+ #: defaults.php:913
620
+ msgid "Renamed the custom field %MetaKeyOld% on post %PostTitle% to %MetaKeNew%."
621
  msgstr ""
622
 
623
+ #: defaults.php:915, classes/AlertManager.php:1067
624
+ msgid "Post"
625
  msgstr ""
626
 
627
+ #: defaults.php:926
628
+ msgid "Custom Fields (ACF)"
629
  msgstr ""
630
 
631
+ #: defaults.php:930
632
+ msgid "User added relationship to a custom field value for a post"
633
  msgstr ""
634
 
635
+ #: defaults.php:931
636
+ msgid "Added relationships to the custom field %MetaKey% in the post %PostTitle%."
637
  msgstr ""
638
 
639
+ #: defaults.php:936
640
+ msgid "New relationships"
641
  msgstr ""
642
 
643
+ #: defaults.php:945
644
+ msgid "User removed relationship from a custom field value for a post"
645
  msgstr ""
646
 
647
+ #: defaults.php:946
648
+ msgid "Removed relationships from the custom field %MetaKey% in the post %PostTitle%."
 
649
  msgstr ""
650
 
651
+ #: defaults.php:951
652
+ msgid "Removed relationships"
653
  msgstr ""
654
 
655
+ #: defaults.php:962
656
+ msgid "Comments"
657
  msgstr ""
658
 
659
+ #: defaults.php:966
660
+ msgid "User approved a comment"
 
661
  msgstr ""
662
 
663
+ #: defaults.php:967
664
+ msgid "Approved the comment posted by %Author% on the post %PostTitle%."
665
  msgstr ""
666
 
667
+ #: defaults.php:972, defaults.php:987, defaults.php:1002, defaults.php:1017, defaults.php:1032, defaults.php:1047, defaults.php:1062, defaults.php:1077, defaults.php:1092, defaults.php:1107, defaults.php:1126
668
+ msgid "Comment ID"
 
669
  msgstr ""
670
 
671
+ #: defaults.php:981
672
+ msgid "User unapproved a comment"
673
  msgstr ""
674
 
675
+ #: defaults.php:982
676
+ msgid "Unapproved the comment posted by %Author% on the post %PostTitle%."
 
677
  msgstr ""
678
 
679
+ #: defaults.php:996
680
+ msgid "User replied to a comment"
681
  msgstr ""
682
 
683
+ #: defaults.php:997
684
+ msgid "Replied to the comment posted by %Author% on the post %PostTitle%."
 
685
  msgstr ""
686
 
687
+ #: defaults.php:1011
688
+ msgid "User edited a comment"
 
689
  msgstr ""
690
 
691
+ #: defaults.php:1012
692
+ msgid "Edited the comment posted by %Author% on the post %PostTitle%."
 
 
693
  msgstr ""
694
 
695
+ #: defaults.php:1026
696
+ msgid "User marked a comment as Spam"
 
697
  msgstr ""
698
 
699
+ #: defaults.php:1027
700
+ msgid "Marked the comment posted by %Author% on the post %PostTitle% as spam."
701
  msgstr ""
702
 
703
+ #: defaults.php:1041
704
+ msgid "User marked a comment as Not Spam"
705
  msgstr ""
706
 
707
+ #: defaults.php:1042
708
+ msgid "Marked the comment posted by %Author% on the post %PostTitle% as not spam."
709
  msgstr ""
710
 
711
+ #: defaults.php:1056
712
+ msgid "User moved a comment to trash"
713
  msgstr ""
714
 
715
+ #: defaults.php:1057
716
+ msgid "Moved the comment posted by %Author% on the post %PostTitle% to trash."
717
  msgstr ""
718
 
719
+ #: defaults.php:1071
720
+ msgid "User restored a comment from the trash"
721
  msgstr ""
722
 
723
+ #: defaults.php:1072
724
+ msgid "Restored the comment posted by %Author% on the post %PostTitle% from trash."
725
+ msgstr ""
726
+
727
+ #: defaults.php:1086
728
+ msgid "User permanently deleted a comment"
729
+ msgstr ""
730
+
731
+ #: defaults.php:1087
732
+ msgid "Permanently deleted the comment posted by %Author% on the post %PostTitle%."
733
+ msgstr ""
734
+
735
+ #: defaults.php:1101
736
+ msgid "User posted a comment"
737
+ msgstr ""
738
+
739
+ #: defaults.php:1102, defaults.php:1121
740
+ msgid "Posted a comment on the post %PostTitle%."
741
+ msgstr ""
742
+
743
+ #: defaults.php:1120
744
+ msgid "Visitor posted a comment"
745
+ msgstr ""
746
+
747
+ #: defaults.php:1137
748
+ msgid "Widgets"
749
+ msgstr ""
750
+
751
+ #: defaults.php:1141
752
+ msgid "User added a new widget"
753
+ msgstr ""
754
+
755
+ #: defaults.php:1142
756
+ msgid "Added a new %WidgetName% widget in %Sidebar%."
757
+ msgstr ""
758
+
759
+ #: defaults.php:1151
760
+ msgid "User modified a widget"
761
+ msgstr ""
762
+
763
+ #: defaults.php:1152
764
+ msgid "Modified the %WidgetName% widget in %Sidebar%."
765
+ msgstr ""
766
+
767
+ #: defaults.php:1161
768
+ msgid "User deleted widget"
769
+ msgstr ""
770
+
771
+ #: defaults.php:1162
772
+ msgid "Deleted the %WidgetName% widget from %Sidebar%."
773
+ msgstr ""
774
+
775
+ #: defaults.php:1171
776
+ msgid "User moved widget"
777
+ msgstr ""
778
+
779
+ #: defaults.php:1172
780
+ msgid "Moved the %WidgetName% widget."
781
+ msgstr ""
782
+
783
+ #: defaults.php:1174, extensions/reports/inc/wsal-reporting-view.inc.php:1640
784
+ msgid "From"
785
+ msgstr ""
786
+
787
+ #: defaults.php:1175, extensions/reports/inc/wsal-reporting-view.inc.php:1649
788
+ msgid "To"
789
+ msgstr ""
790
+
791
+ #: defaults.php:1184
792
+ msgid "User changed widget position"
793
+ msgstr ""
794
+
795
+ #: defaults.php:1185
796
+ msgid "Changed the position of the %WidgetName% widget in %Sidebar%."
797
+ msgstr ""
798
+
799
+ #: defaults.php:1196
800
+ msgid "Menus"
801
+ msgstr ""
802
+
803
+ #: defaults.php:1200
804
+ msgid "User created new menu"
805
+ msgstr ""
806
+
807
+ #: defaults.php:1201
808
+ msgid "New menu called %MenuName%."
809
+ msgstr ""
810
+
811
+ #: defaults.php:1210
812
+ msgid "User added content to a menu"
813
+ msgstr ""
814
+
815
+ #: defaults.php:1211
816
+ msgid "Added the item %ContentName% to the menu %MenuName%."
817
+ msgstr ""
818
+
819
+ #: defaults.php:1213, defaults.php:1225, defaults.php:1257
820
+ msgid "Item type"
821
+ msgstr ""
822
+
823
+ #: defaults.php:1222
824
+ msgid "User removed content from a menu"
825
+ msgstr ""
826
+
827
+ #: defaults.php:1223
828
+ msgid "Removed the item %ContentName% from the menu %MenuName%."
829
+ msgstr ""
830
+
831
+ #: defaults.php:1234
832
+ msgid "User deleted menu"
833
+ msgstr ""
834
+
835
+ #: defaults.php:1235
836
+ msgid "Deleted the menu %MenuName%."
837
+ msgstr ""
838
+
839
+ #: defaults.php:1244
840
+ msgid "User changed menu setting"
841
+ msgstr ""
842
+
843
+ #: defaults.php:1245
844
+ msgid "The setting %MenuSetting% in the menu %MenuName%."
845
+ msgstr ""
846
+
847
+ #: defaults.php:1254
848
+ msgid "User modified content in a menu"
849
+ msgstr ""
850
+
851
+ #: defaults.php:1255
852
+ msgid "Modified the item %ContentName% in the menu %MenuName%."
853
+ msgstr ""
854
+
855
+ #: defaults.php:1266
856
+ msgid "User changed name of a menu"
857
+ msgstr ""
858
+
859
+ #: defaults.php:1267
860
+ msgid "Renamed the menu %OldMenuName% to %MenuName%."
861
+ msgstr ""
862
+
863
+ #: defaults.php:1276
864
+ msgid "User changed order of the objects in a menu"
865
+ msgstr ""
866
+
867
+ #: defaults.php:1277
868
+ msgid "Changed the order of the items in the menu %MenuName%."
869
+ msgstr ""
870
+
871
+ #: defaults.php:1286
872
+ msgid "User moved objects as a sub-item"
873
+ msgstr ""
874
+
875
+ #: defaults.php:1287
876
+ msgid "Moved items as sub-items in the menu %MenuName%."
877
+ msgstr ""
878
+
879
+ #: defaults.php:1289
880
+ msgid "Moved item"
881
+ msgstr ""
882
+
883
+ #: defaults.php:1290
884
+ msgid "as a sub-item of"
885
+ msgstr ""
886
+
887
+ #: defaults.php:1306, extensions/reports/classes/HtmlReportGenerator.php:541
888
+ msgid "Custom Post Types"
889
+ msgstr ""
890
+
891
+ #: defaults.php:1310
892
+ msgid "User modified a draft blog post"
893
+ msgstr ""
894
+
895
+ #: defaults.php:1311
896
+ msgid "Modified the draft post with the %PostTitle%. %EditorLinkPost%."
897
+ msgstr ""
898
+
899
+ #: defaults.php:1316
900
+ msgid "User created a new post with custom post type and saved it as draft"
901
+ msgstr ""
902
+
903
+ #: defaults.php:1317
904
+ msgid "Created a new custom post called %PostTitle% of type %PostType%. %EditorLinkPost%."
905
+ msgstr ""
906
+
907
+ #: defaults.php:1322
908
+ msgid "User published a post with custom post type"
909
+ msgstr ""
910
+
911
+ #: defaults.php:1323
912
+ msgid "Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%."
913
+ msgstr ""
914
+
915
+ #: defaults.php:1328
916
+ msgid "User modified a post with custom post type"
917
+ msgstr ""
918
+
919
+ #: defaults.php:1329
920
+ msgid "Modified the custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%."
921
+ msgstr ""
922
+
923
+ #: defaults.php:1334
924
+ msgid "User modified a draft post with custom post type"
925
+ msgstr ""
926
+
927
+ #: defaults.php:1335
928
+ msgid "Modified the draft custom post %PostTitle% of type is %PostType%. %EditorLinkPost%."
929
+ msgstr ""
930
+
931
+ #: defaults.php:1340
932
+ msgid "User permanently deleted post with custom post type"
933
+ msgstr ""
934
+
935
+ #: defaults.php:1341
936
+ msgid "Permanently Deleted the custom post %PostTitle% of type %PostType%."
937
+ msgstr ""
938
+
939
+ #: defaults.php:1346
940
+ msgid "User moved post with custom post type to trash"
941
+ msgstr ""
942
+
943
+ #: defaults.php:1347
944
+ msgid "Moved the custom post %PostTitle% of type %PostType% to trash. Post URL was %PostUrl%."
945
+ msgstr ""
946
+
947
+ #: defaults.php:1352
948
+ msgid "User restored post with custom post type from trash"
949
+ msgstr ""
950
+
951
+ #: defaults.php:1353
952
+ msgid "The custom post %PostTitle% of type %PostType% has been restored from trash. %EditorLinkPost%."
953
+ msgstr ""
954
+
955
+ #: defaults.php:1358
956
+ msgid "User changed the category of a post with custom post type"
957
+ msgstr ""
958
+
959
+ #: defaults.php:1359
960
+ msgid "Changed the category(ies) of the custom post %PostTitle% of type %PostType% from %OldCategories% to %NewCategories%. %EditorLinkPost%."
961
+ msgstr ""
962
+
963
+ #: defaults.php:1364
964
+ msgid "User changed the URL of a post with custom post type"
965
+ msgstr ""
966
+
967
+ #: defaults.php:1365
968
+ msgid "Changed the URL of the custom post %PostTitle% of type %PostType% from %OldUrl% to %NewUrl%. %EditorLinkPost%."
969
+ msgstr ""
970
+
971
+ #: defaults.php:1370
972
+ msgid "User changed the author or post with custom post type"
973
+ msgstr ""
974
+
975
+ #: defaults.php:1371
976
+ msgid "Changed the author of custom post %PostTitle% of type %PostType% from %OldAuthor% to %NewAuthor%. %EditorLinkPost%."
977
+ msgstr ""
978
+
979
+ #: defaults.php:1376
980
+ msgid "User changed the status of post with custom post type"
981
+ msgstr ""
982
+
983
+ #: defaults.php:1377
984
+ msgid "Changed the status of custom post %PostTitle% of type %PostType% from %OldStatus% to %NewStatus%. %EditorLinkPost%."
985
+ msgstr ""
986
+
987
+ #: defaults.php:1382
988
+ msgid "User changed the visibility of a post with custom post type"
989
+ msgstr ""
990
+
991
+ #: defaults.php:1383
992
+ msgid "Changed the visibility of the custom post %PostTitle% of type %PostType% from %OldVisibility% to %NewVisibility%. %EditorLinkPost%."
993
+ msgstr ""
994
+
995
+ #: defaults.php:1388
996
+ msgid "User changed the date of post with custom post type"
997
+ msgstr ""
998
+
999
+ #: defaults.php:1389
1000
+ msgid "Changed the date of the custom post %PostTitle% of type %PostType% from %OldDate% to %NewDate%. %EditorLinkPost%."
1001
+ msgstr ""
1002
+
1003
+ #: defaults.php:1394
1004
+ msgid "User created a custom field for a custom post type"
1005
+ msgstr ""
1006
+
1007
+ #: defaults.php:1395
1008
+ msgid "Created a new custom field %MetaKey% with value %MetaValue% in custom post %PostTitle% of type %PostType%. %EditorLinkPost%.<br>%MetaLink%."
1009
+ msgstr ""
1010
+
1011
+ #: defaults.php:1400
1012
+ msgid "User updated a custom field for a custom post type"
1013
+ msgstr ""
1014
+
1015
+ #: defaults.php:1401
1016
+ msgid "Modified the value of the custom field %MetaKey% from %MetaValueOld% to %MetaValueNew% in custom post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
1017
+ msgstr ""
1018
+
1019
+ #: defaults.php:1406
1020
+ msgid "User deleted a custom field from a custom post type"
1021
+ msgstr ""
1022
+
1023
+ #: defaults.php:1407
1024
+ msgid "Deleted the custom field %MetaKey% with id %MetaID% from custom post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
1025
+ msgstr ""
1026
+
1027
+ #: defaults.php:1412
1028
+ msgid "User updated a custom field name for a custom post type"
1029
+ msgstr ""
1030
+
1031
+ #: defaults.php:1413
1032
+ msgid "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in custom post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
1033
+ msgstr ""
1034
+
1035
+ #: defaults.php:1418
1036
+ msgid "User modified content for a published custom post type"
1037
+ msgstr ""
1038
+
1039
+ #: defaults.php:1419
1040
+ msgid "Modified the content of the published custom post type %PostTitle%. Post URL is %PostUrl%. %EditorLinkPost%."
1041
+ msgstr ""
1042
+
1043
+ #: defaults.php:1424
1044
+ msgid "User modified content for a draft post"
1045
+ msgstr ""
1046
+
1047
+ #: defaults.php:1425
1048
+ msgid "Modified the content of the draft post %PostTitle%.%RevisionLink% %EditorLinkPost%."
1049
+ msgstr ""
1050
+
1051
+ #: defaults.php:1430
1052
+ msgid "User modified content for a draft custom post type"
1053
+ msgstr ""
1054
+
1055
+ #: defaults.php:1431
1056
+ msgid "Modified the content of the draft custom post type %PostTitle%.%EditorLinkPost%."
1057
+ msgstr ""
1058
+
1059
+ #: defaults.php:1436
1060
+ msgid "User modified content of a post"
1061
+ msgstr ""
1062
+
1063
+ #: defaults.php:1437
1064
+ msgid "Modified the content of post %PostTitle% which is submitted for review.%RevisionLink% %EditorLinkPost%."
1065
+ msgstr ""
1066
+
1067
+ #: defaults.php:1442
1068
+ msgid "User scheduled a custom post type"
1069
+ msgstr ""
1070
+
1071
+ #: defaults.php:1443
1072
+ msgid "Scheduled the custom post type %PostTitle% to be published %PublishingDate%. %EditorLinkPost%."
1073
+ msgstr ""
1074
+
1075
+ #: defaults.php:1448
1076
+ msgid "User changed title of a custom post type"
1077
+ msgstr ""
1078
+
1079
+ #: defaults.php:1449
1080
+ msgid "Changed the title of the custom post %OldTitle% to %NewTitle%. %EditorLinkPost%."
1081
+ msgstr ""
1082
+
1083
+ #: defaults.php:1454
1084
+ msgid "User opened a custom post type in the editor"
1085
+ msgstr ""
1086
+
1087
+ #: defaults.php:1455
1088
+ msgid "Opened the custom post %PostTitle% of type %PostType% in the editor. View the post: %EditorLinkPost%."
1089
+ msgstr ""
1090
+
1091
+ #: defaults.php:1460
1092
+ msgid "User viewed a custom post type"
1093
+ msgstr ""
1094
+
1095
+ #: defaults.php:1461
1096
+ msgid "Viewed the custom post %PostTitle% of type %PostType%. View the post: %PostUrl%."
1097
+ msgstr ""
1098
+
1099
+ #: defaults.php:1466
1100
+ msgid "A plugin created a custom post"
1101
+ msgstr ""
1102
+
1103
+ #: defaults.php:1467
1104
+ msgid "A plugin automatically created the following custom post: %PostTitle%."
1105
+ msgstr ""
1106
+
1107
+ #: defaults.php:1472
1108
+ msgid "A plugin deleted a custom post"
1109
+ msgstr ""
1110
+
1111
+ #: defaults.php:1473
1112
+ msgid "A plugin automatically deleted the following custom post: %PostTitle%."
1113
+ msgstr ""
1114
+
1115
+ #: defaults.php:1478
1116
+ msgid "A plugin modified a custom post"
1117
+ msgstr ""
1118
+
1119
+ #: defaults.php:1479
1120
+ msgid "Plugin modified the custom post %PostTitle%. View the post: %EditorLinkPost%."
1121
+ msgstr ""
1122
+
1123
+ #: defaults.php:1491, extensions/reports/classes/HtmlReportGenerator.php:536
1124
+ msgid "Pages"
1125
+ msgstr ""
1126
+
1127
+ #: defaults.php:1495
1128
+ msgid "User created a new WordPress page and saved it as draft"
1129
+ msgstr ""
1130
+
1131
+ #: defaults.php:1496
1132
+ msgid "Created a new page called %PostTitle% and saved it as draft. %EditorLinkPage%."
1133
+ msgstr ""
1134
+
1135
+ #: defaults.php:1501
1136
+ msgid "User published a WordPress page"
1137
+ msgstr ""
1138
+
1139
+ #: defaults.php:1502
1140
+ msgid "Published a page called %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
1141
+ msgstr ""
1142
+
1143
+ #: defaults.php:1507
1144
+ msgid "User modified a published WordPress page"
1145
+ msgstr ""
1146
+
1147
+ #: defaults.php:1508
1148
+ msgid "Modified the published page %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
1149
+ msgstr ""
1150
+
1151
+ #: defaults.php:1513
1152
+ msgid "User modified a draft WordPress page"
1153
+ msgstr ""
1154
+
1155
+ #: defaults.php:1514
1156
+ msgid "Modified the draft page %PostTitle%. Page ID is %PostID%. %EditorLinkPage%."
1157
+ msgstr ""
1158
+
1159
+ #: defaults.php:1519
1160
+ msgid "User permanently deleted a page from the trash"
1161
+ msgstr ""
1162
+
1163
+ #: defaults.php:1520
1164
+ msgid "Permanently deleted the page %PostTitle%."
1165
+ msgstr ""
1166
+
1167
+ #: defaults.php:1525
1168
+ msgid "User moved WordPress page to the trash"
1169
+ msgstr ""
1170
+
1171
+ #: defaults.php:1526
1172
+ msgid "Moved the page %PostTitle% to trash. Page URL was %PostUrl%."
1173
+ msgstr ""
1174
+
1175
+ #: defaults.php:1531
1176
+ msgid "User restored a WordPress page from trash"
1177
+ msgstr ""
1178
+
1179
+ #: defaults.php:1532
1180
+ msgid "Page %PostTitle% has been restored from trash. %EditorLinkPage%."
1181
+ msgstr ""
1182
+
1183
+ #: defaults.php:1537
1184
+ msgid "User changed page URL"
1185
+ msgstr ""
1186
+
1187
+ #: defaults.php:1538
1188
+ msgid "Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%. %EditorLinkPage%."
1189
+ msgstr ""
1190
+
1191
+ #: defaults.php:1543
1192
+ msgid "User changed page author"
1193
+ msgstr ""
1194
+
1195
+ #: defaults.php:1544
1196
+ msgid "Changed the author of the page %PostTitle% from %OldAuthor% to %NewAuthor%. %EditorLinkPage%."
1197
+ msgstr ""
1198
+
1199
+ #: defaults.php:1549
1200
+ msgid "User changed page status"
1201
+ msgstr ""
1202
+
1203
+ #: defaults.php:1550
1204
+ msgid "Changed the status of the page %PostTitle% from %OldStatus% to %NewStatus%. %EditorLinkPage%."
1205
+ msgstr ""
1206
+
1207
+ #: defaults.php:1555
1208
+ msgid "User changed the visibility of a page post"
1209
+ msgstr ""
1210
+
1211
+ #: defaults.php:1556
1212
+ msgid "Changed the visibility of the page %PostTitle% from %OldVisibility% to %NewVisibility%. %EditorLinkPage%."
1213
+ msgstr ""
1214
+
1215
+ #: defaults.php:1561
1216
+ msgid "User changed the date of a page post"
1217
+ msgstr ""
1218
+
1219
+ #: defaults.php:1562
1220
+ msgid "Changed the date of the page %PostTitle% from %OldDate% to %NewDate%. %EditorLinkPage%."
1221
+ msgstr ""
1222
+
1223
+ #: defaults.php:1567
1224
+ msgid "User created a custom field for a page"
1225
+ msgstr ""
1226
+
1227
+ #: defaults.php:1568
1228
+ msgid "Created a new custom field called %MetaKey% with value %MetaValue% in the page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
1229
+ msgstr ""
1230
+
1231
+ #: defaults.php:1573
1232
+ msgid "User updated a custom field value for a page"
1233
+ msgstr ""
1234
+
1235
+ #: defaults.php:1574
1236
+ msgid "Modified the value of the custom field %MetaKey% from %MetaValueOld% to %MetaValueNew% in the page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
1237
+ msgstr ""
1238
+
1239
+ #: defaults.php:1579
1240
+ msgid "User deleted a custom field from a page"
1241
+ msgstr ""
1242
+
1243
+ #: defaults.php:1580
1244
+ msgid "Deleted the custom field %MetaKey% with id %MetaID% from page %PostTitle% %EditorLinkPage%<br>%MetaLink%."
1245
+ msgstr ""
1246
+
1247
+ #: defaults.php:1585
1248
+ msgid "User updated a custom field name for a page"
1249
+ msgstr ""
1250
+
1251
+ #: defaults.php:1586
1252
+ msgid "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in the page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
1253
+ msgstr ""
1254
+
1255
+ #: defaults.php:1591
1256
+ msgid "User modified content for a published page"
1257
+ msgstr ""
1258
+
1259
+ #: defaults.php:1592
1260
+ msgid "Modified the content of the published page %PostTitle%. Page URL is %PostUrl%. %RevisionLink% %EditorLinkPage%."
1261
+ msgstr ""
1262
+
1263
+ #: defaults.php:1597
1264
+ msgid "User modified content for a draft page"
1265
+ msgstr ""
1266
+
1267
+ #: defaults.php:1598
1268
+ msgid "Modified the content of draft page %PostTitle%.%RevisionLink% %EditorLinkPage%."
1269
+ msgstr ""
1270
+
1271
+ #: defaults.php:1603
1272
+ msgid "User scheduled a page"
1273
+ msgstr ""
1274
+
1275
+ #: defaults.php:1604
1276
+ msgid "Scheduled the page %PostTitle% to be published %PublishingDate%. %EditorLinkPage%."
1277
+ msgstr ""
1278
+
1279
+ #: defaults.php:1609
1280
+ msgid "User changed title of a page"
1281
+ msgstr ""
1282
+
1283
+ #: defaults.php:1610
1284
+ msgid "Changed the title of the page %OldTitle% to %NewTitle%. %EditorLinkPage%."
1285
+ msgstr ""
1286
+
1287
+ #: defaults.php:1615
1288
+ msgid "User opened a page in the editor"
1289
+ msgstr ""
1290
+
1291
+ #: defaults.php:1616
1292
+ msgid "Opened the page %PostTitle% in the editor. View the page: %EditorLinkPage%."
1293
+ msgstr ""
1294
+
1295
+ #: defaults.php:1621
1296
+ msgid "User viewed a page"
1297
+ msgstr ""
1298
+
1299
+ #: defaults.php:1622
1300
+ msgid "Viewed the page %PostTitle%. View the page: %PostUrl%."
1301
+ msgstr ""
1302
+
1303
+ #: defaults.php:1627
1304
+ msgid "User disabled Comments/Trackbacks and Pingbacks on a draft post"
1305
+ msgstr ""
1306
+
1307
+ #: defaults.php:1628
1308
+ msgid "Disabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
1309
+ msgstr ""
1310
+
1311
+ #: defaults.php:1633
1312
+ msgid "User enabled Comments/Trackbacks and Pingbacks on a draft post"
1313
+ msgstr ""
1314
+
1315
+ #: defaults.php:1634
1316
+ msgid "Enabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
1317
+ msgstr ""
1318
+
1319
+ #: defaults.php:1639
1320
+ msgid "User disabled Comments/Trackbacks and Pingbacks on a published page"
1321
+ msgstr ""
1322
+
1323
+ #: defaults.php:1640
1324
+ msgid "Disabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
1325
+ msgstr ""
1326
+
1327
+ #: defaults.php:1645
1328
+ msgid "User enabled Comments/Trackbacks and Pingbacks on a published page"
1329
+ msgstr ""
1330
+
1331
+ #: defaults.php:1646
1332
+ msgid "Enabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
1333
+ msgstr ""
1334
+
1335
+ #: defaults.php:1651
1336
+ msgid "User disabled Comments/Trackbacks and Pingbacks on a draft page"
1337
+ msgstr ""
1338
+
1339
+ #: defaults.php:1652
1340
+ msgid "Disabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
1341
+ msgstr ""
1342
+
1343
+ #: defaults.php:1657
1344
+ msgid "User enabled Comments/Trackbacks and Pingbacks on a draft page"
1345
+ msgstr ""
1346
+
1347
+ #: defaults.php:1658
1348
+ msgid "Enabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
1349
+ msgstr ""
1350
+
1351
+ #: defaults.php:1663
1352
+ msgid "A plugin created a page"
1353
+ msgstr ""
1354
+
1355
+ #: defaults.php:1664
1356
+ msgid "A plugin automatically created the following page: %PostTitle%."
1357
+ msgstr ""
1358
+
1359
+ #: defaults.php:1669
1360
+ msgid "A plugin deleted a page"
1361
+ msgstr ""
1362
+
1363
+ #: defaults.php:1670
1364
+ msgid "A plugin automatically deleted the following page: %PostTitle%."
1365
+ msgstr ""
1366
+
1367
+ #: defaults.php:1675
1368
+ msgid "A plugin modified a page"
1369
+ msgstr ""
1370
+
1371
+ #: defaults.php:1676
1372
+ msgid "Plugin modified the page %PostTitle%. View the page: %EditorLinkPage%."
1373
+ msgstr ""
1374
+
1375
+ #: defaults.php:1681
1376
+ msgid "User Accounts"
1377
+ msgstr ""
1378
+
1379
+ #: defaults.php:1682
1380
+ msgid "User Profiles"
1381
+ msgstr ""
1382
+
1383
+ #: defaults.php:1686
1384
+ msgid "New user was created on WordPress"
1385
+ msgstr ""
1386
+
1387
+ #: defaults.php:1687
1388
+ msgid "A new user %NewUserData->Username% is created via registration."
1389
+ msgstr ""
1390
+
1391
+ #: defaults.php:1689, classes/AlertManager.php:1063, classes/AuditLogListView.php:272, classes/AuditLogListView.php:306, classes/WidgetManager.php:76, classes/Views/Settings.php:1076, extensions/reports/classes/CsvReportGenerator.php:81, extensions/reports/classes/CsvReportGenerator.php:65, extensions/reports/classes/HtmlReportGenerator.php:245, extensions/reports/classes/HtmlReportGenerator.php:221, extensions/search/classes/Filters/UserNameFilter.php:46, extensions/user-sessions/classes/View/Sessions.php:138
1392
+ msgid "User"
1393
+ msgstr ""
1394
+
1395
+ #: defaults.php:1698
1396
+ msgid "User created another WordPress user"
1397
+ msgstr ""
1398
+
1399
+ #: defaults.php:1699
1400
+ msgid "Created the new user: %NewUserData->Username%."
1401
+ msgstr ""
1402
+
1403
+ #: defaults.php:1702, defaults.php:1716, defaults.php:1730, defaults.php:1744, defaults.php:1758, defaults.php:1773, defaults.php:1788, defaults.php:1802, defaults.php:1816, defaults.php:1832, defaults.php:1861, defaults.php:1875, defaults.php:1890, defaults.php:1906, defaults.php:1920, defaults.php:1935, defaults.php:1949, defaults.php:1963, defaults.php:1980, defaults.php:1994, defaults.php:2008, defaults.php:2022, defaults.php:2035
1404
+ msgid "First name"
1405
+ msgstr ""
1406
+
1407
+ #: defaults.php:1703, defaults.php:1717, defaults.php:1731, defaults.php:1745, defaults.php:1759, defaults.php:1774, defaults.php:1789, defaults.php:1803, defaults.php:1817, defaults.php:1833, defaults.php:1848, defaults.php:1876, defaults.php:1891, defaults.php:1907, defaults.php:1921, defaults.php:1936, defaults.php:1950, defaults.php:1964, defaults.php:1981, defaults.php:1995, defaults.php:2009, defaults.php:2023, defaults.php:2036
1408
+ msgid "Last name"
1409
+ msgstr ""
1410
+
1411
+ #: defaults.php:1712
1412
+ msgid "The role of a user was changed by another WordPress user"
1413
+ msgstr ""
1414
+
1415
+ #: defaults.php:1713
1416
+ msgid "Changed the role of user %TargetUsername% to %NewRole%."
1417
+ msgstr ""
1418
+
1419
+ #: defaults.php:1715, defaults.php:2720
1420
+ msgid "Previous role"
1421
+ msgstr ""
1422
+
1423
+ #: defaults.php:1726
1424
+ msgid "User has changed his or her password"
1425
+ msgstr ""
1426
+
1427
+ #: defaults.php:1727
1428
+ msgid "Changed the password."
1429
+ msgstr ""
1430
+
1431
+ #: defaults.php:1740
1432
+ msgid "User changed another user's password"
1433
+ msgstr ""
1434
+
1435
+ #: defaults.php:1741
1436
+ msgid "Changed the password of the user %TargetUserData->Username%."
1437
+ msgstr ""
1438
+
1439
+ #: defaults.php:1754
1440
+ msgid "User changed his or her email address"
1441
+ msgstr ""
1442
+
1443
+ #: defaults.php:1755
1444
+ msgid "Changed the email address to %NewEmail%."
1445
+ msgstr ""
1446
+
1447
+ #: defaults.php:1760, defaults.php:1775
1448
+ msgid "Previous email address"
1449
+ msgstr ""
1450
+
1451
+ #: defaults.php:1769
1452
+ msgid "User changed another user's email address"
1453
+ msgstr ""
1454
+
1455
+ #: defaults.php:1770
1456
+ msgid "Changed the email address of the user %TargetUsername% to %NewEmail%."
1457
+ msgstr ""
1458
+
1459
+ #: defaults.php:1784
1460
+ msgid "User was deleted by another user"
1461
+ msgstr ""
1462
+
1463
+ #: defaults.php:1785
1464
+ msgid "Deleted the user %TargetUserData->Username%."
1465
+ msgstr ""
1466
+
1467
+ #: defaults.php:1798
1468
+ msgid "User opened the profile page of another user"
1469
+ msgstr ""
1470
+
1471
+ #: defaults.php:1799
1472
+ msgid "Opened the profile page of user %TargetUsername%."
1473
+ msgstr ""
1474
+
1475
+ #: defaults.php:1812
1476
+ msgid "User updated a custom field value for a user"
1477
+ msgstr ""
1478
+
1479
+ #: defaults.php:1813
1480
+ msgid "Changed the value of the custom field %custom_field_name% in the user profile %TargetUsername%."
1481
+ msgstr ""
1482
+
1483
+ #: defaults.php:1818, defaults.php:2810, defaults.php:2842, defaults.php:3253
1484
+ msgid "Previous value"
1485
+ msgstr ""
1486
+
1487
+ #: defaults.php:1819, defaults.php:3254
1488
+ msgid "New value"
1489
+ msgstr ""
1490
+
1491
+ #: defaults.php:1828
1492
+ msgid "User created a custom field value for a user"
1493
+ msgstr ""
1494
+
1495
+ #: defaults.php:1829
1496
+ msgid "Created the custom field %custom_field_name% in the user profile %TargetUsername%."
1497
+ msgstr ""
1498
+
1499
+ #: defaults.php:1843
1500
+ msgid "User changed first name for a user"
1501
+ msgstr ""
1502
+
1503
+ #: defaults.php:1844
1504
+ msgid "Changed the first name of the user %TargetUsername% to %new_firstname%."
1505
+ msgstr ""
1506
+
1507
+ #: defaults.php:1847
1508
+ msgid "Previous name"
1509
+ msgstr ""
1510
+
1511
+ #: defaults.php:1857
1512
+ msgid "User changed last name for a user"
1513
+ msgstr ""
1514
+
1515
+ #: defaults.php:1858
1516
+ msgid "Changed the last name of the user %TargetUsername% to %new_lastname%."
1517
+ msgstr ""
1518
+
1519
+ #: defaults.php:1862
1520
+ msgid "Previous last name"
1521
+ msgstr ""
1522
+
1523
+ #: defaults.php:1871
1524
+ msgid "User changed nickname for a user"
1525
+ msgstr ""
1526
+
1527
+ #: defaults.php:1872
1528
+ msgid "Changed the nickname of the user %TargetUsername% to %new_nickname%."
1529
+ msgstr ""
1530
+
1531
+ #: defaults.php:1877
1532
+ msgid "Previous nickname"
1533
+ msgstr ""
1534
+
1535
+ #: defaults.php:1886
1536
+ msgid "User changed the display name for a user"
1537
+ msgstr ""
1538
+
1539
+ #: defaults.php:1887
1540
+ msgid "Changed the display name of the user %TargetUsername% to %new_displayname%."
1541
+ msgstr ""
1542
+
1543
+ #: defaults.php:1892
1544
+ msgid "Previous display name"
1545
+ msgstr ""
1546
+
1547
+ #: defaults.php:1902, defaults.php:1916
1548
+ msgid "User created an application password"
1549
+ msgstr ""
1550
+
1551
+ #: defaults.php:1903
1552
+ msgid "The application password %friendly_name%."
1553
+ msgstr ""
1554
+
1555
+ #: defaults.php:1917
1556
+ msgid "The application password %friendly_name% for the user %login%."
1557
+ msgstr ""
1558
+
1559
+ #: defaults.php:1931
1560
+ msgid "User revoked all application passwords"
1561
+ msgstr ""
1562
+
1563
+ #: defaults.php:1932
1564
+ msgid "All application passwords."
1565
+ msgstr ""
1566
+
1567
+ #: defaults.php:1945
1568
+ msgid "User revoked all application passwords for a user"
1569
+ msgstr ""
1570
+
1571
+ #: defaults.php:1946
1572
+ msgid "All application passwords from the user %login%."
1573
+ msgstr ""
1574
+
1575
+ #: defaults.php:1959
1576
+ msgid "Admin sent a password reset request to a user"
1577
+ msgstr ""
1578
+
1579
+ #: defaults.php:1960
1580
+ msgid "Sent a password reset request to the user %login%."
1581
+ msgstr ""
1582
+
1583
+ #: defaults.php:1972
1584
+ msgid "Multisite User Profiles"
1585
+ msgstr ""
1586
+
1587
+ #: defaults.php:1976
1588
+ msgid "User granted Super Admin privileges"
1589
+ msgstr ""
1590
+
1591
+ #: defaults.php:1977
1592
+ msgid "Granted Super Admin privileges to the user %TargetUsername%."
1593
+ msgstr ""
1594
+
1595
+ #: defaults.php:1990
1596
+ msgid "User revoked from Super Admin privileges"
1597
+ msgstr ""
1598
+
1599
+ #: defaults.php:1991
1600
+ msgid "Revoked Super Admin privileges from %TargetUsername%."
1601
+ msgstr ""
1602
+
1603
+ #: defaults.php:2004
1604
+ msgid "Existing user added to a site"
1605
+ msgstr ""
1606
+
1607
+ #: defaults.php:2005
1608
+ msgid "Added user %TargetUsername% to the site %SiteName%."
1609
+ msgstr ""
1610
+
1611
+ #: defaults.php:2018
1612
+ msgid "User removed from site"
1613
+ msgstr ""
1614
+
1615
+ #: defaults.php:2019
1616
+ msgid "Removed user %TargetUsername% from the site %SiteName%"
1617
+ msgstr ""
1618
+
1619
+ #: defaults.php:2021
1620
+ msgid "Site role"
1621
+ msgstr ""
1622
+
1623
+ #: defaults.php:2032
1624
+ msgid "New network user created"
1625
+ msgstr ""
1626
+
1627
+ #: defaults.php:2033
1628
+ msgid "Created the new network user %NewUserData->Username%."
1629
+ msgstr ""
1630
+
1631
+ #: defaults.php:2045
1632
+ msgid "Plugins & Themes"
1633
+ msgstr ""
1634
+
1635
+ #: defaults.php:2046, classes/AuditLogGridView.php:450, classes/AuditLogListView.php:440
1636
+ msgid "Plugins"
1637
+ msgstr ""
1638
+
1639
+ #: defaults.php:2050
1640
+ msgid "User installed a plugin"
1641
+ msgstr ""
1642
+
1643
+ #: defaults.php:2051
1644
+ msgid "Installed the plugin %Plugin->Name%."
1645
+ msgstr ""
1646
+
1647
+ #: defaults.php:2053, defaults.php:2066, defaults.php:2079, defaults.php:2092, defaults.php:2161, defaults.php:2174, defaults.php:2187, defaults.php:2226, defaults.php:2239
1648
+ msgid "Version"
1649
+ msgstr ""
1650
+
1651
+ #: defaults.php:2054, defaults.php:2067, defaults.php:2080, defaults.php:2093, defaults.php:2106, defaults.php:2162, defaults.php:2175, defaults.php:2188, defaults.php:2201, defaults.php:2227, defaults.php:2240
1652
+ msgid "Install location"
1653
+ msgstr ""
1654
+
1655
+ #: defaults.php:2063
1656
+ msgid "User activated a WordPress plugin"
1657
+ msgstr ""
1658
+
1659
+ #: defaults.php:2064
1660
+ msgid "Activated the plugin %PluginData->Name%."
1661
+ msgstr ""
1662
+
1663
+ #: defaults.php:2076
1664
+ msgid "User deactivated a WordPress plugin"
1665
+ msgstr ""
1666
+
1667
+ #: defaults.php:2077
1668
+ msgid "Deactivated the plugin %PluginData->Name%."
1669
+ msgstr ""
1670
+
1671
+ #: defaults.php:2089
1672
+ msgid "User uninstalled a plugin"
1673
+ msgstr ""
1674
+
1675
+ #: defaults.php:2090
1676
+ msgid "Uninstalled the plugin %PluginData->Name%."
1677
+ msgstr ""
1678
+
1679
+ #: defaults.php:2102
1680
+ msgid "User upgraded a plugin"
1681
+ msgstr ""
1682
+
1683
+ #: defaults.php:2103
1684
+ msgid "Updated the plugin %PluginData->Name%."
1685
+ msgstr ""
1686
+
1687
+ #: defaults.php:2105
1688
+ msgid "Updated version"
1689
+ msgstr ""
1690
+
1691
+ #: defaults.php:2115
1692
+ msgid "A plugin created a post"
1693
+ msgstr ""
1694
+
1695
+ #: defaults.php:2116
1696
+ msgid "The plugin created the post %PostTitle%."
1697
+ msgstr ""
1698
+
1699
+ #: defaults.php:2121, defaults.php:2136, classes/AlertManager.php:1065, classes/AuditLogGridView.php:447, classes/AuditLogListView.php:438
1700
+ msgid "Plugin"
1701
+ msgstr ""
1702
+
1703
+ #: defaults.php:2130
1704
+ msgid "A plugin deleted a post"
1705
+ msgstr ""
1706
+
1707
+ #: defaults.php:2131
1708
+ msgid "A plugin deleted the post %PostTitle%."
1709
+ msgstr ""
1710
+
1711
+ #: defaults.php:2145
1712
+ msgid "User changed a file using the plugin editor"
1713
+ msgstr ""
1714
+
1715
+ #: defaults.php:2146
1716
+ msgid "Modified the file %File% with the plugin editor."
1717
+ msgstr ""
1718
+
1719
+ #: defaults.php:2154
1720
+ msgid "Themes"
1721
+ msgstr ""
1722
+
1723
+ #: defaults.php:2158
1724
+ msgid "User installed a theme"
1725
+ msgstr ""
1726
+
1727
+ #: defaults.php:2159
1728
+ msgid "Installed the theme %Theme->Name%."
1729
+ msgstr ""
1730
+
1731
+ #: defaults.php:2171
1732
+ msgid "User activated a theme"
1733
+ msgstr ""
1734
+
1735
+ #: defaults.php:2172
1736
+ msgid "Activated the theme %Theme->Name%."
1737
+ msgstr ""
1738
+
1739
+ #: defaults.php:2184
1740
+ msgid "User uninstalled a theme"
1741
+ msgstr ""
1742
+
1743
+ #: defaults.php:2185
1744
+ msgid "Deleted the theme %Theme->Name%."
1745
+ msgstr ""
1746
+
1747
+ #: defaults.php:2197
1748
+ msgid "User updated a theme"
1749
+ msgstr ""
1750
+
1751
+ #: defaults.php:2198
1752
+ msgid "Updated the theme %Theme->Name%."
1753
+ msgstr ""
1754
+
1755
+ #: defaults.php:2200, defaults.php:2294
1756
+ msgid "New version"
1757
+ msgstr ""
1758
+
1759
+ #: defaults.php:2210
1760
+ msgid "User changed a file using the theme editor"
1761
+ msgstr ""
1762
+
1763
+ #: defaults.php:2211
1764
+ msgid "Modified the file %Theme%/%File% with the theme editor."
1765
+ msgstr ""
1766
+
1767
+ #: defaults.php:2219
1768
+ msgid "Themes on Multisite"
1769
+ msgstr ""
1770
+
1771
+ #: defaults.php:2223
1772
+ msgid "Activated theme on network"
1773
+ msgstr ""
1774
+
1775
+ #: defaults.php:2224
1776
+ msgid "Network activated the theme %Theme->Name%."
1777
+ msgstr ""
1778
+
1779
+ #: defaults.php:2236
1780
+ msgid "Deactivated theme from network"
1781
+ msgstr ""
1782
+
1783
+ #: defaults.php:2237
1784
+ msgid "Network deactivated the theme %Theme->Name%."
1785
+ msgstr ""
1786
+
1787
+ #: defaults.php:2249
1788
+ msgid "WordPress & System"
1789
+ msgstr ""
1790
+
1791
+ #: defaults.php:2250, classes/AlertManager.php:1064, classes/AlertManager.php:1754, classes/AuditLogGridView.php:456, classes/AuditLogListView.php:444, extensions/email-notifications/classes/DailyNotification.php:243, extensions/email-notifications/classes/Notifier.php:641, extensions/reports/classes/Common.php:1178
1792
+ msgid "System"
1793
+ msgstr ""
1794
+
1795
+ #: defaults.php:2254
1796
+ msgid "Unknown Error"
1797
+ msgstr ""
1798
+
1799
+ #: defaults.php:2255
1800
+ msgid "An unexpected error has occurred."
1801
+ msgstr ""
1802
+
1803
+ #: defaults.php:2260
1804
+ msgid "PHP error"
1805
+ msgstr ""
1806
+
1807
+ #: defaults.php:2261, defaults.php:2267, defaults.php:2273, defaults.php:2279, defaults.php:2285
1808
+ msgid "%Message%."
1809
+ msgstr ""
1810
+
1811
+ #: defaults.php:2266
1812
+ msgid "PHP warning"
1813
+ msgstr ""
1814
+
1815
+ #: defaults.php:2272
1816
+ msgid "PHP notice"
1817
+ msgstr ""
1818
+
1819
+ #: defaults.php:2278
1820
+ msgid "PHP exception"
1821
+ msgstr ""
1822
+
1823
+ #: defaults.php:2284
1824
+ msgid "PHP shutdown error"
1825
+ msgstr ""
1826
+
1827
+ #: defaults.php:2290
1828
+ msgid "WordPress was updated"
1829
+ msgstr ""
1830
+
1831
+ #: defaults.php:2291
1832
+ msgid "Updated WordPress."
1833
+ msgstr ""
1834
+
1835
+ #: defaults.php:2293
1836
+ msgid "Previous version"
1837
+ msgstr ""
1838
+
1839
+ #: defaults.php:2310
1840
+ msgid "Advertising Extensions"
1841
+ msgstr ""
1842
+
1843
+ #: defaults.php:2311
1844
+ msgid "%PromoName% %PromoMessage%"
1845
+ msgstr ""
1846
+
1847
+ #: defaults.php:2315
1848
+ msgid "Activity log plugin"
1849
+ msgstr ""
1850
+
1851
+ #: defaults.php:2319
1852
+ msgid "Events automatically pruned by system"
1853
+ msgstr ""
1854
+
1855
+ #: defaults.php:2320
1856
+ msgid "System automatically deleted %EventCount% events from the activity log."
1857
+ msgstr ""
1858
+
1859
+ #: defaults.php:2329
1860
+ msgid "Reset the plugin's settings to default"
1861
+ msgstr ""
1862
+
1863
+ #: defaults.php:2330
1864
+ msgid "Reset the activity log plugin's settings to default."
1865
+ msgstr ""
1866
+
1867
+ #: defaults.php:2339
1868
+ msgid "Purged the activity log"
1869
+ msgstr ""
1870
+
1871
+ #: defaults.php:2340
1872
+ msgid "Purged the activity log."
1873
+ msgstr ""
1874
+
1875
+ #: defaults.php:2350
1876
+ msgid "Some WP Activity Log plugin settings on this site were propagated and overridden from the MainWP dashboard"
1877
+ msgstr ""
1878
+
1879
+ #: defaults.php:2351
1880
+ msgid "Some <strong>WP Activity Log</strong> plugin settings on this site were propagated and overridden from the MainWP dashboard."
1881
+ msgstr ""
1882
+
1883
+ #: defaults.php:2361
1884
+ msgid "Changed the status of the Login Page Notification"
1885
+ msgstr ""
1886
+
1887
+ #: defaults.php:2362
1888
+ msgid "Changed the status of the <strong>Login Page Notification.</strong>"
1889
+ msgstr ""
1890
+
1891
+ #: defaults.php:2371
1892
+ msgid "Changed the text of the Login Page Notification"
1893
+ msgstr ""
1894
+
1895
+ #: defaults.php:2372
1896
+ msgid "Changed the text of the <strong>Login Page Notification.</strong>"
1897
+ msgstr ""
1898
+
1899
+ #: defaults.php:2381
1900
+ msgid "Changed the status of the Reverse proxy / firewall option"
1901
+ msgstr ""
1902
+
1903
+ #: defaults.php:2382
1904
+ msgid "Changed the status of the <strong>Reverse proxy / firewall option.</strong>"
1905
+ msgstr ""
1906
+
1907
+ #: defaults.php:2391
1908
+ msgid "Changed the Restrict plugin access setting"
1909
+ msgstr ""
1910
+
1911
+ #: defaults.php:2392
1912
+ msgid "Changed the <strong>Restrict plugin access</strong> setting to %new_setting%."
1913
+ msgstr ""
1914
+
1915
+ #: defaults.php:2394, defaults.php:2428, defaults.php:2898, defaults.php:2985, defaults.php:3278
1916
+ msgid "Previous setting"
1917
+ msgstr ""
1918
+
1919
+ #: defaults.php:2403
1920
+ msgid "The user %user% to / from the list of users who can view the activity log"
1921
+ msgstr ""
1922
+
1923
+ #: defaults.php:2404
1924
+ msgid "The user %user% to / from the list of users who can view the activity log."
1925
+ msgstr ""
1926
+
1927
+ #: defaults.php:2406
1928
+ msgid "Previous list of users who had access to view the activity log"
1929
+ msgstr ""
1930
+
1931
+ #: defaults.php:2415
1932
+ msgid "Changed the status of the Hide plugin in plugins page setting"
1933
+ msgstr ""
1934
+
1935
+ #: defaults.php:2416
1936
+ msgid "Changed the status of the <strong>Hide plugin in plugins page</strong> setting."
1937
+ msgstr ""
1938
+
1939
+ #: defaults.php:2425
1940
+ msgid "Changed the Activity log retention setting"
1941
+ msgstr ""
1942
+
1943
+ #: defaults.php:2426
1944
+ msgid "Changed the <strong>Activity log retention</strong> to %new_setting%."
1945
+ msgstr ""
1946
+
1947
+ #: defaults.php:2437
1948
+ msgid "A user was added to / from the list of excluded users from the activity log"
1949
+ msgstr ""
1950
+
1951
+ #: defaults.php:2438
1952
+ msgid "The user %user% to / from the list of excluded users from the activity log."
1953
+ msgstr ""
1954
+
1955
+ #: defaults.php:2440, defaults.php:2452
1956
+ msgid "Previous list of users"
1957
+ msgstr ""
1958
+
1959
+ #: defaults.php:2449
1960
+ msgid "A user role was added to / from the list of excluded roles from the activity log"
1961
+ msgstr ""
1962
+
1963
+ #: defaults.php:2450
1964
+ msgid "The user role %role% to / from the list of excluded roles from the activity log."
1965
+ msgstr ""
1966
+
1967
+ #: defaults.php:2461
1968
+ msgid "An IP address was added to / from the list of excluded IP addresses from the activity log"
1969
+ msgstr ""
1970
+
1971
+ #: defaults.php:2462
1972
+ msgid "The IP address %ip% to / from the list of excluded IP addresses from the activity log."
1973
+ msgstr ""
1974
+
1975
+ #: defaults.php:2464
1976
+ msgid "Previous list of IPs"
1977
+ msgstr ""
1978
+
1979
+ #: defaults.php:2473
1980
+ msgid "A post type was added to / from the list of excluded post types from the activity log"
1981
+ msgstr ""
1982
+
1983
+ #: defaults.php:2474
1984
+ msgid "The post type %post_type% to / from the list of excluded post types from the activity log."
1985
+ msgstr ""
1986
+
1987
+ #: defaults.php:2476
1988
+ msgid "Previous list of Post types"
1989
+ msgstr ""
1990
+
1991
+ #: defaults.php:2485
1992
+ msgid "A custom field was added to / from the list of excluded custom fields from the activity log"
1993
+ msgstr ""
1994
+
1995
+ #: defaults.php:2486
1996
+ msgid "The custom field %custom_field% to / from the list of excluded custom fields from the activity log."
1997
+ msgstr ""
1998
+
1999
+ #: defaults.php:2488
2000
+ msgid "Previous list of Custom fields"
2001
+ msgstr ""
2002
+
2003
+ #: defaults.php:2497
2004
+ msgid "A custom field was added to / from the list of excluded user profile custom fields from the activity log"
2005
+ msgstr ""
2006
+
2007
+ #: defaults.php:2498
2008
+ msgid "The custom field %custom_field% to / from the list of excluded user profile custom fields from the activity log."
2009
+ msgstr ""
2010
+
2011
+ #: defaults.php:2500
2012
+ msgid "Previous list of user profile Custom fields"
2013
+ msgstr ""
2014
+
2015
+ #: defaults.php:2508
2016
+ msgid "Notifications & Integrations"
2017
+ msgstr ""
2018
+
2019
+ #: defaults.php:2512
2020
+ msgid "Changed the status of the Daily Summary of Activity Log"
2021
+ msgstr ""
2022
+
2023
+ #: defaults.php:2513
2024
+ msgid "Changed the status of the <strong>Daily Summary of Activity Log.</strong>."
2025
+ msgstr ""
2026
+
2027
+ #: defaults.php:2522
2028
+ msgid "Modified the reciepients of the Daily Summary of Activity Log."
2029
+ msgstr ""
2030
+
2031
+ #: defaults.php:2523
2032
+ msgid "Modified the reciepients of the <strong>Daily Summary of Activity Log</strong>."
2033
+ msgstr ""
2034
+
2035
+ #: defaults.php:2525
2036
+ msgid "New recipient"
2037
+ msgstr ""
2038
+
2039
+ #: defaults.php:2526
2040
+ msgid "Previous recipient"
2041
+ msgstr ""
2042
+
2043
+ #: defaults.php:2535
2044
+ msgid "Changed the status of a built in notification"
2045
+ msgstr ""
2046
+
2047
+ #: defaults.php:2536
2048
+ msgid "Changed the status of the built in notification %notification_name%."
2049
+ msgstr ""
2050
+
2051
+ #: defaults.php:2545
2052
+ msgid "Modified the recipient(s) of the built a notification"
2053
+ msgstr ""
2054
+
2055
+ #: defaults.php:2546
2056
+ msgid "Modified the recipient(s) of the built in notification %notification_name%."
2057
+ msgstr ""
2058
+
2059
+ #: defaults.php:2548
2060
+ msgid "New recipient(s)"
2061
+ msgstr ""
2062
+
2063
+ #: defaults.php:2549
2064
+ msgid "Previous recipient(s)"
2065
+ msgstr ""
2066
+
2067
+ #: defaults.php:2558
2068
+ msgid "Added a new custom notification"
2069
+ msgstr ""
2070
+
2071
+ #: defaults.php:2559
2072
+ msgid "Added a new custom notification %notification_name%."
2073
+ msgstr ""
2074
+
2075
+ #: defaults.php:2561, defaults.php:2573
2076
+ msgid "Recipient(s)"
2077
+ msgstr ""
2078
+
2079
+ #: defaults.php:2570
2080
+ msgid "Modified a custom notification"
2081
+ msgstr ""
2082
+
2083
+ #: defaults.php:2571
2084
+ msgid "Modified the custom notification %notification_name%."
2085
+ msgstr ""
2086
+
2087
+ #: defaults.php:2582
2088
+ msgid "Changed the status of a custom notification"
2089
+ msgstr ""
2090
+
2091
+ #: defaults.php:2583
2092
+ msgid "Changed the status of the custom notification %notification_name%."
2093
+ msgstr ""
2094
+
2095
+ #: defaults.php:2592
2096
+ msgid "Deleted a custom notification"
2097
+ msgstr ""
2098
+
2099
+ #: defaults.php:2593
2100
+ msgid "Deleted the custom notification %notification_name%."
2101
+ msgstr ""
2102
+
2103
+ #: defaults.php:2602
2104
+ msgid "Modified a default notification template"
2105
+ msgstr ""
2106
+
2107
+ #: defaults.php:2603
2108
+ msgid "Modified the default %template_name% notification template."
2109
+ msgstr ""
2110
+
2111
+ #: defaults.php:2614
2112
+ msgid "Added a new integrations connection"
2113
+ msgstr ""
2114
+
2115
+ #: defaults.php:2615
2116
+ msgid "Added a new integrations connection %name%"
2117
+ msgstr ""
2118
+
2119
+ #: defaults.php:2617, defaults.php:2629
2120
+ msgid "Connection type"
2121
+ msgstr ""
2122
+
2123
+ #: defaults.php:2626
2124
+ msgid "Modified an integrations connection"
2125
+ msgstr ""
2126
+
2127
+ #: defaults.php:2627
2128
+ msgid "Modified the integrations connection %name%."
2129
+ msgstr ""
2130
+
2131
+ #: defaults.php:2638
2132
+ msgid "Deleted a integrations connection"
2133
+ msgstr ""
2134
+
2135
+ #: defaults.php:2639
2136
+ msgid "Deleted the integrations connection %name%."
2137
+ msgstr ""
2138
+
2139
+ #: defaults.php:2648
2140
+ msgid "Added a new activity log mirror"
2141
+ msgstr ""
2142
+
2143
+ #: defaults.php:2649
2144
+ msgid "Added a new activity log mirror %name%."
2145
+ msgstr ""
2146
+
2147
+ #: defaults.php:2651, defaults.php:2663, defaults.php:2675
2148
+ msgid "Connection used by this mirror"
2149
+ msgstr ""
2150
+
2151
+ #: defaults.php:2660
2152
+ msgid "Modified an activity log mirror"
2153
+ msgstr ""
2154
+
2155
+ #: defaults.php:2661
2156
+ msgid "Modified the activity log mirror %name%."
2157
+ msgstr ""
2158
+
2159
+ #: defaults.php:2672
2160
+ msgid "Changed the status of an activity log mirror"
2161
+ msgstr ""
2162
+
2163
+ #: defaults.php:2673
2164
+ msgid "Changed the status of the activity log mirror %name%."
2165
+ msgstr ""
2166
+
2167
+ #: defaults.php:2684
2168
+ msgid "Deleted an activity log mirror"
2169
+ msgstr ""
2170
+
2171
+ #: defaults.php:2685
2172
+ msgid "Deleted the activity log mirror %name%."
2173
+ msgstr ""
2174
+
2175
+ #: defaults.php:2694
2176
+ msgid "Changed the status of Logging of events to the database"
2177
+ msgstr ""
2178
+
2179
+ #: defaults.php:2695
2180
+ msgid "Changed the status of <strong>Logging of events to the database</strong>."
2181
+ msgstr ""
2182
+
2183
+ #: defaults.php:2703
2184
+ msgid "WordPress Site Settings"
2185
+ msgstr ""
2186
+
2187
+ #: defaults.php:2707
2188
+ msgid "Option Anyone Can Register in WordPress settings changed"
2189
+ msgstr ""
2190
+
2191
+ #: defaults.php:2708
2192
+ msgid "The <strong>Membership</strong> setting <strong>Anyone can register</strong>."
2193
+ msgstr ""
2194
+
2195
+ #: defaults.php:2717
2196
+ msgid "New User Default Role changed"
2197
+ msgstr ""
2198
+
2199
+ #: defaults.php:2718
2200
+ msgid "Changed the <strong>New user default role</strong> WordPress setting."
2201
+ msgstr ""
2202
+
2203
+ #: defaults.php:2721
2204
+ msgid "New role"
2205
+ msgstr ""
2206
+
2207
+ #: defaults.php:2730
2208
+ msgid "WordPress Administrator Notification email changed"
2209
+ msgstr ""
2210
+
2211
+ #: defaults.php:2731
2212
+ msgid "Change the <strong>Administrator email address</strong> in the WordPress settings."
2213
+ msgstr ""
2214
+
2215
+ #: defaults.php:2733
2216
+ msgid "Previous address"
2217
+ msgstr ""
2218
+
2219
+ #: defaults.php:2734
2220
+ msgid "New address"
2221
+ msgstr ""
2222
+
2223
+ #: defaults.php:2743
2224
+ msgid "User changes the WordPress Permalinks"
2225
+ msgstr ""
2226
+
2227
+ #: defaults.php:2744
2228
+ msgid "Changed the <strong>WordPress permalinks</strong>."
2229
+ msgstr ""
2230
+
2231
+ #: defaults.php:2746
2232
+ msgid "Previous permalinks"
2233
+ msgstr ""
2234
+
2235
+ #: defaults.php:2747
2236
+ msgid "New permalinks"
2237
+ msgstr ""
2238
+
2239
+ #: defaults.php:2756
2240
+ msgid "Enabled/Disabled the option Discourage search engines from indexing this site"
2241
+ msgstr ""
2242
+
2243
+ #: defaults.php:2757
2244
+ msgid "Changed the status of the WordPress setting <strong>Search engine visibility</strong> (Discourage search engines from indexing this site)"
2245
+ msgstr ""
2246
+
2247
+ #: defaults.php:2766
2248
+ msgid "Enabled/Disabled comments on all the website"
2249
+ msgstr ""
2250
+
2251
+ #: defaults.php:2767
2252
+ msgid "Changed the status of the WordPress setting <strong>Allow people to submit comments on new posts</strong>."
2253
+ msgstr ""
2254
+
2255
+ #: defaults.php:2777
2256
+ msgid "Enabled/Disabled the option Comment author must fill out name and email"
2257
+ msgstr ""
2258
+
2259
+ #: defaults.php:2778
2260
+ msgid "Changed the status of the WordPress setting <strong>.Comment author must fill out name and email</strong>."
2261
+ msgstr ""
2262
+
2263
+ #: defaults.php:2787
2264
+ msgid "Enabled/Disabled the option Users must be logged in and registered to comment"
2265
+ msgstr ""
2266
+
2267
+ #: defaults.php:2788
2268
+ msgid "Changed the status of the WordPress setting <strong>Users must be registered and logged in to comment</strong>."
2269
+ msgstr ""
2270
+
2271
+ #: defaults.php:2797
2272
+ msgid "Enabled/Disabled the option to automatically close comments"
2273
+ msgstr ""
2274
+
2275
+ #: defaults.php:2798
2276
+ msgid "Changed the status of the WordPress setting <strong>Automatically close comments after %Value% days</strong>."
2277
+ msgstr ""
2278
+
2279
+ #: defaults.php:2807
2280
+ msgid "Changed the value of the option Automatically close comments"
2281
+ msgstr ""
2282
+
2283
+ #: defaults.php:2808
2284
+ msgid "Changed the value of the WordPress setting <strong>Automatically close comments after a number of days</strong> to %NewValue%."
2285
+ msgstr ""
2286
+
2287
+ #: defaults.php:2819
2288
+ msgid "Enabled/Disabled the option for comments to be manually approved"
2289
+ msgstr ""
2290
+
2291
+ #: defaults.php:2820
2292
+ msgid "Changed the value of the WordPress setting <strong>Comments must be manualy approved</strong>."
2293
+ msgstr ""
2294
+
2295
+ #: defaults.php:2829
2296
+ msgid "Enabled/Disabled the option for an author to have previously approved comments for the comments to appear"
2297
+ msgstr ""
2298
+
2299
+ #: defaults.php:2830
2300
+ msgid "Changed the value of the WordPress setting <strong>Comment author must have a previously approved comment</strong>."
2301
+ msgstr ""
2302
+
2303
+ #: defaults.php:2839
2304
+ msgid "Changed the number of links that a comment must have to be held in the queue"
2305
+ msgstr ""
2306
+
2307
+ #: defaults.php:2840
2308
+ msgid "Changed the value of the WordPress setting <strong>Hold a comment in the queue if it contains links</strong> to %NewValue% links."
2309
+ msgstr ""
2310
+
2311
+ #: defaults.php:2851
2312
+ msgid "Modified the list of keywords for comments moderation"
2313
+ msgstr ""
2314
+
2315
+ #: defaults.php:2852
2316
+ msgid "Modified the list of keywords for comments medoration in WordPress."
2317
+ msgstr ""
2318
+
2319
+ #: defaults.php:2861
2320
+ msgid "Modified the list of keywords for comments blacklisting"
2321
+ msgstr ""
2322
+
2323
+ #: defaults.php:2862
2324
+ msgid "Modified the list of <strong>Disallowed comment keys</strong> (keywords) for comments blacklisting in WordPress."
2325
+ msgstr ""
2326
+
2327
+ #: defaults.php:2871
2328
+ msgid "Option WordPress Address (URL) in WordPress settings changed"
2329
+ msgstr ""
2330
+
2331
+ #: defaults.php:2872
2332
+ msgid "Changed the <strong>WordPress address (URL)</strong> tp %new_url%."
2333
+ msgstr ""
2334
+
2335
+ #: defaults.php:2883
2336
+ msgid "Option Site Address (URL) in WordPress settings changed"
2337
+ msgstr ""
2338
+
2339
+ #: defaults.php:2884
2340
+ msgid "Changed the <strong>Site address (URL)</strong> to %new_url%."
2341
+ msgstr ""
2342
+
2343
+ #: defaults.php:2895
2344
+ msgid "Option Your homepage displays in WordPress settings changed"
2345
+ msgstr ""
2346
+
2347
+ #: defaults.php:2896
2348
+ msgid "Changed the <strong>Your homepage displays</strong> WordPress setting to %new_homepage%."
2349
+ msgstr ""
2350
+
2351
+ #: defaults.php:2907
2352
+ msgid "Option homepage in WordPress settings changed"
2353
+ msgstr ""
2354
+
2355
+ #: defaults.php:2908
2356
+ msgid "Changed the <strong>Homepage</strong> in the WordPress settings to %new_page%."
2357
+ msgstr ""
2358
+
2359
+ #: defaults.php:2910, defaults.php:2922
2360
+ msgid "Previous page"
2361
+ msgstr ""
2362
+
2363
+ #: defaults.php:2919
2364
+ msgid "Option posts page in WordPress settings changed"
2365
+ msgstr ""
2366
+
2367
+ #: defaults.php:2920
2368
+ msgid "Changed the <strong> Posts</strong> page in the WordPress settings to %new_page%."
2369
+ msgstr ""
2370
+
2371
+ #: defaults.php:2932
2372
+ msgid "Option Timezone in WordPress settings changed"
2373
+ msgstr ""
2374
+
2375
+ #: defaults.php:2933
2376
+ msgid "Changed the <strong>Timezone</strong> in the WordPress settings to %new_timezone%."
2377
+ msgstr ""
2378
+
2379
+ #: defaults.php:2935
2380
+ msgid "Previous timezone"
2381
+ msgstr ""
2382
+
2383
+ #: defaults.php:2944
2384
+ msgid "Option Date format in WordPress settings changed"
2385
+ msgstr ""
2386
+
2387
+ #: defaults.php:2945
2388
+ msgid "Changed the <strong>Date format</strong> in the WordPress settings to %new_date_format%."
2389
+ msgstr ""
2390
+
2391
+ #: defaults.php:2947, defaults.php:2959
2392
+ msgid "Previous format"
2393
+ msgstr ""
2394
+
2395
+ #: defaults.php:2956
2396
+ msgid "Option Time format in WordPress settings changed"
2397
+ msgstr ""
2398
+
2399
+ #: defaults.php:2957
2400
+ msgid "Changed the <strong>Time format</strong> in the WordPress settings to %new_time_format%."
2401
+ msgstr ""
2402
+
2403
+ #: defaults.php:2969
2404
+ msgid "Option Automatic updates setting changed"
2405
+ msgstr ""
2406
+
2407
+ #: defaults.php:2970
2408
+ msgid "Changed the <strong>Automatic updates</strong> setting."
2409
+ msgstr ""
2410
+
2411
+ #: defaults.php:2972
2412
+ msgid "New setting status"
2413
+ msgstr ""
2414
+
2415
+ #: defaults.php:2982
2416
+ msgid "Option Site Language setting changed"
2417
+ msgstr ""
2418
+
2419
+ #: defaults.php:2983
2420
+ msgid "Changed the <strong>Site Language</strong> to %new_value%."
2421
+ msgstr ""
2422
+
2423
+ #: defaults.php:2993
2424
+ msgid "Database Events"
2425
+ msgstr ""
2426
+
2427
+ #: defaults.php:2997
2428
+ msgid "Plugin created table"
2429
+ msgstr ""
2430
+
2431
+ #: defaults.php:2998
2432
+ msgid "The plugin %Plugin->Name% created this table in the database."
2433
+ msgstr ""
2434
+
2435
+ #: defaults.php:3000, defaults.php:3012, defaults.php:3024, defaults.php:3036, defaults.php:3048
2436
+ msgid "Table"
2437
+ msgstr ""
2438
+
2439
+ #: defaults.php:3009
2440
+ msgid "Plugin modified table structure"
2441
+ msgstr ""
2442
+
2443
+ #: defaults.php:3010
2444
+ msgid "The plugin %Plugin->Name% modified the structure of a database table."
2445
+ msgstr ""
2446
+
2447
+ #: defaults.php:3021
2448
+ msgid "Plugin deleted table"
2449
+ msgstr ""
2450
+
2451
+ #: defaults.php:3022
2452
+ msgid "The plugin %Plugin->Name% deleted this table from the database."
2453
+ msgstr ""
2454
+
2455
+ #: defaults.php:3033
2456
+ msgid "Theme created tables"
2457
+ msgstr ""
2458
+
2459
+ #: defaults.php:3034
2460
+ msgid "The theme %Theme->Name% created this tables in the database."
2461
+ msgstr ""
2462
+
2463
+ #: defaults.php:3045
2464
+ msgid "Theme modified tables structure"
2465
+ msgstr ""
2466
+
2467
+ #: defaults.php:3046
2468
+ msgid "The theme %Theme->Name% modified the structure of this database table"
2469
+ msgstr ""
2470
+
2471
+ #: defaults.php:3057
2472
+ msgid "Theme deleted tables"
2473
+ msgstr ""
2474
+
2475
+ #: defaults.php:3058
2476
+ msgid "The theme %Theme->Name% deleted this table from the database."
2477
+ msgstr ""
2478
+
2479
+ #: defaults.php:3060, defaults.php:3072, defaults.php:3084, defaults.php:3096, defaults.php:3108, defaults.php:3120, defaults.php:3132
2480
+ msgid "Tables"
2481
+ msgstr ""
2482
+
2483
+ #: defaults.php:3069
2484
+ msgid "Unknown component created tables"
2485
+ msgstr ""
2486
+
2487
+ #: defaults.php:3070
2488
+ msgid "An unknown component created these tables in the database."
2489
+ msgstr ""
2490
+
2491
+ #: defaults.php:3081
2492
+ msgid "Unknown component modified tables structure"
2493
+ msgstr ""
2494
+
2495
+ #: defaults.php:3082
2496
+ msgid "An unknown component modified the structure of these database tables."
2497
+ msgstr ""
2498
+
2499
+ #: defaults.php:3093
2500
+ msgid "Unknown component deleted tables"
2501
+ msgstr ""
2502
+
2503
+ #: defaults.php:3094
2504
+ msgid "An unknown component deleted these tables from the database."
2505
+ msgstr ""
2506
+
2507
+ #: defaults.php:3105
2508
+ msgid "WordPress created tables"
2509
+ msgstr ""
2510
+
2511
+ #: defaults.php:3106
2512
+ msgid "WordPress has created these tables in the database."
2513
+ msgstr ""
2514
+
2515
+ #: defaults.php:3117
2516
+ msgid "WordPress modified tables structure"
2517
+ msgstr ""
2518
+
2519
+ #: defaults.php:3118
2520
+ msgid "WordPress modified the structure of these database tables."
2521
+ msgstr ""
2522
+
2523
+ #: defaults.php:3129
2524
+ msgid "WordPress deleted tables"
2525
+ msgstr ""
2526
+
2527
+ #: defaults.php:3130
2528
+ msgid "WordPress deleted these tables from the database."
2529
+ msgstr ""
2530
+
2531
+ #: defaults.php:3141
2532
+ msgid "Multisite Network Sites"
2533
+ msgstr ""
2534
+
2535
+ #: defaults.php:3142
2536
+ msgid "MultiSite"
2537
+ msgstr ""
2538
+
2539
+ #: defaults.php:3146
2540
+ msgid "New site added on the network"
2541
+ msgstr ""
2542
+
2543
+ #: defaults.php:3147
2544
+ msgid "Added the new site %SiteName% to the network."
2545
+ msgstr ""
2546
+
2547
+ #: defaults.php:3149, defaults.php:3161, defaults.php:3173, defaults.php:3185, defaults.php:3197, defaults.php:3209
2548
+ msgid "URL"
2549
+ msgstr ""
2550
+
2551
+ #: defaults.php:3158
2552
+ msgid "Existing site archived"
2553
+ msgstr ""
2554
+
2555
+ #: defaults.php:3159
2556
+ msgid "Archived the site %SiteName% on the network."
2557
+ msgstr ""
2558
+
2559
+ #: defaults.php:3170
2560
+ msgid "Archived site has been unarchived"
2561
+ msgstr ""
2562
+
2563
+ #: defaults.php:3171
2564
+ msgid "Unarchived the site %SiteName%."
2565
+ msgstr ""
2566
+
2567
+ #: defaults.php:3182
2568
+ msgid "Deactivated site has been activated"
2569
+ msgstr ""
2570
+
2571
+ #: defaults.php:3183
2572
+ msgid "Activated the site %SiteName% on the network."
2573
+ msgstr ""
2574
+
2575
+ #: defaults.php:3194
2576
+ msgid "Site has been deactivated"
2577
+ msgstr ""
2578
+
2579
+ #: defaults.php:3195
2580
+ msgid "Deactiveated the site %SiteName% on the network."
2581
+ msgstr ""
2582
+
2583
+ #: defaults.php:3206
2584
+ msgid "Existing site deleted from network"
2585
+ msgstr ""
2586
+
2587
+ #: defaults.php:3207
2588
+ msgid "The site: %SiteName%."
2589
+ msgstr ""
2590
+
2591
+ #: defaults.php:3218
2592
+ msgid "Allow site administrators to add new users to their sites settings changed"
2593
+ msgstr ""
2594
+
2595
+ #: defaults.php:3219
2596
+ msgid "Changed the status of the network setting <strong>Allow site administrators to add new users to their sites</strong>."
2597
+ msgstr ""
2598
+
2599
+ #: defaults.php:3228
2600
+ msgid "Site upload space settings changed"
2601
+ msgstr ""
2602
+
2603
+ #: defaults.php:3229
2604
+ msgid "Changed the status of the network setting <strong>Site upload space</strong> (to limit space allocated for each site's upload directory)."
2605
+ msgstr ""
2606
+
2607
+ #: defaults.php:3238
2608
+ msgid "Site upload space file size settings changed"
2609
+ msgstr ""
2610
+
2611
+ #: defaults.php:3239
2612
+ msgid "Changed the file size in the <strong>Site upload space</strong> network setting to %new_value%."
2613
+ msgstr ""
2614
+
2615
+ #: defaults.php:3241
2616
+ msgid "Previous size (MB)"
2617
+ msgstr ""
2618
+
2619
+ #: defaults.php:3250
2620
+ msgid "Site Upload file types settings changed"
2621
+ msgstr ""
2622
+
2623
+ #: defaults.php:3251
2624
+ msgid "Changed the network setting <strong>Upload file types (list of allowed file types)</strong>."
2625
+ msgstr ""
2626
+
2627
+ #: defaults.php:3263
2628
+ msgid "Site Max upload file size settings changed"
2629
+ msgstr ""
2630
+
2631
+ #: defaults.php:3264
2632
+ msgid "Changed the <strong>Max upload file size</strong> network setting to %new_value%."
2633
+ msgstr ""
2634
+
2635
+ #: defaults.php:3266
2636
+ msgid "Previous size (KB)"
2637
+ msgstr ""
2638
+
2639
+ #: defaults.php:3275
2640
+ msgid "Allow new registrations settings changed"
2641
+ msgstr ""
2642
+
2643
+ #: defaults.php:3276
2644
+ msgid "Changed the <strong>Allow new registrations</strong> setting to %new_setting%."
2645
+ msgstr ""
2646
+
2647
+ #: defaults.php:3292, classes/Views/Settings.php:99
2648
+ msgid "File Changes"
2649
+ msgstr ""
2650
+
2651
+ #: defaults.php:3293
2652
+ msgid "Monitor File Changes"
2653
+ msgstr ""
2654
+
2655
+ #: defaults.php:3297
2656
+ msgid "Dummy"
2657
+ msgstr ""
2658
+
2659
+ #. translators: Username
2660
+ #. translators: Username
2661
+ #: wp-security-audit-log.php:940, wp-security-audit-log.php:967
2662
+ msgid "Hey %1$s"
2663
+ msgstr ""
2664
+
2665
+ #: wp-security-audit-log.php:941
2666
+ msgid "Never miss an important update! Opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with freemius.com."
2667
+ msgstr ""
2668
+
2669
+ #: wp-security-audit-log.php:942, wp-security-audit-log.php:970
2670
+ msgid "Note: "
2671
+ msgstr ""
2672
+
2673
+ #: wp-security-audit-log.php:943, wp-security-audit-log.php:971
2674
+ msgid "NO ACTIVITY LOG ACTIVITY & DATA IS SENT BACK TO OUR SERVERS."
2675
+ msgstr ""
2676
+
2677
+ #. translators: 1: Plugin name. 2: Freemius link.
2678
+ #: wp-security-audit-log.php:969
2679
+ 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."
2680
+ msgstr ""
2681
+
2682
+ #. translators: Plugin name
2683
+ #: wp-security-audit-log.php:991
2684
+ msgid "Get a free 7-day trial of the premium edition of %s. No credit card required, no commitments!"
2685
+ msgstr ""
2686
+
2687
+ #: wp-security-audit-log.php:992, classes/AlertManager.php:1082
2688
+ msgid "WP Activity Log"
2689
+ msgstr ""
2690
+
2691
+ #: wp-security-audit-log.php:996
2692
+ msgid "Start free trial"
2693
+ msgstr ""
2694
+
2695
+ #: wp-security-audit-log.php:1064
2696
+ msgid "You need to activate the licence key to use WP Activity Log Premium. %2$s"
2697
+ msgstr ""
2698
+
2699
+ #: wp-security-audit-log.php:1065
2700
+ msgid "Activate the licence key now"
2701
+ msgstr ""
2702
+
2703
+ #. translators: Number of sites
2704
+ #: wp-security-audit-log.php:1087
2705
+ msgid "The license is limited to %s sub-sites. You need to upgrade your license to cover all the sub-sites on this network."
2706
+ msgstr ""
2707
+
2708
+ #: wp-security-audit-log.php:1083
2709
+ msgid "%s You need to renew your license to continue using premium features."
2710
+ msgstr ""
2711
+
2712
+ #: wp-security-audit-log.php:1185
2713
+ msgid "Error: You do not have sufficient permissions to disable this custom field."
2714
+ msgstr ""
2715
+
2716
+ #. translators: name of meta field (in bold)
2717
+ #: wp-security-audit-log.php:1233
2718
+ msgid "Custom field %s is no longer being monitored."
2719
+ msgstr ""
2720
+
2721
+ #. translators: setting tab name "Excluded Objects"
2722
+ #: wp-security-audit-log.php:1238
2723
+ msgid "Enable the monitoring of this custom field again from the %s tab in the plugin settings."
2724
+ msgstr ""
2725
+
2726
+ #: wp-security-audit-log.php:1239
2727
+ msgid "Excluded Objects"
2728
+ msgstr ""
2729
+
2730
+ #: wp-security-audit-log.php:1252
2731
+ msgid "Error: You do not have sufficient permissions to disable this alert."
2732
+ msgstr ""
2733
+
2734
+ #: wp-security-audit-log.php:1276
2735
+ msgid "Alert %1$s is no longer being monitored.<br /> %2$s"
2736
+ msgstr ""
2737
+
2738
+ #: wp-security-audit-log.php:1276
2739
+ msgid "You can enable this alert again from the Enable/Disable Alerts node in the plugin menu."
2740
+ msgstr ""
2741
+
2742
+ #: wp-security-audit-log.php:1301, classes/Views/SetupWizard.php:270
2743
+ msgid "Installing, please wait"
2744
+ msgstr ""
2745
+
2746
+ #: wp-security-audit-log.php:1302, classes/Views/SetupWizard.php:271
2747
+ msgid "Already installed"
2748
+ msgstr ""
2749
+
2750
+ #: wp-security-audit-log.php:1303, classes/Utilities/PluginInstallAndActivate.php:108, classes/Views/SetupWizard.php:272, classes/Views/SetupWizard.php:836
2751
+ msgid "Extension installed"
2752
+ msgstr ""
2753
+
2754
+ #: wp-security-audit-log.php:1304, classes/Views/SetupWizard.php:273
2755
+ msgid "Extension activated"
2756
+ msgstr ""
2757
+
2758
+ #: wp-security-audit-log.php:1305, classes/Views/SetupWizard.php:274
2759
+ msgid "Install failed"
2760
+ msgstr ""
2761
+
2762
+ #. translators: %s: PHP Version
2763
+ #: wp-security-audit-log.php:1357
2764
+ msgid "You are using a version of PHP that is older than %s, which is no longer supported."
2765
+ msgstr ""
2766
+
2767
+ #: wp-security-audit-log.php:1359
2768
+ 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."
2769
+ msgstr ""
2770
+
2771
+ #. translators: %s: Activity Log for MainWP plugin hyperlink
2772
+ #: wp-security-audit-log.php:1364
2773
+ msgid "Please install the %s plugin on the MainWP dashboard."
2774
+ msgstr ""
2775
+
2776
+ #: wp-security-audit-log.php:1364
2777
+ msgid "Activity Log for MainWP"
2778
+ msgstr ""
2779
+
2780
+ #. translators: %s: Getting started guide hyperlink
2781
+ #: wp-security-audit-log.php:1366
2782
+ msgid "The WP Activity Log should be installed on the child sites only. Refer to the %s for more information."
2783
+ msgstr ""
2784
+
2785
+ #: wp-security-audit-log.php:1366
2786
+ msgid "getting started guide"
2787
+ msgstr ""
2788
+
2789
+ #: wp-security-audit-log.php:1848
2790
+ 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."
2791
+ msgstr ""
2792
+
2793
+ #: wp-security-audit-log.php:1867
2794
+ msgid "Every 6 hours"
2795
+ msgstr ""
2796
+
2797
+ #: wp-security-audit-log.php:1871
2798
+ msgid "Every 45 minutes"
2799
+ msgstr ""
2800
+
2801
+ #: wp-security-audit-log.php:1875
2802
+ msgid "Every 30 minutes"
2803
+ msgstr ""
2804
+
2805
+ #: wp-security-audit-log.php:1879
2806
+ msgid "Every 15 minutes"
2807
+ msgstr ""
2808
+
2809
+ #: wp-security-audit-log.php:1883
2810
+ msgid "Every 10 minutes"
2811
+ msgstr ""
2812
+
2813
+ #: wp-security-audit-log.php:1887
2814
+ msgid "Every 1 minute"
2815
+ msgstr ""
2816
+
2817
+ #. translators: 1. Deprecated method name 2. Version since deprecated
2818
+ #: wp-security-audit-log.php:1901
2819
+ msgid "Method %1$s is deprecated since version %2$s!"
2820
+ msgstr ""
2821
+
2822
+ #: classes/AlertFormatter.php:67
2823
+ msgid "Exclude custom field from the monitoring"
2824
+ msgstr ""
2825
+
2826
+ #: classes/AlertFormatter.php:92
2827
+ msgid "unknown"
2828
+ msgstr ""
2829
+
2830
+ #: classes/AlertFormatter.php:139, classes/AlertFormatter.php:139
2831
+ msgid "Download the log file."
2832
+ msgstr ""
2833
+
2834
+ #: classes/AlertFormatter.php:147
2835
+ msgid "published"
2836
+ msgstr ""
2837
+
2838
+ #. translators: Event ID
2839
+ #: classes/AlertManager.php:359
2840
+ msgid "Event with code %d has not be registered."
2841
+ msgstr ""
2842
+
2843
+ #. translators: Event ID
2844
+ #: classes/AlertManager.php:443
2845
+ msgid "Event %s already registered with WP Activity Log."
2846
+ msgstr ""
2847
+
2848
+ #: classes/AlertManager.php:488
2849
+ 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."
2850
+ msgstr ""
2851
+
2852
+ #. translators: 1.CSS classes, 2. Notice, 3. Contact us link
2853
+ #: classes/AlertManager.php:491
2854
+ msgid "%4$s to help you solve this issue."
2855
+ msgstr ""
2856
+
2857
+ #: classes/AlertManager.php:493
2858
+ msgid "ERROR:"
2859
+ msgstr ""
2860
+
2861
+ #: classes/AlertManager.php:495
2862
+ msgid "Contact us"
2863
+ msgstr ""
2864
+
2865
+ #: classes/AlertManager.php:1066
2866
+ msgid "Database"
2867
+ msgstr ""
2868
+
2869
+ #: classes/AlertManager.php:1068, classes/AlertManager.php:1072
2870
+ msgid "File"
2871
+ msgstr ""
2872
+
2873
+ #: classes/AlertManager.php:1069
2874
+ msgid "Tag"
2875
+ msgstr ""
2876
+
2877
+ #: classes/AlertManager.php:1070
2878
+ msgid "Comment"
2879
+ msgstr ""
2880
+
2881
+ #: classes/AlertManager.php:1071
2882
+ msgid "Setting"
2883
+ msgstr ""
2884
+
2885
+ #: classes/AlertManager.php:1073
2886
+ msgid "System Setting"
2887
+ msgstr ""
2888
+
2889
+ #: classes/AlertManager.php:1074
2890
+ msgid "MainWP Network"
2891
+ msgstr ""
2892
+
2893
+ #: classes/AlertManager.php:1075
2894
+ msgid "MainWP"
2895
+ msgstr ""
2896
+
2897
+ #: classes/AlertManager.php:1076
2898
+ msgid "Category"
2899
+ msgstr ""
2900
+
2901
+ #: classes/AlertManager.php:1077
2902
+ msgid "Custom Field"
2903
+ msgstr ""
2904
+
2905
+ #: classes/AlertManager.php:1078
2906
+ msgid "Widget"
2907
+ msgstr ""
2908
+
2909
+ #: classes/AlertManager.php:1079
2910
+ msgid "Menu"
2911
+ msgstr ""
2912
+
2913
+ #: classes/AlertManager.php:1080
2914
+ msgid "Theme"
2915
+ msgstr ""
2916
+
2917
+ #: classes/AlertManager.php:1081
2918
+ msgid "Activity log"
2919
+ msgstr ""
2920
+
2921
+ #: classes/AlertManager.php:1083
2922
+ msgid "Multisite Network"
2923
+ msgstr ""
2924
+
2925
+ #: classes/AlertManager.php:1084, extensions/email-notifications/classes/Common.php:1136, extensions/search/classes/Filters/IpFilter.php:88, extensions/user-sessions/classes/View/Sessions.php:298
2926
+ msgid "IP Address"
2927
+ msgstr ""
2928
+
2929
+ #: classes/AlertManager.php:1100
2930
+ msgid "unknown object"
2931
+ msgstr ""
2932
+
2933
+ #: classes/AlertManager.php:1137
2934
+ msgid "Login"
2935
+ msgstr ""
2936
+
2937
+ #: classes/AlertManager.php:1138
2938
+ msgid "Logout"
2939
+ msgstr ""
2940
+
2941
+ #: classes/AlertManager.php:1139
2942
+ msgid "Installed"
2943
+ msgstr ""
2944
+
2945
+ #: classes/AlertManager.php:1140
2946
+ msgid "Activated"
2947
+ msgstr ""
2948
+
2949
+ #: classes/AlertManager.php:1141
2950
+ msgid "Deactivated"
2951
+ msgstr ""
2952
+
2953
+ #: classes/AlertManager.php:1142
2954
+ msgid "Uninstalled"
2955
+ msgstr ""
2956
+
2957
+ #: classes/AlertManager.php:1143
2958
+ msgid "Updated"
2959
+ msgstr ""
2960
+
2961
+ #: classes/AlertManager.php:1144, extensions/user-sessions/classes/View/Sessions.php:145
2962
+ msgid "Created"
2963
+ msgstr ""
2964
+
2965
+ #: classes/AlertManager.php:1145
2966
+ msgid "Modified"
2967
+ msgstr ""
2968
+
2969
+ #: classes/AlertManager.php:1146, extensions/search/search-init.php:300
2970
+ msgid "Deleted"
2971
+ msgstr ""
2972
+
2973
+ #: classes/AlertManager.php:1147, extensions/reports/classes/CsvReportGenerator.php:273, extensions/reports/classes/HtmlReportGenerator.php:449
2974
+ msgid "Published"
2975
+ msgstr ""
2976
+
2977
+ #: classes/AlertManager.php:1148
2978
+ msgid "Approved"
2979
+ msgstr ""
2980
+
2981
+ #: classes/AlertManager.php:1149
2982
+ msgid "Unapproved"
2983
+ msgstr ""
2984
+
2985
+ #: classes/AlertManager.php:1150, extensions/external-db/classes/Mirroring.php:162
2986
+ msgid "Enabled"
2987
+ msgstr ""
2988
+
2989
+ #: classes/AlertManager.php:1151, extensions/email-notifications/classes/Notifications.php:1894, extensions/external-db/classes/Mirroring.php:164
2990
+ msgid "Disabled"
2991
+ msgstr ""
2992
+
2993
+ #: classes/AlertManager.php:1152
2994
+ msgid "Added"
2995
+ msgstr ""
2996
+
2997
+ #: classes/AlertManager.php:1153
2998
+ msgid "Failed Login"
2999
+ msgstr ""
3000
+
3001
+ #: classes/AlertManager.php:1154
3002
+ msgid "Blocked"
3003
+ msgstr ""
3004
+
3005
+ #: classes/AlertManager.php:1155
3006
+ msgid "Uploaded"
3007
+ msgstr ""
3008
+
3009
+ #: classes/AlertManager.php:1156
3010
+ msgid "Restored"
3011
+ msgstr ""
3012
+
3013
+ #: classes/AlertManager.php:1157
3014
+ msgid "Opened"
3015
+ msgstr ""
3016
+
3017
+ #: classes/AlertManager.php:1158
3018
+ msgid "Viewed"
3019
+ msgstr ""
3020
+
3021
+ #: classes/AlertManager.php:1159
3022
+ msgid "Started"
3023
+ msgstr ""
3024
+
3025
+ #: classes/AlertManager.php:1160, extensions/external-db/classes/Settings.php:562
3026
+ msgid "Stopped"
3027
+ msgstr ""
3028
+
3029
+ #: classes/AlertManager.php:1161
3030
+ msgid "Removed"
3031
+ msgstr ""
3032
+
3033
+ #: classes/AlertManager.php:1162
3034
+ msgid "Unblocked"
3035
+ msgstr ""
3036
+
3037
+ #: classes/AlertManager.php:1163
3038
+ msgid "Renamed"
3039
+ msgstr ""
3040
+
3041
+ #: classes/AlertManager.php:1164
3042
+ msgid "Duplicated"
3043
+ msgstr ""
3044
+
3045
+ #: classes/AlertManager.php:1165
3046
+ msgid "Submitted"
3047
+ msgstr ""
3048
+
3049
+ #: classes/AlertManager.php:1166
3050
+ msgid "Revoked"
3051
+ msgstr ""
3052
+
3053
+ #: classes/AlertManager.php:1183
3054
+ msgid "unknown type"
3055
+ msgstr ""
3056
+
3057
+ #: classes/AlertManager.php:1716, classes/ConstantManager.php:147
3058
+ msgid "Unknown error code."
3059
+ msgstr ""
3060
+
3061
+ #: classes/AlertManager.php:1735, classes/AlertManager.php:1723, extensions/reports/classes/Common.php:1161, extensions/reports/classes/Common.php:1151
3062
+ msgid "Unknown Site"
3063
+ msgstr ""
3064
+
3065
+ #: classes/AuditLogGridView.php:112, classes/AuditLogListView.php:103
3066
+ msgid "No events so far."
3067
+ msgstr ""
3068
+
3069
+ #: classes/AuditLogGridView.php:149, classes/AuditLogListView.php:147
3070
+ msgid "List View"
3071
+ msgstr ""
3072
+
3073
+ #: classes/AuditLogGridView.php:150, classes/AuditLogListView.php:148
3074
+ msgid "Grid View"
3075
+ msgstr ""
3076
+
3077
+ #: classes/AuditLogGridView.php:175, classes/AuditLogListView.php:173
3078
+ msgid "Show "
3079
+ msgstr ""
3080
+
3081
+ #: classes/AuditLogGridView.php:183, classes/AuditLogListView.php:181
3082
+ msgid " Items"
3083
+ msgstr ""
3084
+
3085
+ #: classes/AuditLogGridView.php:190, classes/AuditLogListView.php:188
3086
+ msgid "— End of Activity Log —"
3087
+ msgstr ""
3088
+
3089
+ #: classes/AuditLogGridView.php:211, classes/AuditLogListView.php:209, classes/Views/AuditLog.php:588, extensions/reports/inc/wsal-reporting-view.inc.php:711
3090
+ msgid "All Sites"
3091
+ msgstr ""
3092
+
3093
+ #: classes/AuditLogGridView.php:272, classes/AuditLogGridView.php:298, classes/AuditLogListView.php:270, classes/AuditLogListView.php:300, classes/Views/Settings.php:1072, classes/Views/ToggleAlerts.php:299, extensions/search/classes/Filters/CodeFilter.php:43, extensions/search/classes/Filters/CodeFilter.php:69
3094
+ msgid "Severity"
3095
+ msgstr ""
3096
+
3097
+ #: classes/AuditLogGridView.php:273, extensions/search/classes/Filters/CodeFilter.php:76
3098
+ msgid "Info"
3099
+ msgstr ""
3100
+
3101
+ #: classes/AuditLogGridView.php:278, classes/AuditLogListView.php:280, classes/AuditLogListView.php:312, extensions/email-notifications/classes/Common.php:1134, extensions/email-notifications/classes/Common.php:1195, extensions/search/classes/Filters/SiteFilter.php:29
3102
+ msgid "Site"
3103
+ msgstr ""
3104
+
3105
+ #: classes/AuditLogGridView.php:281, classes/AuditLogGridView.php:304, classes/AuditLogListView.php:283, classes/AuditLogListView.php:321, extensions/email-notifications/classes/Common.php:1139, extensions/email-notifications/classes/Common.php:1169, extensions/reports/classes/CsvReportGenerator.php:86, extensions/reports/classes/HtmlReportGenerator.php:250
3106
+ msgid "Message"
3107
+ msgstr ""
3108
+
3109
+ #: classes/AuditLogGridView.php:301
3110
+ msgid "Grid"
3111
+ msgstr ""
3112
+
3113
+ #: classes/AuditLogGridView.php:369, classes/AuditLogListView.php:398
3114
+ msgid "Disable this type of events."
3115
+ msgstr ""
3116
+
3117
+ #: classes/AuditLogGridView.php:391
3118
+ msgid "Message:"
3119
+ msgstr ""
3120
+
3121
+ #: classes/AuditLogGridView.php:401, classes/AuditLogGridView.php:405, classes/AuditLogGridView.php:444, classes/AuditLogListView.php:413, classes/AuditLogListView.php:435
3122
+ msgid "Unknown"
3123
+ msgstr ""
3124
+
3125
+ #: classes/AuditLogGridView.php:453, classes/AuditLogListView.php:442
3126
+ msgid "Unregistered user"
3127
+ msgstr ""
3128
+
3129
+ #: classes/AuditLogGridView.php:429
3130
+ msgid "Show me all activity by this User"
3131
+ msgstr ""
3132
+
3133
+ #: classes/AuditLogGridView.php:490, classes/AuditLogGridView.php:503, classes/AuditLogListView.php:475, classes/AuditLogListView.php:488
3134
+ msgid "Show me all activity originating from this IP Address"
3135
+ msgstr ""
3136
+
3137
+ #: classes/AuditLogGridView.php:560, classes/AuditLogListView.php:520
3138
+ msgid "View all details of this change"
3139
+ msgstr ""
3140
+
3141
+ #: classes/AuditLogGridView.php:561, classes/AuditLogListView.php:521
3142
+ msgid "Alert Data Inspector"
3143
+ msgstr ""
3144
+
3145
+ #: classes/AuditLogListView.php:271, classes/AuditLogListView.php:303, extensions/reports/classes/CsvReportGenerator.php:79, extensions/reports/classes/CsvReportGenerator.php:254, extensions/reports/classes/CsvReportGenerator.php:263, extensions/reports/classes/CsvReportGenerator.php:272, extensions/reports/classes/HtmlReportGenerator.php:243, extensions/reports/classes/HtmlReportGenerator.php:393, extensions/reports/classes/HtmlReportGenerator.php:411, extensions/reports/classes/HtmlReportGenerator.php:448, extensions/search/classes/Filters/DateFilter.php:28
3146
+ msgid "Date"
3147
+ msgstr ""
3148
+
3149
+ #: classes/AuditLogListView.php:273, classes/AuditLogListView.php:309, extensions/search/classes/Filters/IpFilter.php:46
3150
+ msgid "IP"
3151
+ msgstr ""
3152
+
3153
+ #: classes/AuditLogListView.php:274, classes/AuditLogListView.php:315, classes/WidgetManager.php:77, extensions/email-notifications/classes/Common.php:1107, extensions/search/classes/Filters/ObjectFilter.php:29, extensions/search/classes/Filters/ObjectFilter.php:53
3154
+ msgid "Object"
3155
+ msgstr ""
3156
+
3157
+ #: classes/AuditLogListView.php:275, classes/AuditLogListView.php:318, classes/WidgetManager.php:78, extensions/email-notifications/classes/Common.php:1053, extensions/email-notifications/classes/Common.php:1108, extensions/reports/classes/CsvReportGenerator.php:85, extensions/reports/classes/HtmlReportGenerator.php:249, extensions/search/classes/Filters/EventTypeFilter.php:29, extensions/search/classes/Filters/EventTypeFilter.php:53
3158
+ msgid "Event Type"
3159
+ msgstr ""
3160
+
3161
+ #: classes/AuditLogListView.php:382, classes/Models/Occurrence.php:90
3162
+ msgid "Alert message not found."
3163
+ msgstr ""
3164
+
3165
+ #: classes/AuditLogListView.php:383, classes/Models/Occurrence.php:91
3166
+ msgid "Alert description not found."
3167
+ msgstr ""
3168
+
3169
+ #: classes/ConstantManager.php:173, classes/Views/ToggleAlerts.php:444
3170
+ msgid "Informational"
3171
+ msgstr ""
3172
+
3173
+ #: classes/ConstantManager.php:171, classes/Views/ToggleAlerts.php:442, extensions/search/classes/Filters/CodeFilter.php:75
3174
+ msgid "Low"
3175
+ msgstr ""
3176
+
3177
+ #: classes/ConstantManager.php:169, classes/Views/ToggleAlerts.php:440, extensions/search/classes/Filters/CodeFilter.php:74
3178
+ msgid "Medium"
3179
+ msgstr ""
3180
+
3181
+ #: classes/ConstantManager.php:167, classes/Views/ToggleAlerts.php:438, extensions/search/classes/Filters/CodeFilter.php:73
3182
+ msgid "High"
3183
+ msgstr ""
3184
+
3185
+ #: classes/ConstantManager.php:165, classes/ConstantManager.php:159, classes/Views/ToggleAlerts.php:436, classes/Views/ToggleAlerts.php:430, extensions/search/classes/Filters/CodeFilter.php:72
3186
+ msgid "Critical"
3187
+ msgstr ""
3188
+
3189
+ #: classes/ConstantManager.php:163, classes/Views/ToggleAlerts.php:446, classes/Views/ToggleAlerts.php:434
3190
+ msgid "Notification"
3191
+ msgstr ""
3192
+
3193
+ #: classes/ConstantManager.php:161, classes/Views/ToggleAlerts.php:432
3194
+ msgid "Warning"
3195
+ msgstr ""
3196
+
3197
+ #: classes/Settings.php:374
3198
+ msgid "This function is deprecated"
3199
+ msgstr ""
3200
+
3201
+ #: classes/Settings.php:1914
3202
+ msgid "Root directory of WordPress (excluding sub directories)"
3203
+ msgstr ""
3204
+
3205
+ #: classes/Settings.php:1915
3206
+ msgid "WP Admin directory (/wp-admin/)"
3207
+ msgstr ""
3208
+
3209
+ #: classes/Settings.php:1916
3210
+ msgid "WP Includes directory (/wp-includes/)"
3211
+ msgstr ""
3212
+
3213
+ #: classes/Settings.php:1917
3214
+ msgid "/wp-content/ directory (excluding plugins, themes & uploads directories)"
3215
+ msgstr ""
3216
+
3217
+ #: classes/Settings.php:1918
3218
+ msgid "Themes directory (/wp-content/themes/)"
3219
+ msgstr ""
3220
+
3221
+ #: classes/Settings.php:1919
3222
+ msgid "Plugins directory (/wp-content/plugins/)"
3223
+ msgstr ""
3224
+
3225
+ #: classes/Settings.php:1920
3226
+ msgid "Uploads directory (/wp-content/uploads/)"
3227
+ msgstr ""
3228
+
3229
+ #: classes/Settings.php:1925
3230
+ msgid "Uploads directory of all sub sites on this network (/wp-content/sites/*)"
3231
+ msgstr ""
3232
+
3233
+ #: classes/Settings.php:2079
3234
+ msgid "None provided"
3235
+ msgstr ""
3236
+
3237
+ #: classes/ViewManager.php:141
3238
+ msgid "WP Activity Log requires Website File Changes Monitor 1.6.0. Please upgrade that plugin."
3239
+ msgstr ""
3240
+
3241
+ #: classes/ViewManager.php:283
3242
+ msgid "Free Premium Trial"
3243
+ msgstr ""
3244
+
3245
+ #: classes/WidgetManager.php:55
3246
+ msgid "Latest Events"
3247
+ msgstr ""
3248
+
3249
+ #: classes/WidgetManager.php:79, classes/Views/ToggleAlerts.php:300
3250
+ msgid "Description"
3251
+ msgstr ""
3252
+
3253
+ #: classes/WidgetManager.php:71
3254
+ msgid "No events found."
3255
+ msgstr ""
3256
+
3257
+ #. translators: 1 - mysqli error code, 2 - mysqli error message
3258
+ #: classes/Connector/MySQLDB.php:68
3259
+ msgid "Code %1$d: %2$s"
3260
+ msgstr ""
3261
+
3262
+ #: classes/Models/Occurrence.php:206
3263
+ msgid "WFCM"
3264
+ msgstr ""
3265
+
3266
+ #. translators: 1: html that opens a link, 2: html that closes a link.
3267
+ #: classes/Models/Occurrence.php:231
3268
+ 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."
3269
+ msgstr ""
3270
+
3271
+ #: classes/Sensors/Content.php:697
3272
+ msgid "Default template"
3273
+ msgstr ""
3274
+
3275
+ #: classes/Sensors/Content.php:698, extensions/external-db/classes/ExternalStorageTab.php:235
3276
+ msgid "Default"
3277
+ msgstr ""
3278
+
3279
+ #: classes/Sensors/Content.php:740
3280
+ msgid "No previous image"
3281
+ msgstr ""
3282
+
3283
+ #: classes/Sensors/Content.php:741
3284
+ msgid "No image"
3285
+ msgstr ""
3286
+
3287
+ #: classes/Sensors/Content.php:1099, classes/Sensors/Content.php:1107
3288
+ msgid "Public"
3289
+ msgstr ""
3290
+
3291
+ #: classes/Sensors/Content.php:1097, classes/Sensors/Content.php:1105
3292
+ msgid "Private"
3293
+ msgstr ""
3294
+
3295
+ #: classes/Sensors/Content.php:1095, classes/Sensors/Content.php:1103
3296
+ msgid "Password Protected"
3297
+ msgstr ""
3298
+
3299
+ #: classes/Sensors/Content.php:1270
3300
+ msgid "no tags"
3301
+ msgstr ""
3302
+
3303
+ #: classes/Sensors/Multisite.php:80
3304
+ msgid "disabled"
3305
+ msgstr ""
3306
+
3307
+ #: classes/Sensors/Multisite.php:81
3308
+ msgid "user accounts only"
3309
+ msgstr ""
3310
+
3311
+ #: classes/Sensors/Multisite.php:82
3312
+ msgid "users can register new sites"
3313
+ msgstr ""
3314
+
3315
+ #: classes/Sensors/Multisite.php:83
3316
+ msgid "sites & users can be registered"
3317
+ msgstr ""
3318
+
3319
+ #: classes/Sensors/System.php:175, classes/Sensors/System.php:176
3320
+ msgid "latest posts"
3321
+ msgstr ""
3322
+
3323
+ #: classes/Sensors/System.php:175, classes/Sensors/System.php:176
3324
+ msgid "static page"
3325
+ msgstr ""
3326
+
3327
+ #: classes/Sensors/System.php:355
3328
+ msgid "automatically update to all new versions of WordPress"
3329
+ msgstr ""
3330
+
3331
+ #: classes/Sensors/System.php:355
3332
+ msgid "automatically update maintenance and security releases only"
3333
+ msgstr ""
3334
+
3335
+ #: classes/ThirdPartyExtensions/GravityFormsExtension.php:16
3336
+ msgid "Keep a record of when someone adds, modifies or deletes forms, entries and more in the Gravity Forms plugin."
3337
+ msgstr ""
3338
+
3339
+ #. translators: %s: Home URL
3340
+ #: classes/Utilities/Emailer.php:54
3341
+ msgid "WP Activity Log plugin disabled on %s"
3342
+ msgstr ""
3343
+
3344
+ #: classes/Utilities/Emailer.php:57
3345
+ msgid "Hello admin,"
3346
+ msgstr ""
3347
+
3348
+ #. translators: 1. User display name, 2. Home URL, 3. Date and time
3349
+ #: classes/Utilities/Emailer.php:62
3350
+ 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."
3351
+ msgstr ""
3352
+
3353
+ #: classes/Utilities/PluginInstallAndActivate.php:82
3354
+ 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."
3355
+ msgstr ""
3356
+
3357
+ #: classes/Utilities/PluginInstallAndActivate.php:101, classes/Views/SetupWizard.php:829
3358
+ msgid "Extension for "
3359
+ msgstr ""
3360
+
3361
+ #: classes/Utilities/PluginInstallAndActivate.php:110, classes/Views/SetupWizard.php:838
3362
+ msgid "Install Extension"
3363
+ msgstr ""
3364
+
3365
+ #: classes/Utilities/PluginInstallAndActivate.php:106, classes/Views/SetupWizard.php:834
3366
+ msgid "Extension installed, activate now?"
3367
+ msgstr ""
3368
+
3369
+ #: classes/Utilities/PluginInstallerAction.php:80
3370
+ msgid "Tried to install a zip or slug that was not in the allowed list"
3371
+ msgstr ""
3372
+
3373
+ #: classes/Views/AuditLog.php:98
3374
+ msgid "Get instantly alerted of critical changes via SMS & email, search the activity log, generate user reports, see who is logged in and more!"
3375
+ msgstr ""
3376
+
3377
+ #: classes/Views/AuditLog.php:99
3378
+ msgid "Upgrade to premium to unlock these powerful activity log features & more!"
3379
+ msgstr ""
3380
+
3381
+ #: classes/Views/AuditLog.php:102
3382
+ msgid "Instant SMS & email alerts, search & filters, reports, users sessions management and much more!"
3383
+ msgstr ""
3384
+
3385
+ #: classes/Views/AuditLog.php:103
3386
  msgid "Upgrade to premium to get more out of your activity logs!"
3387
  msgstr ""
3388
 
3389
+ #: classes/Views/AuditLog.php:106
3390
+ msgid "See who logged in on your site in real-time, generate reports, get SMS & email alerts of critical changes and more!"
3391
+ msgstr ""
3392
+
3393
+ #: classes/Views/AuditLog.php:107
3394
+ msgid "Unlock these and other powerful features with WP Activity Log Premium."
3395
+ msgstr ""
3396
+
3397
+ #: classes/Views/AuditLog.php:185
3398
+ msgid "UPGRADE NOW"
3399
+ msgstr ""
3400
+
3401
+ #: classes/Views/AuditLog.php:186
3402
+ msgid "Start Free Trial"
3403
+ msgstr ""
3404
+
3405
+ #: classes/Views/AuditLog.php:187
3406
+ msgid "Tell me more"
3407
+ msgstr ""
3408
+
3409
+ #: classes/Views/AuditLog.php:189
3410
+ msgid "Dismiss the banner"
3411
+ msgstr ""
3412
+
3413
+ #: classes/Views/AuditLog.php:189
3414
+ msgid "Close"
3415
+ msgstr ""
3416
+
3417
+ #: classes/Views/AuditLog.php:212
3418
+ msgid "Help WP Activity Log improve."
3419
+ msgstr ""
3420
+
3421
+ #: classes/Views/AuditLog.php:213
3422
+ msgid "Gathering non-sensitive diagnostic data about the plugin install helps us improve the plugin. When you opt-in, you also subscribe to our announcements (you can opt-out at any time). If you would rather opt-out, we will not collect any data."
3423
+ msgstr ""
3424
+
3425
+ #: classes/Views/AuditLog.php:213
3426
+ msgid "Read more about what we collect."
3427
+ msgstr ""
3428
+
3429
+ #: classes/Views/AuditLog.php:215
3430
+ msgid "Sure, opt-in"
3431
+ msgstr ""
3432
+
3433
+ #: classes/Views/AuditLog.php:216
3434
+ msgid "No, thank you"
3435
+ msgstr ""
3436
+
3437
+ #: classes/Views/AuditLog.php:271
3438
+ msgid "We noticed you have"
3439
+ msgstr ""
3440
+
3441
+ #: classes/Views/AuditLog.php:273
3442
+ msgid "installed."
3443
+ msgstr ""
3444
+
3445
+ #: classes/Views/AuditLog.php:275
3446
+ msgid "Install extension"
3447
+ msgstr ""
3448
+
3449
+ #: classes/Views/AuditLog.php:320, classes/Views/Settings.php:92
3450
+ msgid "Activity Log Viewer"
3451
+ msgstr ""
3452
+
3453
+ #: classes/Views/AuditLog.php:347
3454
+ msgid "Log Viewer"
3455
+ msgstr ""
3456
+
3457
+ #: classes/Views/AuditLog.php:504, classes/Views/Settings.php:320, classes/Views/ToggleAlerts.php:109, extensions/email-notifications/classes/AddNotification.php:224, extensions/email-notifications/classes/AddNotification.php:257, extensions/email-notifications/classes/EditNotification.php:226, extensions/email-notifications/classes/EditNotification.php:234, extensions/email-notifications/classes/EditNotification.php:230, extensions/email-notifications/classes/EditNotification.php:239, extensions/email-notifications/classes/EditNotification.php:267, extensions/external-db/classes/Settings.php:234
3458
+ msgid "You do not have sufficient permissions to access this page."
3459
+ msgstr ""
3460
+
3461
+ #: classes/Views/AuditLog.php:553
3462
+ msgid "Thank you for installing WP Activity Log. Do you want to run the wizard to configure the basic plugin settings?"
3463
+ msgstr ""
3464
+
3465
+ #: classes/Views/AuditLog.php:555, classes/Views/Settings.php:525, classes/Views/Settings.php:552, classes/Views/Settings.php:618, classes/Views/Settings.php:676, classes/Views/Settings.php:1108, classes/Views/Settings.php:1392, classes/Views/Settings.php:1433, classes/Views/Settings.php:1464, classes/Views/SetupWizard.php:562
3466
+ msgid "Yes"
3467
+ msgstr ""
3468
+
3469
+ #: classes/Views/AuditLog.php:556, classes/Views/Settings.php:530, classes/Views/Settings.php:557, classes/Views/Settings.php:648, classes/Views/Settings.php:686, classes/Views/Settings.php:1113, classes/Views/Settings.php:1399, classes/Views/Settings.php:1440, classes/Views/Settings.php:1465, classes/Views/SetupWizard.php:567
3470
+ msgid "No"
3471
+ msgstr ""
3472
+
3473
+ #: classes/Views/AuditLog.php:587
3474
+ msgid "Please enter the number of alerts you would like to see on one page:"
3475
+ msgstr ""
3476
+
3477
+ #: classes/Views/AuditLog.php:589
3478
+ msgid "No Results"
3479
+ msgstr ""
3480
+
3481
+ #: classes/Views/AuditLog.php:726, classes/Views/AuditLog.php:769, classes/Views/AuditLog.php:1047, classes/Views/AuditLog.php:1109, classes/Views/AuditLog.php:1162, classes/Views/Settings.php:235, classes/Views/Settings.php:1608, classes/Views/Settings.php:1636, classes/Views/Settings.php:1666, classes/Views/SetupWizard.php:96, extensions/search/search-init.php:398, extensions/search/search-init.php:446, extensions/email-notifications/classes/Notifications.php:559, extensions/external-db/classes/Connections.php:825, extensions/external-db/classes/Connections.php:850, extensions/external-db/classes/Connections.php:981, extensions/external-db/classes/Mirroring.php:755, extensions/external-db/classes/Mirroring.php:805, extensions/external-db/classes/Settings.php:672, extensions/external-db/classes/Settings.php:848, extensions/external-db/classes/Settings.php:868, extensions/user-sessions/classes/Views.php:524, extensions/reports/classes/Views/Main.php:739
3482
+ msgid "Nonce verification failed."
3483
+ msgstr ""
3484
+
3485
+ #: classes/Views/AuditLog.php:744
3486
+ msgid "No users found."
3487
+ msgstr ""
3488
+
3489
+ #: classes/Views/AuditLog.php:816
3490
+ msgid "Freemius opt choice not found."
3491
+ msgstr ""
3492
+
3493
+ #: classes/Views/AuditLog.php:809
3494
+ msgid "Freemius opt choice selected."
3495
+ msgstr ""
3496
+
3497
+ #. translators: 1 - an opening link tag, 2 - the closing tag.
3498
+ #: classes/Views/AuditLog.php:912
3499
+ msgid "<br>An error occurred when trying to install and activate the plugin. Please try install it again from the %1$sevent settings%2$s page."
3500
+ msgstr ""
3501
+
3502
+ #: classes/Views/AuditLog.php:1011
3503
+ msgid "WordPress Activity Log"
3504
+ msgstr ""
3505
+
3506
+ #: classes/Views/AuditLog.php:1012
3507
+ msgid "When a user makes a change on your website the plugin will keep a record of that event here. Right now there is nothing because this is a new install."
3508
+ msgstr ""
3509
+
3510
+ #: classes/Views/AuditLog.php:1013
3511
+ msgid "Thank you for using WP Activity Log"
3512
+ msgstr ""
3513
+
3514
+ #: classes/Views/AuditLog.php:1036, classes/Views/AuditLog.php:1146
3515
+ msgid "You do not have sufficient permissions to dismiss this notice."
3516
+ msgstr ""
3517
+
3518
+ #: classes/Views/AuditLog.php:1104
3519
+ msgid "Access Denied"
3520
+ msgstr ""
3521
+
3522
+ #: classes/Views/AuditLog.php:1199
3523
+ msgid "Install the activity log extension for %1$s for more detailed logging of changes done in %2$s."
3524
+ msgstr ""
3525
+
3526
+ #: classes/Views/EmailNotifications.php:28
3527
+ msgid "Notifications Extension"
3528
+ msgstr ""
3529
+
3530
+ #: classes/Views/EmailNotifications.php:35
3531
+ msgid "Notifications &#8682;"
3532
+ msgstr ""
3533
+
3534
+ #: classes/Views/EmailNotifications.php:49
3535
+ msgid "SMS & Email Notifications"
3536
+ msgstr ""
3537
+
3538
+ #: classes/Views/EmailNotifications.php:50
3539
+ msgid "Get instantly alerted of important changes on your site via SMS and email notifications. Upgrade to premium and:"
3540
+ msgstr ""
3541
+
3542
+ #: classes/Views/EmailNotifications.php:53
3543
+ msgid "Configure any type of SMS & email notifications"
3544
+ msgstr ""
3545
+
3546
+ #: classes/Views/EmailNotifications.php:54
3547
+ msgid "Receive notifications for when users login, change their password or change content"
3548
+ msgstr ""
3549
+
3550
+ #: classes/Views/EmailNotifications.php:55
3551
+ msgid "Get alerted of site changes like plugin installs, theme changes etc"
3552
+ msgstr ""
3553
+
3554
+ #: classes/Views/EmailNotifications.php:56
3555
+ msgid "Enable built-in security email notifications of suspicious user activity"
3556
+ msgstr ""
3557
+
3558
+ #: classes/Views/EmailNotifications.php:57
3559
+ msgid "Personalize all email and SMS templates"
3560
+ msgstr ""
3561
+
3562
+ #: classes/Views/EmailNotifications.php:58
3563
+ msgid "Use the trigger builder to configure any type of notification criteria!"
3564
+ msgstr ""
3565
+
3566
+ #: classes/Views/EmailNotifications.php:60
3567
+ msgid "Getting started is really easy. You can use one of the plugin’s built-in notifications or create your own using the easy to use trigger builder."
3568
+ msgstr ""
3569
+
3570
+ #: classes/Views/EmailNotifications.php:63
3571
+ msgid "Email and SMS notifications instantly alert you of important changes on your WordPress site."
3572
+ msgstr ""
3573
+
3574
+ #: classes/Views/EmailNotifications.php:67
3575
+ msgid "Easily enable any of the built-in security and user management notifications."
3576
+ msgstr ""
3577
+
3578
+ #: classes/Views/EmailNotifications.php:71
3579
+ msgid "Use the trigger builder to configure any type of email and SMS notification to get instantly alerted of site changes that are important to you and your business."
3580
+ msgstr ""
3581
+
3582
+ #: classes/Views/EmailNotifications.php:75
3583
+ msgid "All email and SMS templates are configurable, allowing you to personalize them."
3584
+ msgstr ""
3585
+
3586
+ #: classes/Views/ExternalDB.php:28
3587
+ msgid "External DB Extension"
3588
+ msgstr ""
3589
+
3590
+ #: classes/Views/ExternalDB.php:35
3591
+ msgid "DB & Integrations &#8682;"
3592
+ msgstr ""
3593
+
3594
+ #: classes/Views/ExternalDB.php:49
3595
+ msgid "Activity log database & integration tools"
3596
+ msgstr ""
3597
+
3598
+ #: classes/Views/ExternalDB.php:50
3599
+ msgid "There are several benefits to segregating the logs from the main site database, and to be able to mirror the logs to third party and centralized business solutions. Upgrade to premium and:"
3600
+ msgstr ""
3601
+
3602
+ #: classes/Views/ExternalDB.php:53
3603
+ msgid "Store the audit logs of your sites on an external database"
3604
+ msgstr ""
3605
+
3606
+ #: classes/Views/ExternalDB.php:54
3607
+ msgid "Configuring archiving and store older log data in a segregated database"
3608
+ msgstr ""
3609
+
3610
+ #: classes/Views/ExternalDB.php:55
3611
+ msgid "Mirror the logs to syslog, Slack, Papertrail and central business communication services"
3612
+ msgstr ""
3613
+
3614
+ #: classes/Views/ExternalDB.php:56
3615
+ msgid "Configure filters to filter what is mirrored and archived in the databases and services"
3616
+ msgstr ""
3617
+
3618
+ #: classes/Views/ExternalDB.php:61
3619
+ msgid "Easily configure integration and database connections thanks to a user friendly wizard."
3620
+ msgstr ""
3621
+
3622
+ #: classes/Views/ExternalDB.php:65
3623
+ msgid "Configure activity log filters for third party services connections."
3624
+ msgstr ""
3625
+
3626
+ #: classes/Views/ExternalDB.php:69
3627
+ msgid "Configure an unlimited number of connections to different databases and third party services."
3628
+ msgstr ""
3629
+
3630
+ #: classes/Views/Help.php:62, classes/Views/Help.php:113
3631
+ msgid "Help"
3632
+ msgstr ""
3633
+
3634
+ #: classes/Views/Help.php:71, classes/Views/Help.php:242
3635
+ msgid "Contact Us"
3636
+ msgstr ""
3637
+
3638
+ #: classes/Views/Help.php:77, classes/Views/Help.php:264
3639
+ msgid "System Info"
3640
+ msgstr ""
3641
+
3642
+ #: classes/Views/Help.php:127
3643
+ msgid "Help & Contact Us"
3644
+ msgstr ""
3645
+
3646
+ #: classes/Views/Help.php:187
3647
+ msgid "Getting Started"
3648
+ msgstr ""
3649
+
3650
+ #: classes/Views/Help.php:188
3651
+ 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."
3652
+ msgstr ""
3653
+
3654
+ #: classes/Views/Help.php:192
3655
+ msgid "Plugin Support"
3656
+ msgstr ""
3657
+
3658
+ #: classes/Views/Help.php:194
3659
+ msgid "Have you encountered or noticed any issues while using WP Activity Log plugin?"
3660
+ msgstr ""
3661
+
3662
+ #: classes/Views/Help.php:195
3663
+ 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."
3664
+ msgstr ""
3665
+
3666
+ #: classes/Views/Help.php:197
3667
+ msgid "Free Support Forum"
3668
+ msgstr ""
3669
+
3670
+ #: classes/Views/Help.php:199
3671
+ msgid "Free Support Email"
3672
+ msgstr ""
3673
+
3674
+ #: classes/Views/Help.php:203
3675
+ msgid "Plugin Documentation"
3676
+ msgstr ""
3677
+
3678
+ #: classes/Views/Help.php:205
3679
+ msgid "For more technical information about the WP Activity Log plugin please visit the plugin’s knowledge base."
3680
+ msgstr ""
3681
+
3682
+ #: classes/Views/Help.php:206
3683
+ 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."
3684
+ msgstr ""
3685
+
3686
+ #: classes/Views/Help.php:208
3687
+ msgid "Plugin Website"
3688
+ msgstr ""
3689
+
3690
+ #: classes/Views/Help.php:210
3691
+ msgid "Knowledge Base"
3692
+ msgstr ""
3693
+
3694
+ #: classes/Views/Help.php:212
3695
+ msgid "List of activity logs event IDs"
3696
+ msgstr ""
3697
+
3698
+ #: classes/Views/Help.php:216
3699
+ msgid "Rate WP Activity Log"
3700
+ msgstr ""
3701
+
3702
+ #: classes/Views/Help.php:218
3703
+ 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."
3704
+ msgstr ""
3705
+
3706
+ #: classes/Views/Help.php:219
3707
+ 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."
3708
+ msgstr ""
3709
+
3710
+ #: classes/Views/Help.php:220
3711
+ 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."
3712
+ msgstr ""
3713
+
3714
+ #: classes/Views/Help.php:221
3715
+ msgid "We appreciate every star!"
3716
+ msgstr ""
3717
+
3718
+ #: classes/Views/Help.php:231
3719
+ msgid "Rate Plugin"
3720
+ msgstr ""
3721
+
3722
+ #: classes/Views/Help.php:282
3723
+ msgid "Enforce strong password policies on WordPress"
3724
+ msgstr ""
3725
+
3726
+ #: classes/Views/Help.php:288
3727
+ msgid "Automatically identify unauthorized file changes on WordPress"
3728
+ msgstr ""
3729
+
3730
+ #: classes/Views/Help.php:294
3731
+ msgid "Add an extra layer of security to your login pages with 2FA & require your users to use it."
3732
+ msgstr ""
3733
+
3734
+ #: classes/Views/Help.php:300
3735
+ msgid "See the child sites activity logs from the central MainWP dashboard"
3736
+ msgstr ""
3737
+
3738
+ #: classes/Views/Help.php:306
3739
+ msgid "Our other WordPress plugins"
3740
+ msgstr ""
3741
+
3742
+ #: classes/Views/Help.php:317
3743
+ msgid "LEARN MORE"
3744
+ msgstr ""
3745
+
3746
+ #: classes/Views/LogInUsers.php:28
3747
+ msgid "User Sessions Management Extension"
3748
+ msgstr ""
3749
+
3750
+ #: classes/Views/LogInUsers.php:35
3751
+ msgid "Logged In Users &#8682;"
3752
+ msgstr ""
3753
+
3754
+ #: classes/Views/LogInUsers.php:49
3755
+ msgid "Real-Time Users Sessions Management"
3756
+ msgstr ""
3757
+
3758
+ #: classes/Views/LogInUsers.php:50
3759
+ msgid "Better manage your users’ logins and sessions. Upgrade to premium and:"
3760
+ msgstr ""
3761
+
3762
+ #: classes/Views/LogInUsers.php:54
3763
+ msgid "See who is logged in to your site"
3764
+ msgstr ""
3765
+
3766
+ #: classes/Views/LogInUsers.php:55
3767
+ msgid "When they logged in and from where"
3768
+ msgstr ""
3769
+
3770
+ #: classes/Views/LogInUsers.php:56
3771
+ msgid "The last change they have done in real-time"
3772
+ msgstr ""
3773
+
3774
+ #: classes/Views/LogInUsers.php:57
3775
+ msgid "Terminate any users’ session with a click of a button"
3776
+ msgstr ""
3777
+
3778
+ #: classes/Views/LogInUsers.php:58
3779
+ msgid "Limit or block multiple sessions for the same user"
3780
+ msgstr ""
3781
+
3782
+ #: classes/Views/LogInUsers.php:59
3783
+ msgid "Get alerted of multiple same user sessions"
3784
+ msgstr ""
3785
+
3786
+ #: classes/Views/LogInUsers.php:63
3787
+ msgid "See who is logged in to your WordPress site and multisite network in real-time."
3788
+ msgstr ""
3789
+
3790
+ #: classes/Views/LogInUsers.php:67
3791
+ msgid "Limit, manage and block multiple same user sessions easily."
3792
+ msgstr ""
3793
+
3794
+ #: classes/Views/Reports.php:28
3795
+ msgid "Reports Extension"
3796
+ msgstr ""
3797
+
3798
+ #: classes/Views/Reports.php:35
3799
+ msgid "Reports &#8682;"
3800
+ msgstr ""
3801
+
3802
+ #: classes/Views/Reports.php:49
3803
+ msgid "Individual, Scheduled & Automated Reports"
3804
+ msgstr ""
3805
+
3806
+ #: classes/Views/Reports.php:50
3807
+ msgid "Many are not fans of reports, however reports are vital in business. With them you can make informed decisions that allow you to improve user productivity and the business. Upgrade to Premium so you can:"
3808
+ msgstr ""
3809
+
3810
+ #: classes/Views/Reports.php:53
3811
+ msgid "Generate any type of user and site (in multisite) activity report"
3812
+ msgstr ""
3813
+
3814
+ #: classes/Views/Reports.php:54
3815
+ msgid "Automate and schedule daily, weekly, monthly and quarterly reports"
3816
+ msgstr ""
3817
+
3818
+ #: classes/Views/Reports.php:55
3819
+ msgid "Received reports automatically via email"
3820
+ msgstr ""
3821
+
3822
+ #: classes/Views/Reports.php:56
3823
+ msgid "Create statistics reports about users’ views, logins, activity from IP addresses & more"
3824
+ msgstr ""
3825
+
3826
+ #: classes/Views/Reports.php:58
3827
+ msgid "Reports are vital to the success of your business and management of your site."
3828
+ msgstr ""
3829
+
3830
+ #: classes/Views/Reports.php:61
3831
+ msgid "Generate a HTML or CSV report."
3832
  msgstr ""
3833
 
3834
+ #: classes/Views/Reports.php:65
3835
+ msgid "Easily configure a criteria for your reports."
3836
  msgstr ""
3837
 
3838
+ #: classes/Views/Reports.php:69
3839
+ msgid "Schedule reports that are sent to you by email automatically."
3840
  msgstr ""
3841
 
3842
+ #: classes/Views/Search.php:28
3843
+ msgid "Search Extension"
3844
  msgstr ""
3845
 
3846
+ #: classes/Views/Search.php:35
3847
+ msgid "Search &#8682;"
3848
  msgstr ""
3849
 
3850
+ #: classes/Views/Search.php:49
3851
+ msgid "Search & Filters for the Activity Log"
3852
  msgstr ""
3853
 
3854
+ #: classes/Views/Search.php:50
3855
+ msgid "You can find all the information you want in the activity log, if you know what you are looking for and have the right tools. Upgrade to premium so you can:"
3856
  msgstr ""
3857
 
3858
+ #: classes/Views/Search.php:53
3859
+ msgid "Do text searches and use filters to fine tune the search results"
3860
  msgstr ""
3861
 
3862
+ #: classes/Views/Search.php:54
3863
+ msgid "Easily find when and who did a specific change on your site"
3864
  msgstr ""
3865
 
3866
+ #: classes/Views/Search.php:55
3867
+ msgid "Easily identify and track back suspicious user behaviour"
3868
  msgstr ""
3869
 
3870
+ #: classes/Views/Search.php:56
3871
+ msgid "Search for the cause of a problem and ease troubleshooting"
3872
  msgstr ""
3873
 
3874
+ #: classes/Views/Search.php:57
3875
+ msgid "Save search terms and filters for future use and improved productivity"
3876
  msgstr ""
3877
 
3878
+ #: classes/Views/Search.php:62
3879
+ msgid "Use the text search to find a specific change."
3880
  msgstr ""
3881
 
3882
+ #: classes/Views/Search.php:66
3883
+ msgid "Configure any filter you need to fine tune the search results and find what you are looking for with much less effort."
3884
  msgstr ""
3885
 
3886
+ #: classes/Views/Search.php:70
3887
+ msgid "Save search terms and filters to run the searches again in the future with just a single click."
3888
  msgstr ""
3889
 
3890
+ #: classes/Views/Settings.php:85
3891
+ msgid "General"
3892
  msgstr ""
3893
 
3894
+ #: classes/Views/Settings.php:105
3895
+ msgid "Exclude Objects"
3896
  msgstr ""
3897
 
3898
+ #: classes/Views/Settings.php:112
3899
+ msgid "Advanced Settings"
3900
  msgstr ""
3901
 
3902
+ #: classes/Views/Settings.php:161, classes/Views/Settings.php:175, extensions/email-notifications/classes/SMSProviderSettings.php:143
3903
+ msgid "Settings"
 
3904
  msgstr ""
3905
 
3906
+ #: classes/Views/Settings.php:202
3907
+ msgid "Current user is not allowed to save settings."
3908
  msgstr ""
3909
 
3910
+ #: classes/Views/Settings.php:208
3911
+ msgid "Unknown settings tab."
 
 
 
 
 
3912
  msgstr ""
3913
 
3914
+ #: classes/Views/Settings.php:220, classes/Views/Settings.php:1698, classes/Views/Settings.php:1721, classes/Views/SetupWizard.php:83, extensions/email-notifications/classes/Notifications.php:158, extensions/external-db/classes/Connections.php:810, extensions/external-db/classes/Connections.php:841, extensions/external-db/classes/Connections.php:864, extensions/external-db/classes/Connections.php:977, extensions/external-db/classes/Mirroring.php:708, extensions/external-db/classes/Mirroring.php:774, extensions/external-db/classes/Settings.php:659, extensions/external-db/classes/Settings.php:832, extensions/external-db/classes/Settings.php:863
3915
+ msgid "Access Denied."
 
 
 
 
 
3916
  msgstr ""
3917
 
3918
+ #: classes/Views/Settings.php:245, classes/Views/SetupWizard.php:106
3919
+ msgid "Invalid input."
3920
  msgstr ""
3921
 
3922
+ #: classes/Views/Settings.php:336, classes/Views/ToggleAlerts.php:126, extensions/external-db/classes/Settings.php:247
3923
+ msgid "Settings have been saved."
3924
  msgstr ""
3925
 
3926
+ #: classes/Views/Settings.php:332
3927
+ msgid "Message sent successfully."
 
 
 
 
3928
  msgstr ""
3929
 
3930
+ #: classes/Views/Settings.php:342, classes/Views/ToggleAlerts.php:132, extensions/external-db/classes/Settings.php:252, extensions/user-sessions/classes/View/Sessions.php:130
3931
+ msgid "Error: "
3932
  msgstr ""
3933
 
3934
+ #: classes/Views/Settings.php:360
3935
+ msgid "No data is old enough to be purged."
3936
+ msgstr ""
3937
+
3938
+ #: classes/Views/Settings.php:354
3939
+ msgid "Old data successfully purged."
3940
+ msgstr ""
3941
+
3942
+ #: classes/Views/Settings.php:391
3943
+ msgid "Send Message"
3944
+ msgstr ""
3945
+
3946
+ #: classes/Views/Settings.php:446
3947
+ msgid "Use infinite scroll or pagination for the event viewer?"
3948
+ msgstr ""
3949
+
3950
+ #. translators: Learn more link.
3951
+ #: classes/Views/Settings.php:451
3952
+ msgid "When using infinite scroll the event viewer and search results %s load up much faster and require less resources."
3953
+ msgstr ""
3954
+
3955
+ #: classes/Views/Settings.php:452
3956
+ msgid "(Premium feature)"
3957
+ msgstr ""
3958
+
3959
+ #: classes/Views/Settings.php:459
3960
+ msgid "Select event viewer view type:"
3961
+ msgstr ""
3962
+
3963
+ #: classes/Views/Settings.php:464
3964
+ msgid "Infinite Scroll (Recommended)"
3965
+ msgstr ""
3966
+
3967
+ #: classes/Views/Settings.php:469
3968
+ msgid "Pagination"
3969
+ msgstr ""
3970
+
3971
+ #: classes/Views/Settings.php:480
3972
+ msgid "Do you want the activity log viewer to auto refresh?"
3973
+ msgstr ""
3974
+
3975
+ #: classes/Views/Settings.php:481
3976
+ msgid "The activity log viewer auto refreshes every 30 seconds when opened so you can see the latest events as they happen almost in real time."
3977
+ msgstr ""
3978
+
3979
+ #: classes/Views/Settings.php:485
3980
+ msgid "Refresh activity log viewer"
3981
+ msgstr ""
3982
+
3983
+ #: classes/Views/Settings.php:491
3984
+ msgid "Auto refresh"
3985
+ msgstr ""
3986
+
3987
+ #: classes/Views/Settings.php:496
3988
+ msgid "Do not auto refresh"
3989
+ msgstr ""
3990
+
3991
+ #: classes/Views/Settings.php:506
3992
+ msgid "Display latest events widget in Dashboard & Admin bar"
3993
+ msgstr ""
3994
+
3995
+ #. translators: Max number of dashboard widget alerts.
3996
+ #: classes/Views/Settings.php:511
3997
+ msgid "The events widget displays the latest %d security events in the dashboard and the admin bar notification displays the latest event."
3998
+ msgstr ""
3999
+
4000
+ #: classes/Views/Settings.php:519
4001
+ msgid "Dashboard Widget"
4002
+ msgstr ""
4003
+
4004
+ #: classes/Views/Settings.php:540
4005
+ msgid "Admin Bar Notification"
4006
+ msgstr ""
4007
+
4008
+ #: classes/Views/Settings.php:543
4009
+ msgid "Admin Bar Notification (Premium)"
4010
+ msgstr ""
4011
+
4012
+ #: classes/Views/Settings.php:567
4013
+ msgid "Admin Bar Notification Updates"
4014
+ msgstr ""
4015
+
4016
+ #: classes/Views/Settings.php:570
4017
+ msgid "Admin Bar Notification Updates (Premium)"
4018
+ msgstr ""
4019
+
4020
+ #: classes/Views/Settings.php:579
4021
+ msgid "Update in near real time"
4022
+ msgstr ""
4023
+
4024
+ #: classes/Views/Settings.php:584
4025
+ msgid "Update only on page refreshes"
4026
+ msgstr ""
4027
+
4028
+ #: classes/Views/Settings.php:594
4029
+ msgid "Add user notification on the WordPress login page"
4030
+ msgstr ""
4031
+
4032
+ #: classes/Views/Settings.php:595
4033
+ msgid "Many compliance regulations (such as the GDPR) require website administrators to tell the users of their website that all the changes they do when logged in are being logged."
4034
+ msgstr ""
4035
+
4036
+ #: classes/Views/Settings.php:599
4037
+ msgid "Login Page Notification"
4038
+ msgstr ""
4039
+
4040
+ #: classes/Views/Settings.php:624
4041
+ 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/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=settings+pages\" target=\"_blank\">WP Activity Log plugin</a>. The audit log also includes the IP address where you accessed this site from."
4042
+ msgstr ""
4043
+
4044
+ #: classes/Views/Settings.php:642
4045
+ msgid "<strong>Note: </strong>"
4046
+ msgstr ""
4047
+
4048
+ #: classes/Views/Settings.php:642
4049
+ msgid "The only HTML code allowed in the login page notification is for links ( < a href >< /a > )."
4050
+ msgstr ""
4051
+
4052
+ #: classes/Views/Settings.php:658
4053
+ msgid "Is your website running behind a firewall or reverse proxy?"
4054
+ msgstr ""
4055
+
4056
+ #. translators: Learn more link.
4057
+ #: classes/Views/Settings.php:663
4058
+ msgid "If your website is running behind a firewall set this option to yes so the plugin retrieves the end user’s IP address from the proxy header - %s."
4059
+ msgstr ""
4060
+
4061
+ #: classes/Views/Settings.php:664, classes/Views/Settings.php:710, classes/Views/Settings.php:765
4062
+ msgid "learn more"
4063
+ msgstr ""
4064
+
4065
+ #: classes/Views/Settings.php:671
4066
+ msgid "Reverse Proxy / Firewall Options"
4067
+ msgstr ""
4068
+
4069
+ #: classes/Views/Settings.php:681
4070
+ msgid "Filter internal IP addresses from the proxy headers. Enable this option only if you are are still seeing the internal IP addresses of the firewall or proxy."
4071
+ msgstr ""
4072
+
4073
+ #: classes/Views/Settings.php:697
4074
+ msgid "Who can change the plugin settings?"
4075
+ msgstr ""
4076
+
4077
+ #. translators: Learn more link.
4078
+ #: classes/Views/Settings.php:709
4079
+ msgid "By default only users with administrator role (single site) and super administrator role (multisite) can change the settings of the plugin. Though you can restrict the privileges to just your user - %s."
4080
+ msgstr ""
4081
+
4082
+ #: classes/Views/Settings.php:720
4083
+ msgid "Restrict plugin access"
4084
+ msgstr ""
4085
+
4086
+ #: classes/Views/Settings.php:725, classes/Views/Settings.php:780
4087
+ msgid "Only me"
4088
+ msgstr ""
4089
+
4090
+ #: classes/Views/Settings.php:734
4091
+ msgid "All administrators"
4092
+ msgstr ""
4093
+
4094
+ #: classes/Views/Settings.php:732
4095
+ msgid "All superadmins"
4096
+ msgstr ""
4097
+
4098
+ #: classes/Views/Settings.php:747
4099
+ msgid "Allow other users to view the activity log"
4100
+ msgstr ""
4101
+
4102
+ #: classes/Views/Settings.php:761
4103
+ msgid "By default only users with administrator role can view the WordPress activity log. To allow someone who does not have an admin role to view the activity log, specify them in the below setting."
4104
+ msgstr ""
4105
+
4106
+ #: classes/Views/Settings.php:759
4107
+ msgid "By default only super administrators and the child sites' administrators can view the WordPress activity log. Though you can change this by using the setting below."
4108
+ msgstr ""
4109
+
4110
+ #: classes/Views/Settings.php:774, classes/Views/Settings.php:804
4111
+ msgid "Can view events"
4112
+ msgstr ""
4113
+
4114
+ #: classes/Views/Settings.php:781
4115
+ msgid "Super administators only"
4116
+ msgstr ""
4117
+
4118
+ #: classes/Views/Settings.php:782
4119
+ msgid "Super administators and site administrators"
4120
+ msgstr ""
4121
+
4122
+ #: classes/Views/Settings.php:798
4123
+ msgid "To allow someone who does not have an admin role to view the activity log, specify them in the below setting."
4124
+ msgstr ""
4125
+
4126
+ #: classes/Views/Settings.php:804
4127
+ msgid "Can also view events"
4128
+ msgstr ""
4129
+
4130
+ #: classes/Views/Settings.php:810, classes/Views/Settings.php:1200, classes/Views/Settings.php:1221, classes/Views/Settings.php:1242, classes/Views/Settings.php:1264, classes/Views/Settings.php:1311
4131
+ msgid "Add"
4132
+ msgstr ""
4133
+
4134
+ #: classes/Views/Settings.php:813
4135
+ msgid "Specify the username or the users which do not have an admin role but can also see the WordPress activity role. You can also specify roles."
4136
+ msgstr ""
4137
+
4138
+ #: classes/Views/Settings.php:827, classes/Views/Settings.php:1207, classes/Views/Settings.php:1228, classes/Views/Settings.php:1249, classes/Views/Settings.php:1271, classes/Views/Settings.php:1319, classes/Views/Settings.php:1573, extensions/search/search-init.php:303, extensions/search/classes/FilterManager.php:387
4139
+ msgid "Remove"
4140
+ msgstr ""
4141
+
4142
+ #: classes/Views/Settings.php:839
4143
+ msgid "Which email address should the plugin use as a from address?"
4144
+ msgstr ""
4145
+
4146
+ #: classes/Views/Settings.php:840
4147
+ msgid "By default when the plugin sends an email notification it uses the email address specified in this website’s general settings. Though you can change the email address and display name from this section."
4148
+ msgstr ""
4149
+
4150
+ #: classes/Views/Settings.php:844
4151
+ msgid "From Email & Name"
4152
+ msgstr ""
4153
+
4154
+ #: classes/Views/Settings.php:850
4155
+ msgid "Use the email address from the WordPress general settings"
4156
+ msgstr ""
4157
+
4158
+ #: classes/Views/Settings.php:855
4159
+ msgid "Use another email address"
4160
+ msgstr ""
4161
+
4162
+ #: classes/Views/Settings.php:859
4163
+ msgid "Email Address"
4164
+ msgstr ""
4165
+
4166
+ #: classes/Views/Settings.php:864
4167
+ msgid "Display Name"
4168
  msgstr ""
4169
 
4170
+ #: classes/Views/Settings.php:875
4171
+ msgid "Do you want to hide the plugin from the list of installed plugins?"
4172
  msgstr ""
4173
 
4174
+ #: classes/Views/Settings.php:876
4175
+ 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."
 
4176
  msgstr ""
4177
 
4178
+ #: classes/Views/Settings.php:880
4179
+ msgid "Hide Plugin in Plugins Page"
4180
  msgstr ""
4181
 
4182
+ #: classes/Views/Settings.php:885
4183
+ msgid "Yes, hide the plugin and any WP Activity Log plugin extensions from the list of installed plugins"
4184
  msgstr ""
4185
 
4186
+ #: classes/Views/Settings.php:890
4187
+ msgid "No, do not hide the plugin"
4188
  msgstr ""
4189
 
4190
+ #: classes/Views/Settings.php:956
4191
+ msgid "For how long do you want to keep the activity log events (Retention settings) ?"
4192
  msgstr ""
4193
 
4194
+ #: classes/Views/Settings.php:959
4195
+ msgid "The plugin uses an efficient way to store the activity log data in the WordPress database, though the more data you keep the more disk space will be required. "
4196
  msgstr ""
4197
 
4198
+ #: classes/Views/Settings.php:960
4199
+ msgid "<a href=\"https://wpactivitylog.com/pricing/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=settings+pages\" target=\"_blank\">Upgrade to Premium</a> to store the activity log data in an external database."
4200
  msgstr ""
4201
 
4202
+ #: classes/Views/Settings.php:970
4203
+ msgid "What timestamp you would like to see in the WordPress activity log?"
4204
  msgstr ""
4205
 
4206
+ #: classes/Views/Settings.php:971
4207
+ msgid "Note that the WordPress' timezone might be different from that configured on the server so when you switch from UTC to WordPress timezone or vice versa you might notice a big difference."
4208
  msgstr ""
4209
 
4210
+ #: classes/Views/Settings.php:975
4211
+ msgid "Events Timestamp"
4212
  msgstr ""
4213
 
4214
+ #: classes/Views/Settings.php:995
4215
+ msgid "UTC"
4216
  msgstr ""
4217
 
4218
+ #: classes/Views/Settings.php:1001
4219
+ msgid "Timezone configured on this WordPress website"
4220
  msgstr ""
4221
 
4222
+ #: classes/Views/Settings.php:1008
4223
+ msgid "Show Milliseconds"
4224
  msgstr ""
4225
 
4226
+ #: classes/Views/Settings.php:1015
4227
+ msgid "Show Milliseconds in list view"
4228
  msgstr ""
4229
 
4230
+ #: classes/Views/Settings.php:1025
4231
+ msgid "What user information should be displayed in the WordPress activity log?"
4232
  msgstr ""
4233
 
4234
+ #: classes/Views/Settings.php:1026
4235
+ msgid "Usernames might not be the same as a user's first and last name so it can be difficult to recognize whose user was that did a change. When there is no first & last name or public display name configured the plugin will revert back to the WordPress username."
4236
  msgstr ""
4237
 
4238
+ #: classes/Views/Settings.php:1030
4239
+ msgid "User information in Activity log"
4240
  msgstr ""
4241
 
4242
+ #: classes/Views/Settings.php:1036
4243
+ msgid "WordPress username"
4244
  msgstr ""
4245
 
4246
+ #: classes/Views/Settings.php:1041
4247
+ msgid "First name & last name"
4248
  msgstr ""
4249
 
4250
+ #: classes/Views/Settings.php:1046
4251
+ msgid "Configured public display name"
4252
  msgstr ""
4253
 
4254
+ #: classes/Views/Settings.php:1056
4255
+ msgid "Select the columns to be displayed in the WordPress activity log"
4256
  msgstr ""
4257
 
4258
+ #: classes/Views/Settings.php:1057
4259
+ msgid "When you deselect a column it won’t be shown in the activity log viewer in both views. The data will still be recorded by the plugin."
4260
  msgstr ""
4261
 
4262
+ #: classes/Views/Settings.php:1061
4263
+ msgid "Activity log columns selection"
4264
  msgstr ""
4265
 
4266
+ #: classes/Views/Settings.php:1080
4267
+ msgid "Info (used in Grid view mode only)"
4268
  msgstr ""
4269
 
4270
+ #: classes/Views/Settings.php:1078
4271
+ msgid "Source IP Address"
4272
  msgstr ""
4273
 
4274
+ #: classes/Views/Settings.php:1074
4275
+ msgid "Date & Time"
4276
  msgstr ""
4277
 
4278
+ #: classes/Views/Settings.php:1070, extensions/email-notifications/classes/Common.php:1103, extensions/email-notifications/classes/Common.php:1137, extensions/email-notifications/classes/Common.php:1166, extensions/search/classes/Filters/AlertFilter.php:26, extensions/search/classes/Filters/AlertFilter.php:51
4279
+ msgid "Event ID"
4280
  msgstr ""
4281
 
4282
+ #: classes/Views/Settings.php:1096
4283
+ msgid "Do you want to keep a log of WordPress background activity?"
4284
  msgstr ""
4285
 
4286
+ #: classes/Views/Settings.php:1098
4287
+ msgid "WordPress does a lot of things in the background that you do not necessarily need to know about, such as; deletion of post revisions, deletion of auto saved drafts etc. By default the plugin does not report them since there might be a lot and are irrelevant to the user."
4288
  msgstr ""
4289
 
4290
+ #: classes/Views/Settings.php:1103
4291
+ msgid "Enable Events for WordPress Background Activity"
4292
  msgstr ""
4293
 
4294
+ #: classes/Views/Settings.php:1178
4295
+ msgid "Configure how often file changes scan run and other settings from the"
4296
  msgstr ""
4297
 
4298
+ #: classes/Views/Settings.php:1178
4299
+ msgid "Website File Changes plugin settings"
4300
  msgstr ""
4301
 
4302
+ #: classes/Views/Settings.php:1162, classes/Views/ToggleAlerts.php:522
4303
+ msgid "Website File Changes Monitor"
4304
  msgstr ""
4305
 
4306
+ #: classes/Views/Settings.php:1163, classes/Views/ToggleAlerts.php:523
4307
+ msgid "To keep a log of file changes please install Website File Changes Monitor, a plugin which is also developed by us."
4308
  msgstr ""
4309
 
4310
+ #: classes/Views/Settings.php:1164, classes/Views/ToggleAlerts.php:524
4311
+ msgid "Install plugin now"
4312
  msgstr ""
4313
 
4314
+ #: classes/Views/Settings.php:1164, classes/Views/ToggleAlerts.php:524
4315
+ msgid "Learn More"
4316
  msgstr ""
4317
 
4318
+ #: classes/Views/Settings.php:1192
4319
+ 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."
4320
  msgstr ""
4321
 
4322
+ #: classes/Views/Settings.php:1196
4323
+ msgid "Exclude Users:"
4324
  msgstr ""
4325
 
4326
+ #: classes/Views/Settings.php:1217
4327
+ msgid "Exclude Roles:"
4328
  msgstr ""
4329
 
4330
+ #: classes/Views/Settings.php:1238
4331
+ msgid "Exclude IP Address(es):"
4332
  msgstr ""
4333
 
4334
+ #: classes/Views/Settings.php:1254
4335
+ 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."
4336
  msgstr ""
4337
 
4338
+ #: classes/Views/Settings.php:1260
4339
+ msgid "Exclude Post Type:"
4340
  msgstr ""
4341
 
4342
+ #: classes/Views/Settings.php:1276
4343
+ 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."
4344
  msgstr ""
4345
 
4346
+ #: classes/Views/Settings.php:1283
4347
+ msgid "Exclude custom post fields:"
4348
  msgstr ""
4349
 
4350
+ #: classes/Views/Settings.php:1291
4351
+ msgid "Exclude custom user fields:"
4352
  msgstr ""
4353
 
4354
+ #: classes/Views/Settings.php:1324
4355
+ msgid "You can use the * wildcard to exclude multiple matching custom fields. For example to exclude all custom fields starting with wp123 enter wp123*"
4356
  msgstr ""
4357
 
4358
+ #: classes/Views/Settings.php:1351
4359
+ msgid "These settings are for advanced users."
4360
  msgstr ""
4361
 
4362
+ #: classes/Views/Settings.php:1352
4363
+ 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>."
4364
  msgstr ""
4365
 
4366
+ #: classes/Views/Settings.php:1355
4367
+ msgid "Reset plugin settings to default"
4368
  msgstr ""
4369
 
4370
+ #: classes/Views/Settings.php:1356
4371
+ 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."
4372
  msgstr ""
4373
 
4374
+ #: classes/Views/Settings.php:1360
4375
+ msgid "Reset Settings"
4376
  msgstr ""
4377
 
4378
+ #: classes/Views/Settings.php:1362
4379
+ msgid "RESET"
4380
  msgstr ""
4381
 
4382
+ #: classes/Views/Settings.php:1368
4383
+ msgid "Purge the WordPress activity log"
4384
  msgstr ""
4385
 
4386
+ #: classes/Views/Settings.php:1369
4387
+ msgid "Click the Purge button below to delete all the data from the WordPress activity log and start afresh."
4388
  msgstr ""
4389
 
4390
+ #: classes/Views/Settings.php:1373
4391
+ msgid "Purge Activity Log"
4392
  msgstr ""
4393
 
4394
+ #: classes/Views/Settings.php:1375
4395
+ msgid "PURGE"
4396
  msgstr ""
4397
 
4398
+ #: classes/Views/Settings.php:1382
4399
+ msgid "MainWP Child Site Stealth Mode"
4400
  msgstr ""
4401
 
4402
+ #: classes/Views/Settings.php:1383
4403
+ 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."
4404
  msgstr ""
4405
 
4406
+ #: classes/Views/Settings.php:1387
4407
+ msgid "Enable MainWP Child Site Stealth Mode"
4408
  msgstr ""
4409
 
4410
+ #: classes/Views/Settings.php:1407
4411
+ msgid "Admin blocking plugins support"
4412
  msgstr ""
4413
 
4414
+ #: classes/Views/Settings.php:1412
4415
+ msgid "Enable early plugin loading on sites that use admin blocking plugins"
4416
  msgstr ""
4417
 
4418
+ #: classes/Views/Settings.php:1421
4419
+ msgid "Do you want to delete the plugin data from the database upon uninstall?"
4420
  msgstr ""
4421
 
4422
+ #: classes/Views/Settings.php:1422
4423
+ 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."
4424
  msgstr ""
4425
 
4426
+ #: classes/Views/Settings.php:1426
4427
+ msgid "Remove Data on Uninstall"
4428
  msgstr ""
4429
 
4430
+ #: classes/Views/Settings.php:1451
4431
+ msgid "Are you sure you want to reset all the plugin settings to default? This action cannot be undone."
4432
  msgstr ""
4433
 
4434
+ #: classes/Views/Settings.php:1461
4435
+ msgid "Are you sure you want to purge all the activity log data?"
4436
  msgstr ""
4437
 
4438
+ #: classes/Views/Settings.php:1485
4439
+ msgid "MainWP Child plugin is not active on this website."
4440
  msgstr ""
4441
 
4442
+ #: classes/Views/Settings.php:1566
4443
+ msgid "The specified value is not a valid URL!"
4444
  msgstr ""
4445
 
4446
+ #: classes/Views/Settings.php:1567
4447
+ msgid "The specified value is not a valid post type!"
4448
  msgstr ""
4449
 
4450
+ #: classes/Views/Settings.php:1568
4451
+ msgid "The specified value is not a valid IP address!"
4452
  msgstr ""
4453
 
4454
+ #: classes/Views/Settings.php:1569
4455
+ msgid "The specified value is not a user nor a role!"
4456
  msgstr ""
4457
 
4458
+ #: classes/Views/Settings.php:1570
4459
+ msgid "Filename cannot be added because it contains invalid characters."
4460
  msgstr ""
4461
 
4462
+ #: classes/Views/Settings.php:1571
4463
+ msgid "File extension cannot be added because it contains invalid characters."
4464
  msgstr ""
4465
 
4466
+ #: classes/Views/Settings.php:1572
4467
+ msgid "Directory cannot be added because it contains invalid characters."
4468
  msgstr ""
4469
 
4470
+ #: classes/Views/Settings.php:1574
4471
+ msgid "Please save any changes before switching tabs."
4472
  msgstr ""
4473
 
4474
+ #: classes/Views/Settings.php:1704, classes/Views/Settings.php:1727
4475
+ msgid "Nonce Verification Failed."
4476
  msgstr ""
4477
 
4478
+ #: classes/Views/Settings.php:1712
4479
+ msgid "Plugin settings have been reset."
4480
  msgstr ""
4481
 
4482
+ #: classes/Views/Settings.php:1738
4483
+ msgid "Reset query failed."
4484
  msgstr ""
4485
 
4486
+ #: classes/Views/Settings.php:1736
4487
+ msgid "Tables has been reset."
4488
  msgstr ""
4489
 
4490
+ #: classes/Views/Settings.php:1751
4491
+ msgid "Activity log retention"
4492
  msgstr ""
4493
 
4494
+ #: classes/Views/Settings.php:1757
4495
+ msgid "Keep all data"
4496
  msgstr ""
4497
 
4498
+ #: classes/Views/Settings.php:1784
4499
+ msgid "Delete events older than"
4500
  msgstr ""
4501
 
4502
+ #: classes/Views/Settings.php:1792
4503
+ msgid "Months"
4504
  msgstr ""
4505
 
4506
+ #: classes/Views/Settings.php:1793
4507
+ msgid "Years"
4508
  msgstr ""
4509
 
4510
+ #: classes/Views/Settings.php:1801
4511
+ msgid "The next scheduled purging of activity log data that is older than "
4512
  msgstr ""
4513
 
4514
+ #: classes/Views/Settings.php:1808
4515
+ msgid "You can run the purging process now by clicking the button below."
4516
  msgstr ""
4517
 
4518
+ #: classes/Views/Settings.php:1812
4519
+ msgid "Purge Old Data"
4520
  msgstr ""
4521
 
4522
+ #: classes/Views/SetupWizard.php:178
4523
+ msgid "Welcome"
4524
  msgstr ""
4525
 
4526
+ #: classes/Views/SetupWizard.php:182
4527
+ msgid "Log Details"
4528
  msgstr ""
4529
 
4530
+ #: classes/Views/SetupWizard.php:187
4531
+ msgid "Log In"
4532
  msgstr ""
4533
 
4534
+ #: classes/Views/SetupWizard.php:192
4535
+ msgid "User Registrations"
4536
  msgstr ""
4537
 
4538
+ #: classes/Views/SetupWizard.php:197
4539
+ msgid "Log Retention"
4540
  msgstr ""
4541
 
4542
+ #: classes/Views/SetupWizard.php:202, classes/Views/SetupWizard.php:736, classes/Views/SetupWizard.php:737
4543
+ msgid "Finish"
4544
  msgstr ""
4545
 
4546
+ #: classes/Views/SetupWizard.php:262
4547
+ msgid "Specified value in not a user."
4548
  msgstr ""
4549
 
4550
+ #: classes/Views/SetupWizard.php:263
4551
+ msgid "Specified value in not a role."
4552
  msgstr ""
4553
 
4554
+ #: classes/Views/SetupWizard.php:264
4555
+ msgid "Specified value in not an IP address."
4556
  msgstr ""
4557
 
4558
+ #: classes/Views/SetupWizard.php:304
4559
+ msgid "WP Activity Log &rsaquo; Setup Wizard"
4560
  msgstr ""
4561
 
4562
+ #: classes/Views/SetupWizard.php:322
4563
+ msgid "Close Wizard"
4564
  msgstr ""
4565
 
4566
+ #. translators: 1 - an opening link tag, 2 - a closing link tag.
4567
+ #: classes/Views/SetupWizard.php:415
4568
+ msgid "You have reached an invaild step - %1$sreturn to the start of the wizard%2$s."
4569
  msgstr ""
4570
 
4571
+ #: classes/Views/SetupWizard.php:432
4572
+ msgid "This wizard helps you configure the basic plugin settings. All these settings can be changed at a later stage from the plugin settings."
4573
  msgstr ""
4574
 
4575
+ #: classes/Views/SetupWizard.php:437
4576
+ msgid "Start Configuring the Plugin"
4577
  msgstr ""
4578
 
4579
+ #: classes/Views/SetupWizard.php:441
4580
+ msgid "Exit Wizard"
4581
  msgstr ""
4582
 
4583
+ #: classes/Views/SetupWizard.php:454
4584
+ msgid "Please select the level of detail for your WordPress activity logs:"
4585
  msgstr ""
4586
 
4587
+ #: classes/Views/SetupWizard.php:458
4588
+ msgid "Basic (I want a high level overview and I am not interested in the detail)"
4589
  msgstr ""
4590
 
4591
+ #: classes/Views/SetupWizard.php:463
4592
+ msgid "Geek (I want to know everything that is happening on my WordPress)"
 
4593
  msgstr ""
4594
 
4595
+ #: classes/Views/SetupWizard.php:465
4596
+ msgid "Note: You can change the WordPress logging level from the plugin’s settings anytime."
4597
  msgstr ""
4598
 
4599
+ #: classes/Views/SetupWizard.php:468, classes/Views/SetupWizard.php:468, classes/Views/SetupWizard.php:525, classes/Views/SetupWizard.php:525, classes/Views/SetupWizard.php:574, classes/Views/SetupWizard.php:574, classes/Views/SetupWizard.php:634, classes/Views/SetupWizard.php:635, classes/Views/SetupWizard.php:851, classes/Views/SetupWizard.php:852, extensions/external-db/classes/Connections.php:627, extensions/external-db/classes/Mirroring.php:283, extensions/external-db/classes/Mirroring.php:607
4600
+ msgid "Next"
4601
  msgstr ""
4602
 
4603
+ #: classes/Views/SetupWizard.php:509
4604
+ msgid "Do you or your users use other pages to log in to WordPress other than the default login page ( /wp-admin/ )?"
4605
  msgstr ""
4606
 
4607
+ #: classes/Views/SetupWizard.php:513
4608
+ msgid "Yes, we use other pages to login to WordPress."
4609
  msgstr ""
4610
 
4611
+ #: classes/Views/SetupWizard.php:518
4612
+ msgid "No, we only use the default WordPress login page."
4613
  msgstr ""
4614
 
4615
+ #: classes/Views/SetupWizard.php:520
4616
+ msgid "If your website is a membership or ecommerce website most probably you have more than one area from where the users can login. If you are not sure, select Yes."
4617
  msgstr ""
4618
 
4619
+ #: classes/Views/SetupWizard.php:523, classes/Views/SetupWizard.php:572, classes/Views/SetupWizard.php:626
4620
+ msgid "Note: You can change the WordPress activity log retention settings at any time from the plugin settings later on."
4621
  msgstr ""
4622
 
4623
+ #: classes/Views/SetupWizard.php:558
4624
+ msgid "Can visitors register as a user on your website?"
4625
  msgstr ""
4626
 
4627
+ #: classes/Views/SetupWizard.php:569
4628
+ msgid "If you are not sure about this setting, check if the Membership setting in the WordPress General settings is checked or not. If it is not checked (default) select No."
 
4629
  msgstr ""
4630
 
4631
+ #: classes/Views/SetupWizard.php:608
4632
+ msgid "How long do you want to keep the data in the WordPress activity Log?"
4633
  msgstr ""
4634
 
4635
+ #: classes/Views/SetupWizard.php:613
4636
+ msgid "6 months (data older than 6 months will be deleted)"
4637
  msgstr ""
4638
 
4639
+ #: classes/Views/SetupWizard.php:618
4640
+ msgid "12 months (data older than 12 months will be deleted)"
4641
  msgstr ""
4642
 
4643
+ #: classes/Views/SetupWizard.php:623
4644
+ msgid "Keep all data."
4645
  msgstr ""
4646
 
4647
+ #: classes/Views/SetupWizard.php:644
4648
+ msgid "The plugin stores the data in the WordPress database in a very efficient way, though the more data you keep the more hard disk space it will consume. If you need need to retain a lot of data we would recommend you to <a href=\"https://wpactivitylog.com/features/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=wizard+configuration\" target=\"_blank\">upgrade to Premium</a> and use the Database tools to store the WordPress activity log in an external database."
4649
  msgstr ""
4650
 
4651
+ #: classes/Views/SetupWizard.php:707
4652
+ msgid "Your plugin is all set and it is ready to start keeping a record of everything that is happening on your WordPress in a WordPress activity log."
4653
  msgstr ""
4654
 
4655
+ #: classes/Views/SetupWizard.php:708
4656
+ msgid "Below are a few useful links you might need to refer to:"
4657
  msgstr ""
4658
 
4659
+ #: classes/Views/SetupWizard.php:713
4660
+ msgid "Getting started with the WP Activity Log plugin"
4661
  msgstr ""
4662
 
4663
+ #: classes/Views/SetupWizard.php:718
4664
+ msgid "Knowledge Base & Support Documents"
4665
  msgstr ""
4666
 
4667
+ #: classes/Views/SetupWizard.php:723
4668
+ msgid "Benefits of keeping a WordPress activity log"
4669
  msgstr ""
4670
 
4671
+ #: classes/Views/SetupWizard.php:728
4672
+ msgid "We trust this plugin meets all your activity log requirements. Should you encounter any problems, have feature requests or would like to share some feedback, <a href=\"https://wpactivitylog.com/contact/?utm_source=plugin&utm_medium=referral&utm_campaign=WSAL&utm_content=wizard+configuration\" rel=\"noopener noreferrer\" target=\"_blank\">please get in touch!</a>"
 
4673
  msgstr ""
4674
 
4675
+ #: classes/Views/SetupWizard.php:764
4676
+ msgid "Third Party Extensions"
4677
  msgstr ""
4678
 
4679
+ #: classes/Views/SetupWizard.php:805
4680
+ msgid "Monitoring changes done in third party plugins"
4681
  msgstr ""
4682
 
4683
+ #: classes/Views/SetupWizard.php:806
4684
+ msgid "We noticed that the below plugins are installed on this website. You can install our extensions to also keep a log of changes users do on these plugins."
4685
  msgstr ""
4686
 
4687
+ #: classes/Views/ToggleAlerts.php:27, classes/Views/ToggleAlerts.php:41
4688
+ msgid "Enable/Disable Events"
4689
  msgstr ""
4690
 
4691
+ #: classes/Views/ToggleAlerts.php:158
4692
+ msgid "Basic"
4693
  msgstr ""
4694
 
4695
+ #: classes/Views/ToggleAlerts.php:159
4696
+ msgid "Geek"
4697
  msgstr ""
4698
 
4699
+ #: classes/Views/ToggleAlerts.php:160
4700
+ msgid "Custom"
4701
  msgstr ""
4702
 
4703
+ #: classes/Views/ToggleAlerts.php:180
4704
+ msgid "Log Level: "
4705
  msgstr ""
4706
 
4707
+ #: classes/Views/ToggleAlerts.php:187
4708
+ 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."
4709
  msgstr ""
4710
 
4711
+ #: classes/Views/ToggleAlerts.php:197
4712
+ msgid "Third party plugins"
4713
  msgstr ""
4714
 
4715
+ #: classes/Views/ToggleAlerts.php:298, extensions/reports/classes/CsvReportGenerator.php:77, extensions/reports/classes/HtmlReportGenerator.php:241
4716
+ msgid "Code"
4717
  msgstr ""
4718
 
4719
+ #: classes/Views/ToggleAlerts.php:341
4720
+ msgid "Logins & Logouts"
4721
  msgstr ""
4722
 
4723
+ #: classes/Views/ToggleAlerts.php:334
4724
+ msgid "Your website is a single site so the multisite events have been disabled."
4725
  msgstr ""
4726
 
4727
+ #: classes/Views/ToggleAlerts.php:314
4728
+ msgid "The plugin WooCommerce is not installed on your website so these events have been disabled."
4729
  msgstr ""
4730
 
4731
+ #: classes/Views/ToggleAlerts.php:321
4732
+ msgid "Products"
 
4733
  msgstr ""
4734
 
4735
+ #: classes/Views/ToggleAlerts.php:327
4736
+ msgid "Post Changes"
 
4737
  msgstr ""
4738
 
4739
+ #: classes/Views/ToggleAlerts.php:307
4740
+ msgid "<strong>Note:</strong> Post refers to any type of content, i.e. blog post, page or a post with a custom post type."
4741
  msgstr ""
4742
 
4743
+ #: classes/Views/ToggleAlerts.php:364
4744
+ msgid "Not Implemented"
4745
  msgstr ""
4746
 
4747
+ #: classes/Views/ToggleAlerts.php:367
4748
+ msgid "Not Available"
4749
  msgstr ""
4750
 
4751
+ #: classes/Views/ToggleAlerts.php:382
4752
+ msgid "User Logins/Logouts"
 
4753
  msgstr ""
4754
 
4755
+ #: classes/Views/ToggleAlerts.php:385
4756
+ msgid "User Sessions"
4757
  msgstr ""
4758
 
4759
+ #: classes/Views/ToggleAlerts.php:388
4760
+ msgid "Files"
4761
  msgstr ""
4762
 
4763
+ #: classes/Views/ToggleAlerts.php:391
4764
+ msgid "Post Settings"
4765
  msgstr ""
4766
 
4767
+ #: classes/Views/ToggleAlerts.php:461
4768
+ 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."
4769
  msgstr ""
4770
 
4771
+ #: classes/Views/ToggleAlerts.php:475, classes/Views/ToggleAlerts.php:488
4772
+ 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)"
4773
  msgstr ""
4774
 
4775
+ #: classes/Views/ToggleAlerts.php:502
4776
+ msgid "Keep a log of user log in activity on custom login forms (such as WooCommerce & membership plugins)"
4777
  msgstr ""
4778
 
4779
+ #: classes/Views/ToggleAlerts.php:548
4780
+ msgid "Save Changes"
4781
  msgstr ""
4782
 
4783
+ #: classes/Views/ToggleAlerts.php:555
4784
+ msgid "Log Level Updated"
4785
  msgstr ""
4786
 
4787
+ #. translators: Alerts log level.
4788
+ #: classes/Views/ToggleAlerts.php:559
4789
+ msgid "The %s log level has been successfully loaded and applied."
4790
  msgstr ""
4791
 
4792
+ #: classes/Views/ToggleAlerts.php:563, extensions/email-notifications/classes/Notifications.php:339, extensions/email-notifications/classes/Notifications.php:962, extensions/email-notifications/classes/Notifications.php:2008
4793
+ msgid "OK"
4794
  msgstr ""
4795
 
4796
+ #: classes/Views/ToggleAlerts.php:578
4797
+ msgid "Enable File Integrity Scanner"
4798
  msgstr ""
4799
 
4800
+ #: classes/Views/ToggleAlerts.php:580
4801
+ msgid "The file integrity scanner is switched off. To enable this event it has to be switched on."
4802
  msgstr ""
4803
 
4804
+ #: classes/Views/ToggleAlerts.php:584
4805
+ msgid "SWITCH ON"
4806
  msgstr ""
4807
 
4808
+ #: classes/Views/ToggleAlerts.php:585
4809
+ msgid "DISABLE EVENT"
4810
  msgstr ""
4811
 
4812
+ #: extensions/search/search-init.php:198
4813
+ msgid "An identical search filter already exists."
4814
  msgstr ""
4815
 
4816
+ #: extensions/search/search-init.php:217, extensions/search/search-init.php:291, extensions/user-sessions/classes/View/Sessions.php:313
4817
+ msgid "Search"
4818
  msgstr ""
4819
 
4820
+ #: extensions/search/search-init.php:292
4821
+ 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."
4822
  msgstr ""
4823
 
4824
+ #: extensions/search/search-init.php:293
4825
+ msgid "Clear Search Results"
4826
  msgstr ""
4827
 
4828
+ #: extensions/search/search-init.php:294
4829
+ msgid "Nothing found!"
4830
  msgstr ""
4831
 
4832
+ #: extensions/search/search-init.php:295
4833
+ msgid "Load"
4834
  msgstr ""
4835
 
4836
+ #: extensions/search/search-init.php:296
4837
+ msgid "Loading..."
4838
  msgstr ""
4839
 
4840
+ #: extensions/search/search-init.php:297
4841
+ msgid "Load & Run"
4842
  msgstr ""
4843
 
4844
+ #: extensions/search/search-init.php:298, extensions/email-notifications/classes/NotificationBuilder.php:76, extensions/email-notifications/classes/Notifications.php:1918, extensions/email-notifications/classes/Notifications.php:1981, extensions/email-notifications/classes/Notifications.php:1996, extensions/external-db/classes/Connections.php:157, extensions/external-db/classes/Mirroring.php:129
4845
+ msgid "Delete"
4846
  msgstr ""
4847
 
4848
+ #: extensions/search/search-init.php:299, extensions/external-db/classes/Connections.php:625, extensions/external-db/classes/Mirroring.php:594
4849
+ msgid "Deleting..."
4850
  msgstr ""
4851
 
4852
+ #: extensions/search/search-init.php:301, extensions/search/classes/FilterManager.php:384
4853
+ msgid "Load Search & Filters"
4854
  msgstr ""
4855
 
4856
+ #: extensions/search/search-init.php:302
4857
+ msgid "* Invalid IP"
4858
  msgstr ""
4859
 
4860
+ #: extensions/search/search-init.php:304
4861
+ msgid "Close Filters"
4862
  msgstr ""
4863
 
4864
+ #: extensions/search/search-init.php:305, extensions/search/classes/FilterManager.php:412
4865
+ msgid "Filter View"
4866
  msgstr ""
4867
 
4868
+ #. translators: both placeholders are html formatting strings for itallics
4869
+ #: extensions/search/search-init.php:308
4870
+ 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."
4871
  msgstr ""
4872
 
4873
+ #: extensions/search/search-init.php:354
4874
+ msgid "Widget could not be found."
4875
  msgstr ""
4876
 
4877
+ #: extensions/search/search-init.php:425, extensions/search/search-init.php:495
4878
+ msgid "No saved search found."
4879
  msgstr ""
4880
 
4881
+ #: extensions/search/search-init.php:417
4882
+ msgid "Saved searches found."
4883
  msgstr ""
4884
 
4885
+ #: extensions/search/search-init.php:459
4886
+ msgid "Search name not specified."
4887
  msgstr ""
4888
 
4889
+ #: extensions/search/search-init.php:486
4890
+ msgid "Saved search not found."
4891
  msgstr ""
4892
 
4893
+ #: extensions/search/search-init.php:478
4894
+ msgid "Saved search deleted."
4895
  msgstr ""
4896
 
4897
+ #: classes/Views/addons/html-view.php:95, classes/Views/addons/html-view.php:120
4898
+ msgid "Upgrade to Premium"
4899
  msgstr ""
4900
 
4901
+ #: classes/Views/addons/html-view.php:96
4902
+ msgid "More Information"
4903
  msgstr ""
4904
 
4905
+ #: classes/Views/addons/html-view.php:104
4906
+ msgid "Screenshots"
4907
  msgstr ""
4908
 
4909
+ #: classes/Views/addons/html-view.php:121
4910
+ msgid "Start Free 14-Day Premium Trial"
4911
  msgstr ""
4912
 
4913
+ #: extensions/email-notifications/classes/AddNotification.php:58
4914
+ msgid "Add New Email Notification"
4915
  msgstr ""
4916
 
4917
+ #: extensions/email-notifications/classes/AddNotification.php:72
4918
+ msgid "Add notification"
4919
  msgstr ""
4920
 
4921
+ #: extensions/email-notifications/classes/AddNotification.php:214, extensions/email-notifications/classes/EditNotification.php:216
4922
+ msgid "Back"
4923
  msgstr ""
4924
 
4925
+ #: extensions/email-notifications/classes/AddNotification.php:230
4926
+ msgid "You have reached the maximum number of notifications you can add."
4927
  msgstr ""
4928
 
4929
+ #. translators: Twilio settings hyperlink.
4930
+ #. translators: Twilio settings hyperlink.
4931
+ #. translators: Twilio settings hyperlink.
4932
+ #. translators: Twilio settings hyperlink.
4933
+ #. translators: Twilio settings hyperlink.
4934
+ #. translators: Twilio settings hyperlink.
4935
+ #. translators: Twilio settings hyperlink.
4936
+ #. translators: Twilio settings hyperlink.
4937
+ #. translators: Twilio settings hyperlink.
4938
+ #: extensions/email-notifications/classes/AddNotification.php:275, extensions/email-notifications/classes/EditNotification.php:324, extensions/email-notifications/classes/Notifications.php:896, extensions/email-notifications/classes/Notifications.php:1010, extensions/email-notifications/classes/Notifications.php:1335, extensions/email-notifications/classes/Notifications.php:1499, extensions/email-notifications/classes/Notifications.php:1593, extensions/email-notifications/classes/Notifications.php:1759, extensions/email-notifications/classes/SMSProviderSettings.php:237
4939
+ msgid "Click %s to configure Twilio integration for SMS notifications."
4940
  msgstr ""
4941
 
4942
+ #: extensions/email-notifications/classes/AddNotification.php:275, extensions/email-notifications/classes/EditNotification.php:324, extensions/email-notifications/classes/Notifications.php:896, extensions/email-notifications/classes/Notifications.php:1010, extensions/email-notifications/classes/Notifications.php:1335, extensions/email-notifications/classes/Notifications.php:1499, extensions/email-notifications/classes/Notifications.php:1593, extensions/email-notifications/classes/Notifications.php:1759, extensions/email-notifications/classes/SMSProviderSettings.php:237
4943
+ msgid "here"
4944
  msgstr ""
4945
 
4946
+ #. translators: Trigger groups documentation hyperlink
4947
+ #. translators: Trigger groups documentation hyperlink
4948
+ #: extensions/email-notifications/classes/AddNotification.php:283, extensions/email-notifications/classes/EditNotification.php:332
4949
+ msgid "Trigger groups documentation"
4950
  msgstr ""
4951
 
4952
+ #: extensions/email-notifications/classes/AddNotification.php:288, extensions/email-notifications/classes/EditNotification.php:337
4953
+ msgid "Triggers"
4954
  msgstr ""
4955
 
4956
+ #: extensions/email-notifications/classes/AddNotification.php:289, extensions/email-notifications/classes/EditNotification.php:338
4957
+ msgid "Add Trigger"
4958
  msgstr ""
4959
 
4960
+ #: extensions/email-notifications/classes/AddNotification.php:303, extensions/email-notifications/classes/EditNotification.php:381
4961
+ msgid "Use default email template"
4962
  msgstr ""
4963
 
4964
+ #: extensions/email-notifications/classes/AddNotification.php:308, extensions/email-notifications/classes/EditNotification.php:390
4965
+ msgid "Use event specific email template"
4966
  msgstr ""
4967
 
4968
+ #: extensions/email-notifications/classes/AddNotification.php:333, extensions/email-notifications/classes/EditNotification.php:423, extensions/external-db/classes/Connections.php:96, extensions/external-db/classes/Mirroring.php:91
4969
+ msgid "Name"
4970
  msgstr ""
4971
 
4972
+ #: extensions/email-notifications/classes/AddNotification.php:334, extensions/email-notifications/classes/EditNotification.php:424, extensions/email-notifications/classes/Notifications.php:1931, extensions/email-notifications/classes/Notifications.php:1942
4973
+ msgid "Title"
4974
  msgstr ""
4975
 
4976
+ #: extensions/email-notifications/classes/AddNotification.php:342, extensions/email-notifications/classes/EditNotification.php:432, extensions/email-notifications/classes/Notifications.php:1031, extensions/email-notifications/classes/Notifications.php:1054, extensions/email-notifications/classes/Notifications.php:1071, extensions/email-notifications/classes/Notifications.php:1095, extensions/email-notifications/classes/Notifications.php:1117, extensions/email-notifications/classes/Notifications.php:1130, extensions/email-notifications/classes/Notifications.php:1143, extensions/email-notifications/classes/Notifications.php:1156, extensions/email-notifications/classes/Notifications.php:1169, extensions/email-notifications/classes/Notifications.php:1182, extensions/email-notifications/classes/Notifications.php:1206, extensions/email-notifications/classes/Notifications.php:1221, extensions/email-notifications/classes/Notifications.php:1236, extensions/email-notifications/classes/Notifications.php:1251, extensions/email-notifications/classes/Notifications.php:1266, extensions/email-notifications/classes/Notifications.php:1288, extensions/email-notifications/classes/Notifications.php:1353, extensions/email-notifications/classes/Notifications.php:1368, extensions/email-notifications/classes/Notifications.php:1383, extensions/email-notifications/classes/Notifications.php:1407, extensions/email-notifications/classes/Notifications.php:1422, extensions/email-notifications/classes/Notifications.php:1437, extensions/email-notifications/classes/Notifications.php:1452, extensions/email-notifications/classes/Notifications.php:1514, extensions/email-notifications/classes/Notifications.php:1529, extensions/email-notifications/classes/Notifications.php:1544, extensions/email-notifications/classes/Notifications.php:1608, extensions/email-notifications/classes/Notifications.php:1625, extensions/email-notifications/classes/Notifications.php:1642, extensions/email-notifications/classes/Notifications.php:1659, extensions/email-notifications/classes/Notifications.php:1676, extensions/email-notifications/classes/Notifications.php:1693, extensions/email-notifications/classes/Notifications.php:1710, extensions/email-notifications/classes/Notifications.php:1776, extensions/email-notifications/classes/Notifications.php:1793, extensions/email-notifications/classes/Notifications.php:1810, extensions/email-notifications/classes/Notifications.php:1827, extensions/user-sessions/classes/View/Sessions.php:295
4977
+ msgid "Email"
4978
  msgstr ""
4979
 
4980
+ #: extensions/email-notifications/classes/AddNotification.php:348, extensions/email-notifications/classes/EditNotification.php:438, extensions/email-notifications/classes/Notifications.php:1057, extensions/email-notifications/classes/Notifications.php:1074, extensions/email-notifications/classes/Notifications.php:1098, extensions/email-notifications/classes/Notifications.php:1120, extensions/email-notifications/classes/Notifications.php:1133, extensions/email-notifications/classes/Notifications.php:1146, extensions/email-notifications/classes/Notifications.php:1159, extensions/email-notifications/classes/Notifications.php:1172, extensions/email-notifications/classes/Notifications.php:1185, extensions/email-notifications/classes/Notifications.php:1209, extensions/email-notifications/classes/Notifications.php:1224, extensions/email-notifications/classes/Notifications.php:1239, extensions/email-notifications/classes/Notifications.php:1254, extensions/email-notifications/classes/Notifications.php:1269, extensions/email-notifications/classes/Notifications.php:1291, extensions/email-notifications/classes/Notifications.php:1356, extensions/email-notifications/classes/Notifications.php:1371, extensions/email-notifications/classes/Notifications.php:1386, extensions/email-notifications/classes/Notifications.php:1410, extensions/email-notifications/classes/Notifications.php:1425, extensions/email-notifications/classes/Notifications.php:1440, extensions/email-notifications/classes/Notifications.php:1455, extensions/email-notifications/classes/Notifications.php:1517, extensions/email-notifications/classes/Notifications.php:1532, extensions/email-notifications/classes/Notifications.php:1547, extensions/email-notifications/classes/Notifications.php:1611, extensions/email-notifications/classes/Notifications.php:1628, extensions/email-notifications/classes/Notifications.php:1645, extensions/email-notifications/classes/Notifications.php:1662, extensions/email-notifications/classes/Notifications.php:1679, extensions/email-notifications/classes/Notifications.php:1696, extensions/email-notifications/classes/Notifications.php:1713, extensions/email-notifications/classes/Notifications.php:1779, extensions/email-notifications/classes/Notifications.php:1796, extensions/email-notifications/classes/Notifications.php:1813, extensions/email-notifications/classes/Notifications.php:1830
4981
+ msgid "Mobile Number"
4982
  msgstr ""
4983
 
4984
+ #: extensions/email-notifications/classes/Common.php:360, extensions/email-notifications/classes/Common.php:419
4985
+ msgid "The form is not valid. Please reload the page and try again."
4986
  msgstr ""
4987
 
4988
+ #. translators: Event type
4989
+ #: extensions/email-notifications/classes/Common.php:556, extensions/email-notifications/classes/Common.php:546, extensions/email-notifications/classes/Common.php:532, extensions/email-notifications/classes/Common.php:519, extensions/email-notifications/classes/Common.php:496, extensions/email-notifications/classes/Common.php:476, extensions/email-notifications/classes/Common.php:397
4990
+ msgid "%s is not valid"
4991
  msgstr ""
4992
 
4993
+ #: extensions/email-notifications/classes/Common.php:562
4994
+ msgid "Selected TYPE is not valid."
4995
  msgstr ""
4996
 
4997
+ #: extensions/email-notifications/classes/Common.php:552
4998
+ msgid "Selected OBJECT is not valid."
4999
  msgstr ""
5000
 
5001
+ #: extensions/email-notifications/classes/Common.php:541
5002
+ msgid "Selected POST STATUS is not valid."
5003
  msgstr ""
5004
 
5005
+ #: extensions/email-notifications/classes/Common.php:528
5006
+ msgid "Selected POST TYPE is not valid."
5007
  msgstr ""
5008
 
5009
+ #: extensions/email-notifications/classes/Common.php:507
5010
+ msgid "The enviroment is not multisite."
5011
  msgstr ""
5012
 
5013
+ #: extensions/email-notifications/classes/Common.php:513, extensions/email-notifications/classes/Common.php:490
5014
+ msgid "%s was not found"
5015
  msgstr ""
5016
 
5017
+ #: extensions/email-notifications/classes/Common.php:463, extensions/email-notifications/classes/Common.php:469
5018
+ msgid "TIME is not valid."
5019
  msgstr ""
5020
 
5021
+ #: extensions/email-notifications/classes/Common.php:454
5022
+ msgid "DATE is not valid."
5023
  msgstr ""
5024
 
5025
+ #: extensions/email-notifications/classes/Common.php:413
5026
+ msgid "The SOURCE IP is not valid. Maximum of 15 characters allowed."
5027
  msgstr ""
5028
 
5029
+ #: extensions/email-notifications/classes/Common.php:428
5030
+ msgid "The SOURCE IP is not valid."
5031
  msgstr ""
5032
 
5033
+ #: extensions/email-notifications/classes/Common.php:437
5034
+ msgid "The SOURCE IP fragment is not valid."
5035
  msgstr ""
5036
 
5037
+ #: extensions/email-notifications/classes/Common.php:406
5038
+ msgid "Selected USER ROLE is not valid."
5039
  msgstr ""
5040
 
5041
+ #: extensions/email-notifications/classes/Common.php:387
5042
+ msgid "The USERNAME is not valid. Maximum of 50 characters allowed."
5043
  msgstr ""
5044
 
5045
+ #: extensions/email-notifications/classes/Common.php:393
5046
+ msgid "The USERNAME does not exist."
5047
  msgstr ""
5048
 
5049
+ #: extensions/email-notifications/classes/Common.php:371
5050
+ msgid "Internal Error. Please reload the page and try again."
5051
  msgstr ""
5052
 
5053
+ #: extensions/email-notifications/classes/Common.php:380
5054
+ msgid "The EVENT ID is not valid."
5055
  msgstr ""
5056
 
5057
+ #: extensions/email-notifications/classes/Common.php:783, extensions/email-notifications/classes/Common.php:811, extensions/email-notifications/classes/Common.php:813
5058
+ msgid "Title is required."
5059
  msgstr ""
5060
 
5061
+ #: extensions/email-notifications/classes/Common.php:820
5062
+ msgid "Title is not valid."
5063
  msgstr ""
5064
 
5065
+ #: extensions/email-notifications/classes/Common.php:830
5066
+ msgid "Please add at least one condition."
5067
  msgstr ""
5068
 
5069
+ #: extensions/email-notifications/classes/Common.php:878, extensions/email-notifications/classes/Common.php:884, extensions/email-notifications/classes/Common.php:889
5070
+ msgid "The form is not valid. Please refresh the page and try again."
5071
  msgstr ""
5072
 
5073
+ #: extensions/email-notifications/classes/Common.php:898
5074
+ msgid "A trigger's condition must not be longer than 50 characters."
5075
  msgstr ""
5076
 
5077
+ #: extensions/email-notifications/classes/Common.php:934
5078
+ msgid "Email or Username is not valid."
5079
  msgstr ""
5080
 
5081
+ #: extensions/email-notifications/classes/Common.php:941
5082
+ msgid "Mobile number is not valid."
5083
  msgstr ""
5084
 
5085
+ #: extensions/email-notifications/classes/Common.php:928
5086
+ msgid "Email or Username is required."
5087
  msgstr ""
5088
 
5089
+ #: extensions/email-notifications/classes/Common.php:929
5090
+ msgid "Mobile number is required."
5091
  msgstr ""
5092
 
5093
+ #: extensions/email-notifications/classes/Common.php:996, extensions/email-notifications/classes/Notifications.php:610
5094
+ msgid "Notification could not be saved."
5095
  msgstr ""
5096
 
5097
+ #: extensions/email-notifications/classes/Common.php:1019, extensions/email-notifications/classes/Notifications.php:696
5098
+ msgid "Notification successfully saved."
5099
  msgstr ""
5100
 
5101
+ #: extensions/email-notifications/classes/Common.php:1041
5102
+ msgid "Notification Title"
5103
  msgstr ""
5104
 
5105
+ #: extensions/email-notifications/classes/Common.php:1042
5106
+ msgid "Website Name"
5107
  msgstr ""
5108
 
5109
+ #: extensions/email-notifications/classes/Common.php:1043
5110
+ msgid "User Login Name"
5111
  msgstr ""
5112
 
5113
+ #: extensions/email-notifications/classes/Common.php:1044
5114
+ msgid "Role(s) of the User"
5115
  msgstr ""
5116
 
5117
+ #: extensions/email-notifications/classes/Common.php:1045
5118
+ msgid "Event generated on Date and Time"
5119
  msgstr ""
5120
 
5121
+ #: extensions/email-notifications/classes/Common.php:1046
5122
+ msgid "Event Code"
5123
  msgstr ""
5124
 
5125
+ #: extensions/email-notifications/classes/Common.php:1047
5126
+ msgid "Event Severity"
5127
  msgstr ""
5128
 
5129
+ #: extensions/email-notifications/classes/Common.php:1048, extensions/email-notifications/classes/Common.php:1109
5130
+ msgid "Event Message"
5131
  msgstr ""
5132
 
5133
+ #: extensions/email-notifications/classes/Common.php:1049
5134
+ msgid "Event Metadata"
5135
  msgstr ""
5136
 
5137
+ #: extensions/email-notifications/classes/Common.php:1050
5138
+ msgid "Event Links"
5139
  msgstr ""
5140
 
5141
+ #: extensions/email-notifications/classes/Common.php:1051
5142
+ msgid "Client IP Address"
5143
  msgstr ""
5144
 
5145
+ #: extensions/email-notifications/classes/Common.php:1052
5146
+ msgid "Event Object"
5147
  msgstr ""
5148
 
5149
+ #: extensions/email-notifications/classes/Common.php:1099, extensions/email-notifications/classes/Common.php:1163
5150
+ msgid "Notification {title} on website {site} triggered"
5151
  msgstr ""
5152
 
5153
+ #: extensions/email-notifications/classes/Common.php:1100, extensions/email-notifications/classes/Common.php:1164
5154
+ msgid "Notification <strong>{title}</strong> was triggered. Below are the notification details:"
5155
  msgstr ""
5156
 
5157
+ #: extensions/email-notifications/classes/Common.php:1102
5158
+ msgid "Website"
5159
  msgstr ""
5160
 
5161
+ #: extensions/email-notifications/classes/Common.php:1104, extensions/email-notifications/classes/Common.php:1167, extensions/reports/classes/CsvReportGenerator.php:80, extensions/reports/classes/CsvReportGenerator.php:64, extensions/reports/classes/CsvReportGenerator.php:197, extensions/reports/classes/HtmlReportGenerator.php:244, extensions/reports/classes/HtmlReportGenerator.php:220, extensions/reports/classes/HtmlReportGenerator.php:358, extensions/search/classes/FilterManager.php:475, extensions/user-sessions/classes/View/Sessions.php:140, extensions/user-sessions/classes/View/Sessions.php:294
5162
+ msgid "Username"
5163
  msgstr ""
5164
 
5165
+ #: extensions/email-notifications/classes/Common.php:1105
5166
+ msgid "User role"
5167
  msgstr ""
5168
 
5169
+ #: extensions/email-notifications/classes/Common.php:1110
5170
+ msgid "Event generated on"
5171
  msgstr ""
5172
 
5173
+ #: extensions/email-notifications/classes/Common.php:1112
5174
+ msgid "These email notifications are sent with <a href=\"http://wpactivitylog.com\">WP Activity Log</a>, the most comprehensive WordPress activity log plugin solution."
5175
  msgstr ""
5176
 
5177
+ #: extensions/email-notifications/classes/Common.php:1135, extensions/email-notifications/classes/Common.php:1196
5178
+ msgid "User/Role"
5179
  msgstr ""
5180
 
5181
+ #: extensions/email-notifications/classes/Common.php:1138
5182
+ msgid "Event type"
5183
  msgstr ""
5184
 
5185
+ #: extensions/email-notifications/classes/Common.php:1168, extensions/search/classes/FilterManager.php:487, extensions/search/classes/Filters/userrolefilter.php:49, extensions/search/classes/Filters/userrolefilter.php:87, extensions/user-sessions/classes/View/Sessions.php:299
5186
+ msgid "User Role"
5187
  msgstr ""
5188
 
5189
+ #: extensions/email-notifications/classes/Common.php:1170
5190
+ msgid "Generated On"
5191
  msgstr ""
5192
 
5193
+ #: extensions/email-notifications/classes/Common.php:1172
5194
+ msgid "Monitoring of WordPress and Email Notifications provided by <a href=\"http://wpactivitylog.com\">WP Activity Log, WordPress most comprehensive audit trail plugin</a>."
5195
  msgstr ""
5196
 
5197
+ #: extensions/email-notifications/classes/Common.php:1197
5198
+ msgid "Event"
5199
  msgstr ""
5200
 
5201
+ #: extensions/email-notifications/classes/Common.php:1212
5202
+ msgid "Subject "
5203
  msgstr ""
5204
 
5205
+ #: extensions/email-notifications/classes/Common.php:1221
5206
+ msgid "Body "
5207
  msgstr ""
5208
 
5209
+ #: extensions/email-notifications/classes/Common.php:1224
5210
+ msgid "HTML is accepted. Available template tags:"
5211
  msgstr ""
5212
 
5213
+ #. translators: singular or plural form of a login total count.
5214
+ #: extensions/email-notifications/classes/DailyNotification.php:343
5215
+ msgid "was %d login"
5216
+ msgid_plural "were %d logins"
5217
+ msgstr[0] ""
5218
+ msgstr[1] ""
5219
+
5220
+ #. translators: a number that is total count of unique users in a login group.
5221
+ #: extensions/email-notifications/classes/DailyNotification.php:349
5222
+ msgid "%d unique user"
5223
+ msgid_plural "%d unique users"
5224
+ msgstr[0] ""
5225
+ msgstr[1] ""
5226
+
5227
+ #. translators: 1 - number of logins. 2 - total unique users
5228
+ #: extensions/email-notifications/classes/DailyNotification.php:356
5229
+ msgid "There %1$s on your site today from %2$s. Below is a list of the users and the IP addresses they logged in from:"
5230
  msgstr ""
5231
 
5232
+ #: extensions/email-notifications/classes/DailyNotification.php:388
5233
+ msgid "There were failed logins due to a wrong password from the following IP addresses:"
5234
  msgstr ""
5235
 
5236
+ #: extensions/email-notifications/classes/DailyNotification.php:410
5237
+ msgid "There were failed logins due to a wrong username from the following IP addresses:"
 
5238
  msgstr ""
5239
 
5240
+ #: extensions/email-notifications/classes/EditNotification.php:58
5241
+ msgid "Edit Email Notification"
5242
  msgstr ""
5243
 
5244
+ #: extensions/email-notifications/classes/EditNotification.php:72
5245
+ msgid "Edit Notification"
5246
  msgstr ""
5247
 
5248
+ #: extensions/email-notifications/classes/EditNotification.php:215, extensions/email-notifications/classes/Notifications.php:1880
5249
+ msgid "Add New"
5250
  msgstr ""
5251
 
5252
+ #: extensions/email-notifications/classes/EditNotification.php:246
5253
+ msgid "You do not have sufficient permissions to access this page. - INVALID NOTIFICATION ID"
5254
  msgstr ""
5255
 
5256
+ #: extensions/email-notifications/classes/EditNotification.php:442
5257
+ msgid "Specify the email address or WordPress username who should receive the notification once the trigger is matched."
5258
  msgstr ""
5259
 
5260
+ #: extensions/email-notifications/classes/NotificationBuilder.php:77
5261
+ msgid "Save Notification"
5262
  msgstr ""
5263
 
5264
+ #: extensions/email-notifications/classes/NotificationBuilder.php:78
5265
+ msgid "Add Notification"
5266
  msgstr ""
5267
 
5268
+ #: extensions/email-notifications/classes/NotificationBuilder.php:79
5269
+ msgid "Email Address or WordPress Username:"
5270
  msgstr ""
5271
 
5272
+ #: extensions/email-notifications/classes/NotificationBuilder.php:80
5273
+ msgid "Phone number for SMS notifications:"
5274
  msgstr ""
5275
 
5276
+ #: extensions/email-notifications/classes/Notifications.php:163, extensions/email-notifications/classes/Notifications.php:2337, extensions/email-notifications/classes/Notifications.php:2438
5277
+ msgid "Nonce verification failed. Please refresh and try again."
 
5278
  msgstr ""
5279
 
5280
+ #: extensions/email-notifications/classes/Notifications.php:205
5281
+ msgid "Built-in Notifications"
5282
  msgstr ""
5283
 
5284
+ #: extensions/email-notifications/classes/Notifications.php:210
5285
+ msgid "WordPress System"
5286
  msgstr ""
5287
 
5288
+ #: extensions/email-notifications/classes/Notifications.php:214
5289
+ msgid "Logins & Users Profiles"
5290
  msgstr ""
5291
 
5292
+ #: extensions/email-notifications/classes/Notifications.php:218
5293
+ msgid "Content Changes"
5294
  msgstr ""
5295
 
5296
+ #: extensions/email-notifications/classes/Notifications.php:222
5297
+ msgid "Multisite"
5298
  msgstr ""
5299
 
5300
+ #: extensions/email-notifications/classes/Notifications.php:226
5301
+ msgid "WooCommerce"
5302
  msgstr ""
5303
 
5304
+ #: extensions/email-notifications/classes/Notifications.php:232, extensions/email-notifications/classes/Notifications.php:915
5305
+ msgid "Custom Notifications"
5306
  msgstr ""
5307
 
5308
+ #: extensions/email-notifications/classes/Notifications.php:238
5309
+ msgid "Notifications Templates"
 
 
 
5310
  msgstr ""
5311
 
5312
+ #: extensions/email-notifications/classes/Notifications.php:244, extensions/email-notifications/classes/Notifications.php:2057
5313
+ msgid "Default Email Template"
5314
  msgstr ""
5315
 
5316
+ #: extensions/email-notifications/classes/Notifications.php:248, extensions/email-notifications/classes/Notifications.php:2053
5317
+ msgid "Default SMS Template"
5318
  msgstr ""
5319
 
5320
+ #: extensions/email-notifications/classes/Notifications.php:291, extensions/email-notifications/classes/Notifications.php:305
5321
+ msgid "Notifications"
5322
  msgstr ""
5323
 
5324
+ #: extensions/email-notifications/classes/Notifications.php:340, extensions/email-notifications/classes/Notifications.php:933
5325
+ msgid "Test Notifications"
5326
  msgstr ""
5327
 
5328
+ #: extensions/email-notifications/classes/Notifications.php:341
5329
+ msgid "Trigger Builder Test Notification"
 
5330
  msgstr ""
5331
 
5332
+ #: extensions/email-notifications/classes/Notifications.php:343
5333
+ msgid "Please specify an email address or a phone number to test."
5334
  msgstr ""
5335
 
5336
+ #: extensions/email-notifications/classes/Notifications.php:627
5337
+ msgid "Email Address or Username is not valid."
5338
  msgstr ""
5339
 
5340
+ #: extensions/email-notifications/classes/Notifications.php:637
5341
+ msgid "Phone number is not valid."
5342
  msgstr ""
5343
 
5344
+ #: extensions/email-notifications/classes/Notifications.php:619
5345
+ msgid "Email Address and Mobile Number cannot be empty."
5346
  msgstr ""
5347
 
5348
+ #: extensions/email-notifications/classes/Notifications.php:812
5349
+ msgid "To configure email notifications please contact the administrator of this multisite network on "
5350
  msgstr ""
5351
 
5352
+ #: extensions/email-notifications/classes/Notifications.php:831
5353
+ msgid "Daily summary email sent."
5354
  msgstr ""
5355
 
5356
+ #: extensions/email-notifications/classes/Notifications.php:827
5357
+ msgid "An error occurred while sending the daily summary email."
5358
  msgstr ""
5359
 
5360
+ #: extensions/email-notifications/classes/Notifications.php:821
5361
+ msgid "Invalid request."
5362
  msgstr ""
5363
 
5364
+ #. translators: %s: Twilio settings link
5365
+ #: extensions/email-notifications/classes/Notifications.php:905
5366
+ msgid "Tick the check box and specify an email address or username to enable a notification. You can specify a phone number to send a SMS notification as well (%s). Click the Save Notifications button to save the changes."
5367
  msgstr ""
5368
 
5369
+ #: extensions/email-notifications/classes/Notifications.php:906
5370
+ msgid "Configure Twilio account integration"
5371
  msgstr ""
5372
 
5373
+ #. translators: %s: Twilio settings link
5374
+ #: extensions/email-notifications/classes/Notifications.php:914
5375
+ msgid "You can create your own notification criteria in the %s tab."
5376
  msgstr ""
5377
 
5378
+ #: extensions/email-notifications/classes/Notifications.php:934
5379
+ msgid "Save Notifications"
5380
  msgstr ""
5381
 
5382
+ #: extensions/email-notifications/classes/Notifications.php:943
5383
+ msgid "Specify an email address to where you would like to send a test email notification:"
5384
  msgstr ""
5385
 
5386
+ #: extensions/email-notifications/classes/Notifications.php:948
5387
+ msgid "Specify a mobile phone number to where you would like to send a test SMS notification:"
5388
  msgstr ""
5389
 
5390
+ #: extensions/email-notifications/classes/Notifications.php:954
5391
+ msgid "Send"
5392
  msgstr ""
5393
 
5394
+ #: extensions/email-notifications/classes/Notifications.php:955, extensions/external-db/classes/Connections.php:617, extensions/external-db/classes/ExternalStorageTab.php:176, extensions/external-db/classes/ExternalStorageTab.php:204, extensions/external-db/classes/Mirroring.php:284
5395
+ msgid "Cancel"
5396
  msgstr ""
5397
 
5398
+ #: extensions/email-notifications/classes/Notifications.php:1013
5399
+ msgid "Daily Summary of Activity Log"
5400
  msgstr ""
5401
 
5402
+ #: extensions/email-notifications/classes/Notifications.php:1028
5403
+ msgid "Send me a summary of what happens every day."
5404
  msgstr ""
5405
 
5406
+ #: extensions/email-notifications/classes/Notifications.php:1032
5407
+ msgid "Send Summary Now"
5408
  msgstr ""
5409
 
5410
+ #: extensions/email-notifications/classes/Notifications.php:1038
5411
+ msgid "Suspicious Activity"
5412
  msgstr ""
5413
 
5414
+ #: extensions/email-notifications/classes/Notifications.php:1047, extensions/email-notifications/classes/Notifications.php:1064
5415
+ msgid "There are more than"
5416
  msgstr ""
5417
 
5418
+ #: extensions/email-notifications/classes/Notifications.php:1049
5419
+ msgid "failed WordPress logins for a WordPress user (Event ID 1002)"
5420
  msgstr ""
5421
 
5422
+ #: extensions/email-notifications/classes/Notifications.php:1066
5423
+ msgid "failed logins of non existing users (Event ID 1003)"
5424
  msgstr ""
5425
 
5426
+ #: extensions/email-notifications/classes/Notifications.php:1081
5427
+ msgid "WordPress Install Changes"
5428
  msgstr ""
5429
 
5430
+ #: extensions/email-notifications/classes/Notifications.php:1090
5431
+ msgid "WordPress was updated (Event ID 6004)"
5432
  msgstr ""
5433
 
5434
+ #: extensions/email-notifications/classes/Notifications.php:1105
5435
+ msgid "Plugin Changes Notifications"
5436
  msgstr ""
5437
 
5438
+ #: extensions/email-notifications/classes/Notifications.php:1113
5439
+ msgid "New plugin is installed (Event ID 5000)"
5440
  msgstr ""
5441
 
5442
+ #: extensions/email-notifications/classes/Notifications.php:1126
5443
+ msgid "Installed plugin is activated (Event ID 5001)"
5444
  msgstr ""
5445
 
5446
+ #: extensions/email-notifications/classes/Notifications.php:1139
5447
+ msgid "Plugin file is modified (Event ID 2051)"
5448
  msgstr ""
5449
 
5450
+ #: extensions/email-notifications/classes/Notifications.php:1152
5451
+ msgid "Installed plugin is deactivated (Event ID 5002)"
5452
  msgstr ""
5453
 
5454
+ #: extensions/email-notifications/classes/Notifications.php:1165
5455
+ msgid "A plugin is uninstalled (Event ID 5003)"
5456
  msgstr ""
5457
 
5458
+ #: extensions/email-notifications/classes/Notifications.php:1178
5459
+ msgid "Installed plugin is upgraded (Event ID 5004)"
5460
  msgstr ""
5461
 
5462
+ #: extensions/email-notifications/classes/Notifications.php:1192
5463
+ msgid "Themes Changes Notifications"
5464
  msgstr ""
5465
 
5466
+ #: extensions/email-notifications/classes/Notifications.php:1201
5467
+ msgid "New theme is installed (Event ID 5005)"
5468
  msgstr ""
5469
 
5470
+ #: extensions/email-notifications/classes/Notifications.php:1216
5471
+ msgid "Installed theme is activated (Event ID 5006)"
5472
  msgstr ""
5473
 
5474
+ #: extensions/email-notifications/classes/Notifications.php:1231
5475
+ msgid "Theme file is modified (Event ID 2046)"
 
5476
  msgstr ""
5477
 
5478
+ #: extensions/email-notifications/classes/Notifications.php:1246
5479
+ msgid "A theme is uninstalled (Event ID 5007)"
5480
  msgstr ""
5481
 
5482
+ #: extensions/email-notifications/classes/Notifications.php:1261
5483
+ msgid "Installed theme is updated (Event ID 5031)"
5484
  msgstr ""
5485
 
5486
+ #: extensions/email-notifications/classes/Notifications.php:1276
5487
+ msgid "Critical Events"
5488
  msgstr ""
5489
 
5490
+ #: extensions/email-notifications/classes/Notifications.php:1284
5491
+ msgid "Critical Event is Generated"
5492
  msgstr ""
5493
 
5494
+ #: extensions/email-notifications/classes/Notifications.php:1348
5495
+ msgid "User logs in (Event ID 1000)"
5496
  msgstr ""
5497
 
5498
+ #: extensions/email-notifications/classes/Notifications.php:1363
5499
+ msgid "First time user logs in"
5500
  msgstr ""
5501
 
5502
+ #: extensions/email-notifications/classes/Notifications.php:1378
5503
+ msgid "User changed password (Event ID 4003)"
5504
  msgstr ""
5505
 
5506
+ #: extensions/email-notifications/classes/Notifications.php:1393
5507
+ msgid "User Profile Changes"
5508
  msgstr ""
5509
 
5510
+ #: extensions/email-notifications/classes/Notifications.php:1402
5511
+ msgid "User changed email address (Event IDs 4005, 4006)"
5512
  msgstr ""
5513
 
5514
+ #: extensions/email-notifications/classes/Notifications.php:1417
5515
+ msgid "User's role has changed (Event ID 4002)"
5516
  msgstr ""
5517
 
5518
+ #: extensions/email-notifications/classes/Notifications.php:1432
5519
+ msgid "User changed the password of another user (Event ID 4004)"
5520
  msgstr ""
5521
 
5522
+ #: extensions/email-notifications/classes/Notifications.php:1447
5523
+ msgid "New user is created (Event IDs 4000, 4001, 4012)"
 
5524
  msgstr ""
5525
 
5526
+ #: extensions/email-notifications/classes/Notifications.php:1509
5527
+ msgid "New content is published (Event ID 2001)"
5528
  msgstr ""
5529
 
5530
+ #: extensions/email-notifications/classes/Notifications.php:1524
5531
+ msgid "Content in a post, page or custom post type is changed (Event ID 2065)"
5532
  msgstr ""
5533
 
5534
+ #: extensions/email-notifications/classes/Notifications.php:1539
5535
+ msgid "Anything but content in a post is changed (such as date, category, status, parent page etc)"
5536
  msgstr ""
5537
 
5538
+ #: extensions/email-notifications/classes/Notifications.php:1604
5539
+ msgid "User granted super admin (Event ID 4008)"
5540
  msgstr ""
5541
 
5542
+ #: extensions/email-notifications/classes/Notifications.php:1620
5543
+ msgid "User revoked super admin (Event ID 4009)"
5544
  msgstr ""
5545
 
5546
+ #: extensions/email-notifications/classes/Notifications.php:1637
5547
+ msgid "User added to site (Event ID 4010)"
5548
  msgstr ""
5549
 
5550
+ #: extensions/email-notifications/classes/Notifications.php:1654
5551
+ msgid "User removed from site (Event ID 4011)"
5552
  msgstr ""
5553
 
5554
+ #: extensions/email-notifications/classes/Notifications.php:1671
5555
+ msgid "Site changes"
5556
  msgstr ""
5557
 
5558
+ #: extensions/email-notifications/classes/Notifications.php:1688
5559
+ msgid "Activated theme on network (Event ID 5008)"
5560
  msgstr ""
5561
 
5562
+ #: extensions/email-notifications/classes/Notifications.php:1705
5563
+ msgid "Deactivated theme from network (Event ID 5009)"
5564
  msgstr ""
5565
 
5566
+ #: extensions/email-notifications/classes/Notifications.php:1771
5567
+ msgid "Any product change"
5568
+ msgstr ""
5569
+
5570
+ #: extensions/email-notifications/classes/Notifications.php:1788
5571
+ msgid "Any store settings change"
5572
  msgstr ""
5573
 
5574
+ #: extensions/email-notifications/classes/Notifications.php:1805
5575
+ msgid "Any coupon code changes"
5576
  msgstr ""
5577
 
5578
+ #: extensions/email-notifications/classes/Notifications.php:1822
5579
+ msgid "Any orders changes"
5580
  msgstr ""
5581
 
5582
+ #. translators: WSAL Notifications Documentation hyperlink
5583
+ #: extensions/email-notifications/classes/Notifications.php:1875
5584
+ msgid "Use the trigger builder to build any type of criteria that triggers email and / or SMS notifications. Refer to the %s for more detailed information."
5585
  msgstr ""
5586
 
5587
+ #: extensions/email-notifications/classes/Notifications.php:1876
5588
+ msgid "WordPress notifications documentation"
5589
  msgstr ""
5590
 
5591
+ #: extensions/email-notifications/classes/Notifications.php:2032
5592
+ msgid "No notifications found. Click the <code>Add New</code> button above to create one."
5593
  msgstr ""
5594
 
5595
+ #: extensions/email-notifications/classes/Notifications.php:2018
5596
+ msgid "No notifications found to match your search."
5597
  msgstr ""
5598
 
5599
+ #: extensions/email-notifications/classes/Notifications.php:2025, extensions/email-notifications/classes/Notifications.php:2027, extensions/email-notifications/classes/Notifications.php:1902, extensions/email-notifications/classes/Notifications.php:1904
5600
+ msgid "Search Notifications"
5601
  msgstr ""
5602
 
5603
+ #: extensions/email-notifications/classes/Notifications.php:1893, extensions/reports/classes/HtmlReportGenerator.php:144, extensions/reports/classes/HtmlReportGenerator.php:148, extensions/user-sessions/classes/View/Options/Policies.php:24
5604
+ msgid "All"
5605
  msgstr ""
5606
 
5607
+ #: extensions/email-notifications/classes/Notifications.php:1915, extensions/email-notifications/classes/Notifications.php:1993
5608
+ msgid "Bulk actions"
 
5609
  msgstr ""
5610
 
5611
+ #: extensions/email-notifications/classes/Notifications.php:1916, extensions/email-notifications/classes/Notifications.php:1977, extensions/email-notifications/classes/Notifications.php:1994, extensions/external-db/classes/Mirroring.php:118, extensions/external-db/classes/Mirroring.php:735, extensions/external-db/classes/mirrors/PapertrailConnection.php:44
5612
+ msgid "Enable"
5613
  msgstr ""
5614
 
5615
+ #: extensions/email-notifications/classes/Notifications.php:1917, extensions/email-notifications/classes/Notifications.php:1975, extensions/email-notifications/classes/Notifications.php:1995, extensions/external-db/classes/Mirroring.php:121, extensions/external-db/classes/Mirroring.php:738
5616
+ msgid "Disable"
5617
  msgstr ""
5618
 
5619
+ #: extensions/email-notifications/classes/Notifications.php:1920, extensions/email-notifications/classes/Notifications.php:1998
5620
+ msgid "Apply"
5621
  msgstr ""
5622
 
5623
+ #: extensions/email-notifications/classes/Notifications.php:1928, extensions/email-notifications/classes/Notifications.php:1939, extensions/reports/inc/wsal-reporting-view.inc.php:878
5624
+ msgid "Select All"
5625
  msgstr ""
5626
 
5627
+ #: extensions/email-notifications/classes/Notifications.php:1965
5628
+ msgid "Select"
5629
  msgstr ""
5630
 
5631
+ #: extensions/email-notifications/classes/Notifications.php:1969, extensions/email-notifications/classes/Notifications.php:1971
5632
+ msgid "Edit this notification"
5633
  msgstr ""
5634
 
5635
+ #: extensions/email-notifications/classes/Notifications.php:1971
5636
+ msgid "Edit"
5637
  msgstr ""
5638
 
5639
+ #: extensions/email-notifications/classes/Notifications.php:1977
5640
+ msgid "Enable this notification"
5641
  msgstr ""
5642
 
5643
+ #: extensions/email-notifications/classes/Notifications.php:1975
5644
+ msgid "Disable this notification"
5645
  msgstr ""
5646
 
5647
+ #: extensions/email-notifications/classes/Notifications.php:1981
5648
+ msgid "Delete this notification"
5649
  msgstr ""
5650
 
5651
+ #: extensions/email-notifications/classes/Notifications.php:1984
5652
+ msgid "Send Test Email"
5653
  msgstr ""
5654
 
5655
+ #: extensions/email-notifications/classes/Notifications.php:1985
5656
+ msgid "Send Test SMS"
5657
  msgstr ""
5658
 
5659
+ #: extensions/email-notifications/classes/Notifications.php:2056
5660
+ msgid "You can modify the default notification email template from here."
5661
  msgstr ""
5662
 
5663
+ #: extensions/email-notifications/classes/Notifications.php:2058
5664
+ msgid "This is the default template. You can override this default template with notification specific template which you can modify when using the Trigger Builder."
5665
  msgstr ""
5666
 
5667
+ #: extensions/email-notifications/classes/Notifications.php:2052
5668
+ msgid "You can modify the default notification SMS template from here."
5669
  msgstr ""
5670
 
5671
+ #: extensions/email-notifications/classes/Notifications.php:2054
5672
+ msgid "This is the default template for SMS notifications. The maximum number of characters for a SMS is 160, so if you configure longer notifications you will be charged for multiple SMS notifications."
5673
  msgstr ""
5674
 
5675
+ #: extensions/email-notifications/classes/Notifications.php:2094
5676
+ msgid "Subject"
5677
  msgstr ""
5678
 
5679
+ #: extensions/email-notifications/classes/Notifications.php:2099
5680
+ msgid "Body"
5681
  msgstr ""
5682
 
5683
+ #: extensions/email-notifications/classes/Notifications.php:2124
5684
+ msgid "HTML is accepted."
5685
  msgstr ""
5686
 
5687
+ #: extensions/email-notifications/classes/Notifications.php:2125
5688
+ msgid "Available template tags:"
5689
  msgstr ""
5690
 
5691
+ #: extensions/email-notifications/classes/Notifications.php:2147
5692
+ msgid "Shorten URLs"
5693
  msgstr ""
5694
 
5695
+ #: extensions/email-notifications/classes/Notifications.php:2152
5696
+ msgid "Shorten URLs with Bit.ly"
5697
  msgstr ""
5698
 
5699
+ #: extensions/email-notifications/classes/Notifications.php:2155
5700
+ msgid "Bit.ly Access Token"
5701
  msgstr ""
5702
 
5703
+ #. translators: Bit.ly documentation hyperlink
5704
+ #: extensions/email-notifications/classes/Notifications.php:2160
5705
+ msgid "The URL shortener works for URLs in the {message} variable and will not shorten the URL of the website in the variable {site}. Shorten all URLs in the message using the %s."
5706
  msgstr ""
5707
 
5708
+ #: extensions/email-notifications/classes/Notifications.php:2160
5709
+ msgid "Bit.ly URL Shortener API"
5710
  msgstr ""
5711
 
5712
+ #: extensions/email-notifications/classes/Notifications.php:2208
5713
+ msgid "Template successfully saved."
5714
  msgstr ""
5715
 
5716
+ #: extensions/email-notifications/classes/Notifications.php:2206
5717
+ msgid "Template could not be saved."
 
 
 
 
 
5718
  msgstr ""
5719
 
5720
+ #: extensions/email-notifications/classes/Notifications.php:2326, extensions/email-notifications/classes/Notifications.php:2432
5721
+ msgid "You do not have sufficient permissions to perform this test."
5722
  msgstr ""
5723
 
5724
+ #: extensions/email-notifications/classes/Notifications.php:2358
5725
+ msgid "Email address is invalid."
5726
  msgstr ""
5727
 
5728
+ #: extensions/email-notifications/classes/Notifications.php:2354
5729
+ msgid "Test email notification from the WP Activity Log plugin."
5730
  msgstr ""
5731
 
5732
+ #: extensions/email-notifications/classes/Notifications.php:2355
5733
+ msgid "This is a test email notification sent with the WP Activity Log plugin."
5734
  msgstr ""
5735
 
5736
+ #: extensions/email-notifications/classes/Notifications.php:2368
5737
+ msgid "Phone number is invalid."
5738
  msgstr ""
5739
 
5740
+ #: extensions/email-notifications/classes/Notifications.php:2365
5741
+ msgid "This is a test SMS notification sent with the WP Activity Log plugin."
5742
  msgstr ""
5743
 
5744
+ #. translators: Support email hyperlink
5745
+ #: extensions/email-notifications/classes/Notifications.php:2392
5746
+ msgid "There are some problems sending the test email / SMS. Please contact us on %s to assist you with this problem."
5747
  msgstr ""
5748
 
5749
+ #: extensions/email-notifications/classes/Notifications.php:2389, extensions/email-notifications/classes/Notifications.php:2486
5750
+ msgid "There was a problem sending the SMS. Below is the error we got back from the SMS provider. Please contact us on %s if you need assistance with this issue."
5751
  msgstr ""
5752
 
5753
+ #: extensions/email-notifications/classes/Notifications.php:2380
5754
+ msgid "Email / SMS sent successfully."
5755
  msgstr ""
5756
 
5757
+ #: extensions/email-notifications/classes/Notifications.php:2377, extensions/email-notifications/classes/Notifications.php:2488
5758
+ msgid "SMS sent successfully."
5759
  msgstr ""
5760
 
5761
+ #: extensions/email-notifications/classes/Notifications.php:2374, extensions/email-notifications/classes/Notifications.php:2467
5762
+ msgid "Email sent successfully."
5763
  msgstr ""
5764
 
5765
+ #: extensions/email-notifications/classes/Notifications.php:2494
5766
+ msgid "Unknown notification type."
5767
  msgstr ""
5768
 
5769
+ #: extensions/email-notifications/classes/Notifications.php:2491
5770
+ msgid "There are some problems sending the test SMS. Please contact us on %s to assist you with this problem."
5771
  msgstr ""
5772
 
5773
+ #: extensions/email-notifications/classes/Notifications.php:2483
5774
+ msgid "Mobile number is not set for this notification."
 
 
 
 
 
 
 
 
 
 
 
5775
  msgstr ""
5776
 
5777
+ #: extensions/email-notifications/classes/Notifications.php:2470
5778
+ msgid "There are some problems sending the test email. Please contact us on %s to assist you with this problem."
 
 
 
 
 
 
 
 
 
 
 
5779
  msgstr ""
5780
 
5781
+ #: extensions/email-notifications/classes/Notifications.php:2448
5782
+ msgid "Unknown notification."
 
 
 
 
 
 
 
 
 
 
5783
  msgstr ""
5784
 
5785
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:118
5786
+ msgid "SMS Provider"
5787
  msgstr ""
5788
 
5789
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:148, extensions/email-notifications/classes/SMSProviderSettings.php:146, extensions/external-db/classes/Connections.php:142
5790
+ msgid "Test"
5791
  msgstr ""
5792
 
5793
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:169
5794
+ msgid "Configure your Twilio account details to be able to configure and send SMS notifications."
5795
  msgstr ""
5796
 
5797
+ #. translators: Upgrade now hyperlink.
5798
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:172
5799
+ msgid "SMS notifications are available in the Professional and Business Plans. %s to configure and receive SMS notifications."
5800
  msgstr ""
5801
 
5802
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:172
5803
+ msgid "Upgrade now"
5804
  msgstr ""
5805
 
5806
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:178
5807
+ msgid "Account SID"
5808
  msgstr ""
5809
 
5810
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:181
5811
+ msgid "Enter Account SID"
5812
  msgstr ""
5813
 
5814
+ #. translators: Twilio console link
5815
+ #. translators: Twilio console link
5816
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:185, extensions/email-notifications/classes/SMSProviderSettings.php:200
5817
+ msgid "To view API credentials visit %s"
5818
  msgstr ""
5819
 
5820
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:193
5821
+ msgid "Auth token"
5822
  msgstr ""
5823
 
5824
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:196
5825
+ msgid "Enter Auth Token"
5826
  msgstr ""
5827
 
5828
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:208
5829
+ msgid "Twilio number / Alphanumeric ID"
5830
  msgstr ""
5831
 
5832
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:211, extensions/email-notifications/classes/SMSProviderSettings.php:250
5833
+ msgid "+16175551212"
5834
  msgstr ""
5835
 
5836
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:212
5837
+ msgid "Specify a Twilio phone number including the country code (e.g. +16175551212) or a valid Alphanumeric ID (e.g. WSAL)"
5838
  msgstr ""
5839
 
5840
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:247
5841
+ msgid "Recipient Number"
5842
  msgstr ""
5843
 
5844
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:251
5845
+ msgid "Country code + 10-digit Twilio phone number (i.e. +16175551212)"
5846
  msgstr ""
5847
 
5848
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:257
5849
+ msgid "Message Body"
5850
  msgstr ""
5851
 
5852
+ #: extensions/email-notifications/classes/SMSProviderSettings.php:261
5853
+ msgid "The text of the message you want to send, limited to 1600 characters."
5854
  msgstr ""
5855
 
5856
+ #: extensions/external-db/classes/Ajax.php:9, extensions/external-db/classes/Connections.php:18, extensions/external-db/classes/DataMigration.php:9, extensions/external-db/classes/ExternalStorageTab.php:18, extensions/external-db/classes/MigrationCancellation.php:9, extensions/external-db/classes/Mirroring.php:18, extensions/external-db/classes/Settings.php:17, extensions/external-db/classes/StorageSwitch.php:9, extensions/external-db/classes/StorageSwitchToExternal.php:9, extensions/external-db/classes/StorageSwitchToLocal.php:9
5857
+ msgid "You are not allowed to view this page."
5858
  msgstr ""
5859
 
5860
+ #: extensions/external-db/classes/Common.php:821, extensions/external-db/classes/Settings.php:102
5861
+ msgid "External Storage"
5862
  msgstr ""
5863
 
5864
+ #. translators: A string wrapped in a link saying to create and configure databases and services connections.
5865
+ #: extensions/external-db/classes/Connections.php:78
5866
+ msgid "In this section you can %s. Database connections can be used as an external database and for activity log archiving. Third party services connections can be used to mirror the activity logs into them. You can have multiple connections. Please note that connections that are in use cannot be deleted."
5867
  msgstr ""
5868
 
5869
+ #: extensions/external-db/classes/Connections.php:82
5870
+ msgid "create and configure databases and services connections"
5871
  msgstr ""
5872
 
5873
+ #: extensions/external-db/classes/Connections.php:89
5874
+ msgid "Create a Connection"
5875
  msgstr ""
5876
 
5877
+ #: extensions/external-db/classes/Connections.php:92, extensions/external-db/classes/Settings.php:97
5878
+ msgid "Connections"
5879
  msgstr ""
5880
 
5881
+ #: extensions/external-db/classes/Connections.php:98
5882
+ msgid "Used for"
5883
  msgstr ""
5884
 
5885
+ #: extensions/external-db/classes/Connections.php:126, extensions/external-db/classes/Mirroring.php:127
5886
+ msgid "Configure"
5887
  msgstr ""
5888
 
5889
+ #: extensions/external-db/classes/Connections.php:140
5890
+ msgid "Send a test message"
5891
  msgstr ""
5892
 
5893
+ #: extensions/external-db/classes/Connections.php:108
5894
+ msgid "No connections so far."
5895
  msgstr ""
5896
 
5897
+ #: extensions/external-db/classes/Connections.php:180
5898
+ msgid "No connection name specified!"
5899
  msgstr ""
5900
 
5901
+ #: extensions/external-db/classes/Connections.php:193
5902
+ msgid "Configure Connection → "
5903
  msgstr ""
5904
 
5905
+ #: extensions/external-db/classes/Connections.php:198, extensions/external-db/classes/Connections.php:534
5906
+ msgid "Configure the connection"
5907
  msgstr ""
5908
 
5909
+ #: extensions/external-db/classes/Connections.php:199, extensions/external-db/classes/Connections.php:535
5910
+ msgid "Configure the connection details."
5911
  msgstr ""
5912
 
5913
+ #: extensions/external-db/classes/Connections.php:203, extensions/external-db/classes/Connections.php:500, extensions/external-db/classes/Connections.php:626
5914
+ msgid "Save Connection"
5915
  msgstr ""
5916
 
5917
+ #: extensions/external-db/classes/Connections.php:239
5918
+ msgid "Database Name"
5919
  msgstr ""
5920
 
5921
+ #: extensions/external-db/classes/Connections.php:245
5922
+ msgid "Specify the name of the database where you will store the WordPress activity log."
5923
  msgstr ""
5924
 
5925
+ #: extensions/external-db/classes/Connections.php:251
5926
+ msgid "Database User"
5927
  msgstr ""
5928
 
5929
+ #: extensions/external-db/classes/Connections.php:257
5930
+ msgid "Specify the username to be used to connect to the database."
5931
  msgstr ""
5932
 
5933
+ #: extensions/external-db/classes/Connections.php:263
5934
+ msgid "Database Password"
5935
  msgstr ""
5936
 
5937
+ #: extensions/external-db/classes/Connections.php:268
5938
+ msgid "Specify the password each time you want to submit new changes. For security reasons, the plugin does not store the password in this form."
5939
  msgstr ""
5940
 
5941
+ #: extensions/external-db/classes/Connections.php:274
5942
+ msgid "Database Hostname"
5943
  msgstr ""
5944
 
5945
+ #: extensions/external-db/classes/Connections.php:280
5946
+ msgid "Specify the hostname or IP address of the database server."
5947
  msgstr ""
5948
 
5949
+ #: extensions/external-db/classes/Connections.php:286
5950
+ msgid "Database Base Prefix"
5951
  msgstr ""
5952
 
5953
+ #: extensions/external-db/classes/Connections.php:294
5954
+ msgid "Specify a prefix for the database tables of the activity log. Ideally this prefix should be different from the one you use for WordPress so it is not guessable."
5955
  msgstr ""
5956
 
5957
+ #: extensions/external-db/classes/Connections.php:300
5958
+ msgid "Use website URL as table prefix"
5959
  msgstr ""
5960
 
5961
+ #: extensions/external-db/classes/Connections.php:306
5962
+ msgid "SSL/TLS"
5963
  msgstr ""
5964
 
5965
+ #: extensions/external-db/classes/Connections.php:312
5966
+ msgid "Enable to use SSL/TLS to connect with the MySQL server."
5967
  msgstr ""
5968
 
5969
+ #: extensions/external-db/classes/Connections.php:319
5970
+ msgid "Client Certificate"
5971
  msgstr ""
5972
 
5973
+ #: extensions/external-db/classes/Connections.php:326
5974
+ msgid "Enable to use SSL/TLS certificates below to connect with the MySQL server."
5975
  msgstr ""
5976
 
5977
+ #: extensions/external-db/classes/Connections.php:331
5978
+ msgid "CA SSL Certificate (--ssl-ca)"
5979
  msgstr ""
5980
 
5981
+ #: extensions/external-db/classes/Connections.php:336
5982
+ msgid "Server SSL Certificate (--ssl-cert)"
5983
  msgstr ""
5984
 
5985
+ #: extensions/external-db/classes/Connections.php:341
5986
+ msgid "Client Certificate (--ssl-key)"
5987
  msgstr ""
5988
 
5989
+ #: extensions/external-db/classes/Connections.php:223
5990
+ msgid "Connection Name"
5991
  msgstr ""
5992
 
5993
+ #: extensions/external-db/classes/Connections.php:488
5994
+ msgid "MySQL Database"
5995
  msgstr ""
5996
 
5997
+ #: extensions/external-db/classes/Connections.php:501
5998
+ msgid "Select type"
5999
  msgstr ""
6000
 
6001
+ #: extensions/external-db/classes/Connections.php:503
6002
+ msgid "Select the type of connection"
6003
  msgstr ""
6004
 
6005
+ #: extensions/external-db/classes/Connections.php:504
6006
+ msgid "Select the type of connection you would like to setup."
6007
  msgstr ""
6008
 
6009
+ #: extensions/external-db/classes/Connections.php:509
6010
+ msgid "Type of Connection"
6011
  msgstr ""
6012
 
6013
+ #: extensions/external-db/classes/Connections.php:525
6014
+ msgid "Check requirements"
6015
  msgstr ""
6016
 
6017
+ #: extensions/external-db/classes/Connections.php:527
6018
+ msgid "Requirements check"
6019
  msgstr ""
6020
 
6021
+ #: extensions/external-db/classes/Connections.php:532
6022
+ msgid "Configure connection"
6023
  msgstr ""
6024
 
6025
+ #: extensions/external-db/classes/Connections.php:542
6026
+ msgid "Test connection"
6027
  msgstr ""
6028
 
6029
+ #: extensions/external-db/classes/Connections.php:544
6030
+ msgid "Connectivity test"
6031
  msgstr ""
6032
 
6033
+ #: extensions/external-db/classes/Connections.php:549, extensions/external-db/classes/Connections.php:551
6034
+ msgid "Name the connection"
6035
  msgstr ""
6036
 
6037
+ #: extensions/external-db/classes/Connections.php:552
6038
+ msgid "Please specify a friendly name for the connection. Connection names can be 25 characters long and can only contain letters, numbers and underscores."
6039
  msgstr ""
6040
 
6041
+ #: extensions/external-db/classes/Connections.php:618
6042
+ msgid "Checking requirements..."
6043
  msgstr ""
6044
 
6045
+ #: extensions/external-db/classes/Connections.php:620, extensions/external-db/classes/Mirroring.php:602
6046
+ msgid "Are you sure that you want to delete this connection?"
6047
  msgstr ""
6048
 
6049
+ #: extensions/external-db/classes/Connections.php:621, extensions/external-db/classes/Mirroring.php:597, extensions/external-db/classes/Settings.php:800
6050
+ msgid "Connection failed!"
6051
  msgstr ""
6052
 
6053
+ #: extensions/external-db/classes/Connections.php:622
6054
+ msgid "Connection test failed! Please check the connection configuration or try again later."
6055
  msgstr ""
6056
 
6057
+ #: extensions/external-db/classes/Connections.php:623, extensions/external-db/classes/Mirroring.php:598
6058
+ msgid "Connected"
6059
  msgstr ""
6060
 
6061
+ #: extensions/external-db/classes/Connections.php:624, extensions/external-db/classes/Mirroring.php:593, extensions/external-db/classes/Settings.php:813
6062
+ msgid "Testing..."
6063
  msgstr ""
6064
 
6065
+ #: extensions/external-db/classes/Connections.php:628
6066
+ msgid "Previous"
6067
  msgstr ""
6068
 
6069
+ #: extensions/external-db/classes/Connections.php:629
6070
+ msgid "Unable to check the requirements at the moment. Communication with the server failed. Try again later."
6071
  msgstr ""
6072
 
6073
+ #: extensions/external-db/classes/Connections.php:630
6074
+ msgid "Sending a test message..."
 
6075
  msgstr ""
6076
 
6077
+ #: extensions/external-db/classes/Connections.php:632, extensions/external-db/classes/Mirroring.php:591
6078
+ msgid "Connections Wizard"
6079
  msgstr ""
6080
 
6081
+ #: extensions/external-db/classes/Connections.php:797
6082
+ msgid "Connection failed. Please check the configuration again."
6083
  msgstr ""
6084
 
6085
+ #: extensions/external-db/classes/Connections.php:965
6086
+ msgid "Unknown connection type."
6087
  msgstr ""
6088
 
6089
+ #: extensions/external-db/classes/Connections.php:960, extensions/external-db/classes/Connections.php:928
6090
+ msgid "Connection successful."
6091
  msgstr ""
6092
 
6093
+ #: extensions/external-db/classes/Connections.php:926
6094
+ msgid "Connection failed."
6095
  msgstr ""
6096
 
6097
+ #: extensions/external-db/classes/Connections.php:986
6098
+ msgid "Connection type is missing."
6099
  msgstr ""
6100
 
6101
+ #: extensions/external-db/classes/Connections.php:998
6102
+ msgid "Unrecognized mirror type."
6103
  msgstr ""
6104
 
6105
+ #: extensions/external-db/classes/Connections.php:1005
6106
+ msgid "Requirements check failed."
6107
  msgstr ""
6108
 
6109
+ #: extensions/external-db/classes/Connections.php:1010
6110
+ msgid "All requirements are met. Your system is ready to use the selected connection type."
6111
  msgstr ""
6112
 
6113
+ #: extensions/external-db/classes/Connections.php:1013
6114
+ msgid "Selected connection type cannot be used on your system at the moment. The following requirements are not met."
6115
  msgstr ""
6116
 
6117
+ #. translators: 1 is the help type being linked
6118
+ #. translators: 1 is the help type being linked
6119
+ #: extensions/external-db/classes/ExternalStorageTab.php:65, extensions/external-db/classes/Settings.php:317
6120
+ msgid "Read more on %1$s."
6121
  msgstr ""
6122
 
6123
+ #: extensions/external-db/classes/ExternalStorageTab.php:69
6124
+ msgid "external storage for activity logs"
6125
  msgstr ""
6126
 
6127
+ #: extensions/external-db/classes/ExternalStorageTab.php:73
6128
+ msgid "In this section you can configure the plugin to store the WordPress activity log in an external storage rather than the WordPress database. This could be another database on a remote server."
6129
  msgstr ""
6130
 
6131
+ #: extensions/external-db/classes/ExternalStorageTab.php:93
6132
+ msgid "Migrating data to local database..."
6133
  msgstr ""
6134
 
6135
+ #: extensions/external-db/classes/ExternalStorageTab.php:94
6136
+ msgid "new events are still being saved to the external database."
6137
  msgstr ""
6138
 
6139
+ #: extensions/external-db/classes/ExternalStorageTab.php:90
6140
+ msgid "Migrating data to external database..."
6141
  msgstr ""
6142
 
6143
+ #: extensions/external-db/classes/ExternalStorageTab.php:91
6144
+ msgid "new events are still being saved to the local database."
6145
  msgstr ""
6146
 
6147
+ #: extensions/external-db/classes/ExternalStorageTab.php:107
6148
+ msgid "Processed: %1$d out of %2$d"
6149
  msgstr ""
6150
 
6151
+ #: extensions/external-db/classes/ExternalStorageTab.php:114
6152
+ msgid "Note:"
6153
  msgstr ""
6154
 
6155
+ #: extensions/external-db/classes/ExternalStorageTab.php:121, extensions/external-db/classes/Settings.php:798
6156
+ msgid "Cancel migration"
6157
  msgstr ""
6158
 
6159
+ #: extensions/external-db/classes/ExternalStorageTab.php:118
6160
+ msgid "Migration cancellation is pending. It will be cancelled next time the associated background task runs."
6161
  msgstr ""
6162
 
6163
+ #: extensions/external-db/classes/ExternalStorageTab.php:145
6164
+ msgid "Plugin is using local storage for activity logs at the moment."
6165
  msgstr ""
6166
 
6167
+ #: extensions/external-db/classes/ExternalStorageTab.php:148
6168
+ msgid "Switch to external database"
6169
  msgstr ""
6170
 
6171
+ #: extensions/external-db/classes/ExternalStorageTab.php:135
6172
+ msgid "Plugin is using external storage for activity logs at the moment."
6173
  msgstr ""
6174
 
6175
+ #: extensions/external-db/classes/ExternalStorageTab.php:138
6176
+ msgid "Switch to local database"
6177
  msgstr ""
6178
 
6179
+ #: extensions/external-db/classes/ExternalStorageTab.php:142, extensions/external-db/classes/Settings.php:400
6180
+ msgid "Test Connection"
6181
  msgstr ""
6182
 
6183
+ #: extensions/external-db/classes/ExternalStorageTab.php:172
6184
+ msgid "Switch to local storage"
6185
  msgstr ""
6186
 
6187
+ #: extensions/external-db/classes/ExternalStorageTab.php:173
6188
+ msgid "Do you want to change the plugin settings to start using the local database for storing the logs?"
6189
  msgstr ""
6190
 
6191
+ #: extensions/external-db/classes/ExternalStorageTab.php:178, extensions/external-db/classes/ExternalStorageTab.php:206, extensions/external-db/classes/Settings.php:812
6192
+ msgid "Switch connection"
6193
  msgstr ""
6194
 
6195
+ #: extensions/external-db/classes/ExternalStorageTab.php:188
6196
+ msgid "Select connection for external storage"
6197
  msgstr ""
6198
 
6199
+ #: extensions/external-db/classes/ExternalStorageTab.php:196, extensions/external-db/classes/Mirroring.php:367, extensions/external-db/classes/Settings.php:333
6200
+ msgid "Connection"
6201
  msgstr ""
6202
 
6203
+ #: extensions/external-db/classes/ExternalStorageTab.php:213
6204
+ msgid "Activity log events in the external (source) database"
6205
  msgstr ""
6206
 
6207
+ #: extensions/external-db/classes/ExternalStorageTab.php:213
6208
+ msgid "Activity log events in the local (source) database"
6209
  msgstr ""
6210
 
6211
+ #: extensions/external-db/classes/ExternalStorageTab.php:214
6212
+ msgid "Would you like to move these events to the local database or delete them and start afresh?"
6213
  msgstr ""
6214
 
6215
+ #: extensions/external-db/classes/ExternalStorageTab.php:214
6216
+ msgid "Would you like to move these events to the external database or delete them and start afresh?"
6217
  msgstr ""
6218
 
6219
+ #: extensions/external-db/classes/ExternalStorageTab.php:220
6220
+ msgid "There are activity log events in the source database."
6221
  msgstr ""
6222
 
6223
+ #: extensions/external-db/classes/ExternalStorageTab.php:224
6224
+ msgid "Migrate existing events"
6225
  msgstr ""
6226
 
6227
+ #: extensions/external-db/classes/ExternalStorageTab.php:226
6228
+ msgid "Delete existing events"
6229
  msgstr ""
6230
 
6231
+ #: extensions/external-db/classes/ExternalStorageTab.php:236
6232
+ msgid "Current"
6233
  msgstr ""
6234
 
6235
+ #: extensions/external-db/classes/ExternalStorageTab.php:249
6236
+ msgid "Currently connected to database %1$s on server %2$s"
6237
  msgstr ""
6238
 
6239
+ #: extensions/external-db/classes/MigrationCancellation.php:41, extensions/external-db/classes/StorageSwitch.php:138
6240
+ msgid "Insecure request."
6241
  msgstr ""
6242
 
6243
+ #: extensions/external-db/classes/MigrationCancellation.php:47
6244
+ msgid "Migration has already finished or it was cancelled."
6245
  msgstr ""
6246
 
6247
+ #: extensions/external-db/classes/MigrationCancellation.php:60
6248
+ msgid "Migration will be cancelled shortly"
6249
  msgstr ""
6250
 
6251
+ #. translators: A string wrapped in a link saying activity log mirroring.
6252
+ #: extensions/external-db/classes/Mirroring.php:75
6253
+ msgid "In this section you can configure the mirroring of the WordPress activity log to third party services. You can mirror the activity logs to multiple third party services at the same time. For more information on mirroring and the supported third party services refer to %s."
6254
  msgstr ""
6255
 
6256
+ #: extensions/external-db/classes/Mirroring.php:79
6257
+ msgid "activity log mirroring"
6258
  msgstr ""
6259
 
6260
+ #: extensions/external-db/classes/Mirroring.php:84
6261
+ msgid "Setup an Activity Log Mirror"
6262
  msgstr ""
6263
 
6264
+ #: extensions/external-db/classes/Mirroring.php:87
6265
+ msgid "The WordPress activity log is currently being mirrored to:"
 
 
6266
  msgstr ""
6267
 
6268
+ #: extensions/external-db/classes/Mirroring.php:101
6269
+ msgid "No mirrors so far."
6270
  msgstr ""
6271
 
6272
+ #: extensions/external-db/classes/Mirroring.php:137, extensions/external-db/classes/Mirroring.php:141
6273
+ msgid "Write activity log to database"
6274
  msgstr ""
6275
 
6276
+ #: extensions/external-db/classes/Mirroring.php:138
6277
+ msgid "When you mirror the activity log to a third party service, the plugin still keeps a copy of the activity log in the WordPress or external database (depending on what you have configured). Switch off the below setting so no copy of the activity log is written to the database."
6278
  msgstr ""
6279
 
6280
+ #: extensions/external-db/classes/Mirroring.php:154, extensions/external-db/classes/Settings.php:550
6281
+ msgid "Current status:"
6282
  msgstr ""
6283
 
6284
+ #: extensions/external-db/classes/Mirroring.php:170
6285
+ msgid "Failed :("
6286
  msgstr ""
6287
 
6288
+ #: extensions/external-db/classes/Mirroring.php:185, extensions/external-db/classes/Mirroring.php:849
6289
+ msgid "Enabling"
6290
  msgstr ""
6291
 
6292
+ #: extensions/external-db/classes/Mirroring.php:185
6293
+ msgid "Disabling"
6294
  msgstr ""
6295
 
6296
+ #: extensions/external-db/classes/Mirroring.php:249
6297
+ msgid "Step 1"
6298
  msgstr ""
6299
 
6300
+ #: extensions/external-db/classes/Mirroring.php:250
6301
+ msgid "Step 2"
6302
  msgstr ""
6303
 
6304
+ #: extensions/external-db/classes/Mirroring.php:251
6305
+ msgid "Step 3"
6306
  msgstr ""
6307
 
6308
+ #: extensions/external-db/classes/Mirroring.php:259
6309
+ msgid "Select the connection where to mirror to the activity log"
6310
  msgstr ""
6311
 
6312
+ #: extensions/external-db/classes/Mirroring.php:260, extensions/external-db/classes/Mirroring.php:317
6313
+ msgid "Please specify a friendly name for the mirroring connection. Connection names can be 25 characters long, and can only contain letters, numbers and underscores."
6314
  msgstr ""
6315
 
6316
+ #: extensions/external-db/classes/Mirroring.php:262, extensions/external-db/classes/Mirroring.php:319
6317
+ msgid "This identifier will be used as the source in the logs, so you can easily identify which are the logs being mirrored from this website."
6318
  msgstr ""
6319
 
6320
+ #: extensions/external-db/classes/Mirroring.php:264
6321
+ msgid "Select one of the connections you have configured to where you want to mirror the activity log."
6322
  msgstr ""
6323
 
6324
+ #: extensions/external-db/classes/Mirroring.php:268
6325
+ msgid "Start once configured?"
6326
  msgstr ""
6327
 
6328
+ #: extensions/external-db/classes/Mirroring.php:271
6329
+ msgid "Tick this checkbox to enable the mirror and start sending data once set up."
6330
  msgstr ""
6331
 
6332
+ #: extensions/external-db/classes/Mirroring.php:275
6333
+ msgid "Configure mirror filtering"
6334
  msgstr ""
6335
 
6336
+ #: extensions/external-db/classes/Mirroring.php:276
6337
+ msgid "Configure any filtering you’d like to apply to this mirroring connection:"
6338
  msgstr ""
6339
 
6340
+ #: extensions/external-db/classes/Mirroring.php:282, extensions/external-db/classes/Mirroring.php:325
6341
+ msgid "Save Mirror"
6342
  msgstr ""
6343
 
6344
+ #: extensions/external-db/classes/Mirroring.php:301
6345
+ msgid "No mirror name specified!"
6346
  msgstr ""
6347
 
6348
+ #: extensions/external-db/classes/Mirroring.php:309
6349
+ msgid "Configure Mirror "
6350
  msgstr ""
6351
 
6352
+ #: extensions/external-db/classes/Mirroring.php:320
6353
+ msgid "Configure the mirror"
6354
  msgstr ""
6355
 
6356
+ #: extensions/external-db/classes/Mirroring.php:321
6357
+ msgid "Configure the mirror details."
6358
  msgstr ""
6359
 
6360
+ #: extensions/external-db/classes/Mirroring.php:410
6361
+ msgid "Mirror Events"
6362
  msgstr ""
6363
 
6364
+ #: extensions/external-db/classes/Mirroring.php:414
6365
+ msgid "Exclude/Include events by ID"
6366
  msgstr ""
6367
 
6368
+ #: extensions/external-db/classes/Mirroring.php:428
6369
+ msgid "Send all events"
6370
  msgstr ""
6371
 
6372
+ #: extensions/external-db/classes/Mirroring.php:433
6373
+ msgid "Only send events with these IDs:"
6374
  msgstr ""
6375
 
6376
+ #: extensions/external-db/classes/Mirroring.php:466
6377
+ msgid "Send all events BUT NOT those with these IDs:"
6378
  msgstr ""
6379
 
6380
+ #. translators: Events and Event IDs hyperlink.
6381
+ #: extensions/external-db/classes/Mirroring.php:499
6382
+ msgid "Refer to the %s for more information."
6383
  msgstr ""
6384
 
6385
+ #: extensions/external-db/classes/Mirroring.php:499
6386
+ msgid "list of events and events IDs"
6387
  msgstr ""
6388
 
6389
+ #: extensions/external-db/classes/Mirroring.php:504
6390
+ msgid "Exclude/Include severities"
6391
  msgstr ""
6392
 
6393
+ #: extensions/external-db/classes/Mirroring.php:506
6394
+ msgid "Should mirror these severities:"
6395
  msgstr ""
6396
 
6397
+ #: extensions/external-db/classes/Mirroring.php:378, extensions/external-db/classes/Settings.php:736
6398
+ msgid "Select a connection"
6399
  msgstr ""
6400
 
6401
+ #: extensions/external-db/classes/Mirroring.php:355
6402
+ msgid "Mirror identifier in logs"
6403
  msgstr ""
6404
 
6405
+ #: extensions/external-db/classes/Mirroring.php:359
6406
+ msgid "* Invalid mirror identifier"
6407
  msgstr ""
6408
 
6409
+ #: extensions/external-db/classes/Mirroring.php:343
6410
+ msgid "Mirror connection friendly name"
6411
  msgstr ""
6412
 
6413
+ #: extensions/external-db/classes/Mirroring.php:347
6414
+ msgid "* Invalid Mirror Name"
6415
  msgstr ""
6416
 
6417
+ #: extensions/external-db/classes/Mirroring.php:592
6418
+ msgid "Mirroring Wizard"
6419
  msgstr ""
6420
 
6421
+ #: extensions/external-db/classes/Mirroring.php:595
6422
+ msgid "Enabling..."
6423
  msgstr ""
6424
 
6425
+ #: extensions/external-db/classes/Mirroring.php:596
6426
+ msgid "Disabling..."
6427
  msgstr ""
6428
 
6429
+ #: extensions/external-db/classes/Mirroring.php:599
6430
+ msgid "Running..."
6431
  msgstr ""
6432
 
6433
+ #: extensions/external-db/classes/Mirroring.php:600
6434
+ msgid "Mirror Complete!"
6435
  msgstr ""
6436
 
6437
+ #: extensions/external-db/classes/Mirroring.php:601
6438
+ msgid "Failed!"
6439
  msgstr ""
6440
 
6441
+ #: extensions/external-db/classes/Mirroring.php:603
6442
+ msgid "Are you sure that you want to delete this mirror?"
6443
  msgstr ""
6444
 
6445
+ #: extensions/external-db/classes/Mirroring.php:604, extensions/reports/inc/wsal-reporting-view.inc.php:1131
6446
+ msgid "Select Event Code(s)"
6447
  msgstr ""
6448
 
6449
+ #: extensions/external-db/classes/Mirroring.php:605
6450
+ msgid "Select Severity Levels"
6451
  msgstr ""
6452
 
6453
+ #: extensions/external-db/classes/Mirroring.php:606
6454
+ msgid "Configure and create connection"
6455
  msgstr ""
6456
 
6457
+ #: extensions/external-db/classes/Mirroring.php:666, extensions/external-db/classes/Settings.php:113
6458
+ msgid "Mirroring"
6459
  msgstr ""
6460
 
6461
+ #: extensions/external-db/classes/Mirroring.php:728
6462
+ msgid "Mirror not found."
6463
  msgstr ""
6464
 
6465
+ #: extensions/external-db/classes/Mirroring.php:817
6466
+ msgid "The plugin is not saving the activity log to the database."
6467
  msgstr ""
6468
 
6469
+ #: extensions/external-db/classes/Mirroring.php:819
6470
+ msgid "The plugin is currently configured to not save the activity log to the database. It is only mirroring the activity log to third party services. The activity log you see below is a record of what happened until writing to the database was disabled. If you would like the plugin to start saving a copy of the activity log to the database again click the below button."
6471
  msgstr ""
6472
 
6473
+ #: extensions/external-db/classes/Mirroring.php:822
6474
+ msgid "Important"
6475
  msgstr ""
6476
 
6477
+ #: extensions/external-db/classes/Mirroring.php:823
6478
+ msgid "The activity log data that was generated when writing to the database was disabled, will not be available in the event viewer."
6479
  msgstr ""
6480
 
6481
+ #: extensions/external-db/classes/Mirroring.php:827
6482
+ msgid "Re-enable writing of activity log to the database"
6483
  msgstr ""
6484
 
6485
+ #: extensions/external-db/classes/Mirroring.php:837
6486
+ msgid "Try again later..."
6487
  msgstr ""
6488
 
6489
+ #: extensions/external-db/classes/Mirroring.php:865
6490
+ msgid "Database logging enabled!"
6491
  msgstr ""
6492
 
6493
+ #: extensions/external-db/classes/Settings.php:107, extensions/external-db/classes/Settings.php:476
6494
+ msgid "Archiving"
6495
  msgstr ""
6496
 
6497
+ #: extensions/external-db/classes/Settings.php:157
6498
+ msgid "Integrations - external databases & third party services configuration"
6499
  msgstr ""
6500
 
6501
+ #: extensions/external-db/classes/Settings.php:171
6502
+ msgid "Integrations"
6503
  msgstr ""
6504
 
6505
+ #: extensions/external-db/classes/Settings.php:259
6506
+ msgid "Please do not close this window while migrating events."
6507
  msgstr ""
6508
 
6509
+ #: extensions/external-db/classes/Settings.php:321
6510
+ msgid "archiving activity log data"
6511
  msgstr ""
6512
 
6513
+ #: extensions/external-db/classes/Settings.php:325
6514
+ msgid "In this section you can configure the archiving of old events to an archive database. Archives events can still be accessed and are included in search results and reports."
6515
  msgstr ""
6516
 
6517
+ #: extensions/external-db/classes/Settings.php:331
6518
+ msgid "Archive the WordPress Activity Log to this Database"
6519
  msgstr ""
6520
 
6521
+ #: extensions/external-db/classes/Settings.php:342
6522
+ msgid "Archive events that are older than"
6523
  msgstr ""
6524
 
6525
+ #: extensions/external-db/classes/Settings.php:344
6526
+ msgid "Archiving Options"
6527
  msgstr ""
6528
 
6529
+ #: extensions/external-db/classes/Settings.php:358
6530
+ msgid "Archive events older than"
6531
  msgstr ""
6532
 
6533
+ #: extensions/external-db/classes/Settings.php:362
6534
+ msgid "months"
6535
  msgstr ""
6536
 
6537
+ #: extensions/external-db/classes/Settings.php:365
6538
+ msgid "years"
6539
  msgstr ""
6540
 
6541
+ #: extensions/external-db/classes/Settings.php:371
6542
+ msgid "The configured archiving options will override the Security Events Pruning settings configured in the plugin’s settings."
6543
  msgstr ""
6544
 
6545
+ #: extensions/external-db/classes/Settings.php:377
6546
+ msgid "WordPress Activity Log Data Retention"
6547
  msgstr ""
6548
 
6549
+ #: extensions/external-db/classes/Settings.php:378
6550
+ msgid "Once you configure archiving these data retention settings will be used instead of the ones configured in the plugin's general settings."
6551
  msgstr ""
6552
 
6553
+ #: extensions/external-db/classes/Settings.php:401
6554
+ msgid "Execute Archiving Now"
6555
  msgstr ""
6556
 
6557
+ #: extensions/external-db/classes/Settings.php:404
6558
+ msgid "Reset Archiving Settings"
6559
  msgstr ""
6560
 
6561
+ #: extensions/external-db/classes/Settings.php:405
6562
+ msgid "Click the button below to disable archiving and reset the settings to no archiving. Note that the archived data will not be deleted."
6563
  msgstr ""
6564
 
6565
+ #: extensions/external-db/classes/Settings.php:406
6566
+ msgid "Disable Archiving & Reset Settings"
6567
  msgstr ""
6568
 
6569
+ #: extensions/external-db/classes/Settings.php:508
6570
+ msgid "Run the Archiving Process Every"
6571
  msgstr ""
6572
 
6573
+ #: extensions/external-db/classes/Settings.php:519
6574
+ msgid "15 minutes"
6575
  msgstr ""
6576
 
6577
+ #: extensions/external-db/classes/Settings.php:522
6578
+ msgid "1 hour"
6579
  msgstr ""
6580
 
6581
+ #: extensions/external-db/classes/Settings.php:525
6582
+ msgid "6 hours"
6583
  msgstr ""
6584
 
6585
+ #: extensions/external-db/classes/Settings.php:528
6586
+ msgid "12 hours"
6587
  msgstr ""
6588
 
6589
+ #: extensions/external-db/classes/Settings.php:531
6590
+ msgid "24 hours"
6591
  msgstr ""
6592
 
6593
+ #: extensions/external-db/classes/Settings.php:537
6594
+ msgid "Stop Archiving"
6595
  msgstr ""
6596
 
6597
+ #: extensions/external-db/classes/Settings.php:564
6598
+ msgid "Running"
6599
  msgstr ""
6600
 
6601
+ #: extensions/external-db/classes/Settings.php:627
6602
+ msgid "Attention!"
6603
  msgstr ""
6604
 
6605
+ #. translators: %1$s: Alerts Pruning Period, %2$s: Alerts Archiving Period
6606
+ #: extensions/external-db/classes/Settings.php:631
6607
+ msgid "The activity log retention setting is configured to delete events older than %1$s. This period should be longer than the configured %2$s archiving period otherwise events will be deleted and not archived."
6608
  msgstr ""
6609
 
6610
+ #: extensions/external-db/classes/Settings.php:683, extensions/external-db/classes/Settings.php:694
6611
+ msgid "No connection found."
6612
  msgstr ""
6613
 
6614
+ #: extensions/external-db/classes/Settings.php:706
6615
+ msgid "Successfully connected to database."
6616
  msgstr ""
6617
 
6618
+ #: extensions/external-db/classes/Settings.php:796
6619
+ msgid "Archiving complete!"
6620
  msgstr ""
6621
 
6622
+ #: extensions/external-db/classes/Settings.php:797
6623
+ msgid "Archiving..."
6624
  msgstr ""
6625
 
6626
+ #: extensions/external-db/classes/Settings.php:799
6627
+ msgid "Continue..."
6628
  msgstr ""
6629
 
6630
+ #: extensions/external-db/classes/Settings.php:801
6631
+ msgid "Connected!"
6632
  msgstr ""
6633
 
6634
+ #: extensions/external-db/classes/Settings.php:802
6635
+ msgid "Done!"
6636
  msgstr ""
6637
 
6638
+ #. translators: %d: Number of events.
6639
+ #: extensions/external-db/classes/Settings.php:804
6640
+ msgid " So far %d events have been migrated."
6641
  msgstr ""
6642
 
6643
+ #: extensions/external-db/classes/Settings.php:805
6644
+ msgid "Migration complete"
6645
  msgstr ""
6646
 
6647
+ #: extensions/external-db/classes/Settings.php:806
6648
+ msgid "WordPress security events successfully migrated to the external database."
6649
  msgstr ""
6650
 
6651
+ #: extensions/external-db/classes/Settings.php:807
6652
+ msgid "No events to migrate."
6653
  msgstr ""
6654
 
6655
+ #: extensions/external-db/classes/Settings.php:808
6656
+ msgid "Resetting failed!"
6657
  msgstr ""
6658
 
6659
+ #: extensions/external-db/classes/Settings.php:809
6660
+ msgid "Resetting..."
6661
  msgstr ""
6662
 
6663
+ #: extensions/external-db/classes/Settings.php:810
6664
+ msgid "WordPress security events successfully migrated to WordPress database."
6665
  msgstr ""
6666
 
6667
+ #: extensions/external-db/classes/Settings.php:811
6668
+ msgid "Please select connection to be used for external storage."
6669
  msgstr ""
6670
 
6671
+ #: extensions/external-db/classes/Settings.php:814
6672
+ msgid "Working..."
6673
  msgstr ""
6674
 
6675
+ #: extensions/external-db/classes/Settings.php:873
6676
+ msgid "Bad request. Target state attribute is missing."
6677
  msgstr ""
6678
 
6679
+ #: extensions/external-db/classes/StorageSwitch.php:73
6680
+ msgid "The migration of the activity log data from the local database to the external database has started."
6681
  msgstr ""
6682
 
6683
+ #: extensions/external-db/classes/StorageSwitch.php:73
6684
+ msgid "The migration of the activity log data from the external database to the local database has started."
6685
  msgstr ""
6686
 
6687
+ #: extensions/external-db/classes/StorageSwitch.php:75
6688
+ msgid "Click %s to close this prompt and see the progress."
6689
+ msgstr ""
6690
+
6691
+ #: extensions/external-db/classes/StorageSwitch.php:76
6692
+ msgid "Continue"
6693
  msgstr ""
6694
 
6695
+ #: extensions/external-db/classes/StorageSwitch.php:79
6696
+ msgid "Activity log migration has started"
6697
  msgstr ""
6698
 
6699
+ #: extensions/external-db/classes/StorageSwitch.php:109
6700
+ msgid "Plugin found non-empty tables in the target database."
6701
  msgstr ""
6702
 
6703
+ #: extensions/external-db/classes/StorageSwitch.php:110
6704
+ msgid "Please contact the support or empty the tables manually and try again."
6705
  msgstr ""
6706
 
6707
+ #: extensions/external-db/classes/StorageSwitchToExternal.php:39
6708
+ msgid "Connection name parameter is missing."
6709
  msgstr ""
6710
 
6711
+ #: extensions/external-db/classes/StorageSwitchToExternal.php:64
6712
+ msgid "Connection %s not found."
6713
  msgstr ""
6714
 
6715
+ #: extensions/external-db/classes/StorageSwitchToExternal.php:81
6716
+ msgid "Plugin already uses an external storage."
6717
  msgstr ""
6718
 
6719
+ #: extensions/external-db/classes/StorageSwitchToExternal.php:97, extensions/external-db/classes/StorageSwitchToLocal.php:39
6720
+ msgid "Activity log events deleted from local database"
6721
  msgstr ""
6722
 
6723
+ #: extensions/external-db/classes/StorageSwitchToExternal.php:99
6724
+ msgid "The plugin has successfully deleted the activity log events from the local database. Now the plugin is connected and will save the activity log events using the external database connection %s."
6725
  msgstr ""
6726
 
6727
+ #: extensions/external-db/classes/StorageSwitchToExternal.php:125
6728
+ msgid "Switched to external database"
6729
  msgstr ""
6730
 
6731
+ #: extensions/external-db/classes/StorageSwitchToExternal.php:127
6732
+ msgid "Plugin is now connected to an external database %s."
6733
  msgstr ""
6734
 
6735
+ #: extensions/external-db/classes/StorageSwitchToExternal.php:144
6736
+ msgid "Cannot connect to the selected database connection."
6737
  msgstr ""
6738
 
6739
+ #: extensions/external-db/classes/StorageSwitchToLocal.php:40
6740
+ msgid "The plugin has successfully deleted the activity log events from the external database. Now the plugin is connected and will save the activity log events using the local database."
6741
  msgstr ""
6742
 
6743
+ #: extensions/external-db/classes/StorageSwitchToLocal.php:70
6744
+ msgid "Switched to local database"
6745
  msgstr ""
6746
 
6747
+ #: extensions/external-db/classes/StorageSwitchToLocal.php:71
6748
+ msgid "Plugin is now connected to the local database."
6749
  msgstr ""
6750
 
6751
+ #: extensions/reports/classes/Common.php:698, extensions/reports/classes/Common.php:1267
6752
+ msgid "%1$s - Website %2$s"
6753
  msgstr ""
6754
 
6755
+ #: extensions/reports/classes/Common.php:701, extensions/reports/classes/Common.php:1270
6756
+ msgid "Week number %1$s - Website %2$s"
6757
  msgstr ""
6758
 
6759
+ #: extensions/reports/classes/Common.php:704, extensions/reports/classes/Common.php:1273
6760
+ msgid "Month %1$s %2$s- Website %3$s"
6761
  msgstr ""
6762
 
6763
+ #: extensions/reports/classes/Common.php:707, extensions/reports/classes/Common.php:1276
6764
+ msgid "Quarter %1$s - Website %2$s"
6765
  msgstr ""
6766
 
6767
+ #: extensions/reports/classes/Common.php:716, extensions/reports/classes/Common.php:1291
6768
+ msgid " - %s Email Report"
6769
  msgstr ""
6770
 
6771
+ #: extensions/reports/classes/Common.php:933, extensions/reports/classes/Common.php:927
6772
+ msgid "Internal error. <code>%s</code> key was not found."
6773
  msgstr ""
6774
 
6775
+ #: extensions/reports/classes/Common.php:955, extensions/reports/classes/Common.php:1096
6776
+ msgid "Please specify at least one Alert Group or specify an Alert Code."
6777
  msgstr ""
6778
 
6779
+ #: extensions/reports/classes/Common.php:963
6780
+ msgid "Internal Error: Could not detect the type of the report to generate."
6781
  msgstr ""
6782
 
6783
+ #: extensions/reports/classes/Common.php:988, extensions/reports/classes/Common.php:1024, extensions/reports/classes/Common.php:1382, extensions/reports/classes/Common.php:1401, extensions/reports/classes/Common.php:1581
6784
+ msgid "There are no alerts that match your filtering criteria. Please try a different set of rules."
6785
  msgstr ""
6786
 
6787
+ #: extensions/reports/classes/Common.php:1067
6788
+ msgid "Internal Error. Could not retrieve the alerts from the main plugin."
6789
  msgstr ""
6790
 
6791
+ #: extensions/reports/classes/Common.php:1385, extensions/reports/classes/Common.php:1404, extensions/reports/classes/Common.php:1584
6792
+ msgid "Error: The <strong>%s</strong> path is not accessible."
6793
  msgstr ""
6794
 
6795
+ #: extensions/reports/classes/CsvReportGenerator.php:76
6796
+ msgid "Blog Name"
6797
  msgstr ""
6798
 
6799
+ #: extensions/reports/classes/CsvReportGenerator.php:83, extensions/reports/classes/HtmlReportGenerator.php:247, extensions/user-sessions/classes/View/Sessions.php:147
6800
+ msgid "Source IP"
6801
  msgstr ""
6802
 
6803
+ #: extensions/reports/classes/CsvReportGenerator.php:84, extensions/reports/classes/HtmlReportGenerator.php:248
6804
+ msgid "Object Type"
6805
  msgstr ""
6806
 
6807
+ #: extensions/reports/classes/CsvReportGenerator.php:87
6808
+ msgid "Metadata"
6809
  msgstr ""
6810
 
6811
+ #: extensions/reports/classes/CsvReportGenerator.php:88
6812
+ msgid "Links"
6813
  msgstr ""
6814
 
6815
+ #: extensions/reports/classes/CsvReportGenerator.php:67, extensions/reports/classes/HtmlReportGenerator.php:223
6816
+ msgid "Logins"
6817
  msgstr ""
6818
 
6819
+ #: extensions/reports/classes/CsvReportGenerator.php:198, extensions/reports/classes/HtmlReportGenerator.php:359
6820
+ msgid "Display name"
6821
  msgstr ""
6822
 
6823
+ #: extensions/reports/classes/CsvReportGenerator.php:199, extensions/reports/classes/HtmlReportGenerator.php:360
6824
+ msgid "Unique IP"
6825
  msgstr ""
6826
 
6827
+ #: extensions/reports/classes/CsvReportGenerator.php:200, extensions/reports/classes/HtmlReportGenerator.php:361
6828
+ msgid "List of IP addresses"
6829
  msgstr ""
6830
 
6831
+ #: extensions/reports/classes/CsvReportGenerator.php:255, extensions/reports/classes/HtmlReportGenerator.php:394
6832
+ msgid "Number of Logins"
6833
  msgstr ""
6834
 
6835
+ #: extensions/reports/classes/CsvReportGenerator.php:264, extensions/reports/classes/HtmlReportGenerator.php:412
6836
+ msgid "Views"
6837
  msgstr ""
6838
 
6839
+ #: extensions/reports/classes/HtmlReportGenerator.php:79, extensions/reports/classes/HtmlReportGenerator.php:327
6840
+ msgid "WP Activity Log Reporter"
6841
  msgstr ""
6842
 
6843
+ #: extensions/reports/classes/HtmlReportGenerator.php:112
6844
+ msgid "Report from"
6845
  msgstr ""
6846
 
6847
+ #: extensions/reports/classes/HtmlReportGenerator.php:112
6848
+ msgid "website"
6849
  msgstr ""
6850
 
6851
+ #: extensions/reports/classes/HtmlReportGenerator.php:119, extensions/reports/classes/HtmlReportGenerator.php:336
6852
+ msgid "Report Details:"
6853
  msgstr ""
6854
 
6855
+ #: extensions/reports/classes/HtmlReportGenerator.php:120, extensions/reports/classes/HtmlReportGenerator.php:337
6856
+ msgid "Generated on:"
6857
  msgstr ""
6858
 
6859
+ #: extensions/reports/classes/HtmlReportGenerator.php:121, extensions/reports/classes/HtmlReportGenerator.php:338
6860
+ msgid "Generated by:"
6861
  msgstr ""
6862
 
6863
+ #: extensions/reports/classes/HtmlReportGenerator.php:127
6864
+ msgid "Site(s)"
6865
  msgstr ""
6866
 
6867
+ #: extensions/reports/classes/HtmlReportGenerator.php:128
6868
+ msgid "User(s)"
6869
  msgstr ""
6870
 
6871
+ #: extensions/reports/classes/HtmlReportGenerator.php:129
6872
+ msgid "Role(s)"
6873
  msgstr ""
6874
 
6875
+ #: extensions/reports/classes/HtmlReportGenerator.php:131
6876
+ msgid "Alert Groups"
6877
  msgstr ""
6878
 
6879
+ #: extensions/reports/classes/HtmlReportGenerator.php:132, extensions/reports/classes/HtmlReportGenerator.php:342
6880
+ msgid "Alert Code(s)"
6881
  msgstr ""
6882
 
6883
+ #: extensions/reports/classes/HtmlReportGenerator.php:133, extensions/reports/classes/HtmlReportGenerator.php:343
6884
+ msgid "Start date"
6885
  msgstr ""
6886
 
6887
+ #: extensions/reports/classes/HtmlReportGenerator.php:134, extensions/reports/classes/HtmlReportGenerator.php:344
6888
+ msgid "End date"
6889
  msgstr ""
6890
 
6891
+ #: extensions/reports/classes/HtmlReportGenerator.php:135
6892
+ msgid "Post Types"
6893
  msgstr ""
6894
 
6895
+ #: extensions/reports/classes/HtmlReportGenerator.php:136, extensions/reports/inc/wsal-reporting-view.inc.php:912, extensions/search/classes/FilterManager.php:495, extensions/search/classes/Filters/poststatusfilter.php:47, extensions/search/classes/Filters/poststatusfilter.php:82
6896
+ msgid "Post Status"
6897
  msgstr ""
6898
 
6899
+ #: extensions/reports/classes/HtmlReportGenerator.php:145, extensions/reports/classes/HtmlReportGenerator.php:313
6900
+ msgid "From the beginning"
6901
  msgstr ""
6902
 
6903
+ #: extensions/reports/classes/HtmlReportGenerator.php:190, extensions/reports/classes/HtmlReportGenerator.php:339
6904
+ msgid "Criteria"
6905
  msgstr ""
6906
 
6907
+ #: extensions/reports/classes/HtmlReportGenerator.php:330
6908
+ msgid "Report generated with"
6909
  msgstr ""
6910
 
6911
+ #: extensions/reports/classes/HtmlReportGenerator.php:333
6912
+ msgid "WordPress Plugin"
6913
  msgstr ""
6914
 
6915
+ #: extensions/reports/classes/HtmlReportGenerator.php:347
6916
+ msgid "List of unique IP addresses used by the same user"
6917
  msgstr ""
6918
 
6919
+ #: extensions/reports/classes/HtmlReportGenerator.php:355
6920
+ msgid "Results"
6921
  msgstr ""
6922
 
6923
+ #: extensions/reports/classes/HtmlReportGenerator.php:511
6924
+ msgid "TOTAL"
6925
  msgstr ""
6926
 
6927
+ #: extensions/reports/classes/HtmlReportGenerator.php:531, extensions/reports/inc/wsal-reporting-view.inc.php:898
6928
+ msgid "Posts"
6929
  msgstr ""
6930
 
6931
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:195
6932
+ msgid "Invalid Request. Please refresh the page and try again."
6933
  msgstr ""
6934
 
6935
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:216, extensions/reports/inc/wsal-reporting-view.inc.php:208
6936
+ msgid "Error (TODO - error message): Please select SITES"
6937
  msgstr ""
6938
 
6939
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:268, extensions/reports/inc/wsal-reporting-view.inc.php:237
6940
+ msgid "Error (TODO - error message): Please select USERS"
6941
  msgstr ""
6942
 
6943
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:347, extensions/reports/inc/wsal-reporting-view.inc.php:311
6944
+ msgid "Error: Please select at least one role"
6945
  msgstr ""
6946
 
6947
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:403, extensions/reports/inc/wsal-reporting-view.inc.php:394
6948
+ msgid "Error: Please select at least one IP address"
6949
  msgstr ""
6950
 
6951
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:430, extensions/reports/inc/wsal-reporting-view.inc.php:421
6952
+ msgid "Error: Please select at least one object"
6953
  msgstr ""
6954
 
6955
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:456, extensions/reports/inc/wsal-reporting-view.inc.php:447
6956
+ msgid "Error: Please select at least one event object"
6957
  msgstr ""
6958
 
6959
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:541
6960
+ msgid "Please select the report format."
6961
  msgstr ""
6962
 
6963
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:600
6964
+ msgid "Periodic Report successfully saved."
6965
  msgstr ""
6966
 
6967
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:563, extensions/reports/inc/wsal-reporting-view.inc.php:619
6968
+ msgid "Loading"
6969
  msgstr ""
6970
 
6971
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:564, extensions/reports/inc/wsal-reporting-view.inc.php:620
6972
+ msgid " Generating report. Please do not close this window."
6973
  msgstr ""
6974
 
6975
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:568, extensions/reports/inc/wsal-reporting-view.inc.php:624
6976
+ msgid "Searching events, "
6977
  msgstr ""
6978
 
6979
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:568, extensions/reports/inc/wsal-reporting-view.inc.php:624
6980
+ msgid " currently found."
6981
  msgstr ""
6982
 
6983
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:646
6984
+ msgid "Periodic Report successfully Deleted."
6985
  msgstr ""
6986
 
6987
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:677
6988
+ msgid "Generate & Configure Periodic Reports"
6989
  msgstr ""
6990
 
6991
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:678
6992
+ msgid "Statistics Reports"
6993
  msgstr ""
6994
 
6995
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:698
6996
+ msgid "Generate a report"
 
 
 
 
 
6997
  msgstr ""
6998
 
6999
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:701
7000
+ msgid "Step 1: Select the type of report"
 
 
 
 
 
7001
  msgstr ""
7002
 
7003
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:707
7004
+ msgid "By Site(s)"
7005
  msgstr ""
7006
 
7007
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:715
7008
+ msgid "These specific sites"
7009
  msgstr ""
7010
 
7011
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:720
7012
+ msgid "All sites except these"
7013
  msgstr ""
7014
 
7015
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:741
7016
+ msgid "By User(s)"
7017
  msgstr ""
7018
 
7019
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:745
7020
+ msgid "All Users"
7021
  msgstr ""
7022
 
7023
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:749
7024
+ msgid "These specific users"
7025
  msgstr ""
7026
 
7027
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:758
7028
+ msgid "All users except these"
7029
  msgstr ""
7030
 
7031
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:768
7032
+ 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."
7033
  msgstr ""
7034
 
7035
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:773
7036
+ msgid "Enable Autocomplete"
7037
  msgstr ""
7038
 
7039
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:782
7040
+ msgid "By Role(s)"
7041
  msgstr ""
7042
 
7043
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:786
7044
+ msgid "All Roles"
7045
  msgstr ""
7046
 
7047
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:790
7048
+ msgid "These specific roles"
7049
  msgstr ""
7050
 
7051
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:795
7052
+ msgid "All roles except these"
7053
  msgstr ""
7054
 
7055
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:803
7056
+ msgid "By IP Address(es)"
7057
  msgstr ""
7058
 
7059
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:807
7060
+ msgid "All IP Addresses"
7061
  msgstr ""
7062
 
7063
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:811
7064
+ msgid "These specific IP addresses"
7065
  msgstr ""
7066
 
7067
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:816
7068
+ msgid "All IP addresses except these"
7069
  msgstr ""
7070
 
7071
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:824
7072
+ msgid "By Object(s)"
7073
  msgstr ""
7074
 
7075
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:828
7076
+ msgid "All Objects"
7077
  msgstr ""
7078
 
7079
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:832
7080
+ msgid "These specific objects"
7081
  msgstr ""
7082
 
7083
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:837
7084
+ msgid "All objects except these"
7085
  msgstr ""
7086
 
7087
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:845
7088
+ msgid "By Event Type(s)"
7089
  msgstr ""
7090
 
7091
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:849
7092
+ msgid "All Event Types"
7093
  msgstr ""
7094
 
7095
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:853
7096
+ msgid "These specific event types"
7097
  msgstr ""
7098
 
7099
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:858
7100
+ msgid "All event types except these"
7101
  msgstr ""
7102
 
7103
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:866
7104
+ msgid "By Event Code(s)"
7105
  msgstr ""
7106
 
7107
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:904, extensions/search/classes/FilterManager.php:499, extensions/search/classes/Filters/posttypefilter.php:82
7108
+ msgid "Post Type"
7109
  msgstr ""
7110
 
7111
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:926
7112
+ msgid "Specify Event Codes"
7113
  msgstr ""
7114
 
7115
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:934
7116
+ msgid "By the Below Criteria"
7117
  msgstr ""
7118
 
7119
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:939
7120
+ msgid "Number & List of unique IP addresses per user"
7121
  msgstr ""
7122
 
7123
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:944
7124
+ msgid "Number of Logins per user"
7125
  msgstr ""
7126
 
7127
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:979
7128
+ msgid "Select site(s)"
7129
  msgstr ""
7130
 
7131
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1001
7132
+ msgid "Select user(s)"
7133
  msgstr ""
7134
 
7135
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1043
7136
+ msgid "Select role(s)"
7137
  msgstr ""
7138
 
7139
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1065
7140
+ msgid "Select IP address(es)"
7141
  msgstr ""
7142
 
7143
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1087
7144
+ msgid "Select Objects(s)"
7145
  msgstr ""
7146
 
7147
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1109
7148
+ msgid "Select Type(s)"
7149
  msgstr ""
7150
 
7151
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1161
7152
+ msgid "Select Post Type(s)"
7153
  msgstr ""
7154
 
7155
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1191
7156
+ msgid "Select Post Status(es)"
7157
  msgstr ""
7158
 
7159
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1494
7160
+ msgid "Step 2: Select the date range"
7161
  msgstr ""
7162
 
7163
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1496
7164
+ 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."
7165
  msgstr ""
7166
 
7167
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1501
7168
+ msgid "Start Date"
7169
  msgstr ""
7170
 
7171
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1504, extensions/reports/inc/wsal-reporting-view.inc.php:1643
7172
+ msgid "Select start date"
7173
  msgstr ""
7174
 
7175
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1510
7176
+ msgid "End Date"
7177
  msgstr ""
7178
 
7179
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1513, extensions/reports/inc/wsal-reporting-view.inc.php:1652
7180
+ msgid "Select end date"
7181
  msgstr ""
7182
 
7183
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1527, extensions/reports/inc/wsal-reporting-view.inc.php:1736
7184
+ msgid "Step 3: Select Report Format"
7185
  msgstr ""
7186
 
7187
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1534, extensions/reports/inc/wsal-reporting-view.inc.php:1742
7188
+ msgid "HTML"
7189
  msgstr ""
7190
 
7191
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1539, extensions/reports/inc/wsal-reporting-view.inc.php:1746
7192
+ msgid "CSV"
7193
  msgstr ""
7194
 
7195
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1546
7196
+ msgid "Step 4: Generate Report Now or Configure Periodic Reports"
7197
  msgstr ""
7198
 
7199
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1549
7200
+ msgid "Generate Report Now"
7201
  msgstr ""
7202
 
7203
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1552
7204
+ msgid " Use the buttons below to use the above criteria for a daily, weekly and monthly summary report which is sent automatically via email."
7205
  msgstr ""
7206
 
7207
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1555
7208
+ msgid "Email address(es)"
7209
  msgstr ""
7210
 
7211
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1561
7212
+ msgid "Report Name"
7213
  msgstr ""
7214
 
7215
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1567
7216
+ msgid "Frequency"
7217
  msgstr ""
7218
 
7219
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1569
7220
+ msgid "Daily"
7221
  msgstr ""
7222
 
7223
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1570
7224
+ msgid "Weekly"
7225
  msgstr ""
7226
 
7227
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1571
7228
+ msgid "Monthly"
7229
  msgstr ""
7230
 
7231
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1572
7232
+ msgid "Quarterly"
7233
  msgstr ""
7234
 
7235
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1585
7236
+ msgid "Configured Periodic Reports"
 
 
7237
  msgstr ""
7238
 
7239
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1588
7240
+ 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."
 
 
7241
  msgstr ""
7242
 
7243
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1591
7244
+ 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."
7245
  msgstr ""
7246
 
7247
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1636
7248
+ msgid "Step 1: Choose Date Range"
7249
  msgstr ""
7250
 
7251
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1665
7252
+ msgid "Step 2: Choose Criteria"
7253
  msgstr ""
7254
 
7255
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1668
7256
+ msgid "Report for"
7257
  msgstr ""
7258
 
7259
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1673
7260
+ msgid "Number of logins for user"
7261
  msgstr ""
7262
 
7263
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1678
7264
+ msgid "Number of logins for users with the role of"
7265
  msgstr ""
7266
 
7267
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1683
7268
+ msgid "Number of views for user"
7269
  msgstr ""
7270
 
7271
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1688
7272
+ msgid "Number of views for users with the role of"
7273
  msgstr ""
7274
 
7275
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1693
7276
+ msgid "Number of published content for user"
7277
  msgstr ""
7278
 
7279
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1698
7280
+ msgid "Number of published content for users with the role of"
7281
  msgstr ""
7282
 
7283
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1703
7284
+ msgid "Different IP addresses for Usernames"
7285
  msgstr ""
7286
 
7287
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1708
7288
+ msgid "List only IP addresses used during login"
 
7289
  msgstr ""
7290
 
7291
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1710
7292
+ 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."
7293
  msgstr ""
7294
 
7295
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1767, extensions/reports/inc/wsal-reporting-view.inc.php:1772
7296
+ msgid "Please specify at least one site"
7297
  msgstr ""
7298
 
7299
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1778, extensions/reports/inc/wsal-reporting-view.inc.php:1783
7300
+ msgid "Please specify at least one user"
7301
  msgstr ""
7302
 
7303
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1789, extensions/reports/inc/wsal-reporting-view.inc.php:1794
7304
+ msgid "Please specify at least one role"
7305
  msgstr ""
7306
 
7307
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1800, extensions/reports/inc/wsal-reporting-view.inc.php:1805
7308
+ msgid "Please specify at least one IP address"
7309
  msgstr ""
7310
 
7311
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1811, extensions/reports/inc/wsal-reporting-view.inc.php:1816
7312
+ msgid "Please specify at least one object"
7313
  msgstr ""
7314
 
7315
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1822, extensions/reports/inc/wsal-reporting-view.inc.php:1827
7316
+ msgid "Please specify at least one event type"
7317
  msgstr ""
7318
 
7319
+ #: extensions/reports/inc/wsal-reporting-view.inc.php:1835
7320
+ msgid "Please specify at least one Alert group or specify an Alert code"
7321
  msgstr ""
7322
 
7323
+ #: extensions/search/classes/FilterManager.php:211
7324
+ msgid "Refer to the <a href=\"https://wpactivitylog.com/support/kb/list-wordpress-activity-log-event-ids/\" target=\"_blank\">list of Event IDs</a> for reference."
7325
  msgstr ""
7326
 
7327
+ #: extensions/search/classes/FilterManager.php:375
7328
+ msgid "Do not show this message again"
7329
  msgstr ""
7330
 
7331
+ #: extensions/search/classes/FilterManager.php:376
7332
+ msgid "Dismiss this notice."
7333
  msgstr ""
7334
 
7335
+ #: extensions/search/classes/FilterManager.php:396
7336
+ msgid "Save Search & Filters"
7337
  msgstr ""
7338
 
7339
+ #: extensions/search/classes/FilterManager.php:401
7340
+ msgid "* Invalid Name"
7341
  msgstr ""
7342
 
7343
+ #: extensions/search/classes/FilterManager.php:403
7344
+ msgid "Name can only be 12 characters long and only letters, numbers and underscore are allowed."
7345
  msgstr ""
7346
 
7347
+ #: extensions/search/classes/FilterManager.php:406, extensions/user-sessions/classes/View/Settings.php:96, extensions/user-sessions/classes/View/Options/Policies.php:333
7348
+ msgid "Save"
7349
  msgstr ""
7350
 
7351
+ #: extensions/search/classes/FilterManager.php:427, extensions/search/classes/FilterManager.php:538
7352
+ msgid "Refer to the <a href=\"https://wpactivitylog.com/support/kb/list-wordpress-activity-log-event-ids/\" target=\"_blank\" rel=\"nofollow noopener\">list of Event IDs</a> for reference."
7353
  msgstr ""
7354
 
7355
+ #: extensions/search/classes/FilterManager.php:439
7356
+ msgid "Refer to the <a href=\"https://wpactivitylog.com/support/kb/list-wordpress-activity-log-event-ids/\" target=\"_blank\" rel=\"nofollow noopener\">metadata in the activity log</a> for reference."
7357
  msgstr ""
7358
 
7359
+ #: extensions/search/classes/FilterManager.php:451
7360
+ msgid "Refer to the <a href=\"https://wpactivitylog.com/support/kb/severity-levels-wordpress-activity-log/\" target=\"_blank\" rel=\"nofollow noopener\">severity levels in the activity log</a> for reference."
7361
  msgstr ""
7362
 
7363
+ #: extensions/search/classes/FilterManager.php:464
7364
+ msgid "Refer to the <a href=\"https://wpactivitylog.com/support/kb/list-wordpress-audit-trail-alerts/\" target=\"_blank\" rel=\"nofollow noopener\">list of Event IDs</a> for reference."
7365
  msgstr ""
7366
 
7367
+ #: extensions/search/classes/FilterManager.php:476
7368
+ msgid "Filter by username"
7369
  msgstr ""
7370
 
7371
+ #: extensions/search/classes/FilterManager.php:479, extensions/user-sessions/classes/View/Sessions.php:296
7372
+ msgid "First Name"
7373
  msgstr ""
7374
 
7375
+ #: extensions/search/classes/FilterManager.php:480
7376
+ msgid "Filter by user first name"
7377
  msgstr ""
7378
 
7379
+ #: extensions/search/classes/FilterManager.php:483, extensions/user-sessions/classes/View/Sessions.php:297
7380
+ msgid "Last Name"
7381
  msgstr ""
7382
 
7383
+ #: extensions/search/classes/FilterManager.php:484
7384
+ msgid "Filter by user last name"
 
7385
  msgstr ""
7386
 
7387
+ #: extensions/search/classes/FilterManager.php:488
7388
+ msgid "Filter by user roles"
7389
  msgstr ""
7390
 
7391
+ #: extensions/search/classes/FilterManager.php:491
7392
+ msgid "User Filters"
7393
  msgstr ""
7394
 
7395
+ #: extensions/search/classes/FilterManager.php:496
7396
+ msgid "Filter by post status"
7397
  msgstr ""
7398
 
7399
+ #: extensions/search/classes/FilterManager.php:500
7400
+ msgid "Filter by post type"
7401
  msgstr ""
7402
 
7403
+ #: extensions/search/classes/FilterManager.php:504
7404
+ msgid "Filter by post ID"
7405
  msgstr ""
7406
 
7407
+ #: extensions/search/classes/FilterManager.php:507, extensions/search/classes/Filters/PostNameFilter.php:55
7408
+ msgid "Post Name"
7409
  msgstr ""
7410
 
7411
+ #: extensions/search/classes/FilterManager.php:508
7412
+ msgid "Filter by post name"
7413
  msgstr ""
7414
 
7415
+ #: extensions/search/classes/FilterManager.php:511
7416
+ msgid "Post Filters"
7417
  msgstr ""
7418
 
7419
+ #: extensions/search/classes/FilterManager.php:520
7420
+ msgid "Select Site to view"
7421
  msgstr ""
7422
 
7423
+ #: extensions/search/classes/FilterManager.php:545
7424
+ msgid "Select A Specific Site from the Network"
7425
  msgstr ""
7426
 
7427
+ #: extensions/search/classes/FilterManager.php:568
7428
+ msgid "Enter an IP address to filter"
7429
  msgstr ""
7430
 
7431
+ #: extensions/user-sessions/classes/Helpers.php:129
7432
+ msgid "ERROR: Your session was blocked with the WP Activity Log plugin because there is already another user logged in with the same username. Please contact the site administrator for more information."
7433
  msgstr ""
7434
 
7435
+ #: extensions/user-sessions/classes/Views.php:110
7436
+ msgid "Users Sessions & Management"
7437
  msgstr ""
7438
 
7439
+ #: extensions/user-sessions/classes/Views.php:124
7440
+ msgid "Logged In Users"
7441
  msgstr ""
7442
 
7443
+ #: extensions/user-sessions/classes/Views.php:195
7444
+ msgid "Logging out..."
7445
  msgstr ""
7446
 
7447
+ #: extensions/user-sessions/classes/Views.php:196
7448
+ msgid "Refreshing..."
7449
  msgstr ""
7450
 
7451
+ #: extensions/user-sessions/classes/Views.php:197
7452
+ msgid "This could result in loss of unsaved work. Are you sure?"
7453
  msgstr ""
7454
 
7455
+ #. translators: %s: Total number of users
7456
+ #: extensions/user-sessions/classes/Views.php:199
7457
+ msgid "out of %s user sessions terminated."
7458
  msgstr ""
7459
 
7460
+ #: extensions/user-sessions/classes/Views.php:201, extensions/user-sessions/classes/View/Sessions.php:80
7461
+ msgid "Retrieve user data"
7462
  msgstr ""
7463
 
7464
+ #: extensions/user-sessions/classes/Views.php:202
7465
+ msgid "Retrieving data"
7466
  msgstr ""
7467
 
7468
+ #: extensions/user-sessions/classes/Views.php:203
7469
+ msgid "Data retrieved"
7470
  msgstr ""
7471
 
7472
+ #: extensions/user-sessions/classes/Views.php:204
7473
+ msgid "Event ID: "
7474
  msgstr ""
7475
 
7476
+ #: extensions/user-sessions/classes/Views.php:205
7477
+ msgid "Object: "
7478
  msgstr ""
7479
 
7480
+ #: extensions/user-sessions/classes/Views.php:206
7481
+ msgid "Event Type: "
7482
  msgstr ""
7483
 
7484
+ #: extensions/user-sessions/classes/Views.php:267
7485
+ msgid "Terminate all logged in sessions"
7486
  msgstr ""
7487
 
7488
+ #: extensions/user-sessions/classes/Views.php:268
7489
+ msgid "This will terminate all users' sessions including yours, which could result in unsaved work. Do you like to proceed?"
7490
  msgstr ""
7491
 
7492
+ #: extensions/user-sessions/classes/Views.php:279
7493
+ msgid "YES"
7494
  msgstr ""
7495
 
7496
+ #: extensions/user-sessions/classes/Views.php:280
7497
+ msgid "NO"
 
7498
  msgstr ""
7499
 
7500
+ #: extensions/user-sessions/classes/Views.php:292
7501
+ msgid "Terminate All Sessions"
7502
  msgstr ""
7503
 
7504
+ #: extensions/user-sessions/classes/Views.php:412
7505
+ msgid "Users sessions termination is in progress. Please wait..."
7506
  msgstr ""
7507
 
7508
+ #: extensions/user-sessions/classes/Views.php:439, extensions/reports/classes/Views/Main.php:724
7509
+ msgid "You do not have sufficient permissions."
7510
  msgstr ""
7511
 
7512
+ #: extensions/user-sessions/classes/Views.php:465
7513
+ msgid "No sessions."
7514
  msgstr ""
7515
 
7516
+ #: extensions/user-sessions/classes/Views.php:490
7517
+ msgid "Session destroyed."
7518
  msgstr ""
7519
 
7520
+ #: extensions/user-sessions/classes/Views.php:498
7521
+ msgid "User session data is not set."
7522
  msgstr ""
7523
 
7524
+ #: extensions/user-sessions/classes/Views.php:514, extensions/user-sessions/classes/Views.php:588
7525
+ msgid "User do not have sufficient permissions."
7526
  msgstr ""
7527
 
7528
+ #: extensions/user-sessions/classes/Views.php:567
7529
+ msgid "Sessions destroyed!"
7530
  msgstr ""
7531
 
7532
+ #: extensions/user-sessions/classes/Views.php:598
7533
+ msgid "Nonce check failed."
7534
  msgstr ""
7535
 
7536
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:22
7537
+ msgid "AWS CloudWatch"
7538
  msgstr ""
7539
 
7540
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:27, extensions/external-db/classes/mirrors/LogglyConnection.php:27, extensions/external-db/classes/mirrors/PapertrailConnection.php:27, extensions/external-db/classes/mirrors/SlackConnection.php:28, extensions/external-db/classes/mirrors/SyslogConnection.php:27
7541
+ msgid "General mirror connection description."
7542
  msgstr ""
7543
 
7544
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:30
7545
+ msgid "Region"
7546
  msgstr ""
7547
 
7548
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:57
7549
+ msgid "AWS Key"
7550
  msgstr ""
7551
 
7552
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:62
7553
+ msgid "AWS Secret"
7554
  msgstr ""
7555
 
7556
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:67
7557
+ msgid "AWS Session Token"
7558
  msgstr ""
7559
 
7560
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:69
7561
+ msgid "This is optional."
7562
  msgstr ""
7563
 
7564
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:72
7565
+ msgid "Log group name"
7566
  msgstr ""
7567
 
7568
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:76
7569
+ msgid "Invalid AWS group name. It must satisfy regular expression pattern: %s"
7570
  msgstr ""
7571
 
7572
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:80
7573
+ msgid "If you do not specify a group name, one will be created using the default group name \"%s\"."
7574
  msgstr ""
7575
 
7576
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:85
7577
+ msgid "Log stream name"
7578
  msgstr ""
7579
 
7580
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:87
7581
+ msgid "If you do not specify a stream name, one will be created using the site name as stream name."
7582
  msgstr ""
7583
 
7584
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:90
7585
+ msgid "Retention"
7586
  msgstr ""
7587
 
7588
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:112
7589
+ msgid "Days to keep logs."
7590
  msgstr ""
7591
 
7592
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:132
7593
+ msgid "You have setup a mirroring connection to AWS CloudWatch in the WP Activity Log plugin. In this version we've done some changes and you need to add the following lines to the wp-config.php file to enable the AWS library."
7594
  msgstr ""
7595
 
7596
+ #: extensions/external-db/classes/mirrors/AWSCloudWatchConnection.php:201
7597
+ msgid "The AWS library is disabled. Please enable this library by adding the following to the wp-config.php file. Press continue when you are ready or cancel to stop the process."
7598
  msgstr ""
7599
 
7600
+ #: extensions/external-db/classes/mirrors/LogFileConnection.php:22
7601
+ msgid "Log file(s)"
7602
  msgstr ""
7603
 
7604
+ #: extensions/external-db/classes/mirrors/LogFileConnection.php:27
7605
+ msgid "WP Activity Log can write the WordPress activity log to a log file.."
7606
  msgstr ""
7607
 
7608
+ #: extensions/external-db/classes/mirrors/LogFileConnection.php:30
7609
+ msgid "Log file(s) rotation"
7610
  msgstr ""
7611
 
7612
+ #: extensions/external-db/classes/mirrors/LogFileConnection.php:33
7613
+ msgid "daily"
7614
  msgstr ""
7615
 
7616
+ #: extensions/external-db/classes/mirrors/LogFileConnection.php:34
7617
+ msgid "monthly"
7618
  msgstr ""
7619
 
7620
+ #: extensions/external-db/classes/mirrors/LogFileConnection.php:35
7621
+ msgid "yearly"
7622
  msgstr ""
7623
 
7624
+ #: extensions/external-db/classes/mirrors/LogFileConnection.php:39
7625
+ msgid "Log file prefix"
7626
  msgstr ""
7627
 
7628
+ #: extensions/external-db/classes/mirrors/LogFileConnection.php:42
7629
+ msgid "Optional. Default prefix is %s."
7630
  msgstr ""
7631
 
7632
+ #: extensions/external-db/classes/mirrors/LogglyConnection.php:22
7633
+ msgid "Loggly"
7634
  msgstr ""
7635
 
7636
+ #: extensions/external-db/classes/mirrors/LogglyConnection.php:30
7637
+ msgid "Loggly token"
7638
  msgstr ""
7639
 
7640
+ #: extensions/external-db/classes/mirrors/LogglyConnection.php:34
7641
+ msgid "The Loggly token required here is the \"Customer token\" and you can get it from the following URL: %s"
7642
  msgstr ""
7643
 
7644
+ #: extensions/external-db/classes/mirrors/PapertrailConnection.php:22
7645
+ msgid "Papertrail"
7646
  msgstr ""
7647
 
7648
+ #: extensions/external-db/classes/mirrors/PapertrailConnection.php:30
7649
+ msgid "Destination"
7650
  msgstr ""
7651
 
7652
+ #. translators: %s: Log destinations link
7653
+ #: extensions/external-db/classes/mirrors/PapertrailConnection.php:36
7654
+ msgid "Specify your destination. You can find your Papertrail Destination in the %s section of your Papertrail account page. It should have the following format: logs4.papertrailapp.com:54321"
7655
  msgstr ""
7656
 
7657
+ #: extensions/external-db/classes/mirrors/PapertrailConnection.php:37
7658
+ msgid "Log Destinations"
7659
  msgstr ""
7660
 
7661
+ #: extensions/external-db/classes/mirrors/PapertrailConnection.php:39
7662
+ msgid "Invalid Papertrail Destination"
7663
  msgstr ""
7664
 
7665
+ #: extensions/external-db/classes/mirrors/PapertrailConnection.php:42
7666
+ msgid "Colorization"
7667
  msgstr ""
7668
 
7669
+ #: extensions/external-db/classes/mirrors/SlackConnection.php:22
7670
+ msgid "Slack"
7671
  msgstr ""
7672
 
7673
+ #: extensions/external-db/classes/mirrors/SlackConnection.php:31
7674
+ msgid "Webhook URL"
7675
  msgstr ""
7676
 
7677
+ #. translators: hyperlink to the Slack webhook documentation page
7678
+ #: extensions/external-db/classes/mirrors/SlackConnection.php:35
7679
+ msgid "If you are not familiar with incoming WebHooks on Slack, please refer to %s."
7680
  msgstr ""
7681
 
7682
+ #: extensions/external-db/classes/mirrors/SlackConnection.php:39
7683
+ msgid "Slack webhooks documentation"
7684
  msgstr ""
7685
 
7686
+ #: extensions/external-db/classes/mirrors/SlackConnection.php:44
7687
+ msgid "Invalid Webhook URL"
7688
  msgstr ""
7689
 
7690
+ #: extensions/external-db/classes/mirrors/SyslogConnection.php:22
7691
+ msgid "Syslog Server"
7692
  msgstr ""
7693
 
7694
+ #: extensions/external-db/classes/mirrors/SyslogConnection.php:30
7695
+ msgid "Syslog Location"
7696
  msgstr ""
7697
 
7698
+ #: extensions/external-db/classes/mirrors/SyslogConnection.php:35
7699
+ msgid " Write to local syslog file"
7700
  msgstr ""
7701
 
7702
+ #: extensions/external-db/classes/mirrors/SyslogConnection.php:38
7703
+ msgid " Send messages to remote syslog server"
7704
  msgstr ""
7705
 
7706
+ #: extensions/external-db/classes/mirrors/SyslogConnection.php:41
7707
+ msgid "IP Address / Hostname"
7708
  msgstr ""
7709
 
7710
+ #: extensions/external-db/classes/mirrors/SyslogConnection.php:45
7711
+ msgid "Invalid Invalid IP/Hostname"
7712
  msgstr ""
7713
 
7714
+ #: extensions/external-db/classes/mirrors/SyslogConnection.php:48
7715
+ msgid "Port"
7716
  msgstr ""
7717
 
7718
+ #: extensions/external-db/classes/mirrors/SyslogConnection.php:52
7719
+ msgid "Invalid Port"
7720
  msgstr ""
7721
 
7722
+ #: extensions/reports/classes/Views/Main.php:73
7723
+ msgid "Reporting"
7724
  msgstr ""
7725
 
7726
+ #: extensions/reports/classes/Views/Main.php:87
7727
+ msgid "Reports"
7728
  msgstr ""
7729
 
7730
+ #: extensions/reports/classes/Views/Main.php:204
7731
+ msgid "Process completed."
7732
  msgstr ""
7733
 
7734
+ #: extensions/reports/classes/Views/Main.php:207
7735
+ msgid "There are no alerts that match your filtering criteria."
7736
  msgstr ""
7737
 
7738
+ #: extensions/reports/classes/Views/Main.php:649
7739
+ msgid " Generating reports. Please do not close this window."
7740
  msgstr ""
7741
 
7742
+ #: extensions/reports/classes/Views/Main.php:662
7743
+ msgid "To generate a report or configure automated scheduled report please contact the administrator of this multisite network on "
7744
  msgstr ""
7745
 
7746
+ #: extensions/reports/classes/Views/Main.php:680
7747
+ msgid "The %s directory which the Reports plugin uses to create reports in was either not found or is not accessible."
7748
  msgstr ""
7749
 
7750
+ #: extensions/reports/classes/Views/Main.php:684
7751
+ 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"
7752
  msgstr ""
7753
 
7754
+ #: extensions/search/classes/Filters/AlertWidget.php:38
7755
+ msgid "Enter an Event ID to filter - example: 1000"
7756
  msgstr ""
7757
 
7758
+ #: extensions/search/classes/Filters/AlertWidget.php:40, extensions/search/classes/Filters/DateWidget.php:39, extensions/search/classes/Filters/IpWidget.php:40, extensions/search/classes/Filters/postidwidget.php:37, extensions/search/classes/Filters/PostNameWidget.php:38, extensions/search/classes/Filters/userfirstnamewidget.php:37, extensions/search/classes/Filters/userlastnamewidget.php:37, extensions/search/classes/Filters/usernamewidget.php:38
7759
+ msgid "Add this filter"
7760
  msgstr ""
7761
 
7762
+ #: extensions/search/classes/Filters/CodeWidget.php:37
7763
+ msgid "Select a Severity to filter"
7764
  msgstr ""
7765
 
7766
+ #: extensions/search/classes/Filters/DateFilter.php:56
7767
+ msgid "Later than"
7768
  msgstr ""
7769
 
7770
+ #: extensions/search/classes/Filters/DateFilter.php:57
7771
+ msgid "Earlier than"
7772
  msgstr ""
7773
 
7774
+ #: extensions/search/classes/Filters/DateFilter.php:58
7775
+ msgid "On this day"
7776
  msgstr ""
7777
 
7778
+ #: extensions/search/classes/Filters/EventTypeWidget.php:30
7779
+ msgid "Select an Event Type to filter"
7780
  msgstr ""
7781
 
7782
+ #: extensions/search/classes/Filters/IpWidget.php:38
7783
+ msgid "192.168.128.255"
7784
  msgstr ""
7785
 
7786
+ #: extensions/search/classes/Filters/ObjectWidget.php:33
7787
+ msgid "Select an Object to filter"
7788
  msgstr ""
7789
 
7790
+ #: extensions/search/classes/Filters/postidwidget.php:35
7791
+ msgid "Enter post ID to filter"
7792
  msgstr ""
7793
 
7794
+ #: extensions/search/classes/Filters/PostNameWidget.php:36
7795
+ msgid "Enter post name to filter"
7796
  msgstr ""
7797
 
7798
+ #: extensions/search/classes/Filters/PostStatusWidget.php:36
7799
+ msgid "Select a post status to filter"
7800
  msgstr ""
7801
 
7802
+ #: extensions/search/classes/Filters/PostTypeWidget.php:36
7803
+ msgid "Select a post type to filter"
7804
  msgstr ""
7805
 
7806
+ #: extensions/search/classes/Filters/SiteFilter.php:57
7807
+ msgid "Sites"
7808
  msgstr ""
7809
 
7810
+ #: extensions/search/classes/Filters/SiteWidget.php:33
7811
+ msgid "Select a Site to filter"
7812
  msgstr ""
7813
 
7814
+ #: extensions/search/classes/Filters/userfirstnamewidget.php:35, extensions/search/classes/Filters/userlastnamewidget.php:35
7815
+ msgid "Enter users first name to filter"
7816
  msgstr ""
7817
 
7818
+ #: extensions/search/classes/Filters/usernamewidget.php:36
7819
+ msgid "Enter a username to filter"
7820
  msgstr ""
7821
 
7822
+ #: extensions/search/classes/Filters/UserRoleWidget.php:36
7823
+ msgid "Select a user role to filter"
7824
  msgstr ""
7825
 
7826
+ #: extensions/user-sessions/classes/Sensors/UserSessionsTracking.php:307, extensions/user-sessions/classes/View/Options/Policies.php:253
7827
+ 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."
7828
  msgstr ""
7829
 
7830
+ #: extensions/user-sessions/classes/View/Options.php:30
7831
+ msgid "Users Sessions Management"
7832
  msgstr ""
7833
 
7834
+ #: extensions/user-sessions/classes/View/Options.php:44
7835
+ msgid "User Session Options"
7836
  msgstr ""
7837
 
7838
+ #: extensions/user-sessions/classes/View/Sessions.php:120
7839
+ msgid "Showing results for "
7840
  msgstr ""
7841
 
7842
+ #: extensions/user-sessions/classes/View/Sessions.php:112
7843
+ msgid "No search results were found."
7844
  msgstr ""
7845
 
7846
+ #: extensions/user-sessions/classes/View/Sessions.php:146
7847
+ msgid "Expires"
7848
  msgstr ""
7849
 
7850
+ #: extensions/user-sessions/classes/View/Sessions.php:148
7851
+ msgid "Last Event"
7852
  msgstr ""
7853
 
7854
+ #: extensions/user-sessions/classes/View/Sessions.php:149, extensions/user-sessions/classes/View/Sessions.php:465
7855
+ msgid "Actions"
7856
  msgstr ""
7857
 
7858
+ #. translators: Number of sessions
7859
+ #: extensions/user-sessions/classes/View/Sessions.php:267
7860
+ msgid "%s users"
7861
  msgstr ""
7862
 
7863
+ #: extensions/user-sessions/classes/View/Sessions.php:272
7864
+ msgid "Go to the first page"
7865
  msgstr ""
7866
 
7867
+ #: extensions/user-sessions/classes/View/Sessions.php:273
7868
+ msgid "Go to the previous page"
7869
  msgstr ""
7870
 
7871
+ #: extensions/user-sessions/classes/View/Sessions.php:275
7872
+ msgid "of"
7873
  msgstr ""
7874
 
7875
+ #: extensions/user-sessions/classes/View/Sessions.php:277
7876
+ msgid "Go to the next page"
7877
  msgstr ""
7878
 
7879
+ #: extensions/user-sessions/classes/View/Sessions.php:278
7880
+ msgid "Go to the last page"
7881
  msgstr ""
7882
 
7883
+ #: extensions/user-sessions/classes/View/Sessions.php:287
7884
+ msgid "Total number of sessions with Administrator Role: "
7885
  msgstr ""
7886
 
7887
+ #: extensions/user-sessions/classes/View/Sessions.php:330
7888
+ msgid "Show:"
7889
  msgstr ""
7890
 
7891
+ #: extensions/user-sessions/classes/View/Sessions.php:339
7892
+ msgid "Network-wide Logins"
7893
  msgstr ""
7894
 
7895
+ #: extensions/user-sessions/classes/View/Sessions.php:439
7896
+ msgid "Session ID: "
7897
  msgstr ""
7898
 
7899
+ #: extensions/user-sessions/classes/View/Sessions.php:456
7900
+ msgid "Click the button above to retrieve the users' last event."
7901
  msgstr ""
7902
 
7903
+ #: extensions/user-sessions/classes/View/Sessions.php:476
7904
+ msgid "Show me this user's events"
7905
  msgstr ""
7906
 
7907
+ #: extensions/user-sessions/classes/View/Sessions.php:492
7908
+ msgid "Terminate Session"
7909
  msgstr ""
7910
 
7911
+ #: extensions/user-sessions/classes/View/Sessions.php:384
7912
+ 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."
7913
  msgstr ""
7914
 
7915
+ #: extensions/user-sessions/classes/View/Sessions.php:376
7916
+ msgid "No logged in sessions meet your search criteria."
7917
  msgstr ""
7918
 
7919
+ #: extensions/user-sessions/classes/View/Sessions.php:669
7920
+ msgid "User sessions do not exist."
7921
  msgstr ""
7922
 
7923
+ #: extensions/user-sessions/classes/View/Settings.php:82
7924
+ msgid "Cleanup expired session data"
7925
  msgstr ""
7926
 
7927
+ #: extensions/user-sessions/classes/View/Settings.php:90
7928
+ msgid "The plugin will delete the data about expired users sessions from the WordPress database."
7929
  msgstr ""
7930
 
7931
+ #: extensions/user-sessions/classes/View/Options/Policies.php:38
7932
+ msgid "Main Policies"
 
7933
  msgstr ""
7934
 
7935
+ #: extensions/user-sessions/classes/View/Options/Policies.php:110
7936
+ msgid "Users session management is available in the Business and Enterprise plans."
7937
  msgstr ""
7938
 
7939
+ #: extensions/user-sessions/classes/View/Options/Policies.php:117
7940
+ msgid "Upgrade the plan"
7941
  msgstr ""
7942
 
7943
+ #: extensions/user-sessions/classes/View/Options/Policies.php:159
7944
+ msgid "Do not enforce policies on users with this role"
7945
  msgstr ""
7946
 
7947
+ #: extensions/user-sessions/classes/View/Options/Policies.php:177
7948
+ msgid "Inherit the sessions policies"
 
7949
  msgstr ""
7950
 
7951
+ #: extensions/user-sessions/classes/View/Options/Policies.php:129
7952
+ msgid "Users sessions policies"
 
7953
  msgstr ""
7954
 
7955
+ #: extensions/user-sessions/classes/View/Options/Policies.php:131
7956
+ msgid "Use the settings below to configure the policies to manage the users' sessions policies. These policies are automatically inherited by all profiles. However, you can disable the inheritance or configure different policies for specific roles in the role's tab."
7957
  msgstr ""
7958
 
7959
+ #: extensions/user-sessions/classes/View/Options/Policies.php:136
7960
+ msgid "Enable session policies"
 
7961
  msgstr ""
7962
 
7963
+ #: extensions/user-sessions/classes/View/Options/Policies.php:197
7964
+ msgid "By default WordPress does not limit how many times the same user can connect simultaneously. So two different users can login at the same time using the same username. Use the settings below to limit and also block simultaneous connections for the same username."
7965
  msgstr ""
7966
 
7967
+ #: extensions/user-sessions/classes/View/Options/Policies.php:199
7968
+ msgid "Do you want to allow two or more people to login simultaneously with the same username?"
 
7969
  msgstr ""
7970
 
7971
+ #: extensions/user-sessions/classes/View/Options/Policies.php:201
7972
+ msgid "By allowing multiple sessions two or more people can login to WordPress using the same username. By blocking them, once a person is logged in with a username, if another person tries to login with the same username they will be blocked."
 
7973
  msgstr ""
7974
 
7975
+ #: extensions/user-sessions/classes/View/Options/Policies.php:206
7976
+ msgid "Multiple Sessions"
7977
  msgstr ""
7978
 
7979
+ #: extensions/user-sessions/classes/View/Options/Policies.php:215
7980
+ msgid "Allow one session only"
 
7981
  msgstr ""
7982
 
7983
+ #: extensions/user-sessions/classes/View/Options/Policies.php:221
7984
+ msgid "Allow one session only and override current session"
7985
  msgstr ""
7986
 
7987
+ #. translators: Number of sessions input tag
7988
+ #: extensions/user-sessions/classes/View/Options/Policies.php:231
7989
+ msgid "Allow up to %s sessions and block the rest"
7990
  msgstr ""
7991
 
7992
+ #: extensions/user-sessions/classes/View/Options/Policies.php:242
7993
+ msgid "Configure a Blocked Session Notification for Users"
7994
  msgstr ""
7995
 
7996
+ #: extensions/user-sessions/classes/View/Options/Policies.php:244
7997
+ msgid "This error message is shown to users when they try to login with a username that already has a session and their session is blocked. You can change this message by editing the text in the below placeholder. Only <a href> HTML code is allowed."
 
7998
  msgstr ""
7999
 
8000
+ #: extensions/user-sessions/classes/View/Options/Policies.php:249
8001
+ msgid "Blocked Sessions Error"
8002
  msgstr ""
8003
 
8004
+ #: extensions/user-sessions/classes/View/Options/Policies.php:267
8005
+ msgid "Do you want to terminate idle sessions automatically?"
 
8006
  msgstr ""
8007
 
8008
+ #: extensions/user-sessions/classes/View/Options/Policies.php:269
8009
+ msgid "If a session has been idle for more than the configured number of hours, it will be automatically destroyed by the plugin."
8010
  msgstr ""
8011
 
8012
+ #: extensions/user-sessions/classes/View/Options/Policies.php:274
8013
+ msgid "Terminate Idle Sessions"
 
8014
  msgstr ""
8015
 
8016
+ #: extensions/user-sessions/classes/View/Options/Policies.php:291
8017
+ msgid "1"
8018
  msgstr ""
8019
 
8020
+ #: extensions/user-sessions/classes/View/Options/Policies.php:292
8021
+ msgid "4"
 
8022
  msgstr ""
8023
 
8024
+ #: extensions/user-sessions/classes/View/Options/Policies.php:293
8025
+ msgid "8"
8026
  msgstr ""
8027
 
8028
+ #: extensions/user-sessions/classes/View/Options/Policies.php:294
8029
+ msgid "12"
8030
  msgstr ""
8031
 
8032
+ #: extensions/user-sessions/classes/View/Options/Policies.php:295
8033
+ msgid "24"
8034
  msgstr ""
8035
 
8036
+ #: extensions/user-sessions/classes/View/Options/Policies.php:296
8037
+ msgid "32"
8038
  msgstr ""
8039
 
8040
+ #: extensions/user-sessions/classes/View/Options/Policies.php:297
8041
+ msgid "48"
8042
  msgstr ""
8043
 
8044
+ #: extensions/user-sessions/classes/View/Options/Policies.php:304
8045
+ msgid "terminate sessions if they have been idle for more than"
8046
  msgstr ""
8047
 
8048
+ #: extensions/user-sessions/classes/View/Options/Policies.php:315
8049
+ msgid " hour"
8050
  msgstr ""
8051
 
8052
+ #: extensions/user-sessions/classes/View/Options/Policies.php:315, extensions/user-sessions/classes/View/Options/Policies.php:322
8053
+ msgid " hours"
8054
  msgstr ""
8055
 
8056
+ #: extensions/user-sessions/classes/View/Options/Policies.php:308
8057
+ msgid " seconds (Testing)"
 
8058
  msgstr ""
readme.txt CHANGED
@@ -5,9 +5,9 @@ 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.7
9
- Stable tag: 4.3.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.
13
 
@@ -24,18 +24,18 @@ Keep an [activity log](https://wpactivitylog.com/wordpress-activity-log/?utm_sou
24
  * Better manage & organize your WordPress site & users
25
  * Easily spot suspicious behavior before there are security problems.
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
- > <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
  >
33
 
34
  #### Maintained & Supported by WP White Security
35
 
36
- WP White Security builds high-quality niche WordPress security & management plugins such as [Password Policy Manager for WordPress](https://www.wpwhitesecurity.com/wordpress-plugins/password-policy-manager-wordpress/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=PPMWP&utm_content=plugin+repos+description), a plugin with which you can ensure all your users use strong passwords.
37
-
38
- Browse our list of [WordPress plugins](https://www.wpwhitesecurity.com/wordpress-plugins/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=all+plugins&utm_content=plugin+repos+description) that can help you better manage and improve the security of your WordPress websites and users.
39
 
40
  ### WordPress Changes & Details the Plugin Keeps a Log Of
41
  As a comprehensive & complete WordPress activity log solution WP Activity Log does not just tell you that a post, a user profile, or an object was updated. It tells you exactly what was changed within the post, the user profile, or the object.
@@ -70,52 +70,54 @@ For every event that the plugin records it also reports the:
70
 
71
  * Date & time (and milliseconds) of when it happened,
72
  * User & role of the user who did the change,
73
- * Source IP address from where the change happened.
 
74
 
75
- Refer to [WordPress activity log event IDs](https://wpactivitylog.com/support/kb/list-wordpress-activity-log-event-ids/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) for a complete list of all the changes WP Activity Log can keep a record of.
76
 
77
  ### Extend the Functionality of WP Activity Log
78
  <strong>[Upgrade to WP Activity Log Premium](https://wpactivitylog.com/pricing/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong> to:
79
 
80
- * See who is logged,
81
  * See what everyone is doing in real-time,
82
  * Log off any user with just a click,
83
  * Generate HTML and CSV reports,
84
- * Export the activity log in CSV (ideal for integrations),
85
  * Get notified via email of important changes,
86
- * Get instant SMS message notifications of critical site changes,
87
- * Search the activity log using text-based searches and use built-in filters to fine tune the searches,
88
- * Store activity log in an external database to improve security,
89
- * Mirror the WordPress activity logs to Slack, Papertrail, Syslog and other central log management and collaboration solutions,
90
- * Configure archiving and mirroring of logs.
 
 
 
91
 
92
- Refer to the [features and benefits page](https://wpactivitylog.com/features/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) for more detailed information on the plugin's features.
93
 
94
  ### Free and Premium Support
95
 
96
  Support for WP Activity Log is free on the WordPress support forums.
97
 
98
- Premium world-class support is available via email to all [WP Activity Log Premium](https://wpactivitylog.com/features/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) customers.
99
 
100
- > <strong>Note</strong>: paid customers support is given priority and is provided via one-to-one email and over the phone. [Upgrade to Premium](https://wpactivitylog.com/pricing/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) to benefit from priority support.
101
  >
102
 
103
  #### Other Noteworthy Features
104
  On top of the comprehensive activity log, WP Activity Log also has a number of non-logging specific features that make it a complete WordPress logging solution, such as:
105
 
106
  * Full [WordPress multisite support](https://wpactivitylog.com/support/kb/activity-log-multisite-network-features/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)
107
- * Easily [create your custom alerts](https://wpactivitylog.com/support/kb/create-custom-events-wordpress-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) to monitor additional functionality
108
  * Built-in [support for reverse proxies and web application firewalls](https://wpactivitylog.com/support/kb/support-reverse-proxies-web-application-firewalls/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)
109
- * Integration with WhatIsMyIpAddress.com so you can get all information about an IP address with just a mouse click
110
- * Limit who can view the WordPress activity log by either users or roles
111
- * Limit who can manage the plugin
112
  * Settings to [toggle (enable/disable) individual event IDs from the activity log](https://wpactivitylog.com/support/kb/exclude-logging-specific-change-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)
113
  * Configurable dashboard widget highlighting the most recent critical activity
114
  * Configurable [WordPress activity log retention policies](https://wpactivitylog.com/support/kb/activity-log-retention-policies/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)
115
  * User avatar is displayed in the events for better recognizability
116
  * and much more...
117
 
118
- Refer to the <strong>[WordPress activity log plugin datasheet](https://wpactivitylog.com/activity-log-plugin-datasheet/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong> for a complete list of features.
119
 
120
  ### As Featured On:
121
 
@@ -133,6 +135,7 @@ Refer to the <strong>[WordPress activity log plugin datasheet](https://wpactivit
133
  * [Cloudways](https://www.cloudways.com/blog/monitor-wordpress-with-wp-security-audit-log-plugin/)
134
  * [Collective Ray](https://www.collectiveray.com/wp/plugins/wordpress-security-audit-log)
135
  * [BlogVault](https://blogvault.net/wp-security-audit-log-plugin-review/)
 
136
  * [Firewall.cx](http://www.firewall.cx/general-topics-reviews/security-articles/1146-wordpress-audit-monitor-log-site-security-alerts.html)
137
  * [Design Wall](http://www.designwall.com/blog/10-wordpress-multisite-plugins-you-shouldnt-live-without/)
138
  * [Tidy Repo](https://tidyrepo.com/wp-security-audit-log-wordpress-activity-log/)
@@ -140,11 +143,10 @@ Refer to the <strong>[WordPress activity log plugin datasheet](https://wpactivit
140
  * [The Darknet](http://www.darknet.org.uk/2015/10/wp-security-audit-log-a-complete-audit-log-plugin-for-wordpress/)
141
  * [WebEmpresa](https://www.webempresa.com/blog/auditando-cambios-en-wordpress.html)
142
  * [KitPloit](http://www.kitploit.com/2016/10/wp-security-audit-log-ultimate.html)
143
- * [EHacking](https://www.ehacking.net/2018/10/how-activity-log-wordpress-plugin.html)
144
 
145
  #### WP Activity Log extensions for third party plugins
146
 
147
- WP Activity Log can keep a detailed log of changes that happen on other plugins via activity log extensions. Below is the list of the [activity log extensions for third party plugins](https://wpactivitylog.com/extensions/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description):
148
 
149
  * <strong>[WP Activity Log for WooCommerce](https://wpactivitylog.com/extensions/woocommerce-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong>: Install this extension to keep a log of changes you and yourr team do in the WooCommerce store settings, orders, products, coupons and much more.
150
  * <strong>[WP Activity Log for Yoast SEO](https://wpactivitylog.com/extensions/yoast-seo-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong>: Install this extension to keep a log of the Yoast SEO plugin settings changes, and also of the on-page SEO changes you and your team make in the Yoast SEO meta box.
@@ -206,33 +208,63 @@ Please refer to our [support pages](https://wpactivitylog.com/support/?utm_sourc
206
 
207
  == Changelog ==
208
 
209
- = 4.3.0 (2021-05-20) =
210
-
211
- Release notes: [WP Activity Log 4.3: The new mirroring module & integrations](https://wpactivitylog.com/wsal-4-3-0/)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
 
213
  **New features**
214
- * The new [WordPress activity log mirroring module](https://wpactivitylog.com/features/integration-mirroring-tools-wordpress-activity-log/): mirror your website's activity log in real-time to AWS CloudWatch, Loggly, a log file and several other services.
 
 
 
 
 
 
 
 
 
 
215
 
216
  **Improvements**
217
- * The activity log is mirrored to third party services in real-time.
218
- * Event metadata is included in the CSV reports.
219
- * The severity levels of the activity log have been mapped to the standard severity levels documented in the RFC.
220
- * The event metadata in the mirrored activity log events is in JSON format.
221
- * Event type and Object metadata is included in the mirrored activity log events.
222
- * Changes by third party plugins for which an extension is available are no longer muted when extension is not installed.
223
- * Removed border from the first time install wizard (minor UI improvement).
224
- * Support for X-ORIGINAL-FORWARDED-FOR HTTP header (more info in [support for WAFS & reverse proxies](https://wpactivitylog.com/support/kb/support-reverse-proxies-web-application-firewalls/))
225
- * Plugin now is using the new in-plugin pricing page.
226
- * A much improved default SMS alert and email notification template.
227
- * Revamped the connections and mirroring wizards and included connectivity tests in them.
228
- * Improved the external db connection (now it is a persistent connection).
229
-
 
 
 
 
 
 
230
  **Bug fixes**
231
- * Critical error was being reported when the failed logins notification was triggered.
232
- * Fixed an unhandled exception which occurred when the free edition was activated on a site where the premium edition was already activated.
233
- * Events time stamp in emails was not always the same as in the activity log.
234
- * Event ID 2065 (modified content) was reported unnecessarily after adding a custom field to a post.
235
- * Event ID 1010 (user requested password reset) was not reported when the password reset was requested from a custom user profile page.
236
- * In some cases, archiving of the activity log could not be disabled.
237
 
238
  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.
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.8
9
+ Stable tag: 4.3.2
10
+ Requires PHP: 7.0
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.
13
 
24
  * Better manage & organize your WordPress site & users
25
  * Easily spot suspicious behavior before there are security problems.
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 hundreds of thousands of WordPress administrators and security professionals keep an eye on what is happening on their websites and is the most highly rated WordPress activity log plugin.
28
+
29
+ WP Activity Log has been featured on the websites of some of the most popular and leading businesses in the WordPress ecosystem, such as WPBeginner, GoDaddy, and Kinsta.
30
 
31
  [youtube https://www.youtube.com/watch?v=pgFEMIvKFTA]
32
 
33
+ > <strong>Note</strong>: The activity log for WordPress is FREE and you can keep as much logs as you want. Additional features such as reports, email notifications, SMS alerts, search & filters, integrations with logs management system, 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
  >
35
 
36
  #### Maintained & Supported by WP White Security
37
 
38
+ WP White Security is a European development company that builds high-quality WordPress security & management plugins. Check out our list of [WordPress plugins](https://www.wpwhitesecurity.com/wordpress-plugins/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=all+plugins&utm_content=plugin+repos+description) that can help you better manage and improve the security of your WordPress websites and users.
 
 
39
 
40
  ### WordPress Changes & Details the Plugin Keeps a Log Of
41
  As a comprehensive & complete WordPress activity log solution WP Activity Log does not just tell you that a post, a user profile, or an object was updated. It tells you exactly what was changed within the post, the user profile, or the object.
70
 
71
  * Date & time (and milliseconds) of when it happened,
72
  * User & role of the user who did the change,
73
+ * Source IP address from where the change happened,
74
+ * The object on which the change has taken place.
75
 
76
+ Refer to [WordPress activity log event IDs](https://wpactivitylog.com/support/kb/list-wordpress-activity-log-event-ids/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) for a complete list of all the changes WP Activity Log can keep a record of and a detailed explanation of what change every event ID represents.
77
 
78
  ### Extend the Functionality of WP Activity Log
79
  <strong>[Upgrade to WP Activity Log Premium](https://wpactivitylog.com/pricing/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong> to:
80
 
81
+ * See who is logged to your website in real-time,
82
  * See what everyone is doing in real-time,
83
  * Log off any user with just a click,
84
  * Generate HTML and CSV reports,
 
85
  * Get notified via email of important changes,
86
+ * Get instant SMS message alerts of critical site changes,
87
+ * Search the activity log using text-based searches,
88
+ * Use the built-in filters to fine tune the search results,
89
+ * Store activity log in an external database to improve security and scalability,
90
+ * Mirror the activity log to logs management systems such as AWS CloudWatch, Loggly and Papertrail in real-time,
91
+ * Easily mirror the logs in real-time to business communication systems such as Slack,
92
+ * Send a copy of your websites' activity log to a log file on your web server in real-time,
93
+ * Archive old activity log data to another database for better storage and log management.
94
 
95
+ Refer to the [features and benefits page](https://wpactivitylog.com/features/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) for more detailed information on the features of the WP Activity Log plugin.
96
 
97
  ### Free and Premium Support
98
 
99
  Support for WP Activity Log is free on the WordPress support forums.
100
 
101
+ Premium world-class support is available via email to all [WP Activity Log Premium](https://wpactivitylog.com/features/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) users.
102
 
103
+ > <strong>Note</strong>: paid customer support is given priority and is provided via one-to-one email and over the phone. [Upgrade to Premium](https://wpactivitylog.com/pricing/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) to benefit from priority support.
104
  >
105
 
106
  #### Other Noteworthy Features
107
  On top of the comprehensive activity log, WP Activity Log also has a number of non-logging specific features that make it a complete WordPress logging solution, such as:
108
 
109
  * Full [WordPress multisite support](https://wpactivitylog.com/support/kb/activity-log-multisite-network-features/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)
110
+ * Easily [create your custom alerts &notifications](https://wpactivitylog.com/support/kb/create-custom-events-wordpress-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description) to monitor additional functionality
111
  * Built-in [support for reverse proxies and web application firewalls](https://wpactivitylog.com/support/kb/support-reverse-proxies-web-application-firewalls/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)
112
+ * Integration with WhatIsMyIpAddress.com allow you to get all information about an IP address with just a mouse click.
113
+ * Limit who can view the WordPress activity log by users or roles
 
114
  * Settings to [toggle (enable/disable) individual event IDs from the activity log](https://wpactivitylog.com/support/kb/exclude-logging-specific-change-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)
115
  * Configurable dashboard widget highlighting the most recent critical activity
116
  * Configurable [WordPress activity log retention policies](https://wpactivitylog.com/support/kb/activity-log-retention-policies/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)
117
  * User avatar is displayed in the events for better recognizability
118
  * and much more...
119
 
120
+ Refer to the <strong>[WordPress activity log plugin datasheet](https://wpactivitylog.com/activity-log-plugin-datasheet/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong> for a complete list of all the plugin's features.
121
 
122
  ### As Featured On:
123
 
135
  * [Cloudways](https://www.cloudways.com/blog/monitor-wordpress-with-wp-security-audit-log-plugin/)
136
  * [Collective Ray](https://www.collectiveray.com/wp/plugins/wordpress-security-audit-log)
137
  * [BlogVault](https://blogvault.net/wp-security-audit-log-plugin-review/)
138
+ * [EHacking](https://www.ehacking.net/2018/10/how-activity-log-wordpress-plugin.html)
139
  * [Firewall.cx](http://www.firewall.cx/general-topics-reviews/security-articles/1146-wordpress-audit-monitor-log-site-security-alerts.html)
140
  * [Design Wall](http://www.designwall.com/blog/10-wordpress-multisite-plugins-you-shouldnt-live-without/)
141
  * [Tidy Repo](https://tidyrepo.com/wp-security-audit-log-wordpress-activity-log/)
143
  * [The Darknet](http://www.darknet.org.uk/2015/10/wp-security-audit-log-a-complete-audit-log-plugin-for-wordpress/)
144
  * [WebEmpresa](https://www.webempresa.com/blog/auditando-cambios-en-wordpress.html)
145
  * [KitPloit](http://www.kitploit.com/2016/10/wp-security-audit-log-ultimate.html)
 
146
 
147
  #### WP Activity Log extensions for third party plugins
148
 
149
+ WP Activity Log can keep also a detailed log of changes that happen on other plugins. Below is the list of the [activity log extensions for third party plugins](https://wpactivitylog.com/extensions/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description):
150
 
151
  * <strong>[WP Activity Log for WooCommerce](https://wpactivitylog.com/extensions/woocommerce-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong>: Install this extension to keep a log of changes you and yourr team do in the WooCommerce store settings, orders, products, coupons and much more.
152
  * <strong>[WP Activity Log for Yoast SEO](https://wpactivitylog.com/extensions/yoast-seo-activity-log/?utm_source=wordpress.org&utm_medium=referral&utm_campaign=WSAL&utm_content=plugin+repos+description)</strong>: Install this extension to keep a log of the Yoast SEO plugin settings changes, and also of the on-page SEO changes you and your team make in the Yoast SEO meta box.
208
 
209
  == Changelog ==
210
 
211
+ = 4.3.2 (2021-08-03) =
212
+
213
+ Release notes: [WP Activity Log 4.3.2: New external database module, plugin logging, and other exciting features](https://wpactivitylog.com/wsal-4-3-0/)
214
+
215
+ **New event IDs for WP Activity Log plugin settings changes**
216
+ * ID 6046: enabled / disabled the Login Page Notification.
217
+ * ID 6047: changed the text of the Login Page Notification.
218
+ * ID 6048: changed the status of the Reverse proxy / firewall option.
219
+ * ID 6049: changed the Restriction Access setting.
220
+ * ID 6050: changed the list of users that can view the activity log.
221
+ * ID 6051: enabled / disabled the Hide plugin in plugins page setting.
222
+ * ID 6052: changed the activity log retention policies.
223
+ * ID 6053: excluded / included back a user in the activity log.
224
+ * ID 6054: excluded / included back a user role in the activity log.
225
+ * ID 6055: excluded / included back an IP address in the activity log.
226
+ * ID 6056: excluded / included back a post type in the activity log.
227
+ * ID 6057: excluded / included back a custom field in the activity log.
228
+ * ID 6058: excluded / included back a user profile custom field in the activity log.
229
 
230
  **New features**
231
+
232
+ * A completely new external database module (with full backward compatability support).
233
+ * Activity log can now be stored on external MySQL databases on Microsoft Azure.
234
+ * A new sensor to keep a log of WP Activity Log plugin settings changes.
235
+ * New setting to "not write activity log to database" when mirroring the activity log to a third party service.
236
+ * The "all except from" criterion in the reports, allowing users to easily exclude specific object from a report criteria.
237
+ * Plugin database version: the plugin's database is now versioned, making it much easier to upgrade the database structured when required.
238
+ * Custom fields in user profiles can be excluded from the activity log from the "Exclude Objects" settings section.
239
+ * The filter "wsal_event_metadata_definition" which allows users to add additional meta data to an event in the activity log. Refer to the list of [hooks & filters](https://wpactivitylog.com/support/kb/list-hooks/) for more information.
240
+ * Added events severity level filter in the mirroring connection, allowing users to filter which events should be mirrored by severity level.
241
+
242
 
243
  **Improvements**
244
+
245
+ * Replaced the old external database buffer system with the Action Scheduler library to improve reliability and performance.
246
+ * Redesigned the reports download functionality so it works on any type of WordPress web hosting.
247
+ * Replaced the old activity log events migration module with WP Background processing, for a more reliable migration process.
248
+ * Full support for PHP 8.
249
+ * Detection of third party plugins activity & recommendations for activity log extensions.
250
+ * Added a number of checks to the external database module for an improved database connection setup UX.
251
+ * Activity log plugin extensions are also hidden when the WP Activity Log plugin is hidden from the plugins page.
252
+ * Removed all the code that was previously used for migration of events between the WordPress and external database.
253
+ * Remove code that is no longer required in the free edition of the plugin.
254
+ * Better support for plugins that still use old methods (old use of the lostpassword_post filter) to allow users to reset their password without an error.
255
+ * All database events have been moved under the "WordPress & System" tab in the Enable/Disable events section.
256
+ * Improved the text of the plugin's install wizard.
257
+ * Live notifications in Admin toolbar are now disabled by default (performance enhancement).
258
+ * Amazon AWS library is disabled by default. Users will be alerted to initialize it from wp-config.php if required.
259
+ * Added the ";" as separator in the meta data section in CSV reports.
260
+ * Removed the event ID 4-digits limit to allow users to declare event IDs with 5+ digits.
261
+ * CSV reports now show the right username & display name, as configured in the plugin settings.
262
+
263
  **Bug fixes**
264
+ * Plugin was not capturing user logouts from Ultimate Member plugin profile page.
265
+ * Plugin was reporting wrong directory name in URL in event ID 2101 on a multisite environment.
266
+ * In specific scenarios the plugin reported a custom field name as NULL in event ID 2054.
267
+ * Fixed the broken link to user profile page in event ID 4001.
268
+ * Event ID 4029 (user sent a password request) had the wrong Event Type.
 
269
 
270
  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/class-wsal-browser.php CHANGED
@@ -5,7 +5,7 @@
5
  * Browser Information Class of the plugin.
6
  *
7
  * @since 3.2.2
8
- * @package Wsal
9
  */
10
 
11
  // Exit if accessed directly.
5
  * Browser Information Class of the plugin.
6
  *
7
  * @since 3.2.2
8
+ * @package wsal
9
  */
10
 
11
  // Exit if accessed directly.
sdk/wsal-freemius.php CHANGED
@@ -30,7 +30,7 @@ function wsal_freemius() {
30
  // Include Freemius SDK.
31
  require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . implode( DIRECTORY_SEPARATOR, [
32
  '..',
33
- 'vendor',
34
  'freemius',
35
  'wordpress-sdk',
36
  'start.php'
30
  // Include Freemius SDK.
31
  require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . implode( DIRECTORY_SEPARATOR, [
32
  '..',
33
+ 'third-party',
34
  'freemius',
35
  'wordpress-sdk',
36
  'start.php'
{vendor → third-party}/freemius/wordpress-sdk/LICENSE.txt RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/README.md RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/account.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/add-ons.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/affiliation.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/checkout.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/common.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/connect.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/debug.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/dialog-boxes.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/gdpr-optin-notice.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/plugins.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/customizer.css RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/css/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/img/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/img/plugin-icon.png RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/img/theme-icon.png RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/js/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/js/nojquery.ba-postmessage.js RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/js/nojquery.ba-postmessage.min.js RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/assets/js/postmessage.js RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/config.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-freemius-abstract.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-freemius.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-admin-notices.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-api.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-logger.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-options.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-plugin-updater.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-security.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-storage.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-user-lock.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/customizer/class-fs-customizer-support-section.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/customizer/class-fs-customizer-upsell-control.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/customizer/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/debug/class-fs-debug-bar-panel.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/debug/debug-bar-start.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/debug/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-affiliate-terms.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-affiliate.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-billing.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-entity.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-payment.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-info.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-license.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-plan.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-tag.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-pricing.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-scope-entity.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-site.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-subscription.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-user.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/entities/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/fs-core-functions.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/fs-essential-functions.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/fs-plugin-info-dialog.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/i18n.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/l10n.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-admin-menu-manager.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-admin-notice-manager.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-cache-manager.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-gdpr-manager.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-key-value-storage.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-license-manager.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-option-manager.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-plan-manager.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-plugin-manager.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/managers/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/ArgumentNotExistException.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/EmptyArgumentException.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/Exception.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/InvalidArgumentException.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/OAuthException.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/FreemiusBase.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/FreemiusWordPress.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/LICENSE.txt RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/sdk/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/supplements/fs-essential-functions-1.1.7.1.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/supplements/fs-essential-functions-2.2.1.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/includes/supplements/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-cs_CZ.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-da_DK.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-en.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-es_ES.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-fr_FR.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-he_IL.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-hu_HU.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-it_IT.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-ja.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-nl_NL.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-ru_RU.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-ta.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius-zh_CN.mo RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/freemius.pot RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/languages/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/package.json RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/require.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/start.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/account.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/account/billing.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/account/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/activate-license-button.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/addon.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/deactivate-license-button.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/site.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/account/payments.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/add-ons.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/add-trial-to-pricing.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/admin-notice.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/ajax-loader.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/auto-installation.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/checkout.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/connect.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/contact.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/debug.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/debug/api-calls.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/debug/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/debug/logger.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/debug/plugins-themes-sync.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/debug/scheduled-crons.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/email.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/firewall-issues-js.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/affiliation.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/data-debug-mode.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/contact.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/form.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/retry-skip.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/license-activation.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/optout.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/premium-versions-upgrade-handler.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/premium-versions-upgrade-metadata.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/resend-key.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/subscription-cancellation.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/trial-start.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/forms/user-change.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/gdpr-optin-js.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/js/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/js/jquery.content-change.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/js/open-license-activation.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/js/style-premium-theme.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/partials/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/partials/network-activation.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/plugin-icon.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/description.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/features.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/index.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/screenshots.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/powered-by.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/pricing.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/secure-https-header.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/sticky-admin-notice-js.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/tabs-capture-js.php RENAMED
File without changes
{vendor → third-party}/freemius/wordpress-sdk/templates/tabs.php RENAMED
File without changes
vendor/autoload.php DELETED
@@ -1,7 +0,0 @@
1
- <?php
2
-
3
- // autoload.php @generated by Composer
4
-
5
- require_once __DIR__ . '/composer/autoload_real.php';
6
-
7
- return ComposerAutoloaderInit3c3a224906770af49c44d9b44efb2059::getLoader();
 
 
 
 
 
 
 
vendor/composer/ClassLoader.php DELETED
@@ -1,479 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Composer.
5
- *
6
- * (c) Nils Adermann <naderman@naderman.de>
7
- * Jordi Boggiano <j.boggiano@seld.be>
8
- *
9
- * For the full copyright and license information, please view the LICENSE
10
- * file that was distributed with this source code.
11
- */
12
-
13
- namespace Composer\Autoload;
14
-
15
- /**
16
- * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
17
- *
18
- * $loader = new \Composer\Autoload\ClassLoader();
19
- *
20
- * // register classes with namespaces
21
- * $loader->add('Symfony\Component', __DIR__.'/component');
22
- * $loader->add('Symfony', __DIR__.'/framework');
23
- *
24
- * // activate the autoloader
25
- * $loader->register();
26
- *
27
- * // to enable searching the include path (eg. for PEAR packages)
28
- * $loader->setUseIncludePath(true);
29
- *
30
- * In this example, if you try to use a class in the Symfony\Component
31
- * namespace or one of its children (Symfony\Component\Console for instance),
32
- * the autoloader will first look for the class under the component/
33
- * directory, and it will then fallback to the framework/ directory if not
34
- * found before giving up.
35
- *
36
- * This class is loosely based on the Symfony UniversalClassLoader.
37
- *
38
- * @author Fabien Potencier <fabien@symfony.com>
39
- * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see https://www.php-fig.org/psr/psr-0/
41
- * @see https://www.php-fig.org/psr/psr-4/
42
- */
43
- class ClassLoader
44
- {
45
- private $vendorDir;
46
-
47
- // PSR-4
48
- private $prefixLengthsPsr4 = array();
49
- private $prefixDirsPsr4 = array();
50
- private $fallbackDirsPsr4 = array();
51
-
52
- // PSR-0
53
- private $prefixesPsr0 = array();
54
- private $fallbackDirsPsr0 = array();
55
-
56
- private $useIncludePath = false;
57
- private $classMap = array();
58
- private $classMapAuthoritative = false;
59
- private $missingClasses = array();
60
- private $apcuPrefix;
61
-
62
- private static $registeredLoaders = array();
63
-
64
- public function __construct($vendorDir = null)
65
- {
66
- $this->vendorDir = $vendorDir;
67
- }
68
-
69
- public function getPrefixes()
70
- {
71
- if (!empty($this->prefixesPsr0)) {
72
- return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
73
- }
74
-
75
- return array();
76
- }
77
-
78
- public function getPrefixesPsr4()
79
- {
80
- return $this->prefixDirsPsr4;
81
- }
82
-
83
- public function getFallbackDirs()
84
- {
85
- return $this->fallbackDirsPsr0;
86
- }
87
-
88
- public function getFallbackDirsPsr4()
89
- {
90
- return $this->fallbackDirsPsr4;
91
- }
92
-
93
- public function getClassMap()
94
- {
95
- return $this->classMap;
96
- }
97
-
98
- /**
99
- * @param array $classMap Class to filename map
100
- */
101
- public function addClassMap(array $classMap)
102
- {
103
- if ($this->classMap) {
104
- $this->classMap = array_merge($this->classMap, $classMap);
105
- } else {
106
- $this->classMap = $classMap;
107
- }
108
- }
109
-
110
- /**
111
- * Registers a set of PSR-0 directories for a given prefix, either
112
- * appending or prepending to the ones previously set for this prefix.
113
- *
114
- * @param string $prefix The prefix
115
- * @param array|string $paths The PSR-0 root directories
116
- * @param bool $prepend Whether to prepend the directories
117
- */
118
- public function add($prefix, $paths, $prepend = false)
119
- {
120
- if (!$prefix) {
121
- if ($prepend) {
122
- $this->fallbackDirsPsr0 = array_merge(
123
- (array) $paths,
124
- $this->fallbackDirsPsr0
125
- );
126
- } else {
127
- $this->fallbackDirsPsr0 = array_merge(
128
- $this->fallbackDirsPsr0,
129
- (array) $paths
130
- );
131
- }
132
-
133
- return;
134
- }
135
-
136
- $first = $prefix[0];
137
- if (!isset($this->prefixesPsr0[$first][$prefix])) {
138
- $this->prefixesPsr0[$first][$prefix] = (array) $paths;
139
-
140
- return;
141
- }
142
- if ($prepend) {
143
- $this->prefixesPsr0[$first][$prefix] = array_merge(
144
- (array) $paths,
145
- $this->prefixesPsr0[$first][$prefix]
146
- );
147
- } else {
148
- $this->prefixesPsr0[$first][$prefix] = array_merge(
149
- $this->prefixesPsr0[$first][$prefix],
150
- (array) $paths
151
- );
152
- }
153
- }
154
-
155
- /**
156
- * Registers a set of PSR-4 directories for a given namespace, either
157
- * appending or prepending to the ones previously set for this namespace.
158
- *
159
- * @param string $prefix The prefix/namespace, with trailing '\\'
160
- * @param array|string $paths The PSR-4 base directories
161
- * @param bool $prepend Whether to prepend the directories
162
- *
163
- * @throws \InvalidArgumentException
164
- */
165
- public function addPsr4($prefix, $paths, $prepend = false)
166
- {
167
- if (!$prefix) {
168
- // Register directories for the root namespace.
169
- if ($prepend) {
170
- $this->fallbackDirsPsr4 = array_merge(
171
- (array) $paths,
172
- $this->fallbackDirsPsr4
173
- );
174
- } else {
175
- $this->fallbackDirsPsr4 = array_merge(
176
- $this->fallbackDirsPsr4,
177
- (array) $paths
178
- );
179
- }
180
- } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
181
- // Register directories for a new namespace.
182
- $length = strlen($prefix);
183
- if ('\\' !== $prefix[$length - 1]) {
184
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
185
- }
186
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
187
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
188
- } elseif ($prepend) {
189
- // Prepend directories for an already registered namespace.
190
- $this->prefixDirsPsr4[$prefix] = array_merge(
191
- (array) $paths,
192
- $this->prefixDirsPsr4[$prefix]
193
- );
194
- } else {
195
- // Append directories for an already registered namespace.
196
- $this->prefixDirsPsr4[$prefix] = array_merge(
197
- $this->prefixDirsPsr4[$prefix],
198
- (array) $paths
199
- );
200
- }
201
- }
202
-
203
- /**
204
- * Registers a set of PSR-0 directories for a given prefix,
205
- * replacing any others previously set for this prefix.
206
- *
207
- * @param string $prefix The prefix
208
- * @param array|string $paths The PSR-0 base directories
209
- */
210
- public function set($prefix, $paths)
211
- {
212
- if (!$prefix) {
213
- $this->fallbackDirsPsr0 = (array) $paths;
214
- } else {
215
- $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
216
- }
217
- }
218
-
219
- /**
220
- * Registers a set of PSR-4 directories for a given namespace,
221
- * replacing any others previously set for this namespace.
222
- *
223
- * @param string $prefix The prefix/namespace, with trailing '\\'
224
- * @param array|string $paths The PSR-4 base directories
225
- *
226
- * @throws \InvalidArgumentException
227
- */
228
- public function setPsr4($prefix, $paths)
229
- {
230
- if (!$prefix) {
231
- $this->fallbackDirsPsr4 = (array) $paths;
232
- } else {
233
- $length = strlen($prefix);
234
- if ('\\' !== $prefix[$length - 1]) {
235
- throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
236
- }
237
- $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
238
- $this->prefixDirsPsr4[$prefix] = (array) $paths;
239
- }
240
- }
241
-
242
- /**
243
- * Turns on searching the include path for class files.
244
- *
245
- * @param bool $useIncludePath
246
- */
247
- public function setUseIncludePath($useIncludePath)
248
- {
249
- $this->useIncludePath = $useIncludePath;
250
- }
251
-
252
- /**
253
- * Can be used to check if the autoloader uses the include path to check
254
- * for classes.
255
- *
256
- * @return bool
257
- */
258
- public function getUseIncludePath()
259
- {
260
- return $this->useIncludePath;
261
- }
262
-
263
- /**
264
- * Turns off searching the prefix and fallback directories for classes
265
- * that have not been registered with the class map.
266
- *
267
- * @param bool $classMapAuthoritative
268
- */
269
- public function setClassMapAuthoritative($classMapAuthoritative)
270
- {
271
- $this->classMapAuthoritative = $classMapAuthoritative;
272
- }
273
-
274
- /**
275
- * Should class lookup fail if not found in the current class map?
276
- *
277
- * @return bool
278
- */
279
- public function isClassMapAuthoritative()
280
- {
281
- return $this->classMapAuthoritative;
282
- }
283
-
284
- /**
285
- * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
286
- *
287
- * @param string|null $apcuPrefix
288
- */
289
- public function setApcuPrefix($apcuPrefix)
290
- {
291
- $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
292
- }
293
-
294
- /**
295
- * The APCu prefix in use, or null if APCu caching is not enabled.
296
- *
297
- * @return string|null
298
- */
299
- public function getApcuPrefix()
300
- {
301
- return $this->apcuPrefix;
302
- }
303
-
304
- /**
305
- * Registers this instance as an autoloader.
306
- *
307
- * @param bool $prepend Whether to prepend the autoloader or not
308
- */
309
- public function register($prepend = false)
310
- {
311
- spl_autoload_register(array($this, 'loadClass'), true, $prepend);
312
-
313
- if (null === $this->vendorDir) {
314
- return;
315
- }
316
-
317
- if ($prepend) {
318
- self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
319
- } else {
320
- unset(self::$registeredLoaders[$this->vendorDir]);
321
- self::$registeredLoaders[$this->vendorDir] = $this;
322
- }
323
- }
324
-
325
- /**
326
- * Unregisters this instance as an autoloader.
327
- */
328
- public function unregister()
329
- {
330
- spl_autoload_unregister(array($this, 'loadClass'));
331
-
332
- if (null !== $this->vendorDir) {
333
- unset(self::$registeredLoaders[$this->vendorDir]);
334
- }
335
- }
336
-
337
- /**
338
- * Loads the given class or interface.
339
- *
340
- * @param string $class The name of the class
341
- * @return bool|null True if loaded, null otherwise
342
- */
343
- public function loadClass($class)
344
- {
345
- if ($file = $this->findFile($class)) {
346
- includeFile($file);
347
-
348
- return true;
349
- }
350
- }
351
-
352
- /**
353
- * Finds the path to the file where the class is defined.
354
- *
355
- * @param string $class The name of the class
356
- *
357
- * @return string|false The path if found, false otherwise
358
- */
359
- public function findFile($class)
360
- {
361
- // class map lookup
362
- if (isset($this->classMap[$class])) {
363
- return $this->classMap[$class];
364
- }
365
- if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
366
- return false;
367
- }
368
- if (null !== $this->apcuPrefix) {
369
- $file = apcu_fetch($this->apcuPrefix.$class, $hit);
370
- if ($hit) {
371
- return $file;
372
- }
373
- }
374
-
375
- $file = $this->findFileWithExtension($class, '.php');
376
-
377
- // Search for Hack files if we are running on HHVM
378
- if (false === $file && defined('HHVM_VERSION')) {
379
- $file = $this->findFileWithExtension($class, '.hh');
380
- }
381
-
382
- if (null !== $this->apcuPrefix) {
383
- apcu_add($this->apcuPrefix.$class, $file);
384
- }
385
-
386
- if (false === $file) {
387
- // Remember that this class does not exist.
388
- $this->missingClasses[$class] = true;
389
- }
390
-
391
- return $file;
392
- }
393
-
394
- /**
395
- * Returns the currently registered loaders indexed by their corresponding vendor directories.
396
- *
397
- * @return self[]
398
- */
399
- public static function getRegisteredLoaders()
400
- {
401
- return self::$registeredLoaders;
402
- }
403
-
404
- private function findFileWithExtension($class, $ext)
405
- {
406
- // PSR-4 lookup
407
- $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
408
-
409
- $first = $class[0];
410
- if (isset($this->prefixLengthsPsr4[$first])) {
411
- $subPath = $class;
412
- while (false !== $lastPos = strrpos($subPath, '\\')) {
413
- $subPath = substr($subPath, 0, $lastPos);
414
- $search = $subPath . '\\';
415
- if (isset($this->prefixDirsPsr4[$search])) {
416
- $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
417
- foreach ($this->prefixDirsPsr4[$search] as $dir) {
418
- if (file_exists($file = $dir . $pathEnd)) {
419
- return $file;
420
- }
421
- }
422
- }
423
- }
424
- }
425
-
426
- // PSR-4 fallback dirs
427
- foreach ($this->fallbackDirsPsr4 as $dir) {
428
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
429
- return $file;
430
- }
431
- }
432
-
433
- // PSR-0 lookup
434
- if (false !== $pos = strrpos($class, '\\')) {
435
- // namespaced class name
436
- $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
437
- . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
438
- } else {
439
- // PEAR-like class name
440
- $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
441
- }
442
-
443
- if (isset($this->prefixesPsr0[$first])) {
444
- foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
445
- if (0 === strpos($class, $prefix)) {
446
- foreach ($dirs as $dir) {
447
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
448
- return $file;
449
- }
450
- }
451
- }
452
- }
453
- }
454
-
455
- // PSR-0 fallback dirs
456
- foreach ($this->fallbackDirsPsr0 as $dir) {
457
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
458
- return $file;
459
- }
460
- }
461
-
462
- // PSR-0 include paths.
463
- if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
464
- return $file;
465
- }
466
-
467
- return false;
468
- }
469
- }
470
-
471
- /**
472
- * Scope isolated include.
473
- *
474
- * Prevents access to $this/self from included files.
475
- */
476
- function includeFile($file)
477
- {
478
- include $file;
479
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/InstalledVersions.php DELETED
@@ -1,294 +0,0 @@
1
- <?php
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
- namespace Composer;
14
-
15
- use Composer\Autoload\ClassLoader;
16
- use Composer\Semver\VersionParser;
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
- class InstalledVersions
26
- {
27
- private static $installed = array (
28
- 'root' =>
29
- array (
30
- 'pretty_version' => 'dev-develop',
31
- 'version' => 'dev-develop',
32
- 'aliases' =>
33
- array (
34
- ),
35
- 'reference' => 'b7d38674097985e2d77ffbe382ca002f70a12014',
36
- 'name' => '__root__',
37
- ),
38
- 'versions' =>
39
- array (
40
- '__root__' =>
41
- array (
42
- 'pretty_version' => 'dev-develop',
43
- 'version' => 'dev-develop',
44
- 'aliases' =>
45
- array (
46
- ),
47
- 'reference' => 'b7d38674097985e2d77ffbe382ca002f70a12014',
48
- ),
49
- 'freemius/wordpress-sdk' =>
50
- array (
51
- 'pretty_version' => '2.4.2',
52
- 'version' => '2.4.2.0',
53
- 'aliases' =>
54
- array (
55
- ),
56
- 'reference' => '84a9be4717effd7697a217e0d931f48ae0d2ecc6',
57
- ),
58
- ),
59
- );
60
- private static $canGetVendors;
61
- private static $installedByVendor = array();
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
- public static function getInstalledPackages()
70
- {
71
- $packages = array();
72
- foreach (self::getInstalled() as $installed) {
73
- $packages[] = array_keys($installed['versions']);
74
- }
75
-
76
- if (1 === \count($packages)) {
77
- return $packages[0];
78
- }
79
-
80
- return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
81
- }
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
- public static function isInstalled($packageName)
92
- {
93
- foreach (self::getInstalled() as $installed) {
94
- if (isset($installed['versions'][$packageName])) {
95
- return true;
96
- }
97
- }
98
-
99
- return false;
100
- }
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
- public static function satisfies(VersionParser $parser, $packageName, $constraint)
116
- {
117
- $constraint = $parser->parseConstraints($constraint);
118
- $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
119
-
120
- return $provided->matches($constraint);
121
- }
122
-
123
-
124
-
125
-
126
-
127
-
128
-
129
-
130
-
131
-
132
- public static function getVersionRanges($packageName)
133
- {
134
- foreach (self::getInstalled() as $installed) {
135
- if (!isset($installed['versions'][$packageName])) {
136
- continue;
137
- }
138
-
139
- $ranges = array();
140
- if (isset($installed['versions'][$packageName]['pretty_version'])) {
141
- $ranges[] = $installed['versions'][$packageName]['pretty_version'];
142
- }
143
- if (array_key_exists('aliases', $installed['versions'][$packageName])) {
144
- $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
145
- }
146
- if (array_key_exists('replaced', $installed['versions'][$packageName])) {
147
- $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
148
- }
149
- if (array_key_exists('provided', $installed['versions'][$packageName])) {
150
- $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
151
- }
152
-
153
- return implode(' || ', $ranges);
154
- }
155
-
156
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
157
- }
158
-
159
-
160
-
161
-
162
-
163
- public static function getVersion($packageName)
164
- {
165
- foreach (self::getInstalled() as $installed) {
166
- if (!isset($installed['versions'][$packageName])) {
167
- continue;
168
- }
169
-
170
- if (!isset($installed['versions'][$packageName]['version'])) {
171
- return null;
172
- }
173
-
174
- return $installed['versions'][$packageName]['version'];
175
- }
176
-
177
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
178
- }
179
-
180
-
181
-
182
-
183
-
184
- public static function getPrettyVersion($packageName)
185
- {
186
- foreach (self::getInstalled() as $installed) {
187
- if (!isset($installed['versions'][$packageName])) {
188
- continue;
189
- }
190
-
191
- if (!isset($installed['versions'][$packageName]['pretty_version'])) {
192
- return null;
193
- }
194
-
195
- return $installed['versions'][$packageName]['pretty_version'];
196
- }
197
-
198
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
199
- }
200
-
201
-
202
-
203
-
204
-
205
- public static function getReference($packageName)
206
- {
207
- foreach (self::getInstalled() as $installed) {
208
- if (!isset($installed['versions'][$packageName])) {
209
- continue;
210
- }
211
-
212
- if (!isset($installed['versions'][$packageName]['reference'])) {
213
- return null;
214
- }
215
-
216
- return $installed['versions'][$packageName]['reference'];
217
- }
218
-
219
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
220
- }
221
-
222
-
223
-
224
-
225
-
226
- public static function getRootPackage()
227
- {
228
- $installed = self::getInstalled();
229
-
230
- return $installed[0]['root'];
231
- }
232
-
233
-
234
-
235
-
236
-
237
-
238
-
239
- public static function getRawData()
240
- {
241
- return self::$installed;
242
- }
243
-
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
-
252
-
253
-
254
-
255
-
256
-
257
-
258
-
259
-
260
-
261
-
262
- public static function reload($data)
263
- {
264
- self::$installed = $data;
265
- self::$installedByVendor = array();
266
- }
267
-
268
-
269
-
270
-
271
-
272
- private static function getInstalled()
273
- {
274
- if (null === self::$canGetVendors) {
275
- self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
276
- }
277
-
278
- $installed = array();
279
-
280
- if (self::$canGetVendors) {
281
- foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
282
- if (isset(self::$installedByVendor[$vendorDir])) {
283
- $installed[] = self::$installedByVendor[$vendorDir];
284
- } elseif (is_file($vendorDir.'/composer/installed.php')) {
285
- $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
286
- }
287
- }
288
- }
289
-
290
- $installed[] = self::$installed;
291
-
292
- return $installed;
293
- }
294
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/LICENSE DELETED
@@ -1,21 +0,0 @@
1
-
2
- Copyright (c) Nils Adermann, Jordi Boggiano
3
-
4
- Permission is hereby granted, free of charge, to any person obtaining a copy
5
- of this software and associated documentation files (the "Software"), to deal
6
- in the Software without restriction, including without limitation the rights
7
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- copies of the Software, and to permit persons to whom the Software is furnished
9
- to do so, subject to the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be included in all
12
- copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
- THE SOFTWARE.
21
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_classmap.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- // autoload_classmap.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
- );
 
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_namespaces.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
-
3
- // autoload_namespaces.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- );
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_psr4.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
-
3
- // autoload_psr4.php @generated by Composer
4
-
5
- $vendorDir = dirname(dirname(__FILE__));
6
- $baseDir = dirname($vendorDir);
7
-
8
- return array(
9
- );
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_real.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
-
3
- // autoload_real.php @generated by Composer
4
-
5
- class ComposerAutoloaderInit3c3a224906770af49c44d9b44efb2059
6
- {
7
- private static $loader;
8
-
9
- public static function loadClassLoader($class)
10
- {
11
- if ('Composer\Autoload\ClassLoader' === $class) {
12
- require __DIR__ . '/ClassLoader.php';
13
- }
14
- }
15
-
16
- /**
17
- * @return \Composer\Autoload\ClassLoader
18
- */
19
- public static function getLoader()
20
- {
21
- if (null !== self::$loader) {
22
- return self::$loader;
23
- }
24
-
25
- require __DIR__ . '/platform_check.php';
26
-
27
- spl_autoload_register(array('ComposerAutoloaderInit3c3a224906770af49c44d9b44efb2059', 'loadClassLoader'), true, true);
28
- self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
- spl_autoload_unregister(array('ComposerAutoloaderInit3c3a224906770af49c44d9b44efb2059', 'loadClassLoader'));
30
-
31
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
- if ($useStaticLoader) {
33
- require __DIR__ . '/autoload_static.php';
34
-
35
- call_user_func(\Composer\Autoload\ComposerStaticInit3c3a224906770af49c44d9b44efb2059::getInitializer($loader));
36
- } else {
37
- $map = require __DIR__ . '/autoload_namespaces.php';
38
- foreach ($map as $namespace => $path) {
39
- $loader->set($namespace, $path);
40
- }
41
-
42
- $map = require __DIR__ . '/autoload_psr4.php';
43
- foreach ($map as $namespace => $path) {
44
- $loader->setPsr4($namespace, $path);
45
- }
46
-
47
- $classMap = require __DIR__ . '/autoload_classmap.php';
48
- if ($classMap) {
49
- $loader->addClassMap($classMap);
50
- }
51
- }
52
-
53
- $loader->register(true);
54
-
55
- return $loader;
56
- }
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_static.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
-
3
- // autoload_static.php @generated by Composer
4
-
5
- namespace Composer\Autoload;
6
-
7
- class ComposerStaticInit3c3a224906770af49c44d9b44efb2059
8
- {
9
- public static $classMap = array (
10
- 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
11
- );
12
-
13
- public static function getInitializer(ClassLoader $loader)
14
- {
15
- return \Closure::bind(function () use ($loader) {
16
- $loader->classMap = ComposerStaticInit3c3a224906770af49c44d9b44efb2059::$classMap;
17
-
18
- }, null, ClassLoader::class);
19
- }
20
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installed.json DELETED
@@ -1,48 +0,0 @@
1
- {
2
- "packages": [
3
- {
4
- "name": "freemius/wordpress-sdk",
5
- "version": "2.4.2",
6
- "version_normalized": "2.4.2.0",
7
- "source": {
8
- "type": "git",
9
- "url": "https://github.com/Freemius/wordpress-sdk.git",
10
- "reference": "84a9be4717effd7697a217e0d931f48ae0d2ecc6"
11
- },
12
- "dist": {
13
- "type": "zip",
14
- "url": "https://api.github.com/repos/Freemius/wordpress-sdk/zipball/84a9be4717effd7697a217e0d931f48ae0d2ecc6",
15
- "reference": "84a9be4717effd7697a217e0d931f48ae0d2ecc6",
16
- "shasum": ""
17
- },
18
- "require": {
19
- "php": ">=5.2"
20
- },
21
- "time": "2021-02-08T16:47:44+00:00",
22
- "type": "library",
23
- "installation-source": "dist",
24
- "notification-url": "https://packagist.org/downloads/",
25
- "license": [
26
- "GPL-3.0-only"
27
- ],
28
- "description": "Freemius WordPress SDK",
29
- "homepage": "https://freemius.com",
30
- "keywords": [
31
- "freemius",
32
- "plugin",
33
- "sdk",
34
- "theme",
35
- "wordpress",
36
- "wordpress-plugin",
37
- "wordpress-theme"
38
- ],
39
- "support": {
40
- "issues": "https://github.com/Freemius/wordpress-sdk/issues",
41
- "source": "https://github.com/Freemius/wordpress-sdk/tree/2.4.2"
42
- },
43
- "install-path": "../freemius/wordpress-sdk"
44
- }
45
- ],
46
- "dev": true,
47
- "dev-package-names": []
48
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installed.php DELETED
@@ -1,33 +0,0 @@
1
- <?php return array (
2
- 'root' =>
3
- array (
4
- 'pretty_version' => 'dev-develop',
5
- 'version' => 'dev-develop',
6
- 'aliases' =>
7
- array (
8
- ),
9
- 'reference' => 'b7d38674097985e2d77ffbe382ca002f70a12014',
10
- 'name' => '__root__',
11
- ),
12
- 'versions' =>
13
- array (
14
- '__root__' =>
15
- array (
16
- 'pretty_version' => 'dev-develop',
17
- 'version' => 'dev-develop',
18
- 'aliases' =>
19
- array (
20
- ),
21
- 'reference' => 'b7d38674097985e2d77ffbe382ca002f70a12014',
22
- ),
23
- 'freemius/wordpress-sdk' =>
24
- array (
25
- 'pretty_version' => '2.4.2',
26
- 'version' => '2.4.2.0',
27
- 'aliases' =>
28
- array (
29
- ),
30
- 'reference' => '84a9be4717effd7697a217e0d931f48ae0d2ecc6',
31
- ),
32
- ),
33
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/platform_check.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
-
3
- // platform_check.php @generated by Composer
4
-
5
- $issues = array();
6
-
7
- if (!(PHP_VERSION_ID >= 50200)) {
8
- $issues[] = 'Your Composer dependencies require a PHP version ">= 5.2.0". You are running ' . PHP_VERSION . '.';
9
- }
10
-
11
- if ($issues) {
12
- if (!headers_sent()) {
13
- header('HTTP/1.1 500 Internal Server Error');
14
- }
15
- if (!ini_get('display_errors')) {
16
- if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
17
- fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
18
- } elseif (!headers_sent()) {
19
- echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
20
- }
21
- }
22
- trigger_error(
23
- 'Composer detected issues in your platform: ' . implode(' ', $issues),
24
- E_USER_ERROR
25
- );
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
wp-security-audit-log.php CHANGED
@@ -1,23 +1,23 @@
1
  <?php
2
  /**
3
  * Plugin Name: WP Activity Log
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.3.0
8
  * Text Domain: wp-security-audit-log
9
  * Author URI: https://www.wpwhitesecurity.com/
10
  * License: GPL2
11
  * Network: true
12
  *
13
- * @package Wsal
14
  *
15
  * @fs_premium_only /extensions/, /sdk/twilio-php/
16
  */
17
 
18
  /*
19
  WP Activity Log
20
- Copyright(c) 2020 WP White Security (email : info@wpwhitesecurity.com)
21
 
22
  This program is free software; you can redistribute it and/or modify
23
  it under the terms of the GNU General Public License, version 2, as
@@ -40,7 +40,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
40
  /**
41
  * WSAL Main Class.
42
  *
43
- * @package Wsal
44
  */
45
  class WpSecurityAuditLog {
46
 
@@ -49,7 +49,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
49
  *
50
  * @var string
51
  */
52
- public $version = '4.3.0';
53
 
54
  /**
55
  * Plugin constants.
@@ -63,7 +63,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
63
  *
64
  * @var string
65
  */
66
- const MIN_PHP_VERSION = '5.5.0';
67
 
68
  /**
69
  * New option name prefix.
@@ -94,7 +94,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
94
  public $sensors;
95
 
96
  /**
97
- * Settings manager. Accessed via $this->settings, which lazy-loads it.
98
  *
99
  * @var WSAL_Settings
100
  */
@@ -142,6 +142,15 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
142
  */
143
  public $allowed_html_tags = array();
144
 
 
 
 
 
 
 
 
 
 
145
  /**
146
  * Standard singleton pattern.
147
  * WARNING! To ensure the system always works as expected, AVOID using this method.
@@ -460,10 +469,12 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
460
  public function init_hooks() {
461
  add_action( 'init', array( $this, 'init' ), 5 );
462
 
463
- // Listen for cleanup event.
464
- add_action( 'wsal_cleanup', array( $this, 'CleanUp' ) );
 
 
465
 
466
- // Render wsal footer.
467
  add_action( 'admin_footer', array( $this, 'render_footer' ) );
468
 
469
  // Plugin redirect on activation.
@@ -499,14 +510,14 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
499
  $plugin_installer_ajax = new WSAL_PluginInstallerAction();
500
  $plugin_installer_ajax->register();
501
 
502
- $yoast_seo_addon = new WSAL_YoastSeoExtension;
503
- $bbpress_addon = new WSAL_BBPressExtension;
504
- $wpforms_addon = new WSAL_WPFormsExtension;
505
- $gravityforms_addon = new WSAL_GravityFormsExtension;
506
  }
507
 
508
  // Extensions which are both admin and frontend based.
509
- $woocommerce_addon = new WSAL_WooCommerceExtension;
510
 
511
  // Dequeue conflicting scripts.
512
  add_action( 'wp_print_scripts', array( $this, 'dequeue_conflicting_scripts' ) );
@@ -669,6 +680,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
669
  wsal_freemius()->add_filter( 'freemius_pricing_js_path', function ( $default_pricing_js_path ) {
670
  return WSAL_BASE_DIR . 'js/freemius-pricing/freemius-pricing.js';
671
  } );
 
672
  }
673
  }
674
  }
@@ -1105,19 +1117,6 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1105
  }
1106
 
1107
  if ( is_admin() ) {
1108
- if ( $this->settings()->IsArchivingEnabled() ) {
1109
- // Check the current page.
1110
- $get_page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
1111
- if ( ( ! isset( $get_page ) || 'wsal-auditlog' !== $get_page ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
1112
- $selected_db = get_transient( 'wsal_wp_selected_db' );
1113
- $selected_db_user = (int) get_transient( 'wsal_wp_selected_db_user' );
1114
- if ( $selected_db && ( get_current_user_id() === $selected_db_user ) ) {
1115
- // Delete the transient.
1116
- delete_transient( 'wsal_wp_selected_db' );
1117
- delete_transient( 'wsal_wp_selected_db_user' );
1118
- }
1119
- }
1120
- }
1121
 
1122
  // Hide plugin.
1123
  if ( $this->settings()->IsIncognito() ) {
@@ -1191,6 +1190,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1191
  $filter_input_args = array(
1192
  'disable_nonce' => FILTER_SANITIZE_STRING,
1193
  'notice' => FILTER_SANITIZE_STRING,
 
1194
  );
1195
 
1196
  // Filter $_POST array for security.
@@ -1200,31 +1200,45 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1200
  die();
1201
  }
1202
 
1203
- $excluded_meta_raw = $this->GetGlobalSetting( 'excluded-custom' );
1204
- $excluded_meta = [];
1205
- if ( isset( $excluded_meta_raw ) && '' != $excluded_meta_raw ) {
1206
- $excluded_meta = explode(',', $excluded_meta_raw);
1207
- }
1208
-
1209
- array_push( $excluded_meta, esc_html( $post_array['notice'] ) );
1210
- $this->SetGlobalSetting( 'excluded-custom', implode(',', array_unique( $excluded_meta ) ) );
1211
-
1212
- // Exclude object link.
1213
- $exclude_objects_link = add_query_arg(
1214
- array(
1215
- 'page' => 'wsal-settings',
1216
- 'tab' => 'exclude-objects',
1217
- ),
1218
- network_admin_url( 'admin.php' )
1219
- );
1220
- echo wp_sprintf(
1221
- '<p>' . __( 'Custom Field <strong>%1$s</strong> is no longer being monitored.<br />Enable the monitoring of this custom field again from the', 'wp-security-audit-log' ) . ' <a href="%2$s">%3$s</a>%4$s</p>',
1222
- $post_array['notice'],
1223
- $exclude_objects_link,
1224
- __( 'Excluded Objects', 'wp-security-audit-log' ),
1225
- __( ' tab in the plugin settings', 'wp-security-audit-log' )
1226
- );
1227
- die;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1228
  }
1229
 
1230
  /**
@@ -1381,11 +1395,6 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1381
  self::getConnector()->getAdapter( 'Occurrence' )->create_indexes();
1382
  self::getConnector()->getAdapter( 'Meta' )->create_indexes();
1383
 
1384
- if ( $this->settings()->IsArchivingEnabled() ) {
1385
- $this->settings()->SwitchToArchiveDB();
1386
- self::getConnector()->getAdapter( 'Occurrence' )->create_indexes();
1387
- self::getConnector()->getAdapter( 'Meta' )->create_indexes();
1388
- }
1389
 
1390
  // If system already installed, do updates now (if any).
1391
  $old_version = $this->GetOldVersion();
@@ -1423,11 +1432,14 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1423
  // Update version in db.
1424
  $this->SetGlobalSetting( 'version', $new_version );
1425
 
1426
- if ( '0.0.0' === $old_version ) {
1427
- // set some initial plugins settings (only the ones that bypass the regular settings retrieval at some
1428
- // point) - e.g. disabled events
1429
- $this->SetGlobalSetting( 'disabled-alerts', implode( ',', $this->settings()->always_disabled_alerts ) );
1430
- }
 
 
 
1431
 
1432
  // Do version-to-version specific changes.
1433
  if ( '0.0.0' !== $old_version && -1 === version_compare( $old_version, $new_version ) ) {
@@ -1507,69 +1519,18 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1507
  // delete dev options from the settings
1508
  $this->DeleteGlobalSetting( 'dev-options' );
1509
  }
1510
- }
1511
- }
1512
 
1513
- /**
1514
- * Migrate data from old plugin.
1515
- */
1516
- public function Migrate() {
1517
- global $wpdb;
1518
- static $mig_types = array(
1519
- 3000 => 5006,
1520
- );
1521
 
1522
- // Load data.
1523
- $sql = 'SELECT * FROM ' . $wpdb->base_prefix . 'wordpress_auditlog_events';
1524
- $events = array();
1525
- foreach ( $wpdb->get_results( $sql, ARRAY_A ) as $item ) {
1526
- $events[ $item['EventID'] ] = $item;
1527
- }
1528
- $sql = 'SELECT * FROM ' . $wpdb->base_prefix . 'wordpress_auditlog';
1529
- $auditlog = $wpdb->get_results( $sql, ARRAY_A );
1530
-
1531
- // Migrate using db logger.
1532
- foreach ( $auditlog as $entry ) {
1533
- $data = array(
1534
- 'ClientIP' => $entry['UserIP'],
1535
- 'UserAgent' => '',
1536
- 'CurrentUserID' => $entry['UserID'],
1537
- );
1538
- if ( $entry['UserName'] ) {
1539
- $data['Username'] = base64_decode( $entry['UserName'] );
1540
- }
1541
- $mesg = $events[ $entry['EventID'] ]['EventDescription'];
1542
- $date = strtotime( $entry['EventDate'] );
1543
- $type = $entry['EventID'];
1544
- if ( isset( $mig_types[ $type ] ) ) {
1545
- $type = $mig_types[ $type ];
1546
- }
1547
- // Convert message from '<strong>%s</strong>' to '%Arg1%' format.
1548
- $c = 0;
1549
- $n = '<strong>%s</strong>';
1550
- $l = strlen( $n );
1551
- while ( ( $pos = strpos( $mesg, $n ) ) !== false ) {
1552
- $mesg = substr_replace( $mesg, '%MigratedArg' . ( $c++ ) . '%', $pos, $l );
1553
- }
1554
- $data['MigratedMesg'] = $mesg;
1555
- // Generate new meta data args.
1556
- $temp = unserialize( base64_decode( $entry['EventData'] ) );
1557
- foreach ( (array) $temp as $i => $item ) {
1558
- $data[ 'MigratedArg' . $i ] = $item;
1559
- }
1560
- // send event data to logger!
1561
- foreach ( $this->alerts->GetLoggers() as $logger ) {
1562
- $logger->Log( $type, $data, $date, $entry['BlogId'], true );
1563
- }
1564
  }
1565
-
1566
- // Migrate settings.
1567
- $this->settings()->SetAllowedPluginViewers(
1568
- get_option( 'WPPH_PLUGIN_ALLOW_ACCESS' )
1569
- );
1570
- $s = get_option( 'wpph_plugin_settings' );
1571
- $this->settings()->SetViewPerPage( max( $s->showEventsViewList, 5 ) );
1572
- $this->settings()->SetWidgetsEnabled( $s->showDW );
1573
  }
1574
 
1575
  /**
@@ -1794,14 +1755,14 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1794
  /**
1795
  * DB connection.
1796
  *
1797
- * @param mixed $config DB configuration.
1798
  * @param bool $reset - True if reset.
1799
  *
1800
  * @return WSAL_Connector_ConnectorInterface
1801
  * @throws Freemius_Exception
1802
  */
1803
  public static function getConnector( $config = null, $reset = false ) {
1804
- return WSAL_Connector_ConnectorFactory::getConnector( $config, $reset );
1805
  }
1806
 
1807
  /**
@@ -1814,16 +1775,6 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1814
  return self::getConnector()->isInstalled();
1815
  }
1816
 
1817
- /**
1818
- * Whether the old plugin was present or not.
1819
- *
1820
- * @return boolean
1821
- * @throws Freemius_Exception
1822
- */
1823
- public function CanMigrate() {
1824
- return self::getConnector()->canMigrate();
1825
- }
1826
-
1827
  /**
1828
  * Absolute URL to plugin directory WITHOUT final slash.
1829
  *
@@ -2050,12 +2001,23 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
2050
  return $plugins;
2051
  }
2052
 
 
 
2053
  // Find WSAL by plugin basename.
2054
  if ( array_key_exists( WSAL_BASE_NAME, $plugins ) ) {
2055
  // Remove WSAL plugin from plugin list page.
2056
  unset( $plugins[ WSAL_BASE_NAME ] );
2057
  }
2058
 
 
 
 
 
 
 
 
 
 
2059
  return $plugins;
2060
  }
2061
 
@@ -2214,13 +2176,20 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
2214
  wp_deregister_script( 'dateformat' );
2215
  }
2216
  }
2217
- }
2218
 
2219
- // load composer libraries if available
2220
- $autoloader_file_path = plugin_dir_path( __FILE__ ) . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
2221
- if ( file_exists( $autoloader_file_path ) ) {
2222
- require_once $autoloader_file_path;
2223
- }
 
 
 
 
 
 
 
 
2224
 
2225
  // Begin load sequence.
2226
  WpSecurityAuditLog::GetInstance();
@@ -2237,19 +2206,21 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
2237
  } else {
2238
  wsal_freemius()->set_basename( true, __FILE__ );
2239
  }
2240
- /**
2241
- * Takes care of deactivation of the premium plugin when the free plugin is activated. The opposite direction is handled
2242
- * by Freemius SDK.
2243
- *
2244
- * Note: This code MUST NOT be present in the premium version an is removed automatically during the build process.
2245
- *
2246
- * @since latest
2247
- */
2248
- function wsal_free_on_plugin_activation() {
2249
- $premium_version_slug = 'wp-security-audit-log-premium/wp-security-audit-log.php';
2250
- if ( WpSecurityAuditLog::is_plugin_active( $premium_version_slug ) ) {
2251
- deactivate_plugins( $premium_version_slug, true );
 
 
2252
  }
2253
- }
2254
 
2255
- register_activation_hook( __FILE__, 'wsal_free_on_plugin_activation' );
 
1
  <?php
2
  /**
3
  * Plugin Name: WP Activity Log
4
+ * Plugin URI: https://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.3.2
8
  * Text Domain: wp-security-audit-log
9
  * Author URI: https://www.wpwhitesecurity.com/
10
  * License: GPL2
11
  * Network: true
12
  *
13
+ * @package wsal
14
  *
15
  * @fs_premium_only /extensions/, /sdk/twilio-php/
16
  */
17
 
18
  /*
19
  WP Activity Log
20
+ Copyright(c) 2021 WP White Security (email : info@wpwhitesecurity.com)
21
 
22
  This program is free software; you can redistribute it and/or modify
23
  it under the terms of the GNU General Public License, version 2, as
40
  /**
41
  * WSAL Main Class.
42
  *
43
+ * @package wsal
44
  */
45
  class WpSecurityAuditLog {
46
 
49
  *
50
  * @var string
51
  */
52
+ public $version = '4.3.2';
53
 
54
  /**
55
  * Plugin constants.
63
  *
64
  * @var string
65
  */
66
+ const MIN_PHP_VERSION = '7.0.0';
67
 
68
  /**
69
  * New option name prefix.
94
  public $sensors;
95
 
96
  /**
97
+ * Settings manager.
98
  *
99
  * @var WSAL_Settings
100
  */
142
  */
143
  public $allowed_html_tags = array();
144
 
145
+
146
+ /**
147
+ * List of third party extensions.
148
+ *
149
+ * @var WSAL_AbstractExtension[]
150
+ * @since 4.3.2
151
+ */
152
+ public $third_party_extensions = [];
153
+
154
  /**
155
  * Standard singleton pattern.
156
  * WARNING! To ensure the system always works as expected, AVOID using this method.
469
  public function init_hooks() {
470
  add_action( 'init', array( $this, 'init' ), 5 );
471
 
472
+ // Listen for cleanup event.
473
+ add_action( 'wsal_cleanup', array( $this, 'CleanUp' ) );
474
+
475
+ add_action( 'shutdown', array( $this, 'close_external_connection' ), 999 );
476
 
477
+ // Render wsal footer.
478
  add_action( 'admin_footer', array( $this, 'render_footer' ) );
479
 
480
  // Plugin redirect on activation.
510
  $plugin_installer_ajax = new WSAL_PluginInstallerAction();
511
  $plugin_installer_ajax->register();
512
 
513
+ $yoast_seo_addon = new WSAL_YoastSeoExtension();
514
+ $bbpress_addon = new WSAL_BBPressExtension();
515
+ $wpforms_addon = new WSAL_WPFormsExtension();
516
+ $gravityforms_addon = new WSAL_GravityFormsExtension();
517
  }
518
 
519
  // Extensions which are both admin and frontend based.
520
+ $woocommerce_addon = new WSAL_WooCommerceExtension( $this );
521
 
522
  // Dequeue conflicting scripts.
523
  add_action( 'wp_print_scripts', array( $this, 'dequeue_conflicting_scripts' ) );
680
  wsal_freemius()->add_filter( 'freemius_pricing_js_path', function ( $default_pricing_js_path ) {
681
  return WSAL_BASE_DIR . 'js/freemius-pricing/freemius-pricing.js';
682
  } );
683
+ wsal_freemius()->add_filter( 'default_to_anonymous_feedback', '__return_true' );
684
  }
685
  }
686
  }
1117
  }
1118
 
1119
  if ( is_admin() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
1120
 
1121
  // Hide plugin.
1122
  if ( $this->settings()->IsIncognito() ) {
1190
  $filter_input_args = array(
1191
  'disable_nonce' => FILTER_SANITIZE_STRING,
1192
  'notice' => FILTER_SANITIZE_STRING,
1193
+ 'object_type' => FILTER_SANITIZE_STRING
1194
  );
1195
 
1196
  // Filter $_POST array for security.
1200
  die();
1201
  }
1202
 
1203
+ $object_type = 'post';
1204
+ if ( array_key_exists( 'object_type', $post_array ) && 'user' === $post_array['object_type'] ) {
1205
+ $object_type = 'user';
1206
+ }
1207
+
1208
+ $excluded_meta = [];
1209
+ if ( 'post' === $object_type ) {
1210
+ $excluded_meta = $this->settings()->GetExcludedPostMetaFields();
1211
+ } else if ( 'user' === $object_type ) {
1212
+ $excluded_meta = $this->settings()->GetExcludedUserMetaFields();
1213
+ }
1214
+
1215
+ array_push( $excluded_meta, esc_html( $post_array['notice'] ) );
1216
+
1217
+ if ( 'post' === $object_type ) {
1218
+ $excluded_meta = $this->settings()->SetExcludedPostMetaFields( $excluded_meta );
1219
+ } else if ( 'user' === $object_type ) {
1220
+ $excluded_meta = $this->settings()->SetExcludedUserMetaFields( $excluded_meta );
1221
+ }
1222
+
1223
+ // Exclude object link.
1224
+ $exclude_objects_link = add_query_arg(
1225
+ array(
1226
+ 'page' => 'wsal-settings',
1227
+ 'tab' => 'exclude-objects',
1228
+ ),
1229
+ network_admin_url( 'admin.php' )
1230
+ );
1231
+ echo wp_sprintf(
1232
+ /* translators: name of meta field (in bold) */
1233
+ '<p>' . __( 'Custom field %s is no longer being monitored.', 'wp-security-audit-log' ) . '</p>',
1234
+ '<strong>' . $post_array['notice'] . '</strong>'
1235
+ );
1236
+ echo wp_sprintf(
1237
+ /* translators: setting tab name "Excluded Objects" */
1238
+ '<p>' . __( 'Enable the monitoring of this custom field again from the %s tab in the plugin settings.', 'wp-security-audit-log' ) . '</p>',
1239
+ '<a href="' . $exclude_objects_link . '">' . __( 'Excluded Objects', 'wp-security-audit-log' ) . '</a>'
1240
+ );
1241
+ die;
1242
  }
1243
 
1244
  /**
1395
  self::getConnector()->getAdapter( 'Occurrence' )->create_indexes();
1396
  self::getConnector()->getAdapter( 'Meta' )->create_indexes();
1397
 
 
 
 
 
 
1398
 
1399
  // If system already installed, do updates now (if any).
1400
  $old_version = $this->GetOldVersion();
1432
  // Update version in db.
1433
  $this->SetGlobalSetting( 'version', $new_version );
1434
 
1435
+ if ( '0.0.0' === $old_version ) {
1436
+ // set some initial plugins settings (only the ones that bypass the regular settings retrieval at some
1437
+ // point) - e.g. disabled events
1438
+ $this->SetGlobalSetting( 'disabled-alerts', implode( ',', $this->settings()->always_disabled_alerts ) );
1439
+
1440
+ // we stop here as no further updates are needed for a freshly installed plugin
1441
+ return;
1442
+ }
1443
 
1444
  // Do version-to-version specific changes.
1445
  if ( '0.0.0' !== $old_version && -1 === version_compare( $old_version, $new_version ) ) {
1519
  // delete dev options from the settings
1520
  $this->DeleteGlobalSetting( 'dev-options' );
1521
  }
 
 
1522
 
1523
+ if ( version_compare( $new_version, '4.3.2', '>=' ) ) {
1524
+ $this->settings()->set_database_version( 43200 );
 
 
 
 
 
 
1525
 
1526
+ // change the name of the option storing excluded post meta fields
1527
+ $excludedCustomFields = $this->GetGlobalSetting( 'excluded-custom', null );
1528
+ if ( ! is_null( $excludedCustomFields ) ) {
1529
+ $this->SetGlobalSetting( 'excluded-post-meta', $excludedCustomFields );
1530
+ $this->DeleteGlobalSetting( 'excluded-custom' );
1531
+ }
1532
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1533
  }
 
 
 
 
 
 
 
 
1534
  }
1535
 
1536
  /**
1755
  /**
1756
  * DB connection.
1757
  *
1758
+ * @param string|array $config DB configuration array, db alias or empty to use default connection.
1759
  * @param bool $reset - True if reset.
1760
  *
1761
  * @return WSAL_Connector_ConnectorInterface
1762
  * @throws Freemius_Exception
1763
  */
1764
  public static function getConnector( $config = null, $reset = false ) {
1765
+ return WSAL_Connector_ConnectorFactory::GetConnector( $config, $reset );
1766
  }
1767
 
1768
  /**
1775
  return self::getConnector()->isInstalled();
1776
  }
1777
 
 
 
 
 
 
 
 
 
 
 
1778
  /**
1779
  * Absolute URL to plugin directory WITHOUT final slash.
1780
  *
2001
  return $plugins;
2002
  }
2003
 
2004
+ $predefined_plugins = WSAL_PluginInstallAndActivate::get_installable_plugins();
2005
+
2006
  // Find WSAL by plugin basename.
2007
  if ( array_key_exists( WSAL_BASE_NAME, $plugins ) ) {
2008
  // Remove WSAL plugin from plugin list page.
2009
  unset( $plugins[ WSAL_BASE_NAME ] );
2010
  }
2011
 
2012
+ // Find and hide addons.
2013
+ foreach ( $predefined_plugins as $extension_plugin ) {
2014
+ if ( array_key_exists( $extension_plugin[ 'plugin_slug' ], $plugins ) ) {
2015
+ if ( 'website-file-changes-monitor/website-file-changes-monitor.php' !== $extension_plugin[ 'plugin_slug' ] ) {
2016
+ unset( $plugins[ $extension_plugin[ 'plugin_slug' ] ] );
2017
+ }
2018
+ }
2019
+ }
2020
+
2021
  return $plugins;
2022
  }
2023
 
2176
  wp_deregister_script( 'dateformat' );
2177
  }
2178
  }
 
2179
 
2180
+ /**
2181
+ * Closes external connection if it's being used.
2182
+ *
2183
+ * @since 4.3.1
2184
+ */
2185
+ public function close_external_connection() {
2186
+ // if the adapter type options is not empty, it means we're using the external database
2187
+ $database_type = $this->GetGlobalSetting( 'adapter-type' );
2188
+ if ( strlen( $database_type ) > 0 ) {
2189
+ $this->getConnector()->closeConnection();
2190
+ }
2191
+ }
2192
+ }
2193
 
2194
  // Begin load sequence.
2195
  WpSecurityAuditLog::GetInstance();
2206
  } else {
2207
  wsal_freemius()->set_basename( true, __FILE__ );
2208
  }
2209
+ if ( ! function_exists( 'wsal_free_on_plugin_activation' ) ) {
2210
+ /**
2211
+ * Takes care of deactivation of the premium plugin when the free plugin is activated. The opposite direction is handled
2212
+ * by Freemius SDK.
2213
+ *
2214
+ * Note: This code MUST NOT be present in the premium version an is removed automatically during the build process.
2215
+ *
2216
+ * @since 4.3.2
2217
+ */
2218
+ function wsal_free_on_plugin_activation() {
2219
+ $premium_version_slug = 'wp-security-audit-log-premium/wp-security-audit-log.php';
2220
+ if ( WpSecurityAuditLog::is_plugin_active( $premium_version_slug ) ) {
2221
+ deactivate_plugins( $premium_version_slug, true );
2222
+ }
2223
  }
 
2224
 
2225
+ register_activation_hook( __FILE__, 'wsal_free_on_plugin_activation' );
2226
+ }