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

Η διαμόρφωση του 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`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chamilo.org/2.x-el/odigos-programmatisti/developer-guide/backend/settings-system.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
