Hello everyone,
The following versions of Totara Learn have now been released:
These versions do contain security fixes, and for this reason we strongly recommend upgrade.
Each release also includes bug fixes and improvements.
A big thanks to the following people for their contributions to this release:
- Carlos Jurado at Kineo UK - Platinum - TL-33066
Kind regards
Riana Rossouw
Release 15.2 (23rd December 2021):
Security issues: TL-27697 User searches within Perform and Engage now always take the fullnamedisplay settings into account Previously the user searches implemented in Perform and Engage features always searched the firstname and lastname fields regardless of what was configured to be shown via the $CFG->fullnamedisplay settings. This has been fixed. The user search now only searches in the fields configured to show up as fullname to not reveal any unwanted information and to provide a better user experience. In addition the results are now correctly alphabetically ordered by the name shown on screen. Please note that this patch can have an effect on behaviour of user searches compared to without the patch. The impact of this depends on what was configured for the fullnamedisplay. The default configuration for fullnamedisplay of most language packs is "firstname lastname" and therefore should not be affected. If you have used a custom value for this setting the experience for users might change with this patch. TL-33289 Fixed XSS vulnerability in video.js (CVE-2021-23414) New features: TL-32824 Administrator can see a list of all OAuth 2 providers Performance improvements: TL-31099 Improved performance of the record of learning course report source Previously the report source for the "Record of learning: Course" has been using a poorly performing base query. This patch introduces a new table which holds the record of learning records for each user and is now used as the base for the report. This will improve the performance of the report considerably. The new table will be automatically filled with the records when a site is upgraded. This can take a few minutes and depends on the size of the database. The table is also updated when users are enrolled in courses, courses are completed or courses are added to learning plans. A new task "\totara_plan\task\update_record_of_learning_task" will run every 10 minutes to keep the new table in sync. In most cases the table will automatically be updated through event observers but in rare cases the task will need to run to keep the table up-to-date. If you experience problems with the Record of Learning report and data not being displayed correctly you can adjust the frequency of the task to your needs. The runtime of the task depends on the size of the database but so we recommend testing its runtime (by running it individually) on the individual site and take this into account when adjusting the frequency. Apart from the base table the report itself is still working in a fully backwards compatible way so any adjustments or embedded reports based on top of it will continue to work as before. TL-32776 Improved the performance of the events report source query in seminars. TL-32858 Improved the performance of the user content restriction for direct and temporary reports in the report builder TL-33003 Improved general performance of report exports Previously when exporting a report or displaying a large number of records in a report display classes for columns were determined for each column and for each row. This lead to a lot of unnecessary class resolution calls which can have a noticeable impact on the performance of the export or display of the report. This patch fixes this and only determines the display class for each column only once. In addition the display class for relationships have been improved. They now cache the result of loading a relationship. TL-33048 Implemented a cache for \core_component::get_namespace_classes() to improve performance TL-33071 Improved performance of the report used in the completion editor TL-33222 Improved performance of capability checks for managing performance activities or reporting on user's responses Previously on a large site the performance of the user activity page could have been severely affected due to the use of the has_capability_in_any_context() function which is very complex and does not scale very well. In places where we don't necessarily need to call this function we changed it to an alternative approach. In other places we optimised the underlying queries so that they can perform as fast as possible. On large sites the reports to manage participation or report on performance activity responses might still have slightly longer loading times but this should be in the normal range for complex reports. If you are using \mod_perform\rb\util::get_manage_participation_sql() or \mod_perform\rb\util::get_report_on_subjects_sql() in your custom code please note that the query you are using this function in has to join the context table with the user id and the user context level. This change was necessary to reduce the number or records the query has to process. TL-33252 Improved the performance of the navigation by optimising notification class loading This improves the performance of most pages throughout the site, but is most notable in development and testing environments where debugging has been enabled or caching has been disabled. For production sites it will still have an impact, but it will be less noticeable. Improvements: TL-32087 An administrator can delete a client provider on client provider settings TL-32088 Oauth2 providers can now be added via the user interface Oauth2 providers can be added to the system by administrators. As part of this change the task that automatically created a LinkedIn Learning provider has been removed - the administrator must now manually add the provider when setting up the integration. TL-32118 Updated data type of fields in Workspaces Engagement report to make them graphable The updated fields are: * Discussions * Comments in discussions * Linked playlists * Linked resources * Files * Members TL-32343 UI improvements on indentation and hover state of the administration tree component TL-32367 Added a new option "--is-pending" to the upgrade cli script The new option enables admins to detect whether an upgrade is necessary without actually running the upgrade. This can be useful for pre-upgrade checks or automation. TL-32490 Added a new filter to show or remove already imported courses in the content marketplace catalog import TL-32592 Implemented truncating the title of the performance activity in the task card on the activity page TL-32764 Added new 'get_progress' method to the activity course completion criterion Progress of activity course completion criterion is now extracted from the 'progress' field where information is available. TL-32788 Added additional spacing when viewing a forum within a course TL-33070 Refactored xAPI receiver code to avoid need to specify component that will handle the request The xAPI statement receiver endpoint no longer expects the component to be specified - instead the receiver handles authentication and basic validation then triggers a xapi_statement_created event that can be handled by any component or plugin. The existing LinkedIn Learning code was updated to make use of the new event. When configuring xAPI reporting in LinkedIn Learning it is no longer necessary to include the component parameter in the xAPI Server URL field. TL-33094 Moved subject and manager recipient classes to core for increased re-usability TL-33187 Added an accessible label to the saved search dropdown in reports TL-33219 Added a new ‘totara/oauth2:manageproviders’ capability to the system administrator default role that allows them to manage the OAuth2 providers Bug fixes: TL-27118 Suppressed sending of redundant notifications for performance activity participant selection TL-27419 The perform elements 'Multiple choice: Single-select' and 'Multiple choice: Multi-select' now auto-focus the most recently added text input field when it is added TL-32533 Ensured any pre-selected courses in the report builder 'Course (multi-item)' filter are removed when the 'is any value' operator is used TL-32705 Fixed handling of repeated submits for seminar room creation and attendee removal forms Prior to this patch, repeated sending of form data could lead to duplicate data in two cases. These were the forms for creating seminar rooms and the confirmation form when removing attendees from a seminar. As part of this patch, a common approach to detect repeated form submits was added to the form class and used in both cases. TL-32720 Removed duplicate keyboard drop targets for course resources TL-32737 Fixed logic for which main menu item is selected When a page URL matches a custom main menu item, this item will now be highlighted. TL-32740 Removed erroneous space before colons in the record of learning TL-32747 Fixed seminar notification substitutions for custom fields when no value is selected If a seminar notification uses a session custom field placeholder and there was no data when the notification was sent then the placeholder would show in the notification sent to the recipient. Now if there is no data for a session custom field the placeholder is removed. TL-32763 Increased available space when searching in a taglist component TL-32784 Fixed case insensitive shortnames not working in course completion upload when it only has one record TL-32885 Fixed search when removing users from a seminar When removing attendees from a seminar, using multiple words as the search term would result in the spaces being cut out and words combined into one search term. This now works as expected and returns the correct results. TL-33056 Fixed Engage notifications not being fully translated TL-33066 Fixed error for temporary manager on rate competencies page when viewing a rater of one of your staff members TL-33096 Improved strings when maintaining notifications TL-33201 Fixed admin tree on responsive screens TL-33253 Fixed an issue where content marketplace activity type was not available in a single activity course Technical changes: TL-33054 Added support for entity snapshots to events TL-33124 Activity modules can now introduce notifications via centralised notifications Notifiable events can be added to all context levels. However, the navigation system does not provide links to add, edit, delete custom notifications at these levels. This change introduces a manage notification link to the activity settings branch in the navigation tree providing there is at least one relevant resolver. TL-33153 Added two new hooks to better facilitate extension of course and activity setting navigation The two new hooks are: # \core\hook\navigation_load_course_settings # \core\hook\navigation_load_course_module_settings These are both executed immediately after the course and module settings navigation has been generated. Tui front end framework: TL-32441 Updated produce() immutable helper to support objects frozen with Object.freeze(), such as Apollo results TL-32823 Updated the form/Radio Tui sample component to only include relevant sample props Also fixed the sample props that weren't yet bound to the component Contributions: * Carlos Jurado at Kineo UK - Platinum - TL-33066
Release 14.7 (23rd December 2021):
Security issues: TL-27697 User searches within Perform and Engage now always take the fullnamedisplay settings into account Previously the user searches implemented in Perform and Engage features always searched the firstname and lastname fields regardless of what was configured to be shown via the $CFG->fullnamedisplay settings. This has been fixed. The user search now only searches in the fields configured to show up as fullname to not reveal any unwanted information and to provide a better user experience. In addition the results are now correctly alphabetically ordered by the name shown on screen. Please note that this patch can have an effect on behaviour of user searches compared to without the patch. The impact of this depends on what was configured for the fullnamedisplay. The default configuration for fullnamedisplay of most language packs is "firstname lastname" and therefore should not be affected. If you have used a custom value for this setting the experience for users might change with this patch. TL-33289 Fixed XSS vulnerability in video.js (CVE-2021-23414) Performance improvements: TL-31099 Improved performance of the record of learning course report source Previously the report source for the "Record of learning: Course" has been using a poorly performing base query. This patch introduces a new table which holds the record of learning records for each user and is now used as the base for the report. This will improve the performance of the report considerably. The new table will be automatically filled with the records when a site is upgraded. This can take a few minutes and depends on the size of the database. The table is also updated when users are enrolled in courses, courses are completed or courses are added to learning plans. A new task "\totara_plan\task\update_record_of_learning_task" will run every 10 minutes to keep the new table in sync. In most cases the table will automatically be updated through event observers but in rare cases the task will need to run to keep the table up-to-date. If you experience problems with the Record of Learning report and data not being displayed correctly you can adjust the frequency of the task to your needs. The runtime of the task depends on the size of the database but so we recommend testing its runtime (by running it individually) on the individual site and take this into account when adjusting the frequency. Apart from the base table the report itself is still working in a fully backwards compatible way so any adjustments or embedded reports based on top of it will continue to work as before. TL-32776 Improved the performance of the events report source query in seminars. TL-32858 Improved the performance of the user content restriction for direct and temporary reports in the report builder TL-33003 Improved general performance of report exports Previously when exporting a report or displaying a large number of records in a report display classes for columns were determined for each column and for each row. This lead to a lot of unnecessary class resolution calls which can have a noticeable impact on the performance of the export or display of the report. This patch fixes this and only determines the display class for each column only once. In addition the display class for relationships have been improved. They now cache the result of loading a relationship. TL-33048 Implemented a cache for \core_component::get_namespace_classes() to improve performance TL-33071 Improved performance of the report used in the completion editor TL-33222 Improved performance of capability checks for managing performance activities or reporting on user's responses Previously on a large site the performance of the user activity page could have been severely affected due to the use of the has_capability_in_any_context() function which is very complex and does not scale very well. In places where we don't necessarily need to call this function we changed it to an alternative approach. In other places we optimised the underlying queries so that they can perform as fast as possible. On large sites the reports to manage participation or report on performance activity responses might still have slightly longer loading times but this should be in the normal range for complex reports. If you are using \mod_perform\rb\util::get_manage_participation_sql() or \mod_perform\rb\util::get_report_on_subjects_sql() in your custom code please note that the query you are using this function in has to join the context table with the user id and the user context level. This change was necessary to reduce the number or records the query has to process. TL-33252 Improved the performance of the navigation by optimising notification class loading This improves the performance of most pages throughout the site, but is most notable in development and testing environments where debugging has been enabled or caching has been disabled. For production sites it will still have an impact, but it will be less noticeable. Improvements: TL-32118 Updated data type of fields in Workspaces Engagement report to make them graphable The updated fields are: * Discussions * Comments in discussions * Linked playlists * Linked resources * Files * Members TL-32367 Added a new option "--is-pending" to the upgrade cli script The new option enables admins to detect whether an upgrade is necessary without actually running the upgrade. This can be useful for pre-upgrade checks or automation. TL-32788 Added additional spacing when viewing a forum within a course TL-33187 Added an accessible label to the saved search dropdown in reports Bug fixes: TL-27118 Suppressed sending of redundant notifications for performance activity participant selection TL-27419 The perform elements 'Multiple choice: Single-select' and 'Multiple choice: Multi-select' now auto-focus the most recently added text input field when it is added TL-32533 Ensured any pre-selected courses in the report builder 'Course (multi-item)' filter are removed when the 'is any value' operator is used TL-32705 Fixed handling of repeated submits for seminar room creation and attendee removal forms Prior to this patch, repeated sending of form data could lead to duplicate data in two cases. These were the forms for creating seminar rooms and the confirmation form when removing attendees from a seminar. As part of this patch, a common approach to detect repeated form submits was added to the form class and used in both cases. TL-32720 Removed duplicate keyboard drop targets for course resources TL-32737 Fixed logic for which main menu item is selected When a page URL matches a custom main menu item, this item will now be highlighted. TL-32740 Removed erroneous space before colons in the record of learning TL-32747 Fixed seminar notification substitutions for custom fields when no value is selected If a seminar notification uses a session custom field placeholder and there was no data when the notification was sent then the placeholder would show in the notification sent to the recipient. Now if there is no data for a session custom field the placeholder is removed. TL-32763 Increased available space when searching in a taglist component TL-32784 Fixed case insensitive shortnames not working in course completion upload when it only has one record TL-32885 Fixed search when removing users from a seminar When removing attendees from a seminar, using multiple words as the search term would result in the spaces being cut out and words combined into one search term. This now works as expected and returns the correct results. TL-33056 Fixed Engage notifications not being fully translated TL-33066 Fixed error for temporary manager on rate competencies page when viewing a rater of one of your staff members TL-33096 Improved strings when maintaining notifications Tui front end framework: TL-32441 Updated produce() immutable helper to support objects frozen with Object.freeze(), such as Apollo results Contributions: * Carlos Jurado at Kineo UK - Platinum - TL-33066
Release 13.15 (23rd December 2021):
Security issues: TL-27697 User searches within Perform and Engage now always take the fullnamedisplay settings into account Previously the user searches implemented in Perform and Engage features always searched the firstname and lastname fields regardless of what was configured to be shown via the $CFG->fullnamedisplay settings. This has been fixed. The user search now only searches in the fields configured to show up as fullname to not reveal any unwanted information and to provide a better user experience. In addition the results are now correctly alphabetically ordered by the name shown on screen. Please note that this patch can have an effect on behaviour of user searches compared to without the patch. The impact of this depends on what was configured for the fullnamedisplay. The default configuration for fullnamedisplay of most language packs is "firstname lastname" and therefore should not be affected. If you have used a custom value for this setting the experience for users might change with this patch. TL-33289 Fixed XSS vulnerability in video.js (CVE-2021-23414) Performance improvements: TL-31099 Improved performance of the record of learning course report source Previously the report source for the "Record of learning: Course" has been using a poorly performing base query. This patch introduces a new table which holds the record of learning records for each user and is now used as the base for the report. This will improve the performance of the report considerably. The new table will be automatically filled with the records when a site is upgraded. This can take a few minutes and depends on the size of the database. The table is also updated when users are enrolled in courses, courses are completed or courses are added to learning plans. A new task "\totara_plan\task\update_record_of_learning_task" will run every 10 minutes to keep the new table in sync. In most cases the table will automatically be updated through event observers but in rare cases the task will need to run to keep the table up-to-date. If you experience problems with the Record of Learning report and data not being displayed correctly you can adjust the frequency of the task to your needs. The runtime of the task depends on the size of the database but so we recommend testing its runtime (by running it individually) on the individual site and take this into account when adjusting the frequency. Apart from the base table the report itself is still working in a fully backwards compatible way so any adjustments or embedded reports based on top of it will continue to work as before. TL-32776 Improved the performance of the events report source query in seminars. TL-32858 Improved the performance of the user content restriction for direct and temporary reports in the report builder TL-33003 Improved general performance of report exports Previously when exporting a report or displaying a large number of records in a report display classes for columns were determined for each column and for each row. This lead to a lot of unnecessary class resolution calls which can have a noticeable impact on the performance of the export or display of the report. This patch fixes this and only determines the display class for each column only once. In addition the display class for relationships have been improved. They now cache the result of loading a relationship. TL-33048 Implemented a cache for \core_component::get_namespace_classes() to improve performance TL-33071 Improved performance of the report used in the completion editor TL-33222 Improved performance of capability checks for managing performance activities or reporting on user's responses Previously on a large site the performance of the user activity page could have been severely affected due to the use of the has_capability_in_any_context() function which is very complex and does not scale very well. In places where we don't necessarily need to call this function we changed it to an alternative approach. In other places we optimised the underlying queries so that they can perform as fast as possible. On large sites the reports to manage participation or report on performance activity responses might still have slightly longer loading times but this should be in the normal range for complex reports. If you are using \mod_perform\rb\util::get_manage_participation_sql() or \mod_perform\rb\util::get_report_on_subjects_sql() in your custom code please note that the query you are using this function in has to join the context table with the user id and the user context level. This change was necessary to reduce the number or records the query has to process. Improvements: TL-32367 Added a new option "--is-pending" to the upgrade cli script The new option enables admins to detect whether an upgrade is necessary without actually running the upgrade. This can be useful for pre-upgrade checks or automation. TL-32788 Added additional spacing when viewing a forum within a course Bug fixes: TL-27118 Suppressed sending of redundant notifications for performance activity participant selection TL-27419 The perform elements 'Multiple choice: Single-select' and 'Multiple choice: Multi-select' now auto-focus the most recently added text input field when it is added TL-32533 Ensured any pre-selected courses in the report builder 'Course (multi-item)' filter are removed when the 'is any value' operator is used TL-32705 Fixed handling of repeated submits for seminar room creation and attendee removal forms Prior to this patch, repeated sending of form data could lead to duplicate data in two cases. These were the forms for creating seminar rooms and the confirmation form when removing attendees from a seminar. As part of this patch, a common approach to detect repeated form submits was added to the form class and used in both cases. TL-32720 Removed duplicate keyboard drop targets for course resources TL-32737 Fixed logic for which main menu item is selected When a page URL matches a custom main menu item, this item will now be highlighted. TL-32747 Fixed seminar notification substitutions for custom fields when no value is selected If a seminar notification uses a session custom field placeholder and there was no data when the notification was sent then the placeholder would show in the notification sent to the recipient. Now if there is no data for a session custom field the placeholder is removed. TL-32885 Fixed search when removing users from a seminar When removing attendees from a seminar, using multiple words as the search term would result in the spaces being cut out and words combined into one search term. This now works as expected and returns the correct results. TL-33056 Fixed Engage notifications not being fully translated TL-33066 Fixed error for temporary manager on rate competencies page when viewing a rater of one of your staff members Contributions: * Carlos Jurado at Kineo UK - Platinum - TL-33066
Release 12.38 (23rd December 2021):
Security issues: TL-33289 Fixed XSS vulnerability in video.js (CVE-2021-23414) Performance improvements: TL-32776 Improved the performance of the events report source query in seminars. Improvements: TL-32367 Added a new option "--is-pending" to the upgrade cli script The new option enables admins to detect whether an upgrade is necessary without actually running the upgrade. This can be useful for pre-upgrade checks or automation. Bug fixes: TL-32533 Ensured any pre-selected courses in the report builder 'Course (multi-item)' filter are removed when the 'is any value' operator is used TL-32705 Fixed handling of repeated submits for seminar room creation and attendee removal forms Prior to this patch, repeated sending of form data could lead to duplicate data in two cases. These were the forms for creating seminar rooms and the confirmation form when removing attendees from a seminar. As part of this patch, a common approach to detect repeated form submits was added to the form class and used in both cases. TL-32737 Fixed logic for which main menu item is selected When a page URL matches a custom main menu item, this item will now be highlighted. TL-32747 Fixed seminar notification substitutions for custom fields when no value is selected If a seminar notification uses a session custom field placeholder and there was no data when the notification was sent then the placeholder would show in the notification sent to the recipient. Now if there is no data for a session custom field the placeholder is removed. TL-32885 Fixed search when removing users from a seminar When removing attendees from a seminar, using multiple words as the search term would result in the spaces being cut out and words combined into one search term. This now works as expected and returns the correct results.
Release 11.47 (23rd December 2021):
Security issues: TL-33289 Fixed XSS vulnerability in video.js (CVE-2021-23414) Bug fixes: TL-32533 Ensured any pre-selected courses in the report builder 'Course (multi-item)' filter are removed when the 'is any value' operator is used TL-32783 Fixed language pack issue when using program notification The German language pack didn't take effect when doing local customisation in a part of Program messages. With this patch, Local Customisation shows the preferred language edited string correctly. TL-32885 Fixed search when removing users from a seminar When removing attendees from a seminar, using multiple words as the search term would result in the spaces being cut out and words combined into one search term. This now works as expected and returns the correct results.
Release 10.51 (23rd December 2021):
Security issues: TL-33289 Fixed XSS vulnerability in video.js (CVE-2021-23414) Bug fixes: TL-32533 Ensured any pre-selected courses in the report builder 'Course (multi-item)' filter are removed when the 'is any value' operator is used
Release 9.60 (23rd December 2021):
Bug fixes: TL-32533 Ensured any pre-selected courses in the report builder 'Course (multi-item)' filter are removed when the 'is any value' operator is used