false, 'login' => false, 'woocommerce' => false, 'gravityforms' => false, ); // Check for enabled front end events and merge result with above array. if ( isset( $post_array['frontend-events'] ) ) { $frontend_events = array_merge( $frontend_events, $post_array['frontend-events'] ); } $current_frontend_events = Settings_Helper::get_frontend_events(); $this->report_enabled_disabled_event( $current_frontend_events, $frontend_events, true ); // Save enabled front end events. Settings_Helper::set_frontend_events( $frontend_events ); // Ensure we attempt to save even if everything is disabled. $post_array['alert'] = ( isset( $post_array['alert'] ) ) ? $post_array['alert'] : array(); $enabled = array_map( 'intval', $post_array['alert'] ); $disabled = array(); $registered_alerts = Alert_Manager::get_alerts(); foreach ( $registered_alerts as $alert ) { // Disable Visitor events if the user disabled the event there are "tied to" in the UI. if ( ! in_array( $alert['code'], $enabled, true ) ) { $disabled[] = $alert['code']; } } $disabled = apply_filters( 'wsal_save_settings_disabled_events', $disabled, $registered_alerts, $frontend_events, $enabled ); // Report any changes as an event. $this->report_enabled_disabled_event( $enabled, $disabled ); // Save the disabled events. Settings_Helper::set_disabled_alerts( $disabled ); // Save the disabled events. // Update failed login limits. // Plugin_Settings_Helper::set_failed_login_limit( $post_array['log_failed_login_limit'] ); if ( isset( $post_array['log_visitor_failed_login_limit'] ) ) { Plugin_Settings_Helper::set_visitor_failed_login_limit( $post_array['log_visitor_failed_login_limit'] ); } // Allow 3rd parties to process and save more of the posted data. do_action( 'wsal_togglealerts_process_save_settings', $post_array ); } /** * Reports an event if an alert has been disabled/enabled. * * @param array $enabled - Array of enabled event IDs prior to saving. * @param array $disabled - Array of disabled events prior to saving. * @return void */ private function report_enabled_disabled_event( $enabled, $disabled, $is_frontend = false ) { if ( $is_frontend ) { $current_enabled = $enabled; $fresh_enabled = $disabled; $frontend_labels = array( 'register' => esc_html__( '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.', 'wp-security-audit-log' ), 'login' => esc_html__( 'Keep a log of user log in activity on custom login forms (such as WooCommerce & membership plugins)', 'wp-security-audit-log' ), 'woocommerce' => esc_html__( 'Keep a log of visitor orders, stock changes and other public events?', 'wp-security-audit-log' ), ); $frontend_codes = array( 'register' => 4000, 'login' => 1000, 'woocommerce' => 9035, 'gravityforms' => 5709, ); foreach ( $current_enabled as $frontend_event => $value ) { if ( $value !== $fresh_enabled[ $frontend_event ] ) { Alert_Manager::trigger_event( 6060, array( 'ID' => $frontend_codes[ $frontend_event ], 'description' => $frontend_labels[ $frontend_event ], 'EventType' => ( $fresh_enabled[ $frontend_event ] ) ? 'enabled' : 'disabled', ) ); } } } else { // Grab currently saved list of disabled events for comparison. $currently_disabled = Settings_Helper::get_disabled_alerts(); // Further remove items which are disabled in the UI but potentially not saved as disabled in the settings yet (for example fresh WSAL install). $obsolete_events = array( 9999, 2126, 99999, 0000, 0001, 0002, 0003, 0004, 0005, 0006 ); $obsolete_events = apply_filters( 'wsal_togglealerts_obsolete_events', $obsolete_events ); $ms_alerts = ( ! WP_Helper::is_multisite() ) ? array_keys( Alert_Manager::get_alerts_by_category( 'Multisite Network Sites' ) ) : array(); $ms_user_alerts = ( ! WP_Helper::is_multisite() ) ? array_keys( Alert_Manager::get_alerts_by_sub_category( 'Multisite User Profiles' ) ) : array(); $wc_alerts = ( ! Woocommerce_Helper::is_woocommerce_active() ) ? array_keys( Alert_Manager::get_alerts_by_category( 'WooCommerce' ) ) : array(); $yoast_alerts = ( ! Yoast_SEO_Helper::is_wpseo_active() ) ? array_keys( Alert_Manager::get_alerts_by_category( 'Yoast SEO' ) ) : array(); $deprecated_event = Alert_Manager::get_deprecated_events(); $always_disabled = Settings_Helper::get_default_always_disabled_alerts(); $events_to_ignore = array_merge( $obsolete_events, $ms_alerts, $always_disabled, $deprecated_event, $ms_user_alerts, $wc_alerts, $yoast_alerts ); // Remove items we dont want to trigger alerts for here. $disabled = array_diff( $disabled, $events_to_ignore ); // Check for events which are newly enabled. foreach ( $enabled as $enabled_alert_id ) { if ( in_array( $enabled_alert_id, $currently_disabled, true ) ) { $alert_data = Alert::get_alert( $enabled_alert_id ); Alert_Manager::trigger_event( 6060, array( 'ID' => $enabled_alert_id, 'description' => $alert_data['desc'], 'EventType' => 'enabled', ) ); } } // Check for events which are newly disabled. foreach ( $disabled as $disabled_alert_id ) { if ( ! in_array( $disabled_alert_id, $currently_disabled, true ) ) { $alert_data = Alert::get_alert( $disabled_alert_id ); Alert_Manager::trigger_event( 6060, array( 'ID' => $disabled_alert_id, 'description' => $alert_data['desc'], 'EventType' => 'disabled', ) ); } } } } /** * Method: Get View. */ public function render() { // Die if user does not have permission to view. if ( ! Settings_Helper::current_user_can( 'edit' ) ) { wp_die( esc_html__( 'You do not have sufficient permissions to access this page.', 'wp-security-audit-log' ) ); } // Filter $_POST array. $post_array = filter_input_array( INPUT_POST ); if ( isset( $post_array['submit'] ) ) { check_admin_referer( 'wsal-togglealerts' ); try { $this->save(); ?>

getMessage() ); ?>

get_log_level_based_on_events( $disabled_events ); $log_level_options = array( 'basic' => esc_html__( 'Basic', 'wp-security-audit-log' ), 'geek' => esc_html__( 'Geek', 'wp-security-audit-log' ), 'custom' => esc_html__( 'Custom', 'wp-security-audit-log' ), ); $subcat_alerts = array( 1000, 1004, 2010, 2111 ); // Allow further items to be added externally. $subcat_alerts = apply_filters( 'wsal_togglealerts_sub_category_events', $subcat_alerts ); $obsolete_events = array( 9999, 2126, 99999 ); $obsolete_events = apply_filters( 'wsal_togglealerts_obsolete_events', $obsolete_events ); // Check if the disabled events are enforced from the MainWP master site. $enforced_settings = WSAL\Helpers\Settings_Helper::get_option_value( 'mainwp_enforced_settings', array() ); $disabled_events_enforced_by_mainwp = array_key_exists( 'disabled_events', $enforced_settings ) && ! empty( $enforced_settings['disabled_events'] ); ?>