Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Local plugins: Difference between revisions

From MoodleDocs
Line 11: Line 11:


Standard plugin features:
Standard plugin features:
* db/version.php - version of script (must be incremented after changes)
* /local/xxx/db/version.php - version of script (must be incremented after changes)
* db/install.xml - executed during install (new version.php found)
* /local/xxx/db/install.xml - executed during install (new version.php found)
* db/install.php - executed right after install.xml
* /local/xxx/db/install.php - executed right after install.xml
* db/upgrade.php - executed after version.php change
* /local/xxx/db/upgrade.php - executed after version.php change
* db/access.php - definition of capabilities
* /local/xxx/db/access.php - definition of capabilities
* db/events.php - event handlers and subscripts
* /local/xxx/db/events.php - event handlers and subscripts
* db/messages.php - messaging registration
* /local/xxx/db/messages.php - messaging registration
* db/external.php - web services and external functions descriptions
* /local/xxx/db/external.php - web services and external functions descriptions
* lang/en/local_pluginname.php - language file
* /local/xxx/lang/en/local_pluginname.php - language file
* plugins of the same type are installed/upgraded in alphabetical order
* plugins of the same type are installed/upgraded in alphabetical order



Revision as of 18:30, 19 May 2010

Local customisations
Project state In progress
Tracker issue MDL-17376, MDL-16438
Discussion http://moodle.org/mod/forum/discuss.php?d=126017
Assignee Petr Škoda (škoďák), original proposal and implementation in 1.9 by Penny Leach

Moodle 2.0


/local/ plugins

Standard plugin features:

  • /local/xxx/db/version.php - version of script (must be incremented after changes)
  • /local/xxx/db/install.xml - executed during install (new version.php found)
  • /local/xxx/db/install.php - executed right after install.xml
  • /local/xxx/db/upgrade.php - executed after version.php change
  • /local/xxx/db/access.php - definition of capabilities
  • /local/xxx/db/events.php - event handlers and subscripts
  • /local/xxx/db/messages.php - messaging registration
  • /local/xxx/db/external.php - web services and external functions descriptions
  • /local/xxx/lang/en/local_pluginname.php - language file
  • plugins of the same type are installed/upgraded in alphabetical order


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 - events 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
  • do not need to have any UI - all other plugins are visible somewhere
  • some extra hooks (not implemented yet)


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

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