Skip to content
wiki.fftac.org

Virtual Pages - Source Excerpt 39

Back to Virtual Pages

Summary

This source excerpt preserves a bounded section of 2IA.org/wp-content/themes/twoia-intelligence/inc/virtual-pages.php so readers can inspect the evidence without opening the full source file.

**Source path:** 2IA.org/wp-content/themes/twoia-intelligence/inc/virtual-pages.php

switch ( $slug ) {
		case 'start-here':
			twoia_render_start_here_portal();
			return true;
		case 'issues':
			twoia_render_issues_portal();
			return true;
		case 'research':
			twoia_render_research_portal();
			return true;
		case 'resources':
			twoia_render_resources_portal();
			return true;
		case 'organizations':
			twoia_render_organizations_portal();
			return true;
		case 'methodology':
			twoia_render_methodology_portal();
			return true;
		case 'about':
			twoia_render_about_portal();
			return true;
		case 'support':
			twoia_render_support_portal();
			return true;
		case 'lexicon':
			twoia_render_lexicon_portal();
			return true;
	}

	return false;
}

/**
 * Render compact link cards.
 *
 * @param array  $cards Card definitions.
 * @param string $class Extra class.
 */
function twoia_render_ia_cards( $cards, $class = '' ) {
	$classes = 'twoia-dossier-grid twoia-ia-grid';
	if ( $class ) {
		$classes .= ' ' . sanitize_html_class( $class );
	}
	?>
	<div class="<?php echo esc_attr( $classes ); ?>">
		<?php foreach ( $cards as $card ) : ?>
			<?php $tag = ! empty( $card['url'] ) ? 'a' : 'article'; ?>
			<<?php echo esc_html( $tag ); ?> class="briefing-panel briefing-panel--compact twoia-dossier-card<?php echo ! empty( $card['url'] ) ? ' twoia-dossier-card--link' : ''; ?>"<?php echo ! empty( $card['url'] ) ? ' href="' . esc_url( $card['url'] ) . '"' : ''; ?>>
				<?php if ( ! empty( $card['label'] ) ) : ?>
					<span class="metadata-label"><?php echo esc_html( $card['label'] ); ?></span>
				<?php endif; ?>
				<h3><?php echo esc_html( $card['title'] ); ?></h3>
				<p><?php echo esc_html( $card['body'] ); ?></p>
				<?php if ( ! empty( $card['meta'] ) ) : ?>
					<p><strong><?php echo esc_html( $card['meta'] ); ?></strong></p>
				<?php endif; ?>
			</<?php echo esc_html( $tag ); ?>>
		<?php endforeach; ?>
	</div>
	<?php
}

/**
 * Start Here path cards.
 *
 * @return array
 */
function twoia_start_here_path_cards() {
	return array(
		array(
			'title' => __( 'I want to understand the issues', 'two-identities-anonymous' ),
			'body'  => __( 'Start with the permanent map of surveillance, metadata, AI scoring, records access, anonymity, press freedom, due process, influence, intelligence power, and domestic weaponization.', 'two-identities-anonymous' ),
			'url'   => home_url( '/issues/' ),
			'meta'  => __( 'Go to Issues', 'two-identities-anonymous' ),
		),
		array(
			'title' => __( 'I want to read investigations and analysis', 'two-identities-anonymous' ),
			'body'  => __( 'Use Research for investigations, case studies, historical analysis, policy work, intelligence-apparatus research, public-records files, and updates.', 'two-identities-anonymous' ),
			'url'   => home_url( '/research/' ),
			'meta'  => __( 'Go to Research', 'two-identities-anonymous' ),
		),
		array(
			'title' => __( 'I need practical resources or templates', 'two-identities-anonymous' ),
			'body'  => __( 'Use Resources for records requests, copy-ready language, checklists, OSINT literacy, glossary entries, and defensive privacy habits.', 'two-identities-anonymous' ),
			'url'   => home_url( '/resources/' ),
			'meta'  => __( 'Go to Resources', 'two-identities-anonymous' ),
		),
		array(
			'title' => __( 'I’m looking for organizations fighting for civil liberties', 'two-identities-anonymous' ),
			'body'  => __( 'Use the directory to find civil-liberties, digital-rights, press-freedom, privacy, public-records, investigative, and accountability organizations by role and issue.', 'two-identities-anonymous' ),
			'url'   => home_url( '/organizations/' ),
			'meta'  => __( 'Go to Organizations', 'two-identities-anonymous' ),
		),
		array(
			'title' => __( 'I want to understand how 2IA verifies claims', 'two-identities-anonymous' ),
			'body'  => __( 'Read the evidence ladder, source classes, confidence labels, AI-use disclosure, corrections policy, right-of-reply process, and minimization posture.', 'two-identities-anonymous' ),
			'url'   => home_url( '/methodology/' ),
			'meta'  => __( 'Go to Methodology', 'two-identities-anonymous' ),
		),
		array(
			'title' => __( 'I want to support or volunteer', 'two-identities-anonymous' ),
			'body'  => __( 'Support funds research, records work, document review, infrastructure, resources, and directory maintenance without betraying the low-data promise.', 'two-identities-anonymous' ),
			'url'   => home_url( '/support/' ),
			'meta'  => __( 'Go to Support', 'two-identities-anonymous' ),
		),
	);
}

/**
 * Render the Start Here page.
 */
function twoia_render_start_here_portal() {
	?>
	<section class="section section--compact twoia-ia-section" aria-labelledby="twoia-start-direct-title">
		<header class="section-header">
			<p class="eyebrow"><?php esc_html_e( 'Direct orientation', 'two-identities-anonymous' ); ?></p>
			<h2 id="twoia-start-direct-title"><?php esc_html_e( 'What 2IA is for', 'two-identities-anonymous' ); ?></h2>
			<p><?php esc_html_e( '2IA helps readers turn unease about surveillance, institutional secrecy, AI flags, anonymous speech, public records, and intelligence power into a sharper question, a document trail, and a lawful next move.', 'two-identities-anonymous' ); ?></p>
		</header>
		<?php twoia_render_ia_cards( twoia_start_here_path_cards(), 'twoia-path-grid' ); ?>
	</section>

	<?php get_template_part( 'template-parts/section', 'who-cares-wizard' ); ?>

	<section class="section section--compact twoia-ia-section" aria-labelledby="twoia-start-covers-title">
		<header class="section-header">
			<p class="eyebrow"><?php esc_html_e( 'Coverage map', 'two-identities-anonymous' ); ?></p>
			<h2 id="twoia-start-covers-title"><?php esc_html_e( 'What 2IA covers', 'two-identities-anonymous' ); ?></h2>
		</header>
		<?php
		twoia_render_ia_cards(
			array(
				array( 'title' => __( 'Surveillance and metadata', 'two-identities-anonymous' ), 'body' => __( 'Systems that collect, retain, correlate, search, sell, or score people through devices, accounts, location, transactions, relationships, and public-source context.', 'two-identities-anonymous' ) ),
				array( 'title' => __( 'AI flags and automated suspicion', 'two-identities-anonymous' ), 'body' => __( 'Risk scores, watchlists, classifiers, sentiment tools, fraud models, tenant screens, school monitoring, and systems that turn inference into consequence.', 'two-identities-anonymous' ) ),
				array( 'title' => __( 'Public records and FOIA', 'two-identities-anonymous' ), 'body' => __( 'Contracts, policies, budgets, audits, training, complaint logs, appeal letters, procurement files, court records, and the slow paperwork of accountability.', 'two-identities-anonymous' ) ),
				array( 'title' => __( 'OSINT, SIGINT, and intelligence history', 'two-identities-anonymous' ), 'body' => __( 'Public-source verification, signals infrastructure at an analytical level, declassified records, proxy networks, soft power, information operations, and the history of intelligence institutions.', 'two-identities-anonymous' ) ),
				array( 'title' => __( 'Anonymity, press freedom, and civil liberties', 'two-identities-anonymous' ), 'body' => __( 'The right to read, write, organize, research, report, worship, recover, and dissent without automatic profiling or exposure by default.', 'two-identities-anonymous' ) ),
				array( 'title' => __( 'Domestic weaponization and due process', 'two-identities-anonymous' ), 'body' => __( 'How security systems can be turned inward against dissent, journalists, researchers, minorities, political opponents, and ordinary people trapped by opaque files.', 'two-identities-anonymous' ) ),
			)
		);
		?>
	</section>