<?php
/**
 * path_helper.php
 * Funciones centralizadas para resolución de paths.
 * Evita problemas cuando DOKU_INC contiene rutas sin resolver (../../).
 *
 * Uso: require_once(__DIR__ . '/path_helper.php');
 *      $path = bez_resolve_path('data/pages/proyectos/...');
 *      $base = bez_doku_base();
 */

/**
 * Retorna DOKU_INC resuelto (sin ../../)
 * @return string Ruta absoluta terminada en /
 */
function bez_doku_base() {
    static $base = null;
    if ($base !== null) return $base;

    if (defined('DOKU_INC')) {
        $resolved = realpath(DOKU_INC);
        $base = ($resolved !== false) ? rtrim($resolved, '/\\') . '/' : DOKU_INC;
    } else {
        // Fallback: calcular desde la ubicación de este archivo
        $resolved = realpath(__DIR__ . '/../../../../');
        $base = ($resolved !== false) ? rtrim($resolved, '/\\') . '/' : '';
    }
    return $base;
}

/**
 * Resuelve una ruta relativa a DOKU_INC
 * @param string $subpath Ruta relativa (ej: 'data/pages/proyectos/...')
 * @return string Ruta absoluta
 */
function bez_resolve_path($subpath) {
    return bez_doku_base() . ltrim($subpath, '/');
}

/**
 * Retorna DOKU_PLUGIN resuelto
 * @return string Ruta absoluta al directorio de plugins terminada en /
 */
function bez_plugin_base() {
    static $base = null;
    if ($base !== null) return $base;

    if (defined('DOKU_PLUGIN')) {
        $resolved = realpath(DOKU_PLUGIN);
        $base = ($resolved !== false) ? rtrim($resolved, '/\\') . '/' : DOKU_PLUGIN;
    } else {
        $base = bez_doku_base() . 'lib/plugins/';
    }
    return $base;
}
