> 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/el/odigos-programmatisti/developer-guide/backend/settings-system.md).

# Σύστημα Ρυθμίσεων

Η διαμόρφωση του Chamilo διαχειρίζεται μέσω ενός συνόλου σχημάτων ρυθμίσεων (περίπου 40 από αυτά, ποικίλλουν ανάλογα με τις εκδόσεις) που ορίζουν κάθε ρυθμιζόμενη πτυχή της πλατφόρμας. Βρίσκονται στο `src/CoreBundle/Settings/` — η ακριβής λίστα εκεί είναι η πηγή αλήθειας.

## Πώς Λειτουργεί

Οι ρυθμίσεις είναι:

1. **Ορισμένες** σε κλάσεις σχημάτων (`src/CoreBundle/Settings/*SettingsSchema.php`)
2. **Αποθηκευμένες** στη βάση δεδομένων (`settings_current` πίνακας)
3. **Προσβάσιμες** μέσω της υπηρεσίας `SettingsManager`
4. **Διαχειριζόμενες** μέσω της διαδικτυακής διεπαφής διαχείρισης

## Σχήματα Ρυθμίσεων

Κάθε αρχείο σχήματος ορίζει μια κατηγορία ρυθμίσεων. Κύρια σχήματα:

| Σχήμα                        | Σκοπός                                                                    |
| ---------------------------- | ------------------------------------------------------------------------- |
| `PlatformSettingsSchema`     | Πληροφορίες οργανισμού, ζώνη ώρας, τύπος διακομιστή, χαρακτηριστικά πύλης |
| `SecuritySettingsSchema`     | Προσπάθειες σύνδεσης, CAPTCHA, πολιτική κωδικού, κεφαλίδες HTTP, 2FA      |
| `RegistrationSettingsSchema` | Αυτοέγγραφση, απαιτούμενα πεδία, αυτόματη εγγραφή                         |
| `CourseSettingsSchema`       | Προεπιλογές δημιουργίας μαθήματος, εργαλεία, κατάλογος                    |
| `SessionSettingsSchema`      | Προεπιλογές συνεδρίας, ορατότητα                                          |
| `MailSettingsSchema`         | Διαμόρφωση email, DKIM, ειδοποιήσεις                                      |
| `AiHelpersSettingsSchema`    | Παρόχοι AI, ενεργοποίηση χαρακτηριστικών ανά εργαλείο AI                  |
| `ExerciseSettingsSchema`     | Βαθμολόγηση κουίζ, ανατροφοδότηση, επιλογές ερωτήσεων                     |
| `LearningPathSettingsSchema` | Εμφάνιση LP, προαπαιτούμενα, ρυθμίσεις SCORM                              |
| `DocumentSettingsSchema`     | Όρια ανεβάσματος, επιτρεπτοί τύποι αρχείων, αποθήκευση                    |
| `DisplaySettingsSchema`      | Καρτέλες UI, στοιχεία πλαϊνής γραμμής, θέμα                               |
| `LanguageSettingsSchema`     | Διαθέσιμες γλώσσες, προεπιλεγμένη τοπική ρύθμιση                          |
| `AdminSettingsSchema`        | Email διαχειριστή, επιλογές ειδικές για διαχειριστή                       |

## Πρόσβαση σε Ρυθμίσεις

Σε κώδικα PHP:

```php
// Μέσω υπηρεσίας SettingsManager
$value = $settingsManager->getSetting('platform.site_name');

// Σε παλιό κώδικα
$value = api_get_setting('platform.site_name');
```

Σε πρότυπα:

```twig
{# Ανάγνωση μίας ρύθμισης #}
{{ chamilo_settings_get('platform.site_name') }}

{# Έλεγχος ύπαρξης ρύθμισης #}
{% if chamilo_settings_has('platform.allow_registration') %}
    ...
{% endif %}

{# Λήψη όλων των ρυθμίσεων ως πίνακα #}
{% set settings = chamilo_settings_all() %}
```

## Δομή Ρύθμισης

Κάθε ρύθμιση έχει:

* **Χώρο ονομάτων** — Η κατηγορία σχήματος (π.χ., `platform`, `security`, `ai_helpers`)
* **Μεταβλητή** — Το όνομα της ρύθμισης (π.χ., `site_name`, `allow_registration`)
* **Τιμή** — Η τρέχουσα τιμή
* **Τύπο** — Τύπος δεδομένων (string, boolean, array κ.λπ.)

## Ρυθμίσεις Επιπέδου Μαθήματος

Ορισμένες ρυθμίσεις μπορούν να παρακαμφθούν σε επίπεδο μαθήματος. Αυτές ορίζονται στο `src/CourseBundle/Settings/` και περιλαμβάνουν:

* Ρυθμίσεις ασκήσεων ανά μάθημα
* Ρυθμίσεις εργασιών ανά μάθημα
* Ενεργοποίηση χαρακτηριστικών AI ανά μάθημα

## Ρυθμίσεις Multi-URL

Σε ρυθμίσεις multi-URL, ορισμένες ρυθμίσεις μπορούν να προσαρμοστούν ανά URL πρόσβασης, επιτρέποντας διαφορετικές διαμορφώσεις πύλης από την ίδια εγκατάσταση.

Αυτές οι ρυθμίσεις εμφανίζονται πολλές φορές στον πίνακα `settings`, με διαφορετικές τιμές `access_url`. Προεπιλογικά, όλες οι ρυθμίσεις συνδέονται με `access_url=1`.

## Προσθήκη Νέας Ρύθμισης

1. Προσθήκη ορισμού ρύθμισης στην κατάλληλη κλάση σχήματος
2. Παροχή προεπιλεγμένης τιμής
3. Εκτέλεση μεταφορών βάσης δεδομένων αν χρειάζεται
4. Πρόσβαση στη ρύθμιση μέσω `SettingsManager`
