[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
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_extends_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 the now preferred local_nicehack_extends_navigation(global_navigation $nav). 222 } 223 function local_nicehack_extends_settings_navigation(settings_navigation $nav, context $context) { 224 // $nav is the settings navigation instance. 225 // $context is the context the settings have been loaded for (settings is context specific) 226 // Here you can add to and manipulate the settings structure as you like. 227 // This callback was introduced in 2.3 228 } 229 230 Other local customisation files 231 =============================== 232 233 Customised site defaults 234 ------------------------ 235 Different default site settings can be stored in file /local/defaults.php. 236 These new defaults are used during installation, upgrade and later are 237 displayed as default values in admin settings. This means that the content 238 of the defaults files is usually updated BEFORE installation or upgrade. 239 240 These customised defaults are useful especially when using CLI tools 241 for installation and upgrade. 242 243 Sample /local/defaults.php file content: 244 <?php 245 $defaults['moodle']['forcelogin'] = 1; // new default for $CFG->forcelogin 246 $defaults['scorm']['maxgrade'] = 20; // default for get_config('scorm', 'maxgrade') 247 $defaults['moodlecourse']['numsections'] = 11; 248 $defaults['moodle']['hiddenuserfields'] = array('city', 'country'); 249 250 First bracket contains string from column plugin of config_plugins table. 251 Second bracket is the name of setting. In the admin settings UI the plugin and 252 name of setting is separated by "|". 253 254 The values usually correspond to the raw string in config table, with the exception 255 of comma separated lists that are usually entered as real arrays. 256 257 Please note that not all settings are converted to admin_tree, 258 they are mostly intended to be set directly in config.php. 259 260 261 2.0 pre-upgrade script 262 ---------------------- 263 You an use /local/upgrade_pre20.php script for any code that needs to 264 be executed before the main upgrade to 2.0. Most probably this will 265 be used for undoing of old hacks that would otherwise break normal 266 2.0 upgrade. 267 268 This file is just included directly, there does not need to be any 269 function inside. If the execution stops the script is executed again 270 during the next upgrade. The first execution of lib/db/upgrade.php 271 increments the version number and the pre upgrade script is not 272 executed any more. 273 274 275 276 1.9.x upgrade notes 277 =================== 278 1.9.x contains basic support for local hacks placed directly into 279 /local/ directory. This old local API was completely removed and can 280 not be used any more in 2.0. All old customisations need to be 281 migrated to new local plugins before running of the 2.0 upgrade script. 282 283 284 285 Other site customisation outside of "/local/" directory 286 ======================================================= 287 288 Local language pack modifications 289 --------------------------------- 290 Moodle supports other type of local customisation of standard language 291 packs. If you want to create your own language pack based on another 292 language create new dataroot directory with "_local" suffix, for example 293 following file with content changes string "Login" to "Sign in": 294 moodledata/lang/en_local 295 <?php 296 $string['login'] = 'Sign in'; 297 298 See also http://docs.moodle.org/en/Language_editing 299 300 301 Custom script injection 302 ----------------------- 303 Very old customisation option that allows you to modify scripts by injecting 304 code right after the require 'config.php' call. 305 306 This setting is enabled by manually setting $CFG->customscripts variable 307 in config.php script. The value is expected to be full path to directory 308 with the same structure as dirroot. Please note this hack only affects 309 files that actually include the config.php! 310 311 Examples: 312 * disable one specific moodle page without code modification 313 * alter page parameters on the fly
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |