> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/ar/dlyl-almtw-r/developer-guide/backend/symfony-architecture.md).

# معمارية Symfony

## الحزم (Bundles)

يُنظَّم Chamilo 3.0 في ثلاث حزم Symfony:

### CoreBundle (`src/CoreBundle/`)

أكبر الحزم، وتتولى جميع الشؤون على مستوى المنصة:

* **المستخدمون والمصادقة** — كيان المستخدم، الأدوار، رموز JWT، مزوّدو OAuth2
* **نظام الموارد** — ResourceNode و ResourceFile (تجريد المحتوى الموحّد)
* **إعدادات المنصة** — مخططات الإعدادات في `src/CoreBundle/Settings/` تغطي كل جانب قابل للتهيئة
* **الإدارة** — وحدات تحكم المسؤول لإدارة المستخدمين والدورات والجلسات والإضافات
* **مزوّدو الذكاء الاصطناعي** — نمط المصنع لـ OpenAI و Gemini و Mistral و DeepSeek و Grok
* **تخزين الملفات** — محوّلات تخزين قائمة على Flysystem (محلي، S3، Azure، GCS)
* **الأمان** — المصوّتون (Voters)، التحكم في الوصول، تسلسل الأدوار
* **الأدوات** — تعريفات أدوات الدورة المسجَّلة عبر نظام الأدوات

### CourseBundle (`src/CourseBundle/`)

كل ما يخص محتوى الدورة:

* **كيانات المحتوى** — 101 كيانًا للمستندات والتمارين ومسارات التعلّم والمنتديات والمعاجم والاستبيانات والحضور والمدوّنات والواجبات وغيرها
* **نسخ الدورة** — استيراد/تصدير مع دعم Common Cartridge 1.3 وتنسيق Moodle
* **إعدادات الدورة** — مخططات الإعدادات على مستوى الدورة

### LtiBundle (`src/LtiBundle/`)

تنفيذ معيار LTI 1.3:

* **تسجيل المنصة والأداة** — إدارة اتصالات الأدوات الخارجية
* **معالجة الإطلاق** — وحدات تحكم تدفق إطلاق LTI
* **إرجاع الدرجات (Grade passback)** — إعادة الدرجات من الأدوات الخارجية إلى Chamilo

## حاوية الخدمات

يستخدم Chamilo حاوية حقن التبعيات في Symfony. تُهيَّأ الخدمات في:

* `config/services.yaml` — تعريفات الخدمات العامة
* دليل `DependencyInjection/` لكل حزمة — خدمات خاصة بالحزمة

## معمارية الأمان

يُهيَّأ نظام الأمان في `config/packages/security.yaml`:

* **تجزئة كلمات المرور** — يدعم bcrypt (الافتراضي)، مع الترحيل من SHA1 و MD5 القديمين
* **تسلسل الأدوار** — 18 دورًا منظَّمة هرميًا (ROLE\_GLOBAL\_ADMIN > ROLE\_ADMIN > ROLE\_TEACHER > ROLE\_STUDENT > ROLE\_USER؛ وتشمل أدوارًا إضافية ROLE\_HR و ROLE\_INVITEE و ROLE\_STUDENT\_BOSS و ROLE\_SESSION\_MANAGER و ROLE\_QUESTION\_MANAGER)
* **أدوار حسّاسة للسياق** — تُحسب أدوار مستوى الدورة (ROLE\_CURRENT\_COURSE\_TEACHER، ROLE\_CURRENT\_COURSE\_STUDENT) لكل طلب بناءً على التسجيل
* **جدار الحماية (Firewall)** — مصادقة JWT لـ API، وقائمة على الجلسة لواجهة الويب
* **المصوّتون (Voters)** — التحكم في الوصول على مستوى المورد عبر مصوّتي Symfony

## الشيفرة القديمة

لا تزال بعض الميزات تستخدم شيفرة PHP قديمة في `public/main/`:

* عرض التمارين والتفاعل معها
* مشغّل مسار التعلّم
* بعض أدوات الإدارة

يجري ترحيلها تدريجيًا إلى معمارية Symfony+Vue. تُقدَّم الصفحات القديمة عبر طبقة توافق تُمهِّد نواة Symfony.
