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