<commit_before>This files describes API changes in /enrol/* - plugins,
information provided here is intended especially for developers.
=== 3.0 ===
Enrolment plugins UI have been consolidated. Plugins can implement use_standard_editing_ui() function
and add edit_instance_form() and edit_instance_validation() methods instead of providing their own edit.php and form. They can
then rely on the default implementation of get_action_icons and get_course_navigation. In future
this will mean they can be called by webservices/user upload tools because they can validate their data.

=== 3.1 ===
* core_enrol_external::get_enrolled_users now supports two additional parameters for ordering: sortby and sortdirection.

=== 3.0 ===

* Added new events enrol_instance_created, enrol_instance_updated and
  enrol_instance_deleted . Always trigger them when changing records in the
  DB table 'enrol'.
* Constant CACHE_COURSE_CONTACTS_TTL was deleted.
* 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.

=== 2.9 ===

* External function core_enrol_external::get_users_courses now returns additional optional fields:
   - summary: Course summary.
   - summaryformat: Course summary format.
   - format: Course format.
   - showgrades: True if grades are shown, otherwise false.
   - lang: Forced course language.
   - enablecompletion: Control or not via completion and activity settings.

=== 2.8 ===

* enrol_plugin::instance_deleteable() is deprecated and has been replaced by enrol_plugin::can_delete_instance()
* enrol_plugin::can_hide_show_instance() is a new function to control who can hide/show enrolment instances.
  Returns true by default but plugins must implement their own logic.

=== 2.6 ===

* Enrolment plugin which supports self enrolment should implement can_self_enrol()
* Enrolment plugin should implement get_enrol_info() to expose instance information
  with webservice or external interface.
* Webservice core_enrol_get_enrolled_users_with_capability was incorrectly specifing
  float as the return type for user id. int is the actual returned type and is now
  reported as such.

=== 2.5 ===

* plugins may use general enrol/editenrolment.php page to let users edit
  enrolments manually
* new support for grade recovery in enrol_plugin::enrol_user() method

=== 2.4 ===

required changes in code:
* use role_get_name() or role_fix_names() if you need any role names, using role.name
  directly from database is not correct any more
* new restore support: ENROL_RESTORE_EXACT, ENROL_RESTORE_NOUSERS
  and ENROL_RESTORE_CLASS were removed, implement new restore_* plugin methods instead

other changes and new features:
* course enrolment manager now works with disabled plugins too
* new support for protected group membership linked to enrol instance
* new support for expiry notifications - see enrol_plugin::send_expiry_notifications() method


=== 2.2 ===

required changes in code:
* load_temp_role() is deprecated, use load_temp_course_role() instead, temp role not loaded
* remove_temp_role() is deprecated, use remove_temp_course_roles() instead
* 'user_unenrol_modified' event was renamed to 'user_enrol_modified'


=== 2.0 ===

required changes in code:
* enrolment plugins need to be rewritten to use new API - see inline phpdocs and official plugins
<commit_msg>MDL-54641 enrol: Consolidate 3.1 changes into correct section header.<commit_after>This files describes API changes in /enrol/* - plugins,
information provided here is intended especially for developers.

=== 3.1 ===

* core_enrol_external::get_enrolled_users now supports two additional parameters for ordering: sortby and sortdirection.
* Enrolment plugins UI have been consolidated. Plugins can implement use_standard_editing_ui() function
  and add edit_instance_form() and edit_instance_validation() methods instead of providing their own edit.php and form.
  They can then rely on the default implementation of get_action_icons and get_course_navigation. In future this will 
  mean they can be called by webservices/user upload tools because they can validate their data.

=== 3.0 ===

* Added new events enrol_instance_created, enrol_instance_updated and
  enrol_instance_deleted . Always trigger them when changing records in the
  DB table 'enrol'.
* Constant CACHE_COURSE_CONTACTS_TTL was deleted.
* 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.

=== 2.9 ===

* External function core_enrol_external::get_users_courses now returns additional optional fields:
   - summary: Course summary.
   - summaryformat: Course summary format.
   - format: Course format.
   - showgrades: True if grades are shown, otherwise false.
   - lang: Forced course language.
   - enablecompletion: Control or not via completion and activity settings.

=== 2.8 ===

* enrol_plugin::instance_deleteable() is deprecated and has been replaced by enrol_plugin::can_delete_instance()
* enrol_plugin::can_hide_show_instance() is a new function to control who can hide/show enrolment instances.
  Returns true by default but plugins must implement their own logic.

=== 2.6 ===

* Enrolment plugin which supports self enrolment should implement can_self_enrol()
* Enrolment plugin should implement get_enrol_info() to expose instance information
  with webservice or external interface.
* Webservice core_enrol_get_enrolled_users_with_capability was incorrectly specifing
  float as the return type for user id. int is the actual returned type and is now
  reported as such.

=== 2.5 ===

* plugins may use general enrol/editenrolment.php page to let users edit
  enrolments manually
* new support for grade recovery in enrol_plugin::enrol_user() method

=== 2.4 ===

required changes in code:
* use role_get_name() or role_fix_names() if you need any role names, using role.name
  directly from database is not correct any more
* new restore support: ENROL_RESTORE_EXACT, ENROL_RESTORE_NOUSERS
  and ENROL_RESTORE_CLASS were removed, implement new restore_* plugin methods instead

other changes and new features:
* course enrolment manager now works with disabled plugins too
* new support for protected group membership linked to enrol instance
* new support for expiry notifications - see enrol_plugin::send_expiry_notifications() method


=== 2.2 ===

required changes in code:
* load_temp_role() is deprecated, use load_temp_course_role() instead, temp role not loaded
* remove_temp_role() is deprecated, use remove_temp_course_roles() instead
* 'user_unenrol_modified' event was renamed to 'user_enrol_modified'


=== 2.0 ===

required changes in code:
* enrolment plugins need to be rewritten to use new API - see inline phpdocs and official plugins

{'fraction_non_alphanumeric': 0.06096849474912486, 'fraction_numerical': 0.006563593932322053, 'mean_word_length': 5.183047790802525, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3345946', 'n_tokens_mistral': 1872, 'n_tokens_neox': 1790, 'n_words': 789}