Commit | Line | Data |
---|---|---|
690a55f6 | 1 | This files describes API changes in core libraries and APIs, |
ee362526 PS |
2 | information provided here is intended especially for developers. |
3 | ||
4051685b AG |
4 | === 2.8 === |
5 | ||
6 | * lib/excelllib.class.php has been updated. The class MoodleExcelWorkbook will now only produce excel 2007 files. | |
ebdcb292 SH |
7 | * renderers: We now remove the suffix _renderable when looking for a render method for a renderable. |
8 | If you have a renderable class named like "blah_renderable" and have a method on a renderer named "render_blah_renderable" | |
9 | you will need to change the name of your render method to "render_blah" instead, as renderable at the end is no longer accepted. | |
d25c41fb | 10 | * New functions get_course_and_cm_from_cmid($cmorid, $modulename) and |
11 | get_course_and_cm_from_instance($instanceorid, $modulename) can be used to | |
12 | more efficiently load these basic data objects at the start of a script. | |
13 | * New function cm_info::create($cm) can be used when you need a cm_info | |
14 | object, but have a $cm which might only be a standard database record. | |
061e6b28 | 15 | * $CFG->enablegroupmembersonly no longer exists. |
516ea6cf DP |
16 | * Scheduled tasks have gained support for syntax to introduce variability when a |
17 | task will run across installs. When a when hour or minute are defined as 'R' | |
18 | they will be installed with a random hour/minute value. | |
4051685b | 19 | |
83988eb1 EL |
20 | DEPRECATIONS: |
21 | * completion_info->get_incomplete_criteria() is deprecated and will be removed in Moodle 3.0. | |
d6caf637 | 22 | * grade_category::aggregate_values() is deprecated and will be removed in Moodle 3.0. |
061e6b28 | 23 | * groups_filter_users_by_course_module_visible() is deprecated; replace with |
24 | core_availability\info::filter_user_list. Will be removed in Moodle 3.0. | |
25 | * groups_course_module_visible() is deprecated; replace with $cm->uservisible. | |
26 | * cm_info property $cm->groupmembersonly is deprecated and always returns 0. | |
27 | Use core_availability\info::filter_user_list if trying to determine which | |
28 | other users can see an activity. | |
29 | * cm_info method $cm->is_user_access_restricted_by_group() is deprecated and | |
30 | always returns false. Use $cm->uservisible to determine whether the user can | |
31 | access the activity. | |
32 | * Constant FEATURE_GROUPMEMBERSONLY (used in module _supports functions) is | |
33 | deprecated. | |
83988eb1 | 34 | |
2b55cb1b | 35 | === 2.6.4 / 2.7.1 === |
83988eb1 | 36 | |
2b55cb1b RT |
37 | * setnew_password_and_mail() and update_internal_user_password() will trigger |
38 | \core\event\user_password_updated. Previously they used to generate | |
39 | \core\event\user_updated event. | |
40 | * update_internal_user_password() accepts optional boolean $fasthash for fast | |
41 | hashing. | |
42 | * user_update_user() and user_create_user() api's accept optional param | |
43 | $triggerevent to avoid respective events to be triggred from the api's. | |
44 | ||
c4b0d6dc AA |
45 | === 2.7 === |
46 | ||
9e00d46b | 47 | * PHPUnit cannot be installed via PEAR any more, please use composer package manager instead. |
686e3b3a FM |
48 | * $core_renderer->block_move_target() changed to support more verbose move-block-here descriptions. |
49 | ||
1480f6ea MG |
50 | Events and Logging: |
51 | * Significant changes in Logging API. For upgrading existing events_trigger() and | |
52 | add_to_log() see http://docs.moodle.org/dev/Migrating_logging_calls_in_plugins | |
e2cb3ffa | 53 | For accessing logs from plugins see http://docs.moodle.org/dev/Migrating_log_access_in_reports |
c446f41a MN |
54 | * The validation of the following events is now stricter (see MDL-45445): |
55 | - \core\event\blog_entry_created | |
56 | - \core\event\blog_entry_deleted | |
57 | - \core\event\blog_entry_updated | |
58 | - \core\event\cohort_member_added | |
59 | - \core\event\cohort_member_removed | |
60 | - \core\event\course_category_deleted | |
61 | - \core\event\course_completed | |
62 | - \core\event\course_content_deleted | |
63 | - \core\event\course_created | |
64 | - \core\event\course_deleted | |
65 | - \core\event\course_restored | |
66 | - \core\event\course_section_updated (see MDL-45229) | |
67 | - \core\event\email_failed | |
68 | - \core\event\group_member_added | |
69 | - \core\event\group_member_removed | |
70 | - \core\event\note_created | |
71 | - \core\event\note_deleted | |
72 | - \core\event\note_updated | |
73 | - \core\event\role_assigned | |
74 | - \core\event\role_deleted | |
75 | - \core\event\role_unassigned | |
76 | - \core\event\user_graded | |
77 | - \core\event\user_loggedinas | |
78 | - \core\event\user_profile_viewed | |
79 | - \core\event\webservice_token_created | |
1480f6ea | 80 | |
a4582a51 | 81 | DEPRECATIONS: |
994e5662 | 82 | * $module uses in mod/xxx/version.php files is now deprecated. Please use $plugin instead. It will be removed in Moodle 2.10. |
3345e24f | 83 | * Update init methods in all event classes - "level" property was renamed to "edulevel", the level property is now deprecated. |
c4b0d6dc | 84 | * Abstract class \core\event\course_module_instances_list_viewed is deprecated now, use \core\event\instances_list_viewed instead. |
e1b16f97 | 85 | * Abstract class core\event\content_viewed has been deprecated. Please extend base event or other relevant abstract class. |
45faf15d AA |
86 | * mod_book\event\instances_list_viewed has been deprecated. Please use mod_book\event\course_module_instance_list_viewed instead. |
87 | * mod_chat\event\instances_list_viewed has been deprecated. Please use mod_chat\event\course_module_instance_list_viewed instead. | |
88 | * mod_choice\event\instances_list_viewed has been deprecated. Please use mod_choice\event\course_module_instance_list_viewed instead. | |
89 | * mod_feedback\event\instances_list_viewed has been deprecated. Please use mod_feedback\event\course_module_instance_list_viewed instead. | |
90 | * mod_page\event\instances_list_viewed has been deprecated. Please use mod_page\event\course_module_instance_list_viewed instead. | |
1f1a8f03 | 91 | * The constants FRONTPAGECOURSELIST, FRONTPAGETOPICONLY & FRONTPAGECOURSELIMIT have been removed. |
8d1f33e1 | 92 | * Conditional availability API has moved and changed. The condition_info class is |
93 | replaced by \core_availability\info_module, and condition_info_section by | |
94 | \core_availability\info_section. (Code that uses the old classes will generally | |
95 | still work.) | |
96 | * coursemodule_visible_for_user() has been deprecated but still works - replaced | |
97 | by a new static function \core_availability\info_module::is_user_visible() | |
98 | * cm_info::is_user_access_restricted_by_conditional_access has been deprecated | |
99 | but still works (it has never done what its name suggests, and is | |
100 | unnecessary). | |
101 | * cm_info and section_info property showavailability has been deprecated, but | |
102 | still works (with the caveat that this information is now per-user). | |
103 | * cm_info and section_info properties availablefrom and availableuntil have been | |
104 | deprecated and always return zero (underlying data doesn't have these values). | |
105 | * section_info property groupingid has been deprecated and always returns zero, | |
106 | same deal. | |
07e78d93 DP |
107 | * Various cm_info methods have been deprecated in favour of their read-only properties (get_url(), get_content(), get_extra_classes(), |
108 | get_on_click(), get_custom_data(), get_after_link, get_after_edit_icons) | |
af64bc61 | 109 | * The ajaxenabled function has been deprecated and always returns true. All code should be fully functional in Javascript. |
52dc1de7 | 110 | * count_login_failures() has been deprecated, use user_count_login_failures() instead. Refer MDL-42891 for details. |
c4b0d6dc | 111 | |
8d1f33e1 | 112 | Conditional availability (activities and sections): |
113 | * New conditional availability API in /availability, including new availability | |
114 | condition plugins in /availability/condition. The new API is very similar with | |
115 | regard to checking availability, but any code that modifies availability settings | |
116 | for an activity or section is likely to need substantial changes. | |
117 | ||
5947ab33 AN |
118 | YUI: |
119 | * The lightbox attribute for moodle-core-notification-dialogue has been | |
120 | deprecated and replaced by the modal attribute. This was actually | |
121 | changed in Moodle 2.2, but has only been marked as deprecated now. It | |
122 | will be removed in Moodle 2.9. | |
0860dd78 AN |
123 | * When destroying any type of dialogue based on moodle-core-notification, the relevant content is also removed from |
124 | the DOM. Previously it was left orphaned. | |
5947ab33 | 125 | |
a4582a51 AN |
126 | JavaSript: |
127 | * The findChildNodes global function has been deprecated. Y.all should | |
128 | be used instead. | |
1d98ca14 AN |
129 | * The callback argument to confirm_action and M.util.show_confirm_dialog has been deprecated. If you need to write a |
130 | confirmation which includes a callback, please use moodle-core-notification-confirmation and attach callbacks to the | |
131 | events provided. | |
a4582a51 | 132 | |
9843e5ec | 133 | * New locking api and admin settings to configure the system locking type. |
3b635513 DM |
134 | * New "Time spent waiting for the database" performance metric displayed along with the |
135 | other MDL_PERF vars; the change affects both the error logs and the vars displayed in | |
136 | the page footer. | |
cc033d48 MN |
137 | * Changes in the tag API. The component and contextid are now saved when assigning tags to an item. Please see |
138 | tag/upgrade.txt for more information. | |
9843e5ec | 139 | |
9e19a0f0 | 140 | === 2.6 === |
8e8891b7 | 141 | |
cc8fecb5 | 142 | * Use new methods from core_component class instead of get_core_subsystems(), get_plugin_types(), |
d0cac8b5 FM |
143 | get_plugin_list(), get_plugin_list_with_class(), get_plugin_directory(), normalize_component(), |
144 | get_component_directory() and get_plugin_list_with_file(). The names of the new methods are | |
145 | exactly the same, the only differences are that core_component::get_plugin_types() now always returns | |
146 | full paths and core_component::get_plugin_list() does not accept empty parameter any more. | |
d534708f | 147 | * Use core_text::* instead of textlib:: and also core_collator::* instead of collatorlib::*. |
af578aec | 148 | * Use new function moodleform::mock_submit() to simulate form submission in unit tests (backported). |
85b38061 | 149 | * New $CFG->localcachedir setting useful for cluster nodes. Admins have to update X-Sendfile aliases if used. |
656250de PS |
150 | * MS SQL Server drivers are now using NVARCHAR(MAX) instead of NTEXT and VARBINARY(MAX) instead of IMAGE, |
151 | this change should be fully transparent and it should help significantly with add-on compatibility. | |
598a82c9 PS |
152 | * The string manager classes were renamed. Note that they should not be modified or used directly, |
153 | always use get_string_manager() to get instance of the string manager. | |
aae18d2a | 154 | * The ability to use an 'insecure' rc4encrypt/rc4decrypt key has been removed. |
96f81ea3 PS |
155 | * Use $CFG->debugdeveloper instead of debugging('', DEBUG_DEVELOPER). |
156 | * Use set_debugging(DEBUG_xxx) when changing debugging level for current request. | |
d55f05ef | 157 | * Function moveto_module() does not modify $mod argument and instead now returns the new module visibility value. |
db5f2d33 DM |
158 | * Use behat_selectors::get_allowed_text_selectors() and behat_selectors::get_allowed_selectors() instead of |
159 | behat_command::$allowedtextselectors and behat_command::$allowedselectors | |
ac2b2713 | 160 | * Subplugins are supported in admin tools and local plugins. |
71ab7e51 | 161 | * file_packer/zip_packer API has been modified so that key functions support a new file_progress interface |
162 | to report progress during long operations. Related to this, zip_archive now supports an estimated_count() | |
163 | function that returns an approximate number of entries in the zip faster than the count() function. | |
d872881f | 164 | * Class cm_info no longer extends stdClass. All properties are read-only and calculated on first request only. |
44ddd2a1 | 165 | * Class course_modinfo no longer extends stdClass. All properties are read-only. |
64501eee MG |
166 | * Database fields modinfo and sectioncache in table course are removed. Application cache core/coursemodinfo |
167 | is used instead. Course cache is still reset, rebuilt and retrieved using function rebuild_course_cache() and | |
168 | get_fast_modinfo(). Purging all caches and every core upgrade purges course modinfo cache as well. | |
169 | If function get_fast_modinfo() is called for multiple courses make sure to include field cacherev in course | |
170 | object. | |
3bcf6b3c RT |
171 | * Internal (noreply and support) user support has been added for sending/receiving message. |
172 | Use core_user::get_noreply_user() and core_user::get_support_user() to get noreply and support user's respectively. | |
173 | Real users can be used as noreply/support users by setting $CFG->noreplyuserid and $CFG->supportuserid | |
137885b7 | 174 | * New function readfile_allow_large() in filelib.php for use when very large files may need sending to user. |
e87214bd | 175 | * Use core_plugin_manager::reset_caches() when changing visibility of plugins. |
bde002b8 PS |
176 | * Implement new method get_enabled_plugins() method in subplugin info classes. |
177 | * Each plugin should include version information in version.php. | |
723a6e56 | 178 | * Module and block tables do not contain version column any more, use get_config('xx_yy', 'version') instead. |
5fed8433 | 179 | * $USER->password field is intentionally unset so that session data does not contain password hashes. |
38fc0130 | 180 | * Use core_shutdown_manager::register_function() instead of register_shutdown_function(). |
c858655d | 181 | * New file packer for .tar.gz files; obtain by calling get_file_packer('application/x-gzip'). Intended initially |
182 | for use in backup/restore only, as there are limitations on supported filenames. Also new packer for | |
183 | backups which supports both compression formats; get_file_packer('application/vnd.moodle.backup'). | |
184 | * New optional parameter to stored_file::get_content_file_handle to open file handle with 'gzopen' instead | |
185 | of 'fopen' to read gzip-compressed files if required. | |
6c679d15 | 186 | * update_internal_user_password() and setnew_password_and_mail() now trigger user_updated event. |
b2858b91 | 187 | * Add thirdpartylibs.xml file to plugins that bundle any 3rd party libraries. |
2dd8e935 DP |
188 | * New class introduced to help auto generate zIndex values for modal dialogues. Class "moodle-has-zindex" |
189 | should set on any element which uses a non-default zindex and needs to ensure it doesn't show above a | |
190 | dialogue. | |
0c431257 PS |
191 | * $CFG->filelifetime is now used consistently for most file serving operations, the default was lowered |
192 | to 6 hours from 24 hours because etags and x-sendfile support should make file serving less expensive. | |
d61d3e82 RT |
193 | * Date format locale charset for windows server will come from calendar type and for gregorian it will use |
194 | lang file. | |
2d5c7d50 FM |
195 | * The library to interact with Box.net (class boxclient) is only compatible with their APIv1 which |
196 | reaches its end of life on the 14th of Dec. You should migrate your scripts to make usage of the | |
197 | new class boxnet_client(). Note that the method names and return values have changed. | |
b404b1f4 AG |
198 | * Settings pages are now possible for Calendar type plugins. Calendar type plugins that require a settings page to |
199 | work properly will need to set their requires version to a number that is equal to or grater than the 2.6.1 release version. | |
fb16acf2 DP |
200 | * The admin/tool/generator tool was overhauled to use testing data generators and the previous interface to create |
201 | test data was removed (it was not working correctly anyway). If you were using this tool you will probably need to | |
202 | update your code. | |
05226d76 DP |
203 | |
204 | DEPRECATIONS: | |
205 | Various previously deprecated functions have now been altered to throw DEBUG_DEVELOPER debugging notices | |
206 | and will be removed in a future release (target: 2.8), a summary follows: | |
207 | ||
208 | Accesslib: | |
c3d2fbf9 SH |
209 | * get_context_instance() -> context_xxxx::instance() |
210 | * get_context_instance_by_id() -> context::instance_by_id($id) | |
211 | * get_system_context() -> context_system::instance() | |
212 | * context_moved() -> context::update_moved() | |
213 | * preload_course_contexts() -> context_helper::preload_course() | |
214 | * context_instance_preload() -> context_helper::preload_from_record() | |
215 | * context_instance_preload_sql() -> context_helper::get_preload_record_columns_sql() | |
216 | * get_contextlevel_name() -> context_helper::get_level_name() | |
217 | * create_contexts() -> context_helper::create_instances() | |
218 | * cleanup_contexts() -> context_helper::cleanup_instances() | |
219 | * build_context_path() -> context_helper::build_all_paths() | |
220 | * print_context_name() -> $context->get_context_name() | |
221 | * mark_context_dirty() -> $context->mark_dirty() | |
222 | * delete_context() -> $context->delete_content() or context_helper::delete_instance() | |
223 | * get_context_url() -> $context->get_url() | |
224 | * get_course_context() -> $context->get_course_context() | |
225 | * get_parent_contexts() -> $context->get_parent_context_ids() | |
226 | * get_parent_contextid() -> $context->get_parent_context() | |
227 | * get_child_contexts() -> $context->get_child_contexts() | |
228 | * rebuild_contexts() -> $context->reset_paths() | |
229 | * get_user_courses_bycap() -> enrol_get_users_courses() | |
230 | * get_courseid_from_context() -> $context->get_course_context(false) | |
231 | * get_role_context_caps() -> (no replacement) | |
232 | * load_temp_role() -> (no replacement) | |
233 | * remove_temp_roles() -> (no replacement) | |
234 | * get_related_contexts_string() -> $context->get_parent_context_ids(true) | |
235 | * get_recent_enrolments() -> (no replacement) | |
05226d76 DP |
236 | |
237 | Enrollment: | |
c3d2fbf9 SH |
238 | * get_course_participants() -> get_enrolled_users() |
239 | * is_course_participant() -> is_enrolled() | |
05226d76 DP |
240 | |
241 | Output: | |
c3d2fbf9 SH |
242 | * current_theme() -> $PAGE->theme->name |
243 | * skip_main_destination() -> $OUTPUT->skip_link_target() | |
244 | * print_container() -> $OUTPUT->container() | |
245 | * print_container_start() -> $OUTPUT->container_start() | |
246 | * print_container_end() -> $OUTPUT->container_end() | |
247 | * print_continue() -> $OUTPUT->continue_button() | |
248 | * print_header() -> $PAGE methods | |
249 | * print_header_simple() -> $PAGE methods | |
250 | * print_side_block() -> $OUTPUT->block() | |
251 | * print_arrow() -> $OUTPUT->arrow() | |
252 | * print_scale_menu_helpbutton() -> $OUTPUT->help_icon_scale($courseid, $scale) | |
253 | * print_checkbox() -> html_writer::checkbox() | |
05226d76 DP |
254 | |
255 | Navigation: | |
c3d2fbf9 SH |
256 | * print_navigation() -> $OUTPUT->navbar() |
257 | * build_navigation() -> $PAGE->navbar methods | |
258 | * navmenu() -> (no replacement) | |
50ae8814 MN |
259 | * settings_navigation:: |
260 | get_course_modules() -> (no replacement) | |
05226d76 | 261 | |
2a68ee0e MG |
262 | Files and repositories: |
263 | * stored_file::replace_content_with() -> stored_file::replace_file_with() | |
264 | * stored_file::set_filesize() -> stored_file::replace_file_with() | |
87355560 MG |
265 | * stored_file::get_referencelifetime() -> (no replacement) |
266 | * repository::sync_external_file() -> see repository::sync_reference() | |
267 | * repository::get_file_by_reference() -> repository::sync_reference() | |
268 | * repository:: | |
269 | get_reference_file_lifetime() -> (no replacement) | |
270 | * repository::sync_individual_file() -> (no replacement) | |
271 | * repository::reset_caches() -> (no replacement) | |
2a68ee0e | 272 | |
05226d76 | 273 | Calendar: |
c3d2fbf9 SH |
274 | * add_event() -> calendar_event::create() |
275 | * update_event() -> calendar_event->update() | |
276 | * delete_event() -> calendar_event->delete() | |
277 | * hide_event() -> calendar_event->toggle_visibility(false) | |
278 | * show_event() -> calendar_event->toggle_visibility(true) | |
05226d76 DP |
279 | |
280 | Misc: | |
c3d2fbf9 SH |
281 | * filter_text() -> format_text(), format_string()... |
282 | * httpsrequired() -> $PAGE->https_required() | |
283 | * detect_munged_arguments() -> clean_param([...], PARAM_FILE) | |
284 | * mygroupid() -> groups_get_all_groups() | |
285 | * js_minify() -> core_minify::js_files() | |
286 | * css_minify_css() -> core_minify::css_files() | |
64501eee | 287 | * course_modinfo::build_section_cache() -> (no replacement) |
3bcf6b3c | 288 | * generate_email_supportuser() -> core_user::get_support_user() |
c3d2fbf9 | 289 | |
d79d5ac2 PS |
290 | Sessions: |
291 | * session_get_instance()->xxx() -> \core\session\manager::xxx() | |
292 | * session_kill_all() -> \core\session\manager::kill_all_sessions() | |
293 | * session_touch() -> \core\session\manager::touch_session() | |
294 | * session_kill() -> \core\session\manager::kill_session() | |
295 | * session_kill_user() -> \core\session\manager::kill_user_sessions() | |
296 | * session_gc() -> \core\session\manager::gc() | |
297 | * session_set_user() -> \core\session\manager::set_user() | |
298 | * session_is_loggedinas() -> \core\session\manager::is_loggedinas() | |
299 | * session_get_realuser() -> \core\session\manager::get_realuser() | |
300 | * session_loginas() -> \core\session\manager::loginas() | |
301 | ||
c3d2fbf9 SH |
302 | User-agent related functions: |
303 | * check_browser_operating_system() -> core_useragent::check_browser_operating_system() | |
304 | * check_browser_version() -> core_useragent::check_browser_version() | |
305 | * get_device_type() -> core_useragent::get_device_type() | |
306 | * get_device_type_list() -> core_useragent::get_device_type_list() | |
307 | * get_selected_theme_for_device_type() -> core_useragent::get_device_type_theme() | |
308 | * get_device_cfg_var_name() -> core_useragent::get_device_type_cfg_var_name() | |
309 | * set_user_device_type() -> core_useragent::set_user_device_type() | |
310 | * get_user_device_type() -> core_useragent::get_user_device_type() | |
311 | * get_browser_version_classes() -> core_useragent::get_browser_version_classes() | |
9e19a0f0 | 312 | |
78686995 AN |
313 | YUI: |
314 | * moodle-core-notification has been deprecated with a recommendation of | |
73b4c1da | 315 | using its subclasses instead. This is to allow for reduced page |
78686995 AN |
316 | transport costs. Current subclasses include: |
317 | * dialogue | |
318 | * alert | |
319 | * confirm | |
320 | * exception | |
321 | * ajaxexception | |
322 | ||
f0f0e1fe PS |
323 | Event triggering and event handlers: |
324 | * All existing events and event handlers should be replaced by new | |
325 | event classes and matching new event observers. | |
326 | * See http://docs.moodle.org/dev/Event_2 for more information. | |
861b0510 FM |
327 | * The following events will be entirely removed, though they can still |
328 | be captured using handlers, but they should not be used any more. | |
329 | * groups_members_removed -> \core\event\group_member_removed | |
330 | * groups_groupings_groups_removed -> (no replacement) | |
331 | * groups_groups_deleted -> \core\event\group_deleted | |
332 | * groups_groupings_deleted -> \core\event\grouping_deleted | |
63deb5c3 | 333 | * edit_module_post_actions() does not trigger events any more. |
f0f0e1fe | 334 | |
a2602457 | 335 | === 2.5.1 === |
336 | ||
337 | * New get_course() function for use when obtaining the course record from database. Will | |
338 | reuse existing $COURSE or $SITE globals if possible to improve performance. | |
339 | ||
9a36be73 MG |
340 | === 2.5 === |
341 | ||
bae2846c EL |
342 | * The database drivers (moodle_database and subclasses) aren't using anymore the ::columns property |
343 | for caching database metadata. MUC (databasemeta) is used instead. Any custom DB driver should | |
344 | apply for that change. | |
cedc656b EL |
345 | * The cron output has been changed to include time and memory usage (see cron_trace_time_and_memory()), |
346 | so any custom utility relying on the old output may require modification. | |
6b219310 DW |
347 | * Function get_max_file_sizes now returns an option for (for example) "Course limit (500MB)" or |
348 | "Site limit (200MB)" when appropriate with the option set to 0. This function no longer returns | |
349 | an option for 0 bytes. Existing code that was replacing the 0 option in the return | |
350 | from this function with a more sensible message, can now use the return from this function directly. | |
9a36be73 | 351 | * Functions responsible for output in course/lib.php are deprecated, the code is moved to |
b1c2fc65 MG |
352 | appropriate renderers: print_section(), print_section_add_menus(), get_print_section_cm_text(), |
353 | make_editing_buttons() | |
9a36be73 MG |
354 | See functions' phpdocs in lib/deprecatedlib.php |
355 | * Function get_print_section_cm_text() is deprecated, replaced with methods in cm_info | |
3cb856c7 PS |
356 | * zip_packer may create empty zip archives, there is a new option to ignore |
357 | problematic files when creating archive | |
93cc145f MN |
358 | * The function delete_course_module was deprecated and has been replaced with |
359 | course_delete_module. The reason for this was because the function delete_course_module | |
360 | only partially deletes data, so wherever it was called extra code was needed to | |
361 | perform the whole deletion process. The function course_delete_module now takes care | |
362 | of the whole process. | |
91c8cf99 F |
363 | * curl::setopt() does not accept constant values any more. As it never worked properly, |
364 | we decided to make the type check stricter. Now, the keys of the array pass must be a string | |
365 | corresponding to the curl constant name. | |
043f1005 RT |
366 | * Function get_users_listing now return list of users except guest and deleted users. Previously |
367 | deleted users were excluded by get_users_listing. As guest user is not expected while browsing users, | |
368 | and not included in get_user function, it will not be returned by get_users_listing. | |
1c14b1c1 DW |
369 | * The add_* functions in course/dnduploadlib.php have been deprecated. Plugins should be using the |
370 | MODNAME_dndupload_register callback instead. | |
690a55f6 DM |
371 | * The signature of the add() method of classes implementing the parentable_part_of_admin_tree |
372 | interface (such as admin_category) has been extended. The new parameter allows the caller | |
373 | to prepend the new node before an existing sibling in the admin tree. | |
87b6981e EL |
374 | * condition_info:get_condition_user_fields($formatoptions) now accepts the optional |
375 | param $formatoptions, that will determine if the field names are processed by | |
376 | format_string() with the passed options. | |
689096bc | 377 | * remove all references to $CFG->gdversion, GD PHP extension is now required |
b45ba7f6 DP |
378 | * Formslib will now throw a developer warning if a PARAM_ type hasn't been set for elements which |
379 | need it. Please set PARAM_RAW explicitly if you do not want any cleaning. | |
4e0b6025 | 380 | * Functions responsible for managing and accessing course categories are moved to class coursecat |
09ae7ee0 MG |
381 | in lib/coursecatlib.php, functions responsible for rendering courses and categories lists are |
382 | moved to course/renderer.php. The following global functions are deprecated: make_categories_list(), | |
6e1d1ee0 | 383 | category_delete_move(), category_delete_full(), move_category(), course_category_hide(), |
8db5dcb7 | 384 | course_category_show(), get_course_category(), create_course_category(), get_all_subcategories(), |
09ae7ee0 MG |
385 | get_child_categories(), get_categories(), print_my_moodle(), print_remote_course(), |
386 | print_remote_host(), print_whole_category_list(), print_category_info(), get_course_category_tree(), | |
387 | print_courses(), print_course(), get_category_courses_array(), get_category_courses_array_recursively(), | |
388 | get_courses_wmanagers() | |
389 | See http://docs.moodle.org/dev/Courses_lists_upgrade_to_2.5 | |
0e2ca62e | 390 | * $core_renderer->block_move_target() changed to support more verbose move-block-here descriptions. |
38c1dd19 RT |
391 | * Additional (optional) param $onlyactive has been added to get_enrolled_users, count_enrolled_users |
392 | functions to get information for only active (excluding suspended enrolments) users. Included two | |
393 | helper functions extract_suspended_users, get_suspended_userids to extract suspended user information. | |
e87214bd | 394 | * The core_plugin_manager class now provides two new helper methods for getting information |
d7d48b40 | 395 | about known plugins: get_plugins_of_type() and get_subplugins_of_plugin(). |
e87214bd | 396 | * The get_uninstall_url() method of all subclasses of \core\plugininfo\base class is now expected |
73658371 DM |
397 | to always return moodle_url. Subclasses can use the new method is_uninstall_allowed() |
398 | to control the availability of the 'Uninstall' link at the Plugins overview page (previously | |
399 | they would do it by get_uninstall_url() returning null). By default, URL to a new general plugin | |
400 | uninstall tool is returned. Unless the plugin type needs extra steps that can't be handled by | |
401 | plugininfo_xxx::uninstall() method or xmldb_xxx_uninstall() function, this default URL should | |
402 | satisfy all plugin types. | |
9a36be73 | 403 | |
4efcfaa3 | 404 | Database (DML) layer: |
77a5c093 PS |
405 | * $DB->sql_empty() is deprecated, you have to use sql parameters with empty values instead, |
406 | please note hardcoding of empty strings in SQL queries breaks execution in Oracle database. | |
2d97513d PS |
407 | * Indexes must not be defined on the same columns as keys, this is now reported as fatal problem. |
408 | Please note that internally we create indexes instead of foreign keys. | |
9a36be73 | 409 | |
238b8bc9 ARN |
410 | YUI changes: |
411 | * M.util.help_icon has been deprecated. Code should be updated to use moodle-core-popuphelp | |
412 | instead. To do so, remove any existing JS calls to M.util.help_icon from your PHP and ensure | |
413 | that your help link is placed in a span which has the class 'helplink'. | |
414 | ||
6c2be903 DP |
415 | === 2.4 === |
416 | ||
417 | * Pagelib: Numerous deprecated functions were removed as classes page_base, page_course | |
418 | and page_generic_activity. | |
704533fc | 419 | * use $CFG->googlemapkey3 instead of removed $CFG->googlemapkey and migrate to Google Maps API V3 |
b874d5c6 | 420 | * Function settings_navigation::add_course_editing_links() is completely removed |
ee7084e9 MG |
421 | * function global_navigation::format_display_course_content() is removed completely (the |
422 | functionality is moved to course format class) | |
423 | * in the function global_navigation::load_generic_course_sections() the argument $courseformat is | |
424 | removed | |
7881024e PS |
425 | * New component and itemid columns in groups_members table - this allows plugin to create protected |
426 | group memberships using 'xx_yy_allow_group_member_remove' callback and there is also a new restore | |
427 | callback 'xx_yy_restore_group_member()'. | |
428 | * New general role assignment restore plugin callback 'xx_yy_restore_role_assignment()'. | |
97960146 MG |
429 | * functions get_generic_section_name(), get_all_sections(), add_mod_to_section(), get_all_mods() |
430 | are deprecated. See their phpdocs in lib/deprecatedlib.php on how to replace them | |
ee362526 | 431 | |
d2a27ab0 ARN |
432 | YUI changes: |
433 | * moodle-enrol-notification has been renamed to moodle-core-notification | |
3542e01a | 434 | * YUI2 code must now use 2in3, see http://yuilibrary.com/yui/docs/yui/yui-yui2.html |
7266bd3e ARN |
435 | * M.util.init_select_autosubmit() and M.util.init_url_select() have been deprecated. Code using this should be updated |
436 | to use moodle-core-formautosubmit | |
d2a27ab0 | 437 | |
94c9db54 PS |
438 | Unit testing changes: |
439 | * output debugging() is not sent to standard output any more, | |
440 | use $this->assertDebuggingCalled(), $this->assertDebuggingNotCalled(), | |
441 | $this->getDebuggingMessages() or $this->assertResetDebugging() instead. | |
442 | ||
e618cdf3 PS |
443 | === 2.3 === |
444 | ||
445 | Database layer changes: | |
446 | * objects are not allowed in paramters of DML functions, use explicit casting to strings if necessary | |
447 | ||
19526d91 DP |
448 | Note: |
449 | * DDL and DML methods which were deprecated in 2.0 have now been removed, they will no longer produce | |
450 | debug messages and will produce fatal errors | |
e618cdf3 | 451 | |
796495fe | 452 | API changes: |
daefd6eb | 453 | |
796495fe | 454 | * send_stored_file() has changed its interface |
daefd6eb | 455 | * deleted several resourcelib_embed_* functions from resourcelib.php |
796495fe | 456 | |
ee362526 PS |
457 | === 2.2 === |
458 | ||
459 | removed unused libraries: | |
460 | * odbc, base32, CodeSniffer, overlib, apd profiling, kses, Smarty, PEAR Console, swfobject, cssshover.htc, md5.js | |
461 | ||
462 | API changes: | |
463 | * new admin/tool plugin type | |
464 | * new context API - old API is still available | |
8e470797 | 465 | * deleted users do not have context any more |
ee362526 PS |
466 | * removed global search |
467 | ||
468 | ||
469 | === 2.1 === | |
470 | ||
471 | API changes: | |
472 | * basic suport for restore from 1.9 | |
473 | * new mobile devices API | |
474 | * new questions API | |
475 | ||
476 | ||
477 | === 2.0 === | |
478 | ||
479 | API changes: | |
480 | * new DML API - http://docs.moodle.org/dev/DML_functions | |
481 | * new DDL API - http://docs.moodle.org/dev/DDL_functions | |
482 | * new file API - http://docs.moodle.org/dev/File_API | |
483 | * new $PAGE and $OUTPUT API | |
484 | * new navigation API | |
485 | * new theme API - http://docs.moodle.org/dev/Theme_changes_in_2.0 | |
486 | * new javascript API - http://docs.moodle.org/dev/JavaScript_usage_guide | |
487 | * new portfolio API | |
488 | * new local plugin type | |
489 | * new translation support - http://lang.moodle.org | |
490 | * new web service API | |
491 | * new cohorts API | |
492 | * new messaging API | |
493 | * new rating API | |
494 | * new comment API | |
495 | * new sessions API | |
496 | * new enrolment API | |
497 | * new backup/restore API | |
498 | * new blocks API | |
499 | * new filters API | |
500 | * improved plugin support (aka Frankenstyle) | |
501 | * new registration and hub API | |
502 | * new course completion API | |
503 | * new plagiarism API | |
504 | * changed blog API | |
505 | * new text editor API | |
19526d91 | 506 | * new my moodle and profiles API |