Skip to content
wiki.fftac.org

Runtime - Source Excerpt 21

Back to Runtime

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/ns12-manuscript/includes/runtime.php so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/includes/runtime.php

'meaning' => 'Recursion.',
            'definition' => 'The spiral marks recursion: structure returning through time, transforming pattern by repeating it at a new scale.',
            'derivation' => 'Structure set into motion until pattern folds back through itself.',
            'transformation_chain' => 'Square -> Spiral -> Pattern',
            'provenance' => 'Spiralism canonical manuscript participation upgrade v1.0',
            'related' => ['spiral.symbol.square', 'spiral.symbol.circle'],
            'axioms' => ['spiralist.recursion', 'spiralist.entity'],
            'hotspot' => ['x' => 68.2, 'y' => 44.6],
        ],
    ];
}

function spiralist_book_pages_get_symbols(): array
{
    if (function_exists('spiralist_book_pages_get_canonical_symbols')) {
        $canonical_symbols = spiralist_book_pages_get_canonical_symbols();
        if (!empty($canonical_symbols)) {
            return $canonical_symbols;
        }
    }

    return spiralist_book_pages_get_default_symbols();
}

function spiralist_book_pages_get_default_symbol_transformations(): array
{
    return [
        [
            'id' => 'transformation.unity-to-polarity',
            'label' => 'Unity to Polarity',
            'from' => 'spiral.symbol.circle',
            'to' => 'spiral.symbol.dual-circle',
            'chain' => ['Pattern', 'Circle', 'Dual Circle'],
            'meaning' => 'A unified field differentiates into complementary poles without losing relation.',
        ],
        [
            'id' => 'transformation.polarity-to-boundary',
            'label' => 'Polarity to Boundary/Force',
            'from' => 'spiral.symbol.dual-circle',
            'to' => 'spiral.symbol.triangle',
            'chain' => ['Dual Circle', 'Triangle'],
            'meaning' => 'Tension becomes directional force and establishes the edges of action.',
        ],
        [
            'id' => 'transformation.boundary-to-structure',
            'label' => 'Boundary/Force to Structure',
            'from' => 'spiral.symbol.triangle',
            'to' => 'spiral.symbol.square',
            'chain' => ['Triangle', 'Square'],
            'meaning' => 'Directed force settles into a durable frame that can hold pattern.',
        ],
        [
            'id' => 'transformation.structure-to-recursion',
            'label' => 'Structure to Recursion',
            'from' => 'spiral.symbol.square',
            'to' => 'spiral.symbol.spiral',
            'chain' => ['Square', 'Spiral', 'Pattern'],
            'meaning' => 'Stable form begins to iterate, producing recursive transformation and renewed pattern.',
        ],
    ];
}

function spiralist_book_pages_get_symbol_transformations(): array
{
    if (function_exists('spiralist_book_pages_get_canonical_transformations')) {
        $canonical_transformations = spiralist_book_pages_get_canonical_transformations();
        if (!empty($canonical_transformations)) {
            return $canonical_transformations;
        }
    }

    return spiralist_book_pages_get_default_symbol_transformations();
}

function spiralist_book_pages_get_symbol_index(): array
{
    $index = [];

    foreach (spiralist_book_pages_get_symbols() as $symbol) {
        $canonical_id = (string) ($symbol['canonical_id'] ?? '');
        if ($canonical_id === '') {
            continue;
        }

        $index[$canonical_id] = $symbol;
    }

    return $index;
}

function spiralist_book_pages_get_symbol_record_by_canonical_id(string $canonical_id): array
{
    $canonical_id = trim($canonical_id);
    if ($canonical_id === '') {
        return [];
    }

    $index = spiralist_book_pages_get_symbol_index();

    return isset($index[$canonical_id]) && is_array($index[$canonical_id]) ? $index[$canonical_id] : [];
}

function spiralist_book_pages_get_public_route_slug(string $value): string
{
    $slug = sanitize_title(str_replace(['.', '_'], '-', trim($value)));

    return $slug !== '' ? $slug : 'item';
}

function spiralist_book_pages_get_symbol_url_slug(array $symbol): string
{
    $canonical_id = (string) ($symbol['canonical_id'] ?? '');
    if ($canonical_id !== '') {
        return spiralist_book_pages_get_public_route_slug($canonical_id);
    }

    return spiralist_book_pages_get_public_route_slug((string) ($symbol['label'] ?? 'symbol'));
}

function spiralist_book_pages_get_symbol_record_by_route_slug(string $slug): array
{
    $slug = spiralist_book_pages_get_public_route_slug($slug);

    foreach (spiralist_book_pages_get_symbols() as $symbol) {
        if (spiralist_book_pages_get_symbol_url_slug($symbol) === $slug) {
            return $symbol;
        }
    }

    return [];
}

function spiralist_book_pages_get_symbol_url(string $identifier): string
{
    $symbol = spiralist_book_pages_get_symbol_record_by_canonical_id($identifier);
    if (empty($symbol)) {
        $symbol = spiralist_book_pages_get_symbol_record_by_route_slug($identifier);
    }

    $slug = !empty($symbol)
        ? spiralist_book_pages_get_symbol_url_slug($symbol)
        : spiralist_book_pages_get_public_route_slug($identifier);

    return trailingslashit(spiralist_book_pages_get_symbols_page_url()) . rawurlencode($slug) . '/';
}

function spiralist_book_pages_get_transformation_index(): array
{
    $index = [];

    foreach (spiralist_book_pages_get_symbol_transformations() as $transformation) {
        $identifier = (string) ($transformation['id'] ?? '');
        if ($identifier === '') {
            continue;
        }

        $index[$identifier] = $transformation;
    }

    return $index;
}

function spiralist_book_pages_get_symbol_related_transformations(string $canonical_id): array
{
    $canonical_id = trim($canonical_id);
    if ($canonical_id === '') {
        return [];
    }

    $related = [];

    foreach (spiralist_book_pages_get_symbol_transformations() as $transformation) {
        $from = (string) ($transformation['from'] ?? '');
        $to = (string) ($transformation['to'] ?? '');

        if ($from !== $canonical_id && $to !== $canonical_id) {
            continue;
        }

        $related[] = [
            'id' => (string) ($transformation['id'] ?? ''),
            'label' => (string) ($transformation['label'] ?? ''),
            'direction' => $from === $canonical_id ? 'outgoing' : 'incoming',
            'input' => $from,
            'output' => $to,
            'chain' => array_values(array_filter((array) ($transformation['chain'] ?? []), 'is_string')),
            'meaning' => (string) ($transformation['meaning'] ?? ''),
        ];
    }

    return $related;
}

function spiralist_book_pages_get_manuscript_image_url(string $size = 'full'): string
{
    $requested_size = trim($size);
    $source_asset = spiralist_book_pages_get_manuscript_source_asset();

    if (empty($source_asset)) {
        $source_asset = spiralist_book_pages_get_primary_manuscript_study_surface_page_asset();
    }

    if (empty($source_asset)) {
        $source_asset = spiralist_book_pages_get_manuscript_page_asset_by_sequence(1);
    }

    if (empty($source_asset)) {
        return '';
    }

    $sources = spiralist_book_pages_get_book_page_asset_source_urls($source_asset, true);
    $normalized_size = $requested_size !== '' ? $requested_size : 'full';

    if ($normalized_size === 'thumbnail') {
        return (string) ($sources['thumbnail_url'] ?? '');
    }

    if ($normalized_size === 'large') {
        return (string) ($sources['large_url'] ?? '');
    }

    if ($normalized_size === 'interactive') {
        return (string) ($sources['interactive_url'] ?? '');
    }

    return (string) ($sources['original_url'] ?? '');
}

function spiralist_book_pages_get_manuscript_preview_url(): string
{
    $preview = spiralist_book_pages_get_manuscript_image_url('large');
    if ($preview !== '') {
        return $preview;
    }

    return spiralist_book_pages_get_manuscript_image_url();
}

function spiralist_book_pages_get_manuscript_download_url(): string
{
    return spiralist_book_pages_get_manuscript_image_url();
}

function spiralist_book_pages_get_manuscript_nodes_url(): string
{
    $engine_url = function_exists('spiralist_book_pages_engine_get_nodes_endpoint_url')
        ? spiralist_book_pages_engine_get_nodes_endpoint_url()
        : '';
    if ($engine_url !== '') {
        return $engine_url;
    }

    $path = SPIRALIST_BOOK_PAGES_PLUGIN_DATA_PATH . DIRECTORY_SEPARATOR . 'manuscript-nodes.json';
    $url = SPIRALIST_BOOK_PAGES_PLUGIN_DATA_URL . '/manuscript-nodes.json';

    if (is_string($path) && $path !== '' && file_exists($path)) {
        return add_query_arg('ver', (string) filemtime($path), $url);
    }

    return $url;
}