<?php
ob_start(); 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// הגנה מפני טעינה כפולה
if (defined('ROOT_PATH')) {
    return;
}

// ----------------------------------------------------------------------
// 1. נתיבים ואתרyallabuythaise
// ----------------------------------------------------------------------
define('ROOT_PATH', '/home/bekerco/yallabuythai.com/');
define('SITE_URL', 'https://yallabuythai.com/');
define('BASE_URL', SITE_URL);

define('INCLUDES_PATH', ROOT_PATH . 'includes');
define('ASSETS_PATH', ROOT_PATH . 'assets');
define('UPLOADS_PATH', ROOT_PATH . 'assets/uploads');
define('PAGES_PATH', ROOT_PATH . 'pages');
define('ADMIN_PATH', ROOT_PATH . 'admin');
define('API_PATH', ROOT_PATH . 'api');

// ----------------------------------------------------------------------
// 2. הגדרות מסד נתונים
// ----------------------------------------------------------------------
define('DB_HOST', 'localhost');
define('DB_NAME', 'bekerco_mony');
define('DB_USER', 'bekerco_mony');
define('DB_PASS', 'Morn06121967');
define('DB_CHARSET', 'utf8mb4');

// ----------------------------------------------------------------------
// 3. הגדרות אתר ומידע כללי
// ----------------------------------------------------------------------
define('SITE_NAME', 'yallabuythai.com');
define('SITE_EMAIL', 'support@yallabuythai.com');
define('SITE_PHONE', '+972-50-123-4567');
define('WAREHOUSE_ADDRESS', '279/264 Moo 12, Nong Prue, Bang Lamung, Chonburi, Thailand');
define('WAREHOUSE_ADDRESS_HE', '279/264 Moo 12, נונג פרו, באנג למונג, צ\'ונבורי, תאילנד 🇹🇭');

date_default_timezone_set('Asia/Jerusalem');
define('DEFAULT_LANG', 'he');
if (!defined('CURRENCY_SYMBOL')) { define('CURRENCY_SYMBOL', '₪'); }
define('CURRENCY_CODE', 'ILS');

// ----------------------------------------------------------------------
// 4. הגדרות משלוח, אחסון ומחירים
// ----------------------------------------------------------------------
define('SHIPPING_REGULAR_PRICE', 45);      // משלוח רגיל - ₪45/ק"ג
define('SHIPPING_EXPRESS_PRICE', 75);      // משלוח מהיר - ₪75/ק"ג
define('SHIPPING_SUPER_PRICE', 120);       // משלוח אקספרס - ₪120/ק"ג
define('HANDLING_FEE', 25);                // עמלת טיפול - ₪25
define('INSURANCE_RATE', 0.02);            // ביטוח - 2%
define('INSURANCE_MIN', 10);               // מינימום ביטוח - ₪10

define('FREE_STORAGE_DAYS', 60);           // ימי אחסון חינם
define('STORAGE_FEE_PER_DAY', 5);          // עלות אחסון ליום - ₪5

// ----------------------------------------------------------------------
// 5. הגדרות מייל (SMTP)
// ----------------------------------------------------------------------
define('MAIL_FROM', 'noreply@yallabuythai.com');
define('MAIL_FROM_NAME', 'yallabuythai.com');
define('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_PORT', 587);
define('SMTP_USER', 'your_email@gmail.com');     // עדכן למייל שלך
define('SMTP_PASS', 'your_email_password');      // עדכן לסיסמה
define('SMTP_SECURE', 'tls');

// ----------------------------------------------------------------------
// 6. הגדרות אבטחה ו-SESSION
// ----------------------------------------------------------------------
define('SESSION_TIMEOUT', 7200);              // 2 שעות
define('PASSWORD_MIN_LENGTH', 8);
define('MAX_LOGIN_ATTEMPTS', 5);
define('LOGIN_BLOCK_TIME', 900);              // 15 דקות

define('MAX_FILE_SIZE', 5242880);             // 5MB
define('ALLOWED_IMAGE_TYPES', ['image/jpeg', 'image/png', 'image/jpg']);
define('MAX_IMAGES_PER_PACKAGE', 10);

// ----------------------------------------------------------------------
// 7. הגדרות מצב פיתוח/ייצור
// ----------------------------------------------------------------------
define('DEBUG_MODE', true);                   // שנה ל-false בייצור!
define('MAINTENANCE_MODE', false);
define('LOG_ERRORS', true);

// ----------------------------------------------------------------------
// 8. Error Reporting
// ----------------------------------------------------------------------
if (DEBUG_MODE) {
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
} else {
    error_reporting(0);
    ini_set('display_errors', 0);
}

// ----------------------------------------------------------------------
// 9. התחלת Session
// ----------------------------------------------------------------------
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// ----------------------------------------------------------------------
// 10. Autoload Classes
// ----------------------------------------------------------------------
spl_autoload_register(function($class) {
    $file = INCLUDES_PATH . '/' . strtolower($class) . '.php';
    if (file_exists($file)) {
        require_once $file;
    }
});

// ----------------------------------------------------------------------
// 11. טעינת קבצים בסיסיים - בסדר הנכון!
// ----------------------------------------------------------------------
if (file_exists(INCLUDES_PATH . '/functions.php')) {
    require_once INCLUDES_PATH . '/functions.php';
}

if (file_exists(INCLUDES_PATH . '/db.php')) {
    require_once INCLUDES_PATH . '/db.php';
}

if (file_exists(INCLUDES_PATH . '/auth.php')) {
    require_once INCLUDES_PATH . '/auth.php';
}

// ----------------------------------------------------------------------
// 12. כותרות אבטחה HTTP
// ----------------------------------------------------------------------
header('X-Frame-Options: SAMEORIGIN');
header('X-Content-Type-Options: nosniff');
header('X-XSS-Protection: 1; mode=block');
header('Referrer-Policy: strict-origin-when-cross-origin');

// ----------------------------------------------------------------------
// 13. בדיקת Maintenance Mode
// ----------------------------------------------------------------------
if (MAINTENANCE_MODE && (!function_exists('isAdmin') || !isAdmin())) {
    if(file_exists(ROOT_PATH . 'maintenance.html')) {
        include ROOT_PATH . 'maintenance.html';
        exit;
    } else {
        echo '<!DOCTYPE html>
        <html lang="he" dir="rtl">
        <head>
            <meta charset="UTF-8">
            <title>תחזוקה - ShopThaiWise</title>
            <style>
                body { font-family: Arial; text-align: center; padding: 100px; background: linear-gradient(135deg, #667eea, #764ba2); color: white; }
                h1 { font-size: 3rem; }
                p { font-size: 1.2rem; }
            </style>
        </head>
        <body>
            <h1>🔧 המערכת בתחזוקה</h1>
            <p>אנחנו עושים שדרוגים כדי לשפר את השירות. נחזור בקרוב!</p>
        </body>
        </html>';
        exit;
    }
}

// ----------------------------------------------------------------------
// 14. פונקציות עזר קצרות
// ----------------------------------------------------------------------

if (!function_exists('url')) {
    function url($path = '') {
        return SITE_URL . ltrim($path, '/');
    }
}

if (!function_exists('asset')) {
    function asset($path = '') {
        return SITE_URL . 'assets/' . ltrim($path, '/');
    }
}

if (!function_exists('redirect')) {
    function redirect($path, $statusCode = 302) {
        header('Location: ' . url($path), true, $statusCode);
        exit;
    }
}

if (!function_exists('current_page')) {
    function current_page() {
        return basename($_SERVER['PHP_SELF']);
    }
}

if (!function_exists('is_page')) {
    function is_page($page) {
        return current_page() === $page;
    }
}

// ----------------------------------------------------------------------
// 15. פונקציות אבטחה ופלט
// ----------------------------------------------------------------------

if (!function_exists('escape')) {
    function escape($data) {
        if ($data === null || $data === '') {
            return '';
        }
        return htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
    }
}

if (!function_exists('clean')) {
    function clean($data) {
        return escape($data);
    }
}

if (!function_exists('getSafeUserData')) {
    function getSafeUserData($user) {
        if (!$user || !is_array($user)) {
            return [
                'id' => 0,
                'email' => '',
                'display_name' => 'אורח',
                'first_name' => '',
                'last_name' => '',
                'initials' => 'G',
                'role' => 'guest'
            ];
        }

        $firstName = $user['first_name'] ?? '';
        $lastName = $user['last_name'] ?? '';
        $email = $user['email'] ?? '';

        if (!empty($firstName) && !empty($lastName)) {
            $displayName = $firstName . ' ' . $lastName;
        } elseif (!empty($firstName)) {
            $displayName = $firstName;
        } elseif (!empty($email)) {
            $displayName = explode('@', $email)[0];
        } else {
            $displayName = 'משתמש #' . ($user['id'] ?? '0');
        }

        $firstInitial = !empty($firstName) ? mb_substr($firstName, 0, 1, 'UTF-8') : '';
        $lastInitial = !empty($lastName) ? mb_substr($lastName, 0, 1, 'UTF-8') : '';
        $initials = $firstInitial . $lastInitial;

        if (empty($initials) && !empty($email)) {
            $initials = mb_strtoupper(mb_substr($email, 0, 2, 'UTF-8'), 'UTF-8');
        }

        if (empty($initials)) {
            $initials = 'U';
        }

        return [
            'id' => $user['id'] ?? 0,
            'email' => $email,
            'display_name' => $displayName,
            'first_name' => $firstName,
            'last_name' => $lastName,
            'initials' => $initials,
            'role' => $user['role'] ?? 'customer'
        ];
    }
}

if (!function_exists('formatHebrewDate')) {
    function formatHebrewDate($date) {
        if (empty($date)) return '-';
        return date('d/m/Y H:i', strtotime($date));
    }
}

if (!function_exists('formatCurrency')) {
    function formatCurrency($amount) {
        return CURRENCY_SYMBOL . number_format($amount, 2);
    }
}

// ----------------------------------------------------------------------
// 16. Debug Helper (רק במצב פיתוח)
// ----------------------------------------------------------------------
if (DEBUG_MODE) {
    if (!function_exists('dd')) {
        function dd($var) {
            echo '<pre style="background:#f0f0f0;padding:20px;border:2px solid #667eea;border-radius:10px;direction:ltr;text-align:left;">';
            var_dump($var);
            echo '</pre>';
            die();
        }
    }
    
    if (!function_exists('dump')) {
        function dump($var) {
            echo '<pre style="background:#f0f0f0;padding:20px;border:2px solid #667eea;border-radius:10px;direction:ltr;text-align:left;">';
            var_dump($var);
            echo '</pre>';
        }
    }
}

// ----------------------------------------------------------------------
// 17. פונקציות לוגינג
// ----------------------------------------------------------------------
if (!function_exists('logError')) {
    function logError($message, $context = []) {
        if (LOG_ERRORS) {
            $logFile = ROOT_PATH . 'logs/error.log';
            $logDir = dirname($logFile);
            
            if (!file_exists($logDir)) {
                mkdir($logDir, 0755, true);
            }
            
            $timestamp = date('Y-m-d H:i:s');
            $contextStr = !empty($context) ? json_encode($context, JSON_UNESCAPED_UNICODE) : '';
            $logMessage = "[{$timestamp}] ERROR: {$message}";
            
            if ($contextStr) {
                $logMessage .= " | Context: {$contextStr}";
            }
            
            $logMessage .= PHP_EOL;
            
            file_put_contents($logFile, $logMessage, FILE_APPEND);
        }
    }
}

if (!function_exists('logInfo')) {
    function logInfo($message, $context = []) {
        if (DEBUG_MODE && LOG_ERRORS) {
            $logFile = ROOT_PATH . 'logs/info.log';
            $logDir = dirname($logFile);
            
            if (!file_exists($logDir)) {
                mkdir($logDir, 0755, true);
            }
            
            $timestamp = date('Y-m-d H:i:s');
            $contextStr = !empty($context) ? json_encode($context, JSON_UNESCAPED_UNICODE) : '';
            $logMessage = "[{$timestamp}] INFO: {$message}";
            
            if ($contextStr) {
                $logMessage .= " | Context: {$contextStr}";
            }
            
            $logMessage .= PHP_EOL;
            
            file_put_contents($logFile, $logMessage, FILE_APPEND);
        }
    }
}

// ----------------------------------------------------------------------
// 18. יצירת תיקיות חיוניות אם לא קיימות
// ----------------------------------------------------------------------
$requiredDirs = [
    ROOT_PATH . 'logs',
    UPLOADS_PATH,
    UPLOADS_PATH . '/packages',
    UPLOADS_PATH . '/documents',
    UPLOADS_PATH . '/temp'
];

foreach ($requiredDirs as $dir) {
    if (!file_exists($dir)) {
        mkdir($dir, 0755, true);
    }
}

// ----------------------------------------------------------------------
// 🎉 Config Loaded Successfully!
// ----------------------------------------------------------------------
if (DEBUG_MODE) {
    logInfo('Config loaded successfully', [
        'site_url' => SITE_URL,
        'db_name' => DB_NAME,
        'debug_mode' => DEBUG_MODE
    ]);
}
?>