<?php
// Script de debug simple para PostgreSQL (sin CodeIgniter)
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "<h2>Debug de Subida de Cover (PostgreSQL Simple)</h2>";

// 1. Verificar configuración de base de datos
echo "<h3>1. Configuración de Base de Datos</h3>";
$db_config = [
    'hostname' => 'localhost',
    'username' => 'postgres',
    'password' => '1234',
    'database' => 'db_chamba_produccion',
    'dbdriver' => 'postgre'
];

try {
    $pdo = new PDO("pgsql:host={$db_config['hostname']};dbname={$db_config['database']}", 
                  $db_config['username'], $db_config['password']);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "✅ Conexión a BD exitosa<br>";
} catch (PDOException $e) {
    echo "❌ Error de conexión: " . $e->getMessage() . "<br>";
    echo "<br><strong>Verifica:</strong><br>";
    echo "- PostgreSQL está corriendo<br>";
    echo "- Credenciales son correctas<br>";
    echo "- Base de datos existe<br>";
    exit;
}

// 2. Verificar tabla y campo (PostgreSQL)
echo "<h3>2. Estructura de Tabla</h3>";
try {
    $stmt = $pdo->query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'tbl_usuarios'");
    if ($stmt->rowCount() > 0) {
        echo "✅ Tabla tbl_usuarios existe<br>";
        
        $stmt = $pdo->query("SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'tbl_usuarios' AND column_name = 'img_cover'");
        if ($stmt->rowCount() > 0) {
            echo "✅ Campo img_cover existe<br>";
            $column = $stmt->fetch(PDO::FETCH_ASSOC);
            echo "   - Tipo: " . $column['data_type'] . "<br>";
            echo "   - Null: " . $column['is_nullable'] . "<br>";
        } else {
            echo "❌ Campo img_cover NO existe<br>";
            
            // Mostrar campos existentes relacionados con imágenes
            echo "<br>Campos de imagen existentes:<br>";
            $stmt = $pdo->query("SELECT column_name, data_type FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'tbl_usuarios' AND (column_name LIKE '%img%' OR column_name LIKE '%image%') ORDER BY column_name");
            $has_img_fields = false;
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                echo "   - " . $row['column_name'] . ": " . $row['data_type'] . "<br>";
                $has_img_fields = true;
            }
            
            if (!$has_img_fields) {
                echo "   (No hay campos de imagen)<br>";
            }
            
            // Botón para agregar el campo
            echo "<br><form method='post' action=''>";
            echo "<input type='hidden' name='add_field' value='1'>";
            echo "<button type='submit' style='background:#28a745;color:white;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;'>";
            echo "🔧 Agregar campo img_cover";
            echo "</button></form>";
        }
    } else {
        echo "❌ Tabla tbl_usuarios NO existe<br>";
        
        // Mostrar tablas disponibles
        echo "<br>Tablas disponibles:<br>";
        $stmt = $pdo->query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name LIMIT 10");
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            echo "   - " . $row['table_name'] . "<br>";
        }
    }
} catch (PDOException $e) {
    echo "❌ Error al verificar tabla: " . $e->getMessage() . "<br>";
}

// 3. Agregar campo si se solicita
if (isset($_POST['add_field']) && $_POST['add_field'] == '1') {
    echo "<h3>3. Agregando Campo img_cover</h3>";
    try {
        $pdo->exec("ALTER TABLE tbl_usuarios ADD COLUMN img_cover VARCHAR(255) NULL");
        echo "✅ Campo img_cover agregado exitosamente<br>";
        
        // Crear índice
        $pdo->exec("CREATE INDEX idx_tbl_usuarios_img_cover ON tbl_usuarios(img_cover)");
        echo "✅ Índice idx_tbl_usuarios_img_cover creado<br>";
        
        echo "<br><strong>¡Campo agregado exitosamente!</strong><br>";
        echo "Recarga la página para verificar.<br>";
        
        // Redireccionar después de 2 segundos
        echo "<script>setTimeout(() => window.location.reload(), 2000);</script>";
        
    } catch (PDOException $e) {
        echo "❌ Error al agregar campo: " . $e->getMessage() . "<br>";
    }
}

// 4. Verificar directorios
echo "<h3>4. Directorios de Upload</h3>";
$upload_paths = [
    './uploads/',
    './uploads/community/',
    './uploads/community/covers/',
    './uploads/community/covers/thumbs/'
];

foreach ($upload_paths as $path) {
    if (is_dir($path)) {
        $perms = substr(sprintf('%o', fileperms($path)), -4);
        echo "✅ $path existe (permisos: $perms)<br>";
    } else {
        echo "❌ $path NO existe<br>";
        // Intentar crear
        if (mkdir($path, 0755, true)) {
            echo "   ✅ Directorio creado<br>";
        } else {
            echo "   ❌ No se pudo crear el directorio<br>";
        }
    }
}

// 5. Verificar extensiones PHP
echo "<h3>5. Extensiones PHP</h3>";
$required_extensions = ['pdo', 'pdo_pgsql', 'gd', 'json'];
foreach ($required_extensions as $ext) {
    if (extension_loaded($ext)) {
        echo "✅ Extensión $ext cargada<br>";
    } else {
        echo "❌ Extensión $ext NO cargada<br>";
    }
}

// 6. Verificar configuración de PHP
echo "<h3>6. Configuración PHP</h3>";
echo "upload_max_filesize: " . ini_get('upload_max_filesize') . "<br>";
echo "post_max_size: " . ini_get('post_max_size') . "<br>";
echo "max_execution_time: " . ini_get('max_execution_time') . "s<br>";
echo "memory_limit: " . ini_get('memory_limit') . "<br>";

// 7. Información del servidor
echo "<h3>7. Información del Servidor</h3>";
echo "PHP Version: " . PHP_VERSION . "<br>";
echo "Server Software: " . $_SERVER['SERVER_SOFTWARE'] . "<br>";
echo "Document Root: " . $_SERVER['DOCUMENT_ROOT'] . "<br>";

echo "<br><hr>";
echo "<strong>Próximos pasos:</strong><br>";
echo "1. Si el campo img_cover no existe, usa el botón para agregarlo<br>";
echo "2. Verifica que todos los directorios existan<br>";
echo "3. Prueba la subida de imagen en el perfil<br>";
echo "4. Si hay errores, revisa los logs de Apache/PHP<br>";
?>
