MDL-87120 course: observe activity dates display in course requests.

Upgrade step to ensure the default value for this field in the schema
matches the default value used in the interface itself.
This commit is contained in:
Paul Holden
2026-01-07 16:43:16 +00:00
parent 8316779bd9
commit 156c6f69ac
5 changed files with 63 additions and 4 deletions
+4 -2
View File
@@ -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);
@@ -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 {
+1 -1
View File
@@ -103,7 +103,7 @@
<FIELD NAME="completionnotify" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="Notify users when they complete this course"/>
<FIELD NAME="cacherev" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="Incrementing revision for validating the course content cache"/>
<FIELD NAME="originalcourseid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="the id of the source course when a new course originates from a restore of another course on the same site."/>
<FIELD NAME="showactivitydates" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="Whether to display activity dates to user. 0 = do not display, 1 = display activity dates"/>
<FIELD NAME="showactivitydates" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="1" SEQUENCE="false" COMMENT="Whether to display activity dates to user. 0 = do not display, 1 = display activity dates"/>
<FIELD NAME="showcompletionconditions" TYPE="int" LENGTH="1" NOTNULL="false" SEQUENCE="false" COMMENT="Whether to display completion conditions to user. 0 = do not display, 1 = display conditions"/>
<FIELD NAME="pdfexportfont" TYPE="char" LENGTH="50" NOTNULL="false" SEQUENCE="false"/>
<FIELD NAME="enableaitools" TYPE="int" LENGTH="1" NOTNULL="false" SEQUENCE="false" COMMENT="Whether to allow the use of AI tools in this course. 1 = enabled, 0 = disabled."/>
+12
View File
@@ -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;
}
+1 -1
View File
@@ -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