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:
@@ -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 {
|
||||
|
||||
@@ -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."/>
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user