<?php
header('Content-Type: application/json');

// Configuración de la base de datos
$HOST = "localhost";
$USER = "app_user";
$PASS = "Corma277";
$DBNAME = "app_corma";
$OPCIONES = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");

// Directorio donde se guardarán las imágenes
$directorio_imagenes = '/corma/mantencion_app/imagenes/';
$ruta_completa = $_SERVER['DOCUMENT_ROOT'] . $directorio_imagenes;

// Crear el directorio si no existe
if (!file_exists($ruta_completa)) {
    mkdir($ruta_completa, 0777, true);
}

// Array de URLs a scrapear
$urls_corma = [
    'https://www.corma.cl/?s=&cat=93',  // Comunicados
    'https://www.corma.cl/?s=&cat=580', // Biodiversidad
    'https://www.corma.cl/?s=&cat=376', // transporte
    'https://www.corma.cl/?s=&cat=921', // Mas talento
    'https://www.corma.cl/?s=&cat=15',  // Opinion
    'https://www.corma.cl/?s=&cat=26',  // Exportaciones
    'https://www.corma.cl/?s=&cat=48',  // Actividad Gremial
    'https://www.corma.cl/?s=&cat=582', // Maderas
    'https://www.corma.cl/?s=&cat=196', // Pymes
    'https://www.corma.cl/blog/category/noticias',
    'https://www.corma.cl/?s=&cat=5',   // Incendios
    'https://www.corma.cl/?s=&cat=12',  // Medio Ambiente
    'https://www.corma.cl/noticias/'    // Noticias Generales
];

$response = [
    'success' => false,
    'message' => '',
    'noticias_agregadas' => 0,
    'debug_info' => []
];

try {
    // Conexión a la base de datos
    $dsn = "mysql:host=".$HOST.";dbname=".$DBNAME."";
    $pdo = new PDO($dsn, $USER, $PASS, $OPCIONES);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Configurar contexto para simular un navegador
    $opts = [
        'http' => [
            'method' => 'GET',
            'header' => [
                'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
            ]
        ]
    ];
    $context = stream_context_create($opts);
    
    foreach ($urls_corma as $url) {
        // Obtener el contenido de la página
        $html = file_get_contents($url, false, $context);
        
        if ($html === false) {
            $response['debug_info'][] = "No se pudo obtener el contenido de la página: $url";
            continue;
        }
        
        // Crear un nuevo DOMDocument
        $dom = new DOMDocument();
        @$dom->loadHTML($html, LIBXML_NOERROR);
        
        // Crear un nuevo DOMXPath
        $xpath = new DOMXPath($dom);
        
        // Buscar todos los artículos de noticias
        $noticias = $xpath->query("//div[contains(@class, 'dslc-blog-post')]");
        
        if ($noticias->length > 0) {
            // Tomar solo la primera noticia (la más reciente)
            $noticia = $noticias->item(0);
            
            // Extraer el título y URL
            $tituloNode = $xpath->query(".//div[contains(@class, 'dslc-blog-post-title')]//a", $noticia)->item(0);
            $titulo = $tituloNode instanceof DOMElement ? trim($tituloNode->textContent) : '';
            $link = $tituloNode instanceof DOMElement ? $tituloNode->getAttribute('href') : '';
            
            // Extraer la imagen
            $imagenNode = $xpath->query(".//div[contains(@class, 'dslc-blog-post-thumb')]//img[@class='lazy loaded']", $noticia)->item(0);
            $imagen_url = '';
            
            if ($imagenNode instanceof DOMElement) {
                $imagen_url = $imagenNode->getAttribute('data-src');
                if (empty($imagen_url)) {
                    $imagen_url = $imagenNode->getAttribute('src');
                }
                
                if (!empty($imagen_url) && strpos($imagen_url, 'https://www.corma.cl') !== 0 && strpos($imagen_url, 'data:image') === false) {
                    $imagen_url = 'https://www.corma.cl' . $imagen_url;
                }
                
                if (strpos($imagen_url, 'data:image') !== false) {
                    $imagen_url = '';
                }
            }
            
            // Si no se encontró la imagen, intentar con otro selector
            if (empty($imagen_url)) {
                $imagenNode = $xpath->query(".//div[contains(@class, 'dslc-blog-post-thumb')]//a//img", $noticia)->item(0);
                if ($imagenNode instanceof DOMElement) {
                    $imagen_url = $imagenNode->getAttribute('data-src');
                    if (empty($imagen_url)) {
                        $imagen_url = $imagenNode->getAttribute('src');
                    }
                }
            }
            
            // Verificar si la noticia ya existe
            $stmt = $pdo->prepare("SELECT COUNT(*) FROM noticias WHERE link = ? OR titulo = ?");
            $stmt->execute([$link, $titulo]);
            $existe = $stmt->fetchColumn() > 0;
            
            // Si la noticia no existe y tiene todos los datos necesarios
            if (!$existe && $titulo && $link && $imagen_url) {
                // Generar nombre único para la imagen
                $extension = pathinfo(parse_url($imagen_url, PHP_URL_PATH), PATHINFO_EXTENSION);
                if (empty($extension)) {
                    $extension = 'jpg';
                }
                $nombre_imagen = uniqid() . '.' . $extension;
                $ruta_imagen = $ruta_completa . $nombre_imagen;
                
                // Descargar y guardar la imagen
                $imagen_contenido = file_get_contents($imagen_url, false, $context);
                if ($imagen_contenido !== false) {
                    file_put_contents($ruta_imagen, $imagen_contenido);
                    
                    // Guardar en la base de datos
                    $ruta_relativa = 'https://seminarioscorma.cl/corma/mantencion_app/imagenes/' . $nombre_imagen;
                    
                    $fecha_actual = date('Y-m-d H:i:s');
                    $stmt = $pdo->prepare("INSERT INTO noticias (titulo, contenido, link, fecha, imagen) VALUES (?, '', ?, ?, ?)");
                    $stmt->execute([$titulo, $link, $fecha_actual, $ruta_relativa]);
                    
                    $response['noticias_agregadas']++;
                }
            }
        }
    }
    
    $response['success'] = true;
    if ($response['noticias_agregadas'] > 0) {
        $response['message'] = "Se agregó una nueva noticia hoy.";
    } else {
        $response['message'] = "No se encontraron noticias nuevas para agregar hoy.";
    }
    
} catch (Exception $e) {
    $response['message'] = "Error: " . $e->getMessage();
    $response['debug_info']['error'] = $e->getMessage();
}

echo json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
?> 