# دليل التثبيت والترقية

## 1. اعزل النسخة القديمة

لا ترفع النسخة الجديدة فوق المجلد المصاب مباشرة. خذ نسخة احتياطية، ثم أعد تسمية المجلد القديم أو انقله خارج `public_html`.

مثال:

```text
student-gateway-old-compromised
```

## 2. غيّر بيانات الدخول الحساسة

من cPanel غيّر فورًا:

- كلمة مرور cPanel.
- FTP/SFTP.
- SSH إن كان مفعّلًا.
- كلمة مرور مستخدم MySQL.
- أي مفاتيح أو حسابات كانت محفوظة في المشروع القديم.

## 3. ارفع المشروع

ارفع مجلد `student-gateway` إلى:

```text
public_html/student-gateway
```

وتأكد أن إصدار PHP هو **8.1 أو أحدث**، وأن الامتدادات التالية مفعلة:

- PDO
- pdo_mysql
- mbstring
- fileinfo
- json
- session
- openssl

## 4. عدّل الاتصال بقاعدة البيانات

افتح:

```text
includes/config.local.php
```

واستبدل:

```php
'pass' => 'CHANGE_ME_AFTER_ROTATION',
```

بكلمة مرور MySQL الجديدة. لا ترسل هذا الملف للآخرين ولا تحفظه في مستودع عام.

حدّث أيضًا `base_url` إذا كان المسار مختلفًا.

## 5. نفّذ ترقية قاعدة البيانات

من phpMyAdmin:

1. اختر قاعدة البيانات الحالية.
2. خذ Export كاملًا قبل أي تعديل.
3. افتح تبويب SQL.
4. نفّذ `database/01_upgrade_core_periods.sql`.

ملف الترقية يحافظ على البيانات ويضيف التوافق المطلوب للنسخة الجديدة.

## 6. حسابات الاختبار — اختياري

عند الحاجة فقط، نفّذ:

```text
database/02_optional_reset_access.sql
```

بعدها تصبح بيانات الاختبار:

### الإدارة

- البريد: `coreadmin@smi.com`
- كلمة المرور المؤقتة: `SMI#7uQ2!mA9@2026`

### المعلم

- البريد: `teacher@smi.com`
- كلمة المرور المؤقتة: `SMI#7uQ2!mA9@2026`

### الطالب

- Student Code: `SMI-99999`
- Student Card Number: `SMI-ELD-220112`

غيّر كلمة مرور الإدارة والمعلم مباشرة بعد أول دخول. ملف إعادة التعيين اختياري ولا يلزم تشغيله إن كانت لديك حسابات صحيحة.

## 7. افحص الجاهزية

بعد دخول الإدارة افتح:

```text
/admin/system-health.php
```

وتأكد من نجاح فحوص:

- الاتصال بقاعدة البيانات.
- الجداول والأعمدة.
- امتدادات PHP.
- صلاحيات مجلدات الرفع.
- عدم وجود ملفات PHP داخل `uploads`.

## 8. اختبر في بيئة تجريبية

نفّذ الاختبارات التالية قبل فتح النظام للطلاب:

1. دخول الإدارة والمعلم والطالب.
2. إنشاء دورة تجريبية وتسجيل طالب فيها.
3. إنشاء جلسة وتسجيل حضور بالكود.
4. إنشاء واجب وتسليمه وتصحيحه.
5. إنشاء اختبار بسيط وإرسال محاولة.
6. التأكد من ظهور الدرجة النهائية.
7. رفع مادة PDF وصورة فقط.
8. إصدار شهادة لطالب مستوفٍ للشروط.

## الصلاحيات المقترحة

- الملفات: `0644`
- المجلدات: `0755`
- مجلدات الرفع: `0755`
- لا تستخدم `0777` إلا مؤقتًا للتشخيص، ثم أعدها فورًا.
