Server IP : 172.67.157.199 / Your IP : 18.191.44.3 [ Web Server : Apache System : Linux b70eb322-3aee-0c53-7c82-0db91281f2c6.secureserver.net 6.1.90-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 2 12:09:22 EDT 2024 x86_64 User : root ( 0) PHP Version : 8.0.30.2 Disable Function : NONE Domains : 0 Domains MySQL : ON | cURL : ON | WGET : ON | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/chroot/var/www/wp-content/plugins/defender-security/src/component/ |
Upload File : |
<?php /** * Manages the display of "What's New" modals dashboard. * * @package WP_Defender\Component */ namespace WP_Defender\Component; use WP_Defender\Component; use WP_Defender\Behavior\WPMUDEV; /** * Use different actions for "What's new" modals. * * @since 2.5.5 */ class Feature_Modal extends Component { /** * Feature data for the last active "What's new" modal. */ public const FEATURE_SLUG = 'wd_show_feature_automatic_ip_detection'; public const FEATURE_VERSION = '4.9.0'; /** * Get modals that are displayed on the Dashboard page. * * @param bool $force_hide The modal is not displayed in every version, so we need a flag that will control the * display process. * * @return array * @since 2.7.0 Use one template for Welcome modal and dynamic data. */ public function get_dashboard_modals( $force_hide = false ): array { $wpmudev = wd_di()->get( WPMUDEV::class ); $is_displayed = $force_hide ? false : $this->display_last_modal( self::FEATURE_SLUG ); $title = esc_html__( 'Enhanced Security with Automatic IP Detection', 'defender-security' ); $desc = sprintf( /* translators: 1. Open tag. 2. Close tag. */ esc_html__( 'Defender now identifies IP headers with improved accuracy and can effectively avoid false blocks. This ensures enhanced site security and compatibility across different hosting environments. For more details about the %1$sAutomatic IP Detection%2$s feature, please visit the Firewall Settings page.', 'defender-security' ), '<strong style="font-weight: 700;">', '</strong>' ); $button_title = esc_html__( 'Go to Settings', 'defender-security' ); $button_title_free = $button_title; return array( 'show_welcome_modal' => $is_displayed, 'welcome_modal' => array( 'title' => $title, 'desc' => $desc, 'banner_1x' => defender_asset_url( '/assets/img/modal/welcome-modal.png' ), 'banner_2x' => defender_asset_url( '/assets/img/modal/[email protected]' ), 'banner_alt' => esc_html__( 'Modal for Automatic IP Detection', 'defender-security' ), 'button_title' => $button_title, 'button_title_free' => $button_title_free, // Additional information. 'additional_text' => $this->additional_text(), 'is_disabled_option' => $wpmudev->is_disabled_hub_option(), ), ); } /** * Display modal if: * plugin version has important changes, * plugin settings have been reset before -> this is not fresh install, * Whitelabel > Documentation, Tutorials and What’s New Modal > checked Show tab OR Whitelabel is disabled. * * @param string $key The feature slug to check. * * @return bool */ protected function display_last_modal( $key ): bool { $info = defender_white_label_status(); if ( defined( 'WP_DEFENDER_PRO' ) && WP_DEFENDER_PRO ) { $allowed_fresh_install = true; } else { $allowed_fresh_install = (bool) get_site_option( 'wd_nofresh_install' ); } return $allowed_fresh_install && (bool) get_site_option( $key ) && ! $info['hide_doc_link']; } /** * Upgrades site options related to feature modals based on the database version. */ public function upgrade_site_options(): void { $db_version = get_site_option( 'wd_db_version' ); $feature_slugs = array( // Important slugs to display Onboarding, e.g. after the click on Reset settings. array( 'slug' => 'wp_defender_shown_activator', 'vers' => '2.4.0', ), array( 'slug' => 'wp_defender_is_free_activated', 'vers' => '2.4.0', ), // The latest feature. array( 'slug' => 'wd_show_feature_global_ip', 'vers' => '3.6.0', ), // The current feature. array( 'slug' => self::FEATURE_SLUG, 'vers' => self::FEATURE_VERSION, ), ); foreach ( $feature_slugs as $feature ) { if ( version_compare( $db_version, $feature['vers'], '==' ) ) { // The current feature. update_site_option( $feature['slug'], true ); } else { // Old one. delete_site_option( $feature['slug'] ); } } } /** * Get additional text. * * @return string */ private function additional_text(): string { return ''; } /** * Delete welcome modal key. * * @return void */ public static function delete_modal_key(): void { delete_site_option( self::FEATURE_SLUG ); } }