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.
Release Info
Developer | WPWhiteSecurity |
Plugin | WP Security Audit Log |
Version | 4.3.2 |
Comparing to | |
See all releases |
Code changes from version 4.3.0 to 4.3.2
- classes/AbstractLogger.php +4 -5
- classes/AbstractMetaDataSensor.php +14 -7
- classes/AbstractSandboxTask.php +1 -1
- classes/AbstractSensor.php +2 -2
- classes/AbstractView.php +2 -2
- classes/Adapters/ActiveRecordInterface.php +2 -2
- classes/Adapters/MetaInterface.php +2 -2
- classes/Adapters/MySQL/ActiveRecordAdapter.php +227 -71
- classes/Adapters/MySQL/MetaAdapter.php +2 -2
- classes/Adapters/MySQL/OccurrenceAdapter.php +4 -2
- classes/Adapters/MySQL/QueryAdapter.php +7 -3
- classes/Adapters/MySQL/TmpUserAdapter.php +2 -2
- classes/Adapters/OccurrenceInterface.php +2 -2
- classes/Adapters/QueryInterface.php +9 -2
- classes/Alert.php +1 -26
- classes/AlertFormatter.php +14 -6
- classes/AlertFormatterConfiguration.php +29 -2
- classes/AlertFormatterFactory.php +3 -3
- classes/AlertManager.php +42 -224
- classes/AuditLogGridView.php +24 -48
- classes/AuditLogListView.php +20 -48
- classes/Autoloader.php +1 -1
- classes/Connector/AbstractConnector.php +2 -2
- classes/Connector/ConnectorFactory.php +32 -13
- classes/Connector/ConnectorInterface.php +4 -7
- classes/Connector/MySQLDB.php +201 -312
- classes/Connector/wp-db-custom.php +5 -89
- classes/ConstantManager.php +3 -2
- classes/ExtensionPlaceholderView.php +1 -1
- classes/Helpers/DataHelper.php +2 -2
- classes/Helpers/Options.php +22 -1
- classes/Loggers/Database.php +36 -83
- classes/Models/ActiveRecord.php +7 -11
- classes/Models/Meta.php +2 -2
- classes/Models/Occurrence.php +25 -12
- classes/Models/OccurrenceQuery.php +2 -2
- classes/Models/Query.php +2 -2
- classes/Models/TmpUser.php +2 -2
- classes/Multisite/NetworkWide/AbstractTracker.php +1 -1
- classes/Multisite/NetworkWide/CPTsTracker.php +1 -1
- classes/Multisite/NetworkWide/TrackerInterface.php +1 -1
- classes/Nicer.php +1 -1
- classes/Ref.php +1 -1
- classes/ReportArgs.php +287 -0
- classes/SensorManager.php +2 -2
- classes/Sensors/ACFMeta.php +4 -4
- classes/Sensors/Comments.php +3 -3
- classes/Sensors/Content.php +10 -3
- classes/Sensors/Database.php +7 -3
- classes/Sensors/Files.php +3 -3
- classes/Sensors/LogInOut.php +10 -4
- classes/Sensors/MainWP.php +3 -3
- classes/Sensors/Menus.php +3 -3
- classes/Sensors/MetaData.php +10 -8
- classes/Sensors/Multisite.php +3 -3
- classes/Sensors/PluginsThemes.php +3 -3
- classes/Sensors/Public.php +6 -5
- classes/Sensors/System.php +3 -3
- classes/Sensors/UserProfile.php +4 -4
- classes/Sensors/Widgets.php +3 -3
- classes/Settings.php +362 -43
- classes/ThirdPartyExtensions/AbstractExtension.php +62 -0
- classes/ThirdPartyExtensions/BBPressExtension.php +20 -6
- classes/ThirdPartyExtensions/GravityFormsExtension.php +17 -7
- classes/ThirdPartyExtensions/WPFormsExtension.php +20 -6
- classes/ThirdPartyExtensions/WooCommerceExtension.php +28 -7
- classes/ThirdPartyExtensions/YoastSeoExtension.php +17 -7
- classes/Utilities/DateTimeFormatter.php +1 -19
- classes/Utilities/Emailer.php +1 -1
- classes/Utilities/PluginInstallAndActivate.php +1 -1
- classes/Utilities/PluginInstallerAction.php +1 -3
- classes/Utilities/RequestUtils.php +1 -1
- classes/Utilities/UserUtils.php +28 -3
- classes/ViewManager.php +2 -2
- classes/Views/AuditLog.php +62 -83
- classes/Views/EmailNotifications.php +2 -2
- classes/Views/ExternalDB.php +2 -2
- classes/Views/Help.php +2 -2
- classes/Views/LogInUsers.php +2 -2
- classes/Views/Reports.php +2 -2
- classes/Views/Search.php +2 -2
- classes/Views/Settings.php +64 -56
- classes/Views/SetupWizard.php +2 -2
- classes/Views/ToggleAlerts.php +2 -2
- classes/WidgetManager.php +3 -3
- css/admin-notices.css +91 -0
- css/auditlog.css +33 -92
- defaults.php +568 -223
- js/auditlog.js +33 -26
- js/common.js +15 -17
- js/settings.js +16 -8
- languages/wp-security-audit-log-de_DE.mo +0 -0
- languages/wp-security-audit-log-es_ES.mo +0 -0
- languages/wp-security-audit-log-fr_FR.mo +0 -0
- languages/wp-security-audit-log-it_IT.mo +0 -0
- languages/wp-security-audit-log-ro_RO.mo +0 -0
- languages/wp-security-audit-log.pot +5718 -2473
- readme.txt +82 -50
- sdk/class-wsal-browser.php +1 -1
- sdk/wsal-freemius.php +1 -1
- {vendor → third-party}/freemius/wordpress-sdk/LICENSE.txt +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/README.md +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/account.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/add-ons.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/affiliation.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/checkout.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/common.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/connect.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/debug.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/dialog-boxes.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/gdpr-optin-notice.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/admin/plugins.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/customizer.css +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/css/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/img/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/img/plugin-icon.png +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/img/theme-icon.png +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/js/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/js/nojquery.ba-postmessage.js +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/js/nojquery.ba-postmessage.min.js +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/assets/js/postmessage.js +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/config.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-freemius-abstract.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-freemius.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-admin-notices.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-api.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-logger.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-options.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-plugin-updater.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-security.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-storage.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/class-fs-user-lock.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/customizer/class-fs-customizer-support-section.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/customizer/class-fs-customizer-upsell-control.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/customizer/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/debug/class-fs-debug-bar-panel.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/debug/debug-bar-start.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/debug/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-affiliate-terms.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-affiliate.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-billing.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-entity.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-payment.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-info.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-license.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-plan.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin-tag.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-plugin.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-pricing.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-scope-entity.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-site.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-subscription.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/class-fs-user.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/entities/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/fs-core-functions.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/fs-essential-functions.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/fs-plugin-info-dialog.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/i18n.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/l10n.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-admin-menu-manager.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-admin-notice-manager.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-cache-manager.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-gdpr-manager.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-key-value-storage.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-license-manager.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-option-manager.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-plan-manager.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/class-fs-plugin-manager.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/managers/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/ArgumentNotExistException.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/EmptyArgumentException.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/Exception.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/InvalidArgumentException.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/OAuthException.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/Exceptions/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/FreemiusBase.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/FreemiusWordPress.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/LICENSE.txt +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/sdk/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/supplements/fs-essential-functions-1.1.7.1.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/supplements/fs-essential-functions-2.2.1.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/includes/supplements/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-cs_CZ.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-da_DK.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-en.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-es_ES.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-fr_FR.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-he_IL.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-hu_HU.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-it_IT.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-ja.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-nl_NL.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-ru_RU.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-ta.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius-zh_CN.mo +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/freemius.pot +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/languages/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/package.json +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/require.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/start.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/account.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/account/billing.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/account/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/activate-license-button.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/addon.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/deactivate-license-button.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/account/partials/site.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/account/payments.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/add-ons.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/add-trial-to-pricing.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/admin-notice.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/ajax-loader.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/auto-installation.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/checkout.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/connect.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/contact.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/debug.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/debug/api-calls.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/debug/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/debug/logger.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/debug/plugins-themes-sync.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/debug/scheduled-crons.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/email.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/firewall-issues-js.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/affiliation.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/data-debug-mode.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/contact.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/form.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/deactivation/retry-skip.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/license-activation.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/optout.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/premium-versions-upgrade-handler.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/premium-versions-upgrade-metadata.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/resend-key.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/subscription-cancellation.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/trial-start.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/forms/user-change.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/gdpr-optin-js.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/js/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/js/jquery.content-change.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/js/open-license-activation.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/js/style-premium-theme.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/partials/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/partials/network-activation.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-icon.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/description.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/features.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/index.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/plugin-info/screenshots.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/powered-by.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/pricing.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/secure-https-header.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/sticky-admin-notice-js.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/tabs-capture-js.php +0 -0
- {vendor → third-party}/freemius/wordpress-sdk/templates/tabs.php +0 -0
- vendor/autoload.php +0 -7
- vendor/composer/ClassLoader.php +0 -479
- vendor/composer/InstalledVersions.php +0 -294
- vendor/composer/LICENSE +0 -21
- vendor/composer/autoload_classmap.php +0 -10
- vendor/composer/autoload_namespaces.php +0 -9
- vendor/composer/autoload_psr4.php +0 -9
- vendor/composer/autoload_real.php +0 -57
- vendor/composer/autoload_static.php +0 -20
- vendor/composer/installed.json +0 -48
- vendor/composer/installed.php +0 -33
- vendor/composer/platform_check.php +0 -26
- wp-security-audit-log.php +127 -156
@@ -4,7 +4,7 @@
|
|
4 |
* Abstract class used in the Logger.
|
5 |
*
|
6 |
* @see Loggers/Database.php
|
7 |
-
* @package
|
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 $
|
36 |
-
* @param bool $migrated (Optional) - Is migrated.
|
37 |
*/
|
38 |
-
public abstract function Log( $type, $data = array(), $date = null, $
|
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
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Abstract meta data sensor file.
|
6 |
*
|
7 |
* @since 4.1.3
|
8 |
-
* @package
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly.
|
@@ -16,8 +16,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
/**
|
17 |
* Abstract sensor for meta data.
|
18 |
*
|
19 |
-
* @package
|
20 |
-
* @subpackage
|
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 =
|
|
|
|
|
|
|
|
|
|
|
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;
|
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Abstract Sandbox Task class.
|
4 |
*
|
5 |
-
* @package
|
6 |
*/
|
7 |
abstract class WSAL_AbstractSandboxTask {
|
8 |
|
2 |
/**
|
3 |
* Abstract Sandbox Task class.
|
4 |
*
|
5 |
+
* @package wsal
|
6 |
*/
|
7 |
abstract class WSAL_AbstractSandboxTask {
|
8 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Abstract sensor class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
|
@@ -3,14 +3,14 @@
|
|
3 |
* Abstract class used in all the views.
|
4 |
*
|
5 |
* @see Views/*.php
|
6 |
-
* @package
|
7 |
*/
|
8 |
abstract class WSAL_AbstractView {
|
9 |
|
10 |
/**
|
11 |
* Instance of WpSecurityAuditLog.
|
12 |
*
|
13 |
-
* @var
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Interface used by the ActiveRecord.
|
6 |
*
|
7 |
-
* @package
|
8 |
*/
|
9 |
|
10 |
// Exit if accessed directly.
|
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
/**
|
16 |
* Interface used by the ActiveRecord.
|
17 |
*
|
18 |
-
* @package
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Interface used by the Metadata.
|
6 |
*
|
7 |
-
* @package
|
8 |
*/
|
9 |
|
10 |
// Exit if accessed directly.
|
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
/**
|
16 |
* Interface used by the Metadata.
|
17 |
*
|
18 |
-
* @package
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* MySQL database ActiveRecord class.
|
6 |
*
|
7 |
-
* @package
|
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
|
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
|
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( $
|
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 |
-
(
|
519 |
-
|
520 |
-
|
521 |
-
|
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 |
-
(
|
571 |
-
|
572 |
-
|
573 |
-
|
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
|
738 |
-
* @param int
|
739 |
-
*
|
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( $
|
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 |
-
(
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
)
|
781 |
-
AND (
|
782 |
-
|
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 |
-
|
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 |
}
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* MySQL database Metadata class.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* MySQL database Occurrence class.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* MySQL database Query class.
|
6 |
*
|
7 |
-
* @package
|
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
|
22 |
*/
|
23 |
class WSAL_Adapters_MySQL_Query implements WSAL_Adapters_QueryInterface {
|
24 |
|
25 |
/**
|
26 |
* DB Connection
|
27 |
*
|
28 |
-
* @var
|
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 |
}
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* MySQL database Metadata class.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Interface used by the Occurrence.
|
6 |
*
|
7 |
-
* @package
|
8 |
*/
|
9 |
|
10 |
// Exit if accessed directly.
|
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
/**
|
16 |
* Interface used by the Occurrence.
|
17 |
*
|
18 |
-
* @package
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Interface used by the Query.
|
6 |
*
|
7 |
-
* @package
|
8 |
*/
|
9 |
|
10 |
// Exit if accessed directly.
|
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
/**
|
16 |
* Interface used by the Query.
|
17 |
*
|
18 |
-
* @package
|
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 |
}
|
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* WSAL_Alert Object class.
|
5 |
*
|
6 |
-
* @package
|
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 |
*
|
@@ -5,7 +5,7 @@
|
|
5 |
* Class file for alert formatter.
|
6 |
*
|
7 |
* @since 4.2.1
|
8 |
-
* @package
|
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
|
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 |
-
|
62 |
-
|
63 |
-
$
|
|
|
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 '
|
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 |
/**
|
@@ -14,8 +14,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
*
|
15 |
* All setter methods are fluent to allow for method chaining.
|
16 |
*
|
17 |
-
* @package
|
18 |
-
* @since
|
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 |
*/
|
@@ -5,7 +5,7 @@
|
|
5 |
* Class file for alert formatter factory.
|
6 |
*
|
7 |
* @since 4.2.1
|
8 |
-
* @package
|
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
|
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
|
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() );
|
@@ -5,7 +5,7 @@
|
|
5 |
* CLass file for alert manager.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
-
//
|
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(
|
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 |
-
//
|
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 |
-
//
|
1595 |
-
$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 |
-
|
1648 |
-
|
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( $
|
1656 |
} else {
|
1657 |
-
$results = $this->plugin->getConnector()->getAdapter( 'Occurrence' )->GetReporting( $
|
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 |
-
$
|
1717 |
-
$
|
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 |
-
|
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 |
-
|
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 |
-
|
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 =
|
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.
|
@@ -5,7 +5,7 @@
|
|
5 |
* CLass file for audit log list view.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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
|
|
|
84 |
* @param stdClass $query_args - Events query arguments.
|
85 |
*/
|
86 |
-
public function __construct( $plugin, $query_args ) {
|
87 |
-
$this->_plugin
|
88 |
-
$this->
|
|
|
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 |
-
|
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
|
409 |
-
|
410 |
-
|
411 |
-
</table>
|
412 |
-
|
|
|
413 |
}
|
414 |
-
return
|
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 =
|
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();
|
@@ -5,7 +5,7 @@
|
|
5 |
* CLass file for audit log list view.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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
|
|
|
75 |
* @param stdClass $query_args - Events query arguments.
|
76 |
*/
|
77 |
-
public function __construct( $plugin, $query_args ) {
|
78 |
-
$this->_plugin
|
79 |
-
$this->
|
|
|
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 =
|
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 |
-
|
|
|
|
|
|
|
538 |
case 'data':
|
539 |
$url = admin_url( 'admin-ajax.php' ) . '?action=AjaxInspector&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
|
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&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 );
|
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Classes Auto Loader.
|
4 |
*
|
5 |
-
* @package
|
6 |
*/
|
7 |
class WSAL_Autoloader {
|
8 |
|
2 |
/**
|
3 |
* Classes Auto Loader.
|
4 |
*
|
5 |
+
* @package wsal
|
6 |
*/
|
7 |
class WSAL_Autoloader {
|
8 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Abstract class used as a class loader.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Abstract class used for create the connector, only MySQL is implemented.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 $
|
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
|
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 |
-
|
65 |
-
|
|
|
|
|
66 |
} else {
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
|
70 |
// TO DO: Load connection config.
|
71 |
-
if (
|
72 |
-
|
|
|
73 |
// TO DO: Add other connectors.
|
74 |
case 'mysql':
|
75 |
default:
|
76 |
// Use config.
|
77 |
-
self::$
|
78 |
}
|
79 |
}
|
80 |
|
81 |
-
return self::$
|
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 |
-
$
|
141 |
-
return $
|
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 |
}
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Interface used by the WSAL_Connector.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 |
*
|
@@ -5,7 +5,7 @@
|
|
5 |
* MySQL Connector Class
|
6 |
* It uses wpdb WordPress DB Class
|
7 |
*
|
8 |
-
* @package
|
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
|
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']
|
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 |
-
|
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 |
-
*
|
|
|
87 |
*
|
88 |
-
* @
|
|
|
|
|
|
|
89 |
*/
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
} else {
|
101 |
-
|
102 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
*
|
|
|
|
|
122 |
*/
|
123 |
-
|
124 |
-
|
125 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
156 |
-
$table
|
157 |
-
$db_result = $wpdb->query( "SELECT COUNT(1) FROM {$table};");
|
|
|
158 |
return 1 === $db_result;
|
159 |
}
|
160 |
|
161 |
/**
|
162 |
-
*
|
163 |
*
|
164 |
-
* @
|
165 |
*/
|
166 |
-
public function
|
167 |
-
$
|
168 |
-
$
|
169 |
-
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
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 |
-
*
|
232 |
*
|
233 |
-
* @
|
|
|
|
|
234 |
*/
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
$
|
239 |
-
return (int) $_wpdb->get_var( $sql );
|
240 |
}
|
241 |
|
242 |
/**
|
243 |
-
*
|
244 |
*
|
245 |
-
*
|
246 |
-
* @param integer $limit - Limit.
|
247 |
*
|
248 |
-
* @
|
|
|
|
|
|
|
|
|
249 |
*/
|
250 |
-
|
251 |
-
|
252 |
-
$
|
253 |
-
|
254 |
-
|
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 |
-
|
268 |
-
|
269 |
-
$meta_new = new WSAL_Adapters_MySQL_Meta( $_wpdb );
|
270 |
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
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 |
-
|
286 |
-
} else {
|
287 |
-
$result['complete'] = true;
|
288 |
-
$this->DeleteAfterMigrate( $meta );
|
289 |
}
|
290 |
-
$result['index'] = $index;
|
291 |
-
return $result;
|
292 |
-
}
|
293 |
|
294 |
-
|
295 |
-
|
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 |
-
|
309 |
-
|
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 |
-
|
319 |
-
|
320 |
-
|
|
|
|
|
|
|
321 |
|
322 |
-
$
|
323 |
-
$
|
324 |
-
|
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 |
-
$
|
337 |
-
} else {
|
338 |
-
$result['complete'] = true;
|
339 |
-
$this->DeleteAfterMigrate( $occurrence );
|
340 |
}
|
341 |
-
|
342 |
-
|
|
|
|
|
|
|
|
|
|
|
343 |
}
|
344 |
|
345 |
/**
|
346 |
-
*
|
347 |
-
*
|
348 |
-
* @param integer $index - Index.
|
349 |
-
* @param integer $limit - Limit.
|
350 |
*
|
351 |
-
* @
|
352 |
*/
|
353 |
-
|
354 |
-
$result = null;
|
355 |
-
$offset = ( $index * $limit );
|
356 |
global $wpdb;
|
357 |
-
$
|
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
|
398 |
*
|
399 |
-
* @param
|
400 |
-
* @param
|
|
|
|
|
401 |
*
|
402 |
-
* @return
|
403 |
*/
|
404 |
-
|
405 |
-
$result = null;
|
406 |
-
$offset = ( $index * $limit );
|
407 |
-
global $wpdb;
|
408 |
-
$_wpdb = $this->getConnection();
|
409 |
|
410 |
-
//
|
411 |
-
$
|
412 |
-
if ( ! $
|
413 |
-
|
414 |
-
return $result;
|
415 |
}
|
416 |
-
$sql = 'SELECT * FROM ' . $meta->GetTable() . ' LIMIT ' . $limit . ' OFFSET ' . $offset;
|
417 |
-
$metadata = $_wpdb->get_results( $sql, ARRAY_A );
|
418 |
|
419 |
-
|
|
|
|
|
|
|
|
|
420 |
if ( ! empty( $metadata ) ) {
|
421 |
-
$
|
422 |
|
423 |
-
$
|
424 |
-
$sql = 'INSERT INTO ' . $meta_wp->GetWPTable() . ' (occurrence_id, name, value) VALUES ';
|
425 |
foreach ( $metadata as $entry ) {
|
426 |
-
$
|
427 |
'( %d, %s, %s ), ',
|
428 |
-
|
429 |
$entry['name'],
|
430 |
$entry['value']
|
431 |
);
|
432 |
}
|
433 |
-
$
|
434 |
-
$
|
435 |
|
436 |
-
$
|
437 |
-
} else {
|
438 |
-
$result['complete'] = true;
|
439 |
}
|
440 |
-
|
441 |
-
return
|
442 |
}
|
443 |
|
444 |
/**
|
445 |
-
*
|
446 |
*
|
447 |
-
* @param
|
|
|
|
|
448 |
*/
|
449 |
-
|
450 |
global $wpdb;
|
451 |
-
|
452 |
-
$
|
453 |
}
|
454 |
|
455 |
/**
|
456 |
* Encrypt plain text.
|
457 |
* Encrypt string, before saves it to the DB.
|
458 |
*
|
459 |
-
* @param
|
|
|
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
|
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']
|
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
|
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 |
-
|
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
|
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
|
615 |
-
$metadata
|
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
|
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 |
*
|
@@ -5,7 +5,7 @@
|
|
5 |
* Test the DB connection.
|
6 |
* It uses wpdb WordPress DB Class.
|
7 |
*
|
8 |
-
* @package
|
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
|
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
|
48 |
|
49 |
if ( WP_DEBUG && WP_DEBUG_DISPLAY ) {
|
50 |
$this->show_errors();
|
@@ -86,12 +78,7 @@ class wpdbCustom extends wpdb {
|
|
86 |
}
|
87 |
}
|
88 |
|
89 |
-
|
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’t contact the database server at %2$s. This could mean your host’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’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’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’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 |
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* CLass file for constant manager.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
*
|
@@ -4,7 +4,7 @@
|
|
4 |
* Abstract class used for the plugin extension placeholder views/admin pages.
|
5 |
*
|
6 |
* @see Views/*.php
|
7 |
-
* @package
|
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 {
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Helper class used for encode/decode json data..
|
6 |
*
|
7 |
-
* @package
|
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
|
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 |
|
@@ -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
|
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 |
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* Logger class for wsal.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
-
*
|
39 |
*
|
40 |
-
*
|
41 |
-
*
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
*
|
44 |
-
*
|
45 |
*
|
46 |
* @param integer $type - Alert code.
|
47 |
* @param array $data - Metadata.
|
48 |
* @param integer $date - (Optional) created_on.
|
49 |
-
* @param integer $
|
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, $
|
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->
|
62 |
-
$occ->created_on = $this->get_correct_timestamp( $data, $date );
|
63 |
$occ->alert_id = $type;
|
64 |
-
$occ->site_id = ! is_null( $
|
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
|
73 |
-
$
|
74 |
-
|
75 |
-
|
|
|
|
|
|
|
|
|
76 |
}
|
77 |
|
78 |
-
// Check
|
79 |
-
if (
|
80 |
-
//
|
81 |
-
$
|
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 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
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, $
|
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();
|
@@ -5,7 +5,7 @@
|
|
5 |
* Abstract ActiveRecord model is the generic model for any kind
|
6 |
* of adapter.
|
7 |
*
|
8 |
-
* @package
|
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
|
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 |
-
* @
|
365 |
-
*
|
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( $
|
374 |
-
return $this->getAdapter()->GetReporting( $
|
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 |
/**
|
@@ -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
|
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
|
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 |
|
@@ -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
|
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
|
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->
|
176 |
-
//
|
177 |
-
if ( $this->
|
178 |
-
$this->
|
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->
|
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->
|
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->
|
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 |
*
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* OccurrenceQuery model adds or clears arguments in the Query model.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Query model is the class for all the query conditions.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Model used for the Temporary WP_users table.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 |
|
@@ -7,7 +7,7 @@
|
|
7 |
* executed directly (CPTs or taxonomies for example).
|
8 |
*
|
9 |
* @since 3.5.2
|
10 |
-
* @package
|
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;
|
@@ -5,7 +5,7 @@
|
|
5 |
* Helper class used for tracking various bits of network wide data.
|
6 |
*
|
7 |
* @since 3.5.2
|
8 |
-
* @package
|
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;
|
@@ -5,7 +5,7 @@
|
|
5 |
* Helper class used for tracking various bits of network wide data.
|
6 |
*
|
7 |
* @since 3.5.2
|
8 |
-
* @package
|
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;
|
@@ -8,7 +8,7 @@
|
|
8 |
* @link https://github.com/uuf6429/nice_r GitHub Repository
|
9 |
* @version 2.0
|
10 |
* @since 2.0
|
11 |
-
* @package
|
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 |
|
@@ -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
|
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.
|
@@ -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 |
+
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* Sensor manager class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Advanced Custom Fields sensor file.
|
6 |
*
|
7 |
* @since 4.1.3
|
8 |
-
* @package
|
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
|
23 |
-
* @subpackage
|
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 );
|
@@ -5,7 +5,7 @@
|
|
5 |
* Comments sensor class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
31 |
-
* @subpackage
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Content sensor class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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
|
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 );
|
@@ -5,7 +5,7 @@
|
|
5 |
* Database sensors class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
33 |
-
* @subpackage
|
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) {
|
@@ -5,7 +5,7 @@
|
|
5 |
* Files sensors class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
25 |
-
* @subpackage
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Log In & Out sensor class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
27 |
-
* @subpackage
|
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,
|
@@ -5,7 +5,7 @@
|
|
5 |
* MainWP Plugins & Themes sensor file.
|
6 |
*
|
7 |
* @since 4.1.4
|
8 |
-
* @package
|
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
|
30 |
-
* @subpackage
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Menus sensor file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
30 |
-
* @subpackage
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Meta Data sensor file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
31 |
-
* @subpackage
|
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 |
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* Multisite sensor file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
33 |
-
* @subpackage
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Plugins & Themes sensor file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
30 |
-
* @subpackage
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Public/Visitor activity sensor class file.
|
6 |
*
|
7 |
* @since 3.3
|
8 |
-
* @package
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly.
|
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
/**
|
17 |
* System Activity sensor.
|
18 |
*
|
19 |
-
* @package
|
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'
|
57 |
-
'UserChanger'
|
58 |
-
'NewUserData'
|
|
|
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 );
|
@@ -5,7 +5,7 @@
|
|
5 |
* System activity sensor class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
44 |
-
* @subpackage
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* User profile sensor file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
32 |
-
* @subpackage
|
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' => '
|
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 |
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* Widgets sensor class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
26 |
-
* @subpackage
|
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 |
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* WSAL settings class.
|
6 |
*
|
7 |
-
* @package
|
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
|
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 $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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->
|
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->
|
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( ',', $
|
873 |
}
|
874 |
|
875 |
/**
|
@@ -883,25 +1065,146 @@ class WSAL_Settings {
|
|
883 |
}
|
884 |
|
885 |
/**
|
886 |
-
*
|
|
|
|
|
887 |
*/
|
888 |
-
public function
|
889 |
-
$
|
890 |
-
$this->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
891 |
}
|
892 |
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
|
|
|
|
|
|
|
|
|
|
897 |
}
|
898 |
-
return $this->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
}
|
@@ -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 |
}
|
@@ -8,7 +8,7 @@ if ( ! class_exists( 'WSAL_BBPressExtension' ) ) {
|
|
8 |
$new_plugin = array(
|
9 |
array(
|
10 |
'addon_for' => 'bbpress',
|
11 |
-
'title' =>
|
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 |
-
|
23 |
-
return $plugins;
|
24 |
}
|
25 |
|
26 |
public function add_event_codes( $addon_event_codes ) {
|
27 |
$new_event_codes = array(
|
28 |
'bbpress' => array(
|
29 |
-
'name' =>
|
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 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
}
|
@@ -8,7 +8,7 @@ if ( ! class_exists( 'WSAL_GravityFormsExtension' ) ) {
|
|
8 |
$new_plugin = array(
|
9 |
array(
|
10 |
'addon_for' => 'gravityforms',
|
11 |
-
'title' =>
|
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 |
-
|
22 |
-
return $plugins;
|
23 |
}
|
24 |
|
25 |
public function add_event_codes( $addon_event_codes ) {
|
26 |
$new_event_codes = array(
|
27 |
-
'
|
28 |
-
'name' =>
|
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 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
}
|
@@ -8,7 +8,7 @@ if ( ! class_exists( 'WSAL_WPFormsExtension' ) ) {
|
|
8 |
$new_plugin = array(
|
9 |
array(
|
10 |
'addon_for' => 'wpforms',
|
11 |
-
'title' =>
|
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 |
-
|
23 |
-
return $plugins;
|
24 |
}
|
25 |
|
26 |
public function add_event_codes( $addon_event_codes ) {
|
27 |
$new_event_codes = array(
|
28 |
'wpforms' => array(
|
29 |
-
'name' =>
|
30 |
'event_ids' => array( 5500, 5501, 5502, 5503, 5504, 5505, 5506 ),
|
31 |
),
|
32 |
);
|
33 |
|
34 |
// combine the two arrays.
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
}
|
@@ -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' =>
|
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 |
-
|
28 |
-
return $plugins;
|
29 |
}
|
30 |
|
31 |
public function add_event_codes( $addon_event_codes ) {
|
32 |
$new_event_codes = array(
|
33 |
'woocommerce' => array(
|
34 |
-
'name' =>
|
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 |
-
|
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 |
}
|
@@ -8,7 +8,7 @@ if ( ! class_exists( 'WSAL_YoastSeoExtension' ) ) {
|
|
8 |
$new_plugin = array(
|
9 |
array(
|
10 |
'addon_for' => 'wp-seo',
|
11 |
-
'title' =>
|
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 |
-
|
23 |
-
return $plugins;
|
24 |
}
|
25 |
|
26 |
public function add_event_codes( $addon_event_codes ) {
|
27 |
$new_event_codes = array(
|
28 |
'yoast' => array(
|
29 |
-
'name' =>
|
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 |
-
|
36 |
-
return $addon_event_codes;
|
37 |
}
|
38 |
|
39 |
public function modify_predefined_plugin_slug( $plugin ) {
|
40 |
// Correct yoast addon.
|
41 |
if ( 'yoast' === $plugin ) {
|
42 |
-
|
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 |
}
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Singleton utility class used for formatting date and time strings.
|
6 |
*
|
7 |
-
* @package
|
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 |
}
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Utility class used for sending emails.
|
6 |
*
|
7 |
-
* @package
|
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 |
|
@@ -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
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Class file for installing plugins from the repo.
|
6 |
*
|
7 |
* @since 4.0.1
|
8 |
-
* @package
|
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 |
|
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Utility class for handling request inputs.
|
5 |
*
|
6 |
-
* @package
|
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 {
|
@@ -8,8 +8,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
8 |
/**
|
9 |
* Utility class for some user related stuff.
|
10 |
*
|
11 |
-
* @package
|
12 |
-
* @since
|
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
|
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 |
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* View manager class file.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
|
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
/**
|
17 |
* Audit Log Viewer Page
|
18 |
*
|
19 |
-
* @package
|
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, '
|
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
|
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 |
-
|
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
|
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 |
-
|
716 |
-
|
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 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
}
|
@@ -5,7 +5,7 @@
|
|
5 |
* WSAL email notifications page.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* WSAL external db page.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* WSAL help page.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly.
|
@@ -19,7 +19,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
19 |
* - Plugin Support
|
20 |
* - Plugin Documentation
|
21 |
*
|
22 |
-
* @package
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* WSAL users sessions page.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* WSAL reports page.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* WSAL users sessions page.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Settings page of the plugin.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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">×</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 |
-
|
972 |
-
|
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
|
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">×</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">×</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">×</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">×</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 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
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()->
|
|
|
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(
|
|
|
|
|
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' ); ?>">×</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' ); ?>">×</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' ); ?>">×</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' ); ?>">×</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' ); ?>">×</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' ); ?>">×</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' ) ) {
|
@@ -5,7 +5,7 @@
|
|
5 |
* WSAL setup class file.
|
6 |
*
|
7 |
* @since 3.2.3
|
8 |
-
* @package
|
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
|
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">
|
@@ -5,7 +5,7 @@
|
|
5 |
* Settings page of the plugin.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly.
|
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
/**
|
17 |
* Enable/Disable Alerts Page.
|
18 |
*
|
19 |
-
* @package
|
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 |
|
@@ -5,7 +5,7 @@
|
|
5 |
* Manager class for WSAL's WP Dashboard widget.
|
6 |
*
|
7 |
* @since 1.0.0
|
8 |
-
* @package
|
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
|
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 =
|
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>
|
@@ -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 |
+
}
|
@@ -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 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* Alerts are defined in this file.
|
6 |
*
|
7 |
-
* @package
|
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 %
|
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 |
-
|
2508 |
-
|
2509 |
-
__( '
|
2510 |
-
__( '
|
2511 |
[],
|
2512 |
[],
|
2513 |
-
'
|
2514 |
'enabled'
|
2515 |
),
|
2516 |
array(
|
2517 |
-
|
2518 |
-
|
2519 |
-
__( '
|
2520 |
-
__( 'Changed the <strong>
|
2521 |
-
[
|
2522 |
-
__( 'Previous role', 'wp-security-audit-log' ) => '%OldRole%',
|
2523 |
-
__( 'New role', 'wp-security-audit-log' ) => '%NewRole%'
|
2524 |
-
],
|
2525 |
[],
|
2526 |
-
|
|
|
2527 |
'modified'
|
2528 |
),
|
2529 |
array(
|
2530 |
-
|
2531 |
-
|
2532 |
-
__( '
|
2533 |
-
__( '
|
2534 |
-
[
|
2535 |
-
__( 'Previous address', 'wp-security-audit-log' ) => '%OldEmail%',
|
2536 |
-
__( 'New address', 'wp-security-audit-log' ) => '%NewEmail%'
|
2537 |
-
],
|
2538 |
[],
|
2539 |
-
|
2540 |
-
'
|
|
|
2541 |
),
|
2542 |
array(
|
2543 |
-
|
2544 |
WSAL_HIGH,
|
2545 |
-
__( '
|
2546 |
-
__( 'Changed the <strong>
|
2547 |
[
|
2548 |
-
__( 'Previous
|
2549 |
-
__( 'New permalinks', 'wp-security-audit-log' ) => '%NewPattern%'
|
2550 |
],
|
2551 |
[],
|
2552 |
-
'
|
2553 |
'modified'
|
2554 |
),
|
2555 |
array(
|
2556 |
-
|
2557 |
-
|
2558 |
-
__( '
|
2559 |
-
__( '
|
2560 |
-
[
|
|
|
|
|
2561 |
[],
|
2562 |
-
'
|
2563 |
-
'
|
2564 |
),
|
2565 |
array(
|
2566 |
-
|
2567 |
WSAL_MEDIUM,
|
2568 |
-
__( '
|
2569 |
-
__( 'Changed the status of the
|
2570 |
[],
|
2571 |
[],
|
2572 |
-
'
|
2573 |
'enabled'
|
2574 |
),
|
2575 |
-
|
2576 |
array(
|
2577 |
-
|
2578 |
-
|
2579 |
-
__( '
|
2580 |
-
__( 'Changed the
|
2581 |
-
[
|
|
|
|
|
2582 |
[],
|
2583 |
-
'
|
2584 |
-
'
|
2585 |
),
|
2586 |
array(
|
2587 |
-
|
2588 |
-
|
2589 |
-
__( '
|
2590 |
-
__( '
|
2591 |
-
[
|
|
|
|
|
2592 |
[],
|
2593 |
-
'
|
2594 |
-
'
|
2595 |
),
|
2596 |
array(
|
2597 |
-
|
2598 |
-
|
2599 |
-
__( '
|
2600 |
-
__( '
|
2601 |
-
[
|
|
|
|
|
2602 |
[],
|
2603 |
-
'
|
2604 |
-
'
|
2605 |
),
|
2606 |
array(
|
2607 |
-
|
2608 |
-
|
2609 |
-
__( '
|
2610 |
-
__( '
|
2611 |
[
|
2612 |
-
__( 'Previous
|
2613 |
],
|
2614 |
[],
|
2615 |
-
'
|
2616 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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(
|
@@ -201,13 +201,18 @@ function WsalSsasChange(value) {
|
|
201 |
}
|
202 |
|
203 |
function WsalDisableCustom(link, meta_key) {
|
204 |
-
var
|
205 |
-
|
206 |
jQuery.ajax({
|
207 |
type: 'POST',
|
208 |
url: ajaxurl,
|
209 |
async: false,
|
210 |
-
data: {
|
|
|
|
|
|
|
|
|
|
|
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 |
+
});
|
@@ -71,40 +71,38 @@ jQuery( document ).ready( function() {
|
|
71 |
dataType : "json",
|
72 |
url: wsalCommonData.ajaxURL,
|
73 |
data : {
|
74 |
-
action: "
|
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 |
-
|
97 |
jQuery(currentButton).html( wsalCommonData.failed ).addClass('disabled');
|
98 |
jQuery(currentButton).next('.spinner').hide('200');
|
99 |
-
|
|
|
100 |
jQuery(currentButton).html( wsalCommonData.installed ).addClass('disabled');
|
101 |
jQuery(currentButton).next('.spinner').hide('200');
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
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 |
});
|
@@ -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 ).
|
17 |
-
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
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 ( '
|
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="
|
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 + '">×</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({
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -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 |
-
#:
|
24 |
-
msgid "
|
25 |
msgstr ""
|
26 |
|
27 |
-
#:
|
28 |
-
msgid "
|
29 |
msgstr ""
|
30 |
|
31 |
-
#:
|
32 |
-
msgid "
|
33 |
msgstr ""
|
34 |
|
35 |
-
#:
|
36 |
-
msgid "
|
37 |
msgstr ""
|
38 |
|
39 |
-
#:
|
40 |
-
|
41 |
-
msgid "Event with code %d has not be registered."
|
42 |
msgstr ""
|
43 |
|
44 |
-
#:
|
45 |
-
|
46 |
-
msgid "Event %s already registered with WP Activity Log."
|
47 |
msgstr ""
|
48 |
|
49 |
-
#: classes/
|
50 |
-
msgid "
|
51 |
msgstr ""
|
52 |
|
53 |
-
#:
|
54 |
-
|
55 |
-
msgid "%4$s to help you solve this issue."
|
56 |
msgstr ""
|
57 |
|
58 |
-
#:
|
59 |
-
msgid "
|
60 |
msgstr ""
|
61 |
|
62 |
-
#:
|
63 |
-
msgid "
|
64 |
msgstr ""
|
65 |
|
66 |
-
#:
|
67 |
-
|
68 |
-
#: classes/WidgetManager.php:76 defaults.php:1689
|
69 |
-
msgid "User"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#:
|
73 |
-
|
74 |
-
#: defaults.php:2397
|
75 |
-
msgid "System"
|
76 |
msgstr ""
|
77 |
|
78 |
-
#:
|
79 |
-
|
80 |
-
msgid "Plugin"
|
81 |
msgstr ""
|
82 |
|
83 |
-
#:
|
84 |
-
msgid "
|
85 |
msgstr ""
|
86 |
|
87 |
-
#:
|
88 |
-
msgid "
|
89 |
msgstr ""
|
90 |
|
91 |
-
#:
|
92 |
-
msgid "
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: classes/
|
96 |
-
msgid "
|
97 |
msgstr ""
|
98 |
|
99 |
-
#:
|
100 |
-
msgid "
|
101 |
msgstr ""
|
102 |
|
103 |
-
#:
|
104 |
-
msgid "
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: classes/
|
108 |
-
msgid "
|
109 |
msgstr ""
|
110 |
|
111 |
-
#:
|
112 |
-
msgid "
|
113 |
msgstr ""
|
114 |
|
115 |
-
#:
|
116 |
-
msgid "
|
117 |
msgstr ""
|
118 |
|
119 |
-
#:
|
120 |
-
msgid "
|
121 |
msgstr ""
|
122 |
|
123 |
-
#:
|
124 |
-
msgid "
|
125 |
msgstr ""
|
126 |
|
127 |
-
#: classes/
|
128 |
-
msgid "
|
129 |
msgstr ""
|
130 |
|
131 |
-
#:
|
132 |
-
msgid "
|
133 |
msgstr ""
|
134 |
|
135 |
-
#:
|
136 |
-
msgid "
|
137 |
msgstr ""
|
138 |
|
139 |
-
#:
|
140 |
-
msgid "
|
141 |
msgstr ""
|
142 |
|
143 |
-
#:
|
144 |
-
msgid "
|
145 |
msgstr ""
|
146 |
|
147 |
-
#:
|
148 |
-
msgid "
|
149 |
msgstr ""
|
150 |
|
151 |
-
#:
|
152 |
-
msgid "
|
153 |
msgstr ""
|
154 |
|
155 |
-
#:
|
156 |
-
msgid "
|
157 |
msgstr ""
|
158 |
|
159 |
-
#:
|
160 |
-
msgid "
|
161 |
msgstr ""
|
162 |
|
163 |
-
#:
|
164 |
-
msgid "
|
165 |
msgstr ""
|
166 |
|
167 |
-
#:
|
168 |
-
msgid "
|
169 |
msgstr ""
|
170 |
|
171 |
-
#:
|
172 |
-
msgid "
|
173 |
msgstr ""
|
174 |
|
175 |
-
#:
|
176 |
-
msgid "
|
177 |
msgstr ""
|
178 |
|
179 |
-
#:
|
180 |
-
msgid "
|
181 |
msgstr ""
|
182 |
|
183 |
-
#:
|
184 |
-
msgid "
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: classes/
|
188 |
-
msgid "
|
189 |
msgstr ""
|
190 |
|
191 |
-
#:
|
192 |
-
msgid "
|
193 |
msgstr ""
|
194 |
|
195 |
-
#:
|
196 |
-
msgid "
|
197 |
msgstr ""
|
198 |
|
199 |
-
#:
|
200 |
-
msgid "
|
201 |
msgstr ""
|
202 |
|
203 |
-
#:
|
204 |
-
msgid "
|
205 |
msgstr ""
|
206 |
|
207 |
-
#:
|
208 |
-
msgid "
|
209 |
msgstr ""
|
210 |
|
211 |
-
#:
|
212 |
-
msgid "
|
213 |
msgstr ""
|
214 |
|
215 |
-
#:
|
216 |
-
msgid "
|
217 |
msgstr ""
|
218 |
|
219 |
-
#:
|
220 |
-
msgid "
|
221 |
msgstr ""
|
222 |
|
223 |
-
#:
|
224 |
-
msgid "
|
225 |
msgstr ""
|
226 |
|
227 |
-
#:
|
228 |
-
msgid "
|
229 |
msgstr ""
|
230 |
|
231 |
-
#:
|
232 |
-
msgid "
|
233 |
msgstr ""
|
234 |
|
235 |
-
#:
|
236 |
-
msgid "Restored"
|
237 |
msgstr ""
|
238 |
|
239 |
-
#:
|
240 |
-
msgid "
|
241 |
msgstr ""
|
242 |
|
243 |
-
#:
|
244 |
-
msgid "
|
245 |
msgstr ""
|
246 |
|
247 |
-
#:
|
248 |
-
msgid "
|
249 |
msgstr ""
|
250 |
|
251 |
-
#:
|
252 |
-
msgid "
|
253 |
msgstr ""
|
254 |
|
255 |
-
#:
|
256 |
-
msgid "
|
257 |
msgstr ""
|
258 |
|
259 |
-
#:
|
260 |
-
msgid "
|
261 |
msgstr ""
|
262 |
|
263 |
-
#:
|
264 |
-
msgid "
|
265 |
msgstr ""
|
266 |
|
267 |
-
#:
|
268 |
-
msgid "
|
269 |
msgstr ""
|
270 |
|
271 |
-
#:
|
272 |
-
msgid "
|
273 |
msgstr ""
|
274 |
|
275 |
-
#:
|
276 |
-
msgid "
|
277 |
msgstr ""
|
278 |
|
279 |
-
#:
|
280 |
-
msgid "
|
281 |
msgstr ""
|
282 |
|
283 |
-
#:
|
284 |
-
|
285 |
-
msgid "Pages"
|
286 |
msgstr ""
|
287 |
|
288 |
-
#:
|
289 |
-
|
290 |
-
msgid "Custom Post Types"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#:
|
294 |
-
msgid "
|
295 |
msgstr ""
|
296 |
|
297 |
-
#:
|
298 |
-
msgid "
|
299 |
msgstr ""
|
300 |
|
301 |
-
#:
|
302 |
-
msgid "
|
303 |
msgstr ""
|
304 |
|
305 |
-
#:
|
306 |
-
msgid "
|
307 |
msgstr ""
|
308 |
|
309 |
-
#:
|
310 |
-
msgid "
|
311 |
msgstr ""
|
312 |
|
313 |
-
#:
|
314 |
-
msgid "
|
315 |
msgstr ""
|
316 |
|
317 |
-
#:
|
318 |
-
msgid "
|
319 |
msgstr ""
|
320 |
|
321 |
-
#:
|
322 |
-
msgid "
|
323 |
msgstr ""
|
324 |
|
325 |
-
#:
|
326 |
-
msgid "
|
327 |
msgstr ""
|
328 |
|
329 |
-
#:
|
330 |
-
|
331 |
-
msgid "All Sites"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#:
|
335 |
-
msgid "
|
336 |
msgstr ""
|
337 |
|
338 |
-
#:
|
339 |
-
msgid "
|
340 |
msgstr ""
|
341 |
|
342 |
-
#:
|
343 |
-
|
344 |
-
#: defaults.php:696 defaults.php:711
|
345 |
-
msgid "ID"
|
346 |
msgstr ""
|
347 |
|
348 |
-
#:
|
349 |
-
|
350 |
-
#: classes/Views/Settings.php:1090 classes/Views/ToggleAlerts.php:299
|
351 |
-
msgid "Severity"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#:
|
355 |
-
msgid "
|
356 |
msgstr ""
|
357 |
|
358 |
-
#:
|
359 |
-
|
360 |
-
msgid "Site"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#:
|
364 |
-
|
365 |
-
msgid "Message"
|
366 |
msgstr ""
|
367 |
|
368 |
-
#:
|
369 |
-
msgid "
|
370 |
msgstr ""
|
371 |
|
372 |
-
#:
|
373 |
-
msgid "
|
374 |
msgstr ""
|
375 |
|
376 |
-
#:
|
377 |
-
msgid "
|
378 |
msgstr ""
|
379 |
|
380 |
-
#:
|
381 |
-
|
382 |
-
#: classes/AuditLogListView.php:458
|
383 |
-
msgid "Unknown"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#:
|
387 |
-
msgid "
|
388 |
msgstr ""
|
389 |
|
390 |
-
#:
|
391 |
-
|
392 |
-
msgid "Plugins"
|
393 |
msgstr ""
|
394 |
|
395 |
-
#:
|
396 |
-
msgid "
|
397 |
msgstr ""
|
398 |
|
399 |
-
#:
|
400 |
-
|
401 |
-
msgid "Show me all activity originating from this IP Address"
|
402 |
msgstr ""
|
403 |
|
404 |
-
#:
|
405 |
-
msgid "
|
406 |
msgstr ""
|
407 |
|
408 |
-
#:
|
409 |
-
msgid "
|
410 |
msgstr ""
|
411 |
|
412 |
-
#:
|
413 |
-
msgid "User
|
414 |
msgstr ""
|
415 |
|
416 |
-
#:
|
417 |
-
msgid "
|
418 |
msgstr ""
|
419 |
|
420 |
-
#:
|
421 |
-
msgid "
|
422 |
msgstr ""
|
423 |
|
424 |
-
#:
|
425 |
-
msgid "
|
426 |
msgstr ""
|
427 |
|
428 |
-
#:
|
429 |
-
msgid "
|
430 |
msgstr ""
|
431 |
|
432 |
-
#:
|
433 |
-
msgid "
|
434 |
msgstr ""
|
435 |
|
436 |
-
#:
|
437 |
-
msgid "
|
438 |
msgstr ""
|
439 |
|
440 |
-
#:
|
441 |
-
msgid "
|
442 |
msgstr ""
|
443 |
|
444 |
-
#:
|
445 |
-
msgid "
|
446 |
msgstr ""
|
447 |
|
448 |
-
#:
|
449 |
-
|
450 |
-
msgid "Object"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#:
|
454 |
-
|
455 |
-
msgid "Event Type"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#:
|
459 |
-
msgid "
|
460 |
msgstr ""
|
461 |
|
462 |
-
#:
|
463 |
-
msgid "
|
464 |
msgstr ""
|
465 |
|
466 |
-
#: classes/
|
467 |
-
msgid "
|
468 |
msgstr ""
|
469 |
|
470 |
-
#: classes/
|
471 |
-
msgid "
|
472 |
msgstr ""
|
473 |
|
474 |
-
#:
|
475 |
-
|
476 |
-
msgid "Code %1$d: %2$s"
|
477 |
msgstr ""
|
478 |
|
479 |
-
#:
|
480 |
-
msgid "
|
481 |
msgstr ""
|
482 |
|
483 |
-
#:
|
484 |
-
|
485 |
-
msgid "This either means that the username and password information in your %1$s file is incorrect or we can’t contact the database server at %2$s. This could mean your host’s database server is down."
|
486 |
msgstr ""
|
487 |
|
488 |
-
#:
|
489 |
-
msgid "
|
490 |
msgstr ""
|
491 |
|
492 |
-
#:
|
493 |
-
msgid "
|
494 |
msgstr ""
|
495 |
|
496 |
-
#:
|
497 |
-
msgid "
|
498 |
msgstr ""
|
499 |
|
500 |
-
#:
|
501 |
-
|
502 |
-
msgid "If you’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 |
-
#:
|
506 |
-
msgid "
|
507 |
msgstr ""
|
508 |
|
509 |
-
#:
|
510 |
-
msgid "
|
511 |
msgstr ""
|
512 |
|
513 |
-
#:
|
514 |
-
|
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 |
-
#:
|
519 |
-
msgid "
|
520 |
msgstr ""
|
521 |
|
522 |
-
#:
|
523 |
-
|
524 |
-
msgid "Does the user %1$s have permission to use the %2$s database?"
|
525 |
msgstr ""
|
526 |
|
527 |
-
#:
|
528 |
-
|
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 |
-
#:
|
533 |
-
|
534 |
-
msgid "If you don’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 |
-
#:
|
538 |
-
msgid "
|
539 |
msgstr ""
|
540 |
|
541 |
-
#:
|
542 |
-
|
543 |
-
msgid "Critical"
|
544 |
msgstr ""
|
545 |
|
546 |
-
#:
|
547 |
-
msgid "
|
548 |
msgstr ""
|
549 |
|
550 |
-
#:
|
551 |
-
|
552 |
-
msgid "Notification"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#:
|
556 |
-
msgid "
|
557 |
msgstr ""
|
558 |
|
559 |
-
#:
|
560 |
-
msgid "
|
561 |
msgstr ""
|
562 |
|
563 |
-
#:
|
564 |
-
msgid "
|
565 |
msgstr ""
|
566 |
|
567 |
-
#:
|
568 |
-
msgid "
|
569 |
msgstr ""
|
570 |
|
571 |
-
#:
|
572 |
-
msgid "
|
573 |
msgstr ""
|
574 |
|
575 |
-
#:
|
576 |
-
|
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 |
-
#:
|
581 |
-
msgid "
|
582 |
msgstr ""
|
583 |
|
584 |
-
#:
|
585 |
-
msgid "
|
586 |
msgstr ""
|
587 |
|
588 |
-
#:
|
589 |
-
msgid "
|
590 |
msgstr ""
|
591 |
|
592 |
-
#:
|
593 |
-
msgid "
|
594 |
msgstr ""
|
595 |
|
596 |
-
#:
|
597 |
-
msgid "
|
598 |
msgstr ""
|
599 |
|
600 |
-
#:
|
601 |
-
msgid "
|
602 |
msgstr ""
|
603 |
|
604 |
-
#:
|
605 |
-
msgid "
|
606 |
msgstr ""
|
607 |
|
608 |
-
#:
|
609 |
-
msgid "
|
610 |
msgstr ""
|
611 |
|
612 |
-
#:
|
613 |
-
msgid "
|
614 |
msgstr ""
|
615 |
|
616 |
-
#:
|
617 |
-
msgid "
|
618 |
msgstr ""
|
619 |
|
620 |
-
#:
|
621 |
-
msgid "
|
622 |
msgstr ""
|
623 |
|
624 |
-
#:
|
625 |
-
msgid "
|
626 |
msgstr ""
|
627 |
|
628 |
-
#:
|
629 |
-
msgid "
|
630 |
msgstr ""
|
631 |
|
632 |
-
#:
|
633 |
-
msgid "
|
634 |
msgstr ""
|
635 |
|
636 |
-
#:
|
637 |
-
msgid "
|
638 |
msgstr ""
|
639 |
|
640 |
-
#:
|
641 |
-
msgid "
|
642 |
msgstr ""
|
643 |
|
644 |
-
#:
|
645 |
-
msgid "
|
646 |
msgstr ""
|
647 |
|
648 |
-
#:
|
649 |
-
msgid "
|
650 |
msgstr ""
|
651 |
|
652 |
-
#:
|
653 |
-
msgid "
|
654 |
msgstr ""
|
655 |
|
656 |
-
#:
|
657 |
-
msgid "
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: classes/
|
661 |
-
msgid "
|
662 |
msgstr ""
|
663 |
|
664 |
-
#:
|
665 |
-
msgid "
|
666 |
msgstr ""
|
667 |
|
668 |
-
#:
|
669 |
-
msgid "
|
670 |
msgstr ""
|
671 |
|
672 |
-
#:
|
673 |
-
msgid "
|
674 |
msgstr ""
|
675 |
|
676 |
-
#:
|
677 |
-
msgid "
|
678 |
msgstr ""
|
679 |
|
680 |
-
#:
|
681 |
-
msgid "
|
682 |
msgstr ""
|
683 |
|
684 |
-
#:
|
685 |
-
|
686 |
-
msgid "Gravity Forms"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#:
|
690 |
-
msgid "
|
691 |
msgstr ""
|
692 |
|
693 |
-
#:
|
694 |
-
msgid "
|
695 |
msgstr ""
|
696 |
|
697 |
-
#:
|
698 |
-
|
699 |
-
msgid "WooCommerce"
|
700 |
msgstr ""
|
701 |
|
702 |
-
#:
|
703 |
-
msgid "
|
704 |
msgstr ""
|
705 |
|
706 |
-
#:
|
707 |
-
|
708 |
-
msgid "WP Activity Log plugin disabled on %s"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#:
|
712 |
-
msgid "
|
713 |
msgstr ""
|
714 |
|
715 |
-
#:
|
716 |
-
|
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 |
-
#:
|
721 |
-
msgid "
|
722 |
msgstr ""
|
723 |
|
724 |
-
#:
|
725 |
-
|
726 |
-
msgid "Extension for "
|
727 |
msgstr ""
|
728 |
|
729 |
-
#:
|
730 |
-
|
731 |
-
msgid "Extension installed, activate now?"
|
732 |
msgstr ""
|
733 |
|
734 |
-
#:
|
735 |
-
|
736 |
-
#: wp-security-audit-log.php:1289
|
737 |
-
msgid "Extension installed"
|
738 |
msgstr ""
|
739 |
|
740 |
-
#:
|
741 |
-
|
742 |
-
msgid "Install Extension"
|
743 |
msgstr ""
|
744 |
|
745 |
-
#:
|
746 |
-
msgid "
|
747 |
msgstr ""
|
748 |
|
749 |
-
#:
|
750 |
-
msgid "
|
751 |
msgstr ""
|
752 |
|
753 |
-
#:
|
754 |
-
msgid "
|
755 |
msgstr ""
|
756 |
|
757 |
-
#:
|
758 |
-
msgid "
|
759 |
msgstr ""
|
760 |
|
761 |
-
#:
|
762 |
-
msgid "
|
763 |
msgstr ""
|
764 |
|
765 |
-
#:
|
766 |
-
msgid "
|
767 |
msgstr ""
|
768 |
|
769 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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/
|
778 |
-
msgid "
|
779 |
msgstr ""
|
780 |
|
781 |
-
#: classes/Views/
|
782 |
-
msgid "
|
783 |
msgstr ""
|
784 |
|
785 |
-
#: classes/Views/
|
786 |
-
msgid "
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: classes/Views/
|
790 |
-
msgid "
|
791 |
msgstr ""
|
792 |
|
793 |
-
#: classes/Views/
|
794 |
-
msgid "
|
795 |
msgstr ""
|
796 |
|
797 |
-
#: classes/Views/
|
798 |
-
msgid "
|
799 |
msgstr ""
|
800 |
|
801 |
-
#: classes/Views/
|
802 |
-
msgid "
|
803 |
msgstr ""
|
804 |
|
805 |
-
#: classes/Views/
|
806 |
-
msgid "
|
807 |
msgstr ""
|
808 |
|
809 |
-
#: classes/Views/
|
810 |
-
msgid "
|
811 |
msgstr ""
|
812 |
|
813 |
-
#: classes/Views/
|
814 |
-
msgid "
|
815 |
msgstr ""
|
816 |
|
817 |
-
#: classes/Views/
|
818 |
-
msgid "
|
819 |
msgstr ""
|
820 |
|
821 |
-
#: classes/Views/
|
822 |
-
msgid "
|
823 |
msgstr ""
|
824 |
|
825 |
-
#: classes/Views/
|
826 |
-
msgid "
|
827 |
msgstr ""
|
828 |
|
829 |
-
#: classes/Views/
|
830 |
-
msgid "
|
831 |
msgstr ""
|
832 |
|
833 |
-
#: classes/Views/
|
834 |
-
msgid "
|
835 |
msgstr ""
|
836 |
|
837 |
-
#: classes/Views/
|
838 |
-
msgid "
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: classes/Views/
|
842 |
-
msgid "
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: classes/Views/
|
846 |
-
|
847 |
-
msgid "You do not have sufficient permissions to access this page."
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: classes/Views/
|
851 |
-
msgid "
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: classes/Views/
|
855 |
-
|
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/
|
864 |
-
|
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/
|
873 |
-
msgid "
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: classes/Views/
|
877 |
-
msgid "
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: classes/Views/
|
881 |
-
|
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/
|
889 |
-
msgid "
|
890 |
msgstr ""
|
891 |
|
892 |
-
#: classes/Views/
|
893 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
894 |
msgstr ""
|
895 |
|
896 |
-
#: classes/Views/
|
897 |
-
msgid "
|
898 |
msgstr ""
|
899 |
|
900 |
-
#: classes/Views/
|
901 |
-
|
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/
|
906 |
-
msgid "
|
907 |
msgstr ""
|
908 |
|
909 |
-
#: classes/Views/
|
910 |
-
msgid "
|
911 |
msgstr ""
|
912 |
|
913 |
-
#: classes/Views/
|
914 |
-
msgid "
|
915 |
msgstr ""
|
916 |
|
917 |
-
#: classes/Views/
|
918 |
-
msgid "
|
919 |
msgstr ""
|
920 |
|
921 |
-
#: classes/Views/
|
922 |
-
msgid "
|
923 |
msgstr ""
|
924 |
|
925 |
-
#: classes/Views/
|
926 |
-
msgid "
|
927 |
msgstr ""
|
928 |
|
929 |
-
#: classes/Views/
|
930 |
-
msgid "
|
931 |
msgstr ""
|
932 |
|
933 |
-
#: classes/Views/
|
934 |
-
msgid "
|
935 |
msgstr ""
|
936 |
|
937 |
-
#: classes/Views/
|
938 |
-
msgid "
|
939 |
msgstr ""
|
940 |
|
941 |
-
#: classes/Views/
|
942 |
-
msgid "
|
943 |
msgstr ""
|
944 |
|
945 |
-
#: classes/Views/
|
946 |
-
msgid "
|
947 |
msgstr ""
|
948 |
|
949 |
-
#: classes/Views/
|
950 |
-
msgid "
|
951 |
msgstr ""
|
952 |
|
953 |
-
#: classes/Views/
|
954 |
-
msgid "
|
955 |
msgstr ""
|
956 |
|
957 |
-
#: classes/Views/
|
958 |
-
msgid "
|
959 |
msgstr ""
|
960 |
|
961 |
-
#: classes/Views/
|
962 |
-
msgid "
|
963 |
msgstr ""
|
964 |
|
965 |
-
#: classes/Views/
|
966 |
-
msgid "
|
967 |
msgstr ""
|
968 |
|
969 |
-
#: classes/Views/
|
970 |
-
msgid "
|
971 |
msgstr ""
|
972 |
|
973 |
-
#: classes/Views/
|
974 |
-
msgid "
|
975 |
msgstr ""
|
976 |
|
977 |
-
#: classes/Views/
|
978 |
-
msgid "
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: classes/Views/
|
982 |
-
msgid "
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: classes/Views/
|
986 |
-
msgid "
|
987 |
msgstr ""
|
988 |
|
989 |
-
#: classes/Views/
|
990 |
-
msgid "
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: classes/Views/
|
994 |
-
msgid "
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: classes/Views/
|
998 |
-
msgid "
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: classes/Views/
|
1002 |
-
msgid "
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: classes/Views/
|
1006 |
-
msgid "
|
1007 |
msgstr ""
|
1008 |
|
1009 |
-
#: classes/Views/
|
1010 |
-
msgid "
|
1011 |
msgstr ""
|
1012 |
|
1013 |
-
#: classes/Views/
|
1014 |
-
msgid "
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: classes/Views/
|
1018 |
-
msgid "
|
1019 |
msgstr ""
|
1020 |
|
1021 |
-
#: classes/Views/
|
1022 |
-
msgid "Configure
|
1023 |
msgstr ""
|
1024 |
|
1025 |
-
#: classes/Views/
|
1026 |
-
msgid "
|
1027 |
msgstr ""
|
1028 |
|
1029 |
-
#: classes/Views/
|
1030 |
-
msgid "
|
1031 |
msgstr ""
|
1032 |
|
1033 |
-
#: classes/Views/
|
1034 |
-
msgid "
|
1035 |
msgstr ""
|
1036 |
|
1037 |
-
#: classes/Views/
|
1038 |
-
msgid "
|
1039 |
msgstr ""
|
1040 |
|
1041 |
-
#: classes/Views/
|
1042 |
-
msgid "
|
1043 |
msgstr ""
|
1044 |
|
1045 |
-
#: classes/Views/
|
1046 |
-
msgid "
|
1047 |
msgstr ""
|
1048 |
|
1049 |
-
#: classes/Views/
|
1050 |
-
msgid "
|
1051 |
msgstr ""
|
1052 |
|
1053 |
-
#: classes/Views/
|
1054 |
-
msgid "
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: classes/Views/
|
1058 |
-
msgid "
|
1059 |
msgstr ""
|
1060 |
|
1061 |
-
#: classes/Views/
|
1062 |
-
msgid "
|
1063 |
msgstr ""
|
1064 |
|
1065 |
-
#: classes/Views/
|
1066 |
-
msgid "
|
1067 |
msgstr ""
|
1068 |
|
1069 |
-
#: classes/Views/
|
1070 |
-
msgid "
|
1071 |
msgstr ""
|
1072 |
|
1073 |
-
#: classes/Views/
|
1074 |
-
msgid "
|
1075 |
msgstr ""
|
1076 |
|
1077 |
-
#: classes/Views/
|
1078 |
-
msgid "
|
1079 |
msgstr ""
|
1080 |
|
1081 |
-
#: classes/Views/
|
1082 |
-
msgid "
|
1083 |
msgstr ""
|
1084 |
|
1085 |
-
#: classes/Views/
|
1086 |
-
msgid "
|
1087 |
msgstr ""
|
1088 |
|
1089 |
-
#: classes/Views/
|
1090 |
-
msgid "
|
1091 |
msgstr ""
|
1092 |
|
1093 |
-
#: classes/Views/
|
1094 |
-
msgid "
|
1095 |
msgstr ""
|
1096 |
|
1097 |
-
#: classes/Views/
|
1098 |
-
msgid "
|
1099 |
msgstr ""
|
1100 |
|
1101 |
-
#: classes/Views/
|
1102 |
-
msgid "
|
1103 |
msgstr ""
|
1104 |
|
1105 |
-
#: classes/Views/
|
1106 |
-
msgid "
|
1107 |
msgstr ""
|
1108 |
|
1109 |
-
#: classes/Views/
|
1110 |
-
msgid "
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: classes/Views/
|
1114 |
-
msgid "
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: classes/Views/
|
1118 |
-
msgid "
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: classes/Views/
|
1122 |
-
msgid "
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
#: classes/Views/
|
1126 |
-
msgid "
|
1127 |
msgstr ""
|
1128 |
|
1129 |
-
#: classes/Views/
|
1130 |
-
msgid "
|
1131 |
msgstr ""
|
1132 |
|
1133 |
-
#: classes/Views/
|
1134 |
-
msgid "
|
1135 |
msgstr ""
|
1136 |
|
1137 |
-
#: classes/Views/
|
1138 |
-
msgid "
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
#: classes/Views/
|
1142 |
-
msgid "
|
1143 |
msgstr ""
|
1144 |
|
1145 |
-
#: classes/Views/
|
1146 |
-
msgid "
|
1147 |
msgstr ""
|
1148 |
|
1149 |
-
#: classes/Views/
|
1150 |
-
msgid "
|
1151 |
msgstr ""
|
1152 |
|
1153 |
-
#: classes/Views/
|
1154 |
-
msgid "
|
1155 |
msgstr ""
|
1156 |
|
1157 |
-
#: classes/Views/
|
1158 |
-
msgid "
|
1159 |
msgstr ""
|
1160 |
|
1161 |
-
#: classes/Views/
|
1162 |
-
msgid "
|
1163 |
msgstr ""
|
1164 |
|
1165 |
-
#: classes/Views/
|
1166 |
-
msgid "
|
1167 |
msgstr ""
|
1168 |
|
1169 |
-
#: classes/Views/
|
1170 |
-
msgid "The
|
1171 |
msgstr ""
|
1172 |
|
1173 |
-
#: classes/Views/
|
1174 |
-
msgid "
|
1175 |
msgstr ""
|
1176 |
|
1177 |
-
#: classes/Views/
|
1178 |
-
msgid "
|
1179 |
msgstr ""
|
1180 |
|
1181 |
-
#: classes/Views/
|
1182 |
-
msgid "
|
1183 |
msgstr ""
|
1184 |
|
1185 |
-
#: classes/Views/
|
1186 |
-
msgid "
|
1187 |
msgstr ""
|
1188 |
|
1189 |
-
#: classes/Views/
|
1190 |
-
msgid "
|
1191 |
msgstr ""
|
1192 |
|
1193 |
-
#: classes/Views/
|
1194 |
-
msgid "
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
#: classes/Views/
|
1198 |
-
msgid "
|
1199 |
msgstr ""
|
1200 |
|
1201 |
-
#: classes/Views/
|
1202 |
-
msgid "
|
1203 |
msgstr ""
|
1204 |
|
1205 |
-
#: classes/Views/
|
1206 |
-
msgid "
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: classes/Views/
|
1210 |
-
msgid "
|
1211 |
msgstr ""
|
1212 |
|
1213 |
-
#: classes/Views/
|
1214 |
-
msgid "
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: classes/Views/
|
1218 |
-
msgid "
|
1219 |
msgstr ""
|
1220 |
|
1221 |
-
#: classes/Views/
|
1222 |
-
msgid "
|
1223 |
msgstr ""
|
1224 |
|
1225 |
-
#: classes/Views/
|
1226 |
-
msgid "
|
1227 |
msgstr ""
|
1228 |
|
1229 |
-
#: classes/Views/
|
1230 |
-
msgid "
|
1231 |
msgstr ""
|
1232 |
|
1233 |
-
#: classes/Views/
|
1234 |
-
msgid "
|
1235 |
msgstr ""
|
1236 |
|
1237 |
-
#: classes/Views/
|
1238 |
-
msgid "
|
1239 |
msgstr ""
|
1240 |
|
1241 |
-
#: classes/Views/
|
1242 |
-
msgid "
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: classes/Views/
|
1246 |
-
msgid "
|
1247 |
msgstr ""
|
1248 |
|
1249 |
-
#: classes/Views/
|
1250 |
-
msgid "
|
1251 |
msgstr ""
|
1252 |
|
1253 |
-
#: classes/Views/
|
1254 |
-
msgid "
|
1255 |
msgstr ""
|
1256 |
|
1257 |
-
#: classes/Views/
|
1258 |
-
msgid "
|
1259 |
msgstr ""
|
1260 |
|
1261 |
-
#: classes/Views/
|
1262 |
-
msgid "
|
1263 |
msgstr ""
|
1264 |
|
1265 |
-
#: classes/Views/
|
1266 |
-
msgid "
|
1267 |
msgstr ""
|
1268 |
|
1269 |
-
#: classes/Views/
|
1270 |
-
msgid "
|
1271 |
msgstr ""
|
1272 |
|
1273 |
-
#: classes/Views/
|
1274 |
-
msgid "
|
1275 |
msgstr ""
|
1276 |
|
1277 |
-
#: classes/Views/
|
1278 |
-
msgid "
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: classes/Views/
|
1282 |
-
msgid "
|
1283 |
msgstr ""
|
1284 |
|
1285 |
-
#: classes/Views/
|
1286 |
-
msgid "
|
1287 |
msgstr ""
|
1288 |
|
1289 |
-
#: classes/Views/
|
1290 |
-
msgid "
|
1291 |
msgstr ""
|
1292 |
|
1293 |
-
|
1294 |
-
#:
|
1295 |
-
msgid "
|
1296 |
msgstr ""
|
1297 |
|
1298 |
-
#: classes/Views/
|
1299 |
-
msgid "
|
1300 |
msgstr ""
|
1301 |
|
1302 |
-
#: classes/Views/
|
1303 |
-
msgid "
|
1304 |
msgstr ""
|
1305 |
|
1306 |
-
#: classes/Views/
|
1307 |
-
msgid "
|
1308 |
msgstr ""
|
1309 |
|
1310 |
-
#: classes/Views/
|
1311 |
-
msgid "
|
1312 |
msgstr ""
|
1313 |
|
1314 |
-
#: classes/Views/
|
1315 |
-
msgid "
|
1316 |
msgstr ""
|
1317 |
|
1318 |
-
#: classes/Views/
|
1319 |
-
|
1320 |
-
msgid "Access Denied."
|
1321 |
msgstr ""
|
1322 |
|
1323 |
-
#: classes/Views/
|
1324 |
-
msgid "
|
1325 |
msgstr ""
|
1326 |
|
1327 |
-
#: classes/Views/
|
1328 |
-
msgid "
|
1329 |
msgstr ""
|
1330 |
|
1331 |
-
#: classes/Views/
|
1332 |
-
msgid "
|
1333 |
msgstr ""
|
1334 |
|
1335 |
-
#: classes/Views/
|
1336 |
-
msgid "
|
1337 |
msgstr ""
|
1338 |
|
1339 |
-
#: classes/Views/
|
1340 |
-
msgid "
|
1341 |
msgstr ""
|
1342 |
|
1343 |
-
#: classes/Views/
|
1344 |
-
msgid "
|
1345 |
msgstr ""
|
1346 |
|
1347 |
-
#: classes/Views/
|
1348 |
-
msgid "
|
1349 |
msgstr ""
|
1350 |
|
1351 |
-
#: classes/Views/
|
1352 |
-
msgid "
|
1353 |
msgstr ""
|
1354 |
|
1355 |
-
#: classes/Views/
|
1356 |
-
|
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/
|
1361 |
-
msgid "
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: classes/Views/
|
1365 |
-
msgid "
|
1366 |
msgstr ""
|
1367 |
|
1368 |
-
#: classes/Views/
|
1369 |
-
msgid "
|
1370 |
msgstr ""
|
1371 |
|
1372 |
-
#: classes/Views/
|
1373 |
-
msgid "
|
1374 |
msgstr ""
|
1375 |
|
1376 |
-
#: classes/Views/
|
1377 |
-
msgid "
|
1378 |
msgstr ""
|
1379 |
|
1380 |
-
#: classes/Views/
|
1381 |
-
msgid "
|
1382 |
msgstr ""
|
1383 |
|
1384 |
-
#: classes/Views/
|
1385 |
-
msgid "
|
1386 |
msgstr ""
|
1387 |
|
1388 |
-
#: classes/Views/
|
1389 |
-
msgid "
|
1390 |
msgstr ""
|
1391 |
|
1392 |
-
#: classes/Views/
|
1393 |
-
msgid "
|
1394 |
msgstr ""
|
1395 |
|
1396 |
-
#: classes/Views/
|
1397 |
-
msgid "
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: classes/Views/
|
1401 |
-
|
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/
|
1406 |
-
msgid "
|
1407 |
msgstr ""
|
1408 |
|
1409 |
-
#: classes/Views/
|
1410 |
-
msgid "
|
1411 |
msgstr ""
|
1412 |
|
1413 |
-
#: classes/Views/
|
1414 |
-
msgid "
|
1415 |
msgstr ""
|
1416 |
|
1417 |
-
#: classes/Views/
|
1418 |
-
msgid "
|
1419 |
msgstr ""
|
1420 |
|
1421 |
-
#: classes/Views/
|
1422 |
-
msgid "
|
1423 |
msgstr ""
|
1424 |
|
1425 |
-
#: classes/Views/
|
1426 |
-
msgid "
|
1427 |
msgstr ""
|
1428 |
|
1429 |
-
#: classes/Views/
|
1430 |
-
msgid "
|
1431 |
msgstr ""
|
1432 |
|
1433 |
-
#: classes/Views/
|
1434 |
-
msgid "
|
1435 |
msgstr ""
|
1436 |
|
1437 |
-
#: classes/Views/
|
1438 |
-
msgid "
|
1439 |
msgstr ""
|
1440 |
|
1441 |
-
#: classes/Views/
|
1442 |
-
msgid "
|
1443 |
msgstr ""
|
1444 |
|
1445 |
-
#: classes/Views/
|
1446 |
-
msgid "
|
1447 |
msgstr ""
|
1448 |
|
1449 |
-
#: classes/Views/
|
1450 |
-
msgid "
|
1451 |
msgstr ""
|
1452 |
|
1453 |
-
#: classes/Views/
|
1454 |
-
msgid "
|
1455 |
msgstr ""
|
1456 |
|
1457 |
-
#: classes/Views/
|
1458 |
-
msgid "
|
1459 |
msgstr ""
|
1460 |
|
1461 |
-
#: classes/Views/
|
1462 |
-
|
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/
|
1467 |
-
|
1468 |
-
msgid "learn more"
|
1469 |
msgstr ""
|
1470 |
|
1471 |
-
#: classes/Views/
|
1472 |
-
msgid "
|
1473 |
msgstr ""
|
1474 |
|
1475 |
-
#: classes/Views/
|
1476 |
-
msgid "
|
1477 |
msgstr ""
|
1478 |
|
1479 |
-
#: classes/Views/
|
1480 |
-
msgid "
|
1481 |
msgstr ""
|
1482 |
|
1483 |
-
#: classes/Views/
|
1484 |
-
|
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/
|
1489 |
-
msgid "
|
1490 |
msgstr ""
|
1491 |
|
1492 |
-
#: classes/Views/
|
1493 |
-
msgid "
|
1494 |
msgstr ""
|
1495 |
|
1496 |
-
#: classes/Views/
|
1497 |
-
msgid "
|
1498 |
msgstr ""
|
1499 |
|
1500 |
-
#: classes/Views/
|
1501 |
-
msgid "
|
1502 |
msgstr ""
|
1503 |
|
1504 |
-
#: classes/Views/
|
1505 |
-
msgid "
|
1506 |
msgstr ""
|
1507 |
|
1508 |
-
#: classes/Views/
|
1509 |
-
msgid "
|
1510 |
msgstr ""
|
1511 |
|
1512 |
-
#: classes/Views/
|
1513 |
-
msgid "
|
1514 |
msgstr ""
|
1515 |
|
1516 |
-
#: classes/Views/
|
1517 |
-
msgid "
|
1518 |
msgstr ""
|
1519 |
|
1520 |
-
|
1521 |
-
|
|
|
1522 |
msgstr ""
|
1523 |
|
1524 |
-
#: classes/Views/
|
1525 |
-
msgid "
|
1526 |
msgstr ""
|
1527 |
|
1528 |
-
#: classes/Views/
|
1529 |
-
msgid "
|
1530 |
msgstr ""
|
1531 |
|
1532 |
-
#: classes/Views/
|
1533 |
-
msgid "
|
1534 |
msgstr ""
|
1535 |
|
1536 |
-
#: classes/Views/
|
1537 |
-
msgid "
|
1538 |
msgstr ""
|
1539 |
|
1540 |
-
#: classes/Views/
|
1541 |
-
msgid "
|
1542 |
msgstr ""
|
1543 |
|
1544 |
-
#:
|
1545 |
-
msgid "
|
1546 |
msgstr ""
|
1547 |
|
1548 |
-
#: classes/
|
1549 |
-
msgid "
|
1550 |
msgstr ""
|
1551 |
|
1552 |
-
#:
|
1553 |
-
msgid "Use the
|
1554 |
msgstr ""
|
1555 |
|
1556 |
-
#:
|
1557 |
-
msgid "
|
1558 |
msgstr ""
|
1559 |
|
1560 |
-
#:
|
1561 |
-
msgid "
|
1562 |
msgstr ""
|
1563 |
|
1564 |
-
#:
|
1565 |
-
msgid "
|
1566 |
msgstr ""
|
1567 |
|
1568 |
-
#:
|
1569 |
-
msgid "
|
1570 |
msgstr ""
|
1571 |
|
1572 |
-
#:
|
1573 |
-
msgid "
|
1574 |
msgstr ""
|
1575 |
|
1576 |
-
#: classes/
|
1577 |
-
msgid "
|
1578 |
msgstr ""
|
1579 |
|
1580 |
-
#: classes/
|
1581 |
-
msgid "
|
1582 |
msgstr ""
|
1583 |
|
1584 |
-
#:
|
1585 |
-
msgid "
|
1586 |
msgstr ""
|
1587 |
|
1588 |
-
#:
|
1589 |
-
msgid "
|
1590 |
msgstr ""
|
1591 |
|
1592 |
-
#:
|
1593 |
-
msgid "
|
1594 |
msgstr ""
|
1595 |
|
1596 |
-
#:
|
1597 |
-
msgid "
|
1598 |
msgstr ""
|
1599 |
|
1600 |
-
|
1601 |
-
|
1602 |
-
msgid "
|
1603 |
msgstr ""
|
1604 |
|
1605 |
-
#:
|
1606 |
-
msgid "
|
1607 |
msgstr ""
|
1608 |
|
1609 |
-
#:
|
1610 |
-
msgid "
|
1611 |
msgstr ""
|
1612 |
|
1613 |
-
#:
|
1614 |
-
msgid "
|
1615 |
msgstr ""
|
1616 |
|
1617 |
-
#:
|
1618 |
-
msgid "
|
1619 |
msgstr ""
|
1620 |
|
1621 |
-
#:
|
1622 |
-
msgid "
|
1623 |
msgstr ""
|
1624 |
|
1625 |
-
#:
|
1626 |
-
msgid "
|
1627 |
msgstr ""
|
1628 |
|
1629 |
-
#: classes/Views/
|
1630 |
-
msgid "
|
1631 |
msgstr ""
|
1632 |
|
1633 |
-
#: classes/Views/
|
1634 |
-
msgid "
|
1635 |
msgstr ""
|
1636 |
|
1637 |
-
#: classes/Views/
|
1638 |
-
msgid "
|
1639 |
msgstr ""
|
1640 |
|
1641 |
-
#: classes/Views/
|
1642 |
-
msgid "
|
1643 |
msgstr ""
|
1644 |
|
1645 |
-
#: classes/
|
1646 |
-
msgid "
|
1647 |
msgstr ""
|
1648 |
|
1649 |
-
#: classes/
|
1650 |
-
msgid "
|
1651 |
msgstr ""
|
1652 |
|
1653 |
-
#: classes/
|
1654 |
-
msgid "
|
1655 |
msgstr ""
|
1656 |
|
1657 |
-
#: classes/
|
1658 |
-
msgid "
|
1659 |
msgstr ""
|
1660 |
|
1661 |
-
|
1662 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1663 |
msgstr ""
|
1664 |
|
1665 |
-
#: classes/
|
1666 |
-
msgid "
|
1667 |
msgstr ""
|
1668 |
|
1669 |
-
|
1670 |
-
|
|
|
|
|
1671 |
msgstr ""
|
1672 |
|
1673 |
-
#: classes/
|
1674 |
-
msgid "
|
1675 |
msgstr ""
|
1676 |
|
1677 |
-
#: classes/
|
1678 |
-
msgid "
|
1679 |
msgstr ""
|
1680 |
|
1681 |
-
#: classes/
|
1682 |
-
msgid "
|
1683 |
msgstr ""
|
1684 |
|
1685 |
-
#: classes/
|
1686 |
-
msgid "
|
1687 |
msgstr ""
|
1688 |
|
1689 |
-
#: classes/
|
1690 |
-
msgid "
|
1691 |
msgstr ""
|
1692 |
|
1693 |
-
#: classes/
|
1694 |
-
msgid "
|
1695 |
msgstr ""
|
1696 |
|
1697 |
-
#: classes/
|
1698 |
-
msgid "
|
1699 |
msgstr ""
|
1700 |
|
1701 |
-
#: classes/
|
1702 |
-
msgid "
|
1703 |
msgstr ""
|
1704 |
|
1705 |
-
#: classes/
|
1706 |
-
msgid "
|
1707 |
msgstr ""
|
1708 |
|
1709 |
-
|
1710 |
-
|
|
|
1711 |
msgstr ""
|
1712 |
|
1713 |
-
#: classes/
|
1714 |
-
msgid "
|
1715 |
msgstr ""
|
1716 |
|
1717 |
-
#: classes/
|
1718 |
-
msgid "
|
1719 |
msgstr ""
|
1720 |
|
1721 |
-
#: classes/
|
1722 |
-
msgid "
|
1723 |
msgstr ""
|
1724 |
|
1725 |
-
#: classes/
|
1726 |
-
msgid "
|
1727 |
msgstr ""
|
1728 |
|
1729 |
-
#: classes/
|
1730 |
-
msgid "
|
1731 |
msgstr ""
|
1732 |
|
1733 |
-
#: classes/
|
1734 |
-
msgid "
|
1735 |
msgstr ""
|
1736 |
|
1737 |
-
#: classes/
|
1738 |
-
msgid "
|
1739 |
msgstr ""
|
1740 |
|
1741 |
-
#: classes/
|
1742 |
-
msgid "
|
1743 |
msgstr ""
|
1744 |
|
1745 |
-
#: classes/
|
1746 |
-
msgid "
|
1747 |
msgstr ""
|
1748 |
|
1749 |
-
#: classes/
|
1750 |
-
msgid "
|
1751 |
msgstr ""
|
1752 |
|
1753 |
-
#: classes/
|
1754 |
-
msgid "
|
1755 |
msgstr ""
|
1756 |
|
1757 |
-
#: classes/
|
1758 |
-
msgid "
|
1759 |
msgstr ""
|
1760 |
|
1761 |
-
#: classes/
|
1762 |
-
msgid "
|
1763 |
msgstr ""
|
1764 |
|
1765 |
-
#: classes/
|
1766 |
-
msgid "
|
1767 |
msgstr ""
|
1768 |
|
1769 |
-
#: classes/
|
1770 |
-
msgid "
|
1771 |
msgstr ""
|
1772 |
|
1773 |
-
#: classes/
|
1774 |
-
msgid "
|
1775 |
msgstr ""
|
1776 |
|
1777 |
-
#: classes/
|
1778 |
-
msgid "
|
1779 |
msgstr ""
|
1780 |
|
1781 |
-
#: classes/
|
1782 |
-
msgid "
|
1783 |
msgstr ""
|
1784 |
|
1785 |
-
#: classes/
|
1786 |
-
msgid "
|
1787 |
msgstr ""
|
1788 |
|
1789 |
-
#: classes/
|
1790 |
-
msgid "
|
1791 |
msgstr ""
|
1792 |
|
1793 |
-
#: classes/
|
1794 |
-
msgid "
|
1795 |
msgstr ""
|
1796 |
|
1797 |
-
#: classes/
|
1798 |
-
msgid "
|
1799 |
msgstr ""
|
1800 |
|
1801 |
-
#: classes/
|
1802 |
-
msgid "
|
1803 |
msgstr ""
|
1804 |
|
1805 |
-
#: classes/
|
1806 |
-
msgid "
|
1807 |
msgstr ""
|
1808 |
|
1809 |
-
#: classes/
|
1810 |
-
msgid "
|
1811 |
msgstr ""
|
1812 |
|
1813 |
-
#: classes/
|
1814 |
-
msgid "
|
1815 |
msgstr ""
|
1816 |
|
1817 |
-
#: classes/
|
1818 |
-
msgid "
|
1819 |
msgstr ""
|
1820 |
|
1821 |
-
#: classes/
|
1822 |
-
msgid "
|
1823 |
msgstr ""
|
1824 |
|
1825 |
-
#: classes/
|
1826 |
-
msgid "
|
1827 |
msgstr ""
|
1828 |
|
1829 |
-
#: classes/
|
1830 |
-
msgid "
|
1831 |
msgstr ""
|
1832 |
|
1833 |
-
#: classes/
|
1834 |
-
msgid "
|
1835 |
msgstr ""
|
1836 |
|
1837 |
-
#: classes/
|
1838 |
-
msgid "
|
1839 |
msgstr ""
|
1840 |
|
1841 |
-
#: classes/
|
1842 |
-
msgid "
|
1843 |
msgstr ""
|
1844 |
|
1845 |
-
#: classes/
|
1846 |
-
msgid "
|
1847 |
msgstr ""
|
1848 |
|
1849 |
-
#: classes/
|
1850 |
-
msgid "
|
1851 |
msgstr ""
|
1852 |
|
1853 |
-
#: classes/
|
1854 |
-
msgid "
|
1855 |
msgstr ""
|
1856 |
|
1857 |
-
#: classes/
|
1858 |
-
msgid "
|
1859 |
msgstr ""
|
1860 |
|
1861 |
-
#: classes/
|
1862 |
-
msgid "
|
1863 |
msgstr ""
|
1864 |
|
1865 |
-
#: classes/
|
1866 |
-
msgid "
|
1867 |
msgstr ""
|
1868 |
|
1869 |
-
#: classes/
|
1870 |
-
msgid "
|
1871 |
msgstr ""
|
1872 |
|
1873 |
-
#: classes/
|
1874 |
-
msgid "
|
1875 |
msgstr ""
|
1876 |
|
1877 |
-
#: classes/
|
1878 |
-
msgid "
|
1879 |
msgstr ""
|
1880 |
|
1881 |
-
#: classes/
|
1882 |
-
msgid "
|
1883 |
msgstr ""
|
1884 |
|
1885 |
-
#: classes/
|
1886 |
-
msgid "
|
1887 |
msgstr ""
|
1888 |
|
1889 |
-
#: classes/
|
1890 |
-
msgid "
|
1891 |
msgstr ""
|
1892 |
|
1893 |
-
#: classes/
|
1894 |
-
msgid "
|
1895 |
msgstr ""
|
1896 |
|
1897 |
-
#: classes/
|
1898 |
-
msgid "
|
1899 |
msgstr ""
|
1900 |
|
1901 |
-
#: classes/
|
1902 |
-
msgid "
|
1903 |
msgstr ""
|
1904 |
|
1905 |
-
#: classes/
|
1906 |
-
msgid "
|
1907 |
msgstr ""
|
1908 |
|
1909 |
-
#: classes/
|
1910 |
-
msgid "
|
1911 |
msgstr ""
|
1912 |
|
1913 |
-
#: classes/
|
1914 |
-
msgid "
|
1915 |
msgstr ""
|
1916 |
|
1917 |
-
#: classes/
|
1918 |
-
msgid "
|
1919 |
msgstr ""
|
1920 |
|
1921 |
-
#: classes/
|
1922 |
-
msgid "
|
1923 |
msgstr ""
|
1924 |
|
1925 |
-
#: classes/
|
1926 |
-
msgid "
|
1927 |
msgstr ""
|
1928 |
|
1929 |
-
#: classes/
|
1930 |
-
msgid "
|
1931 |
msgstr ""
|
1932 |
|
1933 |
-
|
1934 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1935 |
msgstr ""
|
1936 |
|
1937 |
-
#: classes/
|
1938 |
-
msgid "
|
1939 |
msgstr ""
|
1940 |
|
1941 |
-
#:
|
1942 |
-
|
1943 |
-
msgid "Finish"
|
1944 |
msgstr ""
|
1945 |
|
1946 |
-
#: classes/
|
1947 |
-
msgid "
|
1948 |
msgstr ""
|
1949 |
|
1950 |
-
#: classes/
|
1951 |
-
msgid "
|
1952 |
msgstr ""
|
1953 |
|
1954 |
-
#: classes/
|
1955 |
-
msgid "
|
1956 |
msgstr ""
|
1957 |
|
1958 |
-
#: classes/
|
1959 |
-
msgid "
|
1960 |
msgstr ""
|
1961 |
|
1962 |
-
#: classes/
|
1963 |
-
msgid "
|
1964 |
msgstr ""
|
1965 |
|
1966 |
-
#: classes/
|
1967 |
-
msgid "
|
1968 |
msgstr ""
|
1969 |
|
1970 |
-
#: classes/
|
1971 |
-
msgid "
|
1972 |
msgstr ""
|
1973 |
|
1974 |
-
#: classes/
|
1975 |
-
msgid "
|
1976 |
msgstr ""
|
1977 |
|
1978 |
-
#: classes/
|
1979 |
-
msgid "
|
1980 |
msgstr ""
|
1981 |
|
1982 |
-
#: classes/
|
1983 |
-
|
1984 |
-
msgid "You have reached an invaild step - %1$sreturn to the start of the wizard%2$s."
|
1985 |
msgstr ""
|
1986 |
|
1987 |
-
#: classes/
|
1988 |
-
msgid "
|
1989 |
msgstr ""
|
1990 |
|
1991 |
-
#: classes/
|
1992 |
-
msgid "
|
1993 |
msgstr ""
|
1994 |
|
1995 |
-
#: classes/
|
1996 |
-
msgid "
|
1997 |
msgstr ""
|
1998 |
|
1999 |
-
#: classes/
|
2000 |
-
msgid "
|
2001 |
msgstr ""
|
2002 |
|
2003 |
-
#: classes/
|
2004 |
-
msgid "
|
2005 |
msgstr ""
|
2006 |
|
2007 |
-
#: classes/
|
2008 |
-
msgid "
|
2009 |
msgstr ""
|
2010 |
|
2011 |
-
#: classes/
|
2012 |
-
msgid "
|
2013 |
msgstr ""
|
2014 |
|
2015 |
-
#:
|
2016 |
-
|
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/
|
2023 |
-
msgid "
|
2024 |
msgstr ""
|
2025 |
|
2026 |
-
#: classes/
|
2027 |
-
msgid "
|
2028 |
msgstr ""
|
2029 |
|
2030 |
-
#: classes/
|
2031 |
-
msgid "
|
2032 |
msgstr ""
|
2033 |
|
2034 |
-
#: classes/
|
2035 |
-
msgid "
|
2036 |
msgstr ""
|
2037 |
|
2038 |
-
#:
|
2039 |
-
|
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/
|
2044 |
-
msgid "
|
2045 |
msgstr ""
|
2046 |
|
2047 |
-
#: classes/
|
2048 |
-
msgid "
|
2049 |
msgstr ""
|
2050 |
|
2051 |
-
#: classes/
|
2052 |
-
msgid "
|
2053 |
msgstr ""
|
2054 |
|
2055 |
-
#: classes/
|
2056 |
-
msgid "
|
2057 |
msgstr ""
|
2058 |
|
2059 |
-
#: classes/
|
2060 |
-
msgid "
|
2061 |
msgstr ""
|
2062 |
|
2063 |
-
#: classes/
|
2064 |
-
msgid "
|
2065 |
msgstr ""
|
2066 |
|
2067 |
-
#: classes/
|
2068 |
-
msgid "
|
2069 |
msgstr ""
|
2070 |
|
2071 |
-
#: classes/
|
2072 |
-
msgid "
|
2073 |
msgstr ""
|
2074 |
|
2075 |
-
|
2076 |
-
|
|
|
2077 |
msgstr ""
|
2078 |
|
2079 |
-
#: classes/
|
2080 |
-
msgid "
|
2081 |
msgstr ""
|
2082 |
|
2083 |
-
|
2084 |
-
|
|
|
2085 |
msgstr ""
|
2086 |
|
2087 |
-
#: classes/
|
2088 |
-
msgid "
|
2089 |
msgstr ""
|
2090 |
|
2091 |
-
#: classes/
|
2092 |
-
msgid "
|
2093 |
msgstr ""
|
2094 |
|
2095 |
-
#: classes/
|
2096 |
-
msgid "
|
2097 |
msgstr ""
|
2098 |
|
2099 |
-
#: classes/
|
2100 |
-
msgid "
|
2101 |
msgstr ""
|
2102 |
|
2103 |
-
#: classes/
|
2104 |
-
msgid "
|
2105 |
msgstr ""
|
2106 |
|
2107 |
-
#:
|
2108 |
-
msgid "
|
2109 |
msgstr ""
|
2110 |
|
2111 |
-
#: classes/
|
2112 |
-
msgid "
|
2113 |
msgstr ""
|
2114 |
|
2115 |
-
#: classes/
|
2116 |
-
msgid "
|
2117 |
msgstr ""
|
2118 |
|
2119 |
-
#: classes/
|
2120 |
-
msgid "
|
2121 |
msgstr ""
|
2122 |
|
2123 |
-
#: classes/
|
2124 |
-
msgid "
|
2125 |
msgstr ""
|
2126 |
|
2127 |
-
#: classes/
|
2128 |
-
msgid "
|
2129 |
msgstr ""
|
2130 |
|
2131 |
-
#: classes/
|
2132 |
-
msgid "
|
2133 |
msgstr ""
|
2134 |
|
2135 |
-
#: classes/
|
2136 |
-
msgid "
|
2137 |
msgstr ""
|
2138 |
|
2139 |
-
#:
|
2140 |
-
msgid "
|
2141 |
msgstr ""
|
2142 |
|
2143 |
-
#: classes/
|
2144 |
-
msgid "
|
2145 |
msgstr ""
|
2146 |
|
2147 |
-
#: classes/
|
2148 |
-
msgid "
|
2149 |
msgstr ""
|
2150 |
|
2151 |
-
#:
|
2152 |
-
msgid "
|
2153 |
msgstr ""
|
2154 |
|
2155 |
-
#: classes/
|
2156 |
-
msgid "
|
2157 |
msgstr ""
|
2158 |
|
2159 |
-
#: classes/
|
2160 |
-
msgid "
|
2161 |
msgstr ""
|
2162 |
|
2163 |
-
#: classes/
|
2164 |
-
msgid "
|
2165 |
msgstr ""
|
2166 |
|
2167 |
-
#: classes/
|
2168 |
-
msgid "
|
2169 |
msgstr ""
|
2170 |
|
2171 |
-
#: classes/
|
2172 |
-
msgid "
|
2173 |
msgstr ""
|
2174 |
|
2175 |
-
#: classes/
|
2176 |
-
msgid "
|
2177 |
msgstr ""
|
2178 |
|
2179 |
-
#: classes/
|
2180 |
-
msgid "
|
2181 |
msgstr ""
|
2182 |
|
2183 |
-
#:
|
2184 |
-
|
2185 |
-
msgid "Monitor File Changes"
|
2186 |
msgstr ""
|
2187 |
|
2188 |
-
#: classes/
|
2189 |
-
msgid "
|
2190 |
msgstr ""
|
2191 |
|
2192 |
-
#: classes/
|
2193 |
-
msgid "
|
2194 |
msgstr ""
|
2195 |
|
2196 |
-
#: classes/
|
2197 |
-
msgid "
|
2198 |
msgstr ""
|
2199 |
|
2200 |
-
#: classes/
|
2201 |
-
msgid "
|
2202 |
msgstr ""
|
2203 |
|
2204 |
-
#: classes/
|
2205 |
-
msgid "
|
2206 |
msgstr ""
|
2207 |
|
2208 |
-
#: classes/
|
2209 |
-
msgid "
|
2210 |
msgstr ""
|
2211 |
|
2212 |
-
#: classes/
|
2213 |
-
msgid "
|
2214 |
msgstr ""
|
2215 |
|
2216 |
-
#:
|
2217 |
-
msgid "
|
2218 |
msgstr ""
|
2219 |
|
2220 |
-
#: classes/
|
2221 |
-
msgid "
|
2222 |
msgstr ""
|
2223 |
|
2224 |
-
#: classes/
|
2225 |
-
msgid "
|
2226 |
msgstr ""
|
2227 |
|
2228 |
-
#: classes/
|
2229 |
-
msgid "
|
2230 |
msgstr ""
|
2231 |
|
2232 |
-
#: classes/
|
2233 |
-
|
2234 |
-
msgid "The %s log level has been successfully loaded and applied."
|
2235 |
msgstr ""
|
2236 |
|
2237 |
-
#: classes/
|
2238 |
-
msgid "
|
2239 |
msgstr ""
|
2240 |
|
2241 |
-
#: classes/
|
2242 |
-
msgid "
|
2243 |
msgstr ""
|
2244 |
|
2245 |
-
#: classes/
|
2246 |
-
msgid "
|
2247 |
msgstr ""
|
2248 |
|
2249 |
-
#: classes/
|
2250 |
-
msgid "
|
2251 |
msgstr ""
|
2252 |
|
2253 |
-
#: classes/
|
2254 |
-
msgid "
|
2255 |
msgstr ""
|
2256 |
|
2257 |
-
#:
|
2258 |
-
msgid "
|
2259 |
msgstr ""
|
2260 |
|
2261 |
-
#:
|
2262 |
-
msgid "
|
2263 |
msgstr ""
|
2264 |
|
2265 |
-
#:
|
2266 |
-
msgid "
|
2267 |
msgstr ""
|
2268 |
|
2269 |
-
#:
|
2270 |
-
msgid "
|
2271 |
msgstr ""
|
2272 |
|
2273 |
-
#: classes/
|
2274 |
-
msgid "
|
2275 |
msgstr ""
|
2276 |
|
2277 |
-
#: classes/
|
2278 |
-
msgid "
|
|
|
|
|
|
|
|
|
2279 |
msgstr ""
|
2280 |
|
2281 |
-
#:
|
2282 |
-
msgid "
|
2283 |
msgstr ""
|
2284 |
|
2285 |
-
#:
|
2286 |
-
msgid "
|
2287 |
msgstr ""
|
2288 |
|
2289 |
-
|
2290 |
-
|
|
|
2291 |
msgstr ""
|
2292 |
|
2293 |
-
#:
|
2294 |
-
msgid "
|
2295 |
msgstr ""
|
2296 |
|
2297 |
-
#:
|
2298 |
-
msgid "
|
2299 |
msgstr ""
|
2300 |
|
2301 |
-
#:
|
2302 |
-
msgid "
|
2303 |
msgstr ""
|
2304 |
|
2305 |
-
#:
|
2306 |
-
msgid "
|
2307 |
msgstr ""
|
2308 |
|
2309 |
-
#:
|
2310 |
-
msgid "
|
2311 |
msgstr ""
|
2312 |
|
2313 |
-
#:
|
2314 |
-
|
2315 |
-
msgid "URL"
|
2316 |
msgstr ""
|
2317 |
|
2318 |
-
#:
|
2319 |
-
msgid "
|
2320 |
msgstr ""
|
2321 |
|
2322 |
-
#:
|
2323 |
-
msgid "
|
2324 |
msgstr ""
|
2325 |
|
2326 |
-
#:
|
2327 |
-
msgid "
|
2328 |
msgstr ""
|
2329 |
|
2330 |
-
#:
|
2331 |
-
msgid "
|
2332 |
msgstr ""
|
2333 |
|
2334 |
-
#:
|
2335 |
-
msgid "
|
2336 |
msgstr ""
|
2337 |
|
2338 |
-
#:
|
2339 |
-
msgid "
|
2340 |
msgstr ""
|
2341 |
|
2342 |
-
#:
|
2343 |
-
msgid "
|
2344 |
msgstr ""
|
2345 |
|
2346 |
-
#:
|
2347 |
-
msgid "
|
2348 |
msgstr ""
|
2349 |
|
2350 |
-
#:
|
2351 |
-
msgid "
|
2352 |
msgstr ""
|
2353 |
|
2354 |
-
#:
|
2355 |
-
msgid "
|
2356 |
msgstr ""
|
2357 |
|
2358 |
-
#:
|
2359 |
-
msgid "
|
2360 |
msgstr ""
|
2361 |
|
2362 |
-
#:
|
2363 |
-
msgid "
|
2364 |
msgstr ""
|
2365 |
|
2366 |
-
#:
|
2367 |
-
msgid "
|
2368 |
msgstr ""
|
2369 |
|
2370 |
-
#:
|
2371 |
-
msgid "
|
2372 |
msgstr ""
|
2373 |
|
2374 |
-
#:
|
2375 |
-
msgid "
|
2376 |
msgstr ""
|
2377 |
|
2378 |
-
#:
|
2379 |
-
msgid "
|
2380 |
msgstr ""
|
2381 |
|
2382 |
-
#:
|
2383 |
-
msgid "
|
2384 |
msgstr ""
|
2385 |
|
2386 |
-
#:
|
2387 |
-
msgid "
|
2388 |
msgstr ""
|
2389 |
|
2390 |
-
#:
|
2391 |
-
msgid "
|
2392 |
msgstr ""
|
2393 |
|
2394 |
-
#:
|
2395 |
-
msgid "
|
2396 |
msgstr ""
|
2397 |
|
2398 |
-
#:
|
2399 |
-
msgid "
|
2400 |
msgstr ""
|
2401 |
|
2402 |
-
#:
|
2403 |
-
msgid "
|
2404 |
msgstr ""
|
2405 |
|
2406 |
-
#:
|
2407 |
-
msgid "
|
2408 |
msgstr ""
|
2409 |
|
2410 |
-
|
2411 |
-
|
|
|
2412 |
msgstr ""
|
2413 |
|
2414 |
-
#:
|
2415 |
-
msgid "
|
2416 |
msgstr ""
|
2417 |
|
2418 |
-
#:
|
2419 |
-
msgid "
|
2420 |
msgstr ""
|
2421 |
|
2422 |
-
#:
|
2423 |
-
|
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 |
-
#:
|
2432 |
-
msgid "
|
2433 |
msgstr ""
|
2434 |
|
2435 |
-
#:
|
2436 |
-
msgid "
|
2437 |
msgstr ""
|
2438 |
|
2439 |
-
#:
|
2440 |
-
msgid "
|
2441 |
msgstr ""
|
2442 |
|
2443 |
-
#:
|
2444 |
-
msgid "
|
2445 |
msgstr ""
|
2446 |
|
2447 |
-
#:
|
2448 |
-
msgid "
|
2449 |
msgstr ""
|
2450 |
|
2451 |
-
#:
|
2452 |
-
msgid "
|
2453 |
msgstr ""
|
2454 |
|
2455 |
-
|
2456 |
-
|
|
|
2457 |
msgstr ""
|
2458 |
|
2459 |
-
#:
|
2460 |
-
msgid "
|
2461 |
msgstr ""
|
2462 |
|
2463 |
-
#:
|
2464 |
-
msgid "
|
2465 |
msgstr ""
|
2466 |
|
2467 |
-
#:
|
2468 |
-
msgid "
|
2469 |
msgstr ""
|
2470 |
|
2471 |
-
#:
|
2472 |
-
msgid "
|
2473 |
msgstr ""
|
2474 |
|
2475 |
-
#:
|
2476 |
-
msgid "
|
2477 |
msgstr ""
|
2478 |
|
2479 |
-
#:
|
2480 |
-
msgid "
|
2481 |
msgstr ""
|
2482 |
|
2483 |
-
#:
|
2484 |
-
|
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 |
-
#:
|
2499 |
-
|
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 |
-
#:
|
2514 |
-
|
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 |
-
#:
|
2528 |
-
msgid "
|
2529 |
msgstr ""
|
2530 |
|
2531 |
-
#:
|
2532 |
-
msgid "
|
2533 |
msgstr ""
|
2534 |
|
2535 |
-
#:
|
2536 |
-
msgid "
|
2537 |
msgstr ""
|
2538 |
|
2539 |
-
|
2540 |
-
|
|
|
2541 |
msgstr ""
|
2542 |
|
2543 |
-
#:
|
2544 |
-
msgid "
|
2545 |
msgstr ""
|
2546 |
|
2547 |
-
#:
|
2548 |
-
msgid "
|
2549 |
msgstr ""
|
2550 |
|
2551 |
-
#:
|
2552 |
-
msgid "
|
2553 |
msgstr ""
|
2554 |
|
2555 |
-
|
2556 |
-
|
|
|
|
|
2557 |
msgstr ""
|
2558 |
|
2559 |
-
#:
|
2560 |
-
msgid "
|
2561 |
msgstr ""
|
2562 |
|
2563 |
-
#:
|
2564 |
-
msgid "
|
2565 |
msgstr ""
|
2566 |
|
2567 |
-
#:
|
2568 |
-
msgid "
|
2569 |
msgstr ""
|
2570 |
|
2571 |
-
#:
|
2572 |
-
msgid "
|
2573 |
msgstr ""
|
2574 |
|
2575 |
-
#:
|
2576 |
-
msgid "
|
2577 |
msgstr ""
|
2578 |
|
2579 |
-
#:
|
2580 |
-
msgid "
|
2581 |
msgstr ""
|
2582 |
|
2583 |
-
#:
|
2584 |
-
msgid "
|
2585 |
msgstr ""
|
2586 |
|
2587 |
-
#:
|
2588 |
-
msgid "
|
2589 |
msgstr ""
|
2590 |
|
2591 |
-
#:
|
2592 |
-
msgid "
|
2593 |
msgstr ""
|
2594 |
|
2595 |
-
#:
|
2596 |
-
msgid "
|
2597 |
msgstr ""
|
2598 |
|
2599 |
-
#:
|
2600 |
-
msgid "
|
2601 |
msgstr ""
|
2602 |
|
2603 |
-
|
2604 |
-
|
|
|
2605 |
msgstr ""
|
2606 |
|
2607 |
-
#:
|
2608 |
-
msgid "
|
2609 |
msgstr ""
|
2610 |
|
2611 |
-
#:
|
2612 |
-
msgid "
|
2613 |
msgstr ""
|
2614 |
|
2615 |
-
#:
|
2616 |
-
msgid "
|
2617 |
msgstr ""
|
2618 |
|
2619 |
-
#:
|
2620 |
-
msgid "
|
2621 |
msgstr ""
|
2622 |
|
2623 |
-
#:
|
2624 |
-
msgid "
|
2625 |
msgstr ""
|
2626 |
|
2627 |
-
#:
|
2628 |
-
msgid "
|
2629 |
msgstr ""
|
2630 |
|
2631 |
-
#:
|
2632 |
-
msgid "
|
2633 |
msgstr ""
|
2634 |
|
2635 |
-
#:
|
2636 |
-
msgid "
|
2637 |
msgstr ""
|
2638 |
|
2639 |
-
#:
|
2640 |
-
msgid "
|
2641 |
msgstr ""
|
2642 |
|
2643 |
-
#:
|
2644 |
-
msgid "
|
2645 |
msgstr ""
|
2646 |
|
2647 |
-
#:
|
2648 |
-
msgid "
|
2649 |
msgstr ""
|
2650 |
|
2651 |
-
#:
|
2652 |
-
msgid "
|
2653 |
msgstr ""
|
2654 |
|
2655 |
-
#:
|
2656 |
-
msgid "
|
2657 |
msgstr ""
|
2658 |
|
2659 |
-
#:
|
2660 |
-
msgid "
|
2661 |
msgstr ""
|
2662 |
|
2663 |
-
#:
|
2664 |
-
msgid "User
|
2665 |
msgstr ""
|
2666 |
|
2667 |
-
#:
|
2668 |
-
msgid "
|
2669 |
msgstr ""
|
2670 |
|
2671 |
-
#:
|
2672 |
-
msgid "
|
2673 |
msgstr ""
|
2674 |
|
2675 |
-
#:
|
2676 |
-
msgid "
|
2677 |
msgstr ""
|
2678 |
|
2679 |
-
#:
|
2680 |
-
msgid "
|
2681 |
msgstr ""
|
2682 |
|
2683 |
-
#:
|
2684 |
-
msgid "
|
2685 |
msgstr ""
|
2686 |
|
2687 |
-
#:
|
2688 |
-
msgid "
|
2689 |
msgstr ""
|
2690 |
|
2691 |
-
#:
|
2692 |
-
msgid "
|
2693 |
msgstr ""
|
2694 |
|
2695 |
-
#:
|
2696 |
-
msgid "
|
2697 |
msgstr ""
|
2698 |
|
2699 |
-
#:
|
2700 |
-
msgid "
|
2701 |
msgstr ""
|
2702 |
|
2703 |
-
#:
|
2704 |
-
msgid "
|
2705 |
msgstr ""
|
2706 |
|
2707 |
-
#:
|
2708 |
-
msgid "
|
2709 |
msgstr ""
|
2710 |
|
2711 |
-
#:
|
2712 |
-
msgid "
|
2713 |
msgstr ""
|
2714 |
|
2715 |
-
#:
|
2716 |
-
msgid "
|
2717 |
msgstr ""
|
2718 |
|
2719 |
-
#:
|
2720 |
-
msgid "
|
2721 |
msgstr ""
|
2722 |
|
2723 |
-
#:
|
2724 |
-
msgid "
|
2725 |
msgstr ""
|
2726 |
|
2727 |
-
#:
|
2728 |
-
msgid "
|
2729 |
msgstr ""
|
2730 |
|
2731 |
-
#:
|
2732 |
-
msgid "
|
2733 |
msgstr ""
|
2734 |
|
2735 |
-
#:
|
2736 |
-
msgid "
|
2737 |
msgstr ""
|
2738 |
|
2739 |
-
#:
|
2740 |
-
msgid "
|
2741 |
msgstr ""
|
2742 |
|
2743 |
-
#:
|
2744 |
-
msgid "
|
2745 |
msgstr ""
|
2746 |
|
2747 |
-
#:
|
2748 |
-
msgid "
|
2749 |
msgstr ""
|
2750 |
|
2751 |
-
#:
|
2752 |
-
msgid "
|
2753 |
msgstr ""
|
2754 |
|
2755 |
-
#:
|
2756 |
-
msgid "
|
2757 |
msgstr ""
|
2758 |
|
2759 |
-
#:
|
2760 |
-
msgid "
|
2761 |
msgstr ""
|
2762 |
|
2763 |
-
#:
|
2764 |
-
msgid "
|
2765 |
msgstr ""
|
2766 |
|
2767 |
-
#:
|
2768 |
-
msgid "
|
2769 |
msgstr ""
|
2770 |
|
2771 |
-
#:
|
2772 |
-
msgid "
|
2773 |
msgstr ""
|
2774 |
|
2775 |
-
#:
|
2776 |
-
msgid "
|
2777 |
msgstr ""
|
2778 |
|
2779 |
-
#:
|
2780 |
-
msgid "
|
2781 |
msgstr ""
|
2782 |
|
2783 |
-
#:
|
2784 |
-
msgid "
|
2785 |
msgstr ""
|
2786 |
|
2787 |
-
#:
|
2788 |
-
msgid "
|
2789 |
msgstr ""
|
2790 |
|
2791 |
-
#:
|
2792 |
-
msgid "
|
2793 |
msgstr ""
|
2794 |
|
2795 |
-
#:
|
2796 |
-
msgid "
|
2797 |
msgstr ""
|
2798 |
|
2799 |
-
#:
|
2800 |
-
msgid "
|
2801 |
msgstr ""
|
2802 |
|
2803 |
-
#:
|
2804 |
-
msgid "
|
2805 |
msgstr ""
|
2806 |
|
2807 |
-
#:
|
2808 |
-
msgid "
|
2809 |
msgstr ""
|
2810 |
|
2811 |
-
#:
|
2812 |
-
|
2813 |
-
msgid "Slug"
|
2814 |
msgstr ""
|
2815 |
|
2816 |
-
#:
|
2817 |
-
msgid "
|
2818 |
msgstr ""
|
2819 |
|
2820 |
-
#:
|
2821 |
-
msgid "
|
2822 |
msgstr ""
|
2823 |
|
2824 |
-
#:
|
2825 |
-
msgid "
|
2826 |
msgstr ""
|
2827 |
|
2828 |
-
#:
|
2829 |
-
msgid "
|
2830 |
msgstr ""
|
2831 |
|
2832 |
-
#:
|
2833 |
-
msgid "
|
2834 |
msgstr ""
|
2835 |
|
2836 |
-
#:
|
2837 |
-
msgid "
|
2838 |
msgstr ""
|
2839 |
|
2840 |
-
#:
|
2841 |
-
msgid "
|
2842 |
msgstr ""
|
2843 |
|
2844 |
-
#:
|
2845 |
-
msgid "
|
2846 |
msgstr ""
|
2847 |
|
2848 |
-
#:
|
2849 |
-
msgid "
|
2850 |
msgstr ""
|
2851 |
|
2852 |
-
#:
|
2853 |
-
msgid "
|
2854 |
msgstr ""
|
2855 |
|
2856 |
-
|
2857 |
-
|
|
|
|
|
2858 |
msgstr ""
|
2859 |
|
2860 |
-
#:
|
2861 |
-
msgid "
|
2862 |
msgstr ""
|
2863 |
|
2864 |
-
#:
|
2865 |
-
msgid "
|
2866 |
msgstr ""
|
2867 |
|
2868 |
-
#:
|
2869 |
-
msgid "
|
2870 |
msgstr ""
|
2871 |
|
2872 |
-
#:
|
2873 |
-
msgid "
|
2874 |
msgstr ""
|
2875 |
|
2876 |
-
#:
|
2877 |
-
msgid "
|
2878 |
msgstr ""
|
2879 |
|
2880 |
-
#:
|
2881 |
-
msgid "
|
2882 |
msgstr ""
|
2883 |
|
2884 |
-
#:
|
2885 |
-
msgid "
|
2886 |
msgstr ""
|
2887 |
|
2888 |
-
#:
|
2889 |
-
msgid "
|
2890 |
msgstr ""
|
2891 |
|
2892 |
-
#:
|
2893 |
-
msgid "
|
2894 |
msgstr ""
|
2895 |
|
2896 |
-
#:
|
2897 |
-
msgid "
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#:
|
2901 |
-
msgid "
|
2902 |
msgstr ""
|
2903 |
|
2904 |
-
#:
|
2905 |
-
msgid "
|
2906 |
msgstr ""
|
2907 |
|
2908 |
-
#:
|
2909 |
-
msgid "
|
2910 |
msgstr ""
|
2911 |
|
2912 |
-
#:
|
2913 |
-
msgid "
|
2914 |
msgstr ""
|
2915 |
|
2916 |
-
#:
|
2917 |
-
msgid "
|
2918 |
msgstr ""
|
2919 |
|
2920 |
-
#:
|
2921 |
-
msgid "
|
2922 |
msgstr ""
|
2923 |
|
2924 |
-
#:
|
2925 |
-
msgid "
|
2926 |
msgstr ""
|
2927 |
|
2928 |
-
#:
|
2929 |
-
msgid "
|
2930 |
msgstr ""
|
2931 |
|
2932 |
-
#:
|
2933 |
-
msgid "
|
2934 |
msgstr ""
|
2935 |
|
2936 |
-
#:
|
2937 |
-
msgid "
|
2938 |
msgstr ""
|
2939 |
|
2940 |
-
#:
|
2941 |
-
msgid "
|
2942 |
msgstr ""
|
2943 |
|
2944 |
-
#:
|
2945 |
-
msgid "
|
2946 |
msgstr ""
|
2947 |
|
2948 |
-
#:
|
2949 |
-
msgid "
|
2950 |
msgstr ""
|
2951 |
|
2952 |
-
#:
|
2953 |
-
msgid "
|
2954 |
msgstr ""
|
2955 |
|
2956 |
-
#:
|
2957 |
-
msgid "
|
2958 |
msgstr ""
|
2959 |
|
2960 |
-
#:
|
2961 |
-
msgid "
|
2962 |
msgstr ""
|
2963 |
|
2964 |
-
#:
|
2965 |
-
msgid "
|
2966 |
msgstr ""
|
2967 |
|
2968 |
-
#:
|
2969 |
-
msgid "
|
2970 |
msgstr ""
|
2971 |
|
2972 |
-
#:
|
2973 |
-
msgid "
|
2974 |
msgstr ""
|
2975 |
|
2976 |
-
#:
|
2977 |
-
msgid "
|
2978 |
msgstr ""
|
2979 |
|
2980 |
-
#:
|
2981 |
-
msgid "
|
2982 |
msgstr ""
|
2983 |
|
2984 |
-
#:
|
2985 |
-
msgid "
|
2986 |
msgstr ""
|
2987 |
|
2988 |
-
|
2989 |
-
|
|
|
2990 |
msgstr ""
|
2991 |
|
2992 |
-
#:
|
2993 |
-
msgid "
|
2994 |
msgstr ""
|
2995 |
|
2996 |
-
#:
|
2997 |
-
msgid "
|
2998 |
msgstr ""
|
2999 |
|
3000 |
-
#:
|
3001 |
-
|
3002 |
-
#: defaults.php:1092 defaults.php:1107 defaults.php:1126
|
3003 |
-
msgid "Comment ID"
|
3004 |
msgstr ""
|
3005 |
|
3006 |
-
#:
|
3007 |
-
msgid "
|
3008 |
msgstr ""
|
3009 |
|
3010 |
-
#:
|
3011 |
-
msgid "
|
3012 |
msgstr ""
|
3013 |
|
3014 |
-
#:
|
3015 |
-
msgid "
|
3016 |
msgstr ""
|
3017 |
|
3018 |
-
#:
|
3019 |
-
msgid "
|
3020 |
msgstr ""
|
3021 |
|
3022 |
-
#:
|
3023 |
-
msgid "
|
3024 |
msgstr ""
|
3025 |
|
3026 |
-
#:
|
3027 |
-
msgid "
|
3028 |
msgstr ""
|
3029 |
|
3030 |
-
#:
|
3031 |
-
msgid "
|
3032 |
msgstr ""
|
3033 |
|
3034 |
-
#:
|
3035 |
-
msgid "
|
3036 |
msgstr ""
|
3037 |
|
3038 |
-
#:
|
3039 |
-
msgid "
|
3040 |
msgstr ""
|
3041 |
|
3042 |
-
#:
|
3043 |
-
msgid "
|
3044 |
msgstr ""
|
3045 |
|
3046 |
-
#:
|
3047 |
-
msgid "
|
3048 |
msgstr ""
|
3049 |
|
3050 |
-
#:
|
3051 |
-
msgid "
|
3052 |
msgstr ""
|
3053 |
|
3054 |
-
#:
|
3055 |
-
msgid "
|
3056 |
msgstr ""
|
3057 |
|
3058 |
-
#:
|
3059 |
-
msgid "
|
3060 |
msgstr ""
|
3061 |
|
3062 |
-
#:
|
3063 |
-
msgid "
|
3064 |
msgstr ""
|
3065 |
|
3066 |
-
#:
|
3067 |
-
msgid "
|
3068 |
msgstr ""
|
3069 |
|
3070 |
-
#:
|
3071 |
-
msgid "
|
3072 |
msgstr ""
|
3073 |
|
3074 |
-
#:
|
3075 |
-
msgid "
|
3076 |
msgstr ""
|
3077 |
|
3078 |
-
#:
|
3079 |
-
msgid "
|
3080 |
msgstr ""
|
3081 |
|
3082 |
-
#:
|
3083 |
-
msgid "
|
3084 |
msgstr ""
|
3085 |
|
3086 |
-
#:
|
3087 |
-
msgid "
|
3088 |
msgstr ""
|
3089 |
|
3090 |
-
#:
|
3091 |
-
msgid "
|
3092 |
msgstr ""
|
3093 |
|
3094 |
-
#:
|
3095 |
-
msgid "
|
3096 |
msgstr ""
|
3097 |
|
3098 |
-
#:
|
3099 |
-
msgid "
|
3100 |
msgstr ""
|
3101 |
|
3102 |
-
#:
|
3103 |
-
msgid "
|
3104 |
msgstr ""
|
3105 |
|
3106 |
-
#:
|
3107 |
-
msgid "
|
3108 |
msgstr ""
|
3109 |
|
3110 |
-
#:
|
3111 |
-
msgid "
|
3112 |
msgstr ""
|
3113 |
|
3114 |
-
#:
|
3115 |
-
msgid "
|
3116 |
msgstr ""
|
3117 |
|
3118 |
-
|
3119 |
-
|
|
|
3120 |
msgstr ""
|
3121 |
|
3122 |
-
#:
|
3123 |
-
msgid "
|
3124 |
msgstr ""
|
3125 |
|
3126 |
-
#:
|
3127 |
-
msgid "
|
3128 |
msgstr ""
|
3129 |
|
3130 |
-
#:
|
3131 |
-
msgid "
|
3132 |
msgstr ""
|
3133 |
|
3134 |
-
#:
|
3135 |
-
msgid "
|
3136 |
msgstr ""
|
3137 |
|
3138 |
-
#:
|
3139 |
-
msgid "
|
3140 |
msgstr ""
|
3141 |
|
3142 |
-
#:
|
3143 |
-
msgid "
|
3144 |
msgstr ""
|
3145 |
|
3146 |
-
#:
|
3147 |
-
msgid "
|
3148 |
msgstr ""
|
3149 |
|
3150 |
-
#:
|
3151 |
-
msgid "
|
3152 |
msgstr ""
|
3153 |
|
3154 |
-
#:
|
3155 |
-
msgid "
|
3156 |
msgstr ""
|
3157 |
|
3158 |
-
#:
|
3159 |
-
msgid "
|
3160 |
msgstr ""
|
3161 |
|
3162 |
-
#:
|
3163 |
-
msgid "
|
3164 |
msgstr ""
|
3165 |
|
3166 |
-
#:
|
3167 |
-
msgid "
|
3168 |
msgstr ""
|
3169 |
|
3170 |
-
#:
|
3171 |
-
msgid "
|
3172 |
msgstr ""
|
3173 |
|
3174 |
-
#:
|
3175 |
-
msgid "
|
3176 |
msgstr ""
|
3177 |
|
3178 |
-
#:
|
3179 |
-
msgid "
|
3180 |
msgstr ""
|
3181 |
|
3182 |
-
#:
|
3183 |
-
msgid "
|
3184 |
msgstr ""
|
3185 |
|
3186 |
-
#:
|
3187 |
-
msgid "
|
3188 |
msgstr ""
|
3189 |
|
3190 |
-
#:
|
3191 |
-
msgid "
|
3192 |
msgstr ""
|
3193 |
|
3194 |
-
#:
|
3195 |
-
msgid "
|
3196 |
msgstr ""
|
3197 |
|
3198 |
-
#:
|
3199 |
-
msgid "
|
3200 |
msgstr ""
|
3201 |
|
3202 |
-
#:
|
3203 |
-
msgid "
|
3204 |
msgstr ""
|
3205 |
|
3206 |
-
#:
|
3207 |
-
msgid "
|
3208 |
msgstr ""
|
3209 |
|
3210 |
-
#:
|
3211 |
-
msgid "
|
3212 |
msgstr ""
|
3213 |
|
3214 |
-
#:
|
3215 |
-
msgid "
|
3216 |
msgstr ""
|
3217 |
|
3218 |
-
#:
|
3219 |
-
msgid "
|
3220 |
msgstr ""
|
3221 |
|
3222 |
-
#:
|
3223 |
-
msgid "
|
3224 |
msgstr ""
|
3225 |
|
3226 |
-
#:
|
3227 |
-
msgid "
|
3228 |
msgstr ""
|
3229 |
|
3230 |
-
#:
|
3231 |
-
msgid "
|
3232 |
msgstr ""
|
3233 |
|
3234 |
-
#:
|
3235 |
-
msgid "
|
3236 |
msgstr ""
|
3237 |
|
3238 |
-
#:
|
3239 |
-
msgid "
|
3240 |
msgstr ""
|
3241 |
|
3242 |
-
#:
|
3243 |
-
msgid "
|
3244 |
msgstr ""
|
3245 |
|
3246 |
-
#:
|
3247 |
-
msgid "
|
3248 |
msgstr ""
|
3249 |
|
3250 |
-
#:
|
3251 |
-
msgid "
|
3252 |
msgstr ""
|
3253 |
|
3254 |
-
#:
|
3255 |
-
msgid "
|
3256 |
msgstr ""
|
3257 |
|
3258 |
-
#:
|
3259 |
-
msgid "
|
3260 |
msgstr ""
|
3261 |
|
3262 |
-
#:
|
3263 |
-
msgid "
|
3264 |
msgstr ""
|
3265 |
|
3266 |
-
#:
|
3267 |
-
msgid "
|
3268 |
msgstr ""
|
3269 |
|
3270 |
-
#:
|
3271 |
-
msgid "
|
3272 |
msgstr ""
|
3273 |
|
3274 |
-
#:
|
3275 |
-
msgid "
|
3276 |
msgstr ""
|
3277 |
|
3278 |
-
#:
|
3279 |
-
msgid "
|
3280 |
msgstr ""
|
3281 |
|
3282 |
-
#:
|
3283 |
-
msgid "
|
3284 |
msgstr ""
|
3285 |
|
3286 |
-
#:
|
3287 |
-
msgid "
|
3288 |
msgstr ""
|
3289 |
|
3290 |
-
#:
|
3291 |
-
msgid "
|
3292 |
msgstr ""
|
3293 |
|
3294 |
-
#:
|
3295 |
-
msgid "
|
3296 |
msgstr ""
|
3297 |
|
3298 |
-
#:
|
3299 |
-
msgid "
|
3300 |
msgstr ""
|
3301 |
|
3302 |
-
#:
|
3303 |
-
msgid "
|
3304 |
msgstr ""
|
3305 |
|
3306 |
-
#:
|
3307 |
-
msgid "
|
3308 |
msgstr ""
|
3309 |
|
3310 |
-
#:
|
3311 |
-
msgid "
|
3312 |
msgstr ""
|
3313 |
|
3314 |
-
#:
|
3315 |
-
msgid "
|
3316 |
msgstr ""
|
3317 |
|
3318 |
-
#:
|
3319 |
-
msgid "
|
3320 |
msgstr ""
|
3321 |
|
3322 |
-
#:
|
3323 |
-
msgid "
|
3324 |
msgstr ""
|
3325 |
|
3326 |
-
#:
|
3327 |
-
msgid "
|
3328 |
msgstr ""
|
3329 |
|
3330 |
-
#:
|
3331 |
-
msgid "
|
3332 |
msgstr ""
|
3333 |
|
3334 |
-
#:
|
3335 |
-
msgid "
|
3336 |
msgstr ""
|
3337 |
|
3338 |
-
#:
|
3339 |
-
msgid "
|
3340 |
msgstr ""
|
3341 |
|
3342 |
-
|
3343 |
-
|
|
|
3344 |
msgstr ""
|
3345 |
|
3346 |
-
#:
|
3347 |
-
msgid "
|
3348 |
msgstr ""
|
3349 |
|
3350 |
-
#:
|
3351 |
-
msgid "
|
3352 |
msgstr ""
|
3353 |
|
3354 |
-
#:
|
3355 |
-
msgid "
|
3356 |
msgstr ""
|
3357 |
|
3358 |
-
#:
|
3359 |
-
msgid "
|
3360 |
msgstr ""
|
3361 |
|
3362 |
-
#:
|
3363 |
-
msgid "
|
3364 |
msgstr ""
|
3365 |
|
3366 |
-
#:
|
3367 |
-
msgid "
|
3368 |
msgstr ""
|
3369 |
|
3370 |
-
#:
|
3371 |
-
msgid "
|
3372 |
msgstr ""
|
3373 |
|
3374 |
-
|
3375 |
-
|
|
|
3376 |
msgstr ""
|
3377 |
|
3378 |
-
#:
|
3379 |
-
msgid "
|
3380 |
msgstr ""
|
3381 |
|
3382 |
-
#:
|
3383 |
-
msgid "
|
3384 |
msgstr ""
|
3385 |
|
3386 |
-
#:
|
3387 |
-
msgid "
|
3388 |
msgstr ""
|
3389 |
|
3390 |
-
#:
|
3391 |
-
msgid "
|
3392 |
msgstr ""
|
3393 |
|
3394 |
-
#:
|
3395 |
-
msgid "
|
3396 |
msgstr ""
|
3397 |
|
3398 |
-
#:
|
3399 |
-
msgid "
|
3400 |
msgstr ""
|
3401 |
|
3402 |
-
#:
|
3403 |
-
msgid "
|
3404 |
msgstr ""
|
3405 |
|
3406 |
-
#:
|
3407 |
-
msgid "
|
3408 |
msgstr ""
|
3409 |
|
3410 |
-
#:
|
3411 |
-
msgid "
|
3412 |
msgstr ""
|
3413 |
|
3414 |
-
#:
|
3415 |
-
msgid "
|
3416 |
msgstr ""
|
3417 |
|
3418 |
-
#:
|
3419 |
-
msgid "
|
3420 |
msgstr ""
|
3421 |
|
3422 |
-
#:
|
3423 |
-
msgid "
|
|
|
|
|
|
|
|
|
3424 |
msgstr ""
|
3425 |
|
3426 |
-
#:
|
3427 |
-
msgid "
|
3428 |
msgstr ""
|
3429 |
|
3430 |
-
#:
|
3431 |
-
msgid "
|
3432 |
msgstr ""
|
3433 |
|
3434 |
-
#:
|
3435 |
-
msgid "
|
3436 |
msgstr ""
|
3437 |
|
3438 |
-
#:
|
3439 |
-
msgid "
|
3440 |
msgstr ""
|
3441 |
|
3442 |
-
#:
|
3443 |
-
msgid "
|
3444 |
msgstr ""
|
3445 |
|
3446 |
-
#:
|
3447 |
-
msgid "
|
3448 |
msgstr ""
|
3449 |
|
3450 |
-
#:
|
3451 |
-
msgid "
|
3452 |
msgstr ""
|
3453 |
|
3454 |
-
#:
|
3455 |
-
msgid "
|
3456 |
msgstr ""
|
3457 |
|
3458 |
-
#:
|
3459 |
-
msgid "
|
3460 |
msgstr ""
|
3461 |
|
3462 |
-
#:
|
3463 |
-
msgid "
|
3464 |
msgstr ""
|
3465 |
|
3466 |
-
#:
|
3467 |
-
msgid "
|
3468 |
msgstr ""
|
3469 |
|
3470 |
-
#:
|
3471 |
-
msgid "
|
3472 |
msgstr ""
|
3473 |
|
3474 |
-
#:
|
3475 |
-
msgid "
|
3476 |
msgstr ""
|
3477 |
|
3478 |
-
#:
|
3479 |
-
msgid "
|
3480 |
msgstr ""
|
3481 |
|
3482 |
-
#:
|
3483 |
-
msgid "
|
3484 |
msgstr ""
|
3485 |
|
3486 |
-
#:
|
3487 |
-
msgid "
|
3488 |
msgstr ""
|
3489 |
|
3490 |
-
#:
|
3491 |
-
msgid "
|
3492 |
msgstr ""
|
3493 |
|
3494 |
-
#:
|
3495 |
-
msgid "
|
3496 |
msgstr ""
|
3497 |
|
3498 |
-
#:
|
3499 |
-
msgid "
|
3500 |
msgstr ""
|
3501 |
|
3502 |
-
#:
|
3503 |
-
msgid "
|
3504 |
msgstr ""
|
3505 |
|
3506 |
-
#:
|
3507 |
-
msgid "
|
3508 |
msgstr ""
|
3509 |
|
3510 |
-
#:
|
3511 |
-
msgid "
|
3512 |
msgstr ""
|
3513 |
|
3514 |
-
#:
|
3515 |
-
msgid "
|
3516 |
msgstr ""
|
3517 |
|
3518 |
-
#:
|
3519 |
-
msgid "
|
3520 |
msgstr ""
|
3521 |
|
3522 |
-
#:
|
3523 |
-
msgid "
|
3524 |
msgstr ""
|
3525 |
|
3526 |
-
#:
|
3527 |
-
msgid "
|
3528 |
msgstr ""
|
3529 |
|
3530 |
-
#:
|
3531 |
-
msgid "
|
3532 |
msgstr ""
|
3533 |
|
3534 |
-
#:
|
3535 |
-
msgid "
|
3536 |
msgstr ""
|
3537 |
|
3538 |
-
#:
|
3539 |
-
msgid "
|
3540 |
msgstr ""
|
3541 |
|
3542 |
-
#:
|
3543 |
-
msgid "
|
3544 |
msgstr ""
|
3545 |
|
3546 |
-
#:
|
3547 |
-
msgid "
|
3548 |
msgstr ""
|
3549 |
|
3550 |
-
#:
|
3551 |
-
msgid "
|
3552 |
msgstr ""
|
3553 |
|
3554 |
-
#:
|
3555 |
-
msgid "
|
3556 |
msgstr ""
|
3557 |
|
3558 |
-
#:
|
3559 |
-
msgid "
|
3560 |
msgstr ""
|
3561 |
|
3562 |
-
#:
|
3563 |
-
msgid "
|
3564 |
msgstr ""
|
3565 |
|
3566 |
-
#:
|
3567 |
-
msgid "
|
3568 |
msgstr ""
|
3569 |
|
3570 |
-
#:
|
3571 |
-
msgid "
|
3572 |
msgstr ""
|
3573 |
|
3574 |
-
#:
|
3575 |
-
msgid "
|
3576 |
msgstr ""
|
3577 |
|
3578 |
-
#:
|
3579 |
-
msgid "
|
3580 |
msgstr ""
|
3581 |
|
3582 |
-
#:
|
3583 |
-
msgid "
|
3584 |
msgstr ""
|
3585 |
|
3586 |
-
#:
|
3587 |
-
msgid "
|
3588 |
msgstr ""
|
3589 |
|
3590 |
-
#:
|
3591 |
-
msgid "
|
3592 |
msgstr ""
|
3593 |
|
3594 |
-
#:
|
3595 |
-
msgid "
|
3596 |
msgstr ""
|
3597 |
|
3598 |
-
#:
|
3599 |
-
msgid "User
|
3600 |
msgstr ""
|
3601 |
|
3602 |
-
#:
|
3603 |
-
msgid "
|
3604 |
msgstr ""
|
3605 |
|
3606 |
-
#:
|
3607 |
-
msgid "
|
3608 |
msgstr ""
|
3609 |
|
3610 |
-
#:
|
3611 |
-
msgid "
|
3612 |
msgstr ""
|
3613 |
|
3614 |
-
#:
|
3615 |
-
msgid "
|
3616 |
msgstr ""
|
3617 |
|
3618 |
-
#:
|
3619 |
-
msgid "
|
3620 |
msgstr ""
|
3621 |
|
3622 |
-
#:
|
3623 |
-
msgid "
|
3624 |
msgstr ""
|
3625 |
|
3626 |
-
#:
|
3627 |
-
msgid "
|
3628 |
msgstr ""
|
3629 |
|
3630 |
-
#:
|
3631 |
-
msgid "
|
3632 |
msgstr ""
|
3633 |
|
3634 |
-
#:
|
3635 |
-
msgid "
|
3636 |
msgstr ""
|
3637 |
|
3638 |
-
#:
|
3639 |
-
msgid "
|
3640 |
msgstr ""
|
3641 |
|
3642 |
-
#:
|
3643 |
-
msgid "
|
3644 |
msgstr ""
|
3645 |
|
3646 |
-
#:
|
3647 |
-
msgid "
|
3648 |
msgstr ""
|
3649 |
|
3650 |
-
#:
|
3651 |
-
msgid "
|
3652 |
msgstr ""
|
3653 |
|
3654 |
-
#:
|
3655 |
-
msgid "
|
3656 |
msgstr ""
|
3657 |
|
3658 |
-
#:
|
3659 |
-
msgid "
|
3660 |
msgstr ""
|
3661 |
|
3662 |
-
#:
|
3663 |
-
msgid "
|
3664 |
msgstr ""
|
3665 |
|
3666 |
-
#:
|
3667 |
-
msgid "
|
3668 |
msgstr ""
|
3669 |
|
3670 |
-
#:
|
3671 |
-
msgid "
|
3672 |
msgstr ""
|
3673 |
|
3674 |
-
#:
|
3675 |
-
msgid "
|
3676 |
msgstr ""
|
3677 |
|
3678 |
-
#:
|
3679 |
-
msgid "
|
3680 |
msgstr ""
|
3681 |
|
3682 |
-
#:
|
3683 |
-
msgid "
|
3684 |
msgstr ""
|
3685 |
|
3686 |
-
#:
|
3687 |
-
msgid "
|
3688 |
msgstr ""
|
3689 |
|
3690 |
-
#:
|
3691 |
-
msgid "
|
3692 |
msgstr ""
|
3693 |
|
3694 |
-
#:
|
3695 |
-
msgid "
|
3696 |
msgstr ""
|
3697 |
|
3698 |
-
#:
|
3699 |
-
msgid "
|
3700 |
msgstr ""
|
3701 |
|
3702 |
-
#:
|
3703 |
-
msgid "
|
3704 |
msgstr ""
|
3705 |
|
3706 |
-
#:
|
3707 |
-
msgid "
|
3708 |
msgstr ""
|
3709 |
|
3710 |
-
#:
|
3711 |
-
msgid "
|
3712 |
msgstr ""
|
3713 |
|
3714 |
-
#:
|
3715 |
-
msgid "
|
3716 |
msgstr ""
|
3717 |
|
3718 |
-
#:
|
3719 |
-
msgid "
|
3720 |
msgstr ""
|
3721 |
|
3722 |
-
#:
|
3723 |
-
msgid "
|
3724 |
msgstr ""
|
3725 |
|
3726 |
-
#:
|
3727 |
-
|
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 |
-
#:
|
3736 |
-
|
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 |
-
#:
|
3745 |
-
msgid "
|
3746 |
msgstr ""
|
3747 |
|
3748 |
-
#:
|
3749 |
-
msgid "
|
3750 |
msgstr ""
|
3751 |
|
3752 |
-
#:
|
3753 |
-
msgid "
|
3754 |
msgstr ""
|
3755 |
|
3756 |
-
#:
|
3757 |
-
msgid "User
|
3758 |
msgstr ""
|
3759 |
|
3760 |
-
#:
|
3761 |
-
msgid "
|
3762 |
msgstr ""
|
3763 |
|
3764 |
-
#:
|
3765 |
-
msgid "
|
3766 |
msgstr ""
|
3767 |
|
3768 |
-
#:
|
3769 |
-
msgid "
|
3770 |
msgstr ""
|
3771 |
|
3772 |
-
#:
|
3773 |
-
msgid "
|
3774 |
msgstr ""
|
3775 |
|
3776 |
-
#:
|
3777 |
-
msgid "
|
3778 |
msgstr ""
|
3779 |
|
3780 |
-
#:
|
3781 |
-
msgid "
|
3782 |
msgstr ""
|
3783 |
|
3784 |
-
#:
|
3785 |
-
msgid "
|
3786 |
msgstr ""
|
3787 |
|
3788 |
-
#:
|
3789 |
-
msgid "
|
3790 |
msgstr ""
|
3791 |
|
3792 |
-
#:
|
3793 |
-
msgid "
|
3794 |
msgstr ""
|
3795 |
|
3796 |
-
#:
|
3797 |
-
msgid "
|
3798 |
msgstr ""
|
3799 |
|
3800 |
-
#:
|
3801 |
-
msgid "
|
3802 |
msgstr ""
|
3803 |
|
3804 |
-
#:
|
3805 |
-
msgid "
|
3806 |
msgstr ""
|
3807 |
|
3808 |
-
#:
|
3809 |
-
msgid "
|
3810 |
msgstr ""
|
3811 |
|
3812 |
-
#:
|
3813 |
-
msgid "
|
3814 |
msgstr ""
|
3815 |
|
3816 |
-
#:
|
3817 |
-
msgid "
|
3818 |
msgstr ""
|
3819 |
|
3820 |
-
#:
|
3821 |
-
msgid "
|
3822 |
msgstr ""
|
3823 |
|
3824 |
-
#:
|
3825 |
-
msgid "
|
3826 |
msgstr ""
|
3827 |
|
3828 |
-
#:
|
3829 |
-
msgid "
|
3830 |
msgstr ""
|
3831 |
|
3832 |
-
#:
|
3833 |
-
msgid "
|
3834 |
msgstr ""
|
3835 |
|
3836 |
-
#:
|
3837 |
-
msgid "
|
3838 |
msgstr ""
|
3839 |
|
3840 |
-
#:
|
3841 |
-
msgid "
|
3842 |
msgstr ""
|
3843 |
|
3844 |
-
#:
|
3845 |
-
msgid "
|
3846 |
msgstr ""
|
3847 |
|
3848 |
-
#:
|
3849 |
-
msgid "
|
3850 |
msgstr ""
|
3851 |
|
3852 |
-
#:
|
3853 |
-
msgid "
|
3854 |
msgstr ""
|
3855 |
|
3856 |
-
#:
|
3857 |
-
msgid "
|
3858 |
msgstr ""
|
3859 |
|
3860 |
-
#:
|
3861 |
-
msgid "
|
3862 |
msgstr ""
|
3863 |
|
3864 |
-
#:
|
3865 |
-
msgid "
|
3866 |
msgstr ""
|
3867 |
|
3868 |
-
#:
|
3869 |
-
msgid "
|
3870 |
msgstr ""
|
3871 |
|
3872 |
-
#:
|
3873 |
-
msgid "
|
3874 |
msgstr ""
|
3875 |
|
3876 |
-
#:
|
3877 |
-
msgid "
|
3878 |
msgstr ""
|
3879 |
|
3880 |
-
#:
|
3881 |
-
msgid "
|
3882 |
msgstr ""
|
3883 |
|
3884 |
-
#:
|
3885 |
-
msgid "
|
3886 |
msgstr ""
|
3887 |
|
3888 |
-
#:
|
3889 |
-
msgid "
|
3890 |
msgstr ""
|
3891 |
|
3892 |
-
#:
|
3893 |
-
msgid "
|
3894 |
msgstr ""
|
3895 |
|
3896 |
-
#:
|
3897 |
-
msgid "
|
3898 |
msgstr ""
|
3899 |
|
3900 |
-
#:
|
3901 |
-
msgid "
|
3902 |
msgstr ""
|
3903 |
|
3904 |
-
#:
|
3905 |
-
msgid "
|
3906 |
msgstr ""
|
3907 |
|
3908 |
-
#:
|
3909 |
-
msgid "
|
3910 |
msgstr ""
|
3911 |
|
3912 |
-
#:
|
3913 |
-
msgid "
|
3914 |
msgstr ""
|
3915 |
|
3916 |
-
#:
|
3917 |
-
msgid "
|
3918 |
msgstr ""
|
3919 |
|
3920 |
-
#:
|
3921 |
-
msgid "
|
3922 |
msgstr ""
|
3923 |
|
3924 |
-
#:
|
3925 |
-
msgid "
|
3926 |
msgstr ""
|
3927 |
|
3928 |
-
#:
|
3929 |
-
msgid "
|
3930 |
msgstr ""
|
3931 |
|
3932 |
-
#:
|
3933 |
-
msgid "
|
3934 |
msgstr ""
|
3935 |
|
3936 |
-
#:
|
3937 |
-
msgid "
|
3938 |
msgstr ""
|
3939 |
|
3940 |
-
#:
|
3941 |
-
msgid "
|
3942 |
msgstr ""
|
3943 |
|
3944 |
-
#:
|
3945 |
-
msgid "
|
3946 |
msgstr ""
|
3947 |
|
3948 |
-
#:
|
3949 |
-
msgid "
|
3950 |
msgstr ""
|
3951 |
|
3952 |
-
#:
|
3953 |
-
msgid "
|
3954 |
msgstr ""
|
3955 |
|
3956 |
-
#:
|
3957 |
-
msgid "
|
3958 |
msgstr ""
|
3959 |
|
3960 |
-
#:
|
3961 |
-
msgid "
|
3962 |
msgstr ""
|
3963 |
|
3964 |
-
#:
|
3965 |
-
msgid "
|
3966 |
msgstr ""
|
3967 |
|
3968 |
-
#:
|
3969 |
-
msgid "
|
3970 |
msgstr ""
|
3971 |
|
3972 |
-
#:
|
3973 |
-
msgid "
|
3974 |
msgstr ""
|
3975 |
|
3976 |
-
#:
|
3977 |
-
|
3978 |
-
#: defaults.php:2311
|
3979 |
-
msgid "Version"
|
3980 |
msgstr ""
|
3981 |
|
3982 |
-
#:
|
3983 |
-
|
3984 |
-
#: defaults.php:2273 defaults.php:2299 defaults.php:2312
|
3985 |
-
msgid "Install location"
|
3986 |
msgstr ""
|
3987 |
|
3988 |
-
#:
|
3989 |
-
msgid "
|
3990 |
msgstr ""
|
3991 |
|
3992 |
-
#:
|
3993 |
-
msgid "
|
3994 |
msgstr ""
|
3995 |
|
3996 |
-
#:
|
3997 |
-
msgid "
|
3998 |
msgstr ""
|
3999 |
|
4000 |
-
#:
|
4001 |
-
msgid "
|
4002 |
msgstr ""
|
4003 |
|
4004 |
-
#:
|
4005 |
-
msgid "
|
4006 |
msgstr ""
|
4007 |
|
4008 |
-
#:
|
4009 |
-
msgid "
|
4010 |
msgstr ""
|
4011 |
|
4012 |
-
#:
|
4013 |
-
msgid "
|
4014 |
msgstr ""
|
4015 |
|
4016 |
-
#:
|
4017 |
-
msgid "
|
4018 |
msgstr ""
|
4019 |
|
4020 |
-
#:
|
4021 |
-
msgid "
|
4022 |
msgstr ""
|
4023 |
|
4024 |
-
#:
|
4025 |
-
msgid "
|
4026 |
msgstr ""
|
4027 |
|
4028 |
-
#:
|
4029 |
-
msgid "
|
4030 |
msgstr ""
|
4031 |
|
4032 |
-
#:
|
4033 |
-
|
4034 |
-
msgid "Table"
|
4035 |
msgstr ""
|
4036 |
|
4037 |
-
#:
|
4038 |
-
msgid "
|
4039 |
msgstr ""
|
4040 |
|
4041 |
-
#:
|
4042 |
-
msgid "
|
4043 |
msgstr ""
|
4044 |
|
4045 |
-
#:
|
4046 |
-
msgid "
|
4047 |
msgstr ""
|
4048 |
|
4049 |
-
#:
|
4050 |
-
msgid "
|
4051 |
msgstr ""
|
4052 |
|
4053 |
-
#:
|
4054 |
-
msgid "
|
4055 |
msgstr ""
|
4056 |
|
4057 |
-
#:
|
4058 |
-
msgid "
|
4059 |
msgstr ""
|
4060 |
|
4061 |
-
#:
|
4062 |
-
msgid "
|
4063 |
msgstr ""
|
4064 |
|
4065 |
-
#:
|
4066 |
-
msgid "
|
4067 |
msgstr ""
|
4068 |
|
4069 |
-
#:
|
4070 |
-
msgid "
|
4071 |
msgstr ""
|
4072 |
|
4073 |
-
#:
|
4074 |
-
msgid "
|
4075 |
msgstr ""
|
4076 |
|
4077 |
-
#:
|
4078 |
-
msgid "
|
4079 |
msgstr ""
|
4080 |
|
4081 |
-
#:
|
4082 |
-
msgid "
|
4083 |
msgstr ""
|
4084 |
|
4085 |
-
#:
|
4086 |
-
msgid "
|
4087 |
msgstr ""
|
4088 |
|
4089 |
-
#:
|
4090 |
-
msgid "
|
4091 |
msgstr ""
|
4092 |
|
4093 |
-
#:
|
4094 |
-
msgid "
|
4095 |
msgstr ""
|
4096 |
|
4097 |
-
#:
|
4098 |
-
msgid "
|
4099 |
msgstr ""
|
4100 |
|
4101 |
-
#:
|
4102 |
-
msgid "
|
4103 |
msgstr ""
|
4104 |
|
4105 |
-
#:
|
4106 |
-
msgid "
|
4107 |
msgstr ""
|
4108 |
|
4109 |
-
#:
|
4110 |
-
msgid "
|
4111 |
msgstr ""
|
4112 |
|
4113 |
-
#:
|
4114 |
-
msgid "
|
4115 |
msgstr ""
|
4116 |
|
4117 |
-
#:
|
4118 |
-
msgid "
|
4119 |
msgstr ""
|
4120 |
|
4121 |
-
#:
|
4122 |
-
msgid "
|
4123 |
msgstr ""
|
4124 |
|
4125 |
-
#:
|
4126 |
-
msgid "
|
4127 |
msgstr ""
|
4128 |
|
4129 |
-
#:
|
4130 |
-
|
4131 |
-
msgid "Tables"
|
4132 |
msgstr ""
|
4133 |
|
4134 |
-
#:
|
4135 |
-
msgid "
|
4136 |
msgstr ""
|
4137 |
|
4138 |
-
#:
|
4139 |
-
msgid "
|
4140 |
msgstr ""
|
4141 |
|
4142 |
-
#:
|
4143 |
-
msgid "
|
4144 |
msgstr ""
|
4145 |
|
4146 |
-
#:
|
4147 |
-
msgid "
|
4148 |
msgstr ""
|
4149 |
|
4150 |
-
#:
|
4151 |
-
msgid "
|
4152 |
msgstr ""
|
4153 |
|
4154 |
-
#:
|
4155 |
-
msgid "
|
4156 |
msgstr ""
|
4157 |
|
4158 |
-
#:
|
4159 |
-
msgid "
|
4160 |
msgstr ""
|
4161 |
|
4162 |
-
#:
|
4163 |
-
msgid "
|
4164 |
msgstr ""
|
4165 |
|
4166 |
-
#:
|
4167 |
-
msgid "
|
4168 |
msgstr ""
|
4169 |
|
4170 |
-
#:
|
4171 |
-
msgid "
|
4172 |
msgstr ""
|
4173 |
|
4174 |
-
#:
|
4175 |
-
msgid "
|
4176 |
msgstr ""
|
4177 |
|
4178 |
-
#:
|
4179 |
-
msgid "
|
4180 |
msgstr ""
|
4181 |
|
4182 |
-
#:
|
4183 |
-
msgid "
|
4184 |
msgstr ""
|
4185 |
|
4186 |
-
#:
|
4187 |
-
msgid "
|
4188 |
msgstr ""
|
4189 |
|
4190 |
-
#:
|
4191 |
-
msgid "
|
4192 |
msgstr ""
|
4193 |
|
4194 |
-
#:
|
4195 |
-
msgid "
|
4196 |
msgstr ""
|
4197 |
|
4198 |
-
#:
|
4199 |
-
msgid "
|
4200 |
msgstr ""
|
4201 |
|
4202 |
-
|
4203 |
-
|
|
|
4204 |
msgstr ""
|
4205 |
|
4206 |
-
#:
|
4207 |
-
msgid "
|
4208 |
msgstr ""
|
4209 |
|
4210 |
-
#:
|
4211 |
-
msgid "
|
4212 |
msgstr ""
|
4213 |
|
4214 |
-
#:
|
4215 |
-
msgid "
|
4216 |
msgstr ""
|
4217 |
|
4218 |
-
#:
|
4219 |
-
msgid "
|
4220 |
msgstr ""
|
4221 |
|
4222 |
-
#:
|
4223 |
-
msgid "
|
4224 |
msgstr ""
|
4225 |
|
4226 |
-
#:
|
4227 |
-
msgid "
|
4228 |
msgstr ""
|
4229 |
|
4230 |
-
#:
|
4231 |
-
msgid "
|
4232 |
msgstr ""
|
4233 |
|
4234 |
-
#:
|
4235 |
-
msgid "
|
4236 |
msgstr ""
|
4237 |
|
4238 |
-
#:
|
4239 |
-
msgid "
|
4240 |
msgstr ""
|
4241 |
|
4242 |
-
#:
|
4243 |
-
|
4244 |
-
msgid "%Message%."
|
4245 |
msgstr ""
|
4246 |
|
4247 |
-
#:
|
4248 |
-
msgid "
|
4249 |
msgstr ""
|
4250 |
|
4251 |
-
#:
|
4252 |
-
msgid "
|
4253 |
msgstr ""
|
4254 |
|
4255 |
-
#:
|
4256 |
-
msgid "
|
4257 |
msgstr ""
|
4258 |
|
4259 |
-
#:
|
4260 |
-
msgid "
|
4261 |
msgstr ""
|
4262 |
|
4263 |
-
#:
|
4264 |
-
msgid "
|
4265 |
msgstr ""
|
4266 |
|
4267 |
-
#:
|
4268 |
-
msgid "
|
4269 |
msgstr ""
|
4270 |
|
4271 |
-
#:
|
4272 |
-
msgid "
|
4273 |
msgstr ""
|
4274 |
|
4275 |
-
#:
|
4276 |
-
msgid "
|
4277 |
msgstr ""
|
4278 |
|
4279 |
-
#:
|
4280 |
-
msgid "
|
4281 |
msgstr ""
|
4282 |
|
4283 |
-
#:
|
4284 |
-
msgid "
|
4285 |
msgstr ""
|
4286 |
|
4287 |
-
#:
|
4288 |
-
msgid "
|
4289 |
msgstr ""
|
4290 |
|
4291 |
-
#:
|
4292 |
-
msgid "
|
4293 |
msgstr ""
|
4294 |
|
4295 |
-
#:
|
4296 |
-
msgid "
|
4297 |
msgstr ""
|
4298 |
|
4299 |
-
#:
|
4300 |
-
msgid "
|
4301 |
msgstr ""
|
4302 |
|
4303 |
-
#:
|
4304 |
-
msgid "
|
4305 |
msgstr ""
|
4306 |
|
4307 |
-
#:
|
4308 |
-
msgid "
|
4309 |
msgstr ""
|
4310 |
|
4311 |
-
#:
|
4312 |
-
msgid "
|
4313 |
msgstr ""
|
4314 |
|
4315 |
-
#:
|
4316 |
-
msgid "
|
4317 |
msgstr ""
|
4318 |
|
4319 |
-
#:
|
4320 |
-
msgid "
|
4321 |
msgstr ""
|
4322 |
|
4323 |
-
#:
|
4324 |
-
msgid "
|
4325 |
msgstr ""
|
4326 |
|
4327 |
-
#:
|
4328 |
-
msgid "
|
4329 |
msgstr ""
|
4330 |
|
4331 |
-
#:
|
4332 |
-
msgid "
|
4333 |
msgstr ""
|
4334 |
|
4335 |
-
#:
|
4336 |
-
msgid "
|
4337 |
msgstr ""
|
4338 |
|
4339 |
-
#:
|
4340 |
-
msgid "
|
4341 |
msgstr ""
|
4342 |
|
4343 |
-
#:
|
4344 |
-
msgid "
|
4345 |
msgstr ""
|
4346 |
|
4347 |
-
#:
|
4348 |
-
msgid "
|
4349 |
msgstr ""
|
4350 |
|
4351 |
-
#:
|
4352 |
-
msgid "
|
4353 |
msgstr ""
|
4354 |
|
4355 |
-
#:
|
4356 |
-
msgid "
|
4357 |
msgstr ""
|
4358 |
|
4359 |
-
#:
|
4360 |
-
msgid "
|
4361 |
msgstr ""
|
4362 |
|
4363 |
-
#:
|
4364 |
-
msgid "
|
4365 |
msgstr ""
|
4366 |
|
4367 |
-
#:
|
4368 |
-
msgid "
|
4369 |
msgstr ""
|
4370 |
|
4371 |
-
#:
|
4372 |
-
msgid "
|
4373 |
msgstr ""
|
4374 |
|
4375 |
-
#:
|
4376 |
-
msgid "
|
4377 |
msgstr ""
|
4378 |
|
4379 |
-
#:
|
4380 |
-
msgid "
|
4381 |
msgstr ""
|
4382 |
|
4383 |
-
#:
|
4384 |
-
msgid "
|
4385 |
msgstr ""
|
4386 |
|
4387 |
-
#:
|
4388 |
-
msgid "
|
4389 |
msgstr ""
|
4390 |
|
4391 |
-
#:
|
4392 |
-
msgid "
|
4393 |
msgstr ""
|
4394 |
|
4395 |
-
#:
|
4396 |
-
msgid "
|
4397 |
msgstr ""
|
4398 |
|
4399 |
-
|
4400 |
-
|
|
|
4401 |
msgstr ""
|
4402 |
|
4403 |
-
#:
|
4404 |
-
msgid "
|
4405 |
msgstr ""
|
4406 |
|
4407 |
-
#:
|
4408 |
-
msgid "
|
4409 |
msgstr ""
|
4410 |
|
4411 |
-
#:
|
4412 |
-
msgid "
|
4413 |
msgstr ""
|
4414 |
|
4415 |
-
#:
|
4416 |
-
msgid "
|
4417 |
msgstr ""
|
4418 |
|
4419 |
-
#:
|
4420 |
-
msgid "
|
4421 |
msgstr ""
|
4422 |
|
4423 |
-
|
4424 |
-
|
|
|
4425 |
msgstr ""
|
4426 |
|
4427 |
-
#:
|
4428 |
-
msgid "
|
4429 |
msgstr ""
|
4430 |
|
4431 |
-
#:
|
4432 |
-
msgid "
|
4433 |
msgstr ""
|
4434 |
|
4435 |
-
#:
|
4436 |
-
msgid "
|
4437 |
msgstr ""
|
4438 |
|
4439 |
-
#:
|
4440 |
-
msgid "
|
4441 |
msgstr ""
|
4442 |
|
4443 |
-
#:
|
4444 |
-
msgid "
|
4445 |
msgstr ""
|
4446 |
|
4447 |
-
#:
|
4448 |
-
msgid "
|
4449 |
msgstr ""
|
4450 |
|
4451 |
-
#:
|
4452 |
-
msgid "
|
4453 |
msgstr ""
|
4454 |
|
4455 |
-
#:
|
4456 |
-
msgid "
|
4457 |
msgstr ""
|
4458 |
|
4459 |
-
#:
|
4460 |
-
msgid "
|
4461 |
msgstr ""
|
4462 |
|
4463 |
-
#:
|
4464 |
-
msgid "
|
4465 |
msgstr ""
|
4466 |
|
4467 |
-
#:
|
4468 |
-
msgid "
|
4469 |
msgstr ""
|
4470 |
|
4471 |
-
#:
|
4472 |
-
msgid "
|
4473 |
msgstr ""
|
4474 |
|
4475 |
-
#:
|
4476 |
-
msgid "
|
4477 |
msgstr ""
|
4478 |
|
4479 |
-
#:
|
4480 |
-
msgid "
|
4481 |
msgstr ""
|
4482 |
|
4483 |
-
#:
|
4484 |
-
msgid "
|
4485 |
msgstr ""
|
4486 |
|
4487 |
-
#:
|
4488 |
-
msgid "
|
4489 |
msgstr ""
|
4490 |
|
4491 |
-
#:
|
4492 |
-
msgid "
|
4493 |
msgstr ""
|
4494 |
|
4495 |
-
#:
|
4496 |
-
msgid "
|
4497 |
msgstr ""
|
4498 |
|
4499 |
-
#:
|
4500 |
-
msgid "
|
4501 |
msgstr ""
|
4502 |
|
4503 |
-
#:
|
4504 |
-
msgid "
|
4505 |
msgstr ""
|
4506 |
|
4507 |
-
#:
|
4508 |
-
msgid "
|
4509 |
msgstr ""
|
4510 |
|
4511 |
-
#:
|
4512 |
-
msgid "
|
4513 |
msgstr ""
|
4514 |
|
4515 |
-
#:
|
4516 |
-
msgid "
|
4517 |
msgstr ""
|
4518 |
|
4519 |
-
#:
|
4520 |
-
msgid "
|
4521 |
msgstr ""
|
4522 |
|
4523 |
-
#:
|
4524 |
-
msgid "
|
4525 |
msgstr ""
|
4526 |
|
4527 |
-
#:
|
4528 |
-
msgid "
|
4529 |
msgstr ""
|
4530 |
|
4531 |
-
#:
|
4532 |
-
msgid "
|
4533 |
msgstr ""
|
4534 |
|
4535 |
-
#:
|
4536 |
-
msgid "
|
4537 |
msgstr ""
|
4538 |
|
4539 |
-
#:
|
4540 |
-
msgid "
|
4541 |
msgstr ""
|
4542 |
|
4543 |
-
#:
|
4544 |
-
msgid "
|
4545 |
msgstr ""
|
4546 |
|
4547 |
-
#:
|
4548 |
-
msgid "
|
4549 |
msgstr ""
|
4550 |
|
4551 |
-
#:
|
4552 |
-
msgid "
|
4553 |
msgstr ""
|
4554 |
|
4555 |
-
#:
|
4556 |
-
msgid "
|
4557 |
msgstr ""
|
4558 |
|
4559 |
-
#:
|
4560 |
-
msgid "
|
4561 |
msgstr ""
|
4562 |
|
4563 |
-
#:
|
4564 |
-
msgid "
|
4565 |
msgstr ""
|
4566 |
|
4567 |
-
#:
|
4568 |
-
msgid "
|
4569 |
msgstr ""
|
4570 |
|
4571 |
-
#:
|
4572 |
-
msgid "
|
4573 |
msgstr ""
|
4574 |
|
4575 |
-
#:
|
4576 |
-
msgid "
|
4577 |
msgstr ""
|
4578 |
|
4579 |
-
#:
|
4580 |
-
msgid "
|
4581 |
msgstr ""
|
4582 |
|
4583 |
-
#:
|
4584 |
-
msgid "
|
4585 |
msgstr ""
|
4586 |
|
4587 |
-
#:
|
4588 |
-
msgid "
|
4589 |
msgstr ""
|
4590 |
|
4591 |
-
#:
|
4592 |
-
msgid "
|
4593 |
msgstr ""
|
4594 |
|
4595 |
-
#:
|
4596 |
-
msgid "
|
4597 |
msgstr ""
|
4598 |
|
4599 |
-
#:
|
4600 |
-
msgid "
|
4601 |
msgstr ""
|
4602 |
|
4603 |
-
|
4604 |
-
|
|
|
4605 |
msgstr ""
|
4606 |
|
4607 |
-
#:
|
4608 |
-
msgid "
|
4609 |
msgstr ""
|
4610 |
|
4611 |
-
#:
|
4612 |
-
msgid "
|
4613 |
msgstr ""
|
4614 |
|
4615 |
-
#:
|
4616 |
-
msgid "
|
4617 |
msgstr ""
|
4618 |
|
4619 |
-
#:
|
4620 |
-
msgid "
|
4621 |
msgstr ""
|
4622 |
|
4623 |
-
#:
|
4624 |
-
msgid "
|
4625 |
msgstr ""
|
4626 |
|
4627 |
-
#:
|
4628 |
-
msgid "
|
4629 |
msgstr ""
|
4630 |
|
4631 |
-
#:
|
4632 |
-
msgid "
|
4633 |
msgstr ""
|
4634 |
|
4635 |
-
#:
|
4636 |
-
msgid "
|
4637 |
msgstr ""
|
4638 |
|
4639 |
-
#:
|
4640 |
-
msgid "
|
4641 |
msgstr ""
|
4642 |
|
4643 |
-
#:
|
4644 |
-
msgid "
|
4645 |
msgstr ""
|
4646 |
|
4647 |
-
#:
|
4648 |
-
msgid "
|
4649 |
msgstr ""
|
4650 |
|
4651 |
-
#:
|
4652 |
-
msgid "
|
4653 |
msgstr ""
|
4654 |
|
4655 |
-
#:
|
4656 |
-
msgid "
|
4657 |
msgstr ""
|
4658 |
|
4659 |
-
#:
|
4660 |
-
msgid "
|
4661 |
msgstr ""
|
4662 |
|
4663 |
-
#:
|
4664 |
-
msgid "
|
4665 |
msgstr ""
|
4666 |
|
4667 |
-
#:
|
4668 |
-
msgid "
|
4669 |
msgstr ""
|
4670 |
|
4671 |
-
#:
|
4672 |
-
msgid "
|
4673 |
msgstr ""
|
4674 |
|
4675 |
-
#:
|
4676 |
-
|
4677 |
-
msgid "Hey %1$s"
|
4678 |
msgstr ""
|
4679 |
|
4680 |
-
#:
|
4681 |
-
msgid "
|
4682 |
msgstr ""
|
4683 |
|
4684 |
-
#:
|
4685 |
-
msgid "
|
4686 |
msgstr ""
|
4687 |
|
4688 |
-
#:
|
4689 |
-
msgid "
|
4690 |
msgstr ""
|
4691 |
|
4692 |
-
#:
|
4693 |
-
|
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 |
-
#:
|
4698 |
-
|
4699 |
-
msgid "Get a free 7-day trial of the premium edition of %s. No credit card required, no commitments!"
|
4700 |
msgstr ""
|
4701 |
|
4702 |
-
#:
|
4703 |
-
msgid "
|
4704 |
msgstr ""
|
4705 |
|
4706 |
-
#:
|
4707 |
-
|
4708 |
-
msgid "You need to activate the licence key to use WP Activity Log Premium. %2$s"
|
4709 |
msgstr ""
|
4710 |
|
4711 |
-
#:
|
4712 |
-
msgid "
|
4713 |
msgstr ""
|
4714 |
|
4715 |
-
#:
|
4716 |
-
|
4717 |
-
msgid "%s You need to renew your license to continue using premium features."
|
4718 |
msgstr ""
|
4719 |
|
4720 |
-
#:
|
4721 |
-
|
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 |
-
#:
|
4726 |
-
msgid "
|
4727 |
msgstr ""
|
4728 |
|
4729 |
-
#:
|
4730 |
-
|
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 |
-
#:
|
4735 |
-
msgid "
|
4736 |
msgstr ""
|
4737 |
|
4738 |
-
|
4739 |
-
|
|
|
4740 |
msgstr ""
|
4741 |
|
4742 |
-
#:
|
4743 |
-
msgid "
|
4744 |
msgstr ""
|
4745 |
|
4746 |
-
#:
|
4747 |
-
|
4748 |
-
msgid "Alert %1$s is no longer being monitored.<br /> %2$s"
|
4749 |
msgstr ""
|
4750 |
|
4751 |
-
#:
|
4752 |
-
msgid "
|
4753 |
msgstr ""
|
4754 |
|
4755 |
-
#:
|
4756 |
-
|
4757 |
-
msgid "You are using a version of PHP that is older than %s, which is no longer supported."
|
4758 |
msgstr ""
|
4759 |
|
4760 |
-
#:
|
4761 |
-
msgid "
|
4762 |
msgstr ""
|
4763 |
|
4764 |
-
#:
|
4765 |
-
|
4766 |
-
msgid "Please install the %s plugin on the MainWP dashboard."
|
4767 |
msgstr ""
|
4768 |
|
4769 |
-
#:
|
4770 |
-
msgid "
|
4771 |
msgstr ""
|
4772 |
|
4773 |
-
#:
|
4774 |
-
|
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 |
-
#:
|
4779 |
-
msgid "
|
4780 |
msgstr ""
|
4781 |
|
4782 |
-
#:
|
4783 |
-
msgid "
|
4784 |
msgstr ""
|
4785 |
|
4786 |
-
#:
|
4787 |
-
msgid "
|
4788 |
msgstr ""
|
4789 |
|
4790 |
-
#:
|
4791 |
-
msgid "
|
4792 |
msgstr ""
|
4793 |
|
4794 |
-
#:
|
4795 |
-
msgid "
|
4796 |
msgstr ""
|
4797 |
|
4798 |
-
#:
|
4799 |
-
msgid "
|
4800 |
msgstr ""
|
4801 |
|
4802 |
-
#:
|
4803 |
-
msgid "
|
4804 |
msgstr ""
|
4805 |
|
4806 |
-
#:
|
4807 |
-
msgid "
|
4808 |
msgstr ""
|
4809 |
|
4810 |
-
#:
|
4811 |
-
|
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 ⇪"
|
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 ⇪"
|
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 ⇪"
|
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 ⇪"
|
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 ⇪"
|
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 › 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 ""
|
@@ -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.
|
9 |
-
Stable tag: 4.3.
|
10 |
-
Requires PHP:
|
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
|
|
|
|
|
28 |
|
29 |
[youtube https://www.youtube.com/watch?v=pgFEMIvKFTA]
|
30 |
|
31 |
-
> <strong>Note</strong>: The
|
32 |
>
|
33 |
|
34 |
#### Maintained & Supported by WP White Security
|
35 |
|
36 |
-
WP White Security builds high-quality
|
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
|
87 |
-
* Search the activity log using text-based searches
|
88 |
-
*
|
89 |
-
*
|
90 |
-
*
|
|
|
|
|
|
|
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
|
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)
|
99 |
|
100 |
-
> <strong>Note</strong>: paid
|
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
|
110 |
-
* Limit who can view the WordPress activity log by
|
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
|
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.
|
210 |
-
|
211 |
-
Release notes: [WP Activity Log 4.3:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
|
213 |
**New features**
|
214 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
|
216 |
**Improvements**
|
217 |
-
|
218 |
-
*
|
219 |
-
*
|
220 |
-
*
|
221 |
-
*
|
222 |
-
*
|
223 |
-
*
|
224 |
-
*
|
225 |
-
*
|
226 |
-
*
|
227 |
-
*
|
228 |
-
*
|
229 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
**Bug fixes**
|
231 |
-
*
|
232 |
-
*
|
233 |
-
*
|
234 |
-
*
|
235 |
-
* Event ID
|
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 ¬ifications](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.
|
@@ -5,7 +5,7 @@
|
|
5 |
* Browser Information Class of the plugin.
|
6 |
*
|
7 |
* @since 3.2.2
|
8 |
-
* @package
|
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.
|
@@ -30,7 +30,7 @@ function wsal_freemius() {
|
|
30 |
// Include Freemius SDK.
|
31 |
require_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR . implode( DIRECTORY_SEPARATOR, [
|
32 |
'..',
|
33 |
-
'
|
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'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -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();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -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 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,23 +1,23 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* Plugin Name: WP Activity Log
|
4 |
-
* Plugin URI:
|
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.
|
8 |
* Text Domain: wp-security-audit-log
|
9 |
* Author URI: https://www.wpwhitesecurity.com/
|
10 |
* License: GPL2
|
11 |
* Network: true
|
12 |
*
|
13 |
-
* @package
|
14 |
*
|
15 |
* @fs_premium_only /extensions/, /sdk/twilio-php/
|
16 |
*/
|
17 |
|
18 |
/*
|
19 |
WP Activity Log
|
20 |
-
Copyright(c)
|
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
|
44 |
*/
|
45 |
class WpSecurityAuditLog {
|
46 |
|
@@ -49,7 +49,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
|
|
49 |
*
|
50 |
* @var string
|
51 |
*/
|
52 |
-
public $version = '4.3.
|
53 |
|
54 |
/**
|
55 |
* Plugin constants.
|
@@ -63,7 +63,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
|
|
63 |
*
|
64 |
* @var string
|
65 |
*/
|
66 |
-
const MIN_PHP_VERSION = '
|
67 |
|
68 |
/**
|
69 |
* New option name prefix.
|
@@ -94,7 +94,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
|
|
94 |
public $sensors;
|
95 |
|
96 |
/**
|
97 |
-
* Settings manager.
|
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 |
-
|
464 |
-
|
|
|
|
|
465 |
|
466 |
-
|
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 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
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 |
-
|
1515 |
-
*/
|
1516 |
-
public function Migrate() {
|
1517 |
-
global $wpdb;
|
1518 |
-
static $mig_types = array(
|
1519 |
-
3000 => 5006,
|
1520 |
-
);
|
1521 |
|
1522 |
-
|
1523 |
-
|
1524 |
-
|
1525 |
-
|
1526 |
-
|
1527 |
-
|
1528 |
-
|
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
|
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::
|
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 |
-
|
2220 |
-
|
2221 |
-
|
2222 |
-
|
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 |
-
|
2242 |
-
|
2243 |
-
|
2244 |
-
|
2245 |
-
|
2246 |
-
|
2247 |
-
|
2248 |
-
|
2249 |
-
|
2250 |
-
|
2251 |
-
|
|
|
|
|
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 |
+
}
|