MDL-82589 task: link to task logs report from failure notification.

This commit is contained in:
Paul Holden 2024-07-24 16:41:32 +01:00
parent 2b337b49f9
commit 22667ab397
No known key found for this signature in database
GPG Key ID: A81A96D6045F6164
4 changed files with 17 additions and 8 deletions

View File

@ -115,6 +115,7 @@ modulenotexist,core_debug
coursecalendar,core_calendar
importcalendarexternal,core_calendar
nocalendarsubscriptions,core_calendar
failedtaskcontexturlname,core
datechanged,core
daystakingcourse,core_course
siteregistrationcontact,core_hub

View File

@ -892,7 +892,6 @@ $string['failedtaskbody'] = '<p>Hi {$a->firstname},</p>
<p>The task <b>{$a->taskname}</b> has failed multiple times and requires attention.</p>
<p><a href="{$a->link}">See task</a></p>';
$string['failedtasksubject'] = 'Task failed: {$a}';
$string['failedtaskcontexturlname'] = 'Status report';
$string['feedback'] = 'Feedback';
$string['file'] = 'File';
$string['fileexists'] = 'There is already a file called {$a}';
@ -2524,3 +2523,6 @@ Following is the content of your email:';
$string['noreplybouncesubject'] = '{$a} - bounced email.';
$string['registrationcontactno'] = 'No, I do not want to be contacted by other people';
$string['registrationcontactyes'] = 'Yes, provide a form for other Moodlers to contact me';
// Deprecated since Moodle 5.0.
$string['failedtaskcontexturlname'] = 'Status report';

View File

@ -17,6 +17,7 @@
namespace core\task;
use core\hook\task\after_failed_task_max_delay;
use core\url;
use core_user;
use stdClass;
@ -39,14 +40,13 @@ class failed_task_callbacks {
$task = $hook->get_task();
$admins = get_admins();
if (empty($admins)) {
return;
}
foreach ($admins as $admin) {
$tasklogslink = new url('/admin/tasklogs.php', ['filter' => get_class($task)]);
$a = new stdClass();
$a->firstname = $admin->firstname;
$a->taskname = $task->get_name();
$a->link = new \moodle_url('/report/status/index.php', ['detail' => 'tool_task_maxfaildelay']);
$a->link = $tasklogslink->out(false);
$messagetxt = get_string('failedtaskbody', 'moodle', $a);
// Create message.
$message = new \core\message\message();
@ -60,9 +60,8 @@ class failed_task_callbacks {
$message->fullmessagehtml = text_to_html($messagetxt);
$message->smallmessage = get_string('failedtasksubject', 'moodle', $task->get_name());
$message->notification = 1;
$message->contexturl = (
new \moodle_url('/report/status/index.php', ['detail' => 'tool_task_maxfaildelay']))->out(false);
$message->contexturlname = get_string('failedtaskcontexturlname', 'moodle');
$message->contexturl = $tasklogslink->out(false);
$message->contexturlname = get_string('tasklogs', 'admin');
// Actually send the message.
message_send($message);
}

View File

@ -16,6 +16,8 @@
namespace core\task;
use core\url;
/**
* Test class for adhoc tasks.
*
@ -985,6 +987,11 @@ final class adhoc_task_test extends \advanced_testcase {
$this->assertEquals('failedtaskmaxdelay', $messages[0]->eventtype);
$this->assertEquals('-10', $messages[0]->useridfrom);
$this->assertEquals('2', $messages[0]->useridto);
$this->assertEquals('Task logs', $messages[0]->contexturlname);
$this->assertEquals(
(new url('/admin/tasklogs.php', ['filter' => get_class($task)]))->out(false),
$messages[0]->contexturl,
);
// Close sink.
$messagesink->close();