<?php
/**
 * קובץ קונפיגורציה גלובלי
 */

// 💡 הגנה מפני טעינה כפולה - אם הקבוע הראשי כבר מוגדר, צא.
if (defined('ROOT_PATH')) {
    return;
}

// ----------------------------------------------------------------------
// 1. נתיבים ואתר (ROOT_PATH, SITE_URL)
// ----------------------------------------------------------------------
define('ROOT_PATH', __DIR__);
define('SITE_URL', 'https://moneytime.brand4u.co.il');
define('BASE_URL', SITE_URL . '/adminpanel');

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. הגדרות מסד נתונים - 🛑 תוקן ל-bekerco_mony
// ----------------------------------------------------------------------
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', 'MoneyTime');
define('SITE_EMAIL', 'support@moneytime.co.il');
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');
define('CURRENCY_SYMBOL', '₪');
define('CURRENCY_CODE', 'ILS');


// ----------------------------------------------------------------------
// 4. הגדרות משלוח, אחסון ומייל
// ----------------------------------------------------------------------
define('SHIPPING_REGULAR_PRICE', 45);
define('SHIPPING_EXPRESS_PRICE', 75);
define('SHIPPING_SUPER_PRICE', 120);
define('HANDLING_FEE', 25);
define('INSURANCE_RATE', 0.02);
define('INSURANCE_MIN', 10);

define('FREE_STORAGE_DAYS', 60);
define('STORAGE_FEE_PER_DAY', 5);

define('MAIL_FROM', 'noreply@moneytime.co.il');
define('MAIL_FROM_NAME', 'MoneyTime');
// הגדרות SMTP
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');


// ----------------------------------------------------------------------
// 5. הגדרות אבטחה ו-SESSION
// ----------------------------------------------------------------------
define('SESSION_TIMEOUT', 7200);
define('PASSWORD_MIN_LENGTH', 8);
define('MAX_LOGIN_ATTEMPTS', 5);
define('LOGIN_BLOCK_TIME', 900);

define('MAX_FILE_SIZE', 5242880);
define('ALLOWED_IMAGE_TYPES', ['image/jpeg', 'image/png', 'image/jpg']);
define('MAX_IMAGES_PER_PACKAGE', 10);

define('DEBUG_MODE', true);
define('MAINTENANCE_MODE', false);
define('LOG_ERRORS', true);


// ----------------------------------------------------------------------
// 6. הגדרות PHP גלובליות ו-Error Reporting (ini_set)
// ----------------------------------------------------------------------

if (DEBUG_MODE) {
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
} else {
    error_reporting(0);
    ini_set('display_errors', 0);
}


// ----------------------------------------------------------------------
// 7. טעינת קבצי ליבה ופונקציות - סדר קריטי!
// ----------------------------------------------------------------------

// 1. התחלת session
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// 2. Autoload 
spl_autoload_register(function($class) {
    $file = INCLUDES_PATH . '/' . strtolower($class) . '.php';
    if (file_exists($file)) {
        require_once $file;
    }
});

// 3. טעינת קבצים בסיסיים - הסדר הנכון ביותר: Functions, DB, Auth
require_once INCLUDES_PATH . '/functions.php'; // ⬅️ ראשון: פותר את שגיאת generateCsrfToken()
require_once INCLUDES_PATH . '/db.php';
require_once INCLUDES_PATH . '/auth.php';


// ----------------------------------------------------------------------
// 8. בדיקות סופיות וכותרות 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');

if (MAINTENANCE_MODE && (!function_exists('isAdmin') || !isAdmin())) {
    if(file_exists(ROOT_PATH . '/maintenance.html')) {
        include ROOT_PATH . '/maintenance.html';
        exit;
    }
}