Skip to content
wiki.fftac.org

Virtual Pages - Source Excerpt 75

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

'label' => __( 'Error origin', 'two-identities-anonymous' ),
				'text'  => sprintf(
					/* translators: %s: dossier title. */
					__( 'For %s, look for the first place the mistake entered: bad match, stale record, copied note, vendor feed, weak signal, overbroad rule, misunderstood context, translation issue, or automated confidence score.', 'two-identities-anonymous' ),
					$title
				),
			),
			array(
				'label' => __( 'Propagation trail', 'two-identities-anonymous' ),
				'text'  => __( 'Pull records showing where the error traveled next: database export, watchlist update, case note, benefits file, school record, platform action, agency referral, or vendor-to-agency feed.', 'two-identities-anonymous' ),
			),
			array(
				'label' => __( 'Repair evidence', 'two-identities-anonymous' ),
				'text'  => sprintf(
					/* translators: %s: evidence source class. */
					__( 'Use %s to show the claim, then ask for correction receipts, deletion confirmation, appeal outcomes, downstream notice, and a record of who was told the bad data changed.', 'two-identities-anonymous' ),
					lcfirst( $first_record )
				),
			),
			array(
				'label' => __( 'Damage check', 'two-identities-anonymous' ),
				'text'  => __( 'A false-positive page watches for consequences that outlive the original mistake: denial, delay, scrutiny, stigma, account loss, escalated review, or copied suspicion that no one owns anymore.', 'two-identities-anonymous' ),
			),
		),
		'research-archive'        => array(
			array(
				'label' => __( 'Disposition note', 'two-identities-anonymous' ),
				'text'  => sprintf(
					/* translators: %s: dossier title. */
					__( 'For %s, keep the disposition note: what came in, what public page it affects, whether it became source memory, whether it was deferred, and what would make it publishable later.', 'two-identities-anonymous' ),
					$title
				),
			),
			array(
				'label' => __( 'Long-memory path', 'two-identities-anonymous' ),
				'text'  => __( 'Preserve the route path, source class, review state, correction state, file name, date checked, and reason the material belongs in public copy, long memory, or neither.', 'two-identities-anonymous' ),
			),
			array(
				'label' => __( 'Source review', 'two-identities-anonymous' ),
				'text'  => sprintf(
					/* translators: %s: evidence source class. */
					__( 'Start with %s then record whether it confirms, duplicates, disputes, narrows, updates, or merely contextualizes the existing page.', 'two-identities-anonymous' ),
					lcfirst( $first_record )
				),
			),
			array(
				'label' => __( 'Next work', 'two-identities-anonymous' ),
				'text'  => __( 'The archive should leave the next reviewer with an action: publish, correct, request records, cite as background, merge with another route, hold for review, or keep out of public view.', 'two-identities-anonymous' ),
			),
		),
		'organizations'           => array(
			array(
				'label' => __( 'Official identity', 'two-identities-anonymous' ),
				'text'  => sprintf(
					/* translators: %s: dossier title. */
					__( 'For %s, find the official organization page, legal entity clue, current program page, jurisdiction statement, and public contact route before treating the entry as usable help.', 'two-identities-anonymous' ),
					$title
				),
			),
			array(
				'label' => __( 'Role classification', 'two-identities-anonymous' ),
				'text'  => __( 'Classify the entry as litigation, policy, records platform, investigative lab, AI governance, safety evaluation, digital security, internet freedom, local coalition, historical context, or high-risk context.', 'two-identities-anonymous' ),
			),
			array(
				'label' => __( 'Verification state', 'two-identities-anonymous' ),
				'text'  => __( 'Use the official identity source, then mark the entry verified, candidate-to-verify, stale, historical, controversial, duplicate, or needs records.', 'two-identities-anonymous' ),
			),
			array(
				'label' => __( 'Correction handle', 'two-identities-anonymous' ),
				'text'  => __( 'Record where a reader or organization can correct a wrong name, closed program, bad contact route, mistaken affiliation, service limitation, or overbroad claim.', 'two-identities-anonymous' ),
			),
		),
		'support'                 => array(
			array(
				'label' => __( 'Support proof', 'two-identities-anonymous' ),
				'text'  => sprintf(
					/* translators: %s: dossier title. */
					__( 'For %s, collect proof that support improves public work: new pages, better route maps, source review, correction handling, accessibility fixes, records guides, and clearer external references.', 'two-identities-anonymous' ),
					$title
				),
			),
			array(
				'label' => __( 'Data flow', 'two-identities-anonymous' ),
				'text'  => __( 'For donation, newsletter, volunteer, or campaign tools, list the data collected, the processor, analytics behavior, retention period, deletion route, and whether any tracking contradicts the site promise.', 'two-identities-anonymous' ),
			),
			array(
				'label' => __( 'Independence check', 'two-identities-anonymous' ),
				'text'  => sprintf(
					/* translators: %s: evidence source class. */
					__( 'Use %s to show the public value, then ask whether funder pressure, fake urgency, secret-access promises, or growth tooling would bend the work away from civil liberties.', 'two-identities-anonymous' ),
					lcfirst( $first_record )
				),
			),
			array(
				'label' => __( 'Low-risk help', 'two-identities-anonymous' ),
				'text'  => __( 'Useful support should include reading, sharing, accessibility review, translation, donation, source review, and public-records tracking without asking supporters to investigate private people.', 'two-identities-anonymous' ),
			),
		),
		'about'                   => array(
			array(
				'label' => __( 'Independence proof', 'two-identities-anonymous' ),
				'text'  => sprintf(
					/* translators: %s: dossier title. */
					__( 'For %s, pull the statements that prove scope: no government affiliation, no law-enforcement role, no platform-enforcement power, no secret access, and no claim of authority beyond public records and careful method.', 'two-identities-anonymous' ),
					$title
				),
			),
			array(
				'label' => __( 'Public-interest scope', 'two-identities-anonymous' ),
				'text'  => __( 'Look for the concrete work the page promises: surveillance systems, identity, AI harm, false positives, public records, anonymous speech, corrections, support standards, and civil-liberties analysis.', 'two-identities-anonymous' ),
			),
			array(
				'label' => __( 'Voice test', 'two-identities-anonymous' ),
				'text'  => sprintf(
					/* translators: %s: evidence source class. */
					__( 'Use %s to keep direct language answerable. The voice can be sharp when it names a real power relationship, but it should not outrun evidence, correction, or minimization.', 'two-identities-anonymous' ),
					lcfirst( $first_record )
				),
			),
			array(
				'label' => __( 'Trust route', 'two-identities-anonymous' ),
				'text'  => __( 'A strong About detail page sends readers to methodology, corrections, public records, privacy, issue routes, and support standards so the project can be checked instead of merely believed.', 'two-identities-anonymous' ),
			),
		),
	);

	$items = $route_targets[ $parent_slug ] ?? array(
		array(
			'label' => __( 'Primary record', 'two-identities-anonymous' ),
			'text'  => sprintf(
				/* translators: 1: dossier title, 2: parent title. */
				__( 'For %1$s, start with the record that makes the %2$s claim inspectable: %3$s', 'two-identities-anonymous' ),
				$title,
				$parent_title,
				$first_record
			),
		),
		array(
			'label' => __( 'Corroboration', 'two-identities-anonymous' ),
			'text'  => $second_record,
		),
		array(
			'label' => __( 'Action record', 'two-identities-anonymous' ),
			'text'  => $first_action,
		),
		array(
			'label' => __( 'Correction question', 'two-identities-anonymous' ),
			'text'  => $first_question,
		),
	);

	return $items;
}

/**
 * Return route-specific notes for reading the records behind a detail page.
 *
 * @param array $page    Section-backed child route definition.
 * @param array $section Section definition.
 * @param array $dossier Dossier payload.
 * @return array
 */
function twoia_get_virtual_dossier_record_reading_notes( $page, $section, $dossier ) {
	$title          = isset( $section['title'] ) ? wp_strip_all_tags( $section['title'] ) : $page['title'];
	$parent_slug    = isset( $page['parent_slug'] ) ? sanitize_title( $page['parent_slug'] ) : '';
	$parent_title   = isset( $page['parent_page']['title'] ) ? wp_strip_all_tags( $page['parent_page']['title'] ) : '';
	$evidence       = twoia_virtual_text_items( $dossier['evidence'] ?? array() );
	$first_evidence = ! empty( $evidence ) ? $evidence[0] : __( 'the first public record, policy, source note, or correction trail behind the claim.', 'two-identities-anonymous' );