=' ) ) { return; } // Only output this message on the welcome page. if ( 'toplevel_page_accessibility_checker' !== get_current_screen()->id ) { return; } // Check if the notice has been dismissed. if ( absint( get_option( 'edac_welcome_page_post_count_change_notice_dismiss', 0 ) ) ) { return; } ?>

'https://equalizedigital.com/corrected-calculations-in-accessibility-checker-pro-and-audit-history/' ] ); printf( // translators: %1$s is the opening anchor tag, %2$s is the closing anchor tag. esc_html__( 'We have improved the statistics calculations in version 1.21.0. As a result, some numbers in the data below may have changed. Read more in our %1$srelease announcement post%2$s.', 'accessibility-checker' ), '', '' ); ?>

id, $screens, true ) ) { remove_all_actions( 'admin_notices' ); remove_all_actions( 'all_admin_notices' ); } } /** * Black Friday Admin Notice * * @return void */ public function edac_black_friday_notice() { // check if accessibility checker pro is active. if ( is_plugin_active( 'accessibility-checker-pro/accessibility-checker-pro.php' ) ) { return; } // Check if the notice has been dismissed. if ( absint( get_option( 'edac_black_friday_2024_notice_dismiss', 0 ) ) ) { return; } // Show from November 25 to December 03. $current_date = date_i18n( 'Ymd' ); // Use date_i18n for localization. $start_date = '20241125'; $end_date = '20241203'; if ( $current_date >= $start_date && $current_date <= $end_date ) { // Get the promotional message from a separate function/file. $message = $this->edac_get_black_friday_message(); // Output the message with appropriate sanitization. echo wp_kses_post( $message ); } } /** * Get Black Friday Promo Message * * @return string */ public function edac_get_black_friday_message() { // Construct the promotional message. $message = '
'; $message .= '

' . esc_html__( '🎉 Black Friday special! 🎉', 'accessibility-checker' ) . '
'; $message .= esc_html__( 'Upgrade to a paid version of Accessibility Checker from November 25th to December 3rd and get 30% off! Full site scanning, site-wide open issues report, ignore logs, and more.', 'accessibility-checker' ) . '
'; $message .= '' . esc_html__( 'Ask a Pre-Sale Question', 'accessibility-checker' ) . ' '; $message .= '' . esc_html__( 'Upgrade Now', 'accessibility-checker' ) . '

'; $message .= '
'; return $message; } /** * Black Friday Admin Notice Ajax * * @return void * * - '-1' means that nonce could not be varified * - '-2' means that update option wasn't successful */ public function edac_black_friday_notice_ajax() { // nonce security. if ( ! isset( $_REQUEST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST['nonce'] ), 'ajax-nonce' ) ) { $error = new \WP_Error( '-1', 'Permission Denied' ); wp_send_json_error( $error ); } $results = update_option( 'edac_black_friday_2024_notice_dismiss', true ); if ( ! $results ) { $error = new \WP_Error( '-2', 'Update option wasn\'t successful' ); wp_send_json_error( $error ); } wp_send_json_success( wp_json_encode( $results ) ); } /** * GAAD Notice * * @return string */ public function edac_gaad_notice() { // Define constants for start and end dates. define( 'EDAC_GAAD_NOTICE_START_DATE', '2025-05-13' ); define( 'EDAC_GAAD_NOTICE_END_DATE', '2025-05-21' ); // Check if Accessibility Checker Pro is active. $pro = is_plugin_active( 'accessibility-checker-pro/accessibility-checker-pro.php' ); if ( $pro ) { return; } // Get the value of the 'edac_gaad_notice_dismiss' option and sanitize it. $dismissed = absint( get_option( 'edac_gaad_notice_dismiss_2025', 0 ) ); // Check if the notice has been dismissed. if ( $dismissed ) { return; } // Get the current date in the 'Y-m-d' format. $current_date = gmdate( 'Y-m-d' ); // Check if the current date is within the specified range. if ( $current_date >= EDAC_GAAD_NOTICE_START_DATE && $current_date <= EDAC_GAAD_NOTICE_END_DATE ) { // Get the promotional message from a separate function/file. $message = $this->edac_get_gaad_promo_message(); // Output the message with appropriate sanitization. echo wp_kses_post( $message ); } } /** * Get GAAD Promo Message * * @return string */ public function edac_get_gaad_promo_message() { // Construct the promotional message. $message = '
'; $message .= '

' . esc_html__( '🎉 Get 25% off Accessibility Checker Pro in honor of Global Accessibility Awareness Day! 🎉', 'accessibility-checker' ) . '
'; $message .= esc_html__( 'Use coupon code GAAD25 from May 13th-May 21st to get access to full-site scanning and other pro features at a special discount. Not sure if upgrading is right for you?', 'accessibility-checker' ) . '
'; $message .= '' . esc_html__( 'Ask a Pre-Sale Question', 'accessibility-checker' ) . ' '; $message .= '' . esc_html__( 'Upgrade Now', 'accessibility-checker' ) . '

'; $message .= '
'; return $message; } /** * GAAD Admin Notice Ajax * * @return void * * - '-1' means that nonce could not be varified * - '-2' means that update option wasn't successful */ public function edac_gaad_notice_ajax() { // nonce security. if ( ! isset( $_REQUEST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST['nonce'] ), 'ajax-nonce' ) ) { $error = new \WP_Error( '-1', 'Permission Denied' ); wp_send_json_error( $error ); } $results = update_option( 'edac_gaad_notice_dismiss_2025', true ); // Delete old meta keys if they exist. delete_option( 'edac_gaad_notice_dismiss_2024' ); delete_option( 'edac_gaad_notice_dismiss' ); if ( ! $results ) { $error = new \WP_Error( '-2', 'Update option wasn\'t successful' ); wp_send_json_error( $error ); } wp_send_json_success( wp_json_encode( $results ) ); } /** * Review Admin Notice * * @return void */ public function edac_review_notice() { $option = 'edac_review_notice'; $edac_review_notice = get_option( $option ); // exit if option is set to stop. if ( 'stop' === $edac_review_notice ) { return; } $transient = 'edac_review_notice_reminder'; $edac_review_notice_reminder = get_transient( $transient ); // first time if notice has never been shown wait 14 days. if ( false === $edac_review_notice_reminder && empty( $edac_review_notice ) ) { // if option isn't set and plugin has been active for more than 14 days show notice. This is for current users. if ( edac_days_active() > 14 ) { update_option( $option, 'play' ); } else { // if plugin has been active less than 14 days set transient for 14 days. set_transient( $transient, true, 14 * DAY_IN_SECONDS ); // set option to pause. update_option( $option, 'pause' ); } } // if transient has expired and option is set to pause update option to play. if ( false === $edac_review_notice_reminder && 'pause' === $edac_review_notice ) { update_option( $option, 'play' ); } // if option is not set to play exit. if ( get_option( $option ) !== 'play' ) { return; } ?>

%2$s', esc_attr__( 'Upgrade to accessibility checker pro. Opens in a new window.', 'accessibility-checker' ), esc_html__( 'upgrade to pro', 'accessibility-checker' ) ) ) ); } /** * Password Protected Notice * * @return string */ public function edac_password_protected_notice() { if ( (bool) get_option( 'edac_password_protected' ) && ! (bool) get_option( 'edac_password_protected_notice_dismiss' ) ) { echo wp_kses( '

' . $this->edac_password_protected_notice_text() . '

', 'post' ); return; } } /** * Password Protected Admin Notice Ajax * * @return void * * - '-1' means that nonce could not be varified * - '-2' means that update option wasn't successful */ public function edac_password_protected_notice_ajax() { // nonce security. if ( ! isset( $_REQUEST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST['nonce'] ), 'ajax-nonce' ) ) { $error = new \WP_Error( '-1', 'Permission Denied' ); wp_send_json_error( $error ); } $results = update_option( 'edac_password_protected_notice_dismiss', true ); if ( ! $results ) { $error = new \WP_Error( '-2', 'Update option wasn\'t successful' ); wp_send_json_error( $error ); } wp_send_json_success( wp_json_encode( $results ) ); } /** * Save a transient to indicate that the fixes settings have been updated. * * @param string $option The option name that was saved. * * @return void */ public function set_fixes_transient_on_save( $option ) { if ( ! class_exists( 'EqualizeDigital\AccessibilityChecker\Fixes\FixesManager' ) ) { return; } $fixes_settings = FixesManager::get_instance()->get_fixes_settings(); $options_keys = []; foreach ( $fixes_settings as $fix ) { $options_keys = array_merge( $options_keys, array_keys( $fix['fields'] ) ); } if ( in_array( $option, $options_keys, true ) ) { // Set a custom transient as a flag. set_transient( 'edac_fixes_settings_saved', true, 60 ); } } }