Esempio n. 1
0
 public function test_message_provider_disabled()
 {
     $this->resetAfterTest();
     $this->preventResetByRollback();
     // Disable instantmessage provider.
     $disableprovidersetting = 'moodle_instantmessage_disable';
     set_config($disableprovidersetting, 1, 'message');
     $preferences = get_message_output_default_preferences();
     $this->assertTrue($preferences->{$disableprovidersetting} == 1);
     $message = new stdClass();
     $message->component = 'moodle';
     $message->name = 'instantmessage';
     $message->userfrom = get_admin();
     $message->userto = $this->getDataGenerator()->create_user();
     $message->subject = 'message subject 1';
     $message->fullmessage = 'message body';
     $message->fullmessageformat = FORMAT_MARKDOWN;
     $message->fullmessagehtml = '<p>message body</p>';
     $message->smallmessage = 'small message';
     $message->notification = 0;
     // Check message is not sent.
     $sink = $this->redirectEmails();
     message_send($message);
     $emails = $sink->get_messages();
     $this->assertEmpty($emails);
     // Check message is sent.
     set_config($disableprovidersetting, 0, 'message');
     $preferences = get_message_output_default_preferences();
     $this->assertTrue($preferences->{$disableprovidersetting} == 0);
     $sink = $this->redirectEmails();
     message_send($message);
     $emails = $sink->get_messages();
     $email = reset($emails);
     $this->assertEquals($email->subject, 'message subject 1');
 }
Esempio n. 2
0
/**
 * Setting default messaging preferences for particular message provider
 *
 * @param  string $component   The name of component (e.g. moodle, mod_forum, etc.)
 * @param  string $messagename The name of message provider
 * @param  array  $fileprovider The value of $messagename key in the array defined in plugin messages.php
 * @param  string $processorname The optional name of message processor
 */
function message_set_default_message_preference($component, $messagename, $fileprovider, $processorname='') {
    global $DB;

    // Fetch message processors
    $condition = null;
    // If we need to process a particular processor, set the select condition
    if (!empty($processorname)) {
       $condition = array('name' => $processorname);
    }
    $processors = $DB->get_records('message_processors', $condition);

    // load default messaging preferences
    $defaultpreferences = get_message_output_default_preferences();

    // Setting default preference
    $componentproviderbase = $component.'_'.$messagename;
    $loggedinpref = array();
    $loggedoffpref = array();
    // set 'permitted' preference first for each messaging processor
    foreach ($processors as $processor) {
        $preferencename = $processor->name.'_provider_'.$componentproviderbase.'_permitted';
        // if we do not have this setting yet, set it
        if (!isset($defaultpreferences->{$preferencename})) {
            // determine plugin default settings
            $plugindefault = 0;
            if (isset($fileprovider['defaults'][$processor->name])) {
                $plugindefault = $fileprovider['defaults'][$processor->name];
            }
            // get string values of the settings
            list($permitted, $loggedin, $loggedoff) = translate_message_default_setting($plugindefault, $processor->name);
            // store default preferences for current processor
            set_config($preferencename, $permitted, 'message');
            // save loggedin/loggedoff settings
            if ($loggedin) {
                $loggedinpref[] = $processor->name;
            }
            if ($loggedoff) {
                $loggedoffpref[] = $processor->name;
            }
        }
    }
    // now set loggedin/loggedoff preferences
    if (!empty($loggedinpref)) {
        $preferencename = 'message_provider_'.$componentproviderbase.'_loggedin';
        if (isset($defaultpreferences->{$preferencename})) {
            // We have the default preferences for this message provider, which
            // likely means that we have been adding a new processor. Add defaults
            // to exisitng preferences.
            $loggedinpref = array_merge($loggedinpref, explode(',', $defaultpreferences->{$preferencename}));
        }
        set_config($preferencename, join(',', $loggedinpref), 'message');
    }
    if (!empty($loggedoffpref)) {
        $preferencename = 'message_provider_'.$componentproviderbase.'_loggedoff';
        if (isset($defaultpreferences->{$preferencename})) {
            // We have the default preferences for this message provider, which
            // likely means that we have been adding a new processor. Add defaults
            // to exisitng preferences.
            $loggedoffpref = array_merge($loggedoffpref, explode(',', $defaultpreferences->{$preferencename}));
        }
        set_config($preferencename, join(',', $loggedoffpref), 'message');
    }
}
Esempio n. 3
0
        }
        $lineprefarray = explode(',', $linepref);
        $preferences->{$provider->component . '_' . $provider->name . '_' . $state} = array();
        foreach ($lineprefarray as $pref) {
            $preferences->{$provider->component . '_' . $provider->name . '_' . $state}[$pref] = 1;
        }
    }
}
// Load all processors
$processors = get_message_processors();
/// For every processors put its options on the form (need to get function from processor's lib.php)
foreach ($processors as $processor) {
    $processor->object->load_data($preferences, $user->id);
}
//load general messaging preferences
$preferences->blocknoncontacts = get_user_preferences('message_blocknoncontacts', '', $user->id);
$preferences->beepnewmessage = get_user_preferences('message_beepnewmessage', '', $user->id);
$preferences->mailformat = $user->mailformat;
$preferences->mailcharset = get_user_preferences('mailcharset', '', $user->id);
/// Display page header
$strmessaging = get_string('messaging', 'message');
$PAGE->set_title($strmessaging);
$PAGE->set_heading(fullname($user));
// Grab the renderer
$renderer = $PAGE->get_renderer('core', 'message');
// Fetch default (site) preferences
$defaultpreferences = get_message_output_default_preferences();
$messagingoptions = $renderer->manage_messagingoptions($processors, $providers, $preferences, $defaultpreferences, $user->emailstop, $user->id);
echo $OUTPUT->header();
echo $messagingoptions;
echo $OUTPUT->footer();
 public function export_for_template(\renderer_base $output)
 {
     $processors = $this->processors;
     $providers = $this->providers;
     $preferences = $this->preferences;
     $component = $this->component;
     $defaultpreferences = get_message_output_default_preferences();
     if ($component != 'moodle') {
         $componentname = get_string('pluginname', $component);
     } else {
         $componentname = get_string('coresystem');
     }
     $context = ['displayname' => $componentname, 'notifications' => []];
     foreach ($providers as $provider) {
         $preferencebase = $this->get_preference_base($provider);
         $preferencekey = 'message_provider_' . $preferencebase;
         // Hack to stop this one specific preference from showing up in the
         // notification list because it belongs to the message preferences page.
         if (!$this->should_show_preference_key($preferencekey)) {
             continue;
         }
         // If provider component is not same or provider disabled then don't show.
         if ($provider->component != $component || !empty($defaultpreferences->{$preferencebase . '_disable'})) {
             continue;
         }
         $notificationcontext = ['displayname' => $this->get_provider_display_name($provider), 'preferencekey' => $preferencekey, 'processors' => []];
         foreach ($processors as $processor) {
             $notificationprocessor = new notification_list_processor($processor, $provider, $preferences);
             $notificationcontext['processors'][] = $notificationprocessor->export_for_template($output);
         }
         $context['notifications'][] = $notificationcontext;
     }
     return $context;
 }
 public function export_for_template(\renderer_base $output)
 {
     $processor = $this->processor;
     $preferencebase = $this->get_preference_base();
     $permitted = MESSAGE_DEFAULT_PERMITTED;
     $defaultpreferences = get_message_output_default_preferences();
     $defaultpreference = $processor->name . '_provider_' . $preferencebase . '_permitted';
     $context = ['displayname' => get_string('pluginname', 'message_' . $processor->name), 'name' => $processor->name, 'locked' => false, 'userconfigured' => $processor->object->is_user_configured(), 'loggedin' => ['name' => 'loggedin', 'displayname' => get_string('loggedindescription', 'message'), 'checked' => $this->is_preference_enabled($preferencebase . '_loggedin')], 'loggedoff' => ['name' => 'loggedoff', 'displayname' => get_string('loggedoffdescription', 'message'), 'checked' => $this->is_preference_enabled($preferencebase . '_loggedoff')]];
     // Determine the default setting.
     if (isset($defaultpreferences->{$defaultpreference})) {
         $permitted = $defaultpreferences->{$defaultpreference};
     }
     // If settings are disallowed or forced, just display the corresponding message, if not use user settings.
     if ($permitted == 'disallowed') {
         $context['locked'] = true;
         $context['lockedmessage'] = get_string('disallowed', 'message');
     } else {
         if ($permitted == 'forced') {
             $context['locked'] = true;
             $context['lockedmessage'] = get_string('forced', 'message');
         }
     }
     return $context;
 }