Releases: chamilo/chamilo-lms
v2.0
Version 2.0 is a major stable version that follows v1.11.*, and in particular the release of v1.11.38.
Although we have tested the migration from 1.11 to 2.0, we recommend users wait for version 2.1 (in a few months) before migrating any large-sized Chamilo portal to 2.0, as this version might suffer from some uncaught issues bound to the use of a newer version with many new dependencies.
New projects should start using Chamilo 2.0 straight away. It's full suppport for PHP 8.2 and PHP 8.3 and its single-folder permissions setting makes it much easier to install today than Chamilo 1.11.
Synthesis
This version has:
- complete support for more than 60 languages
- complete support for PHP 8.2 & 8.3
- integrated support for 5 AI models (chat, image and video generation, document treatment)
- integrated support for different authentication platforms
- integrated support object-type storage services
- many more API services
- many integrated Symfony, VueJS and Tailwind elements
New features
This version includes the following new features:
- Admin: Add access URL chooser for users with multiple active portals
- Admin: Extra fields now have a description field, which allows you to show what you expect from users filling those.
- Admin: Added the roots of a role-based permissions system. Not functional yet but should be done by stable. Load through /permissions (not the definitive path) to get a sneak peak.
- Admin: Added pre-deletion of users as safeguard against user mistakes .
- Admin: Privacy: Add auto-remove option to delete extra fields when anonymizing users .
- Admin: Added "News from Chamilo" and "Support" blocks (can be disabled) in the admin section. This will allow us to communicate with admins about updates, security updates and global events, between others, in a non-intrusive way.
- Admin: Allow admin settings in the web interface to be overwritten by settings in config/settings_overrides.yaml
- Admin: Add course/session report with links to tools
- Admin: Add duplicate_specific_session_content_on_session_copy setting to automate the re-using of session-specific content when copying a session
- Admin: Add content type items report
- Admin: Add reminder for GDPR article 19 on terms edit
- Admin: Add support for third-party data exchanges in GDPR section
- Admin: Add advanced MultiURL management for courses
- Admin: Add session admin custom home page
- Admin: Add "validation" server type to configuration settings and generalize variable processing
- Admin: Add settings for Chamilo latest news and support block
- Admin: Add global setting hosting_limit_users_per_course to limit the number of possible subscriptions to a course (only useful in communitarized portals where there is some abuse)
- Admin: Add setting for session admin certificate download and expand sidebar menu for single item
- Admin: Add JSON template system and migration
- Admin: Add bulk user assignment and removal from URLs via CSV import
- Admin: Add CSV user import/removal with breadcrumbs for access URLs
- Admin: Add security section with report on failed logins
- Admin: Enable logo changes with custom styles in colors page
- Admin: health check box on admin page
- Admin: Add icon with setting category and variable in settings page (only in dev server mode)
- Admin: Add new page to assign one auth source to multiple users
- Admin: Add question bank direct menu access to the question manager
- Admin: Enforce global users-per-course limit on course subscriptions
- Admin: Add support for S3-compatible storage endpoints
- Admin: Recover users list by language feature in session-list
- Admin: Create Tracking block to gather tracking-related entries in admin section
- Admin: Add icons list link to System block for developers
- Admin: Add introduction text to admin dashboard
- AI: Add support for Gemini, Grok, Mistral
- Announcement: Add event reminders to event created from announcement .
- Announcement: Add support to send announcement to a class
- API: Add API endpoint for Documents usage controller
- Assignment: Add required file extension option
- Assignment: Add AI task grader
- Assignment: Add labels to assignment action icons
- Attendance: Add duration to attendance events (e.g. set each attendance session to '60 minutes' or so)
- Attendance: Add multi-level attendance grading (present, absent, late, very late, justified absence)
- Attendance: make an attendance complete if participating in 1 date only
- Auth: Add new config params tenant, force_logout, provisioning, update_users, group_id, existing_user_verification_order, deactivate_nonexisting_users, script_users_delta, script_usergroups_delta and group_filter_regex for Azure authentication
- Auth: Add command to synchronize user groups from Azure
- Auth: Add LDAP authenticator
- Auth: Allow authentication through LDAP in login form
- Auth: Add config param to force one login method only
- Auth: Add SCIM support
- Auth: Add support for preferredLanguage attribute in Azure authenticator
- Calendar: Added collective events management in calendar (invite other users as participants to the event)
- Calendar: Add clickable course links in agenda events
- Calendar: Add a color of your choice in the agenda
- Calendar: Add session plan and calendar schedule views
- Catalogue: Add "Catalogue access" tab to restrict visibility by usergroup
- Chat: Add global chat AI tutor: exam lock, prompt, and history
- Classes: Add option to unsubscribe a class from a course without removing students
- CMS: Added CMS-type management of additional pages, including contact forms. A default install will add empty Home, FAQ, Demo and Contact pages).
- Completed translations with AI for all languages
- Console: Add import-access-url command to import URLs from an XLSX file
- Course: Add auto-launch with navigation back to course home
- Course: Implement infinite scroll to load more than 30 courses on your courses list
- Course: Add email setting to notify students on manual course subscription
- Course: Add improvements and fixes in category management
- Course: Add toggle to show/hide "(free)" non-enrolled users in tracking table
- Course homepage: Added possibility to re-order tools on course homepage.
- Course progress: Add course home progress overview
- Display: Add blocks decoration on admin page
- Display: Show loading indicator in modal before content is loaded
- Display: Update default avatar to SVG to avoid pixelated default pictures
- Display: Add meta tag identifying Chamilo 2 as the underlying app
- Document: Add support for URL-specific document variations. One document can be presented as a variation in a secondary URL. This requires editing from the main URL's document tool.
- Document: Add LP usage warning when deleting documents
- Document: Safely attach shared files to multiple courses
- Document: Implement genAI video generation
- Document: Implement genAI image generation
- Document: Add AI content analyzer
- Documentation: Add Windows installation guide
- Exercise: Add export attempts' results to PDF
- Exercise: Add email sending for reviewed attempts
- Exercise: Show question usage across courses/sessions in edition view
- Exercise: Implement AI-Powered Open Answer Grading
- Exercise: Add bulk PDF export and ZIP download
- Exercise: Add media questions
- Exercise: Implement Page Break question type and AJAX navigation
- Exercise: Add cancel/restore steps to annotation-type question
- Exercise: Generate test from document (with AI helpers)
- Extrafield: Support duration extra field (hh:mm:ss)
- Glossary: Add AI glossary term generator
- Gradebook: Add minimum score validation and highlight unmet scores in gradebook. This allows teachers to set a minimum limit (an exclusion score) to gradebook items.
- Gradebook: Add support for min_score in Evaluation forms
- Gradebook: Add publish flag to GradebookCertificate
- Gradebook: Add certificate validity (in days) to gradebook (add certificate_validity_period column to gradebook_category)
- Install: Added installation logs for better debug capabilities on install/migrations. Migrations can now be executed step by step if needed
- Install: Add .env detector in public/main/install/index.php
- Internal: Add catalogue visibility filter to decide which courses or sessions appear there or not, and add toggle icon for courses. If no course or session is selected, all courses and sessions appear. If any course or any sessions is selected/toggled from the admin list of courses or sessions, only this one appears
- Internal: Enable Encore versioning for better JS cache management (allows JS libraries to work automatically with URLs that include a new version number on each cache update)
- Internal: Add support for reverse proxies by taking the TRUSTED_PROXIES settings from .env into account (allows Chamilo to fully work behind a reverse proxy handling the SSL layer, between others)
- Internal: Add new user registration report with date range and creator stats
- Internal: Add tracking to all resource event
- Internal: Add command to deactivate users without active sessions
- Internal: Add setting to limit number of same e-mails
- Internal: Add OpenAPI description for User resource
- Internal: Add AzureSyncState entity. Allows saving the last state of synchronization by commands
- Internal: Add Query Caching Support and Demo Endpoint
- Internal: Create default callback script that enables a videoconference system to send activity information back
- Internal: Add script to check for missing language terms
- Internal: Add user/course progress, certificates & gradebook stats
- Internal: Centralize TinyMCE config via tiny-settings.js (Vue + legacy)
- Internal: Add support for IIS web server (web.config)
- Internal: Add useConfirmation composable for reusable confirmation dialogs
- Internal: Add public legal links to l...
v2.0.0 RC 3
What's Changed
- Internal: Fix typo in renamed editor settings by @christianbeeznest in #7932
- Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #7927
- Course: Improve course import and backup handling - refs #6958 by @christianbeeznest in #7934
- [c2] LP: Deprecate and disable AICC support functionality by @AngelFQC in #7936
- Course: Improve Moodle backup export compatibility - refs #6958 by @christianbeeznest in #7937
- Course: Fix C2 MBZ document import and asset path handling - refs #6958 by @christianbeeznest in #7942
- Language #fix translate HTML in document to show the content in the s… by @NicoDucou in #7941
- Course: improve MBZ backup and restore coverage for Chamilo resources - refs #6958 by @christianbeeznest in #7952
- Exercise: Fix Aiken AI import and question cleanup - refs #7577 by @christianbeeznest in #7954
- Course: Use course description tool content in catalogue popup - refs #7344 by @christianbeeznest in #7957
- Display: Truncate course card titles to one line by @christianbeeznest in #7958
- Convert skills ranking page to Vue by @ywarnier in #7959
- User: Fix terms and conditions fallback and personal data flow - refs #7944 by @christianbeeznest in #7960
- User: Fix account edit password flow and required field markers - refs #7944 by @christianbeeznest in #7963
- Internal: Rename Azure extra field labels to EntraID - refs #7944 by @christianbeeznest in #7964
- Convert admin users list from legacy to Vue by @ywarnier in #7965
- Internal: Improve access detail reports and fix learner PDF flow- refs #7944 by @christianbeeznest in #7966
- Admin: Create Tracking block to gather tracking-related entries from other locations on and in the admin section by @ywarnier in #7967
- Listicons by @ywarnier in #7968
- Catalogue fixes - refs #7344 by @ywarnier in #7969
- Internal: Include never-logged users in inactive reporting - refs #7944 by @christianbeeznest in #7971
- Admin: Fix exercise category report grid rendering - refs #7944 by @christianbeeznest in #7973
- Message: Add audio preview for message attachments - refs #7944 by @christianbeeznest in #7974
- Social: Fix friends breadcrumb label - refs #7944 by @christianbeeznest in #7975
- Social: Fix friendship invitation message locale - refs #7944 by @christianbeeznest in #7976
- Security: Add access filters to a number of services - refs #7671 by @ywarnier in #7972
- Skill: Fixes to skill wheel by @ywarnier in #7977
- Plugin: Add ONLYOFFICE support to documents and learnpath - refs #7533 by @christianbeeznest in #7978
- Internal: Fix OnlyOffice config signing and C2 file persistence - refs #7533 by @christianbeeznest in #7979
- Plugin: Prevent unsafe reloads in OnlyOffice editor - refs #7533 by @christianbeeznest in #7980
- Plugin: OnlyOffice: add contextual return URL for documents and learnpath - refs #7533 by @christianbeeznest in #8020
- Plugin: OnlyOffice: disable go-back in embedded learnpath - refs #7533 by @christianbeeznest in #8021
- Convert legacy course_list.php to Vue by @ywarnier in #8019
- Courselist by @ywarnier in #8022
- Admin: Fix compatibility with legacy requests that use a link to the admin course list with a keyword by @ywarnier in #8023
- Sessionlist by @ywarnier in #8024
- Internal: fix: allow Symfony-role admins to edit users without legacy admin table entry by @christianbeeznest in #8025
- Course: Adapt document path lookup for C2 export - refs #7400 by @christianbeeznest in #8026
- Admin: Optimize session list loading by @ywarnier in #8027
- Security: Filter LDAP injection possibility in query strings - refs #7583 by @ywarnier in #8028
- Adminlistdesign by @ywarnier in #8030
- Securehashes by @ywarnier in #8033
- Internal: Convert action icons to BaseButton in admin user/course/ses… by @ywarnier in #8032
- Plugin: Integrate LTI provider and client integration - refs #2741 by @christianbeeznest in #8034
- Sessionlist by @ywarnier in #8035
- Plugin: Improve XApi plugin integration and runtime - refs #2666 by @christianbeeznest in #8038
- Webservice: Move tracking stats endpoints to /api/tracking - refs #23304 by @christianbeeznest in #8018
- Attendance: Enable attendance lock toggle for teachers by @christianbeeznest in #8044
- Internal: fix: rename extra fields breadcrumb from UserFields to Profiling by @christianbeeznest in #8045
- Course: Fix course catalog subscription limit state by @christianbeeznest in #8047
- Learnpath: Fix LP empty document creation and dropdown layout by @christianbeeznest in #8048
- Assigment: Fix assignment feedback access and grading flow by @christianbeeznest in #8049
- Forum: Fix empty forum dates on edit by @christianbeeznest in #8050
- Plugin: Improve LTI provider and fix XApi compatibility by @christianbeeznest in #8051
- Internal: fix: remove eval() RCE vulnerability in decodeSettingArray by @christianbeeznest in #8052
- Plugin: Improve IMS LTI 1.3 external tool setup and validation by @christianbeeznest in #8053
- Plugin: Fix XApi hooks and cron flow in C2 - refs #2666 by @christianbeeznest in #8054
- Plugin: Enhance Pens plugin workflow and management by @christianbeeznest in #8056
- Plugin: Refactor and restore Test2Pdf plugin by @christianbeeznest in #8057
- Plugin: Implement Tour plugin with dynamic steps by @christianbeeznest in #8059
- Plugin: Adapt CardGame plugin for C2 dashboard widget by @christianbeeznest in #8060
- Plugin: Hide non-stable plugins from admin list by @christianbeeznest in #8062
- Plugin: Adapt PauseTraining plugin for C2 by @christianbeeznest in #8064
- Plugin: Refine plugin regions UI and selected card focus by @christianbeeznest in #8065
- Plugin: Render pre_footer plugins in Vue and stabilize CardGame loading by @christianbeeznest in #8066
- Plugin: Improve H5P import plugin flow and rendering - refs #2667 by @christianbeeznest in #8067
- Document: Implement documents download-all ZIP export - refs #4732 by @christianbeeznest in #8069
- Internal: Expose helper text for extra fields - refs #1753 by @christianbeeznest in #8070
- Course: Exclude group-specific data from course backup/restore - refs #3980 by @christianbeeznest in #8071
- Security: Add MIME-type allowlist to prevent XSS in social post attachments by @AngelFQC in #8068
- Plugin: CardGame: Add conditionally render from backend by @AngelFQC in #8072
- Plugin: Polish BuyCourses plugin translations and validate payment flow - refs #2614 by @christianbeeznest in #8074
- Plugin: BuyCourses: add missing files for process flow - refs #2614 by @christianbeeznest in #8075
- Internal: Fix personal file access in social posts by @christianbeeznest in #8076
- Social: Improve social wall loading and navigation - refs BT#23337 by @christianbeeznest in https://github.com/chamilo/chamilo-l...
v1.11.38
Chamilo 1.11.38 is a security and bugfix release on top of 1.11.36. For any significant change, please check the 1.11.30 release notes in the documentation/changelog.html.
What's Changed
- Security: Many fixes, including to CRITICAL vulnerabilities
- Course: Improve Moodle export for quiz questions and embedded files - refs BT#21977 by @christianbeeznest in #7674
- LP: Deprecate and disable AICC support functionality by @AngelFQC in #7935
- Course: Fix Moodle export titles, visibility and embedded images - refs BT#21977 by @christianbeeznest in #8017
Full Changelog: v1.11.36...v1.11.38
v2.0.0 RC 2
This is a Release Candidate (RC), meaning it is NOT finished yet, but it is reasonably stable and can be considered (carefully) for production. It can be used in production but only in a controlled environment with skilled PHP engineers around in case something goes wrong. To install this beta version for testing, please read /README.md.
What's Changed
- Internal: Avoid logging AI base provider fallback by @christianbeeznest in #7395
- Course: Moodle export: add activities meta exports (Announcements, Attendance, Calendar, Gradebook, etc.) - refs #6958 by @christianbeeznest in #7027
- Exercise: Fix legacy checkbox styling (spacing + primary checked state) - refs #7378 by @christianbeeznest in #7396
- Dropbox: Improve Dropbox UI: single upload button + received description + bulk actions - refs #7391 by @christianbeeznest in #7397
- Admin: Fix session course copy component + refresh session enrolment UI - refs #3655 by @christianbeeznest in #7403
- Learnpath: LP final item: filter skills by gradebook category - refs BT#23100 by @christianbeeznest in #7409
- Social: Fix IDOR authorization in SocialController legal/privacy endpoints by @christianbeeznest in #7410
- User:Improve user information page layout (Tailwind redesign) by @christianbeeznest in #7413
- Bump tar from 7.5.3 to 7.5.6 by @dependabot[bot] in #7405
- Internal: Fix exam reporting tool visibility (use ResourceLink visibility) by @christianbeeznest in #7416
- Internal: Improve tracking reports UI & responsive grids by @christianbeeznest in #7417
- Internal: Fix missing Blueimp File Upload CSS warnings (conditional asset include) by @christianbeeznest in #7418
- Internal: Fix breadcrumb consistency and legacy URL normalization by @christianbeeznest in #7419
- Announcement: Fix announcements & email attachments handling by @christianbeeznest in #7420
- Link: Improve links UI: icon-only actions, PDF export, and drag-and-drop reordering by @christianbeeznest in #7422
- Internal: Fix ResourceListener currentUser handling for PersonalFile in CLI/migrations by @christianbeeznest in #7414
- Internal: Fix course access tracking: prevent detached User persist errors by @christianbeeznest in #7423
- Learnpath: Fix student empty-state message in Learning Paths by @christianbeeznest in #7424
- User: Fix profile edit issues (hide deprecated theme, resolve CSRF) by @christianbeeznest in #7425
- Admin: Add health check file permissions checks - refs #7352 by @christianbeeznest in #7426
- Course: Improve course settings form defaults and UI behavior - refs #7412 by @christianbeeznest in #7427
- Course: Fix course tools API: handle missing plugin tool handlers & normalize tool names - refs #7415 by @christianbeeznest in #7428
- Learnpath: Implement SCORM package replacement (LP update) - refs #5151 by @christianbeeznest in #7429
- Internal: Improve teacher access permissions for reporting pages by @christianbeeznest in #7436
- Course: Allow using a course as a template for new course creation - refs BT#22584 by @christianbeeznest in #7439
- Session: Enable session duplication with session-specific content - refs BT#22254 by @christianbeeznest in #7440
- Search: Fix xapian search UI: accents and in-word highlighting - refs #7437 by @christianbeeznest in #7441
- Security: Add controller voters & tighten access checks - refs #7407 by @christianbeeznest in #7442
- Course: Fix session-specific course introduction display - refs #7443 by @christianbeeznest in #7446
- Assigment: Fix Doctrine detached User when creating assignments by @christianbeeznest in #7447
- Internal: Fix migration: fallback rewrite for legacy /courses/*/document links by @christianbeeznest in #7448
- Internal: Fix course_homepage intro migration for session context by @christianbeeznest in #7449
- Exercise: Improve exercise management: teacher visibility icon + question pool fixes by @christianbeeznest in #7450
- Exercise: Fix exercise list query parameter binding (Doctrine too many parameters) by @christianbeeznest in #7452
- Document: Show documents table loading spinner immediately by @christianbeeznest in #7453
- Internal: Improve user profile layout by @christianbeeznest in #7454
- Bump phpunit/phpunit from 9.6.31 to 9.6.33 by @dependabot[bot] in #7451
- Bump tar from 7.5.6 to 7.5.7 by @dependabot[bot] in #7465
- Session: Fix session-specific item copy in course duplication by @christianbeeznest in #7471
- Install: Fix install redirect when session/DB not ready - refs #7224 by @christianbeeznest in #7330
- User: Fix user profile timezone field visibility by @christianbeeznest in #7474
- User: Fix missing sec_token after login redirect by @christianbeeznest in #7475
- User: Remove double validation step from registration form - refs #7459 by @christianbeeznest in #7478
- Course: Fix direct registration redirect to course/test - refs #7455 by @christianbeeznest in #7479
- Course: Alignment of addLabel() item in course settings - refs #7456 by @christianbeeznest in #7480
- Course: Fix external shortcut links on course homepage - refs #7467 by @christianbeeznest in #7482
- Learnpath: fix navigation & loader when TOC is hidden - refs #7469 by @christianbeeznest in #7483
- Document: Fix documents listing in session to include base course content - refs #7460 by @christianbeeznest in #7485
- Bump jspdf from 4.0.0 to 4.1.0 by @dependabot[bot] in #7484
- User: Improve Courses/Sessions list loading - refs #3855 by @christianbeeznest in #7487
- Internal: Migration: prevent document duplicates and improve file link rewrite by @christianbeeznest in #7477
- Internal: Add cookie consent banner and legal menu links - refs BT#23212 by @christianbeeznest in #7489
- Parkur: Fix feature scenarios for Parkur tests by @Ilyassbennanii in #7457
- Internal: Hide system folders in Documents tool using platform settings by @christianbeeznest in #7494
- Internal: Add public legal links to login and sidebar - refs BT#23212 by @christianbeeznest in #7495
- Course: Fix duplicate assignments when copying session-only content - refs BT#22588 by @christianbeeznest in #7496
- Course: Fix session course copy: gradebook restore + wiki home content - refs BT#22588 by @christianbeeznest in #7499
- User: Use registration.allow_double_validation_in_registration for double validation - refs #7459 by @christianbeeznest in #7500
- Learnpath: Fix SCORM LP top menu overlap and next navigation - refs #7469 by @christianbeeznest in #7501
- Gradebook: Fix gradebook scoring for “Require unique presence” attendance - refs #7214 by @christianbeeznest in #7502
- Admin: Enhance statistics pages UI by @christianbeeznest in #7503
- Admin: Improve admin questions listing (filters, pagination, previews, and safe cross-course usage mapping) by @christianbeeznest in #7504
- Learnpath: Fix Chamilo LP next/prev navigation when TOC is hidden - refs #7469 by @christianbeeznest in #7508
- Gradebook: Fix attendance normal mode max score in gradebook - refs #7214 by @christianbeeznest in #7509
- User: Fix mail confirmation in registration settings - refs #7506 by @christianbeeznest in #7510
- Admin: Improvements to admin stats - refs #7505 by @chr...
v1.11.36
Chamilo 1.11.36 is mostly a security release on top of 1.11.34. For any significant change, please check the 1.11.30 release notes.
Full Changelog: v1.11.34...v1.11.36
v1.11.34
Chamilo 1.11.34 is mostly a security release on top of 1.11.32. For any significant change, please check the 1.11.30 release notes.
What's Changed
- Session: Replace session course ordering by arrows for drag and drop on resume_session and always available - refs BT#22724 by @NicoDucou in #6425
- Tracking: add global parameter to enable theoretical time for course on myStudent tracking and resume session - refs BT#22723 by @NicoDucou in #6434
- Plugin: Fix missing icon for Google Meet plugin on course homepage by @christianbeeznest in #6491
- User: Enforce unique extra‑field per URL on user creation - refs BT#22802 by @christianbeeznest in #6512
- User: Improve user import and extra‑field validation - refs BT#22802 by @christianbeeznest in #6514
- Fixpendingattemptexcelreport by @yverhenne in #6488
- Feature : add PDF export to time report by @yverhenne in #6483
- Ticket : add subject to ticket xls export by @yverhenne in #6494
- Fix total courses progress calculation in mystudent.php by @yverhenne in #6499
- Allow category managers to view all tickets in his category by @yverhenne in #6501
- add-date-filter-to-pending.php by @yverhenne in #6526
- Tracking:#Enable improved tracking section in main/mySpace/myStudents.php by @yverhenne in #6531
- Tracking: #improve-option-summary-section-in-mystudent.php by @yverhenne in #6600
- Add sorting by date and search by user in pending.php by @yverhenne in #6672
- improve search and export ticket by @yverhenne in #6691
- mystudent.php : add optional subscription column in student session details by @yverhenne in #6776
- Exercise: Prevent duplicate question creation on Hotspot zone validation - refs BT#22899 by @christianbeeznest in #6788
- User: Account unification: safe merge of duplicates by extra field - refs BT#22960 by @christianbeeznest in #6798
- Adjusted subscribeUsersToSession to preserve course-level unsubscript… by @yverhenne in #6857
- Learnpath: Enable drag-and-drop reordering for categories and lessons - refs BT#22963 by @christianbeeznest in #6912
- Course description: Remove XSS when showing title by @AngelFQC in #6662
- Allow-teachers-to-access-tracking-of-all-courses by @yverhenne in #6934
- improve option Show subscription column by @yverhenne in #6960
- Tracking: Add multi-session selector and bulk certificate export in session filter - refs BT#23109 by @christianbeeznest in #7110
- Tracking: Use advanced session multiselect in certificates session report - refs BT#23109 by @christianbeeznest in #7115
- Course: Fix course backup import for accented document paths - refs BT#23090 by @christianbeeznest in #7117
- Données corrompues lors des copies des questions MATCHING_COMBINATION… by @LudiscapeXApi in #7136
- Course: Moodle export: mirror Documents tree; use LP item titles; restore document items - refs BT#21977 by @christianbeeznest in #6923
- Learnpath: Fix course backup import and LP restore flow - refs BT#23189 by @christianbeeznest in #7472
- Elfinder file manager: Fix Multi-URL Mode Document Access Issue in Chamilo 1.11.x by @juancp-contidosdixitais in #5657
- Tracking: Fix visibility of courses for HR managers - refs #7113 by @ywarnier in #7566
- Survey: Normalize survey_type to int to avoid strict type mismatch on PHP 8.3 - refs #6841 by @ywarnier in #7567
- Learnpath: Remove validation of quiz score against max score (only min score matters) - refs #6745 by @ywarnier in #7572
- Fix conditional check for quiz result validation by @LudiscapeXApi in #6745
- New Feature: Add phone number search to user search functionality by @contidos in #7132
- 7176 by @ywarnier in #7574
- Remove invisible Unicode characters that can cause by @LudiscapeXApi in #7176
- 7196 by @ywarnier in #7575
- Update customcertificate to allow access to Sessions Admins by @nosolored in #7461
- Update customcertificate to allow access to Sessions Admins by @nosolored in #7462
- Course: Fix Moodle export file references and LP activity mappings - refs BT#21977 by @christianbeeznest in #7593
- PHP8 compatibility improvements by @ywarnier in #7602
- Security: Add validation in personal course categories by @ywarnier in #7628
New Contributors
- @yverhenne made their first contribution in #6488
- @contidos made their first contribution in #7132
Full Changelog: v1.11.32...v1.11.34
v2.0.0 RC 1
What's Changed
- Documents: Implement genAI image and video generation - refs #7305 by @christianbeeznest in #7353
- Attendance: make an attendance complete if participating in 1 date only - refs #7214 by @christianbeeznest in #7356
- User: Fix error loading flatpickr.min.css in profile edition - refs #7242 by @christianbeeznest in #7357
- Dropbox: Fix Dropbox uploader crash caused by reactive Uppy instance - refs #7345 by @christianbeeznest in #7360
- Internal: Fix ResourceListener creator resolution to prevent duplicate user inserts by @christianbeeznest in #7361
- Survey: Fix survey tool broken due Gradebook::is_active error - refs #7346 by @christianbeeznest in #7362
- Internal: Fix multiple browser loads of header-logo on homepage - refs #7351 by @christianbeeznest in #7363
- Internal: Add local media selection in WYSIWYG editor - refs #7355 by @christianbeeznest in #7364
- Internal: Service worker: disable offline storage and avoid intercepting HTML/API routes by @christianbeeznest in #7366
- Chat: Add AI tutor conversation and message tables - refs #7306 by @christianbeeznest in #7367
- Fix E_NOTICE in api_htmlentities function about deprecation with mbstring by @AngelFQC in #7368
- Gradebook: Fix LP final item certificate and skill issuance - refs BT#23100 by @christianbeeznest in #7119
- CI: Add illustrations for course data filler by @ywarnier in #7370
- User: Fix multi-URL user autocomplete scope - refs #3832 by @christianbeeznest in #7249
- Internal: Fast attendance migration + safe cleanup flags - refs BT#23159 by @christianbeeznest in #7373
- Chat: Add global chat AI tutor: exam lock, prompt, and history - refs #7306 by @christianbeeznest in #7369
- Glossary: Add AI glossary term generator - refs #7309 by @christianbeeznest in #7377
- Assignment: Add AI task grader - refs #7307 by @christianbeeznest in #7382
- Documents: Add AI content analyzer - refs #7308 by @christianbeeznest in #7384
- Portfolio: Fixes related to resource structure #6836 by @AngelFQC in #7375
- Documents: Improve genAI image and video generation - refs #7365 by @christianbeeznest in #7385
- Bump tar from 7.5.2 to 7.5.3 by @dependabot[bot] in #7387
- Exercise: Fix multiple answer True/False radios visibility - refs #7378 by @christianbeeznest in #7388
- Internal: Fix doc picker mode switch and document move after resource_link changes - refs #7355 by @christianbeeznest in #7389
- Dropbox: Fix dropbox download for non-ASCII filenames - refs #7345 by @christianbeeznest in #7390
- Close sessions earlier in AJAX calls (legacy) by @ywarnier in #7383
- Internal: Migrate display.show_tabs from legacy CSV to JSON by @christianbeeznest in #7392
- Internal: Remove deprecated tool_visible_by_default_at_creation setting by @christianbeeznest in #7393
- Internal: Fix migrated tracking header/footer extra content settings by @christianbeeznest in #7394
Full Changelog: v2.0.0-beta.3...v2.0.0-RC.1
v2.0.0 Beta 3
This is a BETA release, meaning it is meant for testing and development only. It should NOT be used in production unless you have a full-time dedicated IT team or official provider supporting you. To install this beta version for testing, please read /README.md.
A beta version, to us, means that the database and files structure are fixed until the stable release, meaning integrators can now join to provide or update plugins that will be delivered later on as part of the upcoming Chamilo 2.0 stable, and translators can start working with us to ensure all translations are updated. Testers can now also report bugs, as these are the main focus of the beta phase. The visual design is NOT important to us in this beta version.
What's Changed
- Forum: visual polish for threads & posts by @christianbeeznest in #6989
- Forum: minor, cleaning code with phpcs by @christianbeeznest in #6990
- Forum: Accept bool visibility to avoid TypeError by @christianbeeznest in #6991
- Admin: Guard unknown settings categories by @christianbeeznest in #6993
- Admin: Improve display blocks in search settings page by @christianbeeznest in #6994
- Course: Add searchselect component in coursecopy form by @christianbeeznest in #7000
- Announcements: Show to non-logged users - refs #5200 by @christianbeeznest in #7001
- Catalogue: Fix natural order for course titles (ASC by default) by @christianbeeznest in #7002
- Calendar: Preserve previously selected event color on edit - refs #4206 by @christianbeeznest in #7003
- Chat: Reuse daily documents file under chat_conversations - refs #5712 by @christianbeeznest in #7007
- Internal: feat(cli): Add single→multi URL converter (includes classes via access_url_rel_usergroup) - refs #4408 by @christianbeeznest in #7008
- Exercise: Translate question type via explanationLangVar - refs #6142 by @christianbeeznest in #7009
- Admin: Improve system status: visuals, metrics, quota handling - refs #6331 by @christianbeeznest in #7011
- Internal: refactor(settings): stabilize api_get_setting parsing and key lookups by @christianbeeznest in #7012
- User: Fix count of courses in user role change - refs #6461 by @christianbeeznest in #7013
- Admin: Integrate and improve export_exercise_results - refs #6638 by @christianbeeznest in #7015
- Admin: Hide "tool_enable" setting for plugins (now access_url_rel_plugin.active) - refs #6649 by @christianbeeznest in #7016
- Plugin: Fix Zoom init errors and add safe fallback when tool handler is missing by @christianbeeznest in #7018
- Chat: Optimize global chat - refs #6812 by @christianbeeznest in #7021
- Chat: Optimize global chat, missing file controller - refs #6812 by @christianbeeznest in #7023
- Exercise: Improve score model in results page - refs #3530 by @christianbeeznest in #7024
- Admin: Improve settings display - refs #6687 by @christianbeeznest in #7025
- Install: Add show/hide toggle for admin password in step 6 summary - refs #3431 by @christianbeeznest in #7028
- Survey: add "Previous question" button - refs #3582 by @christianbeeznest in #7029
- Exercise: Improvements to Question Media entries - refs #6653 by @christianbeeznest in #7030
- Course: Improvements to course tools (student view) - refs #6666 by @christianbeeznest in #7034
- Exercise: Fix calculated question answer generation - refs #7036 by @christianbeeznest in #7043
- Exercise: Fix matching draggable in Quiz - refs #7035 by @christianbeeznest in #7044
- Exercise: Show edit/delete icons in question bank outside tests - refs #7037 by @christianbeeznest in #7045
- Exercise: Use attempt-level wrong count in question stats; add fallback listing - refs #7038 by @christianbeeznest in #7047
- Forum: Fix breadcrumb links: add course/session context - refs #7040 by @christianbeeznest in #7048
- Forum: Fix TypeError on learner grading list - refs #7039 by @christianbeeznest in #7049
- Larnpath: Fix “Details” in LP report: add cid to stats URL - refs #7041 by @christianbeeznest in #7053
- Gradebook: Improve item display and reporting - refs #7054 by @christianbeeznest in #7055
- Course progress: Ensure new sections are active; fix breadcrumb - refs #7052 by @christianbeeznest in #7056
- Attendance: Add tablet/fullscreen view and routing; wire icon action; single-date save flow - refs #7050 by @christianbeeznest in #7057
- Install: Sanitize database name and reflect effective value in summary - refs #3667 by @christianbeeznest in #7058
- Plugin: update BuyCourses from 1.11.x #2562 by @AngelFQC in #6999
- Gradebook: Fix flat view totals with hidden zero-weight categories - refs #3504 by @christianbeeznest in #7061
- Course: Improve settings page visuals and UX by @christianbeeznest in #7062
- Admin: Improve admin index layout by @christianbeeznest in #7063
- Exercise: Fix adaptive feedback modal navigation - refs #3657 by @christianbeeznest in #7065
- Exercise: Fix adaptive test navigation from feedback modal - refs #6195 by @christianbeeznest in #7066
- Internal: Improve post-login redirect to also use URL params - refs #5410 by @christianbeeznest in #7067
- LP: fix duplicate LP items on multi-click save refs #5744 by @Ilyassbennanii in #7005
- Learnpath: Lock resource list, add document templates and update styling - refs #5335 by @christianbeeznest in #7072
- Bump js-yaml from 4.1.0 to 4.1.1 by @dependabot[bot] in #7070
- Learnpath: Allow hidden resources when accessed from learning path - refs #6753 by @christianbeeznest in #7071
- Announcements: Align announcement spacing on public index - refs #5200 by @christianbeeznest in #7076
- Usergroup : Fix usergroup creation by removing the required option on description refs #6289 by @Ilyassbennanii in #7074
- Exercise: Fix drag-matching bullets layout in tests tool - refs #6307 by @christianbeeznest in #7077
- Exercise: Fix question type labels in admin question pool by @christianbeeznest in #7078
- Survey: Fix the survey questions to align horizontally refs #6450 by @Ilyassbennanii in #7073
- Course: Improve course picture upload and live preview by @christianbeeznest in #7079
- Admin: Manage orphan course documents on deletion - refs #6372 by @christianbeeznest in #7068
- Chat: Improve global chat heartbeat and unread handling - refs #6812 by @christianbeeznest in #7083
- Forum: Fix learner list query and SQL error - refs #7039 by @christianbeeznest in #7084
- Internal: Minor, cleaning description api message by @christianbeeznest in #7087
- Admin: Hide fallback user from access URL user list by @christianbeeznest in #7088
- Attendance: Fix calendar editing, duration and sheet stats - refs #6150 by @christianbeeznest in #7091
- Course progress: Add course home progress overview - refs #7052 by @christianbeeznest in #7089
- Internal: Enforce admin and session-admin access control - refs #6327 by @christianbeeznest in #7090
- Admin: Use platform language and timezone on user creation from dashboard - refs BT#23095 by @christianbeeznest in #7093
- Course: Fix student view behavior in course home, glossary and documents - refs #6839 by @christianbeeznest in #7095
- Forum: Improve thread grading page - refs #7039 by @christianbeeznest in https://github.com/chamilo/chamilo-lms/pull/709...
v2.0.0 Beta 1
This is a BETA release, meaning it is meant for testing and development only. It should NOT be used in production unless you have a full-time dedicated IT team or official provider supporting you. To install this beta version for testing, please read /README.md.
A beta version, to us, means that the database and files structure are fixed until the stable release, meaning integrators can now join to provide or update plugins that will be delivered later on as part of the upcoming Chamilo 2.0 stable, and translators can start working with us to ensure all translations are updated. Testers can now also report bugs, as these are the main focus of the beta phase. The visual design is NOT important to us in this beta version.
What's Changed
- Attendance: fix routing — use iid, enforce :id, use course node on back by @christianbeeznest in #6895
- Course: Improve and fix course maintenance (import/copy/recycle/delete) - refs #6870 by @christianbeeznest in #6894
- Course: Fix query for non-registered active users in course tracking - refs BT#23020 by @christianbeeznest in #6901
- Internal: Fix redirect loop for theme assets on undefined-url - refs BT#22944 by @christianbeeznest in #6902
- User: Fix tags editable from edit profile form - refs BT#23006 by @christianbeeznest in #6903
- Announcement: fix calendar event reminders — enable add/remove - refs BT#23005 by @christianbeeznest in #6904
- internal: Convert UTC times to local timezone in event reminder command - refs BT#23004 by @christianbeeznest in #6905
- internal: Fixes to settings migration - refs #6907 by @christianbeeznest in #6908
- internal: Hide public menu on undefined-url; keep language switcher only - refs BT#22944 by @christianbeeznest in #6909
- internal: add ANONYMOUS in fixtures; clean roles via migration (drop SUPER_ADMIN) - refs #6910 by @christianbeeznest in #6911
- Attendance: Fix timepicker increment - refs #6863 by @Ilyassbennanii in #6913
- Announcements: Enable announcements to be visible to ANONYMOUS users - refs #5200 by @Ilyassbennanii in #6914
- Certificate: Migrate to Resource (‘user_certificate’) and replace PersonalFile - refs #5074 by @christianbeeznest in #6922
- Internal: Fix show_tabs inconsistencies - refs #6926 by @christianbeeznest in #6932
- Internal: Update titles/comments for show_tabs and show_tabs_per_role - refs #6926 by @christianbeeznest in #6933
- Exercise: Persist question order & resume position across sessions - refs BT#22999 by @christianbeeznest in #6924
- Course: Add Expor/Import IMC CC 1.3 from course maintenance - refs #6870 by @christianbeeznest in #6921
- Course: Fix broken course import zip/mzb - refs #6870 by @christianbeeznest in #6935
- Migration: Fix HTML rewrite for certificates without resource file - refs #5074 by @christianbeeznest in #6936
- Course: Improve course import for documents - refs #6870 by @christianbeeznest in #6938
- Course: Fix tool intro restore - refs #6870 by @christianbeeznest in #6939
- Course: Avoid duplicated items with full restore - refs #6870 by @christianbeeznest in #6948
- Course: Improve copy/import mzb files - refs #6870 by @christianbeeznest in #6955
- Plugin: BuyCourses - Fix undefined SYS_COURSE_PATH constant using IllustrationRepository - refs #2615 by @christianbeeznest in #6956
- Remove image folder from repository by @christianbeeznest in #6957
- Feat: Add health check box on admin page- ref #6738 by @Coussecousse in #6879
- Attendance: Fix breadcrumb link - refs #6862 by @Ilyassbennanii in #6917
- Settings: Add an icon in settings page - refs #6807 by @Ilyassbennanii in #6952
- Fix: /sessions give error 500 by @Coussecousse in #6897
- Catalogue: Fix showing the correct subscription status - refs #2805 by @Ilyassbennanii in #6953
- Quiz: reimplement export all result functionnality from 1.11.x - refs #6837 by @Coussecousse in #6918
- Chat: Use theme --color-primary-base for global chat FAB by @christianbeeznest in #6961
- Course: Place "Switch to student view" above-right by @christianbeeznest in #6962
- Internal: Normalize breadcrumb styling across app by @christianbeeznest in #6964
- Admin: Fix test-mode icon by using platform.server_type in settings page by @christianbeeznest in #6965
- Internal: Enforce 8px gap between action buttons in toolbar by @christianbeeznest in #6966
- Internal: Data filler: improvements and fixes for users & courses generation by @christianbeeznest in #6967
- Internal: Sidebar open by default on fresh installs by @christianbeeznest in #6968
- Internal: Remove forum_category language extrafield from install by @christianbeeznest in #6969
- Course: fix (resource-selector), correct selection counter by @christianbeeznest in #6972
- Admin: files_info — handle null originalName safely by @christianbeeznest in #6974
- Social: Use primary color for selected message tabs in Account/Home by @christianbeeznest in #6975
- Session: Add 8px spacing between tabs by @christianbeeznest in #6976
- Learnpath: Render lesson-created HTML inline and enable preview from documents by @christianbeeznest in #6977
- Intenal: Fix session title spacing in breadcrumb by @christianbeeznest in #6978
- Internal: Ensure text/html MIME for HTML docs created from learnpath by @christianbeeznest in #6979
- Social: Use theme primary for active states by @christianbeeznest in #6980
- Internal: Restore positional interpolation for selection counters by @christianbeeznest in #6981
- Admin: Translate Settings breadcrumb section label by @christianbeeznest in #6982
- Session: Improve summary UI/UX by @christianbeeznest in #6983
- Session: minor, change style icon color in resume page by @christianbeeznest in #6984
Full Changelog: v2.0.0-alpha.5...v2.0.0-beta.1
v2.0.0 Alpha 5
This is an alpha release, not meant for production use, only for testing and contributing to the development of Chamilo 2.
Visual design is not final.
Database structure should be frozen until Chamilo 2.0 stable 🤞, so external developers are welcome to start contributing extensions to current feature set while using the existing database structure or adding to it through plugins.
The following is an automatically-generated changelog. For a slightly better human-readable changelog, please check public/documentation/changelog.html inside the package, or load "/documentation/changelog.html" in your browser once you have configured it.
Please refer to the install process in README.md (Chamilo's main project page on Github) for installing. This version requires Redis (or similar) for sessions management.
What's Changed
- User: Enable roles combination - refs #5648 by @christianbeeznest in #6206
- Plugins: BBB: Normalize settings to array before in_array() to prevent TypeError - refs BT#22912 by @christianbeeznest in #6711
- Learnpath: Prevent PHP8 TypeError by passing bool to api_is_allowed_to_edit() by @christianbeeznest in #6712
- Tracking: List all course quizzes from myStudents - refs #22912 by @christianbeeznest in #6713
- Admin: Fix course link from list by @christianbeeznest in #6714
- Plugin: EmbedRegistry: replace Doctrine aliases with FQCN; fix deletes with IDENTITY(); correct entity vs id comparisons by @christianbeeznest in #6715
- Internal: Treat setting "name" as fullname , renders firstname+lastname for account edit by @christianbeeznest in #6716
- Admin: Add admin star icon when user has admin roles from user list by @christianbeeznest in #6717
- Admin: Fix settings save from search results by @christianbeeznest in #6718
- Message: Derive FROM from host & validate emails to avoid 500 on invalid recipient by @christianbeeznest in #6720
- Exercice: Fix annotation preview; use AnnotationQuestion and normalize image path - refs #3471 by @christianbeeznest in #6723
- User: Fix missing affectedIds; log creator reassignment on delete - refs #4283 by @christianbeeznest in #6724
- Assignment: Correct deadline/end-date columns - refs #6721 by @christianbeeznest in #6727
- Assignment: Remove “Sent date” (teacher) and hide “End date” (student) - refs #6721 by @christianbeeznest in #6728
- Assignment: Allow student submissions until end date by @christianbeeznest in #6729
- Assignment: Resolve child-entity error on delete - refs #6134 by @christianbeeznest in #6730
- Course: Include optional tracking of users of a course who are not subscribed - refs #5958 by @christianbeeznest in #6734
- Catalog: Improve list of extrafields in course catalog by @christianbeeznest in #6736
- Course: Add toggle to show/hide “(free)” non-enrolled users in tracking table - refs #5958 by @christianbeeznest in #6737
- Course: Fixed and improve filter by extra fields from catalog - refs #6235 by @christianbeeznest in #6740
- Course: Improve optional tracking of users of a course who are not subscribed - refs #5958 by @christianbeeznest in #6741
- Messages: Mark as read on open and update list state by @christianbeeznest in #6744
- Settings: Preserve form values when saving from the search page by @christianbeeznest in #6746
- Notebook: Restore list & CRUD via Doctrine; filter by owner; sort; C2 UI - refs #6743 by @christianbeeznest in #6751
- Ticket: Rename status title 'Close' to 'Closed' - refs #6752 by @christianbeeznest in #6754
- TicketStatus: Close → Closed via data migration - refs #6752 by @christianbeeznest in #6755
- Course: Fix messaging and daily log aggregation in chat tool - refs #5712 by @christianbeeznest in #6756
- Internal: Minor: Avoid undefined index for LDAP enabled by @christianbeeznest in #6760
- Internal: Respect BaseTable row settings; default 0 to 20; fix pagination by @christianbeeznest in #6747
- Wiki: Restore wiki tool - refs #6742 by @christianbeeznest in #6763
- Internal: Update theme assets and mail header - refs BT#22946 by @christianbeeznest in #6765
- Social: Improve personal files: modal upload, i18n, correct folder, auto-refresh, Uppy meta - refs BT#22939 by @christianbeeznest in #6767
- Social: Widen T&C dialog on Personal Data; make personal-data serialization null-safe to avoid 500s - refs BT#22938 by @christianbeeznest in #6768
- Internal: Fix install error on ticket_priority.code - refs #6770 by @christianbeeznest in #6771
- Settings: Update mailer_from_* titles - refs #6758 by @christianbeeznest in #6772
- Internal: Add Burmese language to languages list - refs #6759 by @christianbeeznest in #6773
- Internal: Improve dynamic Vue i18n locale resolution & enable instant switch on login - refs BT#22940 by @christianbeeznest in #6766
- Internal: Localize primeVue confirmDialog Yes/No - refs BT#22940 by @christianbeeznest in #6775
- Internal: Mail fix: show email logo from theme - refs BT#11946 by @christianbeeznest in #6777
- Learnpath: Add auto-launch (rocket) toggle to Vue list when enable_lp_auto_launch is active - refs BT#22947 by @christianbeeznest in #6779
- Course: Unify course cards & image loading across /courses, /admin-dashboard, /favorites; responsive resizing - refs BT#22935 by @christianbeeznest in #6780
- Internal: Centralize TinyMCE config via tiny-settings.js (Vue + legacy) - refs BT#22906 by @christianbeeznest in #6769
- Message: Fix email FROM builder; drop invalid setting fallback by @christianbeeznest in #6781
- Internal: Localize SweetAlert confirm buttons via data-* - refs BT#22937 by @christianbeeznest in #6783
- Exercise: Make exact combination comments optional; TinyMCE plugin hardening - refs BT#22936 by @christianbeeznest in #6784
- Survey: Fix editing after end date and duplicate reporting table - refs BT#22901 by @christianbeeznest in #6785
- Social: Disable social UI when social.allow_social_tool is false (menu + home) - refs BT#22918 by @christianbeeznest in #6786
- User: Remove default DoB=now; make registration emails mirror visible form fields - refs #22823 by @christianbeeznest in #6764
- Internal: Apply THEME_FALLBACK for multi-URL portals without theme - refs BT#22944 by @christianbeeznest in #6782
- Internal: Fix i18n-driven remounts that hid legacy exercise list by @christianbeeznest in #6789
- Internal: Locale: resolve course from cid/cidReq when not in session by @christianbeeznest in #6790
- User: Adjust settings logic in profile edit - refs BT#22823 by @christianbeeznest in #6791
- Exercise: Fix expired attempt no longer stuck as incomplete - refs BT#22933 by @christianbeeznest in #6787
- Internal: Normalize roles (ROLE_*), derive status from roles; fix teacher picker & admin menu by @christianbeeznest in #6792
- Internal: Remove ADMIN vs SUPERADMIN redundancy - refs #6762 by @christianbeeznest in #6774
- Internal: SelectLanguage: include platform default even when unavailable by @christianbeeznest in #6793
- Internal: Fix role preselection in user_edit: normalize option keys and POST checks by @christianbeeznest in #6794
- Learnpath: Count SCORM space: ZIP under course Documents - refs #1970 by @christianbeeznest in #6750
- Migration: Fix "ROLE_" inconsistencies in the database - refs #6797 by @christianbeeznest in #6799
- Security: add security.2fa_enable; hide 2FA UI & skip MFA when disabled by @christianbeeznest in #6800
- Admin: Fix AJAX tog...