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