From 22667ab397362cfcdf8b48ac7b29ad99cbe64671 Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Wed, 24 Jul 2024 16:41:32 +0100 Subject: [PATCH] MDL-82589 task: link to task logs report from failure notification. --- lang/en/deprecated.txt | 1 + lang/en/moodle.php | 4 +++- lib/classes/task/failed_task_callbacks.php | 13 ++++++------- lib/tests/task/adhoc_task_test.php | 7 +++++++ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/lang/en/deprecated.txt b/lang/en/deprecated.txt index dfaadb3a558..85174191fe8 100644 --- a/lang/en/deprecated.txt +++ b/lang/en/deprecated.txt @@ -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 diff --git a/lang/en/moodle.php b/lang/en/moodle.php index 713788bc6ed..95e4dbf180d 100644 --- a/lang/en/moodle.php +++ b/lang/en/moodle.php @@ -892,7 +892,6 @@ $string['failedtaskbody'] = '

Hi {$a->firstname},

The task {$a->taskname} has failed multiple times and requires attention.

See task

'; $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'; diff --git a/lib/classes/task/failed_task_callbacks.php b/lib/classes/task/failed_task_callbacks.php index 482e0aab1b5..7ef9535d5a0 100644 --- a/lib/classes/task/failed_task_callbacks.php +++ b/lib/classes/task/failed_task_callbacks.php @@ -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); } diff --git a/lib/tests/task/adhoc_task_test.php b/lib/tests/task/adhoc_task_test.php index 087b5e85f8b..01eb6ccf588 100644 --- a/lib/tests/task/adhoc_task_test.php +++ b/lib/tests/task/adhoc_task_test.php @@ -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();