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 | ||
9e19a0f0 | 4 | === 2.6 === |
8e8891b7 | 5 | |
cc8fecb5 | 6 | * Use new methods from core_component class instead of get_core_subsystems(), get_plugin_types(), |
d0cac8b5 FM |
7 | get_plugin_list(), get_plugin_list_with_class(), get_plugin_directory(), normalize_component(), |
8 | get_component_directory() and get_plugin_list_with_file(). The names of the new methods are | |
9 | exactly the same, the only differences are that core_component::get_plugin_types() now always returns | |
10 | full paths and core_component::get_plugin_list() does not accept empty parameter any more. | |
d534708f | 11 | * Use core_text::* instead of textlib:: and also core_collator::* instead of collatorlib::*. |
af578aec | 12 | * Use new function moodleform::mock_submit() to simulate form submission in unit tests (backported). |
85b38061 | 13 | * New $CFG->localcachedir setting useful for cluster nodes. Admins have to update X-Sendfile aliases if used. |
656250de PS |
14 | * MS SQL Server drivers are now using NVARCHAR(MAX) instead of NTEXT and VARBINARY(MAX) instead of IMAGE, |
15 | this change should be fully transparent and it should help significantly with add-on compatibility. | |
598a82c9 PS |
16 | * The string manager classes were renamed. Note that they should not be modified or used directly, |
17 | always use get_string_manager() to get instance of the string manager. | |
aae18d2a | 18 | * The ability to use an 'insecure' rc4encrypt/rc4decrypt key has been removed. |
96f81ea3 PS |
19 | * Use $CFG->debugdeveloper instead of debugging('', DEBUG_DEVELOPER). |
20 | * Use set_debugging(DEBUG_xxx) when changing debugging level for current request. | |
d55f05ef | 21 | * Function moveto_module() does not modify $mod argument and instead now returns the new module visibility value. |
db5f2d33 DM |
22 | * Use behat_selectors::get_allowed_text_selectors() and behat_selectors::get_allowed_selectors() instead of |
23 | behat_command::$allowedtextselectors and behat_command::$allowedselectors | |
ac2b2713 | 24 | * Subplugins are supported in admin tools and local plugins. |
71ab7e51 | 25 | * file_packer/zip_packer API has been modified so that key functions support a new file_progress interface |
26 | to report progress during long operations. Related to this, zip_archive now supports an estimated_count() | |
27 | function that returns an approximate number of entries in the zip faster than the count() function. | |
d872881f | 28 | * Class cm_info no longer extends stdClass. All properties are read-only and calculated on first request only. |
44ddd2a1 | 29 | * Class course_modinfo no longer extends stdClass. All properties are read-only. |
05226d76 DP |
30 | |
31 | DEPRECATIONS: | |
32 | Various previously deprecated functions have now been altered to throw DEBUG_DEVELOPER debugging notices | |
33 | and will be removed in a future release (target: 2.8), a summary follows: | |
34 | ||
35 | Accesslib: | |
c3d2fbf9 SH |
36 | * get_context_instance() -> context_xxxx::instance() |
37 | * get_context_instance_by_id() -> context::instance_by_id($id) | |
38 | * get_system_context() -> context_system::instance() | |
39 | * context_moved() -> context::update_moved() | |
40 | * preload_course_contexts() -> context_helper::preload_course() | |
41 | * context_instance_preload() -> context_helper::preload_from_record() | |
42 | * context_instance_preload_sql() -> context_helper::get_preload_record_columns_sql() | |
43 | * get_contextlevel_name() -> context_helper::get_level_name() | |
44 | * create_contexts() -> context_helper::create_instances() | |
45 | * cleanup_contexts() -> context_helper::cleanup_instances() | |
46 | * build_context_path() -> context_helper::build_all_paths() | |
47 | * print_context_name() -> $context->get_context_name() | |
48 | * mark_context_dirty() -> $context->mark_dirty() | |
49 | * delete_context() -> $context->delete_content() or context_helper::delete_instance() | |
50 | * get_context_url() -> $context->get_url() | |
51 | * get_course_context() -> $context->get_course_context() | |
52 | * get_parent_contexts() -> $context->get_parent_context_ids() | |
53 | * get_parent_contextid() -> $context->get_parent_context() | |
54 | * get_child_contexts() -> $context->get_child_contexts() | |
55 | * rebuild_contexts() -> $context->reset_paths() | |
56 | * get_user_courses_bycap() -> enrol_get_users_courses() | |
57 | * get_courseid_from_context() -> $context->get_course_context(false) | |
58 | * get_role_context_caps() -> (no replacement) | |
59 | * load_temp_role() -> (no replacement) | |
60 | * remove_temp_roles() -> (no replacement) | |
61 | * get_related_contexts_string() -> $context->get_parent_context_ids(true) | |
62 | * get_recent_enrolments() -> (no replacement) | |
05226d76 DP |
63 | |
64 | Enrollment: | |
c3d2fbf9 SH |
65 | * get_course_participants() -> get_enrolled_users() |
66 | * is_course_participant() -> is_enrolled() | |
05226d76 DP |
67 | |
68 | Output: | |
c3d2fbf9 SH |
69 | * current_theme() -> $PAGE->theme->name |
70 | * skip_main_destination() -> $OUTPUT->skip_link_target() | |
71 | * print_container() -> $OUTPUT->container() | |
72 | * print_container_start() -> $OUTPUT->container_start() | |
73 | * print_container_end() -> $OUTPUT->container_end() | |
74 | * print_continue() -> $OUTPUT->continue_button() | |
75 | * print_header() -> $PAGE methods | |
76 | * print_header_simple() -> $PAGE methods | |
77 | * print_side_block() -> $OUTPUT->block() | |
78 | * print_arrow() -> $OUTPUT->arrow() | |
79 | * print_scale_menu_helpbutton() -> $OUTPUT->help_icon_scale($courseid, $scale) | |
80 | * print_checkbox() -> html_writer::checkbox() | |
05226d76 DP |
81 | |
82 | Navigation: | |
c3d2fbf9 SH |
83 | * print_navigation() -> $OUTPUT->navbar() |
84 | * build_navigation() -> $PAGE->navbar methods | |
85 | * navmenu() -> (no replacement) | |
05226d76 DP |
86 | |
87 | Calendar: | |
c3d2fbf9 SH |
88 | * add_event() -> calendar_event::create() |
89 | * update_event() -> calendar_event->update() | |
90 | * delete_event() -> calendar_event->delete() | |
91 | * hide_event() -> calendar_event->toggle_visibility(false) | |
92 | * show_event() -> calendar_event->toggle_visibility(true) | |
05226d76 DP |
93 | |
94 | Misc: | |
c3d2fbf9 SH |
95 | * filter_text() -> format_text(), format_string()... |
96 | * httpsrequired() -> $PAGE->https_required() | |
97 | * detect_munged_arguments() -> clean_param([...], PARAM_FILE) | |
98 | * mygroupid() -> groups_get_all_groups() | |
99 | * js_minify() -> core_minify::js_files() | |
100 | * css_minify_css() -> core_minify::css_files() | |
101 | ||
102 | User-agent related functions: | |
103 | * check_browser_operating_system() -> core_useragent::check_browser_operating_system() | |
104 | * check_browser_version() -> core_useragent::check_browser_version() | |
105 | * get_device_type() -> core_useragent::get_device_type() | |
106 | * get_device_type_list() -> core_useragent::get_device_type_list() | |
107 | * get_selected_theme_for_device_type() -> core_useragent::get_device_type_theme() | |
108 | * get_device_cfg_var_name() -> core_useragent::get_device_type_cfg_var_name() | |
109 | * set_user_device_type() -> core_useragent::set_user_device_type() | |
110 | * get_user_device_type() -> core_useragent::get_user_device_type() | |
111 | * get_browser_version_classes() -> core_useragent::get_browser_version_classes() | |
9e19a0f0 | 112 | |
78686995 AN |
113 | YUI: |
114 | * moodle-core-notification has been deprecated with a recommendation of | |
73b4c1da | 115 | using its subclasses instead. This is to allow for reduced page |
78686995 AN |
116 | transport costs. Current subclasses include: |
117 | * dialogue | |
118 | * alert | |
119 | * confirm | |
120 | * exception | |
121 | * ajaxexception | |
122 | ||
f0f0e1fe PS |
123 | Event triggering and event handlers: |
124 | * All existing events and event handlers should be replaced by new | |
125 | event classes and matching new event observers. | |
126 | * See http://docs.moodle.org/dev/Event_2 for more information. | |
861b0510 FM |
127 | * The following events will be entirely removed, though they can still |
128 | be captured using handlers, but they should not be used any more. | |
129 | * groups_members_removed -> \core\event\group_member_removed | |
130 | * groups_groupings_groups_removed -> (no replacement) | |
131 | * groups_groups_deleted -> \core\event\group_deleted | |
132 | * groups_groupings_deleted -> \core\event\grouping_deleted | |
f0f0e1fe | 133 | |
a2602457 | 134 | === 2.5.1 === |
135 | ||
136 | * New get_course() function for use when obtaining the course record from database. Will | |
137 | reuse existing $COURSE or $SITE globals if possible to improve performance. | |
138 | ||
9a36be73 MG |
139 | === 2.5 === |
140 | ||
bae2846c EL |
141 | * The database drivers (moodle_database and subclasses) aren't using anymore the ::columns property |
142 | for caching database metadata. MUC (databasemeta) is used instead. Any custom DB driver should | |
143 | apply for that change. | |
cedc656b EL |
144 | * The cron output has been changed to include time and memory usage (see cron_trace_time_and_memory()), |
145 | so any custom utility relying on the old output may require modification. | |
6b219310 DW |
146 | * Function get_max_file_sizes now returns an option for (for example) "Course limit (500MB)" or |
147 | "Site limit (200MB)" when appropriate with the option set to 0. This function no longer returns | |
148 | an option for 0 bytes. Existing code that was replacing the 0 option in the return | |
149 | from this function with a more sensible message, can now use the return from this function directly. | |
9a36be73 | 150 | * Functions responsible for output in course/lib.php are deprecated, the code is moved to |
b1c2fc65 MG |
151 | appropriate renderers: print_section(), print_section_add_menus(), get_print_section_cm_text(), |
152 | make_editing_buttons() | |
9a36be73 MG |
153 | See functions' phpdocs in lib/deprecatedlib.php |
154 | * Function get_print_section_cm_text() is deprecated, replaced with methods in cm_info | |
3cb856c7 PS |
155 | * zip_packer may create empty zip archives, there is a new option to ignore |
156 | problematic files when creating archive | |
93cc145f MN |
157 | * The function delete_course_module was deprecated and has been replaced with |
158 | course_delete_module. The reason for this was because the function delete_course_module | |
159 | only partially deletes data, so wherever it was called extra code was needed to | |
160 | perform the whole deletion process. The function course_delete_module now takes care | |
161 | of the whole process. | |
91c8cf99 F |
162 | * curl::setopt() does not accept constant values any more. As it never worked properly, |
163 | we decided to make the type check stricter. Now, the keys of the array pass must be a string | |
164 | corresponding to the curl constant name. | |
043f1005 RT |
165 | * Function get_users_listing now return list of users except guest and deleted users. Previously |
166 | deleted users were excluded by get_users_listing. As guest user is not expected while browsing users, | |
167 | and not included in get_user function, it will not be returned by get_users_listing. | |
1c14b1c1 DW |
168 | * The add_* functions in course/dnduploadlib.php have been deprecated. Plugins should be using the |
169 | MODNAME_dndupload_register callback instead. | |
690a55f6 DM |
170 | * The signature of the add() method of classes implementing the parentable_part_of_admin_tree |
171 | interface (such as admin_category) has been extended. The new parameter allows the caller | |
172 | to prepend the new node before an existing sibling in the admin tree. | |
87b6981e EL |
173 | * condition_info:get_condition_user_fields($formatoptions) now accepts the optional |
174 | param $formatoptions, that will determine if the field names are processed by | |
175 | format_string() with the passed options. | |
689096bc | 176 | * remove all references to $CFG->gdversion, GD PHP extension is now required |
b45ba7f6 DP |
177 | * Formslib will now throw a developer warning if a PARAM_ type hasn't been set for elements which |
178 | need it. Please set PARAM_RAW explicitly if you do not want any cleaning. | |
4e0b6025 | 179 | * Functions responsible for managing and accessing course categories are moved to class coursecat |
09ae7ee0 MG |
180 | in lib/coursecatlib.php, functions responsible for rendering courses and categories lists are |
181 | moved to course/renderer.php. The following global functions are deprecated: make_categories_list(), | |
6e1d1ee0 | 182 | category_delete_move(), category_delete_full(), move_category(), course_category_hide(), |
8db5dcb7 | 183 | course_category_show(), get_course_category(), create_course_category(), get_all_subcategories(), |
09ae7ee0 MG |
184 | get_child_categories(), get_categories(), print_my_moodle(), print_remote_course(), |
185 | print_remote_host(), print_whole_category_list(), print_category_info(), get_course_category_tree(), | |
186 | print_courses(), print_course(), get_category_courses_array(), get_category_courses_array_recursively(), | |
187 | get_courses_wmanagers() | |
188 | See http://docs.moodle.org/dev/Courses_lists_upgrade_to_2.5 | |
0e2ca62e | 189 | * $core_renderer->block_move_target() changed to support more verbose move-block-here descriptions. |
38c1dd19 RT |
190 | * Additional (optional) param $onlyactive has been added to get_enrolled_users, count_enrolled_users |
191 | functions to get information for only active (excluding suspended enrolments) users. Included two | |
192 | helper functions extract_suspended_users, get_suspended_userids to extract suspended user information. | |
d7d48b40 DM |
193 | * The plugin_manager class now provides two new helper methods for getting information |
194 | about known plugins: get_plugins_of_type() and get_subplugins_of_plugin(). | |
73658371 DM |
195 | * The get_uninstall_url() method of all subclasses of plugininfo_base class is now expected |
196 | to always return moodle_url. Subclasses can use the new method is_uninstall_allowed() | |
197 | to control the availability of the 'Uninstall' link at the Plugins overview page (previously | |
198 | they would do it by get_uninstall_url() returning null). By default, URL to a new general plugin | |
199 | uninstall tool is returned. Unless the plugin type needs extra steps that can't be handled by | |
200 | plugininfo_xxx::uninstall() method or xmldb_xxx_uninstall() function, this default URL should | |
201 | satisfy all plugin types. | |
9a36be73 | 202 | |
4efcfaa3 | 203 | Database (DML) layer: |
77a5c093 PS |
204 | * $DB->sql_empty() is deprecated, you have to use sql parameters with empty values instead, |
205 | please note hardcoding of empty strings in SQL queries breaks execution in Oracle database. | |
2d97513d PS |
206 | * Indexes must not be defined on the same columns as keys, this is now reported as fatal problem. |
207 | Please note that internally we create indexes instead of foreign keys. | |
9a36be73 | 208 | |
238b8bc9 ARN |
209 | YUI changes: |
210 | * M.util.help_icon has been deprecated. Code should be updated to use moodle-core-popuphelp | |
211 | instead. To do so, remove any existing JS calls to M.util.help_icon from your PHP and ensure | |
212 | that your help link is placed in a span which has the class 'helplink'. | |
213 | ||
6c2be903 DP |
214 | === 2.4 === |
215 | ||
216 | * Pagelib: Numerous deprecated functions were removed as classes page_base, page_course | |
217 | and page_generic_activity. | |
704533fc | 218 | * use $CFG->googlemapkey3 instead of removed $CFG->googlemapkey and migrate to Google Maps API V3 |
b874d5c6 | 219 | * Function settings_navigation::add_course_editing_links() is completely removed |
ee7084e9 MG |
220 | * function global_navigation::format_display_course_content() is removed completely (the |
221 | functionality is moved to course format class) | |
222 | * in the function global_navigation::load_generic_course_sections() the argument $courseformat is | |
223 | removed | |
7881024e PS |
224 | * New component and itemid columns in groups_members table - this allows plugin to create protected |
225 | group memberships using 'xx_yy_allow_group_member_remove' callback and there is also a new restore | |
226 | callback 'xx_yy_restore_group_member()'. | |
227 | * New general role assignment restore plugin callback 'xx_yy_restore_role_assignment()'. | |
97960146 MG |
228 | * functions get_generic_section_name(), get_all_sections(), add_mod_to_section(), get_all_mods() |
229 | are deprecated. See their phpdocs in lib/deprecatedlib.php on how to replace them | |
ee362526 | 230 | |
d2a27ab0 ARN |
231 | YUI changes: |
232 | * moodle-enrol-notification has been renamed to moodle-core-notification | |
3542e01a | 233 | * YUI2 code must now use 2in3, see http://yuilibrary.com/yui/docs/yui/yui-yui2.html |
7266bd3e ARN |
234 | * M.util.init_select_autosubmit() and M.util.init_url_select() have been deprecated. Code using this should be updated |
235 | to use moodle-core-formautosubmit | |
d2a27ab0 | 236 | |
94c9db54 PS |
237 | Unit testing changes: |
238 | * output debugging() is not sent to standard output any more, | |
239 | use $this->assertDebuggingCalled(), $this->assertDebuggingNotCalled(), | |
240 | $this->getDebuggingMessages() or $this->assertResetDebugging() instead. | |
241 | ||
e618cdf3 PS |
242 | === 2.3 === |
243 | ||
244 | Database layer changes: | |
245 | * objects are not allowed in paramters of DML functions, use explicit casting to strings if necessary | |
246 | ||
19526d91 DP |
247 | Note: |
248 | * DDL and DML methods which were deprecated in 2.0 have now been removed, they will no longer produce | |
249 | debug messages and will produce fatal errors | |
e618cdf3 | 250 | |
796495fe | 251 | API changes: |
daefd6eb | 252 | |
796495fe | 253 | * send_stored_file() has changed its interface |
daefd6eb | 254 | * deleted several resourcelib_embed_* functions from resourcelib.php |
796495fe | 255 | |
ee362526 PS |
256 | === 2.2 === |
257 | ||
258 | removed unused libraries: | |
259 | * odbc, base32, CodeSniffer, overlib, apd profiling, kses, Smarty, PEAR Console, swfobject, cssshover.htc, md5.js | |
260 | ||
261 | API changes: | |
262 | * new admin/tool plugin type | |
263 | * new context API - old API is still available | |
8e470797 | 264 | * deleted users do not have context any more |
ee362526 PS |
265 | * removed global search |
266 | ||
267 | ||
268 | === 2.1 === | |
269 | ||
270 | API changes: | |
271 | * basic suport for restore from 1.9 | |
272 | * new mobile devices API | |
273 | * new questions API | |
274 | ||
275 | ||
276 | === 2.0 === | |
277 | ||
278 | API changes: | |
279 | * new DML API - http://docs.moodle.org/dev/DML_functions | |
280 | * new DDL API - http://docs.moodle.org/dev/DDL_functions | |
281 | * new file API - http://docs.moodle.org/dev/File_API | |
282 | * new $PAGE and $OUTPUT API | |
283 | * new navigation API | |
284 | * new theme API - http://docs.moodle.org/dev/Theme_changes_in_2.0 | |
285 | * new javascript API - http://docs.moodle.org/dev/JavaScript_usage_guide | |
286 | * new portfolio API | |
287 | * new local plugin type | |
288 | * new translation support - http://lang.moodle.org | |
289 | * new web service API | |
290 | * new cohorts API | |
291 | * new messaging API | |
292 | * new rating API | |
293 | * new comment API | |
294 | * new sessions API | |
295 | * new enrolment API | |
296 | * new backup/restore API | |
297 | * new blocks API | |
298 | * new filters API | |
299 | * improved plugin support (aka Frankenstyle) | |
300 | * new registration and hub API | |
301 | * new course completion API | |
302 | * new plagiarism API | |
303 | * changed blog API | |
304 | * new text editor API | |
19526d91 | 305 | * new my moodle and profiles API |