<?php

use App\Core\Database;

if (!function_exists('ec_lang')) {
    function ec_lang(): string
    {
        if (session_status() !== PHP_SESSION_ACTIVE) {
            @session_start();
        }

        $lang = $_GET['lang'] ?? $_GET['set'] ?? $_SESSION['lang'] ?? $_COOKIE['easychair_lang'] ?? 'ar';
        $lang = strtolower((string)$lang);

        if (!in_array($lang, ['ar','en'], true)) {
            $lang = 'ar';
        }

        $_SESSION['lang'] = $lang;

        return $lang;
    }
}

if (!function_exists('ec_is_rtl')) {
    function ec_is_rtl(): bool
    {
        return ec_lang() === 'ar';
    }
}

if (!function_exists('ec_dir')) {
    function ec_dir(): string
    {
        return ec_is_rtl() ? 'rtl' : 'ltr';
    }
}

if (!function_exists('ec_translation_fallback_map')) {
    function ec_translation_fallback_map(): array
    {
        return [
            'Dashboard' => 'لوحة التحكم',
            'Submissions' => 'التقديمات',
            'Reviewers' => 'المحكمون',
            'Decisions' => 'القرارات',
            'Workflow' => 'سير العمل',
            'Production' => 'الإنتاج',
            'Email Templates' => 'قوالب البريد',
            'Test Email' => 'اختبار البريد',
            'Dictionary' => 'قاموس الترجمة',
            'Users' => 'المستخدمون',
            'Roles' => 'الأدوار',
            'Organizations' => 'المؤسسات',
            'Conferences' => 'المؤتمرات',
            'Logout' => 'تسجيل الخروج',
            'Save' => 'حفظ',
            'Delete' => 'حذف',
            'Edit' => 'تعديل',
            'Create' => 'إنشاء',
            'Search' => 'بحث',
            'Status' => 'الحالة',
            'Actions' => 'الإجراءات',
            'Title' => 'العنوان',
            'Abstract' => 'الملخص',
            'Keywords' => 'الكلمات المفتاحية',
            'Author' => 'مؤلف',
            'Reviewer' => 'محكم',
            'Organizer' => 'منظم المؤتمر',
            'Conference Chair' => 'رئيس المؤتمر',
            'Track Chair' => 'رئيس المسار',
            'Super Admin' => 'مدير النظام العام',
            'Organization Admin' => 'مدير المؤسسة',
            'Admin' => 'مدير',
            'Online Users' => 'المستخدمون المتصلون',
        ];
    }
}

if (!function_exists('ec_t')) {
    function ec_t(string $key, string $fallback = ''): string
    {
        $lang = ec_lang();

        static $cache = [];

        $ck = $lang . '|' . $key;
        if (isset($cache[$ck])) {
            return $cache[$ck];
        }

        try {
            $db = Database::getInstance();

            $stmt = $db->prepare("
                SELECT text_en, text_ar
                FROM dictionary_translations
                WHERE translation_key = ?
                  AND is_active = 1
                LIMIT 1
            ");
            $stmt->execute([$key]);
            $row = $stmt->fetch(PDO::FETCH_ASSOC);

            if ($row) {
                $value = $lang === 'ar'
                    ? (($row['text_ar'] ?? '') ?: ($row['text_en'] ?? '') ?: $fallback)
                    : (($row['text_en'] ?? '') ?: ($row['text_ar'] ?? '') ?: $fallback);

                $cache[$ck] = $value;
                return $value;
            }
        } catch (Throwable $e) {}

        if ($lang === 'ar') {
            $map = ec_translation_fallback_map();
            if (isset($map[$fallback])) {
                $cache[$ck] = $map[$fallback];
                return $map[$fallback];
            }
        }

/*
------------------------------------------------
SIDEBAR LABEL FALLBACKS
------------------------------------------------
*/

$sidebarMap = [

    'menu.dashboard' => 'لوحة التحكم',
    'menu.online_users' => 'المستخدمون المتصلون',
    'menu.user_scope_audit' => 'تدقيق نطاق المستخدمين',
    'menu.access_audit' => 'تدقيق الوصول',

    'menu.conference_setup' => 'إعداد المؤتمر',
    'menu.conferences' => 'المؤتمرات',
    'menu.organizations' => 'المؤسسات',
    'menu.smart_homepage' => 'الصفحة الذكية',
    'menu.branding' => 'الهوية والشعارات',
    'menu.committee_images' => 'صور اللجان والمشاركين',
    'menu.conference_business' => 'إدارة المؤتمر',

    'menu.submissions' => 'التقديمات',
    'menu.submission_search' => 'بحث التقديمات',
    'menu.decisions' => 'القرارات',
    'menu.production' => 'الإنتاج',
    'menu.issues' => 'الأعداد والمنشورات',

    'menu.reviewing' => 'التحكيم',
    'menu.reviewers' => 'المحكمون',
    'menu.reviewer_assignment' => 'توزيع المحكمين',
    'menu.reviewer_expertise' => 'خبرات المحكمين',
    'menu.review_form' => 'نموذج التحكيم',
    'menu.review_monitor' => 'مراقبة التحكيم',

    'menu.workflow' => 'سير العمل',
    'menu.workflow_notifications' => 'إشعارات سير العمل',

    'menu.email_system' => 'البريد والنظام',
    'menu.email_templates' => 'قوالب البريد',
    'menu.notification_broadcast' => 'النشر والإشعارات',

    'menu.rbac' => 'المستخدمون والصلاحيات',
    'menu.users' => 'المستخدمون',
    'menu.roles' => 'الأدوار',
    'menu.rbac_scope' => 'نطاق الصلاحيات',
    'menu.rbac_matrix' => 'مصفوفة الصلاحيات',

    'menu.settings' => 'الإعدادات',
    'menu.dictionary' => 'القاموس',
    'menu.profile_fields' => 'حقول الملف الشخصي',
    'menu.my_profile' => 'ملفي الشخصي',
    'menu.my_notifications' => 'إشعاراتي',
    'menu.change_conference' => 'تغيير المؤتمر',
 'auth.conference' => 'Conference',
'auth.conference' => 'المؤتمر',
'auth.confirm_password' => 'تأكيد كلمة المرور',
'auth.email' => 'البريد الالكتروني',
'auth.affiliation' => 'المؤسسة / جهة الانتماء',
                'review_guidelines' => 'ارشادات المؤلف',
    'menu.logout' => 'تسجيل الخروج',
'auth.already_have_account' => 'لديك حساب بالفعل؟ تسجيل الدخول',
'auth.author_registration' => 'التسجيل في المؤتمر',
'auth.register_conf_note' => 'يرجى التأكد من عنوان المؤتمر المقدّم له',

	'auth.phone' => 'الهاتف'
];

if (
    $lang === 'ar'
    &&
    isset($sidebarMap[$key])
) {

    $cache[$ck] = $sidebarMap[$key];

    return $sidebarMap[$key];
}
        $cache[$ck] = $fallback !== '' ? $fallback : $key;
        return $cache[$ck];
    }
}

if (!function_exists('t')) {
    function t(string $key, string $fallback = ''): string
    {
        return ec_t($key, $fallback);
    }
}

if (!function_exists('ec_role_t')) {
    function ec_role_t(string $role): string
    {
        return ec_t('role.' . $role, ucwords(str_replace('_', ' ', $role)));
    }
}

if (!function_exists('ec_status_t')) {
    function ec_status_t(string $status): string
    {
        return ec_t('status.' . $status, ucwords(str_replace('_', ' ', $status)));
    }
}

if (!function_exists('ec_submission_status_t')) {
    function ec_submission_status_t(string $status): string
    {
        return ec_status_t($status);
    }
}
