[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/local/ -> readme.txt (source)

   1  // This file is part of Moodle - http://moodle.org/
   2  //
   3  // Moodle is free software: you can redistribute it and/or modify
   4  // it under the terms of the GNU General Public License as published by
   5  // the Free Software Foundation, either version 3 of the License, or
   6  // (at your option) any later version.
   7  //
   8  // Moodle is distributed in the hope that it will be useful,
   9  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11  // GNU General Public License for more details.
  12  //
  13  // You should have received a copy of the GNU General Public License
  14  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  15  
  16  /**
  17   * Readme file for local customisations
  18   *
  19   * @package    local
  20   * @copyright  2009 Petr Skoda (http://skodak.org)
  21   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  22   */
  23  
  24  Local customisations directory
  25  ==============================
  26  This directory is the recommended place for local customisations.
  27  Wherever possible, customisations should be written using one
  28  of the standard plug-in points like modules, blocks, auth plugins, themes, etc.
  29  
  30  See also http://docs.moodle.org/dev/Local_customisation for more
  31  information.
  32  
  33  
  34  Directory structure
  35  -------------------
  36  This directory has standard plugin structure. All standard plugin features
  37  are supported. There may be some extra files with special meaning in /local/.
  38  
  39  Sample /local/ directory listing:
  40  /local/nicehack/         - first customisation plugin
  41  /local/otherhack/        - other customisation plugin
  42  /local/preupgrade.php    - executed before each core upgrade, use $version and $CFG->version
  43                             if you need to tweak specific local hacks
  44  /local/defaults.php      - custom admin setting defaults
  45  
  46  
  47  
  48  Local plugins
  49  =============
  50  Local plugins are used in cases when no standard plugin fits, examples are:
  51  * event consumers communicating with external systems
  52  * custom definitions of web services and external functions
  53  * applications that extend moodle at the system level (hub server, amos server, etc.)
  54  * new database tables used in core hacks (discouraged)
  55  * new capability definitions used in core hacks
  56  * custom admin settings
  57  
  58  Standard plugin features:
  59  * /local/pluginname/version.php - version of script (must be incremented after changes)
  60  * /local/pluginname/db/install.xml - executed during install (new version.php found)
  61  * /local/pluginname/db/install.php - executed right after install.xml
  62  * /local/pluginname/db/uninstall.php - executed during uninstallation
  63  * /local/pluginname/db/upgrade.php - executed after version.php change
  64  * /local/pluginname/db/access.php - definition of capabilities
  65  * /local/pluginname/db/events.php - event handlers and subscripts
  66  * /local/pluginname/db/messages.php - messaging registration
  67  * /local/pluginname/db/services.php - definition of web services and web service functions
  68  * /local/pluginname/db/subplugins.php - list of subplugins types supported by this local plugin
  69  * /local/pluginname/lang/en/local_pluginname.php - language file
  70  * /local/pluginname/settings.php - admin settings
  71  
  72  
  73  Local plugin version specification
  74  ----------------------------------
  75  version.php is mandatory for most of the standard plugin infrastructure.
  76  The version number must be incremented most plugin changes, the changed
  77  version tells Moodle to invalidate all caches, do db upgrades if necessary,
  78  install new capabilities, register event handlers, etc.
  79  
  80  Example:
  81  /local/nicehack/version.php
  82  <?php
  83  $plugin->version  = 2010022400;   // The (date) version of this plugin
  84  $plugin->requires = 2010021900;   // Requires this Moodle version
  85  
  86  
  87  Local plugin capabilities
  88  -------------------------
  89  Each local plugin may define own capabilities. It is not recommended to define
  90  capabilities belonging to other plugins here, but it should work too.
  91  
  92  /local/nicehack/access.php content
  93  <?php
  94  $local_nicehack_capabilities = array(
  95      'local/nicehack:nicecapability' => array(
  96          'captype' => 'read',
  97          'contextlevel' => CONTEXT_SYSTEM,
  98      ),
  99  );
 100  
 101  
 102  Local plugin language strings
 103  -----------------------------
 104  If customisation needs new strings it is recommended to use normal plugin
 105  strings.
 106  
 107  sample language file /local/nicehack/lang/en/local_nicehack.php
 108  <?php
 109  $string['hello'] = 'Hi {$a}';
 110  $string['nicehack:nicecapability'] = 'Some capability';
 111  
 112  
 113  use of the new string in code:
 114  echo get_string('hello', 'local_nicehack', 'petr');
 115  
 116  
 117  Local plugin admin menu items
 118  -----------------------------
 119  It is possible to add new items and categories to the admin_tree block.
 120  I you need to define new admin setting classes put them into separate
 121  file and require_once() from settings.php
 122  
 123  For example if you want to add new external page use following
 124  /local/nicehack/settings.php
 125  <?php
 126  $ADMIN->add('root', new admin_category('tweaks', 'Custom tweaks'));
 127  $ADMIN->add('tweaks', new admin_externalpage('nicehackery', 'Tweak something',
 128              $CFG->wwwroot.'/local/nicehack/setuppage.php'));
 129  
 130  Or if you want a new standard settings page for the plugin, inside the local
 131  plugins category:
 132  <?php
 133  defined('MOODLE_INTERNAL') || die;
 134  
 135  if ($hassiteconfig) { // needs this condition or there is error on login page
 136      $settings = new admin_settingpage('local_thisplugin', 'This plugin');
 137      $ADMIN->add('localplugins', $settings);
 138  
 139      $settings->add(new admin_setting_configtext('local_thisplugin/option',
 140          'Option', 'Information about this option', 100, PARAM_INT));
 141  }
 142  
 143  Local plugin event handlers
 144  ---------------------------
 145  Events are intended primarily for communication "core --> plugins".
 146  (It should not be use in opposite direction!)
 147  In theory it could be also used for "plugin --> plugin" communication too.
 148  The list of core events is documented in lib/db/events.php
 149  
 150  sample files
 151  /local/nicehack/db/events.php
 152  $handlers = array (
 153      'user_deleted' => array (
 154           'handlerfile'      => '/local/nicehack/lib.php',
 155           'handlerfunction'  => 'nicehack_userdeleted_handler',
 156           'schedule'         => 'instant'
 157       ),
 158  );
 159  
 160  NOTE: events are not yet fully implemented in current Moodle 2.0dev.
 161  
 162  
 163  Local plugin database tables
 164  ----------------------------
 165  XMLDB editors is the recommended tool. Please note that modification
 166  of core table structure is highly discouraged.
 167  
 168  If you really really really need to modify core tables you might want to do
 169  that in install.php and later upgrade.php
 170  
 171  Note: it is forbidden to manually modify the DB structure, without corresponding
 172        changes in install.xml files.
 173  
 174  List of upgrade related files:
 175  /local/nicehack/db/install.xml - contains XML definition of new tables
 176  /local/nicehack/db/install.php - executed after db creation, may be also used
 177                                   for general install code
 178  /local/nicehack/db/upgrade.php - executed when version changes
 179  
 180  
 181  Local plugin web services
 182  -------------------------
 183  During plugin installation or upgrade, the web service definitions are read
 184  from /local/nicehack/db/services.php and are automatically installed/updated in Moodle.
 185  
 186  sample files
 187  /local/nicehack/db/services.php
 188  $$functions = array (
 189      'nicehack_hello_world' => array(
 190                  'classname'   => 'local_nicehack_external',
 191                  'methodname'  => 'hello_world',
 192                  'classpath'   => 'local/nicehack/externallib.php',
 193                  'description' => 'Get hello world string',
 194                  'type'        => 'read',
 195      ),
 196  );
 197  $services = array(
 198          'Nice hack service 1' => array(
 199                  'functions' => array ('nicehack_hello_world'),
 200                  'enabled'=>1,
 201          ),
 202  );
 203  
 204  
 205  You will need to write the /local/nicehack/externallib.php - external functions
 206  description and code. See some examples from the core files (/user/externallib.php,
 207  /group/externallib.php...).
 208  
 209  Local plugin navigation hooks
 210  -----------------------------
 211  There are two functions that your plugin can define that allow it to extend the main
 212  navigation and the settings navigation.
 213  These two functions both need to be defined within /local/nicehack/lib.php.
 214  
 215  sample code
 216  <?php
 217  function local_nicehack_extend_navigation(global_navigation $nav) {
 218      // $nav is the global navigation instance.
 219      // Here you can add to and manipulate the navigation structure as you like.
 220      // This callback was introduced in 2.0 as nicehack_extends_navigation(global_navigation $nav)
 221      // In 2.3 support was added for local_nicehack_extends_navigation(global_navigation $nav).
 222      // In 2.9 the name was corrected to local_nicehack_extend_navigation() for consistency
 223  }
 224  function local_nicehack_extend_settings_navigation(settings_navigation $nav, context $context) {
 225      // $nav is the settings navigation instance.
 226      // $context is the context the settings have been loaded for (settings is context specific)
 227      // Here you can add to and manipulate the settings structure as you like.
 228      // This callback was introduced in 2.3, originally as local_nicehack_extends_settings_navigation()
 229      // In 2.9 the name was corrected to the imperative mood ('extend', not 'extends')
 230  }
 231  
 232  Other local customisation files
 233  ===============================
 234  
 235  Customised site defaults
 236  ------------------------
 237  Different default site settings can be stored in file /local/defaults.php.
 238  These new defaults are used during installation, upgrade and later are
 239  displayed as default values in admin settings. This means that the content
 240  of the defaults files is usually updated BEFORE installation or upgrade.
 241  
 242  These customised defaults are useful especially when using CLI tools
 243  for installation and upgrade.
 244  
 245  Sample /local/defaults.php file content:
 246  <?php
 247  $defaults['moodle']['forcelogin'] = 1;  // new default for $CFG->forcelogin
 248  $defaults['scorm']['maxgrade'] = 20;    // default for get_config('scorm', 'maxgrade')
 249  $defaults['moodlecourse']['numsections'] = 11;
 250  $defaults['moodle']['hiddenuserfields'] = array('city', 'country');
 251  
 252  First bracket contains string from column plugin of config_plugins table.
 253  Second bracket is the name of setting. In the admin settings UI the plugin and
 254  name of setting is separated by "|".
 255  
 256  The values usually correspond to the raw string in config table, with the exception
 257  of comma separated lists that are usually entered as real arrays.
 258  
 259  Please note that not all settings are converted to admin_tree,
 260  they are mostly intended to be set directly in config.php.
 261  
 262  
 263  2.0 pre-upgrade script
 264  ----------------------
 265  You an use /local/upgrade_pre20.php script for any code that needs to
 266  be executed before the main upgrade to 2.0. Most probably this will
 267  be used for undoing of old hacks that would otherwise break normal
 268  2.0 upgrade.
 269  
 270  This file is just included directly, there does not need to be any
 271  function inside. If the execution stops the script is executed again
 272  during the next upgrade. The first execution of lib/db/upgrade.php
 273  increments the version number and the pre upgrade script is not
 274  executed any more.
 275  
 276  
 277  
 278  1.9.x upgrade notes
 279  ===================
 280  1.9.x contains basic support for local hacks placed directly into
 281  /local/ directory. This old local API was completely removed and can
 282  not be used any more in 2.0. All old customisations need to be
 283  migrated to new local plugins before running of the 2.0 upgrade script.
 284  
 285  
 286  
 287  Other site customisation outside of "/local/" directory
 288  =======================================================
 289  
 290  Local language pack modifications
 291  ---------------------------------
 292  Moodle supports other type of local customisation of standard language
 293  packs. If you want to create your own language pack based on another
 294  language create new dataroot directory with "_local" suffix, for example
 295  following file with content changes string "Login" to "Sign in":
 296  moodledata/lang/en_local
 297  <?php
 298    $string['login'] = 'Sign in';
 299  
 300  See also http://docs.moodle.org/en/Language_editing
 301  
 302  
 303  Custom script injection
 304  -----------------------
 305  Very old customisation option that allows you to modify scripts by injecting
 306  code right after the require 'config.php' call.
 307  
 308  This setting is enabled by manually setting $CFG->customscripts variable
 309  in config.php script. The value is expected to be full path to directory
 310  with the same structure as dirroot. Please note this hack only affects
 311  files that actually include the config.php!
 312  
 313  Examples:
 314  * disable one specific moodle page without code modification
 315  * alter page parameters on the fly


Generated: Thu Aug 11 10:00:09 2016 Cross-referenced by PHPXref 0.7.1