Hello everyone,
The following versions of Totara Learn have now been released:
These versions do contain security fixes, and for this reason we strongly recommend upgrade.
Each release also includes bug fixes and improvements.
A big thanks to the following people for their contributions to this release:
- Jamie Kramer, Elearning Experts - TL-7394
Release 9.28 (24th January 2019):
Security issues:
TL-19900 Applied fixes for Bootstrap XSS issues
Bootstrap recently included security fixes in their latest set of releases.
To avoid affecting functionality using the current versions of Bootstrap,
only the security fixes have been applied rather than upgrading the version
of Bootstrap used.
It is expected that there was no exploit that could be carried out in
Totara due to this vulnerability, as the necessary user input does not go
into the affected attributes when using Bootstrap components. However we
have applied these fixes to minimise the risk of becoming vulnerable in the
future.
The Bootstrap library is used by the Roots theme.
Improvements:
TL-18759 Improved the display of user's enrolment status
Added clarification to the Status field on the course enrolments page. If
editing a user's enrolment while the corresponding enrolment module is
disabled, the status will now be displayed as 'Effectively suspended'.
Bug fixes:
TL-19471 Fixed unavailable programs not showing in user's Record of Learning items when the user had started the program
TL-19797 Fixed minimum bookings notification being sent for cancelled events
TL-19877 Fixed bug where multi-framework rules were flagged as deleted in Audiences dynamic rules
TL-20007 Fixed an error with audience rules relying on a removed user-defined field value
This affected the 'choose' type of audience rules on text input user custom
fields. If a user-defined input value was used in the rule definition, and
that value was then subsequently removed as a field input, a fatal error
was thrown when viewing the audience. This is now handled gracefully,
rather than displaying an object being used as an array error the missing
value can now be removed from the rule.
Release 10.17 (24th January 2019):
Security issues:
TL-19900 Applied fixes for Bootstrap XSS issues
Bootstrap recently included security fixes in their latest set of releases.
To avoid affecting functionality using the current versions of Bootstrap,
only the security fixes have been applied rather than upgrading the version
of Bootstrap used.
It is expected that there was no exploit that could be carried out in
Totara due to this vulnerability, as the necessary user input does not go
into the affected attributes when using Bootstrap components. However we
have applied these fixes to minimise the risk of becoming vulnerable in the
future.
The Bootstrap library is used by the Roots theme.
TL-19965 Corrected the encoding applied to long text feedback answers
Answers to long text questions for the feedback module may not have been
correctly encoded in some previous versions of Totara. The correct encoding
is applied where necessary on upgrade and is now also applied when a user
submits their answer.
Improvements:
TL-18759 Improved the display of user's enrolment status
Added clarification to the Status field on the course enrolments page. If
editing a user's enrolment while the corresponding enrolment module is
disabled, the status will now be displayed as 'Effectively suspended'.
Bug fixes:
TL-19471 Fixed unavailable programs not showing in user's Record of Learning items when the user had started the program
TL-19797 Fixed minimum bookings notification being sent for cancelled events
TL-19804 Fixed an issue where overridden grades were not reset during completion archiving
TL-19819 Fixed incorrectly populated Seminar custom notification options
Data values were storing correctly to database, but were not being used
correctly to set the form values when the edit form was reloaded.
TL-19828 Fixed sanity check for external mssql database that checks that the specified table exists
TL-19873 Fixed PHP error in the report with a 'course (multi line)' filter in the saved search where selected course has been deleted
TL-19877 Fixed bug where multi-framework rules were flagged as deleted in Audiences dynamic rules
TL-20007 Fixed an error with audience rules relying on a removed user-defined field value
This affected the 'choose' type of audience rules on text input user custom
fields. If a user-defined input value was used in the rule definition, and
that value was then subsequently removed as a field input, a fatal error
was thrown when viewing the audience. This is now handled gracefully,
rather than displaying an object being used as an array error the missing
value can now be removed from the rule.
Release 11.11 (24th January 2019):
Security issues:
TL-19900 Applied fixes for Bootstrap XSS issues
Bootstrap recently included security fixes in their latest set of releases.
To avoid affecting functionality using the current versions of Bootstrap,
only the security fixes have been applied rather than upgrading the version
of Bootstrap used.
It is expected that there was no exploit that could be carried out in
Totara due to this vulnerability, as the necessary user input does not go
into the affected attributes when using Bootstrap components. However we
have applied these fixes to minimise the risk of becoming vulnerable in the
future.
The Bootstrap library is used by the Roots theme.
TL-19965 Corrected the encoding applied to long text feedback answers
Answers to long text questions for the feedback module may not have been
correctly encoded in some previous versions of Totara. The correct encoding
is applied where necessary on upgrade and is now also applied when a user
submits their answer.
Improvements:
TL-18759 Improved the display of user's enrolment status
Added clarification to the Status field on the course enrolments page. If
editing a user's enrolment while the corresponding enrolment module is
disabled, the status will now be displayed as 'Effectively suspended'.
TL-19666 Extended functionality for the 'Allow user's conflict' option on seminar event attendees
Prior to this patch, the 'Allow user's conflict' option was only applied on
the seminar event roles to bypass the conflict check. However it was not
applied to the attendees of the seminar event. With this patch the
functionality is now applied for attendees as well.
TL-19721 Made help text for uploading seminar attendees from file more intuitive
The help text displayed when adding users to a seminar event via file
upload was worded in a way that made it difficult to understand. There was
also a formatting issue causing additional fields in the bulleted list to
be indented too far.
The string 'scvtextfile_help' was deprecated, and replaced by a new string,
'csvtextfile_help', to make it clear that only one of the three possible
user-identifying fields (username, idnumber, or email) should be used and
that all columns must be present in the file.
Additionally, the code that renders the upload form was modified so that
all listed fields have the same list indent level.
TL-19823 Updated appraisal summaries to show the actual user who completed a stage
The actual user who completes an appraisal stage is now recorded and shown
when viewing the appraisal summary. This shows when a user was 'logged in
as' another user and completed the stage on their behalf. This also
continues to show the original user who participated in the appraisal, even
after a job assignment change results in a change to which users fulfill
those participant roles at the time the appraisal summary is viewed.
TL-19825 Added 'login as' real name column to the logstore report source
TL-19848 Upgraded PHPUnit to version 7.5
This patch upgrades the PHPUnit version to 7.5. Two major versions lie in
between the last version and this upgrade.
The following backwards compatibility issues have to be addressed in custom
code:
# All PHPUnit classes are now namespaced, i.e.
'PHPUnit_Framework_TestCase' is now 'PHPUnit\Framework\TestCase'
# The following previously deprecated methods got removed:
** getMock(),
** getMockWithoutInvokingTheOriginalConstructor(),
** setExpectedException(),
** setExpectedExceptionRegExp(),
** hasPerformedExpectationsOnOutput()
# The risky check for useless tests is now active by default.
The phpunit.xml configuration 'beStrictAboutTestsThatDoNotTestAnything' was
set to 'false' to keep the previous behaviour to not show risky tests by
default.
To make the transition easier all methods removed in PHPUnit were added in
the base_testcase class and the functionality is proxied to new methods of
PHPUnit. These methods now trigger a debugging message to help developers
to migrate their tests to the new methods.
Old class names were added to renamedclasses.php to support migration to
new namespaced classes.
More information about the upgrade to 7.5:
* [https://phpunit.de/announcements/phpunit-6.html]
* [https://phpunit.de/announcements/phpunit-7.html]
TL-19852 Fixed the wording of the 'Try another question like this one' button in the quiz module
The "Try another question like this one" button has been renamed into "Redo
question". Help text for the "Allow redo within an attempt" quiz setting
has been updated to clarify its behaviour.
TL-19896 The maximum width of Select HTML elements within a Totara dialogue is now limited by the size of the dialogue
TL-19904 Added appraisal page and stage completion events for logging
TL-19909 Removed limit on the number of options available when creating a dynamic audience rule based on a User profile field
When creating a dynamic audience rule by choosing one or more values of a
text input User profile field, there was a limit of 2500 options to choose
from.
This was an arbitrary limit, and has been removed.
Note that very large numbers of options (more than ~50,000) may have an
effect on browser performance during the selection process. Selecting a
large number of options (more than ~10,000 selections) may cause the
receiving script to run out of memory.
Bug fixes:
TL-18732 Changed enrolment message sending for programs to be more consistent
If a program (or certification) is created with required course sets (all
optional) the program is marked as complete straight away for any assigned
users. Previously the enrolment message would not be sent to users in this
case. We now send the enrolment message to users even if the program is
complete.
TL-19471 Fixed unavailable programs not showing in user's Record of Learning items when the user had started the program
TL-19691 Expired images now have the expired badge stamped on top
This will require CSS to be regenerated for themes that use LESS
inheritance.
TL-19728 Fixed the sending of duplicate emails on appraisal activation
TL-19739 Fixed select filters when page switching on embedded reports with default values set
Previously if an embedded report had defined a default value for a select
filter, then changing that filter to 'is any value' and hitting search
would correctly show all results, however if the report has multiple pages
then switching to any other page in the report would revert back to the
default value. The filter change in now maintained across pages.
TL-19782 Fixed javascript regression in audience's 'visible learning'
Prior to this patch: the AJAX request was being sent twice to the server
when deleting a course from an audience's 'visible learning'. It caused the
second request to be regarded as an invalid request, because the first one
had already been processed and the record successfully deleted.
After this patch: the event will be triggered once in audience's 'visible
learning', and it will send only one AJAX request.
TL-19791 Fixed an issue with audiences in course access restrictions
Previously the audience restrictions did not work when searching for
audience names which contained non-alphanumeric characters.
TL-19797 Fixed minimum bookings notification being sent for cancelled events
TL-19804 Fixed an issue where overridden grades were not reset during completion archiving
TL-19811 Fixed a seminar's custom room not appearing in search results from a different seminar
Prior to this patch: A custom room (unpublished room) that had been used in
a seminar's event would appear in a search result from a query of a
different seminar.
With this patch: The custom room (unpublished room) will not appear in the
search result of a different seminar.
TL-19819 Fixed incorrectly populated Seminar custom notification options
Data values were storing correctly to database, but were not being used
correctly to set the form values when the edit form was reloaded.
TL-19828 Fixed sanity check for external mssql database that checks that the specified table exists
TL-19839 Fixed behaviour of null customfield values being imported from database sources in HR Import
Null values being imported for custom fields were incorrectly erasing data
in Totara. The correct behaviour of ignoring null value and keeping the
existing value is now used.
TL-19841 Fixed PHPUnit test failure in mod_facetoface_lib_testcase::test_sync_assets
TL-19856 Fixed missing data attributes bug affecting search functionality for seminar rooms and assets
TL-19864 Prevented bind password from being auto filled by Chrome when configuring LDAP authenticaion
The bind password field was being automatically filled when editing the
LDAP authentication settings. This lead to a chance that the bind password
was set to an incorrect/invalid value without the user being aware it had
happened. This only affected users of Chrome.
TL-19865 Fixed sort order for question scale values in user data export for review questions
TL-19866 Fixed date assigned shown on the program detail page
When a user is assigned to a program that they would have completed in the
past due to the courses in that program being complete, the date they were
assigned to the program was incorrectly displayed. Previously this date was
the date they completed the program (in the past). This now displays as the
actual date they were assigned, which is consistent with the 'Date
assigned' column in the Program record of learning report.
TL-19873 Fixed PHP error in the report with a 'course (multi line)' filter in the saved search where selected course has been deleted
TL-19877 Fixed bug where multi-framework rules were flagged as deleted in Audiences dynamic rules
TL-19894 Added batch processing of users when being assigned to a Program
TL-19903 Fixed removing value of hierarchy multi select custom fields using HR Import
When syncing Positions or Organisations and changing the value of a
multi-select custom field, if a field was left blank then it would
incorrectly be ignored instead of removing the value (adhering to the empty
field behaviour setting). Empty fields for this type of custom field now
remove the existing value as expected.
TL-19908 Fixed a debug notice being generated when adding deferred Program assignments
TL-19922 Enabled Rooms/Assets 'Manage searches' buttons
When managing rooms or assets, it is possible to save a search for
rooms/assets by name and/or availability, and to share those searches with
other managers. In order to edit or delete saved searches, the manager
clicks on a "Manage searches" button.
Prior to this patch, clicking the button did nothing. The button now works
correctly, opening the Manage searches dialogue.
TL-19923 Fixed due date format in "Competency update" emails
When a manager changes the due date of a competency in a learner's Learning
plan, the email sent to the learner now contains the correct dates.
TL-19947 Increased the limit on number of choices available in autocomplete menu when restricting an activity by audience
TL-19953 Fixed missing icon for appraisal previews
This was supposed to be fixed in TL-19780 but it still failed in IE11
because of the way IE behaves with missing icons compared to other
browsers.
This has now been fixed so that IE also displays the preview correctly.
TL-20007 Fixed an error with audience rules relying on a removed user-defined field value
This affected the 'choose' type of audience rules on text input user custom
fields. If a user-defined input value was used in the rule definition, and
that value was then subsequently removed as a field input, a fatal error
was thrown when viewing the audience. This is now handled gracefully,
rather than displaying an object being used as an array error the missing
value can now be removed from the rule.
Release 12.2 (24th January 2019):
Security issues:
TL-19900 Applied fixes for Bootstrap XSS issues
Bootstrap recently included security fixes in their latest set of releases.
To avoid affecting functionality using the current versions of Bootstrap,
only the security fixes have been applied rather than upgrading the version
of Bootstrap used.
It is expected that there was no exploit that could be carried out in
Totara due to this vulnerability, as the necessary user input does not go
into the affected attributes when using Bootstrap components. However we
have applied these fixes to minimise the risk of becoming vulnerable in the
future.
The Bootstrap library is used by the Roots theme.
TL-19965 Corrected the encoding applied to long text feedback answers
Answers to long text questions for the feedback module may not have been
correctly encoded in some previous versions of Totara. The correct encoding
is applied where necessary on upgrade and is now also applied when a user
submits their answer.
Performance improvements:
TL-4241 Converted the bulk query into chunk queries, within loading the list of users to be added/removed from an audience
Improvements:
TL-18759 Improved the display of user's enrolment status
Added clarification to the Status field on the course enrolments page. If
editing a user's enrolment while the corresponding enrolment module is
disabled, the status will now be displayed as 'Effectively suspended'.
TL-19306 Added CSV delimiter setting for attendee bulk upload
# Added an admin setting on event global settings that determines the
sitewide default CSV delimiter for seminar with the following options:
** Automatic <-- default for t13
** , (comma) <-- default for t12, this is a current default setting, for
case a client using Totara API.
** ; (semi-colon)
** : (colon)
** \t (tab)
# Added a CSV file delimiter under CSV file encoding setting with the same
options as above defaulting to the selection
TL-19666 Extended functionality for the 'Allow user's conflict' option on seminar event attendees
Prior to this patch, the 'Allow user's conflict' option was only applied on
the seminar event roles to bypass the conflict check. However it was not
applied to the attendees of the seminar event. With this patch the
functionality is now applied for attendees as well.
TL-19721 Made help text for uploading seminar attendees from file more intuitive
The help text displayed when adding users to a seminar event via file
upload was worded in a way that made it difficult to understand. There was
also a formatting issue causing additional fields in the bulleted list to
be indented too far.
The string 'scvtextfile_help' was deprecated, and replaced by a new string,
'csvtextfile_help', to make it clear that only one of the three possible
user-identifying fields (username, idnumber, or email) should be used and
that all columns must be present in the file.
Additionally, the code that renders the upload form was modified so that
all listed fields have the same list indent level.
TL-19823 Updated appraisal summaries to show the actual user who completed a stage
The actual user who completes an appraisal stage is now recorded and shown
when viewing the appraisal summary. This shows when a user was 'logged in
as' another user and completed the stage on their behalf. This also
continues to show the original user who participated in the appraisal, even
after a job assignment change results in a change to which users fulfill
those participant roles at the time the appraisal summary is viewed.
TL-19825 Added 'login as' real name column to the logstore report source
TL-19848 Upgraded PHPUnit to version 7.5
This patch upgrades the PHPUnit version to 7.5. Two major versions lie in
between the last version and this upgrade.
The following backwards compatibility issues have to be addressed in custom
code:
# All PHPUnit classes are now namespaced, i.e.
'PHPUnit_Framework_TestCase' is now 'PHPUnit\Framework\TestCase'
# The following previously deprecated methods got removed:
** getMock(),
** getMockWithoutInvokingTheOriginalConstructor(),
** setExpectedException(),
** setExpectedExceptionRegExp(),
** hasPerformedExpectationsOnOutput()
# The risky check for useless tests is now active by default.
The phpunit.xml configuration 'beStrictAboutTestsThatDoNotTestAnything' was
set to 'false' to keep the previous behaviour to not show risky tests by
default.
To make the transition easier all methods removed in PHPUnit were added in
the base_testcase class and the functionality is proxied to new methods of
PHPUnit. These methods now trigger a debugging message to help developers
to migrate their tests to the new methods.
Old class names were added to renamedclasses.php to support migration to
new namespaced classes.
More information about the upgrade to 7.5:
* [https://phpunit.de/announcements/phpunit-6.html]
* [https://phpunit.de/announcements/phpunit-7.html]
TL-19852 Fixed the wording of the 'Try another question like this one' button in the quiz module
The "Try another question like this one" button has been renamed into "Redo
question". Help text for the "Allow redo within an attempt" quiz setting
has been updated to clarify its behaviour.
TL-19896 The maximum width of Select HTML elements within a Totara dialogue is now limited by the size of the dialogue
TL-19904 Added appraisal page and stage completion events for logging
TL-19909 Removed limit on the number of options available when creating a dynamic audience rule based on a User profile field
When creating a dynamic audience rule by choosing one or more values of a
text input User profile field, there was a limit of 2500 options to choose
from.
This was an arbitrary limit, and has been removed.
Note that very large numbers of options (more than ~50,000) may have an
effect on browser performance during the selection process. Selecting a
large number of options (more than ~10,000 selections) may cause the
receiving script to run out of memory.
Bug fixes:
TL-4458 Added multi-language support for position organisation custom field names in audience rules
TL-18732 Changed enrolment message sending for programs to be more consistent
If a program (or certification) is created with required course sets (all
optional) the program is marked as complete straight away for any assigned
users. Previously the enrolment message would not be sent to users in this
case. We now send the enrolment message to users even if the program is
complete.
TL-19471 Fixed unavailable programs not showing in user's Record of Learning items when the user had started the program
TL-19489 Ignore embedded reports for report-based catalog when the feature is off
TL-19691 Expired images now have the expired badge stamped on top
This will require CSS to be regenerated for themes that use LESS
inheritance.
TL-19728 Fixed the sending of duplicate emails on appraisal activation
TL-19739 Fixed select filters when page switching on embedded reports with default values set
Previously if an embedded report had defined a default value for a select
filter, then changing that filter to 'is any value' and hitting search
would correctly show all results, however if the report has multiple pages
then switching to any other page in the report would revert back to the
default value. The filter change in now maintained across pages.
TL-19782 Fixed javascript regression in audience's 'visible learning'
Prior to this patch: the AJAX request was being sent twice to the server
when deleting a course from an audience's 'visible learning'. It caused the
second request to be regarded as an invalid request, because the first one
had already been processed and the record successfully deleted.
After this patch: the event will be triggered once in audience's 'visible
learning', and it will send only one AJAX request.
TL-19791 Fixed an issue with audiences in course access restrictions
Previously the audience restrictions did not work when searching for
audience names which contained non-alphanumeric characters.
TL-19797 Fixed minimum bookings notification being sent for cancelled events
TL-19804 Fixed an issue where overridden grades were not reset during completion archiving
TL-19811 Fixed a seminar's custom room not appearing in search results from a different seminar
Prior to this patch: A custom room (unpublished room) that had been used in
a seminar's event would appear in a search result from a query of a
different seminar.
With this patch: The custom room (unpublished room) will not appear in the
search result of a different seminar.
TL-19813 Fixed a regression caused by TL-17450
TL-17450 caused a regression in the position of the Quiz and Lesson
activity menu blocks that made them appear full width. This undoes the
unintentional change in layout for these two activities.
TL-19822 Fixed encoding of search text in catalogue
There was a problem which caused accented characters to be passed to the
server in an incorrect format when entered into the search text box in the
grid catalogue. This resulted in search not working correctly and has been
fixed.
TL-19828 Fixed sanity check for external mssql database that checks that the specified table exists
TL-19844 Fixed the position of the quick access menu for RTL languages
This will require CSS to be regenerated for themes that use LESS
inheritance.
TL-19845 Fixed RTL when using gallery tiles in the featured links block
This will require CSS to be regenerated for themes that use LESS
inheritance.
TL-19846 Fixed typo that caused Appraisal detail report to throw a fatal error
TL-19847 Fixed removing attendees of past seminar events
User could not be removed from past events using the 'Attendees' tab. This
is fixed now, however, the user who performs the action will need to have
the 'mod/facetoface:signuppastevents' permission to do this.
TL-19849 Fixed bug in report builder that prevented graphing of grade percentages
User reports created in Totara 10 and 11 allowed the Course Completion
'Grade' column to be displayed as a graph at the top of the report.
Prior to this patch, this behaviour was prevented in Totara 12. It is now
possible to graph these grades again.
TL-19856 Fixed missing data attributes bug affecting search functionality for seminar rooms and assets
TL-19857 Fixed toggling of restrictions on quiz questions
An invalid flex icon was being specified so when toggling restrictions on
quiz questions the icon would disappear and be replaced with the alt text
and then switch to a different icon set. Toggling the restriction is now
consistent and works as expected.
TL-19865 Fixed sort order for question scale values in user data export for review questions
TL-19866 Fixed date assigned shown on the program detail page
When a user is assigned to a program that they would have completed in the
past due to the courses in that program being complete, the date they were
assigned to the program was incorrectly displayed. Previously this date was
the date they completed the program (in the past). This now displays as the
actual date they were assigned, which is consistent with the 'Date
assigned' column in the Program record of learning report.
TL-19871 Fixed bug that placed top-level site course in catalogue.
The Totara homepage is a special course that can hold activities. Adding an
activity to it caused it to be listed in the Find Learning catalogue, with
a blank tile.
This has been fixed by preventing the site from being included in the
catalogue when an activity is added or removed from the homepage, and by
excluding courses with the 'site' format from the catalogue's periodic cron
update script.
If you have a blank tile in the catalogue because of this issue, it will be
removed on the next hourly cron run.
TL-19872 Fixed a PHP debug message when a quick access menu group has been deleted
TL-19873 Fixed PHP error in the report with a 'course (multi line)' filter in the saved search where selected course has been deleted
TL-19877 Fixed bug where multi-framework rules were flagged as deleted in Audiences dynamic rules
TL-19894 Added batch processing of users when being assigned to a Program
TL-19903 Fixed removing value of hierarchy multi select custom fields using HR Import
When syncing Positions or Organisations and changing the value of a
multi-select custom field, if a field was left blank then it would
incorrectly be ignored instead of removing the value (adhering to the empty
field behaviour setting). Empty fields for this type of custom field now
remove the existing value as expected.
TL-19908 Fixed a debug notice being generated when adding deferred Program assignments
TL-19912 Fixed bug that prevented learners from accessing the catalogue when the Miscellaneous category was hidden
TL-19917 Fixed wrong table reference in the main menu
TL-19922 Enabled Rooms/Assets 'Manage searches' buttons
When managing rooms or assets, it is possible to save a search for
rooms/assets by name and/or availability, and to share those searches with
other managers. In order to edit or delete saved searches, the manager
clicks on a "Manage searches" button.
Prior to this patch, clicking the button did nothing. The button now works
correctly, opening the Manage searches dialogue.
TL-19923 Fixed due date format in "Competency update" emails
When a manager changes the due date of a competency in a learner's Learning
plan, the email sent to the learner now contains the correct dates.
TL-19947 Increased the limit on number of choices available in autocomplete menu when restricting an activity by audience
TL-19953 Fixed missing icon for appraisal previews
This was supposed to be fixed in TL-19780 but it still failed in IE11
because of the way IE behaves with missing icons compared to other
browsers.
This has now been fixed so that IE also displays the preview correctly.
TL-19961 Removed exception in HR Import clean_fields() function when a field is not used
Fields can be present in HR Import source CSV file that are not required
and are outside of the list of possible fields to import. We do not need to
clean these fields as they are not used and have removed the execution
generated.
TL-19982 Fixed duplication of seminar booking approval request message when learner has both manager and temporary manager set
TL-20007 Fixed an error with audience rules relying on a removed user-defined field value
This affected the 'choose' type of audience rules on text input user custom
fields. If a user-defined input value was used in the rule definition, and
that value was then subsequently removed as a field input, a fatal error
was thrown when viewing the audience. This is now handled gracefully,
rather than displaying an object being used as an array error the missing
value can now be removed from the rule.
Release Evergreen (24th January 2019):
Key: + Evergreen only
Security issues:
TL-19900 Applied fixes for Bootstrap XSS issues
Bootstrap recently included security fixes in their latest set of releases.
To avoid affecting functionality using the current versions of Bootstrap,
only the security fixes have been applied rather than upgrading the version
of Bootstrap used.
It is expected that there was no exploit that could be carried out in
Totara due to this vulnerability, as the necessary user input does not go
into the affected attributes when using Bootstrap components. However we
have applied these fixes to minimise the risk of becoming vulnerable in the
future.
The Bootstrap library is used by the Roots theme.
TL-19965 Corrected the encoding applied to long text feedback answers
Answers to long text questions for the feedback module may not have been
correctly encoded in some previous versions of Totara. The correct encoding
is applied where necessary on upgrade and is now also applied when a user
submits their answer.
New features:
TL-7394 + Added a new dynamic audience rule based on historic course completion dates
This new rule closely resembles the existing course completion rules, but
instead of comparing the user's current completion it checks the rule
against any archived completions in the course_completion_history table.
TL-9209 + Added a new dynamic audience rule based on user creation dates
This rule allows you to define an audience based on the 'timecreated'
column of a user's database record. Like existing date time rules, this can
either be compared to an entered date/time, or to the current time when the
rule is reaggregated.
Performance improvements:
TL-4241 Converted the bulk query into chunk queries, within loading the list of users to be added/removed from an audience
Improvements:
TL-8308 + The certification report source now better supports aggregation
Previously the certification report source contained several required
columns in order to ensure user visibility was correctly applied.
These required columns led to aggregation within the report not working.
Thanks to improvements made in Totara 12 this could be refactored so that
the required columns were no longer required.
Visibility is still calculated accurately and aggregation is now working
for this report source.
TL-17311 + Converted seminar CSS to use LESS
This will require CSS to be regenerated for themes that use LESS
inheritance.
TL-18759 Improved the display of user's enrolment status
Added clarification to the Status field on the course enrolments page. If
editing a user's enrolment while the corresponding enrolment module is
disabled, the status will now be displayed as 'Effectively suspended'.
TL-19306 Added CSV delimiter setting for attendee bulk upload
# Added an admin setting on event global settings that determines the
sitewide default CSV delimiter for seminar with the following options:
** Automatic <-- default for t13
** , (comma) <-- default for t12, this is a current default setting, for
case a client using Totara API.
** ; (semi-colon)
** : (colon)
** \t (tab)
# Added a CSV file delimiter under CSV file encoding setting with the same
options as above defaulting to the selection
TL-19666 Extended functionality for the 'Allow user's conflict' option on seminar event attendees
Prior to this patch, the 'Allow user's conflict' option was only applied on
the seminar event roles to bypass the conflict check. However it was not
applied to the attendees of the seminar event. With this patch the
functionality is now applied for attendees as well.
TL-19721 Made help text for uploading seminar attendees from file more intuitive
The help text displayed when adding users to a seminar event via file
upload was worded in a way that made it difficult to understand. There was
also a formatting issue causing additional fields in the bulleted list to
be indented too far.
The string 'scvtextfile_help' was deprecated, and replaced by a new string,
'csvtextfile_help', to make it clear that only one of the three possible
user-identifying fields (username, idnumber, or email) should be used and
that all columns must be present in the file.
Additionally, the code that renders the upload form was modified so that
all listed fields have the same list indent level.
TL-19823 Updated appraisal summaries to show the actual user who completed a stage
The actual user who completes an appraisal stage is now recorded and shown
when viewing the appraisal summary. This shows when a user was 'logged in
as' another user and completed the stage on their behalf. This also
continues to show the original user who participated in the appraisal, even
after a job assignment change results in a change to which users fulfill
those participant roles at the time the appraisal summary is viewed.
TL-19825 Added 'login as' real name column to the logstore report source
TL-19848 Upgraded PHPUnit to version 7.5
This patch upgrades the PHPUnit version to 7.5. Two major versions lie in
between the last version and this upgrade.
The following backwards compatibility issues have to be addressed in custom
code:
# All PHPUnit classes are now namespaced, i.e.
'PHPUnit_Framework_TestCase' is now 'PHPUnit\Framework\TestCase'
# The following previously deprecated methods got removed:
** getMock(),
** getMockWithoutInvokingTheOriginalConstructor(),
** setExpectedException(),
** setExpectedExceptionRegExp(),
** hasPerformedExpectationsOnOutput()
# The risky check for useless tests is now active by default.
The phpunit.xml configuration 'beStrictAboutTestsThatDoNotTestAnything' was
set to 'false' to keep the previous behaviour to not show risky tests by
default.
To make the transition easier all methods removed in PHPUnit were added in
the base_testcase class and the functionality is proxied to new methods of
PHPUnit. These methods now trigger a debugging message to help developers
to migrate their tests to the new methods.
Old class names were added to renamedclasses.php to support migration to
new namespaced classes.
More information about the upgrade to 7.5:
* [https://phpunit.de/announcements/phpunit-6.html]
* [https://phpunit.de/announcements/phpunit-7.html]
TL-19852 Fixed the wording of the 'Try another question like this one' button in the quiz module
The "Try another question like this one" button has been renamed into "Redo
question". Help text for the "Allow redo within an attempt" quiz setting
has been updated to clarify its behaviour.
TL-19896 The maximum width of Select HTML elements within a Totara dialogue is now limited by the size of the dialogue
TL-19904 Added appraisal page and stage completion events for logging
TL-19909 Removed limit on the number of options available when creating a dynamic audience rule based on a User profile field
When creating a dynamic audience rule by choosing one or more values of a
text input User profile field, there was a limit of 2500 options to choose
from.
This was an arbitrary limit, and has been removed.
Note that very large numbers of options (more than ~50,000) may have an
effect on browser performance during the selection process. Selecting a
large number of options (more than ~10,000 selections) may cause the
receiving script to run out of memory.
Bug fixes:
TL-4458 Added multi-language support for position organisation custom field names in audience rules
TL-14099 + Fixed a bug in course completion determination when multiple enrolments were present
In the case when a user had multiple enrolments in the same course, and
course completion was determined by how many days the user was enrolled in
the course, the cron job that updated course completions would fail.
With this fix, multiple enrolments will be processed by cron as expected.
TL-18732 Changed enrolment message sending for programs to be more consistent
If a program (or certification) is created with required course sets (all
optional) the program is marked as complete straight away for any assigned
users. Previously the enrolment message would not be sent to users in this
case. We now send the enrolment message to users even if the program is
complete.
TL-18892 Fixed problem with redisplayed goal question in appraisals
Formerly, a redisplayed goal question would display the goal status as a
drop-down list - whether or not the user had rights to change/answer the
question. However, when the goal was changed, it was ignored. This patch
changes the drop-down into a text string when necessary so that it cannot
be changed.
TL-19471 Fixed unavailable programs not showing in user's Record of Learning items when the user had started the program
TL-19489 Ignore embedded reports for report-based catalog when the feature is off
TL-19691 Expired images now have the expired badge stamped on top
This will require CSS to be regenerated for themes that use LESS
inheritance.
TL-19728 Fixed the sending of duplicate emails on appraisal activation
TL-19739 Fixed select filters when page switching on embedded reports with default values set
Previously if an embedded report had defined a default value for a select
filter, then changing that filter to 'is any value' and hitting search
would correctly show all results, however if the report has multiple pages
then switching to any other page in the report would revert back to the
default value. The filter change in now maintained across pages.
TL-19782 Fixed javascript regression in audience's 'visible learning'
Prior to this patch: the AJAX request was being sent twice to the server
when deleting a course from an audience's 'visible learning'. It caused the
second request to be regarded as an invalid request, because the first one
had already been processed and the record successfully deleted.
After this patch: the event will be triggered once in audience's 'visible
learning', and it will send only one AJAX request.
TL-19791 Fixed an issue with audiences in course access restrictions
Previously the audience restrictions did not work when searching for
audience names which contained non-alphanumeric characters.
TL-19797 Fixed minimum bookings notification being sent for cancelled events
TL-19804 Fixed an issue where overridden grades were not reset during completion archiving
TL-19811 Fixed a seminar's custom room not appearing in search results from a different seminar
Prior to this patch: A custom room (unpublished room) that had been used in
a seminar's event would appear in a search result from a query of a
different seminar.
With this patch: The custom room (unpublished room) will not appear in the
search result of a different seminar.
TL-19813 Fixed a regression caused by TL-17450
TL-17450 caused a regression in the position of the Quiz and Lesson
activity menu blocks that made them appear full width. This undoes the
unintentional change in layout for these two activities.
TL-19822 Fixed encoding of search text in catalogue
There was a problem which caused accented characters to be passed to the
server in an incorrect format when entered into the search text box in the
grid catalogue. This resulted in search not working correctly and has been
fixed.
TL-19828 Fixed sanity check for external mssql database that checks that the specified table exists
TL-19844 Fixed the position of the quick access menu for RTL languages
This will require CSS to be regenerated for themes that use LESS
inheritance.
TL-19845 Fixed RTL when using gallery tiles in the featured links block
This will require CSS to be regenerated for themes that use LESS
inheritance.
TL-19846 Fixed typo that caused Appraisal detail report to throw a fatal error
TL-19847 Fixed removing attendees of past seminar events
User could not be removed from past events using the 'Attendees' tab. This
is fixed now, however, the user who performs the action will need to have
the 'mod/facetoface:signuppastevents' permission to do this.
TL-19849 Fixed bug in report builder that prevented graphing of grade percentages
User reports created in Totara 10 and 11 allowed the Course Completion
'Grade' column to be displayed as a graph at the top of the report.
Prior to this patch, this behaviour was prevented in Totara 12. It is now
possible to graph these grades again.
TL-19856 Fixed missing data attributes bug affecting search functionality for seminar rooms and assets
TL-19857 Fixed toggling of restrictions on quiz questions
An invalid flex icon was being specified so when toggling restrictions on
quiz questions the icon would disappear and be replaced with the alt text
and then switch to a different icon set. Toggling the restriction is now
consistent and works as expected.
TL-19865 Fixed sort order for question scale values in user data export for review questions
TL-19866 Fixed date assigned shown on the program detail page
When a user is assigned to a program that they would have completed in the
past due to the courses in that program being complete, the date they were
assigned to the program was incorrectly displayed. Previously this date was
the date they completed the program (in the past). This now displays as the
actual date they were assigned, which is consistent with the 'Date
assigned' column in the Program record of learning report.
TL-19871 Fixed bug that placed top-level site course in catalogue.
The Totara homepage is a special course that can hold activities. Adding an
activity to it caused it to be listed in the Find Learning catalogue, with
a blank tile.
This has been fixed by preventing the site from being included in the
catalogue when an activity is added or removed from the homepage, and by
excluding courses with the 'site' format from the catalogue's periodic cron
update script.
If you have a blank tile in the catalogue because of this issue, it will be
removed on the next hourly cron run.
TL-19872 Fixed a PHP debug message when a quick access menu group has been deleted
TL-19873 Fixed PHP error in the report with a 'course (multi line)' filter in the saved search where selected course has been deleted
TL-19877 Fixed bug where multi-framework rules were flagged as deleted in Audiences dynamic rules
TL-19894 Added batch processing of users when being assigned to a Program
TL-19903 Fixed removing value of hierarchy multi select custom fields using HR Import
When syncing Positions or Organisations and changing the value of a
multi-select custom field, if a field was left blank then it would
incorrectly be ignored instead of removing the value (adhering to the empty
field behaviour setting). Empty fields for this type of custom field now
remove the existing value as expected.
TL-19908 Fixed a debug notice being generated when adding deferred Program assignments
TL-19912 Fixed bug that prevented learners from accessing the catalogue when the Miscellaneous category was hidden
TL-19917 Fixed wrong table reference in the main menu
TL-19922 Enabled Rooms/Assets 'Manage searches' buttons
When managing rooms or assets, it is possible to save a search for
rooms/assets by name and/or availability, and to share those searches with
other managers. In order to edit or delete saved searches, the manager
clicks on a "Manage searches" button.
Prior to this patch, clicking the button did nothing. The button now works
correctly, opening the Manage searches dialogue.
TL-19923 Fixed due date format in "Competency update" emails
When a manager changes the due date of a competency in a learner's Learning
plan, the email sent to the learner now contains the correct dates.
TL-19947 Increased the limit on number of choices available in autocomplete menu when restricting an activity by audience
TL-19953 Fixed missing icon for appraisal previews
This was supposed to be fixed in TL-19780 but it still failed in IE11
because of the way IE behaves with missing icons compared to other
browsers.
This has now been fixed so that IE also displays the preview correctly.
TL-19961 Removed exception in HR Import clean_fields() function when a field is not used
Fields can be present in HR Import source CSV file that are not required
and are outside of the list of possible fields to import. We do not need to
clean these fields as they are not used and have removed the execution
generated.
TL-19982 Fixed duplication of seminar booking approval request message when learner has both manager and temporary manager set
TL-20007 Fixed an error with audience rules relying on a removed user-defined field value
This affected the 'choose' type of audience rules on text input user custom
fields. If a user-defined input value was used in the rule definition, and
that value was then subsequently removed as a field input, a fatal error
was thrown when viewing the audience. This is now handled gracefully,
rather than displaying an object being used as an array error the missing
value can now be removed from the rule.
Contributions:
* Jamie Kramer, Elearning Experts - TL-7394
