' . esc_html__( 'For your administrator account on this site. Showing previews also restores individually dismissed Pro suggestions. Available to single-site administrators.', 'shieldlume-security' ) . '
' . esc_html__( 'Your scan coverage will appear here after you start a scan. Until then, this site has not been assessed.', 'shieldlume-security' ) . '
';
}
echo '
' . esc_html__( 'File counts can grow as folders are discovered. For a delayed or stalled scan, open Help & diagnostics.', 'shieldlume-security' ) . '
';
}
echo '';
}
public static function help(): void {
echo '
';
foreach ( array(
array( 'setup', __( 'A great first five minutes', 'shieldlume-security' ), __( 'Check your setup, choose your settings and start a scan.', 'shieldlume-security' ), 'setup', __( 'Open setup guide', 'shieldlume-security' ) ),
array( 'findings', __( 'Understand a finding', 'shieldlume-security' ), __( 'See what was found, why it matters and what to check next.', 'shieldlume-security' ), 'findings', __( 'Explore your evidence', 'shieldlume-security' ) ),
array( 'settings', __( 'Keep control of your data', 'shieldlume-security' ), __( 'Choose optional connections and email alerts. Your local scans work without them.', 'shieldlume-security' ), 'settings', __( 'Review permissions', 'shieldlume-security' ) ),
) as [$icon, $title, $copy, $tab, $label] ) {
echo '' . wp_kses( self::icon( $icon ), self::markupTags() ) . '
' . esc_html__( 'Good to know', 'shieldlume-security' ) . '
';
foreach ( array(
__( 'Will a scan change my files?', 'shieldlume-security' ) => __( 'Scanning reads supported files and database records. Optional Pro file restoration is separate: review a specific plan and explicitly approve it. Protected recovery and browser verification must be available before a repair can run.', 'shieldlume-security' ),
__( 'Why does a scan need another batch?', 'shieldlume-security' ) => __( 'Work is split into bounded batches to avoid a long-running request. WordPress cron can resume them. On a low-traffic site, use Continue scanning or have your host configure a regular WordPress cron worker.', 'shieldlume-security' ),
__( 'Does “no threats detected” mean everything is clean?', 'shieldlume-security' ) => __( 'It applies only to the completed checks. Review excluded paths, unsupported content, unavailable references and scan limitations. A detector result cannot guarantee complete absence of malware.', 'shieldlume-security' ),
__( 'Do I need PRO to inspect or repair findings?', 'shieldlume-security' ) => __( 'Free includes local scanning, complete findings, evidence exports, native WordPress editing links and rescanning. Pro adds eligible file restoration, early filtering, investigation, scheduling and optional connected services. Pro repairs require verified references, protected recovery and explicit approval.', 'shieldlume-security' ),
) as $question => $answer ) {
echo '' . esc_html( $question ) . '
' . esc_html__( 'Open online documentation, request help or read private vulnerability-reporting guidance. These links open antivirus.ai in a new tab. No diagnostic file or finding is attached automatically.', 'shieldlume-security' ) . '
';
foreach ( array(
'https://antivirus.ai/docs/' => __( 'Documentation and manuals (opens in a new tab)', 'shieldlume-security' ),
'https://antivirus.ai/help/' => __( 'Help and product support (opens in a new tab)', 'shieldlume-security' ),
'https://antivirus.ai/security/' => __( 'Private vulnerability-reporting guidance (opens in a new tab)', 'shieldlume-security' ),
) as $url => $label ) {
echo '
' . esc_html__( 'Review and redact any evidence before choosing to share it. Support does not include managed malware cleanup or a guaranteed response time.', 'shieldlume-security' ) . '
';
}
/** Local screenshots of practice tools and a fictional report, never current-site results. */
public static function editions(): void {
ProPreviews::cards();
ProPreviews::offer();
echo '
' . esc_html__( 'Optional, separate Pro add-on', 'shieldlume-security' ) . '
' . esc_html__( 'Local analysis works in both editions. The separately installed Pro add-on offers optional AI explanations with an eligible account, your permission and an available provider. New Pro purchases include AI access; installing either plugin does not start a subscription.', 'shieldlume-security' ) . '
';
echo '
' . esc_html__( 'THE LOCAL FOUNDATION', 'shieldlume-security' ) . '
' . esc_html__( 'One production site plus a paired staging site. Applicable tax is additional; renews annually until cancelled. Review the current purchase terms before subscribing.', 'shieldlume-security' ) . '
' . esc_html__( 'Choose Pro when you maintain a busy site or need organized investigations and reports for your work.', 'shieldlume-security' ) . '
';
foreach ( array( __( 'Everything in FREE', 'shieldlume-security' ), __( 'Verified file restoration and protected recovery', 'shieldlume-security' ), __( 'Optional host-assisted early filtering', 'shieldlume-security' ), __( 'Flexible scan schedules', 'shieldlume-security' ), __( 'Grouped investigations', 'shieldlume-security' ), __( 'Reviewed repair batches, with approval before each repair', 'shieldlume-security' ), __( 'Printable reports, local daily summaries and longer history', 'shieldlume-security' ), __( 'Optional AI explanations through the Pro service, with separate permission', 'shieldlume-security' ) ) as $feature ) {
echo '
' . esc_html__( 'Pro needs one successful online licence activation before local tools unlock. Earned local access then continues offline and after subscription expiry; connected services, references, updates and downloads retain their separate requirements.', 'shieldlume-security' ) . '
' . esc_html__( 'Review the Pro offer and subscription terms on antivirus.ai. Pro purchasers download the separate add-on from their authenticated account; existing grant holders use their supplied account access. Free remains available without an account.', 'shieldlume-security' ) . '
' . esc_html__( 'Back up your site and use a staging installation for evaluation.', 'shieldlume-security' ) . '
' . esc_html__( 'In WordPress, open Plugins → Add New Plugin → Upload Plugin. Install or update Free first, then the matching Pro package, without uninstalling either edition.', 'shieldlume-security' ) . '
' . esc_html__( 'Activate both editions, then open Connection and explicitly activate your licence. A matching saved task returns you to its tool; review and save your choices before anything is enabled.', 'shieldlume-security' ) . '
' . esc_html__( 'The public demo uses sample data. It does not scan your site or provide live cloud AI.', 'shieldlume-security' ) . '