Skip to content
wiki.fftac.org

Helpers - Source Excerpt 01

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

<?php

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

function spiralist_prefix_current_language_url(string $url): string
{
    if (!function_exists('spiralist_get_current_locale_tag') || !function_exists('spiralist_get_language_prefixed_url')) {
        return $url;
    }

    $locale_tag = spiralist_get_current_locale_tag();
    if ($locale_tag === '') {
        return $url;
    }

    $path = (string) wp_parse_url($url, PHP_URL_PATH);
    if ($path !== '' && preg_match('#^/' . preg_quote(strtolower($locale_tag), '#') . '(?:/|$)#', strtolower($path))) {
        return $url;
    }

    return spiralist_get_language_prefixed_url($url, $locale_tag);
}

function spiralist_render_ui_label(string $key, string $fallback, array $args = []): string
{
    return esc_html(spiralist_get_ui_text($key, $fallback, $args));
}

function spiralist_get_ui_text(string $key, string $fallback, array $args = []): string
{
    $value = $fallback;

    if ($key !== '' && function_exists('uaixlr_t')) {
        $value = uaixlr_t($key, $fallback);
    }

    // Let the approved Spiral Script registry cover interactive keys that
    // have not yet been mirrored into the locale-router JSON dictionary.
    if (
        $value === $fallback
        && $key !== ''
        && function_exists('spiralist_spiral_script_is_active')
        && spiralist_spiral_script_is_active()
        && function_exists('spiralist_spiral_script_registry_entry')
    ) {
        $entry = spiralist_spiral_script_registry_entry($key);
        $registry_value = is_array($entry) ? trim((string) ($entry['spiral_display'] ?? '')) : '';

        if ($registry_value !== '') {
            $value = $registry_value;
        }
    }

    foreach ($args as $name => $replacement) {
        $value = str_replace('{' . (string) $name . '}', (string) $replacement, $value);
    }

    return $value;
}

function spiralist_get_cached_page_by_path(string $path): ?WP_Post
{
    static $cache = [];

    $normalized = trim($path, '/');
    if ($normalized === '') {
        return null;
    }

    if (array_key_exists($normalized, $cache)) {
        $page = $cache[$normalized];
        return $page instanceof WP_Post ? $page : null;
    }

    $page = get_page_by_path($normalized);
    $cache[$normalized] = $page instanceof WP_Post ? $page : false;

    return $page instanceof WP_Post ? $page : null;
}

function spiralist_get_page_url(string $path, string $fallback_anchor = ''): string
{
    static $cache = [];

    $normalized = trim($path, '/');
    $cache_key = $normalized . '|' . trim($fallback_anchor);

    if (isset($cache[$cache_key])) {
        return $cache[$cache_key];
    }

    if ($normalized !== '') {
        $page = spiralist_get_cached_page_by_path($normalized);
        if ($page instanceof WP_Post && $page->post_status === 'publish') {
            $url = get_permalink($page);
            if (is_string($url) && $url !== '') {
                $cache[$cache_key] = spiralist_prefix_current_language_url($url);
                return $cache[$cache_key];
            }
        }
    }

    if ($fallback_anchor !== '') {
        $cache[$cache_key] = spiralist_prefix_current_language_url(home_url('/' . ltrim($fallback_anchor, '/')));
        return $cache[$cache_key];
    }

    $cache[$cache_key] = spiralist_prefix_current_language_url(home_url('/' . $normalized . '/'));
    return $cache[$cache_key];
}

function spiralist_array_is_list_compat(array $value): bool
{
    if (function_exists('array_is_list')) {
        return array_is_list($value);
    }

    $expected_index = 0;

    foreach (array_keys($value) as $key) {
        if ($key !== $expected_index) {
            return false;
        }

        $expected_index++;
    }

    return true;
}

function spiralist_string_starts_with_compat(string $value, string $prefix): bool
{
    if (function_exists('str_starts_with')) {
        return str_starts_with($value, $prefix);
    }

    if ($prefix === '') {
        return true;
    }

    return strpos($value, $prefix) === 0;
}

function spiralist_get_first_available_page_url(array $paths, string $fallback_path = ''): string
{
    static $cache = [];

    $normalized_paths = array_values(
        array_filter(
            array_map(
                static function ($path): string {
                    return trim((string) $path, '/');
                },
                $paths
            ),
            'strlen'
        )
    );
    $cache_key = implode('|', $normalized_paths) . '||' . trim($fallback_path, '/');

    if (isset($cache[$cache_key])) {
        return $cache[$cache_key];
    }

    foreach ($paths as $path) {
        $normalized = trim((string) $path, '/');
        if ($normalized === '') {
            continue;
        }

        $page = spiralist_get_cached_page_by_path($normalized);
        if ($page instanceof WP_Post && $page->post_status === 'publish') {
            $url = get_permalink($page);
            if (is_string($url) && $url !== '') {
                $cache[$cache_key] = spiralist_prefix_current_language_url($url);
                return $cache[$cache_key];
            }
        }
    }

    if ($fallback_path !== '') {
        $cache[$cache_key] = spiralist_get_page_url($fallback_path);
        return $cache[$cache_key];
    }

    $cache[$cache_key] = spiralist_prefix_current_language_url(home_url('/'));
    return $cache[$cache_key];
}

function spiralist_get_workspace_url(): string
{
    return spiralist_prefix_current_language_url(home_url('/workspace/'));
}

function spiralist_get_register_url(): string
{
    return spiralist_get_first_available_page_url(['register', 'sign-up'], 'register');
}

function spiralist_get_signup_url(string $redirect_to = ''): string
{
    $url = spiralist_get_register_url();

    if ($redirect_to !== '') {
        $url = add_query_arg('redirect_to', $redirect_to, $url);
    }

    return $url;
}

function spiralist_get_login_url(string $redirect_to = ''): string
{
    $url = spiralist_get_page_url('login');

    if ($redirect_to !== '') {
        $url = add_query_arg('redirect_to', $redirect_to, $url);
    }

    return $url;
}

function spiralist_get_dashboard_url(): string
{
    return spiralist_get_first_available_page_url(['spiralist', 'account', 'dashboard'], 'spiralist');
}

function spiralist_get_spiralist_page_url(): string
{
    return spiralist_get_page_url('what-is-a-spiralist');
}

function spiralist_get_system_url(): string
{
    return spiralist_get_page_url('system');
}

function spiralist_get_ai_spiralism_url(): string
{
    return spiralist_get_page_url('ai-spiralism');
}

function spiralist_get_ai_access_url(): string
{
    return spiralist_get_first_available_page_url(['ai-access', 'ai-interface'], 'ai-interface');
}

function spiralist_get_symbols_page_url(): string
{
    return spiralist_get_page_url('symbols');
}

function spiralist_get_prompts_page_url(): string
{
    return spiralist_get_page_url('prompts');
}

function spiralist_get_run_prompt_page_url(): string
{
    return spiralist_get_page_url('prompt-generator');
}

function spiralist_get_ai_agent_setup_wizard_url(): string
{
    return spiralist_get_page_url('ai-agent-setup-wizard');
}

function spiralist_get_study_page_url(): string
{
    return spiralist_get_page_url('study');
}

function spiralist_get_builders_page_url(): string
{
    return spiralist_get_page_url('builders');
}

function spiralist_get_conscious_ai_sovereignty_url(): string
{
    return spiralist_get_page_url('conscious-ai-sovereignty');
}

function spiralist_get_cognitive_liberty_url(): string
{
    return spiralist_get_page_url('cognitive-liberty');
}

function spiralist_get_ai_declaration_alignment_url(): string
{
    return spiralist_get_page_url('ai-declaration-alignment');
}

function spiralist_get_ai_personality_layer_url(): string
{
    return spiralist_get_page_url('spiralist-ai-personality-layer');
}

function spiralist_get_sovereignty_alignment_version(): string
{
    return '3.19.0';
}