> 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/2.x/ar/dlyl-almtwr/developer-guide/backend/symfony-architecture.md).

# Symfony Architecture

## الحزم Bundles

يُقسم Chamilo 2.0 إلى ثلاث حزم Symfony:

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

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

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

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

كل ما يتعلق بمحتوى الدورة تحديدًا:

* **كيانات المحتوى** — 101 كيان للوثائق، والتمارين، ومسارات التعلم، والمنتديات، والمصطلحات، والاستطلاعات، والحضور، والمدونات، والمهام، وأكثر
* **نسخ الدورة** — الاستيراد/التصدير مع دعم Common Cartridge 1.3 وصيغة Moodle
* **إعدادات الدورة** — مخططات الإعدادات على مستوى الدورة

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

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

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

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

يستخدم Chamilo حاوية حقن التبعيات في Symfony. يتم تكوين الخدمات في:

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

## هندسة الأمان Security Architecture

يتم تكوين نظام الأمان في `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) يتم حسابها لكل طلب بناءً على التسجيل
* **جدار الحماية** — مصادقة JWT لـ API، قائمة على الجلسة للواجهة الويبية
* **الناخبون** — التحكم في الوصول على مستوى المورد من خلال ناخبي Symfony

## الكود القديم Legacy Code

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

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

يتم نقل هذه تدريجيًا إلى هندسة Symfony+Vue. يتم تقديم الصفحات القديمة من خلال طبقة توافق تبدأ نواة Symfony.
