mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
MDL-27171 messages: implement new syntax in messages.php and update processing
The new messaging default settings can be set in messages.php and deployed during installation. This also ensures the removing of settings on plugin uninstallation and contains the update script to populate current default settings on the existing system when the new feature is introduced. For security reason we have to avoid using library functions in upgrade function, so we set defaults the blind way. At this point we do not expect plugins to have individual messaging defaults presets anyway. The site defaults are the same as were set for each user using message_set_default_message_preferences function. Signed-off-by: Ruslan Kabalin <ruslan.kabalin@luns.net.uk>
This commit is contained in:
parent
3bcbd80ebe
commit
7a04c476a2
11 changed files with 201 additions and 60 deletions
|
@ -98,7 +98,7 @@ if (($form = data_submitted()) && confirm_sesskey()) {
|
|||
|
||||
/// Set all the preferences for all the message providers
|
||||
$providers = message_get_my_providers();
|
||||
foreach ( $providers as $provider) {
|
||||
foreach ($providers as $provider) {
|
||||
$componentproviderbase = $provider->component.'_'.$provider->name;
|
||||
foreach (array('loggedin', 'loggedoff') as $state) {
|
||||
$linepref = '';
|
||||
|
|
|
@ -53,6 +53,25 @@ define('MESSAGE_SEARCH_MAX_RESULTS', 200);
|
|||
define('MESSAGE_CONTACTS_PER_PAGE',10);
|
||||
define('MESSAGE_MAX_COURSE_NAME_LENGTH', 30);
|
||||
|
||||
/**
|
||||
* Define contants for messaging default settings population. For unambiguity of
|
||||
* plugin developer intentions we use 4-bit value (LSB numbering):
|
||||
* bit 0 - whether to send message when user is loggedin (MESSAGE_DEFAULT_LOGGEDIN)
|
||||
* bit 1 - whether to send message when user is loggedoff (MESSAGE_DEFAULT_LOGGEDOFF)
|
||||
* bit 2..3 - messaging permission (MESSAGE_DISALLOWED|MESSAGE_PERMITTED|MESSAGE_FORCED)
|
||||
*
|
||||
* MESSAGE_PERMITTED_MASK contains the mask we use to distinguish permission setting
|
||||
*/
|
||||
|
||||
define('MESSAGE_DEFAULT_LOGGEDIN', 0x01); // 0001
|
||||
define('MESSAGE_DEFAULT_LOGGEDOFF', 0x02); // 0010
|
||||
|
||||
define('MESSAGE_DISALLOWED', 0x04); // 0100
|
||||
define('MESSAGE_PERMITTED', 0x08); // 1000
|
||||
define('MESSAGE_FORCED', 0x0c); // 1100
|
||||
|
||||
define('MESSAGE_PERMITTED_MASK', 0x0c); // 1100
|
||||
|
||||
/**
|
||||
* Set default value for default outputs permitted setting
|
||||
*/
|
||||
|
@ -2231,3 +2250,53 @@ function get_message_output_default_preferences() {
|
|||
}
|
||||
return $preferences;
|
||||
}
|
||||
|
||||
/**
|
||||
* Translate message default settings from binary value to the array of string
|
||||
* representing the settings to be stored. Also validate the provided value and
|
||||
* use default if it is malformed.
|
||||
* @param int $plugindefault Default setting suggested by plugin
|
||||
* @param string $processorname The name of processor
|
||||
* @return array $settings array of strings in the order: $permitted, $loggedin, $loggedoff.
|
||||
*/
|
||||
function translate_message_default_setting($plugindefault, $processorname) {
|
||||
// Preset translation arrays
|
||||
$permittedvalues = array(
|
||||
0x04 => 'disallowed',
|
||||
0x08 => 'permitted',
|
||||
0x0c => 'forced',
|
||||
);
|
||||
|
||||
$loggedinstatusvalues = array(
|
||||
0x00 => null, // use null if loggedin/loggedoff is not defined
|
||||
0x01 => 'loggedin',
|
||||
0x02 => 'loggedoff',
|
||||
);
|
||||
|
||||
// define the default setting
|
||||
if ($processorname == 'email') {
|
||||
$default = MESSAGE_PERMITTED + MESSAGE_DEFAULT_LOGGEDIN + MESSAGE_DEFAULT_LOGGEDOFF;
|
||||
} else {
|
||||
$default = MESSAGE_PERMITTED;
|
||||
}
|
||||
|
||||
// Validate the value. It should not exceed the maximum size
|
||||
if (!is_int($plugindefault) || ($plugindefault > 0x0f)) {
|
||||
notify(get_string('errortranslatingdefault', 'message'));
|
||||
$plugindefault = $default;
|
||||
}
|
||||
// Use plugin default setting of 'permitted' is 0
|
||||
if (!($plugindefault & MESSAGE_PERMITTED_MASK)) {
|
||||
$plugindefault = $default;
|
||||
}
|
||||
|
||||
$permitted = $permittedvalues[$plugindefault & MESSAGE_PERMITTED_MASK];
|
||||
$loggedin = $loggedoff = 0x00;
|
||||
|
||||
if (($plugindefault & MESSAGE_PERMITTED_MASK) == MESSAGE_PERMITTED) {
|
||||
$loggedin = $loggedinstatusvalues[$plugindefault & ~MESSAGE_PERMITTED_MASK & MESSAGE_DEFAULT_LOGGEDIN];
|
||||
$loggedoff = $loggedinstatusvalues[$plugindefault & ~MESSAGE_PERMITTED_MASK & MESSAGE_DEFAULT_LOGGEDOFF];
|
||||
}
|
||||
|
||||
return array($permitted, $loggedin, $loggedoff);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue