weekly release 4.1dev
[moodle.git] / course / upgrade.txt
CommitLineData
9df9f1f0
JL
1This files describes API changes in /course/*,
2information provided here is intended especially for developers.
3
49693c66
MG
4=== 4.1 ===
5* The function course_modchooser() has been finally deprecated and can not be used anymore. Please use
6 course_activitychooser() instead.
dc63d643
FR
7* A critical accessibility issue is been found (MDL-74800) at the output class
8 core_courseformat\output\local\content\cm\cmname. To solve the problem this output element is not
9 rendered anymore using inplace_editable but using a regular named_templatable interface.
10 Some format plugins that override the deprecated renderer method course_section_cm_name can be affected.
11 Check the current course_section_cm_name code to see how to render it properly.
49693c66 12
8e7dc424 13=== 4.0 ===
f2ddd23e
BB
14* All activity icons have been replaced with black monochrome icons. The background
15colour for these icons is defined using a new 'FEATURE_MOD_PURPOSE' support variable in the module lib.php file
16Available purpose types are:
17 - MOD_PURPOSE_COMMUNICATION
18 - MOD_PURPOSE_ASSESSMENT
19 - MOD_PURPOSE_COLLABORATION
20 - MOD_PURPOSE_CONTENT
21 - MOD_PURPOSE_ADMINISTRATION
22 - MOD_PURPOSE_INTERFACE
23 - MOD_PURPOSE_OTHER
24The colours for these types are defined in theme/boost/scss/moodle/variables.scss
21d93554 25* The format_base is now deprecated. Use core_courseformat\base instead.
8e7dc424
FR
26* The new course output components deprecate many renderer methods from course
27renderer and course format renderer:
88e17cca
FR
28 - core_courseformat\output\local\content: to render the general course structure
29 - core_courseformat\output\local\content\section: to render a section
30 - core_courseformat\output\local\content\cm: to render an activity card inside a section
31 - core_courseformat\output\local\content\cm\*: to render parts of the course structure
32 - core_courseformat\output\local\content\section\*: to render parts of the course section
8e7dc424
FR
33* The previous format renderer page_title method has been moved to course_format::page_title
34* New format renderer methods to interact with the new output components:
35 - render: override the default templatable mustache location for the new course components.
36 - course_section_updated_cm_item: used when the course editor needs to update a cm item HTML.
88e17cca 37 - render_content: contrib formats should override this method to change the default template.
8e7dc424 38* The following methods are adapted to use outputs but with a deprecation warning and should not be used anymore:
88e17cca
FR
39 - print_single_section_page (replaced by core_courseformat\output\local\content)
40 - print_multiple_section_page (replaced by core_courseformat\output\local\content)
41 - course_activity_clipboard (integrated in replaced by core_courseformat\output\local\content)
42 - format_summary_text (replaced by core_courseformat\output\local\content\section\summay)
43 - change_number_sections (replaced by core_courseformat\output\local\content\addsection)
44 - course_section_cm_list_item (replaced by core_courseformat\output\local\content\section\cmitem)
45 - course_section_cm (replaced by core_courseformat\output\local\content\cm)
46 - course_section_cm_list (replaced by core_courseformat\output\local\content\section\cmlist)
47 - section_edit_control_menu (replaced by core_courseformat\output\local\content\section\controlmenu)
48 - section_right_content (integrated in core_courseformat\output\local\content\section)
49 - section_left_content (integrated in core_courseformat\output\local\content\section)
50 - section_header (replaced by core_courseformat\output\local\content\section\header)
51 - section_footer (integrated in core_courseformat\output\local\content\section)
52 - section_edit_control_items (replaced by core_courseformat\output\local\content\section\controlmenu)
53 - section_summary (replaced by core_courseformat\output\local\content\section\summary)
54 - section_activity_summary (replaced by core_courseformat\output\local\content\section\cmsummary)
55 - section_availability_message (integrated in core_courseformat\output\local\content\section\availability)
56 - section_availability (replaced by core_courseformat\output\local\content\section\availability)
57 - get_nav_links (replaced by core_courseformat\output\local\content\sectionnavigation)
58 - stealth_section_header (replaced by core_courseformat\output\local\content\section\header)
59 - stealth_section_footer (integrated in by core_courseformat\output\local\content\section)
60 - section_nav_selection (replaced by core_courseformat\output\local\content\sectionselector)
61 - course_section_cm_edit_actions (replaced by core_courseformat\output\local\content\cm\controlmenu)
41b46256 62 - is_cm_conditionally_hidden (incorporated in core_availability\info_module::is_available_for_all)
88e17cca 63 - course_section_cm_name (replaced by core_courseformat\output\local\content\cm\cmname)
41b46256 64 - course_section_cm_classes (integrated in core_courseformat\output\local\content\cm)
88e17cca
FR
65 - course_section_cm_name_title (replaced by core_courseformat\output\local\cm\title)
66 - course_section_cm_text (integrated in core_courseformat\output\local\content\cm)
67 - course_section_cm_availability (replaced by core_courseformat\output\local\content\cm\availability))
88e17cca
FR
68 - start_section_list (integrated in core_courseformat\output\local\content)
69 - end_section_list (integrated in core_courseformat\output\local\content)
ce7edab8 70* The following abstract methods are deleted:
88e17cca 71 - page_title (moved to core_courseformat\output\local\content)
f7b0960d
SA
72* Course formats should have a renderer (until now it was only highly recommended but not mandatory). For backwards
73compatibility (to not break third-party plugins without it), legacy_format_renderer has been created and will be used when
74course formats don't have their own renderer.
21d93554
FR
75* New external core_courseformat\external\get_state returns current state information for a given course.
76* New external core_courseformat\external\update_course runs given action to edit course and gets the affectated state objects.
5f91cbb6 77* New external core_course\external\get_state returns current state information for a given course.
6347b916 78* New external function core_course_update_course runs given action to edit course status.
c8f0fee9
PH
79* The `\core\event\course_category_deleted` event is now created with a snapshot of the category record being deleted,
80 available inside event observers via `$event->get_record_snapshot`
830c3eb9
FR
81* New include_course_editor() function to include and configure course editor modules.
82* New core_course_drawer() function to render the message drawer in the top of the body of each page.
ccd62d28
MM
83* New course_get_enrolled_courses_for_logged_in_user_from_search which hooks in with external\get_enrolled_courses_by_timeline_classification
84 given COURSE_TIMELINE_SEARCH is set then get_enrolled_courses_by_timeline_classification will deviate to use a string search of enrolled courses.
88e17cca 85* Class core_course\output\course_module_name is deprecated. Now core_courseformat\output\local\content\cm\cmname controls inline edit.
7de559fa
HN
86* Calendar menu entry is now moved to User menu items, so the following methods will not return the calendar item anymore:
87 - course_get_user_navigation_options
88 - core_course_externalcore_course_external::get_user_navigation_options
e01f2d51
MH
89* New external \core_course\external\get_enrolled_courses_with_action_events_by_timeline_classification:
90 - Returns courses the user is enrolled in which contain at least one action event in the supplied time/text filtering parameters.
91 - Provides a similar response to get_enrolled_courses_by_timeline_classification, but omits courses which have no matching
92 action events.
4d5a25ff
PD
93* The following functions have been deprecated in favour the tertiary navigation constructs:
94 - management_heading
95 - course_search_form
96 - print_course_request_buttons
3a333176
MG
97* New page_setup() method in the core_course_category class. This method can be used for a general page setup in the course
98 category pages.
481cfdc3
HN
99* New core_course_category::get_nearest_editable_subcategory():
100 - Return the core_course_category object for the first subcategory that the current user has the permission on it.
135e1a2d
MG
101* The method navigation() in the core_course_bulk_activity_completion_renderer class has been deprecated as the tabs navigation
102 structure in the course competency pages has been replaced with tertiary navigation. To render the navigation, please
103 render_course_completion_action_bar() instead.
f97b86e8
DC
104* The following functions have been deprecated in favour partial course cache rebuild:
105 - course_purge_section_cache (replaced by course_modinfo::purge_course_section_cache_by_id() and course_modinfo::purge_course_section_cache_by_number())
106 - course_purge_module_cache (replaced by course_modinfo::purge_course_module_cache())
bfe14e23
HN
107 - get_array_of_activities (replaced by course_modinfo::get_array_of_activities() for better performance)
108* New course_modinfo::purge_course_cache function was created to purge the cache of a given course.
8e7dc424 109
e99e0bb5
DM
110=== 3.11 ===
111* A new callback xxx_coursemodule_definition_after_data that allows plugins to extend activity forms after the data is set.
e9330444
JP
112* \core_course_renderer::course_section_cm_completion() has been deprecated. It is not being used anymore and is being replaced by
113 \core_renderer::activity_information().
5dee6f45
JP
114* New Behat steps for checking activity date information in the \behat_course class:
115 - activity_date_in_activity_should_contain_text()
116 - Given the activity date in "<ActivityName>" should contain "<Text>"
117 - activity_dates_information_in_activity_should_exist()
118 - Given the activity date information in "<ActivityName>" should exist
119 - activity_dates_information_in_activity_should_not_exist()
120 - Given the activity date information in "<ActivityName>" should not exist
430746d3 121* A user preference usemodchooser has been removed and the activities/resources (non-ajax) activity chooser has been deprecated and will be removed in the future.
e99e0bb5 122
9a79c34e 123=== 3.10 ===
2c45ad6f
JP
124
125* The function make_categories_options() has now been deprecated. Please use \core_course_category::make_categories_list() instead.
35101a6a 126* External function core_course_external::get_course_contents now returns a new field contextid with the module context id.
d1787798
PH
127* The core_course_external class methods get_courses(), get_courses_by_field() and search_courses() now return a "valueraw" property
128 for each custom course field, which contains the original/unformatted version of the custom field value.
2c45ad6f 129
12f73788
JD
130=== 3.9 ===
131
132* The function get_module_metadata is now deprecated. Please use \core_course\local\service\content_item_service instead.
1e7e255d 133* Activity module names are now PARAM_ALPHANUM instead of PARAM_ALPHA so integers can be used in activity module names
ebd08abc
MM
134* The following functions have been added to core_course_renderer class to have more granularity. They can be overriden in
135 extending classes:
136 - course_name
137 - course_enrolment_icons
138 - course_summary
139 - course_contacts
140 - course_overview_files
141 - course_category_name
142 - course_custom_fields
12f73788 143
c128ccc1 144=== 3.8 ===
cd4abbc7 145
c128ccc1
SA
146* The following functions have been finally deprecated and can not be used any more:
147 - core_course_external::get_activities_overview
cd4abbc7
AB
148* External function core_course_external::get_enrolled_courses_by_timeline_classification now also supports the classification
149 'allincludinghidden' which delivers all courses including hidden courses. The classification 'all' still returns all courses
150 without hidden courses.
c128ccc1 151
76724712 152=== 3.7 ===
98c49e1a 153
620896cf
BB
154 * The course pattern function in course_summary_exporter::get_course_pattern has been moved to $OUTPUT->get_generated_image_for_id.
155 * The course color function in course_summary_exporter::coursecolor has been moved to $OUTPUT->get_generated_color_for_id.
76724712
MJ
156 * External function core_course_external::get_course_contents new returns the following additional completiondata field:
157 - valueused (indicates whether the completion state affects the availability of other content)
9b8aed89 158 * External function core_course_external::get_course_contents now returns a new contentsinfo field with summary files information.
6c344ff2
JL
159 * External function core_course_external::get_course_contents now returns an additional field "tags" returning the content tags.
160
a487a3ed
DK
161=== 3.6 ===
162
1206a487 163 * External function core_course_external::get_course_public_information now returns the roles and the primary role of course
a487a3ed 164 contacts.
1206a487
JL
165 * External function core_course_external::get_course_contents now return the following additional file fields:
166 - onclick (onclick javascript action code)
167 - afterlink (after link info to be displayed)
168 - customdata (module custom data (JSON encoded))
1de51367
JL
169 - completion (to indicate if completion is enabled or not)
170 - completiondata (completion status for the current user in the module)
f3507f59 171 * External function core_group_external::get_course_user_groups now can return all user courses group information.
a487a3ed 172
8c52eb2a 173=== 3.5 ===
a487a3ed 174
7afa724c 175 * There is a new capability 'moodle/course:setforcedlanguage' to control which users can force the course
8c52eb2a 176 language; create_course and update_course functions delegate access control to the caller code; if you
7afa724c 177 are calling those functions you may be interested in checking if the logged in user has 'moodle/course:setforcedlanguage' capability.
8c52eb2a 178
e45fc71e
JL
179=== 3.3 ===
180
181 * External function core_course_external::get_courses_by_field now returns the course filters list and status.
ef83fc2a 182 * External function core_course_external::get_courses_by_field now returns the end date of the course.
dbc404de
JL
183 * External function core_course_external::get_course_contents now return the following additional file fields:
184 - mimetype (the file mime type)
185 - isexternalfile (if is a file reference to a external repository)
186 - repositorytype (the repository name in case is a external file)
187 Those fields are VALUE_OPTIONAL for backwards compatibility.
935429e2
JL
188 * External function core_course_external::get_course_contents now return the following fields for section and modules:
189 - uservisible (whether the section or module is visible by the user)
190 - availabilityinfo (availability information if the course or module has any access restriction set
e45fc71e 191
9df9f1f0
JL
192=== 3.2 ===
193
194 * External function core_course_external::get_course_contents now returns the section's number in the course (new section field).
82f5802a 195 * External function core_course_external::get_course_contents now returns if a section is hidden in the course format.
14590070
JL
196 * External functions that were returning file information now return the following file fields:
197 filename, filepath, mimetype, filesize, timemodified and fileurl.
198 Those fields are now marked as VALUE_OPTIONAL for backwards compatibility.
4f2378d9
FM
199 * The modchooser now uses a renderable and a template, thus its associated renderer
200 methods have been deprecated. Note that the call to core_course_render::course_modchooser,
201 is still required. Deprecated methods:
202 - core_course_renderer::course_modchooser_module_types
203 - core_course_renderer::course_modchooser_module
204 - core_course_renderer::course_modchooser_title
8643c576
DM
205 * You can now specify a course end date when calling core_course_external::create_courses and core_course_external::update_courses
206 external functions. core_course_external::get_courses external function is now returning courses end date values.