Note: You are currently viewing documentation for Moodle 2.5. Up-to-date documentation for the latest stable version of Moodle may be available here: Local customisation.

Development:Local customisation

From MoodleDocs

Template:Infobox Project Template:Moodle 2.0

/local/ plugins

Benefits compared to previous 1.9:

  • local plugins are less hacky
  • no cost of local maintenance in core - it is just another general plugin
  • easier to implement
  • concurrent plugin modifications possible, not just one huge local hack

Migration from old local/*

  • local/* needs to be copied to new directory
  • local/xxxx/db/install.php is intended for first installation, originally everything was in upgrade.php
  • events are used instead of hooks
  • upgrade code needs to migrate old settings, events, etc. directly in core db tables - such as change component strings and capability names from db/install.php or manually before/after upgrade

List of differences from normal plugins:

  • always executed last during install/upgrade - guaranteed by order of plugins in get_plugin_types()
  • are expected to use event handlers - event are intended for communication core-->plugins only, local plugins the best candidates for event handlers
  • can add admin settings to any page - loaded last when constructing admin tree
  • in exceptional cases modify other db tables - not supported officially, do it at your own risk only
  • do not need to have any UI - all other plugins are visible somewhere
  • Local user profile view hook (not part of MDL-16438)
  • My Moodle hooks (not part of MDL-16438)

List of normal plugin features:

  • db/version.php - version of script
  • db/install.xml - executed during install (new version.php found)
  • db/install.php - executed right after install.xml
  • db/upgrade.php - executed after version.php change
  • db/access.php - capabilities
  • db/events.php - event handlers
  • db/messages.php - messaging info
  • db/external.php - web services api, not finished yet
  • lang/en/local_pluginname.php - localization string files
  • plugins of the same type are installed/upgraded in alphabetical order

Other /local/ customisation files

Customised site defaults

2.0 pre-upgrade script

Customisations outside of /local/ directory

Forced settings

Local language customisations

Custom script injection

Local customisations in previous versions

Previous versions include only partial support for customisations in /local/ directory.

List of local customisations in 1.9.x:

  • /local/cron.php - custom cron jobs
  • /local/settings.php - custom admin settings
  • /local/db/upgrade.php - general modifications
  • /local/lang/* - custom strings
  • /local/lib.php - local_delete_course()

See also