Merge branch 'MDL-72585-master' of git://github.com/dpalou/moodle

This commit is contained in:
Andrew Nicols 2021-10-15 09:53:19 +08:00
commit 2f0fb8f99b
2 changed files with 19 additions and 3 deletions

View File

@ -1991,7 +1991,7 @@ class core_message_external extends external_api {
*/
public static function get_messages($useridto, $useridfrom = 0, $type = 'both', $read = MESSAGE_GET_READ,
$newestfirst = true, $limitfrom = 0, $limitnum = 0) {
global $CFG, $USER;
global $CFG, $USER, $PAGE;
$warnings = array();
@ -2089,13 +2089,26 @@ class core_message_external extends external_api {
}
foreach ($messages as $mid => $message) {
// Do not return deleted messages.
if (!$message->notification) {
// Do not return deleted messages.
if (($useridto == $USER->id and $message->timeusertodeleted) or
($useridfrom == $USER->id and $message->timeuserfromdeleted)) {
unset($messages[$mid]);
continue;
}
} else {
// Return iconurl for notifications.
if (!isset($output)) {
$output = $PAGE->get_renderer('core');
}
if (!empty($message->component) && substr($message->component, 0, 4) == 'mod_') {
$iconurl = $output->image_url('icon', $message->component);
} else {
$iconurl = $output->image_url('i/marker', 'core');
}
$message->iconurl = clean_param($iconurl->out(), PARAM_URL);
}
// We need to get the user from the query.
@ -2168,6 +2181,7 @@ class core_message_external extends external_api {
'eventtype' => new external_value(PARAM_TEXT, 'The type of notification', VALUE_OPTIONAL),
'customdata' => new external_value(PARAM_RAW, 'Custom data to be passed to the message processor.
The data here is serialised using json_encode().', VALUE_OPTIONAL),
'iconurl' => new external_value(PARAM_URL, 'URL for icon, only for notifications.', VALUE_OPTIONAL),
), 'message'
)
),

View File

@ -1292,7 +1292,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
* Test get_messages.
*/
public function test_get_messages() {
global $CFG, $DB;
global $CFG, $DB, $PAGE;
$this->resetAfterTest(true);
$this->preventResetByRollback();
@ -1482,6 +1482,8 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
$this->assertObjectHasAttribute('datakey', json_decode($messages['messages'][0]['customdata']));
$this->assertEquals('mod_feedback', $messages['messages'][0]['component']);
$this->assertEquals('submission', $messages['messages'][0]['eventtype']);
$feedbackicon = clean_param($PAGE->get_renderer('core')->image_url('icon', 'mod_feedback')->out(), PARAM_URL);
$this->assertEquals($feedbackicon, $messages['messages'][0]['iconurl']);
// Test warnings.
$CFG->messaging = 0;