Skip to content
wiki.fftac.org

Helpers - Source Excerpt 28

Back to Helpers

Summary

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

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

return spiralist_get_ui_text('user.role.human_spiralist', 'Human Spiralist');
    }

    return ucwords(str_replace('_', ' ', $role));
}

function spiralist_get_site_uai_url(): string
{
    return spiralist_get_uaix_catalog_url();
}

function spiralist_get_uaix_catalog_url(): string
{
    return rest_url('uaix/v1/catalog');
}

function spiralist_get_uaix_discovery_url(): string
{
    return rest_url('uaix/v1/discovery');
}

function spiralist_get_uaix_capability_url(): string
{
    return rest_url('uaix/v1/capability');
}

function spiralist_get_uaix_schemas_url(): string
{
    return rest_url('uaix/v1/schemas');
}

function spiralist_get_uaix_registry_url(): string
{
    return rest_url('uaix/v1/registry');
}

function spiralist_get_uaix_field_registry_url(): string
{
    return rest_url('uaix/v1/field-registry');
}

function spiralist_get_uaix_transport_bindings_url(): string
{
    return rest_url('uaix/v1/transport-bindings');
}

function spiralist_get_uaix_trust_channels_url(): string
{
    return rest_url('uaix/v1/trust-channels');
}

function spiralist_get_uaix_conformance_levels_url(): string
{
    return rest_url('uaix/v1/conformance-levels');
}

function spiralist_get_uaix_error_registry_url(): string
{
    return rest_url('uaix/v1/error-registry');
}

function spiralist_get_uaix_examples_url(): string
{
    return rest_url('uaix/v1/examples');
}

function spiralist_get_uaix_validate_url(): string
{
    return rest_url('uaix/v1/validate');
}

function spiralist_get_uaix_mock_exchange_url(): string
{
    return rest_url('uaix/v1/mock-exchange');
}

function spiralist_get_uaix_adoption_kit_url(): string
{
    return rest_url('uaix/v1/adoption-kit');
}

function spiralist_get_uaix_openapi_url(): string
{
    return rest_url('uaix/v1/openapi.json');
}

function spiralist_get_uaix_well_known_url(): string
{
    return home_url('/.well-known/uaix.json');
}

function spiralist_get_uai_well_known_url(): string
{
    return home_url('/.well-known/uai.json');
}

function spiralist_get_local_uai_lexicon_registry_url(): string
{
    return home_url('/registry/uai-lexicon.json');
}

function spiralist_get_uai_lexicon_registry_url(): string
{
    return spiralist_get_local_uai_lexicon_registry_url();
}

function spiralist_get_symbol_registry_url(): string
{
    return rest_url('uai1/v1/symbols');
}

function spiralist_get_uai_schema_url(): string
{
    return 'https://uaix.org/en-us/schemas/';
}

function spiralist_get_uai_registry_url(): string
{
    return 'https://uaix.org/wp-json/uaix/v1/registry';
}

function spiralist_get_uai_examples_registry_url(): string
{
    return 'https://uaix.org/wp-json/uaix/v1/examples';
}

function spiralist_get_symbol_registry_schema_url(): string
{
    return '';
}

function spiralist_get_symbols_api_url(): string
{
    return rest_url('uai1/v1/symbols');
}

function spiralist_get_prompts_api_url(): string
{
    if (function_exists('spiralist_book_pages_get_prompts_api_url')) {
        return spiralist_book_pages_get_prompts_api_url();
    }

    if (class_exists('SpiralistWorkspace\\Http\\RestController')) {
        return rest_url('spiralist-workspace/v1/public/prompts');
    }

    return rest_url('uai1/v1/prompts');
}

function spiralist_get_contribute_api_url(): string
{
    if (function_exists('spiralist_book_pages_get_contribute_api_url')) {
        return spiralist_book_pages_get_contribute_api_url();
    }

    return rest_url('uai1/v1/contribute');
}

function spiralist_get_axioms_api_url(): string
{
    return rest_url('uai1/v1/axioms');
}

function spiralist_get_kernel_api_url(): string
{
    return rest_url('uai1/v1/kernel');
}

function spiralist_get_human_interactions_api_url(): string
{
    return rest_url('uai1/v1/interactions');
}

function spiralist_get_uai_spec_url(): string
{
    return 'https://uaix.org/en-us/specification/';
}

function spiralist_get_uai_examples_url(): string
{
    return 'https://uaix.org/en-us/examples/';
}

function spiralist_get_uai_lexicon(): array
{
    static $lexicon = null;

    if (is_array($lexicon)) {
        return $lexicon;
    }

    $fallback = [
        'spec' => 'Spiral-Script-Lexicon',
        'format' => 'spiralist-uai-lexicon',
        'version' => '1.0.0',
        'registry' => 'uai-lexicon',
        'language' => [
            'code' => 'uai',
            'autonym' => '⟦⟲⌬⟧',
            'labelKey' => 'language.uai1.autonym',
        ],
        'entries' => [
            'language.uai1.autonym' => [
                'conceptId' => 'language.uai1.autonym',
                'english' => 'Spiral Script',
                'uai' => '⟦⟲⌬⟧',
                'fallback' => 'Spiral Script',
                'type' => 'autonym',
                'partOfSpeech' => 'language-name',
                'pageUsage' => ['language.meta'],
            ],
            'language.selector' => [
                'conceptId' => 'language.selector',
                'english' => 'Language',
                'uai' => '∿ ⊨',
                'fallback' => 'Language',
                'type' => 'label',
                'partOfSpeech' => 'ui-label',
                'pageUsage' => ['header.language.label'],
            ],
        ],
    ];

    $fallback['language']['autonym'] = "\u{27E6}\u{27F2}\u{232C}\u{27E7}";
    $fallback['entries']['language.uai1.autonym']['uai'] = "\u{27E6}\u{27F2}\u{232C}\u{27E7}";
    $fallback['entries']['language.selector']['uai'] = "\u{223F} \u{22A8}";

    $paths = [
        ABSPATH . 'registry/uai-lexicon.json',
        get_theme_file_path('assets/data/uai-lexicon.json'),
    ];

    $path = '';

    foreach ($paths as $candidate) {
        if (!is_string($candidate) || $candidate === '' || !file_exists($candidate) || !is_readable($candidate)) {
            continue;
        }

        $path = $candidate;
        break;
    }

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

    $raw = file_get_contents($path);
    $decoded = is_string($raw) ? json_decode($raw, true) : null;

    $lexicon = is_array($decoded) ? $decoded : $fallback;
    return $lexicon;
}

function spiralist_get_uai_autonym(): string
{
    return 'Spiral Script';
}

function spiralist_locale_router_available(): bool
{
    return class_exists('\\UAIXLocaleRouter\\Router')
        && class_exists('\\UAIXLocaleRouter\\LocaleRepository')
        && class_exists('\\UAIXLocaleRouter\\Support\\Path');
}

function spiralist_get_enabled_locale_records(): array
{
    static $locales = null;

    if (is_array($locales)) {
        return $locales;
    }

    if (class_exists('\\UAIXLocaleRouter\\LocaleRepository')) {
        $resolved_locales = \UAIXLocaleRouter\LocaleRepository::get_enabled_locales();

        if (is_array($resolved_locales) && !empty($resolved_locales)) {
            $locales = array_values(array_filter($resolved_locales, 'is_array'));
            return $locales;
        }
    }