| 1 | efrain | 1 | This files describes API changes in /course/*,
 | 
        
           |  |  | 2 | information provided here is intended especially for developers.
 | 
        
           |  |  | 3 |   | 
        
           |  |  | 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)
 | 
        
           |  |  | 48 |   | 
        
           |  |  | 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()`
 | 
        
           |  |  | 60 |   | 
        
           |  |  | 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.
 | 
        
           |  |  | 71 |   | 
        
           |  |  | 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.
 | 
        
           |  |  | 80 |   | 
        
           |  |  | 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.
 | 
        
           |  |  | 177 |   | 
        
           |  |  | 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.
 | 
        
           |  |  | 190 |   | 
        
           |  |  | 191 | === 3.10 ===
 | 
        
           |  |  | 192 |   | 
        
           |  |  | 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.
 | 
        
           |  |  | 197 |   | 
        
           |  |  | 198 | === 3.9 ===
 | 
        
           |  |  | 199 |   | 
        
           |  |  | 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
 | 
        
           |  |  | 211 |   | 
        
           |  |  | 212 | === 3.8 ===
 | 
        
           |  |  | 213 |   | 
        
           |  |  | 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.
 | 
        
           |  |  | 219 |   | 
        
           |  |  | 220 | === 3.7 ===
 | 
        
           |  |  | 221 |   | 
        
           |  |  | 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.
 | 
        
           |  |  | 228 |   | 
        
           |  |  | 229 | === 3.6 ===
 | 
        
           |  |  | 230 |   | 
        
           |  |  | 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.
 | 
        
           |  |  | 240 |   | 
        
           |  |  | 241 | === 3.5 ===
 | 
        
           |  |  | 242 |   | 
        
           |  |  | 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.
 | 
        
           |  |  | 246 |   | 
        
           |  |  | 247 | === 3.3 ===
 | 
        
           |  |  | 248 |   | 
        
           |  |  | 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
 | 
        
           |  |  | 259 |   | 
        
           |  |  | 260 | === 3.2 ===
 | 
        
           |  |  | 261 |   | 
        
           |  |  | 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.
 |