Totara Release Notes

Totara learn Evergreen-20190717, 12.8, 11.17, 10.23, 9.34

 
David Curry (Core Developer)
Totara learn Evergreen-20190717, 12.8, 11.17, 10.23, 9.34
by David Curry (Core Developer) - Tuesday, 16 July 2019, 8:51 PM
Group Totara

Hello everyone,

The following versions of Totara Learn have now been released:

Each release includes bug fixes and improvements.

A big thanks to the following people for their contributions to this release:

  • John Phoon at Kineo Pacific - TL-21564

Kind regards David Curry

Release Evergreen (17th July 2019):

Key:           + Evergreen only

API changes:

    TL-20548   +   'runTemplateJS()' now returns an ES6 promise

                   The 'runTemplateJS' function in the core/templates AMD library now returns
                   an ES6 Promise once all UI components have been initialised

    TL-21193   +   Added Laravel-like Query Builder

                   This patch introduces a query builder which abstracts querying the database
                   on top of the DML layer. The query builder is inspired by [Laravel’s
                   Query Builder|https://laravel.com/docs/master/queries] and provides a
                   similar feature set. It provides a consistent fluent interface. Internally
                   it uses the DML layer to execute queries so database compatibility and
                   low-level query integrity is ensured. The query builder provides at least
                   the same functionality as the DML layer. It should be possible to
                   substitute existing DML actions with it, as well as cover more complex
                   cases which are only possible via raw SQL queries at the moment.
                   
                   Full documentation is available here:
                   [https://help.totaralearning.com/display/DEV/Query+builder]
                   
                    

    TL-21222   +   Added support for deferring the creation of foreign keys

                   This improvement extends TL-21024 which added support for enforcing foreign
                   key relationships within install.xml.
                   
                   It is now possible to mark a foreign key relationship as deferred within
                   install.xml, causing the system to skip the creation of the foreign key
                   during installation. The developer is then responsible for creating the
                   foreign key at the right time within an install.php file.

    TL-21230   +   Added a new transaction function in DML which accepts a Closure

                   The new 'transaction()' method accepts a Closure which is automatically
                   wrapped in a transaction. This is an alternative syntax to the traditional
                   transaction handling.

    TL-21240   +   Extracted class 'program_utilities' into its own autoloaded class '\totara_program\utils'
    TL-21256   +   Nested transactions can be safely rolled back

                   Previously transaction rollbacks were not supposed to be used from
                   non-system code and they were not allowed at all in nested transactions.
                   
                   Rollback of individual nested transactions is now fully supported, and it
                   is also not required to supply an exception when rolling back nested or
                   main transactions.

    TL-21288   +   Relative file serving now facilitates file serving options including 'allowxss'
    TL-21327   +   Extracted program exceptions code into autoloaded classes \totara_program\exception\*
    TL-21368   +   Implemented a generic formatter to format fields of objects

                   A formatter can be implemented for an existing object, for example a record
                   from the database. It defines a map using field names for the keys and
                   field format functions for the values. The formatter will get the value
                   from the object, run it through the format function defined in the map and
                   return the formatted value. Currently we support a text (using
                   format_text()), a string (using format_string()) and a date formatter.
                   Custom field formatters can easily be implemented extending the base field
                   formatter. 
                   
                   The existing helper functions format_text() and format_date()
                   in \core\webapi\execution_context were deprecated in favour of the new
                   field formatters \totara_core\formatter\field\text_field_formatter
                   and \totara_core\formatter\field\date_field_formatter.
                   
                   Documentation: [https://help.totaralearning.com/display/DEV/Formatters]

    TL-21370       Method resetAfterTest() in PHPUnit tests has been deprecated

                   Since the introduction of parallel PHPUnit testing the order of test
                   execution is no longer defined, which means that tests cannot rely on state
                   (database and file system) to be carried over from one test into another.
                   
                   Existing PHPUnit tests need to be updated to prepare data at the beginning
                   of each test method separately.

Performance improvements:

    TL-21541       The source filter for report builder sources has been optimised

                   Previously the options for this filter were loaded, even when not needed.
                   This was an expensive operation, often done needlessly. The options are now
                   only loaded when absolutely needed.

Improvements:

    TL-17691       Added site policies to the self-registration process

                   To comply with GDPR policies, when self-registration is enabled, new users
                   are now required to accept mandatory site policies before being able to
                   request a new account, as opposed to the users only viewing the site
                   policies after registering and logging in.

    TL-17745       Improved the program assignments user interface to better handle a large number of assignments

                   The previous user interface for program assignments would load every
                   assignment onto a single page, and in some situations where a very large
                   number of assignments were added to a single program or certification the
                   page would time out on load. The page now has a search, and filter, and
                   prevents too many records being loaded at the same time.

    TL-18678   +   Improved course selector form element for changing a 'Recurring Course' in programs content

                   Prior to this change all courses were loaded into a single drop-down, which
                   could lead to performance issues on sites with a large number of courses.
                   This drop-down has now been replaced with the standard course selector
                   dialog already used in selecting courses for program course sets.

    TL-19799   +   Nonfunctional Google Fusion export options were removed
    TL-20418   +   Added seminar attendance 'CSV export for Upload' feature

                   Following on the ability to upload seminar attendance in the last release,
                   it is now possible to download a seminar attendance report that is already
                   correctly formatted for upload.
                   
                   Trainers can use the new 'CSV export for Upload' to mark event attendance,
                   and optionally grade if manual event grading is enabled, in bulk. The file
                   can then be uploaded with no further changes to column layout or header
                   names.

    TL-20425   +   Updated seminar event dashboard and course view

                   This patch contains several improvements to the seminar event dashboard and
                   the course activity view, including:
                    * Added 'Previous events time period' options to be able to display only
                      past events in the specific time period
                    * Redesigned the filter bar with tool-tips and icon
                    * Added new filters: booking status, attendance tracking status
                    * Reverted the change in TL-19928 (February 2019 release); the seminar
                      event dashboard is now back to two tables: one is for upcoming or ongoing
                      events, the other is for past or cancelled events
                    * Redesigned session list table
                    * Rearranged table columns
                    * Broke down event status into three types: event time, event booking
                   status, and user booking status

    TL-20760       Added support for search metadata within Courses, Programs, and Certifications.

                   New text field added to Courses, Programs, and Certifications settings
                   where search keywords can be added. These keywords will not be displayed
                   anywhere on pages but will be used in Full Text Search.
                   
                   By default these fields are empty.

    TL-20761       Added wildcard support for full text search in catalog

                   When asterisk "*" is placed as a last character of a single keyword in
                   catalog it will return all partial matches starting with the given
                   keyword.  Asterisk can be placed only in the end of keyword search (this
                   is limitations of wildcard support in databases) and at this stage only
                   single keywords are supported (no whitespaces).

    TL-20834       Enabled unaccented Full Text Search in catalog

                   PostgreSQL and MS SQL have built in support for accent insensitive full
                   text searches.
                   
                   By default, database configuration is used (typically accent sensitivity is
                   on).
                   
                   To change accent sensitivity of full test searches for either PostgreSQL or
                   MS SQL you can set the
                   following options in config.php:
                   $CFG->dboptions['ftsaccentsensitivity'] = true; // Accent sensitive search
                   $CFG->dboptions['ftsaccentsensitivity'] = false; // Accent insensitive
                   search
                   
                   After changing the accent sensitivity setting you need to run the following
                   scripts in the listed order:
                   php admin/cli/fts_rebuild_indexes.php
                   php admin/cli/fts_repopulate_tables.php

    TL-20886       Added ngram support for MySQL full text search

                   Added support of ngram in MySQL. ngram is a Full Text parser that mainly
                   designed to support Chinese, Japanese, and Korean (CJK) langauges. The
                   ngram parser tokenises a words into a contiguous sequence of n-characters.
                   More information about ngram can be found in MySQL documentation.
                   
                   While it is designed more for CJK languages, it is also useful to parse
                   text on languages that use words concatenation, like German or Swedish.
                   However, it can produce large number of false-positive search results
                   (albeit with lower rating), so doing proper testing after enabling is
                   recommended.
                   
                   This support is not enabled by default. To enable ngram support, add option
                   into your config.php:
                   
                   $CFG->dboptions['ftsngram'] = true;
                   
                   and run  FTS scripts to re-index content:
                   
                   php admin/cli/fts_rebuild_indexes.php
                   php admin/cli/fts_repopulate_tables.php

    TL-21056       Added a warning about incompatible column selection in the report builder

                   In some cases, a combination of columns selected in a report source may
                   have caused unexpected results or a broken report. This usually happened
                   when a column that already relies on the aggregated data internally (e.g.
                   'Course Short Name' in the 'Program Overview' report) was combined with
                   columns aggregated via 'Aggregation or grouping' (e.g. count or comma
                   separated values).
                   
                   Previously, using this type of combination on certain database types would
                   have resulted in an error. This change adds a warning to inform users about
                   the use of any incompatible columns at the time the report is being set up.

    TL-21084   +   Improved seminar session Date/Time format and export for report builder

                   New date columns added:
                    * Session Start Date + Excel/ODS export
                    * Session Finish Date + Excel/ODS export
                    * Session Finish Date/Time (linked to activity) + Excel/ODS export
                   
                   Improved:
                    * Session Start Date/Time added Excel/ODS export
                    * Session Finish Date/Time added Excel/ODS export
                    * Session Start Date/Time (linked to activity) added Excel/ODS export
                    * Session Start Time added Excel/ODS export
                    * Session Finish Time added Excel/ODS export
                    * There is new format for date/time with timezone for report builder:
                      '2 July 2019, 5 PM 
                      Timezone: Pacific/Auckland'
                    * All Date/Time columns have a proper ODS/Excel export

    TL-21197   +   SQLSRV SSL connections now support the 'TrustServerCertificate' option

                   TL-21115 introduced the ability to force database connections over SSL.
                   However, SQLSRV required a signed certificate and there was no way to force
                   the TrustServerCertificate connection option through Totara.
                   
                   A new dboption 'trustservercertificate' has been added that is passed
                   through to the 'TrustServerCertificate' option during connection.

    TL-21247       Added configuration, a new CLI script and a scheduled task to execute the 'ANALYZE TABLE' query

                   The new 'analyze_table_task' scheduled task is configured to run every late
                   night.
                    It is required that the task be configured to run at off-peak times on
                   your site.

    TL-21359       Fixed the Atto editor incorrectly applying formatting to previously selected text

                   Fixed an intermittent problem with the Atto editor when formatting was
                   applied to previously selected text instead of the currently selected text.
                   The 'mouse select' functionality works reliably now.

    TL-21422   +   Added a setting to display a seminar description on a course homepage
    TL-21426       New SCORM setting has been added that implements session timeout prevention in SCORM player

                   The new setting "Enable the SCORM player to keep the user session alive" is
                   available under the Admin settings in the SCORM plugin. It can be used in
                   order to prevent unwanted session timeouts during SCORM attempts.
                   
                   Due to the fact that it keeps user session alive while SCORM attempt is in
                   progress, it may be considered a minor security concern and has been added
                   to the Security overview report as such.

    TL-21435   +   Removed typo3 library dependency from the core_text class
    TL-21491   +   Added [seminarname] and [seminardescription] placeholders for Seminar notifications

                   The [seminarname] placeholder has been added to replace the
                   [facetofacename] placeholder, although the system will still support both
                   [seminarname] and [facetofacename] placeholders. An optional placeholder,
                   [seminardescription], has also been added.


Bug fixes:

    TL-18560       Fixed the 'Publish room for use in other sessions' checkbox in the edit custom room dialogue

                   When creating or editing a seminar event, it is possible to create a custom
                   room that can only be used by other events in the same seminar activity.
                   The editing form for these rooms can include a checkbox (if you have
                   sufficient permission) that allows them to be easily converted to sitewide
                   rooms. 
                   
                   This checkbox was always checked, and did not work as expected. This has
                   been fixed.

    TL-19054   +   Set notification type when cloning a Report Builder embedded report to a warning instead of an error
    TL-19138       Fixed warning message when deleting a report builder saved search

                   If a report builder saved search is deleted, any scheduled reports that use
                   that saved search are also deleted. The warning message to confirm the
                   deletion of the saved search now also correctly displays any scheduled
                   reports that will also be deleted.

    TL-19324       Fixed a bug within select tree where the drop-down would disappear when clicking the scrollbar

                   Improved the select tree component functionality. The scrollbar within
                   select tree components works reliably now.

    TL-20143       Fixed un-reversable block visiblity change when editing dashboard

                   When editing a dashboard it was possible to change the 'Administration'
                   block (or any other block) to only be visible on that dashboard. Once the
                   change was saved there was no way to change the block to display on 'Any
                   page' again. This patch allows the setting to be changed back.

    TL-20555       Removed Report Builder calls to a non-existent display function 'rb_display_nice_date()'

                   This is only an issue for any 'custom' created report sources that are
                   calling the 'rb_display_prog_date()' or 'rb_display_list_to_newline_date()'
                   display functions directly.

    TL-20960       Fixed the completion editor to schedule the recalculation of completion status if necessary

                   When saving activity completion status in the completion editor, the
                   reaggregate flag was set to schedule reaggregation of the associated course
                   completion record only if:
                    * completion criteria activity is modified in completion editor
                    * and the flag has not been set since the last cron run
                   
                   Added a transaction log about 'reaggregation scheduled' if the conditions
                   above are met.
                   
                   (If the reaggregate flag is set, then the next cron run will pick up the
                   corresponding course completion record, recalculate the completion status
                   and clear the flag.)

    TL-20999   +   Fixed seminar grade input field to respect the course 'grade_decimalpoints' configuration
    TL-21049   +   Fixed improperly removed seminar event roles

                   Seminar refactoring in the previous release created a bug that led to
                   improper deletion of seminar event roles. This, in turn, caused an error
                   when attempting to update seminar events that had unassigned event roles.
                   
                   The bug has been fixed, and improperly deleted roles will be removed
                   correctly on upgrade.

    TL-21055       Fixed the encoding of special HTML characters in tags

                   Prior to this patch, tag names were HTML-encoded before saving, with no
                   provision made to prevent re-encoding. This meant that whenever a course
                   (or program, or certification, or other tag-using component) was edited,
                   any attached tags would be re-encoded and saved as new tags.
                   
                   This behaviour has been fixed. Upgrading to this release will fix any tags
                   that have been encoded multiple times, merging them with their original,
                   un-encoded selves as necessary.

    TL-21074       Fixed logging when restoring a backup including course completion history

                   Prior to the patch, when restoring the completion history, the restore step
                   would log the course completion instead of its history (which was not its
                   responsibility).
                   
                   With this patch, the completion history restore step now logs the
                   completion history.

    TL-21149   +   Images displayed in a static form field no longer cause horizontal scroll

                   This will require CSS to be regenerated for themes that use LESS
                   inheritance.

    TL-21257       Prevented background controls from being active when viewing program assignments
    TL-21261       Fixed the filtering of spaces in the 'Add a block' popover
    TL-21275   +   Fixed recent regression with double encoded entities in report exports

                   Replaced relevant report builder calls to format_string() with  calls to
                   the report builder display class format_string which correctly encodes the
                   string according to the output format.

    TL-21277       Fixed compatibility of Behat integration with ChromeDriver 75 and later
    TL-21290   +   Fixed Report Builder saved searches to be sorted alphabetically in the 'Manage your saved searches' dialog 
    TL-21293       Fixed an error with visibility checks in the fetch_and_start_tour() external function

                   Prior to this patch an error was generated when the external function
                   fetch_and_start_tour() was called and the tour should not be shown to the
                   user.
                   
                   The check for whether the tour should be shown to the user or not is now
                   correctly handled by the JavaScript.

    TL-21295       Fixed bug where Grid catalogue course category updates ran interactively instead of as an adhoc task

                   The category update tasks can take a long time to complete when run
                   interactively on sites with many courses or programs.  The updates have
                   been moved to run as adhoc tasks instead.

    TL-21299       Fixed seminar direct enrolment Terms and Conditions link
    TL-21324       Fixed adding approvers to seminar

                   Prior to this patch, when a new approver was added to a seminar instance,
                   the previously added approvers (if any) were removed and replaced with the
                   new one.
                   
                   With this patch, the previously added approvers (if any) will remain
                   without change.

    TL-21328       Fixed exception thrown when user is not assigned to a program in their Learning Plan
    TL-21365   +   Removed duplicate records from the cancelled attendees list for seminar events with multiple sessions
    TL-21384       Fixed export value of the 'Previous completions' column in the 'Record of Learning: Certifications' report source

                   HTML markup is no longer displayed in the export file for this column.

    TL-21398       Fixed bug causing the front page course to be listed in the Grid course catalogue

                   Previously, if the site summary on the front page course was edited, the
                   front page would appear as a learning item in the Grid course catalogue.
                   The front page course should never appear in the catalogue; this has now
                   been fixed.

    TL-21411       Default program and certification images are now overridable by theme
    TL-21412   +   Fixed database query logging when ignoring errors in the database transactions
    TL-21413       Fixed the user 'full name link' report builder column to take admin role into account

                   Prior to this patch, the display function for the 'full name link' report
                   builder columns did not provide a URL for viewing profile at site level.
                   Even though, the actor was able to view the site level profile of another
                   user.
                   
                   With this patch, a profile URL at site level will be produced, if the actor
                   is able to view the site profile of another user.

    TL-21419       Fixed rendering of password fields to ensure they are displayed as mandatory
    TL-21454       Fixed export value of the 'Name' column in the 'Organisations' and 'Positions' report sources

                   HTML markup is no longer displayed in the export file for these columns.

    TL-21464       Fixed custom validation of multi-select custom fields to prevent forms incorrectly failing validation

                   In some cases, validation of multi-select custom fields would try to apply
                   validation to fields that didn't exist in the current form. This caused the
                   form to fail validation without a warning, leading to unexpected behaviour
                   when submitting forms.

    TL-21467       Fixed an issue where the 'User tours' menu item could not be added to the administration drop-down menu
    TL-21468       Added support for completion records archiving in LTI activity module
    TL-21535       Removed display of invalid negative grades when scale grade is selected in the lesson module

                   When the grading scale is used in the lesson module, the value stored in
                   the grade column is the database ID of the scale. This was incorrectly
                   being used to calculate the grade and displayed to the users, when in fact
                   this grade should not have been calculated when using the scale grading
                   option.

    TL-21536   +   Updated the default capabilities of the Trainer and Editing Trainer roles to allow 'mod/facetoface:viewallsessions'

                   Previously the Trainer and Editing Trainer roles were unable to view the
                   seminar 'Event details' page without the 'mod/facetoface:viewallsessions'
                   capability. These roles will now have the capability enabled by default for
                   new installations. Sites upgrading to this release are recommended to
                   manually enable the capability for the roles.

    TL-21543       Ensured correct capability is checked when viewing 'Comments Monitoring' page

                   Previously, viewing 'Comments Monitoring' page in the administration menu
                   checked only the 'moodle/site:viewreports' capability, but accessing the
                   page required an additional 'moodle/comment:delete' capability. This led to
                   inconsistencies where users would see the page in their navigation, but
                   would get an error when trying to access it.
                   
                   This behaviour has now been made consistent, and users with
                   'moodle/site:viewreports' capability can access and view the page without
                   needing to be able to delete the comments. Deleting comments still performs
                   the 'moodle/comment:delete' capability check.

    TL-21564       Fixed an issue with the parameters passed to the check_access_audience_visibility() function

                   This was not replicable within core code. But if a call to
                   check_access_audience_visibility() used an integer instead of an object,
                   the function would try to fetch the expected record from the database using
                   the integer as an id. That database call was incorrectly formatted
                   resulting in an error, this has been fixed.


Contributions:

    * John Phoon at Kineo Pacific  - TL-21564

Release 12.8 (17th July 2019):

API changes:

    TL-21370       Method resetAfterTest() in PHPUnit tests has been deprecated

                   Since the introduction of parallel PHPUnit testing the order of test
                   execution is no longer defined, which means that tests cannot rely on state
                   (database and file system) to be carried over from one test into another.
                   
                   Existing PHPUnit tests need to be updated to prepare data at the beginning
                   of each test method separately.

Performance improvements:

    TL-21541       The source filter for report builder sources has been optimised

                   Previously the options for this filter were loaded, even when not needed.
                   This was an expensive operation, often done needlessly. The options are now
                   only loaded when absolutely needed.

Improvements:

    TL-17691       Added site policies to the self-registration process

                   To comply with GDPR policies, when self-registration is enabled, new users
                   are now required to accept mandatory site policies before being able to
                   request a new account, as opposed to the users only viewing the site
                   policies after registering and logging in.

    TL-17745       Improved the program assignments user interface to better handle a large number of assignments

                   The previous user interface for program assignments would load every
                   assignment onto a single page, and in some situations where a very large
                   number of assignments were added to a single program or certification the
                   page would time out on load. The page now has a search, and filter, and
                   prevents too many records being loaded at the same time.

    TL-20760       Added support for search metadata within Courses, Programs, and Certifications.

                   New text field added to Courses, Programs, and Certifications settings
                   where search keywords can be added. These keywords will not be displayed
                   anywhere on pages but will be used in Full Text Search.
                   
                   By default these fields are empty.

    TL-20761       Added wildcard support for full text search in catalog

                   When asterisk "*" is placed as a last character of a single keyword in
                   catalog it will return all partial matches starting with the given
                   keyword.  Asterisk can be placed only in the end of keyword search (this
                   is limitations of wildcard support in databases) and at this stage only
                   single keywords are supported (no whitespaces).

    TL-20834       Enabled unaccented Full Text Search in catalog

                   PostgreSQL and MS SQL have built in support for accent insensitive full
                   text searches.
                   
                   By default, database configuration is used (typically accent sensitivity is
                   on).
                   
                   To change accent sensitivity of full test searches for either PostgreSQL or
                   MS SQL you can set the
                   following options in config.php:
                   $CFG->dboptions['ftsaccentsensitivity'] = true; // Accent sensitive search
                   $CFG->dboptions['ftsaccentsensitivity'] = false; // Accent insensitive
                   search
                   
                   After changing the accent sensitivity setting you need to run the following
                   scripts in the listed order:
                   php admin/cli/fts_rebuild_indexes.php
                   php admin/cli/fts_repopulate_tables.php

    TL-20886       Added ngram support for MySQL full text search

                   Added support of ngram in MySQL. ngram is a Full Text parser that mainly
                   designed to support Chinese, Japanese, and Korean (CJK) langauges. The
                   ngram parser tokenises a words into a contiguous sequence of n-characters.
                   More information about ngram can be found in MySQL documentation.
                   
                   While it is designed more for CJK languages, it is also useful to parse
                   text on languages that use words concatenation, like German or Swedish.
                   However, it can produce large number of false-positive search results
                   (albeit with lower rating), so doing proper testing after enabling is
                   recommended.
                   
                   This support is not enabled by default. To enable ngram support, add option
                   into your config.php:
                   
                   $CFG->dboptions['ftsngram'] = true;
                   
                   and run  FTS scripts to re-index content:
                   
                   php admin/cli/fts_rebuild_indexes.php
                    php admin/cli/fts_repopulate_tables.php

    TL-21056       Added a warning about incompatible column selection in the report builder

                   In some cases, a combination of columns selected in a report source may
                   have caused unexpected results or a broken report. This usually happened
                   when a column that already relies on the aggregated data internally (e.g.
                   'Course Short Name' in the 'Program Overview' report) was combined with
                   columns aggregated via 'Aggregation or grouping' (e.g. count or comma
                   separated values).
                   
                   Previously, using this type of combination on certain database types would
                   have resulted in an error. This change adds a warning to inform users about
                   the use of any incompatible columns at the time the report is being set up.

    TL-21247       Added configuration, a new CLI script and a scheduled task to execute the 'ANALYZE TABLE' query

                   The new 'analyze_table_task' scheduled task is configured to run every late
                   night.
                    It is required that the task be configured to run at off-peak times on
                   your site.

    TL-21359       Fixed the Atto editor incorrectly applying formatting to previously selected text

                   Fixed an intermittent problem with the Atto editor when formatting was
                   applied to previously selected text instead of the currently selected text.
                   The 'mouse select' functionality works reliably now.

    TL-21426       New SCORM setting has been added that implements session timeout prevention in SCORM player

                   The new setting "Enable the SCORM player to keep the user session alive" is
                   available under the Admin settings in the SCORM plugin. It can be used in
                   order to prevent unwanted session timeouts during SCORM attempts.
                   
                   Due to the fact that it keeps user session alive while SCORM attempt is in
                   progress, it may be considered a minor security concern and has been added
                   to the Security overview report as such.


Bug fixes:

    TL-18560       Fixed the 'Publish room for use in other sessions' checkbox in the edit custom room dialogue

                   When creating or editing a seminar event, it is possible to create a custom
                   room that can only be used by other events in the same seminar activity.
                   The editing form for these rooms can include a checkbox (if you have
                   sufficient permission) that allows them to be easily converted to sitewide
                   rooms. 
                   
                   This checkbox was always checked, and did not work as expected. This has
                   been fixed.

    TL-19138       Fixed warning message when deleting a report builder saved search

                   If a report builder saved search is deleted, any scheduled reports that use
                   that saved search are also deleted. The warning message to confirm the
                   deletion of the saved search now also correctly displays any scheduled
                   reports that will also be deleted.

    TL-19324       Fixed a bug within select tree where the drop-down would disappear when clicking the scrollbar

                   Improved the select tree component functionality. The scrollbar within
                   select tree components works reliably now.

    TL-20143       Fixed un-reversable block visiblity change when editing dashboard

                   When editing a dashboard it was possible to change the 'Administration'
                   block (or any other block) to only be visible on that dashboard. Once the
                   change was saved there was no way to change the block to display on 'Any
                   page' again. This patch allows the setting to be changed back.

    TL-20555       Removed Report Builder calls to a non-existent display function 'rb_display_nice_date()'

                   This is only an issue for any 'custom' created report sources that are
                   calling the 'rb_display_prog_date()' or 'rb_display_list_to_newline_date()'
                   display functions directly.

    TL-20960       Fixed the completion editor to schedule the recalculation of completion status if necessary

                   When saving activity completion status in the completion editor, the
                   reaggregate flag was set to schedule reaggregation of the associated course
                   completion record only if:
                    * completion criteria activity is modified in completion editor
                    * and the flag has not been set since the last cron run
                   
                   Added a transaction log about 'reaggregation scheduled' if the conditions
                   above are met.
                   
                   (If the reaggregate flag is set, then the next cron run will pick up the
                   corresponding course completion record, recalculate the completion status
                   and clear the flag.)

    TL-21055       Fixed the encoding of special HTML characters in tags

                   Prior to this patch, tag names were HTML-encoded before saving, with no
                   provision made to prevent re-encoding. This meant that whenever a course
                   (or program, or certification, or other tag-using component) was edited,
                   any attached tags would be re-encoded and saved as new tags.
                   
                   This behaviour has been fixed. Upgrading to this release will fix any tags
                   that have been encoded multiple times, merging them with their original,
                   un-encoded selves as necessary.

    TL-21074       Fixed logging when restoring a backup including course completion history

                   Prior to the patch, when restoring the completion history, the restore step
                   would log the course completion instead of its history (which was not its
                   responsibility).
                   
                   With this patch, the completion history restore step now logs the
                   completion history.

    TL-21257       Prevented background controls from being active when viewing program assignments
    TL-21261       Fixed the filtering of spaces in the 'Add a block' popover
    TL-21277       Fixed compatibility of Behat integration with ChromeDriver 75 and later
    TL-21293       Fixed an error with visibility checks in the fetch_and_start_tour() external function

                   Prior to this patch an error was generated when the external function
                   fetch_and_start_tour() was called and the tour should not be shown to the
                   user.
                   
                   The check for whether the tour should be shown to the user or not is now
                   correctly handled by the JavaScript.

    TL-21295       Fixed bug where Grid catalogue course category updates ran interactively instead of as an adhoc task

                   The category update tasks can take a long time to complete when run
                   interactively on sites with many courses or programs.  The updates have
                   been moved to run as adhoc tasks instead.

    TL-21299       Fixed seminar direct enrolment Terms and Conditions link
    TL-21324       Fixed adding approvers to seminar

                   Prior to this patch, when a new approver was added to a seminar instance,
                   the previously added approvers (if any) were removed and replaced with the
                   new one.
                   
                   With this patch, the previously added approvers (if any) will remain
                   without change.

    TL-21328       Fixed exception thrown when user is not assigned to a program in their Learning Plan
    TL-21361       Fixed deletion process for Seminar event custom room

                   If Seminar event has more then one sessions with the same date, different
                   hours and one custom room for these sessions, the system was unable to
                   delete the room if a user deletes the seminar event. The issue has been
                   fixed.

    TL-21384       Fixed export value of the 'Previous completions' column in the 'Record of Learning: Certifications' report source

                   HTML markup is no longer displayed in the export file for this column.

    TL-21398       Fixed bug causing the front page course to be listed in the Grid course catalogue

                   Previously, if the site summary on the front page course was edited, the
                   front page would appear as a learning item in the Grid course catalogue.
                   The front page course should never appear in the catalogue; this has now
                   been fixed.

    TL-21411       Default program and certification images are now overridable by theme
    TL-21413       Fixed the user 'full name link' report builder column to take admin role into account

                   Prior to this patch, the display function for the 'full name link' report
                   builder columns did not provide a URL for viewing profile at site level.
                   Even though, the actor was able to view the site level profile of another
                   user.
                   
                   With this patch, a profile URL at site level will be produced, if the actor
                   is able to view the site profile of another user.

    TL-21419       Fixed rendering of password fields to ensure they are displayed as mandatory
    TL-21454       Fixed export value of the 'Name' column in the 'Organisations' and 'Positions' report sources

                   HTML markup is no longer displayed in the export file for these columns.

    TL-21460       Fixed Seminar previous events using time period and room filter

                   The previous seminar events with time period support Room filter.
                   Previously viewing a previous seminar events and adding a Room filter will
                   ignore the filter.

    TL-21464       Fixed custom validation of multi-select custom fields to prevent forms incorrectly failing validation

                   In some cases, validation of multi-select custom fields would try to apply
                   validation to fields that didn't exist in the current form. This caused the
                   form to fail validation without a warning, leading to unexpected behaviour
                   when submitting forms.

    TL-21467       Fixed an issue where the 'User tours' menu item could not be added to the administration drop-down menu
    TL-21468       Added support for completion records archiving in LTI activity module
    TL-21535       Removed display of invalid negative grades when scale grade is selected in the lesson module

                   When the grading scale is used in the lesson module, the value stored in
                   the grade column is the database ID of the scale. This was incorrectly
                   being used to calculate the grade and displayed to the users, when in fact
                   this grade should not have been calculated when using the scale grading
                   option.

    TL-21543       Ensured correct capability is checked when viewing 'Comments Monitoring' page

                   Previously, viewing 'Comments Monitoring' page in the administration menu
                   checked only the 'moodle/site:viewreports' capability, but accessing the
                   page required an additional 'moodle/comment:delete' capability. This led to
                   inconsistencies where users would see the page in their navigation, but
                   would get an error when trying to access it.
                   
                   This behaviour has now been made consistent, and users with
                   'moodle/site:viewreports' capability can access and view the page without
                   needing to be able to delete the comments. Deleting comments still performs
                   the 'moodle/comment:delete' capability check.

    TL-21564       Fixed an issue with the parameters passed to the check_access_audience_visibility() function

                   This was not replicable within core code. But if a call to
                   check_access_audience_visibility() used an integer instead of an object,
                   the function would try to fetch the expected record from the database using
                   the integer as an id. That database call was incorrectly formatted
                   resulting in an error, this has been fixed.

Contributions:

    * John Phoon at Kineo Pacific  - TL-21564


Release 11.17 (17th July 2019):

API changes:

    TL-21370       Method resetAfterTest() in PHPUnit tests has been deprecated

                   Since the introduction of parallel PHPUnit testing the order of test
                   execution is no longer defined, which means that tests cannot rely on state
                   (database and file system) to be carried over from one test into another.
                   
                   Existing PHPUnit tests need to be updated to prepare data at the beginning
                   of each test method separately.

Performance improvements:

    TL-21541       The source filter for report builder sources has been optimised

                   Previously the options for this filter were loaded, even when not needed.
                   This was an expensive operation, often done needlessly. The options are now
                   only loaded when absolutely needed.

Improvements:

    TL-17691       Added site policies to the self-registration process

                   To comply with GDPR policies, when self-registration is enabled, new users
                   are now required to accept mandatory site policies before being able to
                   request a new account, as opposed to the users only viewing the site
                   policies after registering and logging in.

    TL-21359       Fixed the Atto editor incorrectly applying formatting to previously selected text

                   Fixed an intermittent problem with the Atto editor when formatting was
                   applied to previously selected text instead of the currently selected text.
                   The 'mouse select' functionality works reliably now.


Bug fixes:

    TL-19138       Fixed warning message when deleting a report builder saved search

                   If a report builder saved search is deleted, any scheduled reports that use
                   that saved search are also deleted. The warning message to confirm the
                   deletion of the saved search now also correctly displays any scheduled
                   reports that will also be deleted.

    TL-20143       Fixed un-reversable block visiblity change when editing dashboard

                   When editing a dashboard it was possible to change the 'Administration'
                   block (or any other block) to only be visible on that dashboard. Once the
                   change was saved there was no way to change the block to display on 'Any
                   page' again. This patch allows the setting to be changed back.

    TL-20555       Removed Report Builder calls to a non-existent display function 'rb_display_nice_date()'

                   This is only an issue for any 'custom' created report sources that are
                   calling the 'rb_display_prog_date()' or 'rb_display_list_to_newline_date()'
                   display functions directly.

    TL-21055       Fixed the encoding of special HTML characters in tags

                   Prior to this patch, tag names were HTML-encoded before saving, with no
                   provision made to prevent re-encoding. This meant that whenever a course
                   (or program, or certification, or other tag-using component) was edited,
                   any attached tags would be re-encoded and saved as new tags.
                   
                   This behaviour has been fixed. Upgrading to this release will fix any tags
                   that have been encoded multiple times, merging them with their original,
                   un-encoded selves as necessary.

    TL-21074       Fixed logging when restoring a backup including course completion history

                   Prior to the patch, when restoring the completion history, the restore step
                   would log the course completion instead of its history (which was not its
                   responsibility).
                   
                   With this patch, the completion history restore step now logs the
                   completion history.

    TL-21277       Fixed compatibility of Behat integration with ChromeDriver 75 and later
    TL-21293       Fixed an error with visibility checks in the fetch_and_start_tour() external function

                   Prior to this patch an error was generated when the external function
                   fetch_and_start_tour() was called and the tour should not be shown to the
                   user.
                   
                   The check for whether the tour should be shown to the user or not is now
                   correctly handled by the JavaScript.

    TL-21328       Fixed exception thrown when user is not assigned to a program in their Learning Plan
    TL-21413       Fixed the user 'full name link' report builder column to take admin role into account

                   Prior to this patch, the display function for the 'full name link' report
                   builder columns did not provide a URL for viewing profile at site level.
                   Even though, the actor was able to view the site level profile of another
                   user.
                   
                   With this patch, a profile URL at site level will be produced, if the actor
                   is able to view the site profile of another user.

    TL-21419       Fixed rendering of password fields to ensure they are displayed as mandatory
    TL-21464       Fixed custom validation of multi-select custom fields to prevent forms incorrectly failing validation

                   In some cases, validation of multi-select custom fields would try to apply
                   validation to fields that didn't exist in the current form. This caused the
                   form to fail validation without a warning, leading to unexpected behaviour
                   when submitting forms.

    TL-21468       Added support for completion records archiving in LTI activity module
    TL-21535       Removed display of invalid negative grades when scale grade is selected in the lesson module

                   When the grading scale is used in the lesson module, the value stored in
                   the grade column is the database ID of the scale. This was incorrectly
                   being used to calculate the grade and displayed to the users, when in fact
                   this grade should not have been calculated when using the scale grading
                   option.

    TL-21543       Ensured correct capability is checked when viewing 'Comments Monitoring' page

                   Previously, viewing 'Comments Monitoring' page in the administration menu
                   checked only the 'moodle/site:viewreports' capability, but accessing the
                   page required an additional 'moodle/comment:delete' capability. This led to
                   inconsistencies where users would see the page in their navigation, but
                   would get an error when trying to access it.
                   
                   This behaviour has now been made consistent, and users with
                   'moodle/site:viewreports' capability can access and view the page without
                   needing to be able to delete the comments. Deleting comments still performs
                   the 'moodle/comment:delete' capability check.

    TL-21564       Fixed an issue with the parameters passed to the check_access_audience_visibility() function

                   This was not replicable within core code. But if a call to
                   check_access_audience_visibility() used an integer instead of an object,
                   the function would try to fetch the expected record from the database using
                   the integer as an id. That database call was incorrectly formatted
                   resulting in an error, this has been fixed.

Contributions:

    * John Phoon at Kineo Pacific  - TL-21564

Release 10.23 (17th July 2019):

Bug fixes:

    TL-19138       Fixed warning message when deleting a report builder saved search

                   If a report builder saved search is deleted, any scheduled reports that use
                   that saved search are also deleted. The warning message to confirm the
                   deletion of the saved search now also correctly displays any scheduled
                   reports that will also be deleted.

    TL-21277       Fixed compatibility of Behat integration with ChromeDriver 75 and later
    TL-21341       Changed z-index of Totara dialogs to match Bootstrap 3 modal levels

                   Previously the modals had a z-index of 1 (and the backdrop 0) which caused
                   some content to be displayed above them. This sets the level to 1050 (with
                   the backdrop at 1040).
                   
                   Note: This is a backport of TL-18941
                     
                   This will require CSS to be regenerated for themes that use LESS
                   inheritance.

    TL-21419       Fixed rendering of password fields to ensure they are displayed as mandatory

Release 9.34 (17th July 2019):

Bug fixes:

    TL-19138       Fixed warning message when deleting a report builder saved search

                   If a report builder saved search is deleted, any scheduled reports that use
                   that saved search are also deleted. The warning message to confirm the
                   deletion of the saved search now also correctly displays any scheduled
                   reports that will also be deleted.