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:
+4
-3
@@ -24,7 +24,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die;
|
||||
|
||||
use core\di;
|
||||
use core\{clock, di};
|
||||
use core\hook;
|
||||
use core_course\external\course_summary_exporter;
|
||||
use core_courseformat\base as course_format;
|
||||
@@ -2624,6 +2624,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;
|
||||
@@ -2632,9 +2633,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;
|
||||
}
|
||||
|
||||
list($data->fullname, $data->shortname) = restore_dbops::calculate_course_names(0, $data->fullname, $data->shortname);
|
||||
|
||||
@@ -80,9 +80,12 @@ final class courserequest_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);
|
||||
@@ -115,6 +118,7 @@ final class courserequest_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', array('id' => $id));
|
||||
$this->assertEquals($data->fullname, $course->fullname);
|
||||
$this->assertEquals($data->shortname, $course->shortname);
|
||||
@@ -135,8 +139,49 @@ final class courserequest_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', array('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
@@ -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"/>
|
||||
</FIELDS>
|
||||
|
||||
@@ -1927,5 +1927,17 @@ function xmldb_main_upgrade($oldversion) {
|
||||
upgrade_main_savepoint(true, 2025041404.02);
|
||||
}
|
||||
|
||||
if ($oldversion < 2025041404.04) {
|
||||
// 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, 2025041404.04);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$version = 2025041404.03; // 20250414 = branching date YYYYMMDD - do not modify!
|
||||
$version = 2025041404.04; // 20250414 = branching date YYYYMMDD - do not modify!
|
||||
// RR = release increments - 00 in DEV branches.
|
||||
// .XX = incremental changes.
|
||||
$release = '5.0.4+ (Build: 20251219)'; // Human-friendly version name
|
||||
|
||||
Reference in New Issue
Block a user