Merge branch 'MDL-81457-main' of https://github.com/andrewnicols/moodle
[moodle.git] / user / upgrade.txt
blob34ac80b925377ed7108776d56ff90fe47c0fc8bd
1 This files describes API changes for code that uses the user API.
3 === 4.4 ===
5 * The `profile_field_base` class now contains a `show_field_content` method to determine whether the field and
6   content should be shown to the user. Can be overridden in child classes as required
8 === 4.3 ===
10 * Added new methods:
11  - `core_user::get_profile_picture` for retrieving user picture.
12  - `core_user::get_profile_url` for retrieving profile url.
13  - `core_user::get_fullname` for retrieving user full name.
14 * The `core_user/repository` Javascript module now exports new methods for manipulating user preferences:
15   - `[get|set]UserPreference`
16   - `[get|set]UserPreferences`
17 * The following user preference helpers have been deprecated, please use the `core_user/repository` module instead:
18   - `user_preference_allow_ajax_update`
19   - `M.util.set_user_preference`
20   - `lib/ajax/setuserpref.php`
21 * The external `core_user_set_user_preferences` method will now default the `userid` property of each preference to
22   that of the current user, if omitted
23 * The following previously deprecated methods have been removed and can no longer be used:
24   - `profile_display_fields`
25   - `profile_edit_category`
26   - `profile_edit_field`
27   - `user_get_participants`
28   - `user_get_participants_sql`
29   - `user_get_total_participants`
30 * The users_search_sql function parameter $searchanywhere has been change to $searchtype for different type of search. $searchtype is a int parameter and has three constant value:
31   USER_SEARCH_STARTS_WITH: 0, USER_SEARCH_CONTAINS: 1, USER_SEARCH_EXACT_MATCH: 2
32   users_search_sql('User Test 2', '', false) =>  users_search_sql('Test Street', '', USER_SEARCH_CONTAINS)
34 === 4.2 ===
36 * Added get_internalfield_list() and get_internalfields() in the user_field_mapping class.
37   The get_internalfield_list() returns data in an array by grouping profile fields based on field categories,
38   used for internal field name dropdown in the user field mapping of Oauth2 services
39   The get_internalfields() converts the result from get_internalfield_list() into flat array,
40   used to save/update the profile data when a user uses OAuth2 services.
41 * Added get_profile_field_names() and get_profile_field_list() in the profile_field_base class.
42   The get_profile_field_names() returns the list of valid custom profile user fields.
43   The get_profile_field_list() returns the profile fields
44   in a format that can be used for choices in a group select menu.
45 * New method `core_user::is_current_user`, useful for components implementing permission callbacks for their preferences
46 * New `profile_get_user_field` method for returning profile field instance of given type
47 * The `profile_field_base::is_visible` method now accepts an optional `$context` argument
48 * External function core_user_external::add_user_private_files() now returns moodle_exception when the user quota is exceeded
49 * The `customfields` structure used for returning user profile fields information has been updated to:
50    * Return in the field `value` the value of the custom field (as stored in the database)
51    * Return in the field `displayvalue` the value of the custom field for display
52    External systems displaying user information should always use `displayvalue`.
53 * New method `user_update_device_public_key()`` and accompanying external function core_user_external::update_device_public_key to
54   update a user's app generated public key by device uuid and app id.
56 === 4.1 ===
58 * Added a new method is_transform_supported() in the profile_field_base class.
59   The purpose is to allow the field to be transformed during the export process.
60   It has been implemented in the Date/Time data type (Applied in 4.1, 4.0.6).
62 * user_get_user_details_courses() now accepts an optional second parameter, an array of userfields that should be
63   returned. The values passed into the $userfields parameter must all be included in the return from
64   user_get_default_fields().
65   It also allows you to reduce how much of a user record is required by the method. The minimum user record fields are:
66     * id
67     * deleted
68     * all potential fullname fields
70 * Participant filter is moved to core as an API which can be used in different areas of core by implementing the API
71   and filterable objects. As a part of making the API mature as a core one, these are the js files moved from core
72   user to core library:
73   * user/amd/src/local/participantsfilter/filter.js → lib/amd/src/datafilter/filtertype.js
74   * user/amd/src/local/participantsfilter/filtertypes/country.js → lib/amd/src/datafilter/filtertypes/country.js
75   * user/amd/src/local/participantsfilter/filtertypes/courseid.js → lib/amd/src/datafilter/filtertypes/courseid.js
76   * user/amd/src/local/participantsfilter/filtertypes/keyword.js → lib/amd/src/datafilter/filtertypes/keyword.js
77   * user/amd/src/local/participantsfilter/selectors.js → lib/amd/src/datafilter/selectors.js
78   The following mustache have been moved from core user to core library:
79   * user/templates/local/participantsfilter/filterrow.mustache → lib/templates/datafilter/filter_row.mustache
80   * user/templates/local/participantsfilter/filtertype.mustache → lib/templates/datafilter/filter_type.mustache
81   * user/templates/local/participantsfilter/filtertypes.mustache → lib/templates/datafilter/filter_types.mustache
82   * user/templates/local/participantsfilter/autocomplete_layout.mustache → lib/templates/datafilter/autocomplete_layout.mustache
83   * user/templates/local/participantsfilter/autocomplete_selection.mustache → lib/templates/datafilter/autocomplete_selection.mustache
84   * user/templates/local/participantsfilter/autocomplete_selection_items.mustache → lib/templates/datafilter/autocomplete_selection_items.mustache
85   Class participant_filter now extends core filter api in core user.
87 * The unified_filter function has been finally deprecated and cannot be used anymore
88 * The class \core_user\output\unified_filter has been finally deprecated and removed
90 === 4.0 ===
92 * External function core_user_external::update_users() will now fail on a per user basis. Previously if one user
93   update failed all users in the operation would fail.
94 * External function core_user_external::update_users() now returns an error code and message to why a user update
95   action failed.
96 * New method `core_user\fields::get_sql_fullname` for retrieving user fullname format in SQL statement
97 * The `profile_get_custom_field_data_by_shortname` method now accepts an optional parameter to determine whether
98   to use case-sensitive matching of the profile field shortname or not (default true)
100 === 3.11 ===
102 * Added new core_user/form_user_selector JS module that can be used as the 'ajax' handler for the autocomplete form
103   element implementing the user selector.
104 * Added new external function core_user_external::search_identity(). The main purpose of this external function is to
105   provide data for asynchronous user selectors and similar widgets. It allows to search users matching the given query
106   in their name or other available identity fields.
108 === 3.9 ===
110 * The unified filter has been replaced by the participants filter. The following have therefore been deprecated:
111   * Library functions:
112     * user_get_participants_sql
113     * user_get_total_participants
114     * user_get_participants
115   * Unified filter renderer (core_user_renderer::unified_filter)
116   * Unified filter renderable (\core_user\output\unified_filter)
117   * Unified filter JavaScript (core_user/unified_filter.js and core_user/unified_filter_datasource.js)
118   * Unified filter template (unified_filter.mustache)
120 === 3.6 ===
122 * The following functions have been finally deprecated and can not be used anymore:
123   * useredit_update_picture()
124 * core_user_external::update_user_preferences() now allows to unset existing preferences values.
125   If the preference value field is not set, the preference will be unset.