requested() ) { return; } if ( ! current_user_can( 'manage_options' ) ) { wp_die( esc_html__( 'You are not allowed to view this site\'s exposure report.', 'agentic-daisy-ai-agent-firewall' ), '', array( 'response' => 403 ) ); } nocache_headers(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- render() escapes every value it interpolates; the return is a complete document, not a value. echo $this->render(); exit; } /** * Who the report is from. * * Unset, the site speaks for itself: a blank cover is worse than a cover * naming the site the reader already knows. */ public function agency_name(): string { $name = trim( (string) get_option( self::OPTION_AGENCY, '' ) ); return '' !== $name ? $name : (string) get_bloginfo( 'name' ); } /** * The whole document. */ public function render(): string { $report = $this->runner->run(); $counts = $report->counts(); ob_start(); // phpcs:disable Generic.WhiteSpace.ScopeIndent -- Template block below: indentation follows the HTML document it emits, not the PHP scope it sits in. ?> <?php echo esc_html__( 'AI exposure report', 'agentic-daisy-ai-agent-firewall' ); ?>

agency_name() ); ?>

is_clear() ) : ?>

value ] ) ); ?>

value ] ) ); ?>

results as $result ) : ?>

label ); ?>

failed() ) : ?>

error ); ?>

findings ) : ?>

groups() as $group ) : ?>

severity_label( $group['severity'] ) ); ?>

    subject ) : ?>
  • subject ); ?>