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