diff --git a/public/course/classes/course_request.php b/public/course/classes/course_request.php
index 1a2df4e9c18..73599a56696 100644
--- a/public/course/classes/course_request.php
+++ b/public/course/classes/course_request.php
@@ -16,6 +16,7 @@
namespace core_course;
+use core\{clock, di};
use core\context;
use core\context\course as context_course;
use core\context\coursecat as context_coursecat;
@@ -324,6 +325,7 @@ class course_request {
$data->newsitems = $courseconfig->newsitems;
$data->showgrades = $courseconfig->showgrades;
$data->showreports = $courseconfig->showreports;
+ $data->showactivitydates = $courseconfig->showactivitydates;
$data->maxbytes = $courseconfig->maxbytes;
$data->groupmode = $courseconfig->groupmode;
$data->groupmodeforce = $courseconfig->groupmodeforce;
@@ -332,9 +334,9 @@ class course_request {
$data->lang = $courseconfig->lang;
$data->enablecompletion = $courseconfig->enablecompletion;
$data->numsections = $courseconfig->numsections;
- $data->startdate = usergetmidnight(time());
+ $data->startdate = usergetmidnight(di::get(clock::class)->time());
if ($courseconfig->courseenddateenabled) {
- $data->enddate = usergetmidnight(time()) + $courseconfig->courseduration;
+ $data->enddate = $data->startdate + $courseconfig->courseduration;
}
[$data->fullname, $data->shortname] = restore_dbops::calculate_course_names(0, $data->fullname, $data->shortname);
diff --git a/public/course/tests/course_request_test.php b/public/course/tests/course_request_test.php
index 005370ad4f9..409692bd6ff 100644
--- a/public/course/tests/course_request_test.php
+++ b/public/course/tests/course_request_test.php
@@ -77,9 +77,12 @@ final class course_request_test extends \advanced_testcase {
public function test_approve_request(): void {
global $DB;
+
$this->resetAfterTest(true);
$this->preventResetByRollback();
+ $this->mock_clock_with_frozen(1622502000);
+
$defaultcategory = $DB->get_field_select('course_categories', "MIN(id)", "parent=0");
set_config('enablecourserequests', 1);
set_config('lockrequestcategory', 1);
@@ -116,6 +119,7 @@ final class course_request_test extends \advanced_testcase {
$id = $cr->approve();
$this->assertCount(1, $sink->get_messages_by_component_and_type('core', 'courserequestapproved'));
$sink->close();
+
$course = $DB->get_record('course', ['id' => $id]);
$this->assertEquals($data->fullname, $course->fullname);
$this->assertEquals($data->shortname, $course->shortname);
@@ -136,8 +140,49 @@ final class course_request_test extends \advanced_testcase {
$id = $cr->approve();
$this->assertCount(1, $sink->get_messages_by_component_and_type('core', 'courserequestapproved'));
$sink->close();
+
$course = $DB->get_record('course', ['id' => $id]);
$this->assertEquals($data->category, $course->category);
+
+ // Test with default course settings.
+ set_config('format', 'weeks', 'moodlecourse');
+ set_config('newsitems', 2, 'moodlecourse');
+ set_config('showgrades', false, 'moodlecourse');
+ set_config('showreports', true, 'moodlecourse');
+ set_config('showactivitydates', 0, 'moodlecourse');
+ set_config('maxbytes', 10240, 'moodlecourse');
+ set_config('groupmode', SEPARATEGROUPS, 'moodlecourse');
+ set_config('groupmodeforce', true, 'moodlecourse');
+ set_config('visible', false, 'moodlecourse');
+ set_config('lang', 'es', 'moodlecourse');
+ set_config('enablecompletion', false, 'moodlecourse');
+ set_config('courseenddateenabled', true, 'moodlecourse');
+ set_config('courseduration', WEEKSECS * 4, 'moodlecourse');
+
+ $data->shortname .= ' 3rd';
+ $this->setUser($requester);
+ $cr = course_request::create($data);
+ $this->setAdminUser();
+ $sink = $this->redirectMessages();
+ $id = $cr->approve();
+ $this->assertCount(1, $sink->get_messages_by_component_and_type('core', 'courserequestapproved'));
+ $sink->close();
+
+ $course = $DB->get_record('course', ['id' => $id]);
+
+ $this->assertEquals('weeks', $course->format);
+ $this->assertEquals(2, $course->newsitems);
+ $this->assertEquals(0, $course->showgrades);
+ $this->assertEquals(1, $course->showreports);
+ $this->assertEquals(0, $course->showactivitydates);
+ $this->assertEquals(10240, $course->maxbytes);
+ $this->assertEquals(SEPARATEGROUPS, $course->groupmode);
+ $this->assertEquals(1, $course->groupmodeforce);
+ $this->assertEquals(0, $course->visible);
+ $this->assertEquals('es', $course->lang);
+ $this->assertEquals(0, $course->enablecompletion);
+ $this->assertEquals(1622476800, $course->startdate);
+ $this->assertEquals($course->startdate + (WEEKSECS * 4), $course->enddate);
}
public function test_reject_request(): void {
diff --git a/public/lib/db/install.xml b/public/lib/db/install.xml
index a972b8e3a06..ad41b759c08 100644
--- a/public/lib/db/install.xml
+++ b/public/lib/db/install.xml
@@ -103,7 +103,7 @@
-
+
diff --git a/public/lib/db/upgrade.php b/public/lib/db/upgrade.php
index 8562517c66c..5e03b90f685 100644
--- a/public/lib/db/upgrade.php
+++ b/public/lib/db/upgrade.php
@@ -1618,5 +1618,17 @@ function xmldb_main_upgrade($oldversion) {
upgrade_main_savepoint(true, 2025121200.01);
}
+ if ($oldversion < 2025121900.01) {
+ // Changing the default of field showactivitydates on table course to 1.
+ $table = new xmldb_table('course');
+ $field = new xmldb_field('showactivitydates', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '1', 'originalcourseid');
+
+ // Launch change of default for field showactivitydates.
+ $dbman->change_field_default($table, $field);
+
+ // Main savepoint reached.
+ upgrade_main_savepoint(true, 2025121900.01);
+ }
+
return true;
}
diff --git a/public/version.php b/public/version.php
index ca1c4179be2..ffc7584d780 100644
--- a/public/version.php
+++ b/public/version.php
@@ -29,7 +29,7 @@
defined('MOODLE_INTERNAL') || die();
-$version = 2025121900.00; // YYYYMMDD = weekly release date of this DEV branch.
+$version = 2025121900.01; // YYYYMMDD = weekly release date of this DEV branch.
// RR = release increments - 00 in DEV branches.
// .XX = incremental changes.
$release = '5.2dev (Build: 20251219)'; // Human-friendly version name