✓
⚠
⚠ 0 ) : ?>
0 ) { printf( /* translators: %d is the number of checklist items that are not yet fully earned. */ esc_html( _n( '%d item still needs attention.', '%d items still need attention.', $guardforge_score_failed, 'guardforge' ) ), (int) $guardforge_score_failed ); } else { esc_html_e( 'Every check on the list is earned in full.', 'guardforge' ); } /* * The number is a reading of the settings. On a copy, two of * those settings are switched on and held soft on purpose, and * a headline with no qualifier beside it reads as a claim that * they are working. The score screen names them; here there is * only room to say that the number needs reading that way. */ if ( $guardforge_score_soft > 0 ) { echo ' '; printf( /* translators: %d is how many checklist items are switched on but not enforced on this copy. */ esc_html( _n( 'Staging mode holds %d of them soft on this copy — it keeps its points, and it is not protecting anybody here.', 'Staging mode holds %d of them soft on this copy — they keep their points, and they are not protecting anybody here.', $guardforge_score_soft, 'guardforge' ) ), (int) $guardforge_score_soft ); } ?>

__( 'File change', 'guardforge' ), 'vuln_match' => __( 'Vulnerability', 'guardforge' ), 'login_series' => __( 'Login series', 'guardforge' ), ]; $guardforge_check_labels = [ 'feed' => __( 'Vulnerability feed', 'guardforge' ), 'scan' => __( 'File integrity scan', 'guardforge' ), 'alerts' => __( 'Alerts', 'guardforge' ), 'cloudflare' => __( 'Cloudflare', 'guardforge' ), ]; $guardforge_check_links = [ 'feed' => admin_url( 'admin.php?page=guardforge-vulndb' ), 'scan' => admin_url( 'admin.php?page=guardforge-integrity' ), 'cloudflare' => admin_url( 'admin.php?page=guardforge-cloudflare' ), ]; // The Alerts screen is GuardForge Pro's since 1.6.0: without the add-on // there is no such page to open. if ( GUARDFORGE_Pro_Bridge::addon_active() ) { $guardforge_check_links['alerts'] = admin_url( 'admin.php?page=guardforge-alerts' ); } $guardforge_cases_url = admin_url( 'admin.php?page=guardforge-cases' ); $guardforge_needs = isset( $gf_cases_summary['needs_decision'] ) && is_array( $gf_cases_summary['needs_decision'] ) ? $gf_cases_summary['needs_decision'] : []; $guardforge_needs_total = isset( $gf_cases_summary['needs_decision_total'] ) ? (int) $gf_cases_summary['needs_decision_total'] : count( $guardforge_needs ); $guardforge_verified_n = isset( $gf_cases_summary['verified_count'] ) ? (int) $gf_cases_summary['verified_count'] : 0; $guardforge_cases_as_of = isset( $gf_cases_summary['as_of'] ) ? (string) $gf_cases_summary['as_of'] : ''; $guardforge_checks_ok = isset( $gf_checks['verified'] ) && is_array( $gf_checks['verified'] ) ? $gf_checks['verified'] : []; $guardforge_checks_bad = isset( $gf_checks['not_working'] ) && is_array( $gf_checks['not_working'] ) ? $gf_checks['not_working'] : []; $guardforge_checks_na = isset( $gf_checks['unavailable'] ) && is_array( $gf_checks['unavailable'] ) ? $gf_checks['unavailable'] : []; $guardforge_checks_nr = isset( $gf_checks['not_run'] ) && is_array( $gf_checks['not_run'] ) ? $gf_checks['not_run'] : []; // Checks that did not run on this site, for whatever reason (Pro, not set up, not run yet): none of them failed. $guardforge_not_run_n = count( $guardforge_checks_na ) + count( $guardforge_checks_nr ); // The heading is red only when something is listed under it. $guardforge_bad_color = $guardforge_checks_bad ? 'var(--status-error)' : 'var(--text-muted)'; ?>

  • :
count( $guardforge_needs ) ) : ?>

  • :

  • :
, no heading of their own, * distinguished only by an inline muted colour. A Free site (or a * Pro site with Cloudflare/alerts not yet configured) read as * having "verified" a control it does not even have. This is its * own section, named for what it actually is — Guideline 5 again: * a feature this site does not ship or has not turned on is not a * pass, and it is not a fail either. */ ?>

  • :

  • :

' . esc_html( $opts['integrity_last_scan'] ) . ''; ?>

GuardForge v · by Avakode