Hi everyone,
The following versions of Totara have now been released:
- 9.0
- 2.9.12
- 2.7.20
- 2.6.37
- 2.5.44
- 2.4.46
- 2.2.52
This marks the first stable release of Totara 9.
Documentation for this release will be made available in the immediate future.
All stable releases contain security fixes and for this reason we strongly recommend upgrading.
Each release also includes bug fixes and improvements.
Thanks to the following people for their contributions to these releases:
- Aldo Paradiso at MultaMedio - TL-5143
- Anthony McLaughlin at Learning Pool - TL-7944
- Chris Wharton at Catalyst EU - TL-6243
- Eugene Venter at Catalyst NZ - TL-8023, TL-10735, TL-10789
- Keelin Devenney at Learning Pool - TL-7458, TL-8187
- Learning Pool - TL-7466
- Lee Campbell at Learning Pool - TL-7455
- Ryan Adams at Learning Pool - TL-7456, TL-7459
Kind regards
Sam Hemelryk and the Totara LMS development team
SHA1 checksum | Size | Package |
---|---|---|
1feb06bc8fab8aca57f5120bb025445c1142c251 | 51M | totaralms-9.0.tar.gz |
9832c98553d79d70609687f8819e3489643daa2d | 47M | totaralms-2.9.12.tar.gz |
ea67746679f56c3e3a632e96ddb618397b888993 | 56M | totaralms-2.7.20.tar.gz |
df2eb0084980a441684ac47def00820341ae240a | 50M | totaralms-2.6.37.tar.gz |
3562dc5b66d6b602ee744fce25b59ef2bc8978fa | 44M | totaralms-2.5.44.tar.gz |
17fbcfd4e3ebe6f1df2e6c859f26b723ad323c8d | 32M | totaralms-2.4.46.tar.gz |
fc81f750f255259d83b4ee4168ea0252974c5ddd | 26M | totaralms-2.2.52.tar.gz |
Release 9.0 (19th October 2016): New features: TL-6874 Introduction of Font Icons Font Icons have been made available through a new "flex icon" API. Additionally the majority of icons used within Totara have been converted to use font icons. Font icons bring exciting new possibilities when styling an icon. With them you can use any standard CSS font styling to customise the icon, including changing its colour and size. Additionally the font icons are fully scalable, and are not designed at a specific size. Totara's font icon implementation is based upon the Font Awesome toolkit. Information on using font icons, as well as how to work with them can be found in the developer documentation. TL-9031 Introduction of Roots, a new base theme for Totara A new base theme has been created for Totara. Called Roots it utilises Bootstrap 3 to produce a clean new look. We strongly recommend that all new themes utilise the roots theme as a parent. This theme is based on the Bootstrap theme (https://github.com/bmbrands/theme_bootstrap) produced and maintained by Bas Brands, David Scotson, and other contributors. For more information on the Totara 9 approach to theme management please refer to our developer documentation https://help.totaralearning.com/display/DEV/Totara+LMS+9+approach+to+theme+management TL-7468 Introduction of Basis, the new default theme for Totara Basis is a new theme added to Totara, and now set as the default theme for all new installations. Designed in house by our UX experts it brings a brand new look to Totara out of the box. For more information on the Totara 9 approach to theme management please refer to our developer documentation https://help.totaralearning.com/display/DEV/Totara+LMS+9+approach+to+theme+management TL-9493 Repurpose the base theme The base theme in Totara is no longer a stand alone theme. It now contains only essential styles for the Font Icons. It is strongly recommended that all themes use the base theme as a parent. This will ensure that the new font icons will work out of the box for your theme. Making your theme use the base theme is as simple adding "base" to the end of the parents array in your theme config. For instance you should have something like the following: $THEME->parents = array('roots', 'base'); TL-7494 New Totara forms library There is a new modern forms library available in Totara that can be used as an alternative to the current forms library. The new library provides additional functionality not available in the Quick Forms based mform library. This new forms library will be our library of choice for all future work. It is designed to overcome the limitations of the current forms library and lend itself more towards use within the current technologies embraced within Totara, including fully template driven, deliverable and translatable via JavaScript and AJAX, easy introduction of new custom elements, full testable, more intuitive PHP API, and modular extendable JavaScript API. See the developer documentation for more details https://help.totaralearning.com/display/DEV/Totara+forms+library TL-8208 Added support for hooks Hooks were designed to improve interactions of plugins and simplify customisation. This release contains the hook infrastructure and conversion of one sample area - the course editing form. We are planning to add hook support to more areas in the future and welcome code contributions inserting new hooks where required. See the developer documentation for more information https://help.totaralearning.com/display/DEV/Hooks+developer+documentation TL-8513 Added Current Learning block The Current learning block is a new block which displays all learning that is active for the viewing user. This includes courses, programs and certifications in a unified view, but excludes completed learning. A new user_learning API has been introduced to provide a standard way to access learning data, currently four components are supported: * Course * Program * Certification * Learning Plan Other components and plugins can extend the user_learning classes if they wish to integrate with the current learning block. Look in code for examples. TL-8514 Added Last Course Accessed block The Last Course accessed block can be added to any page that supports blocks. It provides quick access to the course the user last accessed. TL-7456 Added a new Location custom field A new Location custom field has been added to Totara. This can now be used anywhere custom fields can be used. It allows a address to be entered and optionally displays a map with a pinned location that can be either the same as the address or a secondary (dropped) location. Please note that this location field uses the Google Map API in order to present a visual interactive map. In order to use the visual map you will need to generate and provide Totara with a Google Maps API key. TL-7466 Added an optional regular expression validation for the "Text Input" custom field type. Text Input custom fields can now be restricted to match particular format using PHP PCRE regular expressions. TL-7983 Moodle 3.0 This release of Totara contains new features and improvements introduced upstream in Moodle 3.0.0 Additionally fixes made in Moodle 3.0.0 through to and including 3.0.6 are included in this release. For details please refer to the Moodle release notes. New features - Seminar: TL-7461 The Face-to-face activity has been renamed to Seminar All strings used in the interface that contained 'Face-to-face' have been updated. Previously, a 'Face-to-face' activity contained a number of 'Sessions', which each contained some amount of 'Session dates'. 'Sessions' have been renamed as 'Events' and 'Session dates' are now called 'Sessions'. Strings containing these terms have been updated. Face-to-face report sources and embedded reports have also had their names updated to reflect these changes, this is only a display change and should not effect any existing reports. There will be some language strings which still contain the old terms. These should not be used anywhere on the interface. They are used to identify old notification messages and placeholders in Seminar notifications. TL-7453 New interface for bulk add/remove of users in Seminar events Users in Seminar events are now added or removed in two steps: preparing a list of users and confirmation. Custom fields have been added to the Sign-ups report source. Also, sign-up custom fields can be populated in a CSV file upload for each user that will be added to the session. The Attendees tab on the attendees page now also uses an editable embedded report for displaying data. TL-7455 Added sign-in sheet to download for Seminar events A sign-in sheet can now be downloaded from the attendees tab in a Seminar event, which contains a list of learners booked for that sessions along with spaces for signatures. Details such as start/end times and location are included in the header of the sign-in sheet. TL-7458 Sign-up periods added to Seminar events Sign-up start and end times can be added to a Seminar event. These restrict when a user can book into an event and when managers can approve sign-up requests. If the user views the event outside of the sign-up period, dates will be shown for when they will be able to sign up. Setting these dates is optional. If just the end is set, then users will be able to sign up any time prior to that time. If just the start is set, then users will be able to sign up any time from then until the start of the first session. These settings will not prevent a Seminar admin from adding or removing users via the attendees page. TL-7463 Added session assets and room improvements Seminar sessions can have assets associated with them. These may represent equipment or other items that are used during the course of the session, such as a laptop or projector. Assets can be available globally or created and used for one event. Multiple assets can be assigned to each session (formerly 'session date', of which there may be one or more in an event). Rooms may now be assigned per session rather than per event. During upgrade, any rooms assigned to an event will be assigned to all sessions within that event. The 'datetimeknown' field has been dropped as part of this process. Whether or not the date/times are known for an event is determined in code by whether there are session records (in the 'facetoface_session_dates' table) associated with that event. If an event had the 'datetimeknown' field set to unknown (value of 0), then any data associated with that event in the 'facetoface_session_dates' table will be dropped during upgrade. Custom fields have been added for rooms and assets. The fields for a room's 'building' and 'address' have also been converted to default custom fields. The fields for these values have been dropped from the 'facetoface_room' table. Any data in these fields will be transferred to the newly generated room custom fields during upgrade. Report sources have been added for rooms, room assignments, assets and asset assignments. As a result of the change from rooms being per-event to per-session, a system has been added for looping through sessions within an event when substituting placeholders in a notification email. Within a notification the placeholders [#sessions] and [/sessions] respectively indicate the start and end of a repeated section. That section of the email will be repeated for each session. Within each repeat, placeholders that are associated with per-session data will be substituted with data for a given session. See our help documentation for further explanation. The placeholders [alldates], [session:room], [session:venue] and [session:location] have been deprecated. These will only be removed from the message when an email is generated, but no data will be substituted in. Placeholders such as [session:room] can be replaced using the system above and new placeholders added for this purpose, for this case, it would be [session:room:name]. In place of [alldates], a loop will need to be created which defines session start/end times and other information specifically. The full list of placeholders relevant to these loops are available in the help documentation. Existing placeholders in notifications: If a template or specific notification exactly matches the default template for that message in 2.9, it will be replaced with the new default. Otherwise, existing templates will have any [alldates] placeholders replaced with an equivalent loop during upgrade, meaning the same message details should appear in notifications. However, placeholders for room, location and venue cannot be replaced automatically as their relation to each Seminar event is changing. If you have any notifications using room placeholders (and they are not exactly the same as the 2.9 default template), you will need to update the notification to use the new tags for looping through sessions. TL-7465 Added new approval options to Seminars Previously the approval options were limited to "No approval required", "Approval required", or in a separate setting "Self approval" with terms and conditions. These have all been grouped into one setting, "Approval required" has been renamed to "Manager Approval", and two new approval options "Role Approval" and "Manager and Administrative Approval" have been added. Role Approval: To enable role approval you first need to make the desired role assignable at the event level by selecting it in the "Event roles" setting on the site administration > Seminars > Global settings page. When the role is assignable a corresponding option will be displayed under the available approval options setting on the same page, you may have to save the page before it shows up. When a Seminar is using a role approval option, approval requests will be sent to everyone assigned with the specified role in the seminar event. Any of those same users can then go to the seminars pending requests tab and approve or deny the requests. Manager and Administrative Approval: This is a 2 step approval option. First the request must be approved by their manager, the same as "manager approval". Then they must be approved by a "Seminar Administrator". Seminar administrators are a combination of site level administrators and seminar (activity) level administrators. Site level administrators are users with the "mod/facetoface:approveanyrequest" capability at site level, who have been selected in the "Site level administrative approvers" setting on the site administration > Seminars > Global settings page. Seminar level administrators are any user who has been selected with the "add approver" dialogue on the edit seminars page underneath the "admin approval" option. When a user requests signup with this setting their manager and all of the administrators are sent the request, the manager must first approve the request, then any one of the admins must approve it. Another new setting on the site administration > Seminars > Global settings page, is the "Users select manager" setting. This setting is for when manager approval is required but manager assignment data is not available. It prompts the user to select their manager from a dialogue when they attempt to sign up, the selected user is then treated as their manager for the rest of the approval process. TL-7944 Added seminar minimum bookings status and notification This utilises a minimum booking setting that allows the user managing a Seminar activity to specify the minimum number of attendees required for the event. The value of this setting is then used when reporting on the status of the event, and can be used to trigger notifications. TL-8187 Seminar events can now be cancelled Seminar events can be cancelled by a Seminar admin. The event's information will remain, allowing it to be viewed in reports. However, users will not be able to book into the event and the event's details can not be updated. TL-9675 Any one of a user's managers can approve their Seminar signup The setting 'Select job assignment on sign-up' replaces 'Select position on sign-up'. With this setting on, a learner with multiple job assignments will need to choose which job assignment they are signing up under. Where learners have multiple managers (by having multiple job assignments), there are several possible scenarios for sending out Seminar notifications to managers (such as approval requests): 1 - If the setting 'Select job assignment on sign-up' is on, notifications will go to the manager related to job assignment chosen by the user. 2 - If the setting 'Select job assignment on sign-up' is off, notifications will go to all of the user's managers. 3 - If the 'Users select manager' site setting is turned on, then regardless of whether a job assignment was selected, manager notifications will go to the manager chosen during sign-up. For more information on the 'User selects manager' setting, see change log entry TL-7465. New features - Multiple jobs: TL-8945 Multiple job assignments Multiple job assignments can be defined for each user. Existing data in primary and secondary positions was converted to job assignments. See the related changelog entries for specific uses of this feature. TL-9513 Added "Allow multiple job assignments" setting By default, multiple job assignments are enabled. By disabling this setting, only one job assignment can be created for each user. HR Import will also prevent uploading multiple job assignments for a single user when disabled. Any existing multiple jobs within the system when the setting is disabled will still remain, they will not be automatically removed. They will continue to function until they are manually removed. TL-8946 HR Import now supports Job Assignments The HR Import User source has been changed to import into job assignments, rather than the deprecated position assignments: * The option "Link job assignments" has been added to the User source. The effects of this option are detailed below. * The column "Job assignment ID Number" has been added. This field relates to the ID Number field in the user's job assignments. If "Link job assignments" is set "to the user's first job assignment" when you import user records, the imported record will be linked to the user's "first" job assignment, and if the "Job assignment ID Number" field is included then it will be updated with the specified value. If "Link job assignments" is "using the user's job assignment ID number" when you import user records, the imported records will be linked to the user's existing job assignment records using the ID Number. * If job assignment data is specified in the import and the matching job assignment record does not already exist, it will be created. * The column "Manager's job assignment ID Number" has been added. This is required when "using the user's job assignment ID number". If specified, the specific job belonging to the manager will be linked to the user's job assignment. If "Link job assignments" is set "to the user's first job assignment", the manager's "first" job assignment will be linked to the user's job assignment. * The column "Position title" has been renamed "Job assignment full name". * The columns "Position start date" and "Position end date" were renamed "Job assignment start date" and "Job assignment end date". Special care should be taken by sites upgrading to Totara 9.0 who used HR Import to populate the old "primary position", and who wish to import multiple job assignments. During upgrade, all existing position assignments were made into job assignments. Their ID Numbers were set to their location in the users' job assignment list. It is important to note that after upgrading, the location in the list of job assignments is not connected to the ID Number - if a user's first and second just assignments are swapped, it would result in the first job assignment having ID Number "2" and the second would have "1". Therefore, after upgrading, before the site goes live, if your HR management system already has a system of ID Numbers used to identify job assignments, and you want to use this value rather than the default "1" and "2", then you should perform the following steps: 1. Upgrade to Totara 9.0 or later. 2. With "Link job assignments" set "to the user's first job assignment" and column "Job assignment ID Number" enabled, import the ID Numbers from your HR management system into the "first" job assignments (previously primary position assignments). Note that your import should only contain the "primary" job assignment for each user at this stage. 3. At this stage, your "first" job assignments have the ID Number from your HR management system. 4. If you had previously set up old "secondary position assignments", they will now exist as "second" job assignments with ID number "2". You now need to manually update the ID Number in each of them to the ID number from your HR management system. 5. Finally, set "Link job assignments" to "using the user's job assignment ID number". After the first import using this setting, it will not be possible to change it back (the setting will be removed from the interface). The "Job assignment ID Number" column will be required when importing job assignment data. Any number of job assignments, each identified by the "Job assignment ID Number" field, can now be imported in a single upload. TL-8947 Updated the embedded "My team" report to work with multiple job assignments The embedded "My Team" report has been updated to show all of the manager's staff members across all of their job assignments. TL-8948 Updated the dynamic audience rules to work with multiple job assignments Dynamic audience rules based on position assignments previously only applied to users primary positions, these have been replaced with new job assignment rules that apply across all of a user's job assignments. This means that for sites currently only using primary and not secondary position assignments, existing audience membership will not change on upgrade. However sites currently using secondary position assignments might see audience memberships change on upgrade. If you do not want secondary position data to be considered when reviewing dynamic audience memberships then you will need to remove secondary position data from your users prior to upgrade. The position and organisation audience rules have been combined under a new "All Job Assignments" header, the affected rules are: * Titles (New - The job assignment full name) * Start dates (Previously: Position Start Date) * End dates (Previously: Position End Date) * Positions * Position Names * Position ID Numbers * Position Assignment Dates * Position Types * Position Custom Fields * Organisations * Organisation Names * Organisation ID Numbers * Organisation Types * Organisation Custom Fields * Managers * Has Direct Reports TL-8949 Updated the report builder columns, filters, and content options to work with multiple job assignments Report builder columns, filters and content options based on a users position assignment previously only displayed or checked the users primary positions. These have been replaced with new job assignment columns, filters and content options that apply across all of a users job assignments. The new columns are concatenated and display one job assignment field per line, with a spacer "-" displayed for empty fields. The new filters now check whether any of the users job assignments match the specified constraints, and if so will display all the data. These columns have been moved from the "User" header and are all now located under a new "All User's Job Assignments" header to make them easier to find. The User, Organisation, and Position content options are now applied across all of the users job assignments. This means if a report has a content option set to "Show user's direct reports" and a user has three job assignments, all three managers would see the user when viewing the report. Note: Concatenated columns can not be sorted, and there are no concatenated text area columns or filters since there is no way to display them inline. Any existing columns or filters for position and organisation text area custom fields, or framework descriptions, will be lost on upgrade. TL-9524 Managers are selected via their job assignment When assigning a manager to a staff member, both the manager and the job related to that manager-staff relationship can be selected. If the user has the 'totara/hierarchy:assignuserposition' capability in the manager's context or in the system context, they will be able to create an empty job assignment for the manager within the selection dialog and assign that as the job that the manager has this staff member under. As part of this change, the selector dialog for choosing a manager or temporary manager will now return a job assignment id as well as a manager id. The job assignment id can only be empty when the user has the capability described above, in which case the new job assignment will be created. If a user selecting a manager does not have permission to create the empty job assignment, and the manager currently has no job assignments, a new job assignment must be created by someone with permission to do so before that manager can be assigned a staff member. TL-9531 Updated program relative due dates to work with multiple job assignments The relative to 'position start date' rule has been renamed to 'job assignment start date' and, along with the relative to 'position assigned date' rule, has been changed to work across all of a users job assignments. When a user has the same position in several job assignments, the maximum due date will be selected. TL-9677 Appraisals have been modified to work with the new job assignments feature. Take note that the workflow for appraisals has changed: 1. Create appraisal; assign appraisees; fill in the content as per normal 2. The following has changed when an appraisal is activated: * Previously the system warned against missing roles and disallowed activation if it was a static appraisal. In 9.0, there is no longer a check here for missing roles since that is tied in with the job assignment an appraisee links to his appraisal. * The job assignment is linked only when the appraisee sees the appraisal for the very first time * Now, as long as the appraisal has assigned appraisees and questions, it can be activated, even if the appraisal is static. 3. The following has changed when an appraisee opens their appraisal: * If the appraisee has multiple existing job assignments then they must now select a job assignment to link to the appraisal. They cannot proceed with the appraisal until a job assignment is selected. * If the appraisee has only one job assignment then it is automatically linked to the appraisal. * If the appraisee doesn't have an existing job assignment then a "default" one is created and automatically linked to the appraisal. * Only now does the system register the managers and appraisers based on the job assignment the appraisee selects. 4. The rest of the appraisal workflow is the same as in previous versions. TL-9468 Converted the user aspirational position into a user profile field On upgrade to 9, aspirational position data will be migrated into the new profile field. This is because it behaves differently to existing job assignments and serves a different purpose (a target position, rather than current one). At present, aspirational position data is informational only, however in the future we may add gap analysis functionality that makes use of this value. Improvements: TL-5143 Added job assignment title as a filter for dynamic audiences This was originally contributed by Aldo Paradiso to allow dynamic audiences based on primary position titles. However, with the new job assignments feature in 9.0, this has been reworked to use job assignment titles instead - specifically job assignment full names. TL-5946 Certification block now uses its own duedate string Previously the certification block was using strings belonging to programs. It now has its own versions of these strings, allowing them to be translated with specific reference to the block. TL-6243 Added the ability to automatically create learning plans when new members are added to an audience This improvement extends the manual learning plan creation within an audience by saving the creation configuration settings and dynamically creating learning plans when new members are added to the audience, based on the saved configuration. TL-6578 Fixed dynamic audiences with user profile custom fields so default field values work It is possible to use checkbox, menu and text custom fields within dynamic audience rules for user profiles. However, the default values for these fields have never been considered when computing the membership of the dynamic audience. This fix allows the system to do so. Take note: this fix may cause audience changes upon upgrading. TL-6643 SCORM serving scripts now have explicit HTTP headers to consistently prevent caching problems TL-6879 Changed HR import scheduling to use scheduled tasks scheduling Scheduling now uses the core scheduled task scheduling, allowing for more fine grained control of scheduling. The UI on within HR Import hasn't changed but will be disabled if the schedule is too complex to be displayed. A complex schedule can be created using the scheduled task scheduler. TL-7060 Made appraisals CSS classes more specific TL-7332 Removed appraisal question options for disabled functionality Previously you could add "course from plan" review questions to your appraisal even if learning plans had been disabled for your site, these types of question should now only be available if the associated feature(s) are enabled. TL-7386 Improved the run time of report builder column unit tests TL-7452 Improved Seminar navigation The Seminar administration menu has been moved from the plugins menu (Site administration > Plugins > Activity modules > Seminar) to the Site administration root (Site administration > Seminar). Additionally the settings have been regrouped depending upon the scope of their influence, for example the "Available approval options" setting is located under "Global settings" as it determines the available options for all Seminars. TL-7459 Added links to further information on each room when signing up TL-7460 Improved Seminar summary report source Seminar summary report has a number of new columns and filters that allows the user to get more detailed information about Seminar events. TL-7621 Seminar add/remove attendees selectors now use the user identity setting TL-7795 Improved the handling of signup requests when switching approval types Fixed user's status code from REQUESTED to BOOKED/WAITLISTED depending from session capacity when Seminar is changed from approval required to not TL-7914 Removed report builder filter HTML when no filters are displayed TL-7963 Added the ability to use custom fields within evidence On upgrade the description, evidencelink, institution and datecompleted database dp_plan_evidence fields will be deleted with their data being transferred into new evidence custom fields. TL-8023 Added a new option "All courses are optional" to program coursesets You can now define program course sets that don't require any of the courses to be complete. Note that the course set will automatically be marked as complete when it is reached and will potentially contribute towards the progress in the program. If you use this option with OR or THEN operators, you might find that portions of the program are automatically completed before the user is required to do anything. TL-8043 Improved capability handling on the Tag Management pages TL-8116 Extended the file input custom field to support multiple files TL-8118 Added the ability to import evidence custom field data in the completion Import tool Evidence Custom field data can be included in the import by adding columns to the CSV file named with the prefix 'customfield_' followed by the custom field shortname. Custom fields of type 'file' and 'multiselect' can not be uploaded. On install or upgrade, an evidence 'Date Completed' custom field is created. This field will be used to store the completiondate value from the CSV upload file. Also, on install or upgrade, an evidence 'Description' field is created. If this field is specified in the CSV upload file, the content from the CSV upload file will be used. If the content is empty, the default value set in the custom 'Description' field will be used. If the 'Description' field is not specified in the CSV upload file, an auto-generated description will be created, based on the course completion data and stored in the 'Description' field. TL-8168 Improved method of sending Seminar calendar events Previously the events were sent as ics file attachments, this practice is not recommended any more for security reasons. The calendar event is now embedded in the email. TL-8181 Improved alignment in the add/edit scheduled report form TL-8182 Re-implemented manual course completion archiving You can manually archive all completions for a course by going to Course administration > completions archive page, this has been restricted to courses that are not part of programs or certifications to avoid flow on effects. TL-8186 Added user first_name string as placeholder for new user welcome email TL-8272 Dashboards can now be cloned The ability to clone dashboards has been added to Totara 9.0 Cloning a dashboard creates a copy of the original dashboard, the blocks that have been added to it and any audience assignments that have been made. Cloning does not copy any user customisations to the dashboard. TL-8383 Activity completion reaggregated during scheduled task after unlock and delete Previously, when activity completion was unlocked and deleted, completions were recalculated immediately (based on grades already attained for example). However this led to performance problems given it was being recalculated for each user. Activity completions will now be set to incomplete (rather than deleted) immediately and will then be flagged for reaggregation. The reaggregation will happen on the following run of the \core\task\completion_regular_task which, by default, is run every minute. With completions being set to incomplete rather than deleted, this means the record remains (where it was previously just deleted). This has the advantage of retaining whether an activity was viewed by a user (if that was recorded). If an activity was manually completed, this information is still not retained. When the state is set to incomplete, the timecompleted field is also set to null (if it wasn't already). A new field, named 'reaggregate', has been added to the course_modules_completion table. This is an integer field for storing the UTC timestamp of when it is set. TL-8413 Enabled URL custom fields to display as working links on view Hierarchy details page TL-8459 Added landing page for Session Attendees to allow user to select Seminar event attendees and then view a report. TL-8465 Added 'Sign-up Period' column to Seminar Events and Sessions reports TL-8469 Added Seminar Event registration expired notification TL-8497 The language menu is now displayed on the login page if multiple languages are installed TL-8515 Reorganised the main menu navigation defaults and dashboard default blocks The main menu has been reorganised with new naming and simplified content. On upgrade the existing content will be left but the new menu can be selected by clicking on "reset menu to default configuration" in "Appearance > Main menu". The My Learning page has been removed. The contents has been moved into a "Legacy My Learning" Totara dashboard which is hidden by default. There is a new My Learning dashboard shown to all logged in users which has new default content. You can switch back to the old My learning by changing the visibility settings on "Appearance > Dashboards". The defaulthomepage options have been simplified. TL-8516 Added "Visible to all users" option to Dashboards which makes it accessible to every logged in user TL-8569 Applied correct style to "Join Waitlist" link for a Seminar event. TL-8578 Changed Seminar signup page to show overlapping signup warning TL-8636 Added pagination when reviewing attendees to be added or removed from a Seminar session TL-8637 Removed "Face-to-face" block This block's functionality is superseded by current Seminar Reportbuilder sources. TL-8647 Added option to specify behaviour of empty strings in HR Import When importing data from CSV files, there is a new option to determine the behaviour of empty strings. Option "Empty strings are ignored" means that any empty field in the import will be ignored and existing data will be unchanged, while option "Empty strings erase existing data" means that any empty field in the import will cause the existing data in that field to be erased. External database sources are unaffected by this change. Fields set to null will leave the existing data unchanged while empty strings will cause the existing data to be erased. TL-8652 Improved URL references in the template library Previously URL references in the template library were largely dependant on the developers setup. With this change, URLs are adjusted to suit whatever the setup is of the person viewing the template library (assuming the mustache template uses __WWWROOT__ and __THEME__ placeholders, as created when using \tool_templatelibrary\exampledata_formatter::to_json()) TL-8713 Improved diagnostic messages in scheduled report task execution TL-8724 Improved the user workflow when completing actions within a Seminar activity TL-8767 Rephrased help text for room scheduling conflict option TL-8779 Removed non-standard 'back to' navigation links from Learning Plans and Record of Learning TL-8786 Refactored Seminar asset and room "allow conflicts" data storage TL-8814 Made Seminar Room name a required field TL-8853 Improved a number of JavaScript modules to meet current coding standards The following JS modules have been improved to meet current coding standards: * Category manager * Acceptance testing JS * Reportbuilder graphical reporting TL-8863 Introduced a new API for adding custom role access restrictions in Reportbuilder Previously the role access restrictions were implemented in Report builder lib.php file. This meant that plugin developers could not add custom restrictions without modifying the report builder. All access restriction code was refactored to to use new rb\access class namespace and a new discovery mechanism was added to allow any plugin to define new access restriction classes for all other reports. See totara/reportbuilder/classes/rb/access/base.php file for more information. All pre-existing role access code customisations need to be updated to use this new API. TL-8871 Improved category expander JavaScript to meet current coding standards TL-8886 Moved Seminar Default minimum bookings setting to Event defaults TL-8892 Fixed sign-up time column option in Seminar events report builder TL-8895 Added Events report source and embedded report TL-8900 Added "Description of regular expression validation format" option to text input custom field TL-8915 Created a "booking options" section when adding Seminar event attendees TL-8940 Improved display of capacity for waitlisted users of waitlisted events TL-8950 Learning plan approval requests are now sent to all managers With the ability to have several managers by having multiple job assignments, approval requests and other learning plan notifications will now go to all of the learner's managers. All of the learner's managers will have the ability to approve, decline or delete a user's learning plan or its components. TL-8968 Converted course edit form customisations to proper hooks This change introduced three new hooks: # \core_course\hook\edit_form_definition_complete Gets called at the end of the course_edit_form definition. Through this watcher we can make any adjustments to the form definition we want, including adding Totara specific elements. # \core_course\hook\edit_form_save_changes Gets called after the form has been submitted and the initial saving has been done, before the user is redirected. Through this watcher we can save any custom element data we need to. # \core_course\hook\edit_form_display Gets called immediately before the form is displayed and is used to initialise any required JS. TL-9123 Added rel="noreferrer" to links being displayed by URL custom fields TL-9127 Added Grunt tasks for working with Less Less may be used to author plugin styles by providing a less directory containing a styles.less file e.g. local/myplugin/less/styles.less. Theme less files if found are compiled and a RTL equivalent generated. TL-9141 Added back-end validation methods to date/time custom fields. TL-9156 Removed the setting "Users can enter requests when signing up" from the Seminar module The setting "Users can enter requests when signing up" previously governed whether the ability to add text (a 'sign-up note') was available to the user when they signed up. Options like this are now based on whether there are event custom fields enabled. TL-9237 Added support for unique index on nullable column TL-9256 Improved directory removal to prevent race conditions from file and directory removal TL-9259 Theme RTL stylesheets are now served separately This update allows developers to provide a RTL equivalent for any theme stylesheet by providing a file with an -rtl suffix e.g. totara.css and totara-rtl.css. Where found the RTL theme sheet will be cached and served instead for RTL languages. TL-9267 Improved display of SCORM in popup windows TL-9274 Review and clean up of all old Totara update code All Totara upgrade code has been reviewed and tidied up to greatly reduce the likelihood of upgrade conflicts being encountered. The following changes have been made: * The totara_core upgrade is now executed immediately after core upgrade and install before any other plugins * There are only two Totara pre upgrade scripts - one executed once before migration from Moodle and other gets executed before every Totara upgrade * Totara blocks are using standard install.php scripts * All language packs are updated only once * The upgrade sections were renamed so that the first heading is "Totara", then "System", then "totara_core" and then the rest of plugins * Custom field capabilities were cleaned up * Migration of badge capabilities from old installations was improved * Added detection and automatic fixing of capabilities migrated from plugins to core * Removed unnecessary upgrade flags from totara_core and totara_cohort * Fixed totara_cohort upgrade.php to use $oldversion instead of previous release hack * Removed code duplication from totara_upgrade_mod_savepoint() * Moved totara_completionimport upgrade code to totara_completionimport * Fixed incorrect include in Totara menu upgrade TL-9322 Provided Less compilation --themedir option Allows a developer compiling Less via Grunt to pass an optional parameter 'themedir' to add a custom theme directory (as per $CFG->themedir) to the Less import search path. TL-9353 Increased the Seminars CALENDAR_MAX_NAME_LENGTH constant Previously seminar names were being truncated to 32 characters while creating calendar events, this has been changed to 256 characters. And can now be overridden in config.php using "define('CALENDAR_MAX_NAME_LENGTH', 32);" if you want to continue shortening the name. Note: this will not change any existing calendar events, but can be updated by editing the associated seminar. TL-9430 Added the ability to include partials dynamically into a Mustache template This allows a list of items to be displayed differently depending on the type of an item using partials within a Mustache template. TL-9514 Report builder scheduled report email message string 'scheduledreportmessage' now supports markdown format including html tags TL-9539 Embedded reports and sources may override exported report headers Developers may now customise headers in exported reports by adding new method get_custom_export_header() to the embedded report or source class. Non-null value overrides the standard report header in exported reports. TL-9676 Updated the programs extension requests to work with multiple job assignments When a user requests an extension, messages will now be sent to all of the user's managers, across all of their job assignments. Any of the managers can then go and approve or deny the extension request. TL-9727 Manager's job assignment is selected when assigning program via management hierarchy When assigning management hierarchies to a program, one or more of the manager's job assignments must be selected. Only staff managed under the selected job assignments will be assigned to the program via this method. Any custom code using assignment via management hierarchy must use the ASSIGNTYPE_MANAGERJA constant (which has a value of 6) rather than the ASSIGNTYPE_MANAGER constant (which as a value of 4). You will need to ensure that any calls to Totara functions using this assignment type use the manager's job assignment id in place of where the manager's user id was being used. Data in the prog_assignment table will updated during upgrade. TL-9765 Improved template handling in situations where the active theme no longer exists TL-9774 Use system fonts This change updates the Roots theme to use the appropriate sans-serif system font for the user's operating system. This ensures that the font is clear, readable and available, and that languages such as Hebrew and Arabic will be displayed correctly. TL-9791 Converted the main menu to use use renderers The main menu can now be overridden using Mustache templates improving the ease of customisation TL-9792 Visual improvements to the admin notification page to bring it inline with the new themes TL-9805 Changed the default theme to Basis TL-9809 Updated PHP doc for has_config() method TL-9817 Improved displaying of custom field dates TL-9839 Deprecated broad CSS in Appraisals TL-9866 Standard Totara Responsive now aligns form labels to the left TL-9944 URL type custom fields can now be imported through HR Import TL-9979 Fixed the constructor of the QuickForm custom renderer class for PHP7 TL-9995 Reportbuilder titles are now filtered for multilingual content TL-10019 Fixed visual display of SCORM reports TL-10032 Assignments to programs and certifications take into account all of a user's job assignments With the addition of the multiple job assignments functionality, assignments to a program or certification via position, organisation or management hierarchy will include users with the relevant settings (such as organisation) in any of their job assignments. When upgrading, be aware that any positions, organisations and manager assignments in a users second job assignment (formerly called secondary position assignment) may lead to users being assigned to additional programs and certifications. TL-10115 Improved the display of the miniature calendar used in the calendar block and calendar interface Calendar plugins can now specify an abbreviated calendar name within the structure::get_weekdays method. This should be the shortest possible abbreviation of the day, and is used predominantly within the calendar when displayed as a block in a small space. TL-10130 Re-approval for a previously declined Seminar event no longer results in a debugging message TL-10137 A warning about deleted fields has been added to user source configuration in HR Import HR Import will allow you to add job assignments via a User source. The deleted field contained in this source only applies to deleting users and should not be used for attempting to delete job assignment data. HR Import currently only allows job assignment records to be added or updated. It does not allow deletion of job assignment records. However that can be achieved via a user's profile. A warning regarding this has been added to the user source configuration in HR Import. However, anyone who may edit HR Import data sources should also be made aware of this information. TL-10182 Fixed a number of layout and appearance issues on the course management page. TL-10402 Removed calendar icons from frozen form elements TL-10429 'Process messages and alerts' task was split in to 'Dismiss alerts and tasks after 30 days' and 'Cleanup messaging related data' TL-10452 Minimum required browser version were increased It is recommended to use only browser that are supported by their manufacturer, minimum versions for Totara are: * recent Chrome * recent Firefox * Safari 9 * Internet Explorer 9 TL-10597 Improved program and certification progress calculation to exclude 'Optional' courses TL-10655 Hyphen and full-stop characters are now valid within the Reportbuilder scheduled report export path setting TL-10704 Ensured hierarchy AJAX is disabled when hierarchies have been disabled in Advanced features TL-10839 Reduced horizontal padding on Totara menu options within the Standard Totara Responsive theme There are some instances when there are a number of top level items in the Totara menu where the items will wrap onto a second level. By reducing the horizontal padding, the number of top level menu items can be increased before wrapping TL-10908 All current Bootstrap 2 themes have been deprecated With the arrival of the new Bootstrap 3 themes we have deprecated the current Bootstrap 2 themes. This includes the following themes: * Bootstrap Base * Standard Totara Responsive * Custom Totara Responsive * Kiwifruit Responsive Deprecation is the first step towards eventual removal. These themes will remain in core for one more major release and may then be moved out of Totara core. They will still be made available for those who want to use them, but will not longer receive regular updates. Accessibility improvements: TL-6292 Improved the HTML markup used when viewing Reportbuilder reports Previously Reportbuilder reports had all the controls inside an HTML table, and when there were no results, it was displayed as a table with one cell. This improvement moves the controls outside of the report table, and replaces the table when there are no results. Themes may have to have their CSS changed to accommodate this. TL-7740 The add/remove site administrators user interface no longer uses HTML tables for layout TL-7742 The lanugage pack importer user interface no longer uses HTML tables for layout TL-7837 The add/remove role user interface no longer uses HTML tables for layout TL-7840 The user interface for assigning user's to audiences no longer uses HTML tables for layout TL-7843 The user interface for managing group membership no longer uses HTML tables for layout TL-7861 The Seminar event allocation user interface no longer uses HTML tables for layout TL-7863 The Seminar add/remove attendees user interface no longer uses HTML tables for layout TL-7875 The user interface for managing groupings within a course no longer uses HTML tables for layout TL-7877 The Feedback activity add/remove user's user interface no longer uses HTML tables for layout TL-7880 The user selector used for enrolling users into a course no longer uses HTML tables for layout TL-7882 The user interface for managing webservice user's no longer uses HTML tables for layout TL-7885 The user interface for awarding badges no longer uses an HTML table for layout TL-7890 The user interface for managing Forum subscribers no longer uses HTML tables for layout TL-7924 The audience rules user interface no longer uses HTML tables for layout TL-7996 Removed duplicate HTML id's when adding linked competencies TL-8530 Removed tables for layout when viewing items from a learning plan TL-8598 Improved Aria accessibility experience within Seminar TL-8913 Improved accessibility when removing users from a feedback360 request TL-9164 Linked custom URL field text to their appropriate input elements TL-10241 Added alternative text to badge images TL-10259 Improved accessibility when using multi check filters in report builder reports TL-10262 Improved the HTML markup on the My Badges page TL-10263 Added a legend when searching your badges TL-10264 Linked reason input field in a learning plan to a label TL-10265 Added a legend to the report builder export functionality TL-10269 The completion status interface within the course completion status block no longer uses an HTML table for layout TL-10271 Improved accessibility around creating a calendar event TL-10272 Added a label to the move forum post dropdown TL-10277 Removed labels that were not required when displaying date fields TL-10279 Improved accessibility when adding groups of users to a goal TL-10283 Replaced unnecessary headings in badges. TL-10309 Added accessible label when viewing custom checkboxes on a users profile Technology conversions: TL-7947 Converted totara_program_completion/block.js to an AMD module The M.block_totara_program_completion JavaScript code has been converted from a statically loaded JS file to an AMD module. This allows the JS to be loaded dynamically with much greater ease and unlocks the benefits AMD brings such as minification and organisation. This change removes the block/totara_program_completion/block.js file. TL-7950 The JavaScript loaded by the report table block has been converted to an AMD module and is only loaded when required TL-7951 The JavaScript loaded by element library has been converted to an AMD module TL-7959 The instance filter as used in the report builder been converted to an AMD module TL-7961 The cache now JavaScript as used in the report builder been converted to an AMD module TL-7987 Converted block rendering to use templates TL-8009 Converted totara_print_active_users to templates TL-8011 Converted is_registered method to use templates TL-8012 Converted print_totara_search method to use templates TL-8013 Converted print_totara_notifications method to use templates TL-8014 Converted print_totara_progressbar method to use templates TL-8015 Converted comment_template method to use templates TL-8016 Converted print_toolbars method to use templates TL-8017 Converted print_totara_menu method to use templates TL-8018 Converted totara_print_errorlog_link method to use templates TL-8019 Converted display_course_progress_icon to use templates. TL-8031 Converted print_my_team_nav to use templates. TL-8034 Converted print_report_manager to use templates TL-8035 Converted print_scheduled_reports to use templates. TL-8036 Converted print_icons_list to use templates. TL-8084 Converted html_table and html_writer::table to use templates TL-8200 Converted the My Reports page to use templates TL-8304 Converted Manage types pages to Mustache templates TL-8305 Converted manage frameworks to Mustache templates TL-8330 Converted print_competency_view_evidence to use a Mustache template TL-8331 Converted competency_view_related to use a template TL-8332 Converted goal assignment to Mustache templates TL-8334 Converted assigned goals to use a Mustache template TL-8335 Converted mygoals_company_table to use Mustache templates TL-8337 Converted mygoals_personal_table to use a Mustache template TL-8448 Converted render_single_button function to use templates TL-9070 Converted filter_dialogs to an AMD module TL-9192 Converted competency JavaScript functionality to AMD modules API changes: TL-7473 Custom menu has been deprecated The custom menu that could be edited through Site Administration > Appearance > Themes > Theme settings has been deprecated. You may need to convert this into the functionality as provided by Site Administration > Appearance > Main menu TL-7817 Added support for AMD modules to the jQuery DataTables plugin In Totara 2.9, a small customisation was introduced to the jQuery DataTables library removing AMD support. This customisation has now been removed (and updated the library to 1.10.11 in the process) as we have updated our JavaScript to AMD modules. To convert JavaScript functionality to support jQuery DataTables, ensure your JavaScript is written as an AMD module and require both 'jquery' and 'totara_core/datatables' in your module. TL-7981 Removed unused preferred_width function from blocks TL-7982 Removed unnecessary calls to local_js Previously (in Totara 2.7 and below) making a call to local_js would load jQuery into the page. As of Totara 2.9, jQuery is loaded by default on every page so this call is no longer needed if no jQuery plugins are required. This fix removed all requests to local_js with no parameters. TL-8004 Separated Totara specific CSS from bootstrap bases theme TL-8027 Function function_or_method_exists() was deprecated TL-8055 Removed references to some deprecated functions TL-8057 Added element id to static and hard-frozen form field containers This allows them to be addressed in JavaScript and by CSS, the same as non-static and non-hard-frozen field containers. TL-8071 Moved Hierarchy JavaScript from inline to an AMD module Previously there was a large amount of JavaScript that was written in the HTML (instead of being in an external JavaScript file) in Hierarchies. These have been replaced with 2 AMD modules TL-8188 Totara LMS 9 now supports PHP7 Note that support for PHP7 has not been backported to the stable release. Any stable releases still have a maximum version of PHP5.6. TL-8369 * html_writer should implement templatable TL-8405 * JQuery updated to 2.2.0 TL-8537 Fixed a redirection issue when signing up to a Seminar event TL-8562 Created export_for_template method on single_button class TL-8958 Added new API for lookup of classes in namespace TL-8998 Imported latest SVGGraph library TL-9101 Deprecated the totara_message_accept_reject_action function This function is not used within core Totara code and has been deprecated. It will be removed in Totara 10.0 TL-9826 Created new 'I switch to "tab" tab' behat step API change details: TL-6292 * totara_table::print_extended_headers() has been removed TL-6874 * New \core\output\flex_icon class to allow use of font icons. * New pluginname/pix/flex_icons.php file to define and alias icons. TL-6879 * admin/tool/totara_sync/lib.php tool_totara_sync_run first argument has been removed TL-7060 * CSS class "stagelist" has been renamed "appraisal-stagelist" * CSS class "stagetitle" has been renamed "appraisal-stagetitle" * CSS class "stageinfo" has been renamed "appraisal-stageinfo" * CSS class "stageactions" has been renamed "appraisal-stageactions" TL-7452 * Removed table facetoface_notice * Removed table facetoface_notice_data * Removed unused function facetoface_get_manageremailformat * Removed unused function facetoface_check_manageremail * Removed unused class mod_facetoface_sitenotice_form TL-7453 * rb_param_option::$type is deprecated and will be removed in future versions * facetoface_print_session function added sixth argument $class TL-7455 * rb_source_facetoface_summary::rb_display_link_f2f method is removed * rb_source_facetoface_summary::rb_display_link_f2f_session is removed * rb_source_facetoface_sessions::rb_display_facetoface_status method is removed * rb_source_facetoface_sessions::rb_display_link_f2f_session method is removed TL-7458 * facetoface_sessions.registrationtimestart added a new database field registrationtimestart to facetoface_sessions * facetoface_sessions.registrationtimefinish added a new database field registrationtimefinish to facetoface_sessions TL-7461 * Capability 'mod/facetoface:editsessions' was renamed to 'mod/facetoface:editevents' * Capability 'mod/facetoface:overbook' was renamed to 'mod/facetoface:signupwaitlist' TL-7463 * rb_base_source::add_custom_fields_for added seventh argument $useshortname * $session->datetimeknown property of session objects fetched with facetoface_get_session() is removed. $session->cntdates should be used instead * mod_facetoface_session_form class is removed * mod_facetoface_renderer::print_session_list_table added sixth and seventh optional arguments $currenturl and $minimal * facetoface_save_session_room function is removed * facetoface_get_session_room function is replaced with facetoface_get_session_rooms * facetoface_room_html added second argument $backurl * facetoface_room_info_field added a new database table * facetoface_room_info_data added a new database table * facetoface_room_info_data_param added a new database table * facetoface_room.address removed a database field address from facetoface_room * facetoface_room.building removed a database field building from facetoface_room * facetoface_room.usercreated added a new database field usercreated to facetoface_room * facetoface_room.usermodified added a new database field usermodified to facetoface_room * facetoface_room.hidden added a new database field hidden to facetoface_room * facetoface_sessions_dates.roomid added a new database roomid hidden to facetoface_sessions_dates * facetoface_sessions.roomid removed a database field roomid from facetoface_sessions * facetoface_sessions.datetimeknown removed a database field datetimeknown from facetoface_sessions * facetoface_asset added a new database table * facetoface_asset_info_field added a new database table * facetoface_asset_info_data added a new database table * facetoface_asset_info_data_param added a new database table * facetoface_asset_dates added a new database table * mod_facetoface\rb\display\link_f2f_session class removed * mod_facetoface\rb\display\link_f2f class removed * mod_facetoface\rb\display\f2f_status class removed TL-7465 * facetoface.approvaltype added a new database field approvaltype to facetoface * facetoface.approvalrole added a new database field approvalrole to facetoface * facetoface.approvalterms added a new database field approvalterms to facetoface * facetoface.approvaladmins added a new database field approvaladmins to facetoface * facetoface_signups.managerid added a new database field managerid to facetoface_signups * MDL_F2F_CONDITION_BOOKING_REQUEST this global constant has been replaced by MDL_F2F_CONDITION_BOOKING_REQUEST_MANAGER * facetoface_message_substitutions added a 7th argument $approvalrole * facetoface_approval_required argument two has been removed and is no longer used * facetoface_user_signup there have been several changes to the function signature. Any uses in custom code should be reviewed to ensure they are still compatible TL-7473 * class custom_menu_item has been deprecated and will be removed in a future version * class custom_menu has been deprecated and will be removed in a future version * core_renderer::custom_menu() has been deprecated and will be removed in a future version * core_renderer::render_custom_menu() has been deprecated and will be removed in a future version * core_renderer::render_custom_menu_item() has been deprecated and will be removed in a future version TL-7944 * facetoface_sessions.sendcapacityemail added a new database field sendcapacityemail to facetoface_sessions * facetoface_sessions.mincapacity field must be not null with default value 0 TL-7963 * dp_plan_evidence.description removed the database field description in dp_plan_evidence * dp_plan_evidence.evidencelink removed the database field evidencelink in dp_plan_evidence * dp_plan_evidence.institution removed the database field institution in dp_plan_evidence * dp_plan_evidence.datecompleted removed the database field datecompleted in dp_plan_evidence TL-7981 * block_totara_alerts::preferred_width() has been removed. * block_totara_quicklinks::preferred_width() has been removed * block_totara_stats::preferred_width() has been removed * block_totara_tasks::preferred_width() has been removed TL-7982 * local_js() with no arguments now shows a debugging message. TL-8009 * totara_core_renderer::totara_print_active_users has been deprecated and will be removed in a future version TL-8012 * totara_core_renderer::print_totara_search has been deprecated and will be removed in a future version TL-8013 * totara_core_renderer::print_totara_notifications has been deprecated and will be removed in a future version TL-8014 * totara_core_renderer::print_totara_progressbar has been deprecated and will be removed in a future version TL-8016 * totara_core_renderer::print_toolbars has been deprecated and will be removed in a future version TL-8017 * totara_core_renderer::print_totara_menu has been deprecated and will be removed in a future version TL-8018 * totara_core_renderer::totara_print_errorlog_link has been deprecated and will be removed in a future version TL-8019 * totara_core_renderer::display_course_progress_icon has been deprecated and will be removed in a future version TL-8023 * Global constant COMPLETIONTYPE_OPTIONAL added for setting program course sets as optional TL-8031 * totara_core_renderer::print_my_team_nav has been deprecated and will be removed in a future version TL-8034 * totara_core_renderer::print_report_manager has been deprecated and will be removed in a future release TL-8035 * totara_core_renderer::print_scheduled_reports has been deprecated and will be removed in a future release TL-8036 * totara_core_renderer::print_icons_list has been deprecated and will be removed in a future release TL-8084 * html_writer::table has been deprecated and will be removed in a future release * html_table::$tablealign has been deprecated and will be removed in a future release * html_table::$captionhide has been deprecated and will be removed in a future release TL-8118 * totara_compl_import_course.customfields added a new database field customfields to totara_compl_import_course * totara_compl_import_course.evidenceid added a new database field evidenceid to totara_compl_import_course * totara_compl_import_cert.customfields added a new database field customfields to totara_compl_import_cert * totara_compl_import_cert.evidenceid added a new database field evidenceid to totara_compl_import_cert * totara/completionimport/lib.php check_fields_exist added a third argument $customfields * totara/completionimport/lib.php import_csv added a third argument $customfields TL-8187 * facetoface_sessions.cancelledstatus added a new database field cancelledstatus to facetoface_sessions * facetoface_sessioncancel_info_data added a new database table * facetoface_sessioncancel_info_data_param added a new database table * facetoface_sessioncancel_info_field added a new database table TL-8330 * totara_hierarchy_renderer::print_competency_view_evidence has been deprecated and will be removed in a future release TL-8331 * totara_hierarchy_renderer::print_competency_view_related has been deprecated and will be removed in a future release TL-8332 * totara_hierarchy_renderer::print_goal_view_assignments has been deprecated and will be removed in a future release TL-8334 * totara_hierarchy_renderer::print_assigned_goals has been deprecated and will be removed in a future version TL-8383 * course_modules_completion.reaggregate added a new database field reaggregate to course_modules_completion TL-8513 * a new user_learning API has been introduced, see changelog description for details * totara/program/lib.php prog_get_all_programs added a ninth argument $onlycertifications TL-8537 * session_options_signup_link has a new fourth argument, true by default, if true the user is redirected to the view all sessions page after completing a signup or cancellation action. * print_session_list_table has a new eighth argument, true by default, if true the user is redirected to the view all sessions page after completing a signup or cancellation action. TL-8636 * addconfirm_form::get_user_list($userlist, $offset, $limit) added new function * removeconfirm_form::get_user_list($userlist, $offset, $limit) added new function TL-8779 * dp_base_component::display_back_to_index_link deprecated. TL-8786 * facetoface_asset renamed database field "type" to "allowconflicts" and changed data type from char(10) to int(1) * facetoface_room renamed database field "type" to "allowconflicts" and changed data type from char(10) to int(1) TL-8892 * rb_source_facetoface_sessions::define_columnoptions time of signup value is changed TL-8895 * rb_facetoface_base_source::add_facetoface_common_to_columns added a second argument $joinsessions * rb_facetoface_base_source::add_session_status_to_joinlist second argument $sessionidfield was split into two arguments $join and $field TL-8945 * After upgrade, Primary position assignment records will be the users' first job assignment (sortorder = 1) and Secondary records will be the users' second job assignment (sortorder = 2). Aspirational records are moved to the new gap_aspirational table. * Strings relating to position assignments were deprecated from totara_hierarchy and totara_core and added into the totara_job language file. * Moved config variables allowsignupposition, allowsignuporganisation and allowsignupmanager from totara_hierarchy to the totara_job plugin. * The position_updated and position_viewed events have been changed to job_assignment_updated and job_assignment_viewed. The create_from_instance functions now take a job_assignment object, the object id is available to event observers in $data['objectid'], the userid is available in $data['relateduserid']. * Several behat data generators and steps relating to old position assignments have been removed. "the following job assignments exist" should now be used to define manager, position, organisation, temp manager, etc. * The create_primary_position phpunit test generator was renamed to create_job_assignments. * The positionsenabled totara_hierarchy setting is deprecated and no longer used. * totara_is_manager has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, use job_assignment::is_managing. * totara_get_staff has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, use job_assignment::get_staff() or job_assignment::get_staff_userids(), depending on the situation. * totara_get_manager has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Code using this function should be redesigned to either use job_assignment::get_all() with the $managerreqd parameter set to true, or use job_assignment::get_all_manager_userids(), depending on the situation. It is also possible to use job_assignment::get_first(), but this is discouraged, because job assignment order can easily be changed, so this is effectively an arbitrary selection. * totara_get_most_primary_manager has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, use job_assignment::get_first(), or, preferably, redesign your code to work with multiple managers and call job_assignment::get_all() with the $managerreqd parameter set to true, or job_assignment::get_all_manager_userids(). * totara_update_temporary_manager has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, use job_assignment::update_temporary_managers(). * totara_unassign_temporary_manager has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. This functionality is now part of the job_assignment class - load the job_assignment object and call update() with an empty tempmanagerjaid. * totara_get_teamleader has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, load the job_assignment object and access the teamleaderid property. * totara_get_appraiser has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, load the job_assignment object and access the appraiserid property. * totara_update_temporary_managers has been deprecated but maintains a level of backwards compatibility and will be removed in a future version * build_nojs_positionpicker has been deprecated but maintains a level of backwards compatibility and will be removed in a future version * development_plan::get_manager has been deprecated but maintains a level of backwards compatibility and will be removed in a future version * development_plan::send_alert has been deprecated but maintains a level of backwards compatibility and will be removed in a future version * rb_source_facetoface_sessions::rb_filter_position_types_list has been deprecated but maintains a level of backwards compatibility and will be removed in a future version * rb_source_facetoface_sessions::rb_display_position_type has been deprecated but maintains a level of backwards compatibility and will be removed in a future version * appraisal::get_live_role_assignments has been deprecated but maintains a level of backwards compatibility and will be removed in a future version * The file totara/hierarchy/prefix/position/assign/manager.php has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead use totara/job/dialog/assign_manager_html.php. * The file totara/hierarchy/prefix/position/assign/tempmanager.php has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead use totara/job/dialog/assign_tempmanager_html.php. * pos_can_edit_position_assignment has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, use totara_job_can_edit_job_assignments. * pos_get_current_position_data has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, load the relevant job_assignment object and access the positionid and organisationid properties. * pos_get_most_primary_position_assignment has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, it is possible to use job_assignment::get_first(), but this is discouraged, because job assignment order can easily be changed, so this is effectively an arbitrary selection. * get_position_assignments has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, use job_assignment::get_all(). * totara_core\task\update_temporary_managers_task has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. Instead, use totara_job\task\update_temporary_managers_task. * user/positions.php has been deprecated but maintains a level of backwards compatibility and will be removed in a future version. This functionality is now provided in totara/job/jobassignment.php. * assign_user_position has been deprecated and throws an exception if called. This functionality is now being performed when a job_assignment is created or updated. * appraisal::get_missingrole_users has been deprecated and throws an exception if called * appraisal::get_changedrole_users has been deprecated and throws an exception if called * position::position_label has been deprecated and throws an exception if called. Instead, use position::job_position_label which returns a string formatted " ()". * The position_assignment class no longer contains any methods and an exception will be thrown from its constructor if instantiated. Instead, job assignments should be managed through the job_assignment class interfaces. * prog_store_position_assignment has been deprecated and throws an exception if called. Now, when a user's position changes in one of their job assignments, the positionassignmentdate is automatically updated. * appraisal::validate_roles argument one has been deprecated and is no longer used. Behaviour is now to compare required appraisal roles against corresponding roles in appraisees' job assignments. * totara_appraisal_renderer::display_appraisal_header argument three has been deprecated and is no longer used. Role assignments are now loaded within this method. * profile_signup_manager argument three has been changed - this now must be a manager's job assignment id, rather than a manager id. * pos_add_node_positions_links has been removed. This functionality is now part of totara_job_myprofile_navigation. * totara_hierarchy_myprofile_navigation has been removed. Instead, use totara_job_myprofile_navigation. * totara_program_observer::position_updated has been removed. Instead use job_assignment_updated, which is called when the new job_assignment_updated event is triggered. * mod_facetoface_signup_form::add_position_selection_formelem has been removed * The JavaScript function rb_load_hierarchy_multi_filters has been removed * totara/core/js/position.user.js has been removed * totara/core/classes/event/position_updated.php has been removed, including the the class totara_core\event\position_updated * totara/core/classes/event/position_viewed.php has been removed, including the the class totara_core\event\position_viewed * mod/facetoface/classes/event/attendee_position_updated.php has been removed, including the class mod_facetoface\event\attendee_position_updated * mod/facetoface/attendee_position_form.php has been removed, including the class attendee_position_form * totara/hierarchy/prefix/position/forms.php has been removed, including the class position_settings_form * totara/hierarchy/prefix/position/settings.php has been removed, including the function update_pos_settings * user/positions_form.php has been removed, including the class user_position_assignment_form * The position_assignment table was renamed to job_assignment. This maintains record ids, so if you have a table which referenced position_assignment.id, e.g. "posassignid", then that field does not need to be updated (although you probably want to change the field name and fix the foreign key specification). Several other changes were made to this table, including making idnumber user-unique and cannot be null (and it is editable in the user interface), added fields for temporary manager, added a field for position assignment date (indicates when position was last changed), timevalidfrom and timevalidto renamed to startdate and enddate, managerid and managerpath changed to managerjaid and managerjapath (note that these new fields store job assignment data, not manager ids), and fullname can now be empty (if accessed through the job_assignment class, a default string containing the user-unique idnumber will be returned). * The temporary_manager table has been removed. Temporary manager data was moved into the job_assignment table. * The prog_pos_assignment table has been removed. The data in this table, which indicates on which date a user was last assigned to their current position, has been moved into the job_assignment table, in the positionassignmentdate field. * Global constants POSITION_TYPE_PRIMARY, POSITION_TYPE_SECONDARY and POSITION_TYPE_ASPIRATIONAL have all been deprecated, as have the global variables $POSITION_TYPES and $POSITION_CODES. * The global constant ASSIGNTYPE_MANAGER has been deprecated. This was used for program assignments via manager hierarchy. Custom code using this assignment type will need to be updated to use the managers' job assignments. The new constant used for those assignments is ASSIGNTYPE_MANAGERJA. TL-8949 * Any custom report sources using the old position functions will need to be updated to use the corresponding job assignment function, also any custom columns or filters using the position assignment joins or fields will need to be updated. The add_basic_user_content_options() function is an easy way to add the "show by user", "show by users current position", and "show by users current organisation" content options to a report, just call it inside the sources define_contentoptions() function (see totara/reportbuilder/rb_sources/rb_source_user.php for an example) * Function add_basic_user_content_options() added to the base source * Function add_job_assignment_tables_to_joinlist() added to the base source * Function add_job_assignments_fields_to_columns() added to the base source * Function add_job_assignments_fields_to_filters() added to the base source * Function add_position_tables_to_joinlist() has been deprecated, please use add_job_assignment_tables_to_joinlist() instead * Function add_position_fields_to_columns() has been deprecated, please use add_job_assignment_fields_to_columns() instead * Function add_position_fields_to_filters() has been deprecated, please use add_job_assignment_fields_to_filters() instead TL-9141 * customfield_datetime::edit_validate_field new method to override parent * customfield_datetime::edit_save_data new method to override parent TL-9156 * facetoface.allowsignupnotedefault removed unused database field allowsignupnotedefault from facetoface * facetoface_sessions.availablesignupnote removed unused database field availablesignupnote from facetoface_sessions TL-9677 * totara_appraisal_renderer::display_appraisal_header: argument 3 has been deprecated * appraisal::validate_roles: argument has been deprecated * appraisal::get_missingrole_users: has been deprecated and will be removed in a future version * appraisal::get_changedrole_users: has been deprecated and will be removed in a future version * appraisal::get_live_role_assignments: has been deprecated and will be removed in a future version * mdl_appraisal_userassignment.jobassignmentid: new database field to track a linked job assignment to an appraisal * mdl_appraisal_userassignment.jobassignmentlastmodified: new database field to track if a linked job assignment has be updated TL-10597 * prog_content::get_courseset_groups added a second argument $trimoptional Database changes: TL-6243 Added the ability to automatically create learning plans when new members are added to an audience TL-7452 Improved Seminar navigation TL-7458 Sign-up periods added to Seminar events TL-7459 Added links to further information on each room when signing up TL-7463 Added session assets and room improvements TL-7465 Added new approval options to Seminars TL-7944 Added seminar minimum bookings status and notification TL-7963 Added the ability to use custom fields within evidence TL-8118 Added the ability to import evidence custom field data in the completion Import tool TL-8187 Seminar events can now be cancelled TL-8383 Activity completion reaggregated during scheduled task after unlock and delete TL-8786 Refactored Seminar asset and room "allow conflicts" data storage TL-9156 Removed the setting "Users can enter requests when signing up" from the Seminar module Deleted files: TL-7452 * mod/facetoface/sitenotice.php * mod/facetoface/sitenotice_form.php * mod/facetoface/sitenotices.php TL-7453 * mod/facetoface/bulkadd_attendees.php * mod/facetoface/editattendees.html * mod/facetoface/editattendees.php TL-7459 * mod/facetoface/amd/build/addpdroom.min.js * mod/facetoface/amd/src/addpdroom.js * mod/facetoface/classes/rb/display/link_f2f_session.php * mod/facetoface/room/ajax/room_save.php TL-7465 * mod/facetoface/tests/behat/managerapproval_facetoface.feature * mod/facetoface/tests/behat/selfapproval_facetoface.feature TL-7817 * totara/core/js/lib/build/jquery.dataTables.min.js TL-7947 * blocks/totara_program_completion/block.js TL-7950 * blocks/totara_report_table/module.js TL-7951 * elementlibrary/js/competency.item.js TL-7959 * totara/reportbuilder/js/instantfilter.js TL-7961 * totara/reportbuilder/js/cachenow.js TL-7963 * totara/plan/tests/behat/evidence_link.feature TL-8188 * totara/core/lib/phpseclib/System/SSH_Agent.php TL-8405 * lib/jquery/jquery-1.11.3.min.js * lib/jquery/jquery-2.1.4.min.js * lib/jquery/jquery-migrate-1.2.1.min.js TL-8515 * totara/core/classes/totara/menu/mylearning.php * totara/dashboard/tests/behat/dashboard_disable.feature * totara/dashboard/tests/behat/dashboard_home.feature TL-8637 * blocks/facetoface/ChangeLog.txt * blocks/facetoface/README.txt * blocks/facetoface/block_facetoface.php * blocks/facetoface/bookinghistory.php * blocks/facetoface/calendar.php * blocks/facetoface/db/access.php * blocks/facetoface/export_form.php * blocks/facetoface/index.php * blocks/facetoface/lang/en/block_facetoface.php * blocks/facetoface/lib.php * blocks/facetoface/mysessions.php * blocks/facetoface/mysignups.php * blocks/facetoface/renderer.php * blocks/facetoface/sessionfilter_form.php * blocks/facetoface/styles.css * blocks/facetoface/tabs.php * blocks/facetoface/tests/behat/mysessions.feature * blocks/facetoface/version.php TL-9070 * totara/reportbuilder/filter_dialogs.js TL-9192 * totara/core/js/competency.add.js * totara/core/js/competency.item.js * totara/core/js/competency.template.js TL-9274 * totara/core/db/pre_any_upgrade.php TL-9493 * theme/base/layout/embedded.php * theme/base/layout/frontpage.php * theme/base/layout/report.php * theme/base/pix/fp/add_file.png * theme/base/pix/fp/add_file.svg * theme/base/pix/fp/alias.png * theme/base/pix/fp/alias_sm.png * theme/base/pix/fp/check.png * theme/base/pix/fp/create_folder.png * theme/base/pix/fp/create_folder.svg * theme/base/pix/fp/cross.png * theme/base/pix/fp/dnd_arrow.gif * theme/base/pix/fp/download_all.png * theme/base/pix/fp/download_all.svg * theme/base/pix/fp/help.png * theme/base/pix/fp/help.svg * theme/base/pix/fp/link.png * theme/base/pix/fp/link_sm.png * theme/base/pix/fp/logout.png * theme/base/pix/fp/logout.svg * theme/base/pix/fp/path_folder.png * theme/base/pix/fp/path_folder_rtl.png * theme/base/pix/fp/refresh.png * theme/base/pix/fp/refresh.svg * theme/base/pix/fp/search.png * theme/base/pix/fp/search.svg * theme/base/pix/fp/setting.png * theme/base/pix/fp/setting.svg * theme/base/pix/fp/view_icon_active.png * theme/base/pix/fp/view_icon_active.svg * theme/base/pix/fp/view_list_active.png * theme/base/pix/fp/view_list_active.svg * theme/base/pix/fp/view_tree_active.png * theme/base/pix/fp/view_tree_active.svg * theme/base/pix/horizontal-menu-submenu-indicator.png * theme/base/pix/progress.gif * theme/base/pix/sprite.png * theme/base/pix/vertical-menu-submenu-indicator.png * theme/base/pix/yui2-treeview-sprite-rtl.gif * theme/base/style/admin.css * theme/base/style/autocomplete.css * theme/base/style/blocks.css * theme/base/style/calendar.css * theme/base/style/core.css * theme/base/style/course.css * theme/base/style/dock.css * theme/base/style/editor.css * theme/base/style/filemanager.css * theme/base/style/grade.css * theme/base/style/group.css * theme/base/style/message.css * theme/base/style/pagelayout.css * theme/base/style/question.css * theme/base/style/tabs.css * theme/base/style/templates.css * theme/base/style/totara.css * theme/base/style/totara_jquery_datatables.css * theme/base/style/totara_jquery_treeview.css * theme/base/style/totara_jquery_ui_dialog.css * theme/base/style/user.css * theme/base/templates/core/notification_message.mustache * theme/base/templates/core/notification_problem.mustache * theme/base/templates/core/notification_redirect.mustache * theme/base/templates/core/notification_success.mustache * theme/bootstrapbase/style/font-totara.css Contributions: * Aldo Paradiso at MultaMedio - TL-5143 * Anthony McLaughlin at Learning Pool - TL-7944 * Chris Wharton at Catalyst EU - TL-6243 * Eugene Venter at Catalyst NZ - TL-8023 * Keelin Devenney at Learning Pool - TL-7458, TL-8187 * Learning Pool - TL-7466 * Lee Campbell at Learning Pool - TL-7455 * Ryan Adams at Learning Pool - TL-7456, TL-7459
Release 2.9.12 (19th October 2016): Important: TL-9223 Added new config.php setting $CFG->completionexcludefailures to keep previous course completion behaviour of excluding failed activities Prior to Totara 2.9 if you configured a course to require activity completion, and that activity had a passing grade defined in the gradebook, then the course would only consider the activity complete if the user had also achieved a passing grade despite the activity being marked complete for the user. Totara 2.9.0 introduced a new course completion behaviour where activity completions marked as complete but failed are now considered complete when aggregating course completion. This lead to an unexpected change in behaviour for some sites when upgrading to Totara 2.9. This improvement adds a config.php setting $CFG->completionexcludefailures that can be used to revert this change of behaviour. Please note that in order to prevent completion changes this setting must be added to config.php before upgrade from Totara 2.7 or right after a new installation. This setting should not be changed if you have already upgraded your site to Totara 2.9.0 through to 2.9.11, because there are new settings in activities that can be used to get similar behaviour and the already changed completions cannot be reverted. Security issues: TL-10339 Prevented dialog item information from being accessible to any logged in users A logged in user was able to access some of the AJAX scripts used by program assignment dialogs and view information such as user names and lists of positions. In some cases they would need to enter extra information into the URL such as user ids to see this information. Information such as position names will have only been viewable if the user had the necessary permissions. However, these AJAX scripts are now only accessible if the user has permission to edit a given program. A program id parameter is now required by these AJAX scripts as part of this change. This change also involves ids of users or groups (such as audiences) that are assigned to a program being sent within the parameters of a POST request rather than in the url of a GET request. TL-10481 Extra capability checks added to ajax scripts Capability checks were added to the AJAX script used for the goal selection dialog as well as a Report Builder filter script. Improvements: TL-7645 Added warning notices about scheduled report content It is important to note that when a user authors a scheduled report, the report content depends on what that specific user is allowed to see. The content does not depend on what the report's recipients are allowed to see. Therefore with scheduled reports, there is a chance that the report could be empty (because the author did not have the correct viewing rights) or that it contains data that others are not supposed to see. This has always been the behavior in Totara and this issue implementation just adds some clarification text to the scheduled report definition page and the recipient email to highlight this. TL-7846 Added a new option to apply dynamic audience membership changes in the background A new setting has been added which, when enabled, shifts processing of audience membership and enrolled learning changes to cron when the user approves changes to dynamic audience rules. Prior to this setting, all changes were applied immediately when a user clicked the button. If the change affected many users, it could leave the user waiting for the page to load for several minutes or longer. On sites in which audience memberships can grow into the thousands, and which also use the required learning functionality, we recommend this setting be enabled, as it will provide their users with a better experience. TL-10312 Hid certification due date and renewal status within Report Builder reports when they are not applicable TL-10342 Show both certification paths to non-assigned users TL-10453 Added basic support for built-in PHP Development server PHP's built-in web server can be now used by developers for basic testing purposes. It is not intended for use on any kind of production server or in public networks. The major limitation is that the server is single threaded, which is incompatible with some advanced functionality. Any code that accesses the server via CURL may end up in dead-lock. TL-10496 Updated npm modules used from Grunt to produce consistent CSS and JS in stable branches, backported Grunt to 2.5 and 2.6 branches TL-10717 HR Import unit tests no longer require special configuration for external databases TL-10720 Added text clarifying behaviour of "Force password change for new users" option for generated passwords in HR import In HR Import if a password is not specified for a new user then they are given a generated password. The user will be forced to change this because of security concerns around emailing passwords. The new text clarifies this behaviour so an admin will know this when the option is being changed. TL-10740 Added a cautionary disclaimer to the DB migration admin tool interface Bug fixes: TL-8212 Backported various fixes for form dependencies TL-8817 Disabled "sort by" for concatenated columns in the Report Builder TL-9519 Corrected ordering when sorting by statistics columns in user report source The statistics columns, which showed data such as courses completed for a user, were sorting zero counts last when the sort was ascending and vice versa. This only occurred in sites using PostgreSQL and has now been corrected. TL-9719 Sorting on Required learning Programs and Certifications columns fixed TL-9763 Navigation and Administration blocks position are no longer reset when users customise their dashboards TL-10017 Prevented adding Totara Connect client to the same server TL-10066 Resetting course completion will now unlock assignment submissions TL-10073 Made selected and unselect links hide as expected on multiple choice questions TL-10088 Fixed pagination within the Totara Report block TL-10178 Fixed the validation of completion dates in course completion uploads TL-10326 Fixed error when exporting a report where sorted columns had been removed TL-10334 Fixed completion based on other course not always triggering Previously, it was possible that a completion criteria based on another course could be left incomplete, even when the dependent course was complete, when using course completion upload. Now, \core\task\completion_cron_task checks if any records need to be marked complete. TL-10603 Made the automatic addition of goals to an appraisal question work for users that can view but not answer the question TL-10631 Prevented the add plan button showing when there are no Learning Plan templates with create permissions TL-10656 Fixed course access restrictions in IE8 TL-10675 Removed Autosave from fixed text feedback360 and appraisal questions TL-10689 Fixed visibility of certification/program membership source in embedded report list TL-10692 Fixed automatic language detection in Safari browser TL-10716 Fixed a regression with coursename columns in the Program and Certification overview reports TL-10718 Fixed SOAP and XML-RPC protocol failure of web services TL-10733 Allowed timestamps to be imported into date and datetime profile fields via HR Import TL-10735 Fixed regression introduced by HR import circular reference tests TL-10783 Ensured prog table is always used in program completion history reports When a user viewed their program completion history, in some cases the necessary database tables were not being included when generating the data. This would cause an error for some users. TL-10786 Fixed WebDAV response encoding check inconsistencies TL-10803 Fixed spelling in Totara timezone fix tool TL-10804 Fixed upgrade problem with report builder schedules for deleted users TL-10856 Fixed the tinyMCE format selector in appraisals TL-10857 Prevented non-assigned users from seeing launch button in programs TL-10860 Ensured user profile field defaults are shown on the signup page TL-10869 Fixed password reset functionality when using loginhttps setting TL-10924 Fixed profile field warnings in Reportbuilder graphs Contributions: * Eugene Venter at Catalyst NZ - TL-10735
Release 2.7.20 (19th October 2016): Security issues: TL-10339 Prevented dialog item information from being accessible to any logged in users A logged in user was able to access some of the AJAX scripts used by program assignment dialogs and view information such as user names and lists of positions. In some cases they would need to enter extra information into the URL such as user ids to see this information. Information such as position names will have only been viewable if the user had the necessary permissions. However, these AJAX scripts are now only accessible if the user has permission to edit a given program. A program id parameter is now required by these AJAX scripts as part of this change. This change also involves ids of users or groups (such as audiences) that are assigned to a program being sent within the parameters of a POST request rather than in the url of a GET request. TL-10481 Extra capability checks added to ajax scripts Capability checks were added to the AJAX script used for the goal selection dialog as well as a Report Builder filter script. Improvements: TL-7645 Added warning notices about scheduled report content It is important to note that when a user authors a scheduled report, the report content depends on what that specific user is allowed to see. The content does not depend on what the report's recipients are allowed to see. Therefore with scheduled reports, there is a chance that the report could be empty (because the author did not have the correct viewing rights) or that it contains data that others are not supposed to see. This has always been the behavior in Totara and this issue implementation just adds some clarification text to the scheduled report definition page and the recipient email to highlight this. TL-7846 Added a new option to apply dynamic audience membership changes in the background A new setting has been added which, when enabled, shifts processing of audience membership and enrolled learning changes to cron when the user approves changes to dynamic audience rules. Prior to this setting, all changes were applied immediately when a user clicked the button. If the change affected many users, it could leave the user waiting for the page to load for several minutes or longer. On sites in which audience memberships can grow into the thousands, and which also use the required learning functionality, we recommend this setting be enabled, as it will provide their users with a better experience. TL-10312 Hid certification due date and renewal status within Report Builder reports when they are not applicable TL-10453 Added basic support for built-in PHP Development server PHP's built-in web server can be now used by developers for basic testing purposes. It is not intended for use on any kind of production server or in public networks. The major limitation is that the server is single threaded, which is incompatible with some advanced functionality. Any code that accesses the server via CURL may end up in dead-lock. TL-10496 Updated npm modules used from Grunt to produce consistent CSS and JS in stable branches, backported Grunt to 2.5 and 2.6 branches TL-10717 HR Import unit tests no longer require special configuration for external databases TL-10740 Added a cautionary disclaimer to the DB migration admin tool interface Bug fixes: TL-8212 Backported various fixes for form dependencies TL-9519 Corrected ordering when sorting by statistics columns in user report source The statistics columns, which showed data such as courses completed for a user, were sorting zero counts last when the sort was ascending and vice versa. This only occurred in sites using PostgreSQL and has now been corrected. TL-9719 Sorting on Required learning Programs and Certifications columns fixed TL-9763 Navigation and Administration blocks position are no longer reset when users customise their dashboards TL-10017 Prevented adding Totara Connect client to the same server TL-10178 Fixed the validation of completion dates in course completion uploads TL-10603 Made the automatic addition of goals to an appraisal question work for users that can view but not answer the question TL-10692 Fixed automatic language detection in Safari browser TL-10718 Fixed SOAP and XML-RPC protocol failure of web services TL-10733 Allowed timestamps to be imported into date and datetime profile fields via HR Import TL-10735 Fixed regression introduced by HR import circular reference tests TL-10743 Fixed program course sets set to "Some courses" and "0" TL-10783 Ensured prog table is always used in program completion history reports When a user viewed their program completion history, in some cases the necessary database tables were not being included when generating the data. This would cause an error for some users. TL-10786 Fixed WebDAV response encoding check inconsistencies TL-10804 Fixed upgrade problem with report builder schedules for deleted users TL-10856 Fixed the tinyMCE format selector in appraisals TL-10857 Prevented non-assigned users from seeing launch button in programs TL-10869 Fixed password reset functionality when using loginhttps setting Contributions: * Eugene Venter at Catalyst NZ - TL-10735
Release 2.6.37 (19th October 2016): Security issues: TL-10339 Prevented dialog item information from being accessible to any logged in users A logged in user was able to access some of the AJAX scripts used by program assignment dialogs and view information such as user names and lists of positions. In some cases they would need to enter extra information into the URL such as user ids to see this information. Information such as position names will have only been viewable if the user had the necessary permissions. However, these AJAX scripts are now only accessible if the user has permission to edit a given program. A program id parameter is now required by these AJAX scripts as part of this change. This change also involves ids of users or groups (such as audiences) that are assigned to a program being sent within the parameters of a POST request rather than in the url of a GET request. TL-10481 Extra capability checks added to ajax scripts Capability checks were added to the AJAX script used for the goal selection dialog as well as a Report Builder filter script. Improvements: TL-10312 Hid certification due date and renewal status within Report Builder reports when they are not applicable TL-10453 Added basic support for built-in PHP Development server PHP's built-in web server can be now used by developers for basic testing purposes. It is not intended for use on any kind of production server or in public networks. The major limitation is that the server is single threaded, which is incompatible with some advanced functionality. Any code that accesses the server via CURL may end up in dead-lock. TL-10496 Updated npm modules used from Grunt to produce consistent CSS and JS in stable branches, backported Grunt to 2.5 and 2.6 branches TL-10740 Added a cautionary disclaimer to the DB migration admin tool interface Bug fixes: TL-10616 Fixed compatibility issues with MySQL 5.7 TL-10692 Fixed automatic language detection in Safari browser TL-10735 Fixed regression introduced by HR import circular reference tests TL-10783 Ensured prog table is always used in program completion history reports When a user viewed their program completion history, in some cases the necessary database tables were not being included when generating the data. This would cause an error for some users. TL-10789 Fixed core_testsuite phpunit test suite TL-10869 Fixed password reset functionality when using loginhttps setting Contributions: * Eugene Venter at Catalyst NZ - TL-10735, TL-10789
Release 2.5.44 (19th October 2016): Security issues: TL-10339 Prevented dialog item information from being accessible to any logged in users A logged in user was able to access some of the AJAX scripts used by program assignment dialogs and view information such as user names and lists of positions. In some cases they would need to enter extra information into the URL such as user ids to see this information. Information such as position names will have only been viewable if the user had the necessary permissions. However, these AJAX scripts are now only accessible if the user has permission to edit a given program. A program id parameter is now required by these AJAX scripts as part of this change. This change also involves ids of users or groups (such as audiences) that are assigned to a program being sent within the parameters of a POST request rather than in the url of a GET request. TL-10481 Extra capability checks added to ajax scripts Capability checks were added to the AJAX script used for the goal selection dialog as well as a Report Builder filter script. Improvements: TL-10453 Added basic support for built-in PHP Development server PHP's built-in web server can be now used by developers for basic testing purposes. It is not intended for use on any kind of production server or in public networks. The major limitation is that the server is single threaded, which is incompatible with some advanced functionality. Any code that accesses the server via CURL may end up in dead-lock. TL-10496 Updated npm modules used from Grunt to produce consistent CSS and JS in stable branches, backported Grunt to 2.5 and 2.6 branches TL-10740 Added a cautionary disclaimer to the DB migration admin tool interface Bug fixes: TL-10616 Fixed compatibility issues with MySQL 5.7 TL-10692 Fixed automatic language detection in Safari browser TL-10783 Ensured prog table is always used in program completion history reports When a user viewed their program completion history, in some cases the necessary database tables were not being included when generating the data. This would cause an error for some users. TL-10789 Fixed core_testsuite phpunit test suite Contributions: * Eugene Venter at Catalyst NZ - TL-10789
Release 2.4.46 (19th October 2016): Security issues: TL-10339 Prevented dialog item information from being accessible to any logged in users A logged in user was able to access some of the AJAX scripts used by program assignment dialogs and view information such as user names and lists of positions. In some cases they would need to enter extra information into the URL such as user ids to see this information. Information such as position names will have only been viewable if the user had the necessary permissions. However, these AJAX scripts are now only accessible if the user has permission to edit a given program. A program id parameter is now required by these AJAX scripts as part of this change. This change also involves ids of users or groups (such as audiences) that are assigned to a program being sent within the parameters of a POST request rather than in the url of a GET request. Improvements: TL-10453 Added basic support for built-in PHP Development server PHP's built-in web server can be now used by developers for basic testing purposes. It is not intended for use on any kind of production server or in public networks. The major limitation is that the server is single threaded, which is incompatible with some advanced functionality. Any code that accesses the server via CURL may end up in dead-lock. TL-10740 Added a cautionary disclaimer to the DB migration admin tool interface Bug fixes: TL-10616 Fixed compatibility issues with MySQL 5.7 TL-10692 Fixed automatic language detection in Safari browser TL-10789 Fixed core_testsuite phpunit test suite Contributions: * Eugene Venter at Catalyst NZ - TL-10789
Release 2.2.52 (19th October 2016): Security issues: TL-10339 Prevented dialog item information from being accessible to any logged in users A logged in user was able to access some of the AJAX scripts used by program assignment dialogs and view information such as user names and lists of positions. In some cases they would need to enter extra information into the URL such as user ids to see this information. Information such as position names will have only been viewable if the user had the necessary permissions. However, these AJAX scripts are now only accessible if the user has permission to edit a given program. A program id parameter is now required by these AJAX scripts as part of this change. This change also involves ids of users or groups (such as audiences) that are assigned to a program being sent within the parameters of a POST request rather than in the url of a GET request. Improvements: TL-10453 Added basic support for built-in PHP Development server PHP's built-in web server can be now used by developers for basic testing purposes. It is not intended for use on any kind of production server or in public networks. The major limitation is that the server is single threaded, which is incompatible with some advanced functionality. Any code that accesses the server via CURL may end up in dead-lock. TL-10740 Added a cautionary disclaimer to the DB migration admin tool interface Bug fixes: TL-10616 Fixed compatibility issues with MySQL 5.7