Settings System
Chamilo's configuration is managed through a set of settings schemas (around 40 of them, varying between releases) that define every configurable aspect of the platform. They live in src/CoreBundle/Settings/ — the exact list there is the source of truth.
How It Works
Settings are:
Defined in schema classes (
src/CoreBundle/Settings/*SettingsSchema.php)Stored in the database (
settings_currenttable)Accessed via the
SettingsManagerserviceManaged through the administration web interface
Settings Schemas
Each schema file defines a category of settings. Key schemas:
PlatformSettingsSchema
Institution info, timezone, server type, portal features
SecuritySettingsSchema
Login attempts, CAPTCHA, password policy, HTTP headers, 2FA
RegistrationSettingsSchema
Self-registration, required fields, auto-subscribe
CourseSettingsSchema
Course creation defaults, tools, catalog
SessionSettingsSchema
Session defaults, visibility
MailSettingsSchema
Email configuration, DKIM, notifications
AiHelpersSettingsSchema
AI providers, feature toggles per AI tool
ExerciseSettingsSchema
Quiz scoring, feedback, question options
LearningPathSettingsSchema
LP display, prerequisites, SCORM settings
DocumentSettingsSchema
Upload limits, allowed file types, storage
DisplaySettingsSchema
UI tabs, sidebar items, theme
LanguageSettingsSchema
Available languages, default locale
AdminSettingsSchema
Admin email, admin-specific options
Accessing Settings
In PHP code:
In templates:
Setting Structure
Each setting has:
Namespace — The schema category (e.g.,
platform,security,ai_helpers)Variable — The setting name (e.g.,
site_name,allow_registration)Value — The current value
Type — Data type (string, boolean, array, etc.)
Course-Level Settings
Some settings can be overridden at the course level. These are defined in src/CourseBundle/Settings/ and include:
Exercise settings per course
Assignment settings per course
AI feature toggles per course
Multi-URL Settings
In multi-URL setups, some settings can be customized per access URL, allowing different portal configurations from the same installation.
Those settings will appear several times in the settings table, with different access_url values. By default, all settings are associated with access_url=1.
Adding a New Setting
Add the setting definition to the appropriate schema class
Provide a default value
Run database migrations if needed
Access the setting via
SettingsManager
Last updated
Was this helpful?