1 |
efrain |
1 |
This files describes API changes in /mod/* - activity modules,
|
|
|
2 |
information provided here is intended especially for developers.
|
|
|
3 |
|
|
|
4 |
=== 4.4 ===
|
|
|
5 |
* There is a new callback, <modname>_is_branded, which, by default, returns false. It needs to be implemented by modules that
|
|
|
6 |
want their logo to be displayed as it is (so without applying any filter to colour them based on their main purpose).
|
|
|
7 |
* The chat and survey modules are now disabled for new installations.
|
|
|
8 |
|
|
|
9 |
=== 4.2 ===
|
|
|
10 |
* The mod_assignment plugin has been completely removed from core.
|
|
|
11 |
It has been moved to github repository https://github.com/moodlehq/moodle-mod_assignment.
|
|
|
12 |
It should only be used/re-installed to restore backups older than 1.9.
|
|
|
13 |
|
|
|
14 |
=== 4.1 ===
|
|
|
15 |
|
|
|
16 |
* The callback get_shortcuts() is now removed. Please use get_course_content_items and get_all_content_items instead.
|
|
|
17 |
|
|
|
18 |
=== 4.0 ===
|
|
|
19 |
* A new API function introduced to handle custom completion logic. Refer to completion/upgrade.txt for additional information.
|
|
|
20 |
* Modules that extend the settings navigation via '_extend_settings_navigation()' should use the get_page() method from
|
|
|
21 |
the settings_navigation class in order to obtain the correct moodle_page information associated to the given settings
|
|
|
22 |
navigation. After the recent changes to the navigation in single activity courses, using the global $PAGE may result
|
|
|
23 |
in returning inaccurate data in this course format, therefore it is advisable to use $settingsnavigation->get_page().
|
|
|
24 |
* A new style of icons has been created for activities. When creating an icon in the new style it should be named
|
|
|
25 |
'monologo' and can site alongside the legacy icon if desired. Only the new logo types will be used.
|
|
|
26 |
* There is a new callback ..._calculate_question_stats which needs to be implemented by components which want
|
|
|
27 |
to contribute statistics to the display in the question bank. There is an example implementation in mod_quiz.
|
|
|
28 |
(Added in 4.0.4 / 4.1.)
|
|
|
29 |
|
|
|
30 |
=== 3.9 ===
|
|
|
31 |
|
|
|
32 |
* The callback get_shortcuts() is now deprecated. Please use get_course_content_items and get_all_content_items instead.
|
|
|
33 |
See source code examples in get_course_content_items() and get_all_content_items() in mod/lti/lib.php for details.
|
|
|
34 |
* When creating the calendar events and setting the event description to match the module intro description, the filters
|
|
|
35 |
must not be applied on the passed description text. Doing so leads to loosing some expected text filters features and
|
|
|
36 |
causes unnecessarily early theme and output initialisation in unit tests. If your activity creates calendar events,
|
|
|
37 |
you probably have code like:
|
|
|
38 |
```
|
|
|
39 |
$event->description = format_module_intro('quiz', $quiz, $cmid);
|
|
|
40 |
```
|
|
|
41 |
You need to change it to:
|
|
|
42 |
```
|
|
|
43 |
$event->description = format_module_intro('quiz', $quiz, $cmid, false);
|
|
|
44 |
$event->format = FORMAT_HTML;
|
|
|
45 |
```
|
|
|
46 |
Even this is still technically wrong. Content should normally only be formatted just before it is output. Ideally, we
|
|
|
47 |
should pass the raw description text, format and have a way to copy the embedded files; or provide another way for the
|
|
|
48 |
calendar to call the right format_text() later. The calendar API does not allow us to do these things easily at the
|
|
|
49 |
moment. Therefore, this compromise approach is used. The false parameter added ensures that text filters are not run
|
|
|
50 |
at this time which is important. And the format must be set to HTML, because otherwise it would use the current user's
|
|
|
51 |
preferred editor default format.
|
|
|
52 |
* Related to the above and to help with detecting the problematic places in contributed 3rd party modules, the
|
|
|
53 |
testing_module_generator::create_instance() now throws coding_exception if creating a module instance initialised the
|
|
|
54 |
theme and output as a side effect.
|
|
|
55 |
|
|
|
56 |
=== 3.8 ===
|
|
|
57 |
|
|
|
58 |
* The final deprecation of xxx_print_overview() callback means that this function will no longer be called.
|
|
|
59 |
* Activities which define multiple grade items must now describe the mapping of the gradeitem's itemnumber to a
|
|
|
60 |
meaningful name in a class implementing \core_grades\local\gradeitem\itemnumber_mapping located in
|
|
|
61 |
\mod_name\grades\gradeitems (located in mod/[mod_name]/classes/grades/gradeitems.php).
|
|
|
62 |
|
|
|
63 |
=== 3.6 ===
|
|
|
64 |
|
|
|
65 |
* The final deprecation of xxx_get_types() callback means that this function will no longer be called.
|
|
|
66 |
Please use get_shortcuts() instead.
|
|
|
67 |
* lti_get_shortcuts has been deprecated. Please use get_shortcuts() instead to add items to the activity chooser.
|
|
|
68 |
* Now, when mod_<modname>_core_calendar_is_event_visible or mod_<modname>_core_calendar_provide_event_action callback functions
|
|
|
69 |
are called, the userid of the requesting user is also passed to them.
|
|
|
70 |
* The following functions have been finally deprecated and can not be used anymore:
|
|
|
71 |
- update_module_button()
|
|
|
72 |
* The final deprecation of xxx_delete_course callback means that this function will no longer be called.
|
|
|
73 |
Please use the observer for event \core\event\course_content_deleted instead.
|
|
|
74 |
|
|
|
75 |
=== 3.5 ===
|
|
|
76 |
|
|
|
77 |
* There is a new privacy API that every subsystem and plugin has to implement so that the site can become GDPR
|
|
|
78 |
compliant. Activity modules use this API to report what information they store or process regarding users, and provide
|
|
|
79 |
ability to export and delete personal data. See hhttps://moodledev.io/docs/apis/subsystems/privacy/ for guidelines on how to
|
|
|
80 |
implement the privacy API in your activity module.
|
|
|
81 |
* Backup directory now can be outside of temp directory. Use make_backup_temp_directory($name) instead of
|
|
|
82 |
make_temp_directory('/backup/'.$name)
|
|
|
83 |
* Modules that provide their own interactive content and call cm_info::set_content() from [MODULENAME]_cm_info_view()
|
|
|
84 |
callback should format all user input and call set_content() with parameter $isformatted=true . Otherwise
|
|
|
85 |
scripts will be cleaned on the course page in case of $CFG->forceclean=1. See example in mod_folder.
|
|
|
86 |
|
|
|
87 |
=== 3.4 ===
|
|
|
88 |
|
|
|
89 |
* Navigation between activities via a previous and next link was added to Boost, Clean and Bootstrapbase. This
|
|
|
90 |
was made possible by a new function core_renderer->activity_navigation(). However, there was an issue when linking
|
|
|
91 |
to the mod_resource and mod_url view.php pages where it would automatically download the file, or redirect to
|
|
|
92 |
the URL. It was noticed that this was not the case when editing the module and clicking 'Save and display' which would
|
|
|
93 |
take you to the pages without downloading the file or redirecting to a link. The reason this worked was because of the
|
|
|
94 |
hard-coded check 'if (strpos(get_local_referer(false), 'modedit.php') === false) {' in the view.php files. This check
|
|
|
95 |
has been removed in favour of an optional_param('forceview'). If you are using the above hard-coded check in your
|
|
|
96 |
plugin it is recommended to remove it and use the optional param as it will prevent the navigation from working as
|
|
|
97 |
expected.
|
|
|
98 |
|
|
|
99 |
=== 3.3 ===
|
|
|
100 |
|
|
|
101 |
* External functions that were returning file information now return the following additional file fields:
|
|
|
102 |
- mimetype (the file mime type)
|
|
|
103 |
- isexternalfile (if is a file reference to a external repository)
|
|
|
104 |
- repositorytype (the repository name in case is a external file)
|
|
|
105 |
Those fields are VALUE_OPTIONAL for backwards compatibility.
|
|
|
106 |
* The block_course_overview has been removed and the related core module
|
|
|
107 |
*_print_overview functions have been deprecated.
|
|
|
108 |
* The block_myoverview has replaced block_course_overview to provide better information to students. To support this,
|
|
|
109 |
actions can now be attached to calendar events. Documentation for the following new API callbacks introduced in
|
|
|
110 |
MDL-55611 can be found at https://moodledev.io/docs/apis/core/calendar. The 3 new callbacks are:
|
|
|
111 |
- mod_<modname>_core_calendar_is_event_visible
|
|
|
112 |
- mod_<modname>_core_calendar_provide_event_action
|
|
|
113 |
- mod_<modname>_core_calendar_event_action_shows_item_count
|
|
|
114 |
* Changes to the moodleform_mod class and its usage (MDL-58138):
|
|
|
115 |
- the get_data() method has been overriden. The implementation calls parent::get_data() and a new data_postprocessing() method
|
|
|
116 |
- new data_postprocessing() method added. Mods can override this in their mod_form subclass to modify the submit data. Previously
|
|
|
117 |
mods could only modify submitted data by overriding get_data() in the mod_form subclass. data_postprocessing() is now the way to
|
|
|
118 |
do this correctly.
|
|
|
119 |
- completion: \core_completion\manager calls the overriden mod_x_mod_form->data_postprocessing() to allow mods to modify their
|
|
|
120 |
completion data before saving the bulk completion form. If you've overriden get_data() to modify submit data for completion in
|
|
|
121 |
the past, you should now override the data_postprocessing() method in your mod_form and move your code there, so bulk completion
|
|
|
122 |
editing will be properly supported for your plugin.
|
|
|
123 |
=== 3.2 ===
|
|
|
124 |
|
|
|
125 |
* Callback delete_course is deprecated and should be replaced with observer for event \core\event\course_content_deleted
|
|
|
126 |
* update_module_button() and core_renderer::update_module_button() have been deprecated and should not be used anymore.
|
|
|
127 |
Activity modules should not add the edit module button, the link is already available in the Administration block.
|
|
|
128 |
Themes can choose to display the link in the buttons row consistently for all module types.
|
|
|
129 |
* New callback check_updates_since available. Check if the module has any update that affects the current user since the given time.
|
|
|
130 |
Please refer to mod/assign/lib.php, mod/forum/lib.php or mod/quiz/lib.php for sample code.
|
|
|
131 |
|
|
|
132 |
=== 3.1 ===
|
|
|
133 |
|
|
|
134 |
* Old /mod/MODULENAME/pix/icon.gif and enrol/paypal/pix/icon.gif GIF icons have been removed. Please use pix_icon
|
|
|
135 |
renderable instead.
|
|
|
136 |
* Callback get_types() is deprecated, instead activity modules can define callback get_shortcuts().
|
|
|
137 |
See source code for get_module_metadata().
|
|
|
138 |
|
|
|
139 |
=== 3.0 ===
|
|
|
140 |
|
|
|
141 |
* Dropped support for the $module in mod/xxx/version.php files (deprecated
|
|
|
142 |
since 2.7). All activity modules must use the $plugin syntax now. See
|
|
|
143 |
https://moodledev.io/docs/apis/commonfiles/version.php for details (MDL-43896).
|
|
|
144 |
* Modules using rating component must implement a callback mod_x_rating_can_see_item_ratings(). Refer
|
|
|
145 |
to mod_forum_rating_can_see_item_ratings() for example.
|
|
|
146 |
|
|
|
147 |
=== 2.9 ===
|
|
|
148 |
|
|
|
149 |
* Added Grade to pass field to mod_form for activities that support grading.
|
|
|
150 |
* The method moodleform_mod::add_intro_editor() used in mod_form.php form
|
|
|
151 |
definitions has been deprecated. Replace it with the new
|
|
|
152 |
moodleform_mod::standard_intro_elements() method that takes the new site
|
|
|
153 |
configuration requiremodintro into account (MDL-49101).
|
|
|
154 |
|
|
|
155 |
=== 2.8 ===
|
|
|
156 |
|
|
|
157 |
* Constant FEATURE_GROUPMEMBERSONLY is deprecated. Modules should remove this
|
|
|
158 |
constant from their module_supports() API function.
|
|
|
159 |
* $CFG->enablegroupmembersonly no longer exists.
|
|
|
160 |
|
|
|
161 |
=== 2.7 ===
|
|
|
162 |
|
|
|
163 |
* modgrade form element has been redesigned and allows setting the maximum grade point higher than 100.
|
|
|
164 |
* The usage of $module in mod/xxx/version.php files is now deprecated. Please use
|
|
|
165 |
$plugin instead. The support for the legacy notation will be dropped in Moodle 2.10.
|
|
|
166 |
* xxx_get_view_actions() and xxx_get_post_actions() will be ignored by new logging system for
|
|
|
167 |
participation report. view_action and post_action will be detected by event's crud and edulevel.
|
|
|
168 |
* The functions xxx_user_outline() and xxx_user_complete() have been removed from the majority of core modules (see MDL-41286),
|
|
|
169 |
except for those that require unique functionality. These functions are used by the outline report, but now if they no longer
|
|
|
170 |
exist, the default behaviour is chosen, which supports the legacy and standard log storages introduced in 2.7 (see MDL-41266).
|
|
|
171 |
It is highly recommended you remove these functions from your module if they are simply performing the default behaviour.
|
|
|
172 |
|
|
|
173 |
=== 2.6 ===
|
|
|
174 |
|
|
|
175 |
* Modules using the question bank MUST now declare their use of it with the xxx_supports()
|
|
|
176 |
flag FEATURE_USES_QUESTIONS.
|
|
|
177 |
* xxx_get_types() module callback can now return subtypes that have
|
|
|
178 |
a custom help text set. Also instead of array it can now return
|
|
|
179 |
MOD_SUBTYPE_NO_CHILDREN. This is optional and still defaults to prior
|
|
|
180 |
behavior. See get_module_metadata() in course/lib.php for details.
|
|
|
181 |
* shift_course_mod_dates() has been modified to accept optional mod instance id. If mod instance id is passed then
|
|
|
182 |
dates changed will happen only on specific module instance and not on all instances of that module in course.
|
|
|
183 |
|
|
|
184 |
=== 2.5 ===
|
|
|
185 |
|
|
|
186 |
* support for 'mod/*' filters was removed
|
|
|
187 |
|
|
|
188 |
=== 2.4 ===
|
|
|
189 |
|
|
|
190 |
new features:
|
|
|
191 |
|
|
|
192 |
* mod/xxx/adminlib.php may now include 'plugininfo_yoursubplugintype' class definition
|
|
|
193 |
used by plugin_manager; it is recommended to store extra admin settings classes in this file
|
|
|
194 |
|
|
|
195 |
optional - no changes needed:
|
|
|
196 |
|
|
|
197 |
* mod_lesson_renderer::header() now accepts an additional parameter $extrapagetitle
|
|
|
198 |
|
|
|
199 |
* mod/data/lib.php data_get_all_recordids() now has two new optional variables: $selectdata and $params.
|
|
|
200 |
|
|
|
201 |
=== 2.3 ===
|
|
|
202 |
|
|
|
203 |
required changes in code:
|
|
|
204 |
|
|
|
205 |
* define the capability mod/xxx:addinstance (and the corresponding lang string)
|
|
|
206 |
(unless your mod is a MOD_ARCHETYPE_SYSTEM).
|
|
|
207 |
* xxx_pluginfile() is now given the 7th parameter (hopefully the last one) that
|
|
|
208 |
contains additional options for the file serving. The array should be re-passed
|
|
|
209 |
to send_stored_file().
|
|
|
210 |
|
|
|
211 |
* most resourcelib_embed_* functions are replaced with core_media_renderer;
|
|
|
212 |
for an example, see mod/resource/locallib.php, resource_display_embed()
|
|
|
213 |
|
|
|
214 |
optional - no changes needed:
|
|
|
215 |
|
|
|
216 |
* add support for handling course drag and drop types - functions
|
|
|
217 |
xxx_dndupload_register() and xxx_dndupload_handle($uploadinfo) see:
|
|
|
218 |
http://docs.moodle.org/dev/Implementing_Course_drag_and_drop_upload_support_in_a_module
|
|
|
219 |
|
|
|
220 |
=== 2.2 ===
|
|
|
221 |
|
|
|
222 |
required changes in code:
|
|
|
223 |
* fix missing parameter types in optional_param() and required_param()
|
|
|
224 |
* use new optional_param_array(), required_param_array() or clean_param_array() when dealing with array parameters
|
|
|
225 |
* core_text::asort() replaced by specialized core_collator::asort()
|
|
|
226 |
* use new make_temp_directory() and make_cache_directory()
|
|
|
227 |
|
|
|
228 |
|
|
|
229 |
=== 2.1 ===
|
|
|
230 |
|
|
|
231 |
required changes in code:
|
|
|
232 |
* add new support for basic restore from 1.9
|
|
|
233 |
|
|
|
234 |
|
|
|
235 |
=== 2.0 ===
|
|
|
236 |
|
|
|
237 |
required changes in code:
|
|
|
238 |
* use new DML syntax everywhere
|
|
|
239 |
(https://moodledev.io/docs/apis/core/dml/ddl)
|
|
|
240 |
* use new DDL syntax in db/upgrade.php
|
|
|
241 |
(https://moodledev.io/docs/apis/core/dml/ddl)
|
|
|
242 |
* replace defaults.php by settings.php and db/install.php
|
|
|
243 |
* replace STATEMENTS section in db/install.xml with PHP code db/install.php or db/log.php
|
|
|
244 |
* move post installation code from lib.php into db/install.php
|
|
|
245 |
* move uninstallation code from lib.php to db/uninstall.php
|
|
|
246 |
* new mandatory naming of intro and introformat table fields in module tables,
|
|
|
247 |
the presence of these fields is indicated in xxx_plugin_supports()
|
|
|
248 |
* completely rewrite file handling
|
|
|
249 |
(https://moodledev.io/docs/apis/subsystems/files)
|
|
|
250 |
* rewrite backup/restore
|
|
|
251 |
(not finished yet)
|
|
|
252 |
* rewrite trusttext support - new db table columns needed
|
|
|
253 |
* migrate all module features from mod_edit.php form to lib.php/modulename_supports() function
|
|
|
254 |
* implement new gradebook support (legacy 1.8.x grading not supported anymore)
|
|
|
255 |
* migrate custom resource module subtypes into separate modules,
|
|
|
256 |
necessary only for custom plugins in mod/resource/
|
|
|
257 |
* use new $PAGE and $OUTPUT instead of old weblib functions
|
|
|
258 |
* theme changes: move plugin styles into mod/xxx/styles.css and use new css markers for images,
|
|
|
259 |
move all images into new mod/xxx/pix/ directory and use new outputlib api
|
|
|
260 |
move module icon to mod/xxx/pix/icon.gif
|
|
|
261 |
old global $THEME is fully replaced by $OUTPUT
|
|
|
262 |
create plugin renderers
|
|
|
263 |
* migrate all javascript new coding style using YUI3+YUI2
|
|
|
264 |
(https://moodledev.io/docs/guides/javascript/modules)
|
|
|
265 |
* remove '_utf8' from lang pack names, use new {a} syntax
|
|
|
266 |
* replace helps with new 'xxx_hlp' strings
|
|
|
267 |
* please note the $plugin->requires in version.php has to be bigger than 2010000000,
|
|
|
268 |
otherwise the plugin is marked as outdated and upgrade is interrupted
|
|
|
269 |
|
|
|
270 |
optional - no changes needed in older code:
|
|
|
271 |
* settingstree.php replaced by settings.php - just unset the $settings if you want to make custom part of settings admin tree
|
|
|
272 |
* support for new mforms editor element and embedded files
|
|
|
273 |
(not finished yet)
|
|
|
274 |
* portfolio support
|
|
|
275 |
(http://docs.moodle.org/dev/Portfolio_API)
|
|
|
276 |
* course completion tracking support
|
|
|
277 |
* new navigation features
|
|
|
278 |
* new comments API
|
|
|
279 |
(https://docs.moodle.org/dev/Comment_API)
|
|
|
280 |
* new ratings API
|
|
|
281 |
(https://docs.moodle.org/dev/Rating_API)
|