Hello everyone,
The following versions of Totara Learn have now been released:
- Release Evergreen
- Release 12.11
- Release 11.20
- Release 10.26
- Release 9.37
- Release 2.6.71
- Release 2.5.77
- Release 2.4.73
- Release 2.2.75
These releases contain many fixes and improvements.
Notably they include fixes for upcoming changes in Chrome version 80.
We strongly recommend all sites with end users running the latest version of Chrome upgrade to these releases.
Please read the following changelogs for more information.
Kind regards
Sam Hemelryk
Release Evergreen (25th October 2019):
Key: + Evergreen only Important: TL-22311 The SameSite cookie attribute is now set to None in Chrome 78 and above Chrome, in an upcoming release, will be introducing a default for the SameSite cookie attribute of 'Lax'. The current behaviour in all supported browsers is to leave the SameSite cookie attribute unset, when not explicitly provided by the server at the time the cookie is first set. When unset or set to 'None', HTTP requests initiated by another site will often contain the Totara session cookie. When set to 'Lax', requests initiated by another site will no longer provide the Totara session cookie with the request. Many commonly used features in Totara rely on third-party requests including the user's session cookie. Furthermore, there are inconsistencies between browsers in how the SameSite=Lax behaviour works. For this reason, we will be setting the SameSite to 'None' for the session cookie when Chrome 78 or later is in use. This will ensure that Totara continues to operate as it has previously in this browser. Due to the earlier mentioned inconsistencies in other browsers, we will not set the SameSite attribute in any other browsers for the time being. TL-22692 has been opened to watch the situation as it evolves and make further improvements to our product when the time is right. This change is currently planned to be made in Chrome 80, which we anticipate will be released Q1 2020. Chrome 80 is bringing another related change as well. Insecure cookies that set SameSite to 'None' will be rejected. This will require that sites both run over HTTPS and have the 'Secure cookies only' setting enabled within Totara (leading to the secure cookie attribute being enabled). The following actions will need to be taken by all sites where users will be running Chrome: * Upgrade to this release of Totara, or a later one. * Configure the site to run over HTTPS if it is not already doing so. * Enable the 'Secure cookies only' [cookiesecure] setting within Totara For more information on the two changes being made in Chrome please see the following: * Cookies default to SameSite=Lax * Reject insecure SameSite=None cookies TL-22408 Fixed two issues that could cause the tag name upgrade step to fail As part of the fix for TL-21055 (introduced in 11.17, and 12.8), we created an upgrade step to revert HTML-encoded tag names to their original, non-encoded canonical state. The upgrade step failed to take two conditions into account: multiple tag instances on the same item that resolve to the same canonical tag; and module tags that resolve to the same canonical tag as a course. In these cases, the upgrade simply failed with a database exception. The tags upgrade step has been rewritten to work properly in all situations. TL-22560 Improved the handling of conditional access restrictions that reference deleted items Fixed a bug that prevented editing the access restrictions when a deleted audience, position, or organisation was used as part of a restriction set in them We also made changes to stop removing course activity access restrictions that refer to those deleted items. In previous versions, whenever an audience, position, or organisation was deleted, all access restrictions referring to the deleted item were removed. This could result in learners being able to access sections and activities that they were unable to access before. With this release, access restrictions are kept in place if the item(s) they refer to are deleted. Such restrictions are updated to refer to a 'missing audience', 'missing position', or 'missing organisation', and will prevent access to everybody until either removed or associated with a different item. Please note: * If a 'missing' restriction is part of an OR condition, it will simply not match rather than preventing access. * If a 'must not' restriction is 'missing,' then learners who formerly met the restriction condition will not be restricted any more. * There is no way to recover access restrictions that were previously deleted because they referred to deleted items. TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at https://www.chromestatus.com/feature/4664843055398912 We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release. Performance improvements: TL-21839 Improved the performance of the 'Progress' column within program and certification report sources TL-21853 + Improved the performance of the course and category management interface The contents of each category's 'Actions' cog menu on the 'Course and category management' page is now rendered upon request. This provides a noticeable performance improvement over rendering them all in advance. TL-22262 Improved the performance of the calendar on sites with a large number of seminars per month Calendar events are now filtered for visibility as they are loaded from the database, rather than being checked one-by-one after being loaded. TL-22323 Improved overall in-browser page performance when a large number of popovers are present TL-22421 Added a new database index on role_capabilities (capability, roleid, permission) This index has a profound impact on query performance when resolving capability checks directly against the database. TL-22457 Added a new database index on cache_flags (flagtype, expiry, timemodified) TL-22461 Added a new database index on course (category,sortorder) TL-22471 Initialising HR Import settings for administrators no longer queries the database TL-22473 Optimised the course category management page to preload courses and course counts TL-22474 Optimised the navigation structure performance using totara_course_is_viewable Site navigation was originally using totara_visibility_where when resolving course visibility. It has now been converted to use totara_course_is_viewable, given that the number of courses loaded into the navigation is limited, and in displaying the course within the navigation we must load all of the information to resolve its visibility. TL-22475 Optimised enrol_get_my_courses to use totara_course_is_viewable The enrol_get_my_courses method was originally using totara_visibility_where when resolving course visibility. It has now been converted to use totara_course_is_viewable, given the information available within the function and that in most circumstances enrolled users can see the courses they are enrolled it. TL-22478 Added a new database index on block_instances (blockname) There are several queries within the platform, some that are executed on most pages, that look up block instances by name. While the queries are simple the table itself can grow significantly and having an index on the blockname column aids database performance. TL-22611 Optimised the enrol_get_all_users_courses function to use totara_course_is_viewable Improvements: TL-7967 + Changed the certification workflow to only reset primary certification path on expiry Previously, when a recertification window opened, courses on both primary certification and recertification paths were reset. Now only the recertification path courses will be reset when the recertification window opens. Primary certification path courses will now be reset only on expiry, and only if they are not also on the recertification path. This ensures that courses are only reset when they need to be recompleted, and that progress towards recertification, if applicable, will contribute to primary certification in the event of a user's certification expiring. TL-20397 + Redesigned the user reports page User report page was redesigned replacing the list of reports with a grid-like user interface showing report thumbnails that reflect the nature of the report: * Table reports * Graphical reports (with different thumbnails for each chart type) Added a new button to create new reports to the page that will be shown to users with appropriate permissions. TL-21595 + Added backend support for report templates in report builder TL-21686 + Added inline editing of report titles when viewing a report TL-22051 Implemented a means to bulk delete unstarted course completions belonging to users who are no longer enrolled When users are mistakenly enrolled, and then immediately unenrolled in a course, a course completion record is left behind. This record is marked as un-started, and can be manually deleted using the course completion editor. Manually deleting many thousands of records, as might need to happen when a large audience is accidentally enrolled and then unenrolled from a course, is prohibitively time-consuming. A new CLI script has been added at 'admin/cli/delete_unused_course_completions.php' to accomplish these deletions in bulk. Using the script will trigger an 'Admin CLI script execution, records deleted' event that includes the parameters it was called with. TL-22132 + Added 'Labels' and 'Summary' fields to Report Builder sources Report Builder source classes now have 'sourcelabel' and 'sourcesummary' properties which will be used in the new report creation workflow. TL-22260 Added the control of Report Builder export options at a report level TL-22389 Migrated all documentation links to point to help.totaralearning.com All links to external documentation within the product take the user to the appropriate page in our public product documentation available at help.totaralearning.com TL-22854 Fixed compatibility with PostgreSQL 12.0 Bug fixes: TL-20100 Removed a redundant and inaccurate help popup for appraisal descriptions TL-21346 Fixed seminar restoration when the original seminar had been deleted but still existed within the recycle bin TL-21828 Fixed Behat scenarios attempting to click on select input options after recent changes in Chrome Recent changes in Chrome have led to sporadic issues through our Behat features relating back to the definitions that attempt to click on options within a select input. All affected feature files have been converted to a method that works in all versions of Chrome. TL-21992 + Fixed incorrect graph layouts when using the progress chart type TL-22001 + Fixed minor visual bugs in ChartJS pie and doughnut charts Several small visual improvements have been made to the pie and doughnut chart types within ChartJS: * Chart colours have been adjusted to ensure similar hues no longer appear next to each other in a chart. * Thin white borders have been added between slices. * Increased the inner edge diameter for doughnut charts, reducing their thickness. TL-22207 Block permissions for authenticated users and guests are now restored corectly when restoring a course In addition to the above noted fix the screen displaying information on roles that cannot be mapped during restore now correctly displays built-in role names and overridable roles. TL-22224 Fixed the grade functions of the seminar component to be compatible with other activity components TL-22241 + Fixed the description of date-based dynamic audience rules to match the back-end logic TL-22257 Added a missing capability check to stop an error message while adding an enrolled audience to a course TL-22348 Changed the default timesort for the Grid catalogue Previously the time-based sorting method for the new grid-style catalogue was based on the 'timemodified' value of the learning items being displayed. This has been changed to use the 'timecreated' value instead, giving a more consistent ordering of the learning items. Note: Though the back-end code has been updated, this change will not be visible on the catalogue until the refresh_catalog_data scheduled task is run. If you want to see this change immediately please manually run the task after upgrading, otherwise this change will only be updated on the next scheduled run. TL-22349 Fixed custom navigation parent elements being un-deletable after upgrade TL-22394 Fixed the overflow of long category names within the Grid catalogue Previously if long category names could extend under the tiles when using the Grid catalogue. The maximum width of the category name is now managed, and an ellipsis presented when the category name would exceed the available space. This will require CSS to be regenerated for themes that use LESS inheritance. TL-22398 Fixed a potential problem in role_unassign_all_bulk() related to cascaded manual role unassignment The problem may only affect third-party code because the problematic parameter is not used in standard distribution. TL-22401 Removed unnecessary use of set context on report builder filters page TL-22418 + Fixed schema introspection for GraphQL TL-22419 Corrected link colours within a label course activity This will require CSS to be regenerated for themes that use LESS inheritance. TL-22435 Fixed context used for capability checks during goal userdata exports Previously the goal exports were checking if a user could see their own goals in the system context, however the capability is meant to be used in the user context. This has been rectified where possible. TL-22453 Featured links blocks no longer uses the text colour specified in Basis theme settings The text colour specified in Basis theme settings is designed to work on light backgrounds, not the dark background that the featured links block uses. This will require CSS to be regenerated for themes that use LESS inheritance. TL-22511 Deleting course completions either via the interface or via CLI now correctly purges completion caches TL-22517 Fixed an error in first login tasks when a user has future assignments for multiple programs or certifications If a user had multiple future assignments (due to setting a program due date based on first login for a user who hadn't yet logged in), when the first_login_assignments task ran, an error would be generated and users wouldn't be assigned to the program / certification correctly. TL-22518 Fixed email-based self registration with position, organisation, and manager while logged in as a guest TL-22559 Seminar notification sender no longer reuses the sending user object The reuse of the sending user object when sending notifications from within the seminar occasionally led to an issue where notifications would appear to come from random users. This has now been fixed by ensuring a fresh sending user object is used for each notification. TL-22567 Made sure the 'Front page settings' page can be bookmarked in the administration menu TL-22576 All areas displaying a program or certification fullname are now formatted consistently Prior to this change there were a handful of areas not correctly formatting program and certification full names before displaying them. These have all been tidied up and program and certification fullname is now formatted correctly and consistently. TL-22582 Fixed a race condition in the Grid catalogue page that inadvertently reset filter settings A race condition was identified in the auto-initialise AMD module, whereby components could have been initialised out of order. In situations where the anticipated order of execution was being relied upon this could manifest visible errors such as catalogue filters from a shared URL being incorrectly excluded. This race condition has now been fixed and calls to require AMD modules are now processed in advance of auto-initialisation. TL-22610 Fixed error in HR Import when importing organisation or position custom fields when typeidnumber is mapped When importing organisation or position custom fields using HR Import, if a field mapping was used in the typeidnumber field an error would be thrown causing the import to fail. This has been fixed. TL-22622 Fixed an incorrect count of visible programs which led to missing pagination controls in the interface This is a regression introduced by TL-22060 released in 12.10 last month. The total count variable within prog_get_programs_page() was being incorrectly populated after that change. It is now correctly populated. TL-22632 Fixed the report builder default fetch method setting as its value was not being respected TL-22658 Fixed the display of programs and certifications when folders are added to their image field Folders are now ignored when added to the image field for programs and certifications. The ability to add folders will be removed in a future version by TL-22659. API changes: TL-22248 Checks to confirm a user can log in as another user are now performed by the user access controller 'Login as' permission checks have been consolidated into a new method on the user access controller, \core_user\access_controller::can_loginas() Existing checks within the product have all been converted to use this new method, ensuring that the control checks are applied consistently. TL-22392 Added course creation post definition and validation hooks This change introduced two new hooks: * \core_course\hook\edit_form_definition_after_data * \core_course\hook\edit_form_validation TL-22472 Removed incorrect use of $DB->sql_like() for non-unicode fields SQL code executing LIKE statements on the context path in the database was in some situations using sql_like, which led to collation management being introduced. This was leading to an unnecessary overhead as path is a calculated field for which we always know the character range used. TL-22477 Active string filters per context are now cached using MUC Previously a static variable $FILTERLIB_PRIVATE was used to cache active filters by context during the lifetime of a request. This has been converted to an MUC request cache, allowing for better management and handling both in product and in our testing environments. Contributions: * Davo Smith at Synergy Learning - TL-22518 * Peter Spicer at Catalyst EU - TL-22392
Release 12.11 (25th October 2019):
Important: TL-22311 The SameSite cookie attribute is now set to None in Chrome 78 and above Chrome, in an upcoming release, will be introducing a default for the SameSite cookie attribute of 'Lax'. The current behaviour in all supported browsers is to leave the SameSite cookie attribute unset, when not explicitly provided by the server at the time the cookie is first set. When unset or set to 'None', HTTP requests initiated by another site will often contain the Totara session cookie. When set to 'Lax', requests initiated by another site will no longer provide the Totara session cookie with the request. Many commonly used features in Totara rely on third-party requests including the user's session cookie. Furthermore, there are inconsistencies between browsers in how the SameSite=Lax behaviour works. For this reason, we will be setting the SameSite to 'None' for the session cookie when Chrome 78 or later is in use. This will ensure that Totara continues to operate as it has previously in this browser. Due to the earlier mentioned inconsistencies in other browsers, we will not set the SameSite attribute in any other browsers for the time being. TL-22692 has been opened to watch the situation as it evolves and make further improvements to our product when the time is right. This change is currently planned to be made in Chrome 80, which we anticipate will be released Q1 2020. Chrome 80 is bringing another related change as well. Insecure cookies that set SameSite to 'None' will be rejected. This will require that sites both run over HTTPS and have the 'Secure cookies only' setting enabled within Totara (leading to the secure cookie attribute being enabled). The following actions will need to be taken by all sites where users will be running Chrome: * Upgrade to this release of Totara, or a later one. * Configure the site to run over HTTPS if it is not already doing so. * Enable the 'Secure cookies only' [cookiesecure] setting within Totara For more information on the two changes being made in Chrome please see the following: * Cookies default to SameSite=Lax * Reject insecure SameSite=None cookies TL-22408 Fixed two issues that could cause the tag name upgrade step to fail As part of the fix for TL-21055 (introduced in 11.17, and 12.8), we created an upgrade step to revert HTML-encoded tag names to their original, non-encoded canonical state. The upgrade step failed to take two conditions into account: multiple tag instances on the same item that resolve to the same canonical tag; and module tags that resolve to the same canonical tag as a course. In these cases, the upgrade simply failed with a database exception. The tags upgrade step has been rewritten to work properly in all situations. TL-22560 Improved the handling of conditional access restrictions that reference deleted items Fixed a bug that prevented editing the access restrictions when a deleted audience, position, or organisation was used as part of a restriction set in them We also made changes to stop removing course activity access restrictions that refer to those deleted items. In previous versions, whenever an audience, position, or organisation was deleted, all access restrictions referring to the deleted item were removed. This could result in learners being able to access sections and activities that they were unable to access before. With this release, access restrictions are kept in place if the item(s) they refer to are deleted. Such restrictions are updated to refer to a 'missing audience', 'missing position', or 'missing organisation', and will prevent access to everybody until either removed or associated with a different item. Please note: * If a 'missing' restriction is part of an OR condition, it will simply not match rather than preventing access. * If a 'must not' restriction is 'missing,' then learners who formerly met the restriction condition will not be restricted any more. * There is no way to recover access restrictions that were previously deleted because they referred to deleted items. TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at https://www.chromestatus.com/feature/4664843055398912 We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release. Performance improvements: TL-21839 Improved the performance of the 'Progress' column within program and certification report sources TL-22262 Improved the performance of the calendar on sites with a large number of seminars per month Calendar events are now filtered for visibility as they are loaded from the database, rather than being checked one-by-one after being loaded. TL-22323 Improved overall in-browser page performance when a large number of popovers are present TL-22421 Added a new database index on role_capabilities (capability, roleid, permission) This index has a profound impact on query performance when resolving capability checks directly against the database. TL-22457 Added a new database index on cache_flags (flagtype, expiry, timemodified) TL-22461 Added a new database index on course (category,sortorder) TL-22471 Initialising HR Import settings for administrators no longer queries the database TL-22473 Optimised the course category management page to preload courses and course counts TL-22474 Optimised the navigation structure performance using totara_course_is_viewable Site navigation was originally using totara_visibility_where when resolving course visibility. It has now been converted to use totara_course_is_viewable, given that the number of courses loaded into the navigation is limited, and in displaying the course within the navigation we must load all of the information to resolve its visibility. TL-22475 Optimised enrol_get_my_courses to use totara_course_is_viewable The enrol_get_my_courses method was originally using totara_visibility_where when resolving course visibility. It has now been converted to use totara_course_is_viewable, given the information available within the function and that in most circumstances enrolled users can see the courses they are enrolled it. TL-22478 Added a new database index on block_instances (blockname) There are several queries within the platform, some that are executed on most pages, that look up block instances by name. While the queries are simple the table itself can grow significantly and having an index on the blockname column aids database performance. TL-22611 Optimised the enrol_get_all_users_courses function to use totara_course_is_viewable Improvements: TL-22051 Implemented a means to bulk delete unstarted course completions belonging to users who are no longer enrolled When users are mistakenly enrolled, and then immediately unenrolled in a course, a course completion record is left behind. This record is marked as un-started, and can be manually deleted using the course completion editor. Manually deleting many thousands of records, as might need to happen when a large audience is accidentally enrolled and then unenrolled from a course, is prohibitively time-consuming. A new CLI script has been added at 'admin/cli/delete_unused_course_completions.php' to accomplish these deletions in bulk. Using the script will trigger an 'Admin CLI script execution, records deleted' event that includes the parameters it was called with. TL-22260 Added the control of Report Builder export options at a report level TL-22389 Migrated all documentation links to point to help.totaralearning.com All links to external documentation within the product take the user to the appropriate page in our public product documentation available at help.totaralearning.com TL-22854 Fixed compatibility with PostgreSQL 12.0 Bug fixes: TL-20100 Removed a redundant and inaccurate help popup for appraisal descriptions TL-21346 Fixed seminar restoration when the original seminar had been deleted but still existed within the recycle bin TL-21828 Fixed Behat scenarios attempting to click on select input options after recent changes in Chrome Recent changes in Chrome have led to sporadic issues through our Behat features relating back to the definitions that attempt to click on options within a select input. All affected feature files have been converted to a method that works in all versions of Chrome. TL-22207 Block permissions for authenticated users and guests are now restored corectly when restoring a course In addition to the above noted fix the screen displaying information on roles that cannot be mapped during restore now correctly displays built-in role names and overridable roles. TL-22224 Fixed the grade functions of the seminar component to be compatible with other activity components TL-22243 Removed double-escaping of ampersands in the featured links block TL-22257 Added a missing capability check to stop an error message while adding an enrolled audience to a course TL-22348 Changed the default timesort for the Grid catalogue Previously the time-based sorting method for the new grid-style catalogue was based on the 'timemodified' value of the learning items being displayed. This has been changed to use the 'timecreated' value instead, giving a more consistent ordering of the learning items. Note: Though the back-end code has been updated, this change will not be visible on the catalogue until the refresh_catalog_data scheduled task is run. If you want to see this change immediately please manually run the task after upgrading, otherwise this change will only be updated on the next scheduled run. TL-22349 Fixed custom navigation parent elements being un-deletable after upgrade TL-22394 Fixed the overflow of long category names within the Grid catalogue Previously if long category names could extend under the tiles when using the Grid catalogue. The maximum width of the category name is now managed, and an ellipsis presented when the category name would exceed the available space. This will require CSS to be regenerated for themes that use LESS inheritance. TL-22398 Fixed a potential problem in role_unassign_all_bulk() related to cascaded manual role unassignment The problem may only affect third-party code because the problematic parameter is not used in standard distribution. TL-22401 Removed unnecessary use of set context on report builder filters page TL-22419 Corrected link colours within a label course activity This will require CSS to be regenerated for themes that use LESS inheritance. TL-22435 Fixed context used for capability checks during goal userdata exports Previously the goal exports were checking if a user could see their own goals in the system context, however the capability is meant to be used in the user context. This has been rectified where possible. TL-22453 Featured links blocks no longer uses the text colour specified in Basis theme settings The text colour specified in Basis theme settings is designed to work on light backgrounds, not the dark background that the featured links block uses. This will require CSS to be regenerated for themes that use LESS inheritance. TL-22511 Deleting course completions either via the interface or via CLI now correctly purges completion caches TL-22517 Fixed an error in first login tasks when a user has future assignments for multiple programs or certifications If a user had multiple future assignments (due to setting a program due date based on first login for a user who hadn't yet logged in), when the first_login_assignments task ran, an error would be generated and users wouldn't be assigned to the program / certification correctly. TL-22518 Fixed email-based self registration with position, organisation, and manager while logged in as a guest TL-22559 Seminar notification sender no longer reuses the sending user object The reuse of the sending user object when sending notifications from within the seminar occasionally led to an issue where notifications would appear to come from random users. This has now been fixed by ensuring a fresh sending user object is used for each notification. TL-22567 Made sure the 'Front page settings' page can be bookmarked in the administration menu TL-22576 All areas displaying a program or certification fullname are now formatted consistently Prior to this change there were a handful of areas not correctly formatting program and certification full names before displaying them. These have all been tidied up and program and certification fullname is now formatted correctly and consistently. TL-22582 Fixed a race condition in the Grid catalogue page that inadvertently reset filter settings A race condition was identified in the auto-initialise AMD module, whereby components could have been initialised out of order. In situations where the anticipated order of execution was being relied upon this could manifest visible errors such as catalogue filters from a shared URL being incorrectly excluded. This race condition has now been fixed and calls to require AMD modules are now processed in advance of auto-initialisation. TL-22610 Fixed error in HR Import when importing organisation or position custom fields when typeidnumber is mapped When importing organisation or position custom fields using HR Import, if a field mapping was used in the typeidnumber field an error would be thrown causing the import to fail. This has been fixed. TL-22622 Fixed an incorrect count of visible programs which led to missing pagination controls in the interface This is a regression introduced by TL-22060 released in 12.10 last month. The total count variable within prog_get_programs_page() was being incorrectly populated after that change. It is now correctly populated. TL-22632 Fixed the report builder default fetch method setting as its value was not being respected TL-22658 Fixed the display of programs and certifications when folders are added to their image field Folders are now ignored when added to the image field for programs and certifications. The ability to add folders will be removed in a future version by TL-22659. API changes: TL-22248 Checks to confirm a user can log in as another user are now performed by the user access controller 'Login as' permission checks have been consolidated into a new method on the user access controller, \core_user\access_controller::can_loginas() Existing checks within the product have all been converted to use this new method, ensuring that the control checks are applied consistently. TL-22392 Added course creation post definition and validation hooks This change introduced two new hooks: * \core_course\hook\edit_form_definition_after_data * \core_course\hook\edit_form_validation TL-22472 Removed incorrect use of $DB->sql_like() for non-unicode fields SQL code executing LIKE statements on the context path in the database was in some situations using sql_like, which led to collation management being introduced. This was leading to an unnecessary overhead as path is a calculated field for which we always know the character range used. TL-22477 Active string filters per context are now cached using MUC Previously a static variable $FILTERLIB_PRIVATE was used to cache active filters by context during the lifetime of a request. This has been converted to an MUC request cache, allowing for better management and handling both in product and in our testing environments. Contributions: * Brad Simpson at Kineo US - TL-22243 * Davo Smith at Synergy Learning - TL-22518 * Peter Spicer at Catalyst EU - TL-22392
Release 11.20 (25th October 2019):
Important: TL-22311 The SameSite cookie attribute is now set to None in Chrome 78 and above Chrome, in an upcoming release, will be introducing a default for the SameSite cookie attribute of 'Lax'. The current behaviour in all supported browsers is to leave the SameSite cookie attribute unset, when not explicitly provided by the server at the time the cookie is first set. When unset or set to 'None', HTTP requests initiated by another site will often contain the Totara session cookie. When set to 'Lax', requests initiated by another site will no longer provide the Totara session cookie with the request. Many commonly used features in Totara rely on third-party requests including the user's session cookie. Furthermore, there are inconsistencies between browsers in how the SameSite=Lax behaviour works. For this reason, we will be setting the SameSite to 'None' for the session cookie when Chrome 78 or later is in use. This will ensure that Totara continues to operate as it has previously in this browser. Due to the earlier mentioned inconsistencies in other browsers, we will not set the SameSite attribute in any other browsers for the time being. TL-22692 has been opened to watch the situation as it evolves and make further improvements to our product when the time is right. This change is currently planned to be made in Chrome 80, which we anticipate will be released Q1 2020. Chrome 80 is bringing another related change as well. Insecure cookies that set SameSite to 'None' will be rejected. This will require that sites both run over HTTPS and have the 'Secure cookies only' setting enabled within Totara (leading to the secure cookie attribute being enabled). The following actions will need to be taken by all sites where users will be running Chrome: * Upgrade to this release of Totara, or a later one. * Configure the site to run over HTTPS if it is not already doing so. * Enable the 'Secure cookies only' [cookiesecure] setting within Totara For more information on the two changes being made in Chrome please see the following: * [https://www.chromestatus.com/feature/5088147346030592] Cookies default to SameSite=Lax * [https://www.chromestatus.com/feature/5633521622188032] Reject insecure SameSite=None cookies TL-22408 Fixed two issues that could cause the tag name upgrade step to fail As part of the fix for TL-21055 (introduced in 11.17, and 12.8), we created an upgrade step to revert HTML-encoded tag names to their original, non-encoded canonical state. The upgrade step failed to take two conditions into account: multiple tag instances on the same item that resolve to the same canonical tag; and module tags that resolve to the same canonical tag as a course. In these cases, the upgrade simply failed with a database exception. The tags upgrade step has been rewritten to work properly in all situations. TL-22560 Improved the handling of conditional access restrictions that reference deleted items Fixed a bug that prevented editing the access restrictions when a deleted audience, position, or organisation was used as part of a restriction set in them We also made changes to stop removing course activity access restrictions that refer to those deleted items. In previous versions, whenever an audience, position, or organisation was deleted, all access restrictions referring to the deleted item were removed. This could result in learners being able to access sections and activities that they were unable to access before. With this release, access restrictions are kept in place if the item(s) they refer to are deleted. Such restrictions are updated to refer to a 'missing audience', 'missing position', or 'missing organisation', and will prevent access to everybody until either removed or associated with a different item. Please note: * If a 'missing' restriction is part of an OR condition, it will simply not match rather than preventing access. * If a 'must not' restriction is 'missing,' then learners who formerly met the restriction condition will not be restricted any more. * There is no way to recover access restrictions that were previously deleted because they referred to deleted items. TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at [https://www.chromestatus.com/feature/4664843055398912] We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release. Improvements: TL-22854 Fixed compatibility with PostgreSQL 12.0 Bug fixes: TL-21828 Fixed Behat scenarios attempting to click on select input options after recent changes in Chrome Recent changes in Chrome have led to sporadic issues through our Behat features relating back to the definitions that attempt to click on options within a select input. All affected feature files have been converted to a method that works in all versions of Chrome. TL-22207 Block permissions for authenticated users and guests are now restored corectly when restoring a course In addition to the above noted fix the screen displaying information on roles that cannot be mapped during restore now correctly displays built-in role names and overridable roles. TL-22398 Fixed a potential problem in role_unassign_all_bulk() related to cascaded manual role unassignment The problem may only affect third-party code because the problematic parameter is not used in standard distribution. TL-22401 Removed unnecessary use of set context on report builder filters page TL-22435 Fixed context used for capability checks during goal userdata exports Previously the goal exports were checking if a user could see their own goals in the system context, however the capability is meant to be used in the user context. This has been rectified where possible. TL-22511 Deleting course completions either via the interface or via CLI now correctly purges completion caches TL-22517 Fixed an error in first login tasks when a user has future assignments for multiple programs or certifications If a user had multiple future assignments (due to setting a program due date based on first login for a user who hadn't yet logged in), when the first_login_assignments task ran, an error would be generated and users wouldn't be assigned to the program / certification correctly. TL-22518 Fixed email-based self registration with position, organisation, and manager while logged in as a guest TL-22559 Seminar notification sender no longer reuses the sending user object The reuse of the sending user object when sending notifications from within the seminar occasionally led to an issue where notifications would appear to come from random users. This has now been fixed by ensuring a fresh sending user object is used for each notification. TL-22576 All areas displaying a program or certification fullname are now formatted consistently Prior to this change there were a handful of areas not correctly formatting program and certification full names before displaying them. These have all been tidied up and program and certification fullname is now formatted correctly and consistently. TL-22632 Fixed the report builder default fetch method setting as its value was not being respected TL-22691 Changed seminar join waitlist button label from 'Agree and submit' to 'Join waitlist' API changes: TL-22472 Removed incorrect use of $DB->sql_like() for non-unicode fields SQL code executing LIKE statements on the context path in the database was in some situations using sql_like, which led to collation management being introduced. This was leading to an unnecessary overhead as path is a calculated field for which we always know the character range used. Contributions: * Davo Smith at Synergy Learning - TL-22518
Release 10.26 (25th October 2019):
Important: TL-22311 The SameSite cookie attribute is now set to None in Chrome 78 and above Chrome, in an upcoming release, will be introducing a default for the SameSite cookie attribute of 'Lax'. The current behaviour in all supported browsers is to leave the SameSite cookie attribute unset, when not explicitly provided by the server at the time the cookie is first set. When unset or set to 'None', HTTP requests initiated by another site will often contain the Totara session cookie. When set to 'Lax', requests initiated by another site will no longer provide the Totara session cookie with the request. Many commonly used features in Totara rely on third-party requests including the user's session cookie. Furthermore, there are inconsistencies between browsers in how the SameSite=Lax behaviour works. For this reason, we will be setting the SameSite to 'None' for the session cookie when Chrome 78 or later is in use. This will ensure that Totara continues to operate as it has previously in this browser. Due to the earlier mentioned inconsistencies in other browsers, we will not set the SameSite attribute in any other browsers for the time being. TL-22692 has been opened to watch the situation as it evolves and make further improvements to our product when the time is right. This change is currently planned to be made in Chrome 80, which we anticipate will be released Q1 2020. Chrome 80 is bringing another related change as well. Insecure cookies that set SameSite to 'None' will be rejected. This will require that sites both run over HTTPS and have the 'Secure cookies only' setting enabled within Totara (leading to the secure cookie attribute being enabled). The following actions will need to be taken by all sites where users will be running Chrome: * Upgrade to this release of Totara, or a later one. * Configure the site to run over HTTPS if it is not already doing so. * Enable the 'Secure cookies only' [cookiesecure] setting within Totara For more information on the two changes being made in Chrome please see the following: * [https://www.chromestatus.com/feature/5088147346030592] Cookies default to SameSite=Lax * [https://www.chromestatus.com/feature/5633521622188032] Reject insecure SameSite=None cookies TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at [https://www.chromestatus.com/feature/4664843055398912] We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release. Improvements: TL-22854 Fixed compatibility with PostgreSQL 12.0 Bug fixes: TL-21828 Fixed Behat scenarios attempting to click on select input options after recent changes in Chrome Recent changes in Chrome have led to sporadic issues through our Behat features relating back to the definitions that attempt to click on options within a select input. All affected feature files have been converted to a method that works in all versions of Chrome. TL-22398 Fixed a potential problem in role_unassign_all_bulk() related to cascaded manual role unassignment The problem may only affect third-party code because the problematic parameter is not used in standard distribution. TL-22401 Removed unnecessary use of set context on report builder filters page TL-22559 Seminar notification sender no longer reuses the sending user object The reuse of the sending user object when sending notifications from within the seminar occasionally led to an issue where notifications would appear to come from random users. This has now been fixed by ensuring a fresh sending user object is used for each notification. TL-22576 All areas displaying a program or certification fullname are now formatted consistently Prior to this change there were a handful of areas not correctly formatting program and certification full names before displaying them. These have all been tidied up and program and certification fullname is now formatted correctly and consistently.
Release 9.37 (25th October 2019):
Important: TL-22311 The SameSite cookie attribute is now set to None in Chrome 78 and above Chrome, in an upcoming release, will be introducing a default for the SameSite cookie attribute of 'Lax'. The current behaviour in all supported browsers is to leave the SameSite cookie attribute unset, when not explicitly provided by the server at the time the cookie is first set. When unset or set to 'None', HTTP requests initiated by another site will often contain the Totara session cookie. When set to 'Lax', requests initiated by another site will no longer provide the Totara session cookie with the request. Many commonly used features in Totara rely on third-party requests including the user's session cookie. Furthermore, there are inconsistencies between browsers in how the SameSite=Lax behaviour works. For this reason, we will be setting the SameSite to 'None' for the session cookie when Chrome 78 or later is in use. This will ensure that Totara continues to operate as it has previously in this browser. Due to the earlier mentioned inconsistencies in other browsers, we will not set the SameSite attribute in any other browsers for the time being. TL-22692 has been opened to watch the situation as it evolves and make further improvements to our product when the time is right. This change is currently planned to be made in Chrome 80, which we anticipate will be released Q1 2020. Chrome 80 is bringing another related change as well. Insecure cookies that set SameSite to 'None' will be rejected. This will require that sites both run over HTTPS and have the 'Secure cookies only' setting enabled within Totara (leading to the secure cookie attribute being enabled). The following actions will need to be taken by all sites where users will be running Chrome: * Upgrade to this release of Totara, or a later one. * Configure the site to run over HTTPS if it is not already doing so. * Enable the 'Secure cookies only' [cookiesecure] setting within Totara For more information on the two changes being made in Chrome please see the following: * [https://www.chromestatus.com/feature/5088147346030592] Cookies default to SameSite=Lax * [https://www.chromestatus.com/feature/5633521622188032] Reject insecure SameSite=None cookies TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at [https://www.chromestatus.com/feature/4664843055398912] We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release. Improvements: TL-22854 Fixed compatibility with PostgreSQL 12.0 Bug fixes: TL-22398 Fixed a potential problem in role_unassign_all_bulk() related to cascaded manual role unassignment The problem may only affect third-party code because the problematic parameter is not used in standard distribution. TL-22401 Removed unnecessary use of set context on report builder filters page TL-22503 Backport TL-22045: Login form is now only submitted once per page load TL-22559 Seminar notification sender no longer reuses the sending user object The reuse of the sending user object when sending notifications from within the seminar occasionally led to an issue where notifications would appear to come from random users. This has now been fixed by ensuring a fresh sending user object is used for each notification. TL-22576 All areas displaying a program or certification fullname are now formatted consistently Prior to this change there were a handful of areas not correctly formatting program and certification full names before displaying them. These have all been tidied up and program and certification fullname is now formatted correctly and consistently.
Release 2.9.47 (25th October 2019):
Important: TL-22311 The SameSite cookie attribute is now set to None in Chrome 78 and above Chrome, in an upcoming release, will be introducing a default for the SameSite cookie attribute of 'Lax'. The current behaviour in all supported browsers is to leave the SameSite cookie attribute unset, when not explicitly provided by the server at the time the cookie is first set. When unset or set to 'None', HTTP requests initiated by another site will often contain the Totara session cookie. When set to 'Lax', requests initiated by another site will no longer provide the Totara session cookie with the request. Many commonly used features in Totara rely on third-party requests including the user's session cookie. Furthermore, there are inconsistencies between browsers in how the SameSite=Lax behaviour works. For this reason, we will be setting the SameSite to 'None' for the session cookie when Chrome 78 or later is in use. This will ensure that Totara continues to operate as it has previously in this browser. Due to the earlier mentioned inconsistencies in other browsers, we will not set the SameSite attribute in any other browsers for the time being. TL-22692 has been opened to watch the situation as it evolves and make further improvements to our product when the time is right. This change is currently planned to be made in Chrome 80, which we anticipate will be released Q1 2020. Chrome 80 is bringing another related change as well. Insecure cookies that set SameSite to 'None' will be rejected. This will require that sites both run over HTTPS and have the 'Secure cookies only' setting enabled within Totara (leading to the secure cookie attribute being enabled). The following actions will need to be taken by all sites where users will be running Chrome: * Upgrade to this release of Totara, or a later one. * Configure the site to run over HTTPS if it is not already doing so. * Enable the 'Secure cookies only' [cookiesecure] setting within Totara For more information on the two changes being made in Chrome please see the following: * [https://www.chromestatus.com/feature/5088147346030592] Cookies default to SameSite=Lax * [https://www.chromestatus.com/feature/5633521622188032] Reject insecure SameSite=None cookies TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at [https://www.chromestatus.com/feature/4664843055398912] We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release. Bug fixes: TL-22398 Fixed a potential problem in role_unassign_all_bulk() related to cascaded manual role unassignment The problem may only affect third-party code because the problematic parameter is not used in standard distribution. TL-22401 Removed unnecessary use of set context on report builder filters page
Release 2.7.54 (25th October 2019):
Important: TL-22311 The SameSite cookie attribute is now set to None in Chrome 78 and above Chrome, in an upcoming release, will be introducing a default for the SameSite cookie attribute of 'Lax'. The current behaviour in all supported browsers is to leave the SameSite cookie attribute unset, when not explicitly provided by the server at the time the cookie is first set. When unset or set to 'None', HTTP requests initiated by another site will often contain the Totara session cookie. When set to 'Lax', requests initiated by another site will no longer provide the Totara session cookie with the request. Many commonly used features in Totara rely on third-party requests including the user's session cookie. Furthermore, there are inconsistencies between browsers in how the SameSite=Lax behaviour works. For this reason, we will be setting the SameSite to 'None' for the session cookie when Chrome 78 or later is in use. This will ensure that Totara continues to operate as it has previously in this browser. Due to the earlier mentioned inconsistencies in other browsers, we will not set the SameSite attribute in any other browsers for the time being. TL-22692 has been opened to watch the situation as it evolves and make further improvements to our product when the time is right. This change is currently planned to be made in Chrome 80, which we anticipate will be released Q1 2020. Chrome 80 is bringing another related change as well. Insecure cookies that set SameSite to 'None' will be rejected. This will require that sites both run over HTTPS and have the 'Secure cookies only' setting enabled within Totara (leading to the secure cookie attribute being enabled). The following actions will need to be taken by all sites where users will be running Chrome: * Upgrade to this release of Totara, or a later one. * Configure the site to run over HTTPS if it is not already doing so. * Enable the 'Secure cookies only' [cookiesecure] setting within Totara For more information on the two changes being made in Chrome please see the following: * [https://www.chromestatus.com/feature/5088147346030592] Cookies default to SameSite=Lax * [https://www.chromestatus.com/feature/5633521622188032] Reject insecure SameSite=None cookies TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at [https://www.chromestatus.com/feature/4664843055398912] We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release. Bug fixes: TL-22398 Fixed a potential problem in role_unassign_all_bulk() related to cascaded manual role unassignment The problem may only affect third-party code because the problematic parameter is not used in standard distribution.
Release 2.6.71 (25th October 2019):
Important: TL-22311 The SameSite cookie attribute is now set to None in Chrome 78 and above Chrome, in an upcoming release, will be introducing a default for the SameSite cookie attribute of 'Lax'. The current behaviour in all supported browsers is to leave the SameSite cookie attribute unset, when not explicitly provided by the server at the time the cookie is first set. When unset or set to 'None', HTTP requests initiated by another site will often contain the Totara session cookie. When set to 'Lax', requests initiated by another site will no longer provide the Totara session cookie with the request. Many commonly used features in Totara rely on third-party requests including the user's session cookie. Furthermore, there are inconsistencies between browsers in how the SameSite=Lax behaviour works. For this reason, we will be setting the SameSite to 'None' for the session cookie when Chrome 78 or later is in use. This will ensure that Totara continues to operate as it has previously in this browser. Due to the earlier mentioned inconsistencies in other browsers, we will not set the SameSite attribute in any other browsers for the time being. TL-22692 has been opened to watch the situation as it evolves and make further improvements to our product when the time is right. This change is currently planned to be made in Chrome 80, which we anticipate will be released Q1 2020. Chrome 80 is bringing another related change as well. Insecure cookies that set SameSite to 'None' will be rejected. This will require that sites both run over HTTPS and have the 'Secure cookies only' setting enabled within Totara (leading to the secure cookie attribute being enabled). The following actions will need to be taken by all sites where users will be running Chrome: * Upgrade to this release of Totara, or a later one. * Configure the site to run over HTTPS if it is not already doing so. * Enable the 'Secure cookies only' [cookiesecure] setting within Totara For more information on the two changes being made in Chrome please see the following: * [https://www.chromestatus.com/feature/5088147346030592] Cookies default to SameSite=Lax * [https://www.chromestatus.com/feature/5633521622188032] Reject insecure SameSite=None cookies TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at [https://www.chromestatus.com/feature/4664843055398912] We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release.
Release 2.5.77 (25th October 2019):
Important: TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at [https://www.chromestatus.com/feature/4664843055398912] We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release.
Release 2.4.73 (25th October 2019):
Important: TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at [https://www.chromestatus.com/feature/4664843055398912] We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release.
Release 2.2.75 (25th October 2019):
Important: TL-22621 SCORM no longer uses synchronous XHR requests for interaction Chrome, in an upcoming release, will be removing the ability to make synchronous XHR requests during page unload events, including beforeunload, unload, pagehide and visibilitychanged. If JavaScript code attempts to make such a request, the request will fail. This functionality is often used by SCORM to perform a last-second save of the user's progress at the time the user leaves the page. Totara sends this request to the server using XHR. As a consequence of the change Chrome is making, the user's progress would not be saved. The fix introduced with this patch detects page unload events, and if the SCORM package attempts to save state or communicate with the server during unload, the navigation.sendBeacon API will be used (if available) instead of a synchronous XHR request. The purpose of the navigation.sendBeacon API is in line with this use, and it is one of two approaches recommended by Chrome. The original timeframe for this change in Chrome was with Chrome 78 due out this month. However Chrome has pushed this back now to Chrome 80. More information on this change in Chrome can be found at [https://www.chromestatus.com/feature/4664843055398912] We recommend all sites that make use of SCORM and who have users running Chrome to update their Totara installations in advance of the Chrome 80 release.