Merge branch 'MDL-81457-main' of https://github.com/andrewnicols/moodle
[moodle.git] / enrol / upgrade.txt
blob6b1d2450f7b379e20eee6bbf9ff977dfa49ac6e0
1 This files describes API changes in /enrol/* - plugins,
2 information provided here is intended especially for developers.
4 === 4.4 ===
6 * Functions core_enrol_external::search_users and course_enrolment_manager::search_users now have extra optional parameter
7   contextid which allows to search users in a specific activity context. When omitted it searches in the whole course.
8 * New find_instance() function has been created. It finds a matching enrolment instance in a given course using provided
9  enrolment data (for example cohort idnumber for cohort enrolment). Defaults to null. Override this function in your
10  enrolment plugin if you want it to be supported in CSV course upload. Please be aware that sometimes it is not possible
11  to uniquely find an instance based on given data. For example lti entolment records do not have any unique data except
12  id in mod_lti_enrol table. Such plugins should not be supported in CSV course upload. The exception is self enrolment
13  plugin since it is already supported in CSV course upload. For self enrolment plugin, find_instance() returns first
14  available instance in the course.
15 * A sesskey is no longer passed to the enrol/test_settings.php page so it can no longer be required in test_settings().
16 * enrol_self_plugin::get_welcome_email_contact() has been deprecated.
17   Please use enrol_plugin::get_welcome_message_contact() instead.
18 * enrol_self_plugin::email_welcome_message() has been deprecated.
19   Please use enrol_plugin::send_course_welcome_message_to_user() instead.
21 === 4.3 ===
23 * New is_csv_upload_supported() function has been created. It checks whether enrolment plugin is supported
24  in CSV course upload. Defaults to false. Override this function in your enrolment plugin if you want it to
25  be supported in CSV course upload.
27 === 4.2 ===
29 * New is_self_enrol_available() function has been created. Similar to can_self_enrol but without checking user capabilities.
30 * External function core_enrol_external::get_users_courses now returns a field called "courseimage" containing a URL pointing to
31   the course image.
33 === 4.0 ===
35 * Final deprecation of the following webservice:
36   * core_enrol_edit_user_enrolment
37 * External function core_enrol_external::get_users_courses now returns the last time a course was modified (timemodified field)
38 * The behat step i_add_enrolment_method_with() has been deprecated. Please use the new method i_add_enrolment_method_for_with()
40 === 3.11 ===
42 * Added onlysuspended option to core_enrol_get_enrolled_users webservice to retrieve only suspended users.
44 === 3.8 ===
46 * Function enrol_manual_plugin::enrol_cohort now return the number of enrolled cohort users.
48 === 3.7 ===
50 * Functions get_potential_users() and search_other_users() now return more information to avoid extra count query:
51   - users: List of user objects returned by the query.
52   - moreusers: True if there are still more users, otherwise is False.
53   - totalusers: Number users matching the search. (This element only exists if the function is called with $returnexactcount param set to true).
54 * enrolledusercount is now optional in the return value of get_users_courses() for performance reasons. This is controlled with the new
55   optional returnusercount parameter (default true).
56 * External function core_enrol_external::get_users_courses now returns a new field "completionusertracked" that indicates if the
57   given user is being tracked for completion.
59 === 3.6 ===
61 * External function core_enrol_external::get_users_courses now return more information to avoid multiple queries to build the
62   user dashboard:
63   - displayname: Course display name for lists.
64   - marker: Course section active marker.
65   - completed: Whether the given user completed the course or not.
66   - lastaccess: Last time the user accessed the course.
67   - overviewfiles: Course overview files.
68   - completionhascriteria: Whether completion criteria is set for the course.
69   - isfavourite: Whether the user marked the course as favourite.
70   - hidden: Whether the user hide the course from the dashboard.
71 * External functions core_enrol_external::get_enrolled_users and core_enrol_external::get_enrolled_users_with_capability now return
72   the last access time for the users in the given course.
74 === 3.5 ===
76 * Default sorting in enrol_get_my_courses(), enrol_get_all_users_courses() and enrol_get_users_courses() now respects
77   the site setting "navsortmycoursessort" and should be consistently used when displaying the courses in the UI.
79 === 3.4 ===
81 * render_course_enrolment_users_table method has been removed from the renderer. The enrolled users page is now
82   combined with the participants page. /enrol/users.php no longer exists.
84 === 3.3 ===
86 * External function core_enrol_external::get_users_courses now return the user progress, start and the end course dates.
88 === 3.2 ===
90 * External function core_enrol_external::get_users_courses now return the category id as an additional optional field.
92 === 3.1 ===
94 * core_enrol_external::get_enrolled_users now supports two additional parameters for ordering: sortby and sortdirection.
95 * Enrolment plugins UI have been consolidated. Plugins can implement use_standard_editing_ui() function
96   and add edit_instance_form() and edit_instance_validation() methods instead of providing their own edit.php and form.
97   They can then rely on the default implementation of get_action_icons and get_course_navigation. In future this will
98   mean they can be called by webservices/user upload tools because they can validate their data.
100 === 3.0 ===
102 * Added new events enrol_instance_created, enrol_instance_updated and
103   enrol_instance_deleted . Always trigger them when changing records in the
104   DB table 'enrol'.
105 * Constant CACHE_COURSE_CONTACTS_TTL was deleted.
106 * External function core_enrol_external::get_enrolled_users now returns only the viewable participants if the course has groups enabled and no groupid is passed.
108 === 2.9 ===
110 * External function core_enrol_external::get_users_courses now returns additional optional fields:
111    - summary: Course summary.
112    - summaryformat: Course summary format.
113    - format: Course format.
114    - showgrades: True if grades are shown, otherwise false.
115    - lang: Forced course language.
116    - enablecompletion: Control or not via completion and activity settings.
118 === 2.8 ===
120 * enrol_plugin::instance_deleteable() is deprecated and has been replaced by enrol_plugin::can_delete_instance()
121 * enrol_plugin::can_hide_show_instance() is a new function to control who can hide/show enrolment instances.
122   Returns true by default but plugins must implement their own logic.
124 === 2.6 ===
126 * Enrolment plugin which supports self enrolment should implement can_self_enrol()
127 * Enrolment plugin should implement get_enrol_info() to expose instance information
128   with webservice or external interface.
129 * Webservice core_enrol_get_enrolled_users_with_capability was incorrectly specifing
130   float as the return type for user id. int is the actual returned type and is now
131   reported as such.
133 === 2.5 ===
135 * plugins may use general enrol/editenrolment.php page to let users edit
136   enrolments manually
137 * new support for grade recovery in enrol_plugin::enrol_user() method
139 === 2.4 ===
141 required changes in code:
142 * use role_get_name() or role_fix_names() if you need any role names, using role.name
143   directly from database is not correct any more
144 * new restore support: ENROL_RESTORE_EXACT, ENROL_RESTORE_NOUSERS
145   and ENROL_RESTORE_CLASS were removed, implement new restore_* plugin methods instead
147 other changes and new features:
148 * course enrolment manager now works with disabled plugins too
149 * new support for protected group membership linked to enrol instance
150 * new support for expiry notifications - see enrol_plugin::send_expiry_notifications() method
153 === 2.2 ===
155 required changes in code:
156 * load_temp_role() is deprecated, use load_temp_course_role() instead, temp role not loaded
157 * remove_temp_role() is deprecated, use remove_temp_course_roles() instead
158 * 'user_unenrol_modified' event was renamed to 'user_enrol_modified'
161 === 2.0 ===
163 required changes in code:
164 * enrolment plugins need to be rewritten to use new API - see inline phpdocs and official plugins