MDL-84634 enrol: add course start placeholder to welcome message.

Update profile URL generation to use API rather than copy it.
This commit is contained in:
Paul Holden
2025-09-22 09:11:03 +01:00
parent 74ee977521
commit 2cc0c93e75
3 changed files with 9 additions and 21 deletions
+3 -13
View File
@@ -14,22 +14,11 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Manual enrolment tests.
*
* @package enrol_manual
* @category phpunit
* @copyright 2012 Petr Skoda {@link http://skodak.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace enrol_manual;
use course_enrolment_manager;
use stdClass;
defined('MOODLE_INTERNAL') || die();
/**
* Manual enrolment tests.
*
@@ -802,6 +791,7 @@ final class lib_test extends \advanced_testcase {
$course = $this->getDataGenerator()->create_course([
'fullname' => 'Course 1 & 2',
'shortname' => 'C1',
'startdate' => 1622502000,
]);
$courseurl = course_get_url($course)->out();
@@ -863,7 +853,7 @@ final class lib_test extends \advanced_testcase {
userid: $student->id,
sendoption: ENROL_SEND_EMAIL_FROM_COURSE_CONTACT,
message: 'Your email address: {$a->email}, your first name: {$a->firstname}, your last name: {$a->lastname}, ' .
'your course: {$a->coursename}',
'your course: {$a->coursename} on {$a->coursestartdate}',
);
$messages = $messagesink->get_messages_by_component_and_type(
'moodle',
@@ -877,7 +867,7 @@ final class lib_test extends \advanced_testcase {
$this->assertStringContainsString($course->fullname, $message->subject);
$this->assertEquals(
'Your email address: ' . $student->email . ', your first name: ' . $student->firstname . ', your last name: ' .
$student->lastname . ', your course: ' . $course->fullname,
$student->lastname . ', your course: ' . $course->fullname . ' on 1 June 2021, 7:00 AM',
$message->fullmessage,
);
// Clear sink.
+1
View File
@@ -39,6 +39,7 @@ $string['customwelcomemessage_help'] = 'Accepted formats: Plain text or Moodle-a
<ul>
<li>Course name {$a->coursename}</li>
<li>Link to course page {$a->courselink}</li>
<li>Course start date {$a->coursestartdate}</li>
<li>Link to user\'s profile page {$a->profileurl}</li>
<li>User email {$a->email}</li>
<li>User fullname {$a->fullname}</li>
+5 -8
View File
@@ -3651,9 +3651,9 @@ abstract class enrol_plugin {
global $DB, $CFG;
require_once($CFG->dirroot . '/course/lib.php');
$context = context_course::instance($instance->courseid);
$user = core_user::get_user($userid);
$course = get_course($instance->courseid);
$context = context_course::instance($course->id);
// Fallback to the instance role ID if parameter not specified.
$courseroleid = $roleid ?: $instance->roleid;
@@ -3662,13 +3662,8 @@ abstract class enrol_plugin {
$a = new stdClass();
$a->coursename = format_string($course->fullname, true, ['context' => $context, 'escape' => false]);
$a->courselink = course_get_url($course)->out();
$a->profileurl = (new moodle_url(
url: '/user/view.php',
params: [
'id' => $user->id,
'course' => $instance->courseid,
],
))->out();
$a->coursestartdate = userdate($course->startdate, get_string('strftimedatetime', 'core_langconfig'));
$a->profileurl = \core\user::get_profile_url($user, $context)->out();
$placeholders = \core_user::get_name_placeholders($user);
foreach ($placeholders as $field => $value) {
@@ -3679,6 +3674,7 @@ abstract class enrol_plugin {
$placeholders = [
'{$a->coursename}',
'{$a->courselink}',
'{$a->coursestartdate}',
'{$a->profileurl}',
'{$a->fullname}',
'{$a->email}',
@@ -3689,6 +3685,7 @@ abstract class enrol_plugin {
$values = [
$a->coursename,
$a->courselink,
$a->coursestartdate,
$a->profileurl,
fullname($user),
$user->email,