This manual is deprecated. Please visit https://groupoffice.readthedocs.io for the latest documentation. |
Global settings manager
Contents
Use of global settings in modules
Groupoffice has a global config that is stored in the table 'go_settings' in the database. It is possible to add and remove settings to the global config for your own created module.
Database Table overview:
userid | int(11) | required | default: 0 |
name | varchar(50) | required | |
value | text | not required | default: NULL |
(note: The primary key is set on 'userid' and 'name')
Global config:
Functions:
Use of the global config can be done easily with the following functions of the global config class:
get_setting({{setting_name}}, {{user_id}})
With this function you receive the value of a setting.
{{setting_name}} | is the name of the setting where you want the value from and is always required. |
{{user_id}} | is the id of the user for which the setting is accessible, the default value is: 0, so it is accessible for every user in the system. This variable is not required. |
get_settings({{user_id}})
With this function you can receive all the settings at once.
{{user_id}} | is the id of the user for which the setting is accessible, the default value is: 0, so it is accessible for every user in the system. This variable is not required. |
save_setting({{setting_name}}, {{setting_value}}, {{user_id}})
With this function you can save a new setting or edit the value of an existing setting.
{{setting_name}} | is the name of the setting that you want to save or edit, this is always required. |
{{setting_value}} | is the value of the setting that you want to save or edit, this is always required. |
{{user_id}} | is the id of the user for which the setting is accessible, the default value is: 0, so it is accessible for every user in the system. This variable is not required. |
delete_setting( {{setting_name}} )
With this function you can delete the whole setting.
{{setting_name}} | is the name of the setting where you want to delete, this is always required. |
Usage:
Usage of the above functions with the global config class:
To get a setting:
$setting = GO::config()->get_setting('{{setting_name}}');
To get all settings:
$settings[] = GO::config()->get_settings('{{user_id(optional)}}');
To save a (new)setting:
GO::config()->save_setting('{{setting_name}},{{setting_value}},{{user_id(optional)}}');
To delete a setting:
GO::config()->delete_setting('{{setting_name}}');
Add settings for own module:
In groupoffice, the administrator can access the 'Settings' tab in the startmenu. From the 'Settings' tab the administrator can easily manage the global settings of groupoffice that are made visible. By default the settings are not visible on this tab. The settings need to be added by hand in the source code of the module from which the settings are. To achieve this you need to do a couple of things.
1. In the module that you have created add the following file: GlobalSettings.js
2. Add the following contents to the GlobalSettings.js file:
This file creates and shows the form that is showed on the 'Settings' tab.
GO.moduleManager.on('moduleconstructed',function(mm,moduleName,panel){ if(moduleName=='settings'){ var fieldset =new Ext.form.FieldSet({ title:'Calendar', items:{ xtype:'textfield', name:'calendar_name_template', fieldLabel:'Template', width: 300 } }); panel.add(fieldset); } });
(note: for example we add a fieldset with the title 'Calendar' and with one textfield item 'calendar_name_template')
3. In the class where you want to use the data you need to add the following event listeners:
$events->add_listener('load_global_settings', __FILE__, '{{module_name}}','load_global_settings');<br> $events->add_listener('save_global_settings', __FILE__, '{{module_name}}','save_global_settings');
(note: To see how the event listeners work go tho the wiki section 'Event handling')
4. Add the static functions that are triggered by the even to the same file:
In the function load_global_settings you can specify the settings that needs to be loaded into the class so they can be used.
The function save_global_settings is needed for the settings module to save the settings that are changed by the administrator on the 'Settings' tab.
public static function load_global_settings(&$response) { $response['data']['calendar_name_template']=GO::config()->get_setting('calendar_name_template'); if(!$response['data']['calendar_name_template']) $response['data']['calendar_name_template']='{first_name} {middle_name} {last_name}'; } public static function save_global_settings(&$response) { GO::config()->->save_setting('calendar_name_template', $_POST['calendar_name_template']); }