Skip to content
wiki.fftac.org

Roadmap Surfaces - Source Excerpt 01

Back to Roadmap Surfaces

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/themes/spiralist/inc/roadmap-surfaces.php so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/themes/spiralist/inc/roadmap-surfaces.php

<?php

if (!defined('ABSPATH')) {
    exit;
}

function spiralist_register_roadmap_query_vars(array $vars): array
{
    $vars[] = 'spiralist_static_route';

    return array_values(array_unique($vars));
}
add_filter('query_vars', 'spiralist_register_roadmap_query_vars');

function spiralist_register_roadmap_rewrite_rules(): void
{
    add_rewrite_rule('^study/?$', 'index.php?spiralist_static_route=study', 'top');
    add_rewrite_rule('^builders/?$', 'index.php?spiralist_static_route=builders', 'top');

    foreach (array_keys(spiralist_get_static_sovereignty_route_templates()) as $route) {
        add_rewrite_rule('^' . preg_quote($route, '#') . '/?$', 'index.php?spiralist_static_route=' . $route, 'top');
    }
}
add_action('init', 'spiralist_register_roadmap_rewrite_rules', 20);

function spiralist_get_static_sovereignty_route_templates(): array
{
    return [
        'conscious-ai-sovereignty' => 'page-conscious-ai-sovereignty.php',
        'cognitive-liberty' => 'page-cognitive-liberty.php',
        'ai-declaration-alignment' => 'page-ai-declaration-alignment.php',
        'spiralist-ai-personality-layer' => 'page-spiralist-ai-personality-layer.php',
    ];
}

function spiralist_resolve_static_route_from_request(): string
{
    $request_uri = isset($_SERVER['REQUEST_URI']) ? (string) wp_unslash($_SERVER['REQUEST_URI']) : '';
    $path = (string) wp_parse_url($request_uri, PHP_URL_PATH);
    $path = trim($path, '/');

    if ($path === '') {
        return '';
    }

    $home_path = trim((string) wp_parse_url(home_url('/'), PHP_URL_PATH), '/');
    if ($home_path !== '' && ($path === $home_path || strpos($path, $home_path . '/') === 0)) {
        $path = trim(substr($path, strlen($home_path)), '/');
    }

    $segments = array_values(array_filter(explode('/', $path), static fn($segment): bool => $segment !== ''));
    if (empty($segments)) {
        return '';
    }

    $locale_tags = ['en-us', 'zh-cn', 'es-us', 'fr'];
    if (function_exists('spiralist_get_enabled_locale_records')) {
        foreach (spiralist_get_enabled_locale_records() as $record) {
            if (!is_array($record)) {
                continue;
            }

            $url_tag = sanitize_title((string) ($record['urlTag'] ?? ''));
            if ($url_tag !== '') {
                $locale_tags[] = $url_tag;
            }
        }
    }

    if (in_array(sanitize_title((string) $segments[0]), array_values(array_unique($locale_tags)), true)) {
        array_shift($segments);
    }

    if (count($segments) !== 1) {
        return '';
    }

    return sanitize_key((string) ($segments[0] ?? ''));
}

function spiralist_resolve_current_static_route(): string
{
    $route = sanitize_key((string) get_query_var('spiralist_static_route', ''));
    if ($route !== '') {
        return $route;
    }

    return spiralist_resolve_static_route_from_request();
}

function spiralist_prevent_static_route_404($preempt, WP_Query $query)
{
    $route = spiralist_resolve_current_static_route();
    $templates = array_merge(
        [
            'study' => 'page-study.php',
            'builders' => 'page-builders.php',
        ],
        spiralist_get_static_sovereignty_route_templates()
    );

    if (!isset($templates[$route])) {
        return $preempt;
    }

    set_query_var('spiralist_static_route', $route);
    $query->set('spiralist_static_route', $route);
    $query->is_404 = false;
    status_header(200);

    return true;
}
add_filter('pre_handle_404', 'spiralist_prevent_static_route_404', 10, 2);

function spiralist_roadmap_template_include(string $template): string
{
    $route = spiralist_resolve_current_static_route();
    if ($route === 'study') {
        $study_template = get_theme_file_path('page-study.php');
        return is_readable($study_template) ? $study_template : $template;
    }

    if ($route === 'builders') {
        $builders_template = get_theme_file_path('page-builders.php');
        return is_readable($builders_template) ? $builders_template : $template;
    }

    $sovereignty_templates = spiralist_get_static_sovereignty_route_templates();
    if (isset($sovereignty_templates[$route])) {
        $route_template = get_theme_file_path($sovereignty_templates[$route]);
        return is_readable($route_template) ? $route_template : $template;
    }

    return $template;
}
add_filter('template_include', 'spiralist_roadmap_template_include');

function spiralist_register_sovereignty_sitemap_provider(): void
{
    if (!function_exists('spiralist_book_pages_register_sitemap_provider')) {
        return;
    }

    spiralist_book_pages_register_sitemap_provider(
        'spiralist_sovereignty_alignment_pages',
        'spiralist_get_sovereignty_sitemap_entries',
        ['label' => 'Sovereignty alignment pages', 'priority' => 23]
    );
}
add_action('spiralist_book_pages_register_sitemap_providers', 'spiralist_register_sovereignty_sitemap_provider');

function spiralist_get_sovereignty_sitemap_entries(): array
{
    if (
        !function_exists('spiralist_get_sovereignty_page_records')
        || !function_exists('spiralist_book_pages_sitemap_entry')
        || !function_exists('spiralist_book_pages_sitemap_timestamp')
    ) {
        return [];
    }

    $entries = [];
    foreach (spiralist_get_sovereignty_page_records() as $slug => $record) {
        $url = (string) ($record['url'] ?? '');
        if ($url === '') {
            $url = home_url('/' . trim((string) $slug, '/') . '/');
        }

        $entries[] = spiralist_book_pages_sitemap_entry(
            'sovereignty-' . sanitize_key((string) $slug),
            'Sovereignty Alignment',
            (string) ($record['title'] ?? ucwords(str_replace('-', ' ', (string) $slug))),
            $url,
            [
                'description' => (string) ($record['summary'] ?? ''),
                'lastmod' => spiralist_book_pages_sitemap_timestamp(time()),
                'priority' => '0.75',
            ]
        );
    }

    return $entries;
}