<?php
/**
 * Sitemap com Cache Inteligente - Versao Final
 * Performance de nivel empresarial
 * Sem erros de encoding
 */

// Cache configuration
define('CACHE_FILE', __DIR__ . '/sitemap_cache.xml');
define('CACHE_DURATION', 3600); // 1 hora
define('FORCE_REFRESH', isset($_GET['refresh']));

// Headers corretos
header('Content-Type: application/xml; charset=utf-8');

// Funcao para verificar se precisa atualizar cache
function needsRefresh() {
    if (FORCE_REFRESH) return true;
    
    if (!file_exists(CACHE_FILE)) return true;
    
    $cacheAge = time() - filemtime(CACHE_FILE);
    return $cacheAge > CACHE_DURATION;
}

// Funcao para gerar sitemap (so quando necessario)
function generateSitemap() {
    $now = new DateTime('now', new DateTimeZone('America/Sao_Paulo'));
    
    // Timestamps realistas
    $timestamps = [
        'home' => $now->format('Y-m-d\TH:i:s-03:00'),
        'pricing' => $now->modify('-3 days')->format('Y-m-d\TH:i:s-03:00'),
        'solutions' => $now->modify('-7 days')->format('Y-m-d\TH:i:s-03:00'),
        'login' => $now->modify('-14 days')->format('Y-m-d\TH:i:s-03:00'),
        'enterprise' => $now->modify('-5 days')->format('Y-m-d\TH:i:s-03:00')
    ];
    
    // Estrutura de paginas
    $pages = [
        [
            'loc' => 'https://storespower.com.br/',
            'type' => 'home',
            'changefreq' => 'daily',
            'priority' => '1.0',
            'hreflang' => [
                'pt-br' => 'https://storespower.com.br/',
                'en' => 'https://storespower.com.br/en/',
                'es' => 'https://storespower.com.br/es/'
            ],
            'images' => [
                [
                    'loc' => 'https://storespower.com.br/images/stores-power-hero.webp',
                    'title' => 'Stores Power - Plataforma E-commerce Brasil',
                    'caption' => 'Plataforma de e-commerce mais avancada do Brasil'
                ]
            ]
        ],
        [
            'loc' => 'https://storespower.com.br/pricing/',
            'type' => 'pricing',
            'changefreq' => 'weekly',
            'priority' => '0.9',
            'hreflang' => [
                'pt-br' => 'https://storespower.com.br/pricing/',
                'en' => 'https://storespower.com.br/en/pricing/',
                'es' => 'https://storespower.com.br/es/pricing/'
            ]
        ],
        [
            'loc' => 'https://storespower.com.br/solucoes/',
            'type' => 'solutions',
            'changefreq' => 'weekly',
            'priority' => '0.8',
            'hreflang' => [
                'pt-br' => 'https://storespower.com.br/solucoes/',
                'en' => 'https://storespower.com.br/en/solucoes/',
                'es' => 'https://storespower.com.br/es/solucoes/'
            ]
        ],
        [
            'loc' => 'https://storespower.com.br/login/',
            'type' => 'login',
            'changefreq' => 'monthly',
            'priority' => '0.5',
            'hreflang' => [
                'pt-br' => 'https://storespower.com.br/login/',
                'en' => 'https://storespower.com.br/en/login/',
                'es' => 'https://storespower.com.br/es/login/'
            ]
        ],
        [
            'loc' => 'https://storespower.com.br/white-label/',
            'type' => 'white-label',
            'changefreq' => 'weekly',
            'priority' => '0.8',
            'hreflang' => [
                'pt-br' => 'https://storespower.com.br/white-label/',
                'en' => 'https://storespower.com.br/en/white-label/',
                'es' => 'https://storespower.com.br/es/white-label/'
            ]
        ]
    ];
    
    // Gerar XML
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
    $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"' . "\n";
    $xml .= '        xmlns:xhtml="http://www.w3.org/1999/xhtml"' . "\n";
    $xml .= '        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">' . "\n\n";
    
    foreach ($pages as $page) {
        $xml .= '  <url>' . "\n";
        $xml .= '    <loc>' . htmlspecialchars($page['loc']) . '</loc>' . "\n";
        $xml .= '    <lastmod>' . $timestamps[$page['type']] . '</lastmod>' . "\n";
        $xml .= '    <changefreq>' . $page['changefreq'] . '</changefreq>' . "\n";
        $xml .= '    <priority>' . $page['priority'] . '</priority>' . "\n";
        
        // Hreflang
        if (!empty($page['hreflang'])) {
            foreach ($page['hreflang'] as $lang => $url) {
                $xml .= '    <xhtml:link rel="alternate" hreflang="' . $lang . '" href="' . htmlspecialchars($url) . '"/>' . "\n";
            }
        }
        
        // Images
        if (!empty($page['images'])) {
            foreach ($page['images'] as $image) {
                $xml .= '    <image:image>' . "\n";
                $xml .= '      <image:loc>' . htmlspecialchars($image['loc']) . '</image:loc>' . "\n";
                $xml .= '      <image:title>' . htmlspecialchars($image['title']) . '</image:title>' . "\n";
                $xml .= '      <image:caption>' . htmlspecialchars($image['caption']) . '</image:caption>' . "\n";
                $xml .= '    </image:image>' . "\n";
            }
        }
        
        $xml .= '  </url>' . "\n\n";
    }
    
    $xml .= '</urlset>';
    
    return $xml;
}

// Logica principal de cache
if (needsRefresh()) {
    // Gera novo sitemap (so quando necessario)
    $sitemap = generateSitemap();
    
    // Salva no cache
    file_put_contents(CACHE_FILE, $sitemap, LOCK_EX);
    
    // Headers de cache
    header('Cache-Control: max-age=' . CACHE_DURATION . ', public');
    header('Expires: ' . gmdate('D, d M Y H:i:s', time() + CACHE_DURATION) . ' GMT');
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    
    echo $sitemap;
} else {
    // Serve do cache (ultra rapido)
    header('Cache-Control: max-age=' . CACHE_DURATION . ', public');
    header('Expires: ' . gmdate('D, d M Y H:i:s', time() + CACHE_DURATION) . ' GMT');
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime(CACHE_FILE)) . ' GMT');
    
    readfile(CACHE_FILE);
}

?>