Developer Area/Config API: Difference between revisions
From Mahara Wiki
< Developer Area
(Created page with "Mahara uses a '''Configuration API''' to store and access sitewide configuration parameters, kept in a key-value store. == How to read config settings == You can access config …") |
m (moved User:Aaronw/Config API to Developer Area/Config API) |
Revision as of 17:13, 16 Ocak 2014
Mahara uses a Configuration API to store and access sitewide configuration parameters, kept in a key-value store.
How to read config settings
You can access config settings via the get_config() function or the $CFG global variable, depending on which coding style you prefer. Either way will give identical results.
Option 1: The get_config() function:
get_config('mysetting');
Option 2: The $CFG global variable:
global $CFG; $CFG->mysetting;
How to write config settings
For changes which are stored in the database (such as those set via Mahara's admin screens), you can call set_config().
set_config('mysetting', $myvalue);
For changes which are stored in config.php, well, you'll have to edit your config.php file. There's not really any way around that.
Where config settings live
When you load up a page in Mahara and include "init.php" (as every Mahara page should), configuration parameters are loaded from these three sources, in this order. For the most part, configs in config.php override those from the config table, which override those from config-defaults.php. There are a few special configuration parameters which are calculated and set by init.php itself.
- config.php: This is the main Mahara configuration file. Configuration parameters are set here by adding them as fields to a "$cfg" object. Some parameters must go here, including the database connection parameters, and some others for which write-access
- config table: This is a table in the Mahara database, where most configuration parameters are stored. They get put here by installation & upgrade scripts, and by users fiddling with the Mahara admin screens.
- config-defaults.php: This is a file distributed with Mahara, which stores the default values of many configuration parameters which advanced users may wish to override in config.php
Plugin configs
Each plugin in Mahara also gets to store its own sitewide configuration options. These are quite similar to the core config values.
Read
Plugin configs should be obtained from the get_config_plugin() function.
get_config_plugin('artefact', 'blog', 'mysetting');
Unlike core configs, they should not be accessed directly via $CFG, because they are not loaded unless they are specifically asked for.
Write
The corresponding get_config_plugin() function.
set_config_plugin('artefact', 'blog', 'mysetting', $myvalue);
Where they live
Each plugin type has its own separate table for configs: arefact_config, block_config, etc. Unlike core configs, plugin configs can't be set in config.php... although there is a wishlist bug for that on Launchpad: https://bugs.launchpad.net/mahara/+bug/1196781
Plugin config settings get populated by plugin install and upgrade scripts, and by users navigating to to "Administration -> Extensions" and then clicking on the "Configuration" link next to an extension that has a config screen defined. (See the Plugin API for more details about that).