mirror of
https://github.com/moodle/moodle.git
synced 2025-04-24 09:55:33 +02:00
Merge branch 'MDL-55449-master' of git://github.com/abgreeve/moodle
This commit is contained in:
commit
7b4dbb05e3
@ -43,14 +43,13 @@ defined('MOODLE_INTERNAL') || die();
|
||||
class message_sent extends base {
|
||||
/**
|
||||
* Create event using ids.
|
||||
* @todo MDL-55449 Make $courseid mandatory in Moodle 3.6
|
||||
* @param int $userfromid
|
||||
* @param int $usertoid
|
||||
* @param int $messageid
|
||||
* @param int|null $courseid course id the event is related with. Use SITEID if no relation exists.
|
||||
* @param int $courseid course id the event is related with.
|
||||
* @return message_sent
|
||||
*/
|
||||
public static function create_from_ids($userfromid, $usertoid, $messageid, $courseid = null) {
|
||||
public static function create_from_ids(int $userfromid, int $usertoid, int $messageid, int $courseid) {
|
||||
// We may be sending a message from the 'noreply' address, which means we are not actually sending a
|
||||
// message from a valid user. In this case, we will set the userid to 0.
|
||||
// Check if the userid is valid.
|
||||
@ -58,15 +57,6 @@ class message_sent extends base {
|
||||
$userfromid = 0;
|
||||
}
|
||||
|
||||
// TODO: MDL-55449 Make $courseid mandatory in Moodle 3.6.
|
||||
if (is_null($courseid)) {
|
||||
// Arrived here with not defined $courseid to associate the event with.
|
||||
// Let's default to SITEID and perform debugging so devs are aware. MDL-47162.
|
||||
$courseid = SITEID;
|
||||
debugging('message_sent::create_from_ids() needs a $courseid to be passed, nothing was detected. Please, change ' .
|
||||
'the call to include it, using SITEID if the message is unrelated to any real course.', DEBUG_DEVELOPER);
|
||||
}
|
||||
|
||||
$event = self::create(array(
|
||||
'objectid' => $messageid,
|
||||
'userid' => $userfromid,
|
||||
|
@ -50,30 +50,14 @@ class manager {
|
||||
*
|
||||
* NOTE: to be used from message_send() only.
|
||||
*
|
||||
* @todo MDL-55449 Drop support for stdClass in Moodle 3.6
|
||||
* @param \core\message\message $eventdata fully prepared event data for processors
|
||||
* @param \stdClass $savemessage the message saved in 'message' table
|
||||
* @param array $processorlist list of processors for target user
|
||||
* @return int $messageid the id from 'messages' (false is not returned)
|
||||
*/
|
||||
public static function send_message($eventdata, \stdClass $savemessage, array $processorlist) {
|
||||
public static function send_message(message $eventdata, \stdClass $savemessage, array $processorlist) {
|
||||
global $CFG;
|
||||
|
||||
// TODO MDL-55449 Drop support for stdClass in Moodle 3.6.
|
||||
if (!($eventdata instanceof \stdClass) && !($eventdata instanceof message)) {
|
||||
// Not a valid object.
|
||||
throw new \coding_exception('Message should be of type stdClass or \core\message\message');
|
||||
}
|
||||
|
||||
// TODO MDL-55449 Drop support for stdClass in Moodle 3.6.
|
||||
if ($eventdata instanceof \stdClass) {
|
||||
if (!isset($eventdata->courseid)) {
|
||||
$eventdata->courseid = null;
|
||||
}
|
||||
|
||||
debugging('eventdata as \stdClass is deprecated. Please use \core\message\message instead.', DEBUG_DEVELOPER);
|
||||
}
|
||||
|
||||
require_once($CFG->dirroot.'/message/lib.php'); // This is most probably already included from messagelib.php file.
|
||||
|
||||
if (empty($processorlist)) {
|
||||
|
@ -50,23 +50,13 @@ require_once(__DIR__ . '/../message/lib.php');
|
||||
* Note: processor failure is is not reported as false return value,
|
||||
* earlier versions did not do it consistently either.
|
||||
*
|
||||
* @todo MDL-55449 Drop support for stdClass in Moodle 3.6
|
||||
* @category message
|
||||
* @param \core\message\message $eventdata information about the message (component, userfrom, userto, ...)
|
||||
* @return mixed the integer ID of the new message or false if there was a problem with submitted data
|
||||
*/
|
||||
function message_send($eventdata) {
|
||||
function message_send(\core\message\message $eventdata) {
|
||||
global $CFG, $DB;
|
||||
|
||||
// TODO MDL-55449 Drop support for stdClass in Moodle 3.6.
|
||||
if ($eventdata instanceof \stdClass) {
|
||||
if (!isset($eventdata->courseid)) {
|
||||
$eventdata->courseid = null;
|
||||
}
|
||||
|
||||
debugging('eventdata as \stdClass is deprecated. Please use core\message\message instead.', DEBUG_DEVELOPER);
|
||||
}
|
||||
|
||||
//new message ID to return
|
||||
$messageid = false;
|
||||
|
||||
|
@ -55,6 +55,10 @@ information provided here is intended especially for developers.
|
||||
policy and respect the privacy setting made by site administrators. The list of user identifiers should never be
|
||||
hard-coded. Instead, the setting $CFG->showuseridentity should be always respected, which has always been the default
|
||||
behaviour (MDL-59847).
|
||||
* The function message_send() in messagelib.php will now only take the object \core\message\message as a parameter.
|
||||
* The method message_sent::create_from_ids() parameter courseid is now required. A debugging
|
||||
message was previously displayed, and the SITEID was used, when not provided.
|
||||
* The method \core\message\manager::send_message() now only takes the object \core\message\message as the first parameter.
|
||||
|
||||
=== 3.5 ===
|
||||
|
||||
|
@ -272,22 +272,6 @@ class core_message_events_testcase extends core_message_messagelib_testcase {
|
||||
$this->assertEquals(4, $event->other['courseid']);
|
||||
}
|
||||
|
||||
public function test_mesage_sent_via_create_from_ids_without_other_courseid() {
|
||||
|
||||
// Creating a message_sent event without courseid leads to debugging + SITEID.
|
||||
// TODO: MDL-55449 Ensure this leads to exception instead of debugging in Moodle 3.6.
|
||||
$event = \core\event\message_sent::create_from_ids(1, 2, 3);
|
||||
|
||||
// Trigger and capturing the event.
|
||||
$sink = $this->redirectEvents();
|
||||
$event->trigger();
|
||||
$events = $sink->get_events();
|
||||
$event = reset($events);
|
||||
|
||||
$this->assertDebuggingCalled();
|
||||
$this->assertEquals(SITEID, $event->other['courseid']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the message viewed event.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user