<?php
// includes/config.php 

// Define BASE_PATH primeiro, se não estiver definido
if (!defined('BASE_PATH')) {
    define('BASE_PATH', dirname(dirname(__FILE__)));
}

// Carrega funções UTM se existir
if (file_exists(BASE_PATH . '/includes/utm-functions.php')) {
    require_once BASE_PATH . '/includes/utm-functions.php';
}

// Carrega pixel se existir
if (file_exists(BASE_PATH . '/includes/pixel-config.php')) {
    require_once BASE_PATH . '/includes/pixel-config.php';
}

// Carrega helper do pixel se existir
if (file_exists(BASE_PATH . '/includes/pixel-helper.php')) {
    require_once BASE_PATH . '/includes/pixel-helper.php';
}

// Configurações gerais
define('SITE_NAME', 'Cursos Gratuitos');
define('SITE_URL', 'https://lebeh.com.br');
define('ADMIN_EMAIL', 'contacto@lebeh.com.br');

// Configurações do banco de dados
define('DB_HOST', 'localhost');
define('DB_NAME', 'como9975_petsocial');
define('DB_USER', 'como9975_petsocial');
define('DB_PASS', '83889096@#Aa');

// Configurações da API Claude
define('CLAUDE_API_KEY', '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');
define('CLAUDE_API_URL', 'https://api.anthropic.com/v1');
define('CLAUDE_MODEL', 'claude-3-5-sonnet-20241022'); // Modelo mais recente

// Configurações de upload - define apenas uma vez
if (!defined('UPLOAD_DIR')) {
    define('UPLOAD_DIR', BASE_PATH . '/uploads');
}

if (!defined('MAX_UPLOAD_SIZE')) {
    define('MAX_UPLOAD_SIZE', 5 * 1024 * 1024); // 5MB
}

if (!defined('ALLOWED_EXTENSIONS')) {
    define('ALLOWED_EXTENSIONS', ['jpg', 'jpeg', 'png', 'gif', 'webp']);
}

// Configurações de timezone
date_default_timezone_set('America/Sao_Paulo');
define('TIMEZONE', 'America/Sao_Paulo');

// Constantes para tipos de alerta
define('ALERT_SUCCESS', 'success');
define('ALERT_ERROR', 'danger');
define('ALERT_WARNING', 'warning');
define('ALERT_INFO', 'info');

// Configurações de cache
define('CACHE_ENABLED', true);
define('CACHE_DIR', BASE_PATH . '/cache');
define('CACHE_TIME', 3600); // 1 hora

// Configurações de sessão
define('SESSION_TIMEOUT', 7200); // 2 horas
define('CSRF_TOKEN_NAME', 'csrf_token');

// Configurações de segurança
define('BCRYPT_COST', 10);
define('MAX_LOGIN_ATTEMPTS', 5);
define('LOGIN_LOCKOUT_TIME', 900); // 15 minutos

// Configurações de paginação
define('ITEMS_PER_PAGE', 10);
define('PAGINATION_LINKS', 5);

// Configurações específicas da aplicação
define('WORD_COUNT_MIN', 500);
define('WORD_COUNT_MAX', 5000);
define('WORD_COUNT_DEFAULT', 1000);

// URLs padrão do sistema
define('WHATSAPP_DEFAULT_URL', 'https://chat.whatsapp.com/LdHGlsh02XXBt9alIK8ZD5');
define('WHATSAPP_DEFAULT_TEXT', 'Únete a nuestro grupo de WhatsApp y recibe cursos gratis todos los días');

// Tipos de página disponíveis
define('PAGE_TYPES', [
    'landing' => 'Página de Aterrisagem',
    'step1' => 'Primeira Etapa',
    'step2' => 'Segunda Etapa', 
    'step3' => 'Terceira Etapa',
    'registration' => 'Página de Registro'
]);

// Posições para inserção de elementos
define('CONTENT_POSITIONS', [
    'after-first' => 'Após o 1º parágrafo',
    'after-second' => 'Após o 2º parágrafo',
    'after-third' => 'Após o 3º parágrafo',
    'middle' => 'No meio do conteúdo',
    'before-last' => 'Antes do último parágrafo',
    'end' => 'No final do conteúdo'
]);

// Configurações de diretórios
$directories = [
    UPLOAD_DIR,
    UPLOAD_DIR . '/pages',
    UPLOAD_DIR . '/courses',
    UPLOAD_DIR . '/temp',
    CACHE_DIR,
    BASE_PATH . '/logs'
];

// Cria diretórios se não existirem
foreach ($directories as $dir) {
    if (!file_exists($dir)) {
        @mkdir($dir, 0755, true);
    }
}

// Configurações de erro
if (defined('DEBUG') && DEBUG) {
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
} else {
    error_reporting(E_ALL & ~E_NOTICE);
    ini_set('display_errors', 0);
    ini_set('log_errors', 1);
    ini_set('error_log', BASE_PATH . '/logs/php_errors.log');
}

// Configuração de memória
ini_set('memory_limit', '256M');
ini_set('max_execution_time', 300); // 5 minutos para geração de conteúdo

// Headers de segurança
if (!headers_sent()) {
    header('X-Content-Type-Options: nosniff');
    header('X-Frame-Options: DENY');
    header('X-XSS-Protection: 1; mode=block');
    header('Referrer-Policy: strict-origin-when-cross-origin');
}

// Autoload de classes personalizadas
spl_autoload_register(function ($class_name) {
    $class_file = BASE_PATH . '/includes/classes/' . $class_name . '.php';
    if (file_exists($class_file)) {
        require_once $class_file;
    }
});

// Função de validação de ambiente
function validateEnvironment() {
    $required_extensions = ['pdo', 'pdo_mysql', 'curl', 'json', 'mbstring'];
    $missing_extensions = [];
    
    foreach ($required_extensions as $ext) {
        if (!extension_loaded($ext)) {
            $missing_extensions[] = $ext;
        }
    }
    
    if (!empty($missing_extensions)) {
        die('Extensões PHP necessárias não encontradas: ' . implode(', ', $missing_extensions));
    }
    
    if (version_compare(PHP_VERSION, '7.4.0', '<')) {
        die('PHP 7.4 ou superior é necessário. Versão atual: ' . PHP_VERSION);
    }
    
    return true;
}

// Validar ambiente na inicialização
validateEnvironment();
?>