=== 4.5 Onwards ===

This file has been replaced by UPGRADING.md. See MDL-81125 for further information.

===
This file describes API changes in core filter API and plugins,
information provided here is intended especially for developers.

=== 4.3 ===

* Filters can be applied at different stages - before text format conversion, before text cleaning or after text cleaning.
It is recommended that add-on filter developers use early formatting stages to prevent security issues caused by
modification of already sanitised text.

* The moodle-filter_mathjaxloader-loader yui module has been deprecated. We create amd filter_mathjaxloader/loader to replace it.

=== 4.0 ===

* The Word censorship (filter_censor) filter has been completely removed from core. It has been moved to the plugins database
repository, so it can still be installed as a third-party plugin.

=== 3.9 ===

* The following functions, previously used (exclusively) by upgrade steps are not available anymore because of the upgrade cleanup performed for this version. See MDL-65809 for more info:
    - filter_mathjaxloader_upgrade_cdn_cloudflare()
    - filter_mathjaxloader_upgrade_mathjaxconfig_equal()

=== 3.6 ===

* Although there is no API change that require you to update your filter,
  if you use the filter_phrases() helper method, you may wish to take
  advantage of the changes that were made in MDL-47962 to improve performance.

  Now, instead of having to compute the replacement HTML for each phrase before
  you construct the filterobject for it. You can instead pass a callback to
  the filterobject constructor which is only called if the phrase is used.

  To understand how to use this, see the comment on filterobject::__construct and
  look at the filter_glossary changes as an example:
  https://github.com/moodle/moodle/commit/5a8c44d000ecc5669db26aefebe447f688e8f2ce

=== 3.0 ===

* New argument $skipfilters to filter_manager::filter_text to allow applying
  the filters with a given one omitted.

* New admin setting class admin_setting_filter_types which can be used if you
  want to make the disablefilters value in your code configurable.

* Methods filter_manager::text_filtering_hash and moodle_text_filter::hash have been
  deprecated. There were use by the old Moodle filtered text caching system
  that was removed several releases ago.

=== 2.7 ===

* Finally filter may use $PAGE and $OUTPUT, yay!
* Old global text caching was removed, each filter is now responsible
  for own caching.

=== 2.6 ===

* filtersettings.php is now deprecated, migrate to standard settings.php

=== 2.5 ===

* legacy_filter emulation was removed
* support for 'mod/*' filters was removed
* use short filter name instead of old path, ex.: 'filter/tex' ---> 'tex'
  in all filter API functions and methods

=== 2.3 ===

* new setup() method added to moodle_text_filter, invoked before
  filtering happens, used to add all the requirements to the page
  (js, css...) and/or other init tasks. See filter/glossary for
  an example using the API (and MDL-32279 for its justification).

=== 2.2 ===

* legacy filters and legacy locations have been deprecated, so any
  old filter should be updated to use the new moodle_text_filter,
  and any filter bundled under mod/xxxx directories be moved to
  /filter/xxxx (MDL-29995). They will stop working completely in
  Moodle 2.3 (MDL-29996). See the glossary or data filters for
  examples of legacy module filters and locations already updated.
