Skip to content
wiki.fftac.org

Spiralist Footer - Source Excerpt 01

Back to Spiralist Footer

Summary

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

**Source path:** Spiralist/wp-content/themes/spiralist/footer.php

<?php

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

$current_locale = function_exists('spiralist_get_current_locale_tag') ? spiralist_get_current_locale_tag() : 'en-us';
$language_url = static function (string $url) use ($current_locale): string {
    return function_exists('spiralist_get_language_prefixed_url')
        ? spiralist_get_language_prefixed_url($url, $current_locale)
        : $url;
};
$render_ui_label = static function (string $key, string $fallback): string {
    return function_exists('spiralist_render_ui_label')
        ? spiralist_render_ui_label($key, $fallback)
        : esc_html($fallback);
};
$ui_text = static function (string $key, string $fallback): string {
    return function_exists('spiralist_get_ui_text')
        ? spiralist_get_ui_text($key, $fallback)
        : $fallback;
};
$localize_links = static function (array $items) use ($language_url): array {
    return array_values(array_filter(array_map(
        static function (array $item) use ($language_url): array {
            if (!empty($item['url']) && is_string($item['url'])) {
                $item['url'] = $language_url($item['url']);
            }

            return $item;
        },
        $items
    ), static function (array $item): bool {
        return !empty($item['url']) && is_string($item['url']);
    }));
};

$publication_context = function_exists('spiralist_get_current_publication_context')
    ? spiralist_get_current_publication_context()
    : [];

if (empty($publication_context) && function_exists('spiralist_get_publication_context')) {
    $publication_context = spiralist_get_publication_context(
        null,
        [
            'home' => true,
            'language' => $current_locale,
        ]
    );
}

$publication_links = array_values(array_filter([
    [
        'labelKey' => 'ui.publication.human_surface',
        'label' => 'Human Surface',
        'url' => (string) ($publication_context['humanUrl'] ?? ''),
    ],
], static function (array $item): bool {
    return $item['url'] !== '';
}));

$publication_inspector = function_exists('spiralist_get_publication_inspector_payload')
    ? spiralist_get_publication_inspector_payload(
        $publication_context['post'] ?? null,
        [
            'home' => !empty($publication_context['isHome']),
            'language' => (string) ($publication_context['language'] ?? $current_locale),
        ]
    )
    : [];

$privacy_policy_url = function_exists('get_privacy_policy_url') ? trim((string) get_privacy_policy_url()) : '';
if ($privacy_policy_url !== '') {
    $privacy_policy_url = $language_url($privacy_policy_url);
}

$footer_legal_links = function_exists('spiralist_get_footer_legal_links')
    ? $localize_links(spiralist_get_footer_legal_links())
    : [];

$participation_links = is_user_logged_in()
    ? $localize_links([
        [
            'labelKey' => 'ui.nav.dashboard',
            'label' => 'Dashboard',
            'url' => spiralist_get_dashboard_url(),
        ],
        [
            'labelKey' => 'ui.nav.account_settings',
            'label' => 'Account Settings',
            'url' => spiralist_get_account_settings_url(),
        ],
        [
            'label' => 'AI Access',
            'labelKey' => 'ui.nav.ai_access',
            'url' => spiralist_get_ai_access_url(),
        ],
    ])
    : $localize_links([
        [
            'labelKey' => 'ui.cta.become_spiralist',
            'label' => 'Sign Up',
            'url' => spiralist_get_signup_url(),
        ],
        [
            'labelKey' => 'ui.nav.login',
            'label' => 'Log In',
            'url' => spiralist_get_login_url(),
        ],
        [
            'labelKey' => 'ui.nav.ai_access',
            'label' => 'AI Access',
            'url' => spiralist_get_ai_access_url(),
        ],
    ]);

if (is_user_logged_in()) {
    $participation_links[] = [
        'labelKey' => 'ui.nav.log_out',
        'label' => 'Log Out',
        'url' => spiralist_get_logout_url(),
    ];
}

$human_link_groups = [
    [
        'titleKey' => 'footer.group.site',
        'title' => 'Site',
        'links' => $localize_links([
            ['labelKey' => 'ui.nav.home', 'label' => 'Home', 'url' => home_url('/')],
            ['labelKey' => 'ui.nav.study_surface', 'label' => 'Study Surface', 'url' => function_exists('spiralist_get_study_page_url') ? spiralist_get_study_page_url() : home_url('/study/')],
            ['labelKey' => 'ui.nav.manuscript', 'label' => 'Manuscript', 'url' => spiralist_get_manuscript_page_url()],
            ['labelKey' => 'ui.nav.gallery', 'label' => 'Image Codex', 'url' => spiralist_get_gallery_page_url()],
            ['labelKey' => 'ui.nav.contact', 'label' => 'Contact', 'url' => home_url('/contact/')],
        ]),
    ],
    [
        'titleKey' => 'footer.group.practice',
        'title' => 'Practice',
        'links' => $localize_links([
            ['labelKey' => 'ui.cta.run_prompt', 'label' => 'Build a Prompt', 'url' => function_exists('spiralist_get_run_prompt_page_url') ? spiralist_get_run_prompt_page_url() : home_url('/prompt-generator/')],
            ['labelKey' => 'ui.nav.ai_agent_setup_wizard', 'label' => 'Agent Setup Wizard', 'url' => function_exists('spiralist_get_ai_agent_setup_wizard_url') ? spiralist_get_ai_agent_setup_wizard_url() : home_url('/ai-agent-setup-wizard/')],
            ['labelKey' => 'ui.nav.prompts', 'label' => 'Prompt Library', 'url' => spiralist_get_prompts_page_url()],
            ['labelKey' => 'ui.cta.open_workspace', 'label' => 'Open Workspace', 'url' => spiralist_get_workspace_url()],
        ]),
    ],
    [
        'titleKey' => 'footer.group.reference',
        'title' => 'Reference',
        'links' => $localize_links([
            ['labelKey' => 'ui.nav.system', 'label' => 'System', 'url' => spiralist_get_system_url()],
            ['labelKey' => 'ui.nav.ai_spiralism', 'label' => 'AI Spiralism', 'url' => function_exists('spiralist_get_ai_spiralism_url') ? spiralist_get_ai_spiralism_url() : home_url('/ai-spiralism/')],
            ['labelKey' => 'ui.nav.symbols', 'label' => 'Symbols', 'url' => spiralist_get_symbols_page_url()],
            ['labelKey' => 'ui.nav.reports', 'label' => 'Reports', 'url' => function_exists('spiralist_get_reports_url') ? spiralist_get_reports_url() : home_url('/reports/')],
        ]),
    ],
    [
        'titleKey' => 'footer.group.account',
        'title' => 'Account',
        'links' => $participation_links,
    ],
];

$machine_link_groups = [
    [
        'titleKey' => 'footer.group.page_formats',
        'title' => 'Page Formats',
        'links' => $publication_links,
    ],
    [
        'titleKey' => 'footer.group.site_apis',
        'title' => 'Site APIs',
        'links' => array_values(array_filter([
            [
                'labelKey' => 'ui.nav.builder_hub',
                'label' => 'Builder Hub',
                'url' => function_exists('spiralist_get_builders_page_url') ? spiralist_get_builders_page_url() : home_url('/builders/'),
            ],
            [
                'labelKey' => 'ui.api.examples',
                'label' => 'API Examples',
                'url' => function_exists('spiralist_get_api_examples_url') ? spiralist_get_api_examples_url() : '',
            ],
            [
                'labelKey' => 'ui.api.ai_manifest',
                'label' => 'AI Manifest',
                'url' => home_url('/ai.json'),
            ],
            [
                'labelKey' => 'ui.api.ai_route_manifest',
                'label' => 'AI Route Manifest',
                'url' => home_url('/ai-router.json'),
            ],
            [
                'labelKey' => 'ui.api.persona_manifest',
                'label' => 'Persona Manifest',
                'url' => home_url('/persona-manifest.json'),
            ],
            [
                'labelKey' => 'ui.api.safety_boundaries',
                'label' => 'Safety Boundaries',
                'url' => home_url('/safety-boundaries.json'),
            ],
            [
                'labelKey' => 'ui.api.site_machine_document',
                'label' => 'Site Machine Document',
                'url' => spiralist_get_site_uai_url(),
            ],
            [
                'labelKey' => 'ui.api.symbol_api',
                'label' => 'Symbol API',
                'url' => spiralist_get_symbols_api_url(),
            ],
            [
                'labelKey' => 'ui.api.prompts_api',
                'label' => 'Prompts API',
                'url' => spiralist_get_prompts_api_url(),
            ],
            [
                'labelKey' => 'ui.api.axioms_api',
                'label' => 'Axioms API',
                'url' => spiralist_get_axioms_api_url(),
            ],
            [
                'labelKey' => 'ui.api.kernel_api',