Totara Release Notes

Totara Learn 12.0 has been released

 
HemelrykSam
Re: Totara Learn 12.0 has been released
HemelrykSam 发表于 2018年12月3日 Monday 20:01
小组 Totara

Totara Learn 12.0 release

System requirement changes

  • Added support for PHP 7.3
  • Added an upgrade path from Moodle 3.3 to Totara 12
  • PostgreSQL minimum require version increased to 9.4
  • MSSQL now requires the Full-Text search component to be installed
  • Safari minimum supported version increased to recent versions of 11
Key + Included in one or more stable releases as well
New features
TL-17902 Added HR Import for competencies

Competencies can now be created, updated and deleted via HR Import.

Each competency must reference an existing framework via its ID Number. Values for types and custom
fields may also be imported for each competency, providing these exist on the site that the import
is run on.
TL-17752 New course, program and certification catalogue

Implemented a new, modern, media-rich catalogue focused on improving the user experience while
browsing for content.

The new catalogue is intended as a replacement for the 'Enhanced catalogue' which has been renamed
'Report-based catalogue'.

Improvements include:
  • One area to search for courses, programs and certifications
  • Ability to browse learning items by tile or list views
  • Flexibility for administrators to configure display of different metadata
  • Ability to show icons related to the learning item
  • Ability to show learning item images
  • Ability to search by tags
  • Ability to visually highlight recommended training
  • Search beyond title and description using tags, metadata, summary, etc
  • Ability to share the URL of search criteria
Please also note the following:
  • After upgrading cron must be run in order to populate the catalogue
  • Search within the catalogue uses your databases full-text search capability. As such the search in each database works slightly differently.
TL-17475 Added support for pluggable course creation workflows

This patch adds support for general purpose, pluggable workflows which provide an extensible way to
provide different workflows for a specific task.

The first workflow type to be implemented is the course creation workflow, which provides a way to
design custom workflows to collect information and generate specific types of courses.

See our developer documentation for more information:
https://help.totaralearning.com/display/DEV/Workflows
TL-17426 + Add Totara content marketplace and GO1 marketplace

Totara content marketplace provides support for browsing and importing external content from content
providers directly into your site.

Content providers can implement a new "marketplace" plugin type to integrate their content into
Totara Learn. The release includes a marketplace plugin for GO1 ([https://totara.go1.com/]), which
provides direct access to search and include GO1 aggregated content.

When first installed the content marketplace plugin will send an internal notification to site
administrators and site managers on the next cron run, letting them know that content marketplaces
are available. To prevent this notification and completely disable marketplaces add
$CFG->enablecontentmarketplaces = false; in your site's config.php *before* you upgrade your site.
Navigation improvements
TL-19620 General improvements to the main menu administration

The issue saw the main menu code refactored in order to provide better support containers, and to
ensure that a smooth upgrade path exists.

Please note that when upgrading as the main menu no longer supports branches that are also items,
any menu items that were added may have been moved to an "Unused" container that is not visible on
the menu, in order to ensure that they are not lost.
We strongly recommend visiting the main menu administration page after upgrading.
TL-19595 Replaced navigation block with course navigation blocks in each course

All instances of the navigation block have been removed. 'Navigation' block
is no longer required by theme and can be added and removed as needed.

To facilitate navigation between the course section new 'Course navigation'
block has been added to all existing courses and any new course created
from now on. This block behaves similarly to the 'Navigation' block, but is
limited in scope to the course and its activities only.
TL-18995 Added a new block to link administrators of new sites to the Totara Community
TL-18713 Reduced space between the main navigation and blocks when there are no breadcrumbs
TL-18712 The site logo link now takes the user to their default home page

Previously when the user clicked on the site logo they were taken to the site's home page.
Now they are taken to their default home page, which may be the site home page, or one of their
dashboards.
TL-17941 New administration menu

The new quick access menu is a replacement for the old Site Administration
menu and is customisable for each user. The menu will only be available if
a user has capabilities to perform one or more administration tasks.
TL-17719 Converted front page content to use the new centre block region

The following blocks have been introduced for backward compatibility:
  • Course progress report
  • Courses and categories
  • Course search
"Course progress report" and "Courses and categories" blocks are disabled by default in new
installations, and only enabled on upgrade if the respective front page content settings were
enabled.
TL-17495 Redesigned main menu, for a more compact style with added support for a third level of links

Reworked the existing navigation, improving the user journey and added support for third-level links
which will allow us to tie all of the Totara products together.
  • Redesigned navigation
  • Added third-level navigation
  • Moved logo into navigation bar
  • Moved messages and alerts into navigation
  • Moved language selector into navigation
  • Moved user menu into navigation
The old navigation menu is now deprecated, but still available with some changes in code. See the
following page for details: https://help.totaralearning.com/display/DES/Totara+v12+navigation+revert
TL-17494 Improved the work flow of adding blocks to editable regions
  • Removed the existing "Add a block" block.
  • Each editable region now has a dotted border, when editing is enabled.
  • Added a "+" icon button to the centre of every block region.
  • Clicking the "+" button opens a modal dialogue with a list of all available block types and a search input.
  • The search input provides real-time filtering of the block type list.
  • Clicking a block name reloads the page and that block will be added to the same region.
TL-17450 Added full width top and bottom block regions to the homepage and dashboard

In addition to existing block regions (side-pre, main, side-post), there are now 2 new regions (top, bottom) that can show blocks as well. These new regions have already been added to the roots and basis themes; if you want them in custom themes, you need to explicitly add them in.

Note: Just because existing blocks can be shown in these regions does not mean those blocks are suited to these areas. There could be excess space or undesirable aesthetics involved. The best blocks for these new regions are those that can display their information in wide columns, for example tabular data, listings or banners.
TL-17124 The main menu block is no longer added to the home page by default for new installations
TL-16848 + Renamed the "Site policies" side menu item in the "Security" section

The Security > "Site policies" side menu item has been renamed to "Security settings" to avoid
confusion with the new "Site policies" item when GDPR site policies are enabled.
Seminar improvements
TL-19184 Improved the appearance of seminar's notification form to resolve the confusion of notification's recipients

Prior to this patch, on a creating new seminar's notification page, the label 'All booked' within
the recipients section was misaligned, causing confusion.

After the patch, the label 'All booked' has been changed into 'All (past and present booked)'.
Furthermore, there is an improvement on form's UI, in which the 'Booked type' option is no longer a
checkbox, but a selection element instead.
TL-18597 + Improved the help text for the 'Notification recipients' global seminar setting

The setting is located under the notifications header on the site administration > seminars > global
settings page, the string changed was 'setting:sessionrolesnotify' within the EN language pack.
Full updated text is: This setting affects *minimum booking* and *minimum booking
cut-off* notifications. Make sure you select roles that can manage seminar events. Automated
warnings will be sent to all users with selected role(s) in seminar activity, course, category, or
system level.
TL-18565 + Moved 'Override user conflicts' action out of the seminar event setting page and into a 'save' modal dialog

The 'Override user scheduling conflicts' setting was initially intended for use with new events
where the assigned roles resulted in conflicts with existing events. It was not originally designed
to work with existing events.
We improved the wording to clarify this feature without further changes in the UI and workflow.
TL-17288 + Missing seminar notifications can now be restored by a single bulk action

During Totara upgrades from earlier versions to Totara Learn 9 and above, existing seminars are missing
the new default notification templates. There is existing functionality to restore them by visiting each
seminar notification one by one, which will take some time if there are a lot of seminars. This
patch introduces new functionality to restore any missing templates for ALL existing seminars at
once.
TL-16864 + Improved the template of seminar date/time change notifications to accommodate booked and wait-listed users

Clarified Seminar notification messages to specifically say that it is related to the session that
you are booked on, or are on the waitlist for. Also removed the iCal invitations/cancellations from
the templates of users on the waitlist so that there is no confusion, as previously users who were
on the waitlist when the date of a seminar was changed received an email saying that the session you
are booked on has changed along with an iCal invitation which was misleading.
TL-16255 + Added a "readonly" state to the Totara reserved custom fields to prevent users from changing the pre-existing seminar custom fields
TL-15818 Refactored seminar code to allow multi-language notifications and consistent booking state processing

Multi-language:
Added support for the "Multi-Language Content" filter plugin in Seminar notifications. Notification
content will now be filtered according to each recipient's language settings.

Booking system:
The main target of refactoring was to bring consistency to the bookings state changes throughout all
related code, leading to predictable and controllable rules for each state transition. For this
purpose we have implemented a simplified Finite State Machine with a definition for each state,
following states and rules that must be matched for state transition to happen. This will greatly
reduce complexity during further changes to how booking states are managed.

Despite our efforts to maintain existing behaviour, some inconsistencies in old code forced some
minor changes in behaviour. We have identified the following changes:

1) Enable waitlist and overbooking - Previously when a Seminar's event had the setting 'Enable
Waitlist' enabled, then all the attendees that got signed up by an admin or any user that has
capability would have a status as booked. Now users will be booked until the event's room capacity
has been reached, the rest of the users will be added to the waitlist. Later on an admin or another
user with the "mod/facetoface:signupwaitlist" capability will be able to confirm users on the
waitlist, overbooking the event.

2) Events without session - Administrators could previously book users onto events without sessions
by confirming users on the waitlist. Now as the booked state requires a session to be set, this
attempt will return error until a session is created.

3) Action buttons labels - Removed some inconsistencies with "Sign-up", "Join waitlist" buttons and
added "Request approval" when approval is required. Previously calendar and upcoming events block
would display a "sign-up" button, while the sign-up page would offer "Join waitlist". These
inconsistencies were largely removed by using the same prediction logic for all three source of
actions (course view, calendar, and sign-up page). Also, when approval is required, the user is now
properly informed that approval will be required.

API changes:
The API has been significantly changed. We have moved to a proper class structure for all Seminar
entities and their relationships. Along with that we didn't change the database structure, except
for some varchar fields that were converted to text to allow the multi-language filter to work
properly. We have also minimised front-end changes as much as possible. All functions that were
likely to be used by third-party code have been kept in the code base and deprecated. Deprecated
functions from main lib.php file were moved to deprecatedlib.php file (which is required by lib.php
file).

In order to reduce API changes we've deprecated mostly functions that were relevant to state machine
(booking states), and functions that were completely covered by OOP (e.g. rooms, assets,
reservations, calendar).
TL-11243 + Removed ambiguity from the confirmation messages for seminar booking requests
TL-5964 + Added settings to seminars that improve the control over multiple signups

This change introduces three new settings to both the settings form and the activity defaults admin
page for seminars. These new settings are:

1) How many times the user can sign-up? - This setting replaces the old 'multiple signups enabled',
it allows you to choose values between 1-10 or unlimited. To maintain current behaviour for existing
sites, they will have this set to 1 if 'multiple signups enabled' was not ticked, or unlimited if it
was ticked. Note: cancelled or declined sign-ups are not considered as part of this setting, neither
are sign-ups that have been archived by certifications.

2) Restrict subsequent sign-ups to - This setting restricts subsequent sign-ups to the seminar based
on the state of the current sign-up, the options are the attendance states 'fully attended',
'partially attended', and 'no show'. Selecting any of these options will restrict users to a single
concurrent sign-up, until the attendance has been taken for that event. Not selecting any of these
options will allow users to have as many concurrent sign-up as they want, up to the limit specified
by the setting above.

3) Clear expired waitlists - If enabled waitlisted sign-ups to seminar events will be cancelled by a
cron task after the event has begun, allowing those users to sign up for another seminar event.
Along with this setting there is also a new notification added to seminars, the 'Waitlisted sign-up
expired' notification. This can be used to inform users that their sign-up has been automatically
cancelled, and prompt them to go and sign-up to another event.
Report builder improvements
TL-19111 Removed obsolete non-functional support for report builder report and source groups
TL-19098 Automatic report builder data grouping was deprecated and affected report sources were rewritten to use subqueries
TL-18639 + Added support for custom help tooltips for Report Builder filters

When a report source is defined it is now possible to define a custom filter option to override the
default help tooltip for the given filter.
TL-17872 Added an audience-based content restriction to all user-oriented report builder sources

Report builder sources that focus report on user's have a new content restriction that can be used
to restrict the user's appearing in the report to just those who are a member of an audience.
TL-17353 + Updated the description for "Minimum scheduled report frequency" in the report builder general settings
TL-16729 Converted all report builder display functions into classes

All the Report Builder display functions have been deprecated and converted into display classes for
better control over how data is displayed and for improved performance.

This patch however does not introduce any changes in the current display of data within the reports.
TL-16728 Ensured all Report Builder columns have a display class defined

To improve Report Builder performance, all columns now need to define a display class best suited to
the data type being displayed. This reduces unnecessary formatting.

A PHP Unit test is included to assert new columns have the 'displayfunc' option defined.
Run 'vendor/bin/phpunit totara_reportbuilder_display_testcase
totara/reportbuilder/tests/display_test.php' to find any local customisations that should be
updated.
TL-16727 Moved all report builder functions that added columns, filters and joins from base source in to traits

All function that added columns, filters and joins have been deprecated and moved into traits within
the report sources associated component.
TL-16726 Refactored Report builder initialisation
  • Report builder constructor should no longer be used for initialising the report instances. New factory methods were added to facilitate report initialisation: create() and create_embedded(). In the future, Report builder constructor will be made private.
    New class rb_config was added to be used with the factory methods for passing report configuration settings to the report initialisation. Instances of the rb_config can be shared between the reports, but cannot be changed once they are finalised during the report initialisation.
  • All described API changes are fully backwards compatible, however debugging messages will be displayed when a site is running in developer mode to warn about any required changes in customisations.
TL-14966 Added a new conditional access restriction based on time since activity completion

Access to an activity can now be restricted based on time since completing another activity.
TL-14939 Made it possible for report builder columns to be flagged as deprecated
TL-13960 Moved all report builder customfield-related functions that added columns, filters, and joins from base source into traits

All function that added columns, filters, and joins for custom fields have been deprecated and moved
into traits within the report sources associated 'customfield' component.
TL-10295 + Added link validation for report builder rb_display functions

In some cases if a param value in rb_display function is empty the function
returns the HTML link with empty text which breaks a page's accessibility.
User data and site policy improvements
TL-17383 + Improved the wording and grouping of user data items
TL-17378 + Implemented user data item for the transaction information of the PayPal enrolment plugin

When the user enrols via PayPal the transaction details are sent to the IPN
endpoint in Totara which records the information in the enrol_paypal
table. The user data item takes care of purging, exporting and counting
this transaction information.
TL-17374 + Implemented user data item for course requests
TL-17373 + Implemented user data item for external blogs

This user data items takes care of the exporting and purging of external blogs. It includes all
external blogs created by the user, including tags assigned to it, all synced posts, and all
comments made on the blogs.
TL-17362 + Implemented user data item for portfolios

Implemented user data elements for portfolios. This allows the exporting and purging of user data
kept in relation to exporting of data to portfolios.
TL-17354 + Ordered all user data item groups alphabetically
TL-17227 + Implemented user data item for role assignments
TL-17142 + Enabled use of the HTML editor when creating site policy statements and added the ability to preview

An HTML editor is now used when adding and editing Site Policy statements and translations. A
preview function was also added. This enables the policy creator to view how the policy will be
rendered to users.

Anyone upgrading from an earlier version of Totara 11 who has previously added site policies and
wants to use html formatting will need to:
  • Edit the policy text
  • The text will still be displayed in a text editor, but you will have an option to change the entered format
  • Make sure you have a copy of the current text somewhere (copy/paste)
  • Change the format to "HTML format"
  • Save and re-open the policy OR Preview and click "Continue editing". The policy text will be shown in the HTML editor but will most likely contain no formatting
  • Replace the current (unformatted) text by pasting back in the copy of the original text
  • Save
Please note that this will be considered a new version of the policy, and users will be required to
accept it again.
TL-17137 + The site policy user consent report now appears in the settings block

A user consent report exists for the new site policy tool, however it was never linked to from the
current navigation. This user consent report is now linked to from the Settings block, you can find
it by navigating to Security > Site policies > User consent report.
TL-17130 + Added consent statement filter for the Site policies report

This patch adds support for a consent statement filter for the Site policies report as well as a few
minor improvements to the site policy filters including:
  • Removing the filter Current Version (Primary Policy)
  • Replacing plain text version filter to a smart dropdown menu, which includes now the list of available versions as well as the option to select current version of the policy
  • Adding policy filter which allows you to filter only by policy
  • Making user consent statement a simple filter
  • Added custom help for consent statement filter
  • Added custom help for policy version filter

    Now to select the current version of the policy it is a matter of using 2 filters:
  • Policy filter to select appropriate policy
  • Version filter to select current version
Please note, that this patch will also remove Current Version (Primary Policy) filter from any saved
search using it.
TL-16936 + Implemented user data item for Competency progress

The competency progress item is specifically for the comp_criteria_record table; other competency
tables are handled by the competency status item.
TL-16877 + Implemented user data items for comments and HTML blocks

Now it is possible to purge, export and audit the data stored in the comments and HTML blocks.

In case of the comments block item, all comments made by users in all created comment blocks are
purged or exported. This affects the front page, personal dashboards and courses.

In case of the HTML block item, all blocks created by the users in their personal dashboards are
purged and exported. HTML blocks in other contexts (front page, courses) are not affected as they
are related to the course or the site and not personal to the user.
TL-16840 + Implemented user data item for user data export requests
TL-16777 + Implemented user data item for the Featured links block
TL-16775 + Implemented user data item for RSS client
TL-16739 + Implemented user data items for program and certification completion

This includes exporting and purging of program and certification assignments, completion records
(including completion history and logs). It also includes exceptions, program extensions and the log
of program messages sent to the user.

Users are unassigned from any program or certification regardless of the assignment type. If users
were assigned via audience, position or organisation it's possible that they will be reassigned
automatically as soon as the next scheduled task for dynamic user assignment is triggered.
TL-16738 + Implemented user data items for grades

The following user data items have been introduced:
  • Grades - This item takes care of the Gradebook records, supporting both export and purge.
  • Temp import - This item is a fail-safe cleanup for the tables which are used by grade import script for temporary storage, supporting only purge.
  • Improved Individual assignments item - This item includes feedback and grades awarded via advanced grading (Guide and Rubric), supporting both purge and export.
TL-16736 + Implemented user data items for course enrolments

Added two user data items that allow exporting and purging:
  • An item for course enrolment data.
  • An item for pending enrolments that belong to the Flat file enrolment plugin.
TL-16367 + Implemented user data items for standard and legacy logs
TL-16365 + Implemented user data items for the Wiki module

The following user data items have been introduced:
  • Individual wiki as a whole.
  • Collaborative wiki files export files uploaded by the user to the collaborative wiki.
  • Collaborative wiki comments exports\purges user's comments for collaborative wiki pages.
  • Collaborative wiki versions exports collaborative wiki page versions submitted by the user.
TL-16360 + Implemented user data item for glossary entries, comments and ratings
TL-16357 + Implemented user data item for LTI submissions
TL-16356 + Implemented user data item for the database module
TL-16350 + Implemented user data items for appraisals

Added five user data items:
  • "Appraisals" - purge all appraisal data where the user is a learner
  • "As the learner, excluding hidden answers from other roles" - export all appraisal content that the user can see as a learner
  • "As the learner, including hidden answers from other roles" - export all appraisal content, including all answers from other roles, regardless of visibility settings, where the user is the learner
  • "Participation in other users' appraisals" - export all other users' appraisals that the user is currently participating in
  • "Participation history" - export the history of participation in other users' appraisals
TL-16349 + Implemented user data items for Learning Plans and Evidence

This allows user data for Learning Plans and Evidence items to be purged and exported.
TL-16346 + Implemented user data items for feedback 360

Feedback360 has two user data items, both implementing export and purge:
  • The user assignments item, this covers all of a user's assignments to a Feedback360 and all responses to their requests.
  • The response assignments item, this covers all of a user's responses to other user's Feedback360 requests.
It is worth noting that self evaluation responses will be included in both user data items.
TL-16345 + Implemented user data item for event monitor subscriptions

Implemented user data item for event monitor subscriptions to allow the exporting and purging of
user data kept in relation to event monitoring.
TL-16344 + Implemented user data item for the "Self-registration with approval" authentication plugin
TL-16334 + Implemented user data items for component and plugin user preference data

It is now possible to export and purge user preference data being used by all parts of the system.
These preferences store a range of information, all pertaining to the user, and the state of things
that they have interacted with on the site, or the decisions that they have made.
Some examples are:
  • What user tours the user has completed, and when.
  • The admin bookmarks that they have saved.
  • Their preferences for the course overview block.
  • Whether they have docked the admin and navigation blocks.
  • Their preferred display mode for forums.
  • What regions within a workshop activity they have collapsed.
TL-16332 + Implemented user data items for Audience memberships

Items for exporting and purging a user's audience membership has been added. This is split into two
items: Set audience membership and dynamic audience membership.
TL-16327 + Implemented user data items for report builder

Added items that allow exporting and purging of user-made saved searches (private and public),
scheduled reports, and their participation in global report restriction.
Frontend improvements
TL-18927 + Totara form load deferred object now resolves after the form initialise JavaScript is called

Previously, the Totara form initialise code was run after the load deferred object had been
resolved. This meant that calls to getFormInstance(formid) would return null on load.done(), and not
the form that was requested.
TL-17603 Added reusable UI grid component

Added a reusable UI component for displaying content in a grid format. The component includes events
for setting an active tile state based on user clicks.
TL-16649 Added reusable select and region UI components

The new select components are:
  • Multi select - Similar to a multiple select and can return multiple options
  • Single select tree - Similar to a single select dropdown that allows nestable options
  • Text search - A stylised text input field with search icon
These are designed for use inside the added region container which has 'clear all' functionality.
Initially these will be used in the new catalogue.
TL-19264 Switched to using standardised URL querystring parameters for the multi select component
TL-19322 Added additional UX options to the select tree component

Extended the select tree component to also support the following features:

A select tree can be provided a call to action string value (e.g. 'Please select an option...' )
which isn't included in the select list & doesn't provide a value. This is an alternative to the
default value.

A select option with child nodes can either be:
  • A clickable link itself which provides a selected value
  • A click target for expanding/collapsing child nodes which provides no selected value
TL-19288 Increased z-index of YUI dialogs to match other dialogs
TL-19045 Centered login panel vertically
TL-18709 Changed font size in header navigation from 16px to 14px
TL-18557 Added new base class for output elements that are using templates

Output widgets can now extend \core\output\template. Once extended they can be given directly to a
renderer's render method, and that renderer will render them from the template. With this approach
there is no need to define any render methods at all, or to implement renderers for output widgets.
TL-17910 The single button output component now supports a "primary" state
TL-17891 + Changed the Change password page to use the standard page layout

This gives the Change password page the standard navigation and blocks
TL-17850 Improved colour of text input placeholders in Totara forms
TL-17835 Improved calendar popover

Previously this was using a YUI module. This has now been updated to use the Bootstrap popover.
TL-17795 + Tooltips in the "Current learning" block are now displayed when focused via the tab key
TL-17790 + Improved the HTML of the change password page

Previously the "Change password" heading was in a legend, this patch moves it to a proper HTML heading.
TL-17580 Refactored and simplified the Flex icon AMD JavaScript module
TL-17517 + Improved the user interface for course import when no courses match a search term
TL-17439 Split block configuration settings into two sections

The general section contains all the settings common to every block, and the new custom section
contains settings specific to the block type.

If you have any custom blocks please refer to the blocks/upgrade.txt file for more information.
TL-17403 + Removed calls to deprecated table() and cellpadding() functions within forum ratings and external blogs
TL-17372 Deprecated footer navigation in the Basis theme

The footer menu no longer shows when using Basis as your theme (and themes that include
"theme/basis/layout/partials/footer.php"). The functionality that provides this has been deprecated
and will be removed in a future version of Totara.

If you would like to keep this functionality beyond Totara 12, we recommend you copy the following
files into a custom theme that inherits Basis:
  • theme/basis/templates/page_footer_nav.mustache
  • theme/basis/classes/renderer.php (2 functions that have been deprecated)
  • theme/basis/classes/output/page_footer_nav.php
  • theme/basis/less/totara/page-footer.less
TL-17143 AMD modules can now be initialised using data attributes in HTML markup

It is now possible to initialise AMD modules using data attributes in HTML markup. This is intended
primarily for templates.
TL-16918 Removed Polyfills required for IE9

As of Totara 10, IE9 was no longer supported. This issue removes the polyfills that enabled IE9 to
have the same functionality as more modern browsers.
TL-16881 Update jQuery to 3.3.1
TL-16797 + Standardised the use of styling in the details of activity access restrictions

When some new activity access restrictions were introduced in Totara 11.0, the display of
restriction details in the course was not in bold like existing restrictions. This patch corrects
the styling.
TL-16731 Added LESS structure to help maintain consistency with common styles
TL-16178 Atto autosave notifications now use standardised components
TL-16171 Improved the warning notification in the Assignments module

When grading and viewing an assignment, the CSS classes alert and alert-error were being used. These
have been removed in favour of adding a warning icon before the message.
TL-16157 + Improved the layout of progress bars inside the current learning block
TL-14714 Added onchange support to radio form elements

Allow radio groups to use the onchange client action in the Totara forms library.
TL-10852 Improved footer appearance to fill bottom of the page
TL-9414 + Required totara form Checkbox lists are validated in the browser (as opposed to a page reload) Please note that several of the changes above will require CSS to be regenerated for themes that use LESS inheritance.
Performance improvements
TL-19084 + Enrolment type column in course completion report source is now using subqueries to improve compatibility of other general columns in the same report
TL-19053 Improved the performance of full text searches within PostgreSQL
TL-18998 + Improved performance of language pack installation by changing to gzip

Language pack installation and updates now utilise gzip instead of zip.
Extract of gzip files is much quicker than zip files within Totara.
Manual installation and updates using zip files are still supported and will continue to operate.
All online installations and updates will now use tgz files exclusively.
TL-18929 Added two indexes to speed up queries accessing the block_totara_stats table

In quite a few places throughout the code we query the table 'block_totara_stats' using two
combinations of columns. In adding indexes on these column combinations query speed will be
improved, especially with a lot of entries in the table.
TL-18845 + Removed a superfluous unique index on the job_assignment.id column
TL-18693 Fixed memory leaks in PHPUnit test by resetting properties in tearDown() method

Additionally this patch introduces a check in the advanced_testcase which checks after each test for
properties which weren't reset. It fails any test where it finds unreset instance properties to
prevent creating more memory leaks in the future. There is an option to disable this check if needed
by setting the constant PHPUNIT_DISABLE_UNRESET_PROPERTIES_CHECK in phpunit.xml.
TL-18686 Optimised the performance of dynamic audiences

With this patch, the scheduled task (Dynamic Audiences update) is now sorting audiences in order of
their dependencies on other audiences. Audiences that depend on other audiences will be updated
after their dependencies updates.

This allows faster and more consistent propagation of audience changes (ideally in one task run).
TL-18666 Improved AMD module loading by converting the core/first AMD module to use RequireJS bundling instead
TL-18640 + Updated certif_completion join to use 'UNION ALL'

The 'certif_completion' join in the 'rb_source_dp_certification' report source now uses 'UNION ALL',
previously 'UNION', which will aid performance.
TL-18591 Added an index to the moduleinstance column of the course_completion_criteria database table
TL-17661 Enabled missing gzip compression for uncached js files
TL-17586 + Greatly improved the performance of the update competencies scheduled task

The scheduled task to reaggregate the competencies "\totara_hierarchy\task\update_competencies_task"
was refactored to fix a memory leak. The scheduled task now loops through the users and loads and
reaggregates items per user and not in one huge query as before. This minimises impact on memory but
increases number of queries and runtime.
TL-17414 + Improved information around the 'completions archive' functionality

It now explicitly expresses that completion data will be permanently deleted and mentions that the
data that will be archived is limited to: id, courseid, userid, timecompleted, and grade. It also
mentions that this information will be available in the learner's Record of Learning.
Developer improvements
TL-18985 + Unit tests may now override lang strings
TL-18909 + Fixed compatibility issues with PHP 7.3
TL-18777 + Allowed plugins to have custom plugininfo class instead of just type class
TL-17877 Regenerate lintignore files: Regenerated ignore files for linters
TL-17746 Removed minified AMD modules with no Source files

The following minified AMD JavaScript modules were removed as they are not used and have no source files:
  • 'block_totara_featured_links/course_dialog'
  • 'block_totara_featured_links/icon_picker'
  • 'totara_form/form_clientaction_autosubmit'
TL-17668 Added support for full text searching

This improvement saw the introduction of the following full text search features:
  • Full text search indexes can now be added to fields within the Totara database.
  • Full text searches can now be run on these indexes.
This functionality is used by the new catalog to provide better searching.

To get the best possible result from full text searches, sites should set the full text search
language that will be used in the creation of indexes within their sites config.php file. For more
information on how to do this, please refer to the config-dist.php file provided with Totara. All
information is under the "FULL TEXT SEARCH" heading.

Technical documentation for developers can be found at
https://help.totaralearning.com/display/DEV/Full+text+search
For those intending to add full text search to their plugins and customisations, we recommend that
you read and follow the instructions in the technical documentation. Most importantly always define
a new table to use for full text searching, have a cron routine that ensures it is kept up to date,
and use event observers to keep it up to date with live changes.
TL-17384 + composer.json now includes PHP version and extension requirements
TL-17347 Code related to previously disabled $CFG->loginhttps setting was removed and public API was deprecated
TL-17357 + Unsupported symlinks are now ignored in phpunit tests
TL-17352 + PHPUnit and Behat do not show composer suggestions any more to minimise developer confusion
TL-17268 + Upgraded Node.js requirements to v8 LTS
TL-16912 Added JavaScript polyfill in IE11 to support basic ECMAScript 6 functionality

For more information please refer to our developer documentation
https://help.totaralearning.com/display/DEV/ES+6+functionality
TL-6630 + Added functionality to perform capability checks directly against the database

A new get_has_capability_sql() function has been introduced that returns an SQL snippet to resolve
capability checks against the database.
Among other uses this allows Totara to resolve visibility state much more efficiently than before
without sacrificing accuracy.

As part of this change a new table containing flattened context data will be created and
maintained.
There are a couple of important things to note about this:

During upgrade to this release the table will be created and populated. This upgrade step could take
several minutes on large sites.
The table is kept up-to-date automatically by the access API. If you have third party plugins or
customisations that are directly manipulating access data then you will need to review these.
We have extensively tested the performance of this change during our QA process and are confident
with the results. If you experience any problems please let us know immediately.
Platform improvements
TL-19476 Added custom field 'created' and 'updated' events

These new events are also observed by the new catalogue in order to update the search indexes when
new fields are added, or existing fields are updated.
TL-19066 Database table context_temp is now a real temporary table

The original context_temp table has now been dropped.
This table was only ever intended as an internal store, and should not have been used by anything
other than the access API.
TL-18983 + Added workaround for missing support for PDF embedding on iOS devices

Web browsers on iOS devices have very limited support for embedding PDF files – for example, only
the first page is displayed and users cannot scroll to next page. A new workaround was added to PDF
embedding in File resource to allow iPhone and iPad users to open a PDF in full-screen mode after
clicking on an embedded PDF.
TL-18921 Removed the Memcache cache store from core

Not to be confused with the Memcached cache store.
The Memcache PHP extension is not compatible with PHP7, and as such the Memcache cache store could
not be used.
It has now been removed from core.

If you are currently using the Memcache cache store and plan to upgrade in future, this may be an issue.
TL-18852 + Database table prefix is now required for all new installations

Previously MySQL did not require database prefix to be set in config.php, since MySQL 8.0 the prefix
is however required. To prevent problems in future upgrades Totara now requires table prefix for all
databases.
TL-18722 Added critical notifications type, which go into their own section above the navbar
TL-18626 Moodle: De-moodle strings: Replaced some Moodle strings with Totara equivalents
TL-18554 Introduced common block settings and API to manage those

The idea of the common block settings API is to allow core developers to have predictable common
settings storage for all the blocks and if necessary, introduce properties which cover all block
types without interfering with settings provided the by third-party block developers.
It also includes a few minor changes for block configuration: hiding, docking and show header/border
settings now use checkboxes instead of radio buttons. Moreover, to provide better backwards
compatibility a setting "Override default block title" has been introduced and unless it is checked
the block retains pre-patch behaviour for the title supplied by the block developer.
TL-17905 Updated the default value for the 'docroot' setting

Previously, error pages included a link to Moodle documentation, which often didn't exist for
Totara-specific errors. This change removes the default documentation root so the 'More information
about this error' link is no longer shown.

If you wish to restore the links, set the docroot back to
http://docs.moodle.org after upgrading.
TL-17738 + Changed data-vocabulary.org URL in metadata to be https

This URL is used to provide extra information for navigation breadcrumbs to search engines when your
site is indexed.
TL-17280 + Improved compatibility for browsers with disabled HTTP referrers
TL-17214 InnoDB upgrade tool and deprecated authentication plugins were removed from distribution

The following authentication plugins were removed:
# auth_fc
# auth_imap
# auth_nntp
# auth_none
# auth_pam
# auth_pop3

The following upgrade tool was removed: tool_innodb
TL-17024 + Added detection of pending upgrades to admin settings related pages
TL-16958 + Updated language strings to replace outdated references to system roles

This issue is a follow up to TL-16582 with further updates to language strings to ensure any
outdated references to systems roles are corrected and consistent, in particular changing student to
learner and teacher to trainer.
TL-16582 + Updated language contextual help strings to use terminology consistent with the rest of Totara

This change updates the contextual help information displayed against form labels. For example this
includes references to System roles, such as student and teacher, have been replaced with learner
and trainer.

In addition, HTML mark-up has been removed in the affected strings and replaced with Markdown.
TL-15739 + Imported HTMLPurifier library v4.10.0
TL-14282 + Imported ADOdb library v5.20.12
Miscellaneous improvements
TL-19145 + Improved terminology for non-graded assignment strings
TL-19014 + Implemented new capabilities for controlling the access to SCORM content

Previously all users who could enter a course were able to launch SCORM
activities.
The only way to limit access was to make the activity hidden and then to
use the moodle/course:viewhiddenactivities capability to grant access.

Two new capabilities have been added to allow better control of access to
SCORM activities.
  • mod/scorm:view
  • mod/scorm:launch
TL-19002 Changed the legacy programs/certifications catalogue UI to be consistent with course catalogue as a model

Changes are made for the legacy programs/certifications catalogue UI (it uses one base code) to be
consistent with course catalogue as a model when enhanced catalogue is disabled
# Search box is moved to the top-left of the catalogue page
# Added 16px margin-bottom space for the top-left search box
# Search box label is removed
# The "Add new program/certification" button is moved to center of the page
# Course/program/certification titles font is changed from H3 to standard font
# Programs/certifications dropdown box with the categories/sub-categories options is moved to the right of the page
# Fixed program/certifications breadcrumbs
# Fixed if program has any associated overview files
# Fixed behat test after new UI applied
TL-18978 Improved the validation display for dynamic audience rules that use a date selector
TL-18963 + Improved the help text for the 'Enable messaging system' setting on the advanced settings page
TL-18896 Date pickers in forms now use the same order of day, month and year fields as current language full date and time display format
TL-18840 Added a new dynamic audience rule for user's certification completion date
TL-18793 + Improved display of course details in the course and categories management page
TL-18770 + Disabled the site policy translation interface language selector when only a single language is available
TL-18757 + Send notifications to new appraisees for an already activated appraisal

Previously the appraisals module only sent out notifications to learners when the appraisal was activated.
If new learners were added to the appraisal after activation, they did not receive any notification.

With this patch, notifications are sent out when new learners are added to the appraisal after activation.
TL-18718 Added upgrade step to set new redis cache store settings 'test_password' and 'test_serializer' to default values when not already set

In a previous patch new settings 'test_password' and 'test_serializer' for the Redis Cache Store
were introduced. If the site hasn't already been upgraded to a version which includes these settings
we set the password to an empty string and the serializer to PHP's default value to ensure that
previous functionality works as before. These settings can still be changed in the appropriate
section of the Site Administration.
TL-18697 Totara Connect login error handling was improved and diagnostic logging was added
TL-18675 + Added 'not applicable' text to visibility column names when audience-based visibility is enabled

When audience based visibility is enabled it takes priority over other types of visibility. Having
multiple visibility columns added to a report may cause confusion as to which type of visibility is
being used. '(not applicable)' is now suffixed to the visibility column to clarify which type of
visibility is inactive, e.g. 'Program Visible (not applicable)'.
TL-18646 HR Import allows HTML tags for fields where this is permitted

Fields such as descriptions or text area custom fields allow HTML tags when a value is added via the
interface. However, HR Import was stripping these tags. Cleaning of these fields is now the same
whether values are added via the interface or HR Import, i.e. they retain their HTML tags.
TL-18601 Added 'type ID number' column to the 'Manage types' hierarchy tables to allow administrators to have one place to go to to identify the available typeidnumbers
TL-18600 Import of custom field values allows for duplicate shortnames

When using HR Import to create and update positions or organisations, custom field short names had
to be unique across the site, despite the only restriction in the UI being that they are unique
within a given type. HR Import now accounts for this configuration when importing custom fields for
hierarchies, such as position and organisation.
TL-18596 + Added a filter for the Number of Job Assignments for a user

A filter has been added for the Number of Job Assignments column and is available in all report
sources that include the Job Assignments filters. This filter adds a way to filter users that have
no Job Assignments.
TL-18575 A limitation of 255 characters is now consistently applied when validating course shortname

The course shortname field in the database has always been 255 characters.
However the course creation form arbitrarily limited course shortname length to 100 characters.
As of this change the course shortname form now checks that the user-entered value is no longer than
255 characters, matching the database limitation.
TL-18481 + Improved the help strings for the 'Minimum time required' field within a program or certification course set

Program and certification 'Course set due' and 'Course set overdue' message help strings have also
been updated to convey that the 'Minimum time required' field is used to determine when a course set
is due.
TL-17974 Site-wide settings for HR Import can now be overridden by element

The HR Import page for 'General settings' has been renamed to 'Default settings'. This page includes
the same settings as previously, but will also list which elements are using a given setting area.

Element setting pages now contain settings relating to file access, notifications and scheduling.
These settings allow you to select the default settings to apply or to override them with values
that will apply to that element.

Following the upgrade, values from 'General settings' will remain unchanged in the 'Default
settings' page. Any enabled elements will use the default settings until changed.
TL-17920 + Added support for the 'coursetype' field in the 'upload courses' tool

The 'coursetype' field will now accept either a string or an integer value from the map below:
  • 0 => elearning
  • 1 => blended
  • 2 => facetoface
Within the 'upload courses' CSV file, the value for the 'coursetype' field can be either an integer
value or a string value. If the value of 'coursetype' was not within the expected range of values
(as above), then the system will throw an error message when attempting to upload the course(s) or
while previewing the course(s).

If the field is missing from the CSV file or the value is empty, then the 'coursetype' will be set
to 'E-learning' by default. This is consistent with previous behaviour.
TL-17901 Hierarchy export improvements

Hierarchy export has been improved as follows:
  • Competency items can now be exported in the same manner as any other type of hierarchy
  • The default export file format has been changed. By default the file will now contain all item
    data allowing it to be used for re-import via HR Import.
    To revert back to the old hierarchical format (not suitable for HR Import), add the following line
    to config.php:
    _$CFG->hierarchylegacyexport = 0;_
  • An option has been added to the Manage _ _ pages allowing the user to export all items in all frameworks to a single file
TL-17780 + Added a warning message about certification changes not affecting users until they re-certify
TL-17720 + Added 'audience visible' default course option to the upload course tool
TL-17626 + Prevented report managers from seeing performance management data without specific capabilities

Site managers will no longer have access to the following report columns as a default:

Appraisal Answers: Learner's Answers, Learner's Rating Answers, Learner's Score, Manager's
Answers, Manager's Rating Answers, Manager's Score, Manager's Manager Answers, Manager's Manager
Rating Answers, Manager's Manager Score, Appraiser's Answers, Appraiser's Rating Answers,
Appraiser's Score, All Roles' Answers, All Roles' Rating Answers, All Roles' Score.

Goals: Goal Name, Goal Description

This has been implemented to ensure site managers cannot access users' performance-related personal
data. To give site managers access to this data the role must be updated with the following
permissions:
  • totara/appraisal:viewallappraisals
  • totara/hierarchy:viewallgoals
TL-17613 + Added a hook to the last course accessed block to allow extra data to be passed to template

This enables extra data to be passed through to the Last Course Accessed block template so that the
display can be more easily modified without changing core code.
TL-17611 + Added a hook to the last course accessed block to allow courses to be excluded from being displayed

This hook allows specified courses to be excluded from being displayed in the Last Course Accessed
block. If the most recently accessed course is excluded then the next most recently accessed course
is displayed.
TL-17390 + Enabled the "Force users to log in to view user pictures" setting by default for new installations to improve privacy
TL-17261 Multiple improvements in the authentication plugins
  • Authentication plugins are now required to use new settings.php for plugin configuration.
  • CLI sync scripts were converted to scheduled tasks.
  • External Database authentication supports PDO.
  • Shibboleth user may change their passwords.
TL-17232 + Made the "Self-registration with approval" authentication type use the standard notification system

The "Self-registration with approval" authentication plugin is now using standard notifications
instead of alerts, for "unconfirmed request" and "confirmed request awaiting approval" messages. A
new notification was also added for "automatically approved request" messages when the "require
approval" setting is disabled.
TL-17170 + Included hidden items while updating the sort order of programs and certifications
TL-17149 + Fixed undefined index for the 'Audience visibility' column in report builder when there is no course present
TL-16921 + Converted utc10 Totara form field to use the same date picker that the date time field uses

This only affects desktop browsers
TL-16914 + Added contextual details to the notification about broken audience rules

Additional information about broken rules and rule sets are added to email notifications. This
information is similar to what is displayed on audiences "Overview" and "Rule Sets" tabs and
contains the broken audience name, the rule set with broken rule, and the internal name of the
broken rule.

This will be helpful to investigate the cause of the notifications if a rule was fixed before
administrator visited the audience pages.
TL-16909 + Increased the limit for the defaultid column in hierarchy scale database tables

Previously the defaultid column in the comp_scale and goal_scale tables was a smallint, however the
column contained the id of a corresponding _scale_values record which was a bigint. It is
highly unlikely anyone has encountered this limit, unless there are more than 32,000 scale values on
your site, however the defaultid column has been updated to remove any possibility of a conflict.
TL-16893 Removed unused content options from the program report source

The program report source's "Hide currently unavailable content" setting had no effect and has been
removed. The code governing the setting has also been deprecated. The functionality it previously
offered is already provided by the Report Builder's visibility controls and capabilities relating to
this.
TL-16150 Added image for course and program tiles in featured links
TL-16149 Added the ability to have images associated with courses, programs and certifications

This improvement saw three notable changes made:

1) An image can now be set for courses, programs, and certifications via their respective settings pages.
2) An out of the box default image has been added for courses, programs, and certifications.
3) The default image for courses, programs, and certifications can be overridden by an admin.
TL-16143 Added more configuration options to the Gallery Tile in the Featured Links block

Options Added:
* Transition
** Fade
** Slide
* Order
** Random
** Sequential
* Controls
** Prev/Next (Arrows on side of tile)
** Position indicator (Dots at the bottom)
* Autoplay (Whether the gallery tile should automatically move)
* Repeat (If the tile should go back to the start when it gets to the end)
* Pause on hover (if hovering over the tile then it will stop moving)

The switcher.js JavaScript that changes the gallery tile has been rewritten to use the 3rd party
library Slick. This caused large changes to the structure of the html as Slick added a number of
elements.
TL-16140 Added the ability for gallery tiles in the featured links block to contain other tiles

Gallery tile content is now based on other tiles rather than a set of images. Each tile in a gallery
tile still has all the normal configuration and visibility associated with it, along with an
additional meta tile interface for any tile that can contain other tiles. This is so that meta tiles
can define that they cannot contain other meta tiles. There is a new database column for parentid
added to the block_totara_featured_links_tiles table, this remembers the relationship between the
gallery tile and sub tiles.

Note: If there are any custom tiles based on the gallery tile then there is a high probability that
they will no longer work as they used to, as the templates and structure has changed.
TL-16139 Added the ability to add icons into static tiles in the featured links block

In the edit content form of a featured links block, there is now an option to select an icon that
will show in the background at various sizes. The available icons are all from the themes that have
been installed.
TL-14114 + Added support for Google ReCaptcha v2

Google deprecated reCAPTCHA V1 in May 2016 and it will not work for newer
sites. reCAPTCHA v1 is no longer supported by Google and continued
functionality can not be guaranteed.
TL-13987 + Improved approval request messages sent to managers for Learning Plans

Prior to this fix if a user requested approval for a learning plan then a message was sent to the
user's manager with a link to approve the request, regardless of whether the manager actually had
permission to view or approve the request. This fix sends more appropriate messages depending on the
view and approve settings in the learning plan template.
TL-12955 Added a dynamic audience rule for user's authentication method
TL-12620 + Automated the selection of job assignments upon a users assignment to an appraisal when possible

When an appraisal is activated or when learners are dynamically or manually added to an active
appraisal, a learner's job assignment is now automatically linked to their appraisal assignment.
Before this change, the learner had to open the appraisal for this to happen.

This will only come into effect if the setting "Allow multiple job assignments" is turned OFF.

If a user has multiple job assignments, this automatic assignment will not apply. If a user has no
job assignment, an empty job assignment will still be automatically created.
TL-12393 + Added new system role filter for reports using standard user filters
TL-12253 Removed completionstartonenrol setting from course settings screen
TL-10651 HR Import now handles empty fields consistently

Empty fields being imported into HR Import were inconsistently handled across field types, sources
and elements. This makes changes to introduce consistency so if a field is left empty in the CSV or
database then it will delete the existing data (except if the "Empty string behaviour in CSV"
setting is set to "Empty strings are ignored").

The main change in behaviour is with empty fields when custom fields are included in the import.
Prior to this patch custom fields would sometimes not be erased when an empty field was imported.
These should now be erased correctly (for CSV this is only when "Empty strings erase existing data"
is set).
TL-8092 + Added a 'Date Completed' filter to the program overview report source
TL-7918 + Added a new dynamic audience rule for user's certification status
TL-6152 + Added an RPL note column to the course completion report source

A new column "RPL note" has been added to the Course completion report source.
This column contains the note provided when users were manually awarded an RPL completion.
If it is not an RPL completion, or if no note was provided then the column will be empty.
The new column was added to the course completion report source only.
TL-4186 + Improved the calculation and display of program and certification progress

The calculation of a user's progress towards completion of a program or certification has been
improved to take progress of all involved courses into consideration. This progress is now
displayed as a true percentage in a progress bar.
Bug fixes
TL-19682 Fixed populating the default values when editing an existing default tile in featured link gallery
TL-19673 Fixed an error preventing the creation of course tiles within a featured links block

Prior to this patch: when user was adding a new course tile to a gallery featured link, there would
be an exception thrown, due to function not found.

With this patch: given the same scenario, user will be able to add a new course tile into a gallery
featured link.
TL-19625 Fixed an error when previewing an appraisal

Prior to this patch: when user previewed an appraisal, the system will throw a warning message
stating that the data was not populated properly (it only happened if $CFG->debug is being set to E_ALL)

With this patch, given the same scenario, the data is being populated with the default value and
system will not throw any warnings.
TL-19617 Fixed display failure message on sign up page when user is trying to book for a session that is in a past
TL-19606 Fixed scalability of add block popover with browser minimum fonts

Fixed the add block pop-over to display it's content correctly when a reasonable browser minimum
font size has been set.
TL-19600 Improved the display of the certification due soon message
TL-19562 Fixed theme style overrides on admin navigation menu

The theme style overrides are now consistent on both the top level navigation & the admin expanded menu.
TL-19350 Fixed an issue with hierarchy field mapping in HR Import
TL-19334 Removed unused coursetagging admin setting

Course tagging has been controlled since the general enable tags setting as of Totara 9.0.
The setting was missed in the clean up and remained in the product but did nothing.
It has now been removed.
TL-19325 Fixed enabling/disabling antivirus plugins
TL-19311 Added event's observers for course restoring to update the course format

Prior to this patch, when restoring the course, there is no action on
updating the course's activities base on its format.

After this patch, the course's activities will be updated, via the event's
observer
TL-19302 Navigation on audiences pages is now consistent across them all

Multilang support was fixed on all pages at the same time.
TL-19157 Removed popper.js source map path

The popper.js library included a path to a non-existent source map which caused a warning message in
the browser console.
TL-19129 Reduced space between Totara menu & page content
TL-19043 Fixed php undefined property notice in assignment grading when changing 'Enrolment ends' to a date in the past
TL-19026 Changed the date format of seminar report builder Dates and Times related columns report source

Previously the report columns 'Event created', 'Last Updated', 'Sign-up Period', 'Sign-up Start
Date', 'Sign-up End Date', 'Cancellation date', 'Time of sign-up', 'Event Start time', 'Event finish
time' and 'Approval time' were formatted differently than the 'Session Start' and 'Session Finish'
columns. These columns are now formatted consistently.
TL-18904 Fixed up the context level of the totara/contentmarketplace:add capability

It now shares the same configuration as the moodle/course:create capability.

Coding style within the component and single plugin was tidied up at the same time.
TL-18746 Fixed performance by removing multiple course_in_progress event triggers

Performance is improved by removing multiple course_in_progress event triggers when activity or
course completion is triggered.

Event \core\event\course_in_progress was triggered every time when
completion_completion::mark_in_progress() was called. Now this event is triggered only once per user
enrolment (when timestarted is not yet set). This is a change in behaviour since events will not be
triggered anymore. This behaviour will affect sites that have callbacks assuming that
course_in_progress will be fired each time when mark_in_progress is called.
TL-18727 Fixed galleries in the featured links block not being reinstated after update
TL-18706 Fixed the incompatible version message shown when attempting to restore an old backup

The "This backup file has been created with Totara ..." error message was incorrectly referring to
Moodle version instated of Totara version
TL-18615 Removed duplicated options in the 'Show with backdrop' selector on the add new step form in user tours
TL-18569 Removed 'export to portfolio' links from assignment grading interfaces

The 'export to portfolio' functionality is designed for a user to export their own assignment
submissions to their portfolio. The link was being shown to trainers in the grading interface but
displayed an error if it was clicked.
TL-17919 Fixed the display of the main region in core themes
TL-17852 onchange Totara form actions now support comparing against arrays
TL-17725 Fixed display issue when selecting a course icon

When selecting a course icon, if the last icon in a row was selected, the first icon in the
following row previously appeared directly below the selected icon.
TL-17652 Removed 'Update activities' checkbox from seminar notification template form when new customer notification template is added
TL-17645 Mustache esc helper now supports full mustache syntax
TL-17632 Ensured that recursion in mustache helpers is prevented when debugging is off
TL-17417 Fixed an issue with links not being generated correctly within the totara_message component

This was primarily an issue with the "more details" link in messages sent when commenting on a
user's learning plan.
TL-14015 Deprecated unused totara/core/js/goal.item.js file
Upstream improvements from Moodle
TL-19399 MDL-62497: Protect against QuickForm remote code execution

This vulnerability had already been fixed in a previous Totara patch (see TL-18491 from previous
releases of Totara).

An additional fix was added from this set of Moodle fixes which ensures that the Feedback module
uses the QuickForm API correctly and safely, making sure that type checking of values is done as
specified.
TL-19396 MDL-62880: Dropped support for legacy question import format
TL-19392 MDL-63101: Improved accuracy of cache event invalidation
TL-19387 MDL-63050: Made session check compatible with Redis 4.0
TL-18944 MDL-53848: Added hideIf functionality to Moodle forms

Elements can now be hidden based on the value of another element. Usage matches that of the
disabledIf functionality that was already available in the Moodle forms.
TL-18662 MDL-62210: Improved validation when exporting assignments to portfolio
TL-18661 MDL-62232: Improved validation when exporting forum attachments to portfolio

Validation has been added in a previous Totara patch. This aligns it with Moodle's solution for compatibility.
TL-18660 MDL-62233: Added validation on callback class when exporting to portfolio

Validation had been applied to the callback class in a previous Totara patch. This adds the Moodle
solution for compatibility.
TL-18656 MDL-62790: Added capability check in core_course_get_categories for Web Service
TL-18655 MDL-62820: Made sure questions text is properly encoded before display after question bank import
TL-18539 MDL-62200: Prevented modals from adding another backdrop when being loaded in from another modal
TL-18469 MDL-60793: Fixed compatibility issue with MySQL 8

The chat module used a database field where the name is a reserved word in
MySQL 8. This could have caused errors during some database operations. The
field has been renamed.
TL-18301 MDL-61905: Removed unused Workshop tables from database

A number of tables that were used by the Workshop module in versions 1.1 and earlier have been kept
but unused since upgrading to version 2.0. Those tables were suffixed with '_old'.

If your installation was originally a Moodle or Totara version 1.x, we recommend confirming whether
these tables may contain data that should be kept before upgrading as these tables will be dropped.
TL-18298 MDL-61309: Implemented a new deleted flag for forum posts and adapted userdata purging to use it

A new 'deleted' column for forum posts was introduced. Now deleted posts and discussions display a
placeholder instead of the original text. Purging of user data was modified to set the new deleted
flag and empty the title, and body, of the forum posts and discussions. Previously the title and
body were replaced by a placeholder instead of dynamically showing it.
TL-18270 MDL-59453: Fixed filtering of lesson content in external functions
TL-18267 MDL-59649: Fixed type of content exporter field to the correct value
TL-18266 MDL-59627: Fixed data_search_entries function in the database module wasn't calculating total count correctly
TL-18265 MDL-59619: Fixed get_fields Web Services not working properly if database has no fields
TL-18260 MDL-59532: Fixed check_update callback failing when the activity uses separated groups
TL-18252 MDL-59820: Removed unnecessary CSS class on calendar

The course selector now uses the standard HTML/CSS as used by other single
selects.
TL-18240 MDL-60485: Fixed being able to change grade types when grades already exist
TL-18233 MDL-60104: Fixed SCORM description text to no longer extend outside the page
TL-18231 MDL-60433: Fixed users being able to view all groups even if they were not allowed to
TL-18229 MDL-60789: Added length validation rule for a workshop title submission
TL-18228 MDL-60741: Refactored admin purge caches page to call admin_externalpage_setup first
TL-18227 MDL-60693: Added multilang filter to activity titles in course backup and restore
TL-18226 MDL-60675: Fixed an exception in single selects without a default value
TL-18224 MDL-59876: Fixed the Web Service user preference name field type
TL-18222 MDL-60810: Removed string referencing PostNuke from auth/db
TL-18221 MDL-60809: Fixed missing filelib include in XML-RPC function
TL-18220 MDL-60773: Added pendingJS checks for autocomplete interactions
TL-18219 MDL-60637: Removed unnecessary group id number validation on Web Services
TL-18216 MDL-60253: Ensured both LTI ToolURL and SecureToolURL are used for automatic matching
TL-18215 MDL-60187: Ensured grade items are not created when grades are disabled

When editing LTI titles inline, it makes it appear in the Gradebook even if the privacy option
'Accept grades from the tool' is disabled.
TL-18213 MDL-58817: Ensured LTI icons are not overwritten by cartridge params
TL-18212 MDL-56253: Added multilang support to course module name in grades interface
TL-18211 MDL-55808: Fixed glossary entries search not working with ratings enabled
TL-18210 MDL-27886: Fixed handling of course backup settings and dependencies

The dependency of backup settings was not working properly. If a default setting was disabled (not
locked) then the dependent settings in the backup were locked and could not be changed as expected.
The check for locked dependencies has been changed to fix this.
TL-18208 MDL-60838: Fixed Solr files upload to honour timeout restrictions
TL-18207 MDL-60738: Fixed Web Service theme and language parameters not being cleaned properly
TL-18206 MDL-60669: Fixed duplicate entry issue when restoring forum subscriptions
TL-18205 MDL-60591: Fixed forum inbound processor discarding the inline images if a message contains quoted text
TL-18204 MDL-60249: Ensured feedback comments text area is resizeable
TL-18203 MDL-60188: Implemented cache for user's groups and groupings
TL-18201 MDL-57569: Fixed a large badge image being unaccessible for the future use
TL-18199 MDL-46768: Loosened the restriction on the badge name filter to allow quotes
TL-18198 MDL-45068: Improved group import code, prevented PHP displaying notices and warning for certain CSV files
TL-18197 MDL-27230: Ensured that changes to Quiz group overrides are reflected in the calendar
TL-18196 MDL-24678: Fixed a race condition in the chat activities leading to multiple messages being returned as the latest message
TL-18192 MDL-60801: User defaults are now applied when uploading new users
TL-18191 MDL-60443: Improved validation error message when a requested data format does not exist
TL-18190 MDL-60219: The 'no blocks' setting in an LTI activity now uses the 'incourse' page layout with blocks disabled
TL-18188 MDL-37757: Added missing clean up external files on removal of a repository
TL-18187 MDL-34161: Fixed LTI backup and restore to support course and site tools and submissions
TL-18181 MDL-60945: Stopped unneeded completion data being retrieved in Web Service function
TL-18178 MDL-59866: Added retries for connecting to Redis in the session handler before failing
TL-18174 MDL-56864: Fixed removal of tags if usage of standard tags is set to force
TL-18171 MDL-54021: Fixed an issue where "Course completion status" block didn't show activity name in correct language
TL-18169 MDL-45500: Enabled ability to uninstall grading plugins
TL-18168 MDL-44667: Fixed minor field existence checks in three plugins

The following three plugins each had one call to a database function that was attempting to validate
the existence of the field incorrectly. The affected plugins were:
  • Assignment file submission
  • Assignment online text submission
  • Multi-answer question type
TL-18166 MDL-40790: Fixed Lesson content button to no longer run off the edge of the page
TL-18165 MDL-61045: Made sure the 'After the quiz is closed' review option is disabled if the quiz does not have a close date
TL-18164 MDL-61042: Fixed undefined variable error when viewing detailed statistics report on empty lesson
TL-18163 MDL-61040: Improved spacing around the "Remove my choice" link within a choice activity
TL-18162 MDL-61022: Added acceptance test for user groups restore functionality
TL-18161 MDL-60938: Fixed the rendering of users in the choice activity responses table
TL-18160 MDL-60767: Fixed a visual bug causing validation errors to not be shown when saving changes to several admin settings in a single action
TL-18159 MDL-60653: Fixed the incorrect indentation of navigation nodes when their identifier happened to be an integer
TL-18156 MDL-60161: Ensured that OAuth curl headers are only ever sent once
TL-18155 MDL-59999: Added a status column to the Essay question grading interface within Lesson
TL-18154 MDL-59709: Fixed export to portfolio button in assignment grading interface for Online Text submissions
TL-18153 MDL-59200: Fixed an issue where a user is unable to enter assignment feedback after grade override

Fixes an issue where a user would be unable to enter assignment feedback after grade override and if
there was no original assignment grade set.
TL-18152 MDL-58888: Added sort-order for choice_get_my_response() results by optionid
TL-18150 MDL-57431: Shuffle question help icon in Quiz is now outside the HTML label
TL-18149 MDL-54967: Fixed IMS Common Cartridge import incorrectly decoded html entities in URLs
TL-18148 MDL-52100: Fixed filearea to not delete files uploaded by users without file size restrictions
TL-18147 MDL-49995: Fixed overwriting of files to not leave orphaned files in the system
TL-18146 MDL-42676: Fixed issue that prevented assignment submissions when grade override was used
TL-18145 MDL-34389: Fixed users with capability 'moodle/course:changecategory' were able to only select current course category and not its subcategories
TL-18144 MDL-31521: Fixed calculated questions were displaying a warning when more than one unit with multiplier equal to 1
TL-18143 MDL-60942: Fixed format_string doesn't account for filter in static cache key
TL-18139 MDL-58983: Fixed display of grade button in assignments when user doesn't have capability

The "grade" button is now hidden if a user doesn't have the capability to grade assignments.
TL-18138 MDL-51089: Improved accessibility when accessing the 'add question' action menu
TL-18137 MDL-43827: Improved accessibility when editing uploaded files on the server
TL-18136 MDL-33886: Added graceful error handling when backup filename is too long
TL-18135 MDL-61107: Made sure invalid maximum grade input is handled correctly in quiz activity
TL-18134 MDL-57727: Fixed Activity completion report to have a default sort order
TL-18132 MDL-23887: Replaced deprecated System Tables calls to System Views calls in sql generator for MSSQL
TL-18130 MDL-61098: Fixed trainers ability to edit or delete WebDav repositories that they have created at a course level
TL-18129 MDL-61068: Changed rounding for timed forum posts to the nearest 60 seconds to ensure all neighbouring posts are correctly selected
TL-18127 MDL-60943: Improved error message for preg_replace errors during global search indexing
TL-18126 MDL-60742: Allow customisation of 12/24h time format strings
TL-18125 MDL-60415: Fixed error messages in LTI launch.php when custom parameters are used
TL-18124 MDL-60079: Fixed 'User tours' leaving unnecessary aria tags in the page
TL-18123 MDL-57786: Fixed word count for online text submission in assignment module
TL-18122 MDL-53985: Prevented assignment PDF annotations being removed when a submission is revert back to draft
TL-18121 MDL-43042: Improved layout of multichoice question response in a lesson
TL-18117 MDL-61010: Added unread posts link for the counter in "Blog-like" forum which takes a user to the first unread post in the discussion
TL-18116 MDL-60776: Fixed error in enrolled users listing when custom fullnamedisplay format contains a comma
TL-18115 MDL-60549: Ensured LTI return link works when content is outside of an iframe
TL-18114 MDL-55382: Changed quicklist order to be alphabetical when annotating File submission assignments
TL-18113 MDL-37390: Set course start date when a course is approved to the user's midnight
TL-18112 MDL-61234: Fixed race condition in user tours while resolving the fetchTour promise
TL-18111 MDL-61224: Added length validation for short name when creating a role
TL-18109 MDL-61077: Made quiz statistics calculations more robust
TL-18108 MDL-60918: Made sure current user is used in message preference update
TL-18107 MDL-60181: Glossary ratings are now displayed in their entry

Previously the entry appeared to be in the following glossary entry.
TL-18105 MDL-58006: Fixed blind marking status not being reset by course reset in assignment module
TL-18102 MDL-61253: Fixed referenced files were not added to archive when trying to download a folder
TL-18101 MDL-61250: Omitted leading space in question preview link
TL-18098 MDL-60997: Added replytoname property to the core_message class allowing to specify "Reply to" field on outgoing emails
TL-18097 MDL-60646: Fixed undefined string when managing a user's portfolio
TL-18096 MDL-60077: Fixed the display of the pop-up triangle next to rounded corners in User Tours
TL-18092 MDL-61251: Corrected a message to 'Enable RSS feeds' to point to the proper settings section
TL-18091 MDL-61168: Prevented the 'Export to portfolio' button from getting truncated by collapsed online text submissions

When a long 'Online Text' submission is made the entry is truncated and is expandable. The 'Export
to portfolio' button, if enabled, was also being truncated. Only the submitted text is truncated now.
TL-18090 MDL-61027: Fix an issue with datetime profile fields when using non-Gregorian calendars
TL-18088 MDL-52832: Fixed an issue where quiz page did not take user/group overrides into account when displaying the quiz close date
TL-18087 MDL-51189: Fixed an issue in the quiz module where trainers were unable to edit override if quiz was not available to student
TL-18086 MDL-42764: Added missing error message for user accounts without email address
TL-18081 MDL-61344: Added display of additional files when adding submissions in assignment module
TL-18080 MDL-61305: Added a lock to prevent 'coursemodinfo' cache to be built multiple times in parallel

To reduce impact on the performance, the building of the coursemodinfo cache cannot happen in
parallel anymore. There's now a database lock in place to prevent that.
TL-18079 MDL-61236: Fixed bug where course welcome message email was not sent from the course contact who was first assigned the role of trainer
TL-18078 MDL-61153: Made lesson detailed statistics report column widths consistent
TL-18077 MDL-61150: Corrected wrong "path" attribute in some core install.xml files
TL-18076 MDL-56688: Fixed the order of grade items in single view and export of the Gradebook

All views of grade items now show in the order set in the Gradebook setup.
TL-18074 MDL-61408: Added default button class when checking quiz results
TL-18073 MDL-61324: Fixed detection of changed grades during LTI sync

Improved the detection of changed grades during LTI sync so that unchanged grades are not synced
every time the grade sync task is run anymore.
TL-18072 MDL-61289: Fixed choice activity didn't include extra user profile fields on export
TL-18071 MDL-61005: Fixed an issue in which system level audiences were potentially excluded when searching audiences in some interfaces
TL-18070 MDL-58845: The Choice activity report for reviewing answers now respects the 'Display unanswered questions' setting
TL-18069 MDL-61480: Added a check to ensure plugins are installed within get_plugins_with_function()
TL-18065 MDL-61453: Fixed accepted file type when uploading user pictures

When uploading multiple user pictures, the list of accepted file types for the file picker was not
limited to ZIP only. This has been fixed. Attempts to upload non-ZIP files led to an error message.
TL-18064 MDL-61322: The time column within the log and live log reports now displays the year as part of the date
TL-18061 MDL-61196: Ensured activity titles are correctly formatted when included in the subject for notifications
TL-18060 MDL-60658: Fixed validation of the 'grade to pass' activity setting to ensure that localisations are correctly handled
TL-18058 MDL-55153: Fixed an issue with customised language strings that have been removed still showing up in language customisation interface
TL-18057 MDL-36157: Fixed HTML entities in RSS feeds that were not displayed correctly
TL-18051 MDL-61261: Added validation for requests to 'Open badges' backpack to prevent possible self-XSS
TL-18050 MDL-60398: Fixed an issue with downloading resource of type "Folder" with name of 200+ bytes
TL-18049 MDL-60241: Fixed visible value of general section in course

On upgrade to Moodle 3.3 it was possible that the general section of a course was set to visible =
0. Even if this has no effect in Totara this patch reverts this and sets all general sections back
to visible = 1.
TL-18048 MDL-59070: Fixed enrol database plugin bug where the 'enablecompletion' value was not loaded
TL-18047 MDL-61658: Fixed display of user's country in course participant list and 'Logged in user' block

If a country was excluded from the setting 'allcountrycodes', the country code was not translated to
the country name in the 'Logged in user' block and on the course participants list.
TL-18044 MDL-58179: Converted uses of "label" CSS class to "mod_lesson_label"

Bootstrap causes HTML elements with the CSS class to have white text. As a result text was not being
displayed correctly. This change only affects the lesson activity module.
TL-18043 MDL-52989: Fixed question clusters occasionally displaying a blank page when a student restarts half way through
TL-18041 MDL-61733: Fixed creation of tables in Atto editor for Database activity templates
TL-18040 MDL-61656: Fixed missing role name on the security report for incorrectly defined front page role
TL-18039 MDL-61576: Ensured the lti_build_custom_parameters function contains all necessary parameters
TL-18038 MDL-61328: Fixed the sorting of User tours steps when moving steps up or down
TL-18037 MDL-61321: Fixed a bug in mod_feedback_get_responses_analysis Web Services preventing return of more than first 10 feedback responses
TL-18036 MDL-61257: Fixed the 'Course module completion updated' link in the course log report

The link was previously pointing to the course completion report instead of the activity completion
report, this has been fixed.
TL-18034 MDL-60762: tool_usertours blocks upgrade if admin directory renamed
TL-18033 MDL-55532: Fixed a hard-coded reference to the admin directory within the User tours tool
TL-18027 MDL-61689: Unexpected and unhandled output during unit tests will now result in the tests being marked as Risky
TL-18026 MDL-61522: Made sure glossary paging bar links do not use relative URLs
TL-18025 MDL-61502: Added a test for multi-lingual "Select missing words" questions
TL-18023 MDL-61163: Fixed a bug preventing guest users from viewing Wiki pages belonging to Wiki activities added to the page
TL-18022 MDL-61127: Added improved keyboard navigation when using the file picker
TL-18021 MDL-61020: Fixed Video.js media player timeline progress bar being flipped in RTL mode
TL-18020 MDL-60726: Fixed alignment of assignment submission confirmation message
TL-18019 MDL-60115: Fixed a silently failing redirect when creating a new book resource
TL-18017 MDL-61860: Fixed require path for config.php on authentication test settings page
TL-18016 MDL-61581: Added styling to the 'returning to lesson' navigation buttons
TL-18014 MDL-61129: Added 'colgroup' attribute to the survey question tables
TL-18013 MDL-61033: Fixed an error when editing a quiz while a preview is open in another browser window
TL-18012 MDL-60196: Fixed the display of custom LTI icons
TL-18010 MDL-58697: Fixed issue with assignment submission when toggling group submission

When assignment submission was set to group submission and then turned off, the status was not
showing an assignment as submitted even if there was a file submitted. The group assignment status
is now only considered if group assignment submission is enabled.
TL-18009 MDL-61741: Fixed the IPN verification endpoint URL of the Paypal Enrolment plugin
TL-18008 MDL-61708: Fixed LTI to respect fullnamedispaly settings for fullname field in the requests
TL-18006 MDL-61928: Made frozen form sections collapsible an expandable
TL-18003 MDL-61520: Fixed references to xhtml in Quiz statistics report
TL-18002 MDL-61348: Fixed incorrect group grade averages in quiz reports
TL-18001 MDL-59857: Increased the length of the 'completionscorerequired' field in SCORM database table
TL-17999 MDL-62042: Filtered out some unicode non-characters when building index for Solr
TL-17997 MDL-62011: Fixed an issue where approval of a course request fails if a new course with the same name has been created prior to request approval
TL-17996 MDL-61715: Fixed Question type chooser displaying headings for empty sections under certain conditions
TL-17995 MDL-60882: Prevent deletion of all responses if the external function delete_choice_responses() is called without responses specified

The external function mod_choice_external::delete_choice_responses has changed behaviour - if this
function is called by a user who has the 'mod/choice:deleteresponses' capability with no responses
specified then only the user's responses will be deleted, rather than all responses for all users
within the choice. To delete all responses from all users, all response IDs must be specified.
TL-17993 MDL-61012: Allow module name to be guessed only if not set by subclass of the moodleform_mod class
TL-17990 MDL-61800: Reset the OUTPUT and PAGE for each task on cron execution
TL-17989 MDL-61521: Fixed missing text formatting for category name in get_categories Web Service
TL-17985 MDL-62500: Fixed an issue where a checkbox label wasn't updated after updating a tag
TL-17983 MDL-62408: Fixed profile_guided_allocate() function to help split behat scenarios better for parallel runs never being executed in behat_config_util
TL-17981 MDL-62588: Added missing instanceid database field to the Paypal enrolment plugin
TL-17337 + MDL-61392: Improved the IPN notifications handling in Paypal enrollment plugin
TL-17335 + MDL-61269: Set composer license to GPL-3.0-or-later
TL-17326 + MDL-60436: Improved the performance of block loading
TL-17089 + MDL-58699: Improved the security of the quiz module while using browser security settings

When the "Browser Security" setting is set to "Full screen pop-up with some JavaScript security",
the "Attempt quiz" button is no longer visible if a user has JavaScript disabled.
TL-17083 + MDL-59858: After closing a modal factory modal, focus goes back to the element that triggered it.
TL-17058 + MDL-60535: Improved style of button when adding questions from a question bank to a quiz
TL-17057 + MDL-51892: Added a proper description of the login errors
TL-17055 + MDL-60571: Styled "Save and go to next page" as a primary button when manually grading quiz questions
TL-17053 + MDL-36580: Added encryption of secrets in backup and restore functionality

LTI (external tool) activity secret and key are encrypted during backup and decrypted during restore
using aes-256-cbc encryption algorithm. Encryption key is stored in the site configuration so
backup made with encryption will be restored with lti key and secret on the same site, and without
these values on different site.
TL-17050 + MDL-60489: Content height changes when using the modal library are now smooth transitions
TL-17043 + MDL-60449: Various language strings improvements in courses and administration
TL-17013 + MDL-54540: Added allowfullscreen attribute to LTI iFrames to ensure the full screen can be used

This change adds attributes to the LTI iframe allowing the content to be viewed in full screen.
TL-16995 + MDL-35849: Added "alert" role HTML attribute to the log in errors

This allows screen readers to identify when a user has not logged in correctly
TL-15708 MDL-59132: Fixed anonymous response numbering in feedback Web Service
TL-15684 MDL-58857: User session is now terminated when a major upgrade is required
TL-15682 MDL-58860: Fixed Web Service mod_lesson_get_attempts_overview when no attempts made
TL-15639 MDL-58659: Added enddate parameter to Web Services returning course information
TL-15636 MDL-58681: Split the checkbox and advcheckbox behat tests

Advanced checkboxes cannot be tested without a real browser because Goutte does not support the
hidden+checkbox duality.
TL-15635 MDL-51932: Improved UX when setting up a workshop

When setting up a workshop activity, the stage switch has been updated to state which stage they
will take you to.
TL-15630 MDL-58415: Multiple bug fixes in the new lesson web services
  • Avoid inappropriate http redirections
  • Added missing answer fields
  • Various code fixes, including ensuring correct variable types are used where necessary
TL-15620 MDL-58412: Fixed several bugs in the new feedback web services
TL-15619 MDL-58530: Updated the video.js library to v5.18.4
TL-15604 MDL-58502: Fixed error when cancelling feedback
TL-15598 MDL-58574: Removed an unnecessary check for delete icon when working with permissions in an activity module
TL-15594 MDL-58549: Added version of jabber/XMPP libraries to thirdpartylibraries.xml
TL-15589 MDL-58493: Converted the delete enrolment icon to a font icon

When managing enrolments in a course, if a role was added, the delete icon
was an image (instead of a font icon) before the page was reloaded. This
has been corrected.
TL-15583 MDL-57573: Updated PHPmailer library to v5.2.23
TL-15579 MDL-58552: Fixed alignment of quiz icon
TL-15575 MDL-57553: Fixed user tour steps so that they do not inherit attributes from CSS selector

Updated the flexitour component to v0.10.0 and the popper.js library to v1.0.8 in the process.
TL-15569 MDL-56632: Moved the "Turn editing on\off" link to the top of the book administration menu
TL-15567 MDL-58311: Added support for password-protected Redis Session and Cache Store connections

Support for setting a password for the Redis Cache and Session Store was added. Password for the
cache store can be set when adding or editing the cache store instance settings.

The password for the Redis session store can be set with the config $CFG->session_redis_auth.
TL-15565 MDL-58453: Refactored get_non_respondents Web Service
TL-15564 MDL-57813: Added Web Service mod_feedback_get_last_completed
TL-15559 MDL-58361: Made core_media_manager final to prevent from being subclassed
TL-15558 MDL-58399: Return additional file fields in Web Services to be able to handle external repositories files

See mod/upgrade.txt and course/upgrade.txt for details.
TL-15557 MDL-58444: Added number of unread posts to get_forums_by_courses Web Services
TL-15556 MDL-51998: Improved manage forum subscribers button
TL-15555 MDL-57821: Added Web Service mod_feedback_get_responses_analysis
TL-15553 MDL-53343: Migrated scorm_cron into new tasks API
TL-15514 MDL-58265: Refactored behat to use a new step "I am on the course homepage"

The new step directly accesses the course page without following the path from the homepage to the
course. A shortcut step "I am on course homepage with editing mode on" was also added to allow
accessing a course and turn editing mode on.
TL-15496 MDL-57503: Allow course ids for enrol_get_my_courses

This adds a new parameter for enrol_get_my_courses() to filter the list returned to specific courses.
TL-15466 MDL-55941: Improved UX of alpha chooser / initialbar in tablelib and made it responsive
TL-15464 MDL-48771: Improved quiz question editing interface

The quiz editing interface has been improved to allow selection of multiple questions to be deleted.
TL-15461 MDL-57411: mod_check_updates now returns information based on user capabilities
TL-15445 MDL-50970: Added new Web Service core_block_get_course_blocks
TL-15444 MDL-57925: Implemented check_updates_since callback
TL-15443 MDL-57924: Added new Web Service mod_data_update_entry
TL-15442 MDL-57923: Added new Web Service mod_data_add_entry
TL-15441 MDL-57922: Added new Web Service mod_data_delete_entry
TL-15440 MDL-57921: Added new Web Service mod_data_approve_entry
TL-15439 MDL-57920: Added new Web Service mod_data_search_entrie
TL-15438 MDL-57919: Added new Web Service mod_data_get_fields
TL-15437 MDL-57918: Added new Web Service mod_data_get_entry
TL-15436 MDL-49409: Added new Web Service mod_data_get_entries
TL-15434 MDL-57822: Added new Web Service mod_feedback_get_non_respondents
TL-15433 MDL-58230: Added new Web Service mod_feedback_get_finished_responses
TL-15432 MDL-55139: Added code coverage filter in component phpunit.xml files
TL-15431 MDL-58070: Reworded "visible" core string used in course visibility

Additionally we aligned the name and value strings of the course visibility default settings.
Previously the value strings were different to the actual course settings.
TL-15430 MDL-57965: Enabled gzip compression for SVG files
TL-15428 MDL-58329: Added new Web Service mod_lesson_get_lesson
TL-15427 MDL-57760: Added new Web Service mod_lesson_get_pages_possible_jumps
TL-15426 MDL-57762: Added check updates functionality to the lesson module
TL-15424 MDL-57757: Added new Web Service mod_lesson_get_user_attempt
TL-15423 MDL-57754: Added new Web Service mod_lesson_get_attempts_overview
TL-15422 MDL-57724: Added new Web Service mod_lesson_finish_attempt
TL-15421 MDL-57696: Added new Web Service mod_lesson_process_page
TL-15420 MDL-57693: Added new Web Service mod_lesson_get_page_data
TL-15419 MDL-57688: Added new Web Service mod_lesson_launch_attempt
TL-15418 MDL-58229: Added new Web Service get_unfinished_responses
TL-15417 MDL-57820: Added new Web Service mod_feedback_get_analysis
TL-15415 MDL-57818: Added new Web Service mod_feedback_process_page
TL-15414 MDL-57817: Added new Web Service mod_feedback_get_page_items
TL-15413 MDL-57816: Added new Web Service mod_feedback_launch_feedback
TL-15412 MDL-57685: Added new Web Service mod_lesson_get_pages
TL-15411 MDL-55267: Removed deprecated field datasourceaggregate
TL-15410 MDL-57815: Added new Web Service mod_feedback_get_items
TL-15409 MDL-57823: Implemented the check_updates callback in the feedback module
TL-15408 MDL-57814: Added new Web Service mod_feedback_get_current_completed_tmp
TL-15407 MDL-57916: Added new Web Service mod_data_get_access_information
TL-15406 MDL-57811: Added new Web Service mod_feedback_view_feedback
TL-15404 MDL-57812: Added new Web Service get_feedback_access_information
TL-15402 MDL-57665: Added new Web Service mod_lesson_get_user_timers
TL-15401 MDL-57664: Added new lesson Web Service get_content_pages_viewed
TL-15398 MDL-57657: Added new Web Service mod_lesson_get_user_grade
TL-15397 MDL-40759: Added additional Font Awesome support

A small number of icons have been converted to Font Awesome icons, and a number of remaining
locations where image icons were used have been replaced with font icons.
TL-15396 MDL-57390: Added capabilities/permission information to Web Service forum_can_add_discussion response
TL-15394 MDL-57648: Added new web service mod_lesson_get_questions_attempts
TL-15393 MDL-57645: Added new web service mod_lesson_view_lesson
TL-15392 MDL-57643: Added new Web Service mod_lesson_get_lesson_access_information
TL-15388 MDL-50538: Added new Web Service mod_feedback_get_feedbacks_by_courses
TL-15386 MDL-57631: Implemented scheduled task for LDAP Enrolments Sync

The previous CLI script has been deprecated in favour of the new scheduled task. The new task is
disabled by default.
TL-15385 MDL-58109: Added check for preventexecpath in the Security Report

If the config value $CFG->preventexecpath is set to 'false' this will show up in the Security Report
as a warning.
TL-15383 MDL-58217: Added data generators for feedback items
TL-15382 MDL-57915: Added Web Service mod_data_view_database
TL-15380 MDL-57914: Refactored get_databases_by_courses
TL-15379 MDL-57975: Added HTML5 session storage.

This can be used by developers using the core/sessionstorage AMD module in much the same way
developers can use core/localstorage

This also adds a core_get_user_dates and userdate mustache helper.
TL-15377 MDL-57999: Add itemname to gradereport_user_get_grade_items Web Service
TL-15376 MDL-57280: Added the ability to create modal types via a registry

More information can be found at https://help.totaralearning.com/display/DEV/Modal+registry
TL-15375 MDL-45584: Made cache identifiers part of loaded caches
TL-15374 MDL-57972: Added shortentext mustache helper
TL-15371 MDL-57887: Support nginx and other webservers for logging of username in access logs

Support for logging usernames to webserver access logs has been extended to allow sending the
username as a custom header which can be logged and stripped out if needed.
TL-15368 MDL-53978: Added extra plugin callbacks for every major stage of page render + swap user tours to use them
TL-15366 MDL-57527: Changed course reports to use CSS instead of SVG rotation
TL-15365 MDL-57633: Added new Web Service mod_lesson_get_lessons_by_courses
TL-15363 MDL-57602: Added 'Granted extension' filter for grading table
TL-15362 MDL-57619: Removed behat steps deprecated in Moodle 2.9 or earlier
TL-15358 MDL-57687: Removed unnecessary init_toggle_class_on_click JavaScript functionality
TL-15357 MDL-57890: Improved all get_by_courses Web Services to include the coursemodule (cmid) in the results
TL-15356 MDL-57896: Added command line tool to read and change configuration settings in the database
TL-15355 MDL-55476: Removed loginpasswordautocomplete option

The a loginpasswordautocomplete option simply appends autocomplete="off" to the password field in
the form. As most of the browsers dropped support for this attribute it is removed.
TL-15354 MDL-57697: Converted survey validation JavaScript from YUI2 to AMD
TL-15350 MDL-57586: Changed $workshop variable from protected to public in class

Changed $workshop from protected to public in class workshop_example_submission to make it easier
for renderers in themes to access data instead of retrieving it from the database.
TL-15349 MDL-57638: Improved the handling of failed RSS feeds in the RSS block

Previously if the cron could not read the RSS feed configured in a block this failure was not
visible to the administrator in the interface. Additionally every time the block displayed it tried
to fetch the feeds regardless of its status.
With this patch the RSS blocks do not try to request the feeds if the 'skiptime' and 'skipuntil'
values are set. If there are failed feeds then an error message will be shown to the administrator
but not to a learner.
TL-15348 MDL-56808: Removed use of eval in SCORM JavaScript files
TL-15346 MDL-57273: Added generic exporter, persistent and persistent form classes

This patch adds new model classes following an active record pattern to represent, fetch and store
data in the database. The persistent class also provides basic validation.

Exporters convert objects to stdClasses. The exporter contains the definition of all properties and
optionally related objects.
TL-15345 MDL-57655: Added support for the igbinary serializer in the Redis Session Handler

If igbinary is installed and $CFG->session_redis_serializer_use_igbinary is set to true the Redis
session handler uses igbinary for serializing the data.
TL-15344 MDL-57690: Stopped loading mcore YUI rollup on each page

This may expose areas in custom JavaScript that use YUI modules without loading them correctly.
TL-15343 MDL-49423: Added support for optiongroups inside admin selects
TL-15342 MDL-50539: Added new Web Service to retrieve a list of folders from several courses
TL-15341 MDL-50545: Added new Web Service to retrieve a list of pages from several courses
TL-15340 MDL-56449: Provided a more detailed description of group submission problems
TL-15339 MDL-57550: Updated advanced forum search to use AMD modules
TL-15338 MDL-50547: Added new Web Service to retrieve a list of resources from several courses

Added a new Web Service which returns a list of files in a provided list of courses. If no list is
provided all files that the user can view will be returned.
TL-15336 MDL-57490: Converted Select all/none functionality to use JavaScript

In the quiz, SCORM and lesson modules, there was some inline JavaScript handlers. These have been
converted to pure JavaScript event listeners.
TL-15335 MDL-57570: Added support for the igbinary serializer in the Static Cache Store

If igbinary is installed the static cache store automatically makes use of it.
TL-15333 MDL-57488: Replaced and deprecated M.util.focus_login_form and M.util.focus_login_error
TL-15330 MDL-50542: Added new Web Service to retrieve a list of labels from several courses
TL-15329 MDL-50549: Added new Web Service to retrieve a list of URLs from several courses
TL-15328 MDL-57627: Added new field to forum Web Service to get tracking status of the user
TL-15326 MDL-56519: Added linting for behat .feature files

The linting enforces the following rules on .feature files:
* Indentation (in spaces):
** Feature: 0
*** Background: 2
*** Scenario: 2
**** Step: 4
**** Given: 4
**** And: 4
**** Examples: 4
**** Example: 6
* Other rules:
** Feature names must be unique
** Empty feature files are not allowed anymore
** Feature files w/o scenarios are not allowed anymore
** Partially commented tag lines are not allowed
** Trailing spaces are not allowed
** Unnamed features are not allowed
** Unnamed scenarios are not allowed
** Scenario outlines w/o examples are not allowed
TL-15325 MDL-57572: Added support for the igbinary serializer in the Redis Cache Store

Added setting to switch the serializer to either the builtin php or the igbinary serialiser. The
igbinary serialiser stores data structures in compact binary form and savings can be significant for
storing cached data in Redis.
TL-15324 MDL-57282: Deprecated the behat step "I go to X in the course gradebook"
TL-15323 MDL-57149: Made the language import administration page compatible with Bootstrap
TL-15322 MDL-57392: Modified external function core_course_external::get_courses_by_field to return the course filters list and status
TL-15321 MDL-55461: Fixed placement of cursor in Atto equation editor on repeated insertions from predefined buttons
TL-15319 MDL-44172: Removed example htaccess file
TL-15317 MDL-57395: Added new Web Service core_course_get_updates_since
TL-15316 MDL-57471: Deprecated init_javascript_enhancement() and smartselect code
TL-15315 MDL-57472: Removed fix_column_widths Internet Explorer 6 hack

Removed old Internet Explorer 6 hack and added deprecated warnings.
TL-15314 MDL-56581: Highlighted row when permission is overriden in a course
TL-15312 MDL-56640: Converted single selects and URL selects to mustache templates

This has also deprecated the YUI auto submit JavaScript.
TL-15311 MDL-56320: Allow uninstall of unused web service plugins
TL-15309 MDL-57143: Removed check for Windows when using SQL Server (sqlsrv) drivers

When using the SQL driver for Linux there was an error message during initialisation stating that
the driver is only available for Windows. This is not true anymore as there is a Linux driver, thus
the message got removed.

TL-15306 MDL-53814: Show question type icons when manually grading a quiz

Contributions:

  • James Voong from Catalyst - TL-17357
  • Jo Jones at Kineo UK - TL-18686, TL-18640, TL-18591
  • Joby Harding at 77 Gears Ltd - TL-19045, TL-10852
  • Michael Dunstan at Androgogic - TL-18931
  • Russell England at Kineo USA - TL-18746, TL-17149