Migrating to 2.0 checklist

From MoodleDocs

Moodle 2.0

These are things that OU developers have found so far to check/do in code we're migrating from Moodle 1.9 to 2.0. All information on the detail of this checklist can be found elsewhere in Moodle Docs, and particularly from the Migrating_contrib_code_to_2.0

Not all these things are essential for a rush job, but if you did all of them, then that'd be great. We should really mark each one with a priority of some sort!

Please add/edit this list!


  • Leave empty db/update.php file
  • New $DB global objects with functions replace old db functions
  • $DB parameters swapped to ?
  • Add and strip slashes no longer required
  • Remove use of ENUM and ENUMVALUES in install.xml file
  • Remove STATEMENTS section in install.xml file, use db/install.php or db/log.php instead.
  • check use of sql_substr()
  • Get_records() etc now always returning arrays, empty array in case of no records found.
  • Db functions throw errors not return false on error
  • DB functions offer strictness parameters e.g MUST_EXIST
  • Update version.php numbers (esp required)
  • In version.php add $module->requires = 2010080300; // Requires this Moodle version

Page display

  • New $OUTPUT header and footer functions
  • Navigation links need to use $PAGE->navbar
  • Make sure that you instantiate the moodle form before any call to $OUTPUT->header()
  • Create a renderer
  • Change the way image urls are displayed (not $CFG->pixpath any more)
  • CSS changes
    • Change styles.php to styles.css
    • Change page id to new structure e.g. course-format-studyplan to page-course-view-studyplan

Roles and Permissions:

  • array name to $capabilities in access.php
  • Remove references to admin in access.php
  • Rename legacy to archetypes in access.php
  • Add manager archetype in access.php
  • Ensure require_login as well as require_capability checks
  • isguest() is depreicated, use !isloggedin() || isguestuser() instead

Language strings

  • Rename language folder
  • Change $a to {$a} in language files
  • Change popup help files to _help lang strings and shorten
  • Add $string[‘pluginname’] to lang file
  • Add $string[‘pluginadministration’] to lang file


  • Param_clean parameter type removed
  • type required parameter for optional_and required_param
  • Replace file form elements with new filepicker
  • Replace htmleditor with editor form field type
  • Change setHelpButton to addHelpButton. (You need to change the arguments, but the new ones are simpler.)


  • Swap config_ files to edit and settings php files
  • Fix whitespace & coding style
  • rs_fetch_next_record($rs) is deprecated, in favour of the simple foreach($rs as $var). Calls to rs_close() must be replaced by $rs->close();
  • Check functions deprecated list: Deprecated_functions_in_2.0
  • Use print_error() or throw new moodle_exception not error()
  • Replace all url strings e.g. in redirect() calls with moodle_url instances
  • Move install/uninstall functions from lib to db/install.php, lib/uninstall.php
  • Move images into pix folder (especially icon.gif), get path by calling $OUTPUT->pix_url('icon', 'local_whatever');
  • Add 'supports' function in lib (modname_supports()) for modules (and blocks?).
  • New Backup and Restore process - Backup_2.0_for_developers, Restore_2.0_for_developers.
  • Add db/log.php file if you have log calls (see any of the core modules for examples).

See also