diff --git a/course/tests/courselib_test.php b/course/tests/courselib_test.php
index c5b37fcab24..3a39c146f5d 100644
--- a/course/tests/courselib_test.php
+++ b/course/tests/courselib_test.php
@@ -54,6 +54,9 @@ class core_course_courselib_testcase extends advanced_testcase {
$moduleinfo->blockperiod = 60*60*24;
$moduleinfo->blockafter = 10;
$moduleinfo->warnafter = 5;
+
+ // Grading of whole forum settings.
+ $moduleinfo->grade_forum = 0;
}
/**
@@ -395,6 +398,9 @@ class core_course_courselib_testcase extends advanced_testcase {
$moduleinfo->blockperiod = 60*60*24;
$moduleinfo->blockafter = 10;
$moduleinfo->warnafter = 5;
+
+ // Grading of whole forum settings.
+ $moduleinfo->grade_forum = 0;
}
/**
diff --git a/mod/forum/classes/local/data_mappers/legacy/forum.php b/mod/forum/classes/local/data_mappers/legacy/forum.php
index 97aa7a9b2fd..92580743804 100644
--- a/mod/forum/classes/local/data_mappers/legacy/forum.php
+++ b/mod/forum/classes/local/data_mappers/legacy/forum.php
@@ -55,6 +55,7 @@ class forum {
'assesstimestart' => $forum->get_assess_time_start(),
'assesstimefinish' => $forum->get_assess_time_finish(),
'scale' => $forum->get_scale(),
+ 'grade_forum' => $forum->get_grade_for_forum(),
'maxbytes' => $forum->get_max_bytes(),
'maxattachments' => $forum->get_max_attachments(),
'forcesubscribe' => $forum->get_subscription_mode(),
diff --git a/mod/forum/classes/local/entities/forum.php b/mod/forum/classes/local/entities/forum.php
index 66d6364995f..16b851d88a3 100644
--- a/mod/forum/classes/local/entities/forum.php
+++ b/mod/forum/classes/local/entities/forum.php
@@ -69,6 +69,8 @@ class forum {
private $assesstimefinish;
/** @var int $scale The rating scale */
private $scale;
+ /** @var int $gradeforum The grade for the forum when grading holistcally */
+ private $gradeforum;
/** @var int $maxbytes Maximum attachment size */
private $maxbytes;
/** @var int $maxattachments Maximum number of attachments */
@@ -121,6 +123,7 @@ class forum {
* @param int $assesstimestart Timestamp to begin assessment
* @param int $assesstimefinish Timestamp to end assessment
* @param int $scale The rating scale
+ * @param int $forum_grade The holistic grade
* @param int $maxbytes Maximum attachment size
* @param int $maxattachments Maximum number of attachments
* @param int $forcesubscribe Does the forum force users to subscribe?
@@ -154,6 +157,7 @@ class forum {
int $assesstimestart,
int $assesstimefinish,
int $scale,
+ int $gradeforum,
int $maxbytes,
int $maxattachments,
int $forcesubscribe,
@@ -186,6 +190,7 @@ class forum {
$this->assesstimestart = $assesstimestart;
$this->assesstimefinish = $assesstimefinish;
$this->scale = $scale;
+ $this->gradeforum = $gradeforum;
$this->maxbytes = $maxbytes;
$this->maxattachments = $maxattachments;
$this->forcesubscribe = $forcesubscribe;
@@ -349,6 +354,15 @@ class forum {
return $this->scale;
}
+ /**
+ * Get the grade for the forum when grading holistically.
+ *
+ * @return int
+ */
+ public function get_grade_for_forum() : int {
+ return $this->gradeforum;
+ }
+
/**
* Get the maximum bytes.
*
diff --git a/mod/forum/classes/local/factories/entity.php b/mod/forum/classes/local/factories/entity.php
index 8406b99aac7..0b252a638e9 100644
--- a/mod/forum/classes/local/factories/entity.php
+++ b/mod/forum/classes/local/factories/entity.php
@@ -86,6 +86,7 @@ class entity {
$record->assesstimestart,
$record->assesstimefinish,
$record->scale,
+ $record->grade_forum,
$record->maxbytes,
$record->maxattachments,
$record->forcesubscribe,
diff --git a/mod/forum/db/install.xml b/mod/forum/db/install.xml
index ac12f9bc331..643ef7772ff 100644
--- a/mod/forum/db/install.xml
+++ b/mod/forum/db/install.xml
@@ -18,6 +18,7 @@
+
@@ -194,4 +195,4 @@
-
\ No newline at end of file
+
diff --git a/mod/forum/db/upgrade.php b/mod/forum/db/upgrade.php
index 9c6d83e07d1..5e5ccec70e9 100644
--- a/mod/forum/db/upgrade.php
+++ b/mod/forum/db/upgrade.php
@@ -195,6 +195,19 @@ function xmldb_forum_upgrade($oldversion) {
// Main savepoint reached.
upgrade_mod_savepoint(true, 2019071902, 'forum');
}
+ if ($oldversion < 2019071902) {
+
+ // Define field grade_forum to be added to forum.
+ $table = new xmldb_table('forum');
+ $field = new xmldb_field('grade_forum', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0', 'scale');
+
+ // Conditionally launch add field grade_forum.
+ if (!$dbman->field_exists($table, $field)) {
+ $dbman->add_field($table, $field);
+ }
+
+ // Forum savepoint reached.
+ upgrade_mod_savepoint(true, 2019081100, 'forum');
return true;
}
diff --git a/mod/forum/tests/entities_forum_test.php b/mod/forum/tests/entities_forum_test.php
index 829d29f6263..40487cfd733 100644
--- a/mod/forum/tests/entities_forum_test.php
+++ b/mod/forum/tests/entities_forum_test.php
@@ -78,6 +78,7 @@ class mod_forum_entities_forum_testcase extends advanced_testcase {
$assesstimestart = 0;
$assesstimefinish = 0;
$scale = 0;
+ $gradeforum = 0;
$maxbytes = 200;
$maxattachments = 5;
$forcesubscribe = 0;
@@ -111,6 +112,7 @@ class mod_forum_entities_forum_testcase extends advanced_testcase {
$assesstimestart,
$assesstimefinish,
$scale,
+ $gradeforum,
$maxbytes,
$maxattachments,
$forcesubscribe,
@@ -147,6 +149,7 @@ class mod_forum_entities_forum_testcase extends advanced_testcase {
$this->assertEquals($assesstimestart, $forum->get_assess_time_start());
$this->assertEquals($assesstimefinish, $forum->get_assess_time_finish());
$this->assertEquals($scale, $forum->get_scale());
+ $this->assertEquals($gradeforum, $forum->get_grade_for_forum());
$this->assertEquals($maxbytes, $forum->get_max_bytes());
$this->assertEquals($maxattachments, $forum->get_max_attachments());
$this->assertEquals($forcesubscribe, $forum->get_subscription_mode());
diff --git a/mod/forum/tests/generator/lib.php b/mod/forum/tests/generator/lib.php
index dad429efaa2..303c1958a78 100644
--- a/mod/forum/tests/generator/lib.php
+++ b/mod/forum/tests/generator/lib.php
@@ -81,6 +81,9 @@ class mod_forum_generator extends testing_module_generator {
if (!isset($record->forcesubscribe)) {
$record->forcesubscribe = FORUM_CHOOSESUBSCRIBE;
}
+ if (!isset($record->grade_forum)) {
+ $record->grade_forum = 0;
+ }
return parent::create_instance($record, (array)$options);
}
diff --git a/mod/forum/version.php b/mod/forum/version.php
index fd2008c136a..fad9d80b6e1 100644
--- a/mod/forum/version.php
+++ b/mod/forum/version.php
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
-$plugin->version = 2019100101; // The current module version (Date: YYYYMMDDXX)
+$plugin->version = 2019100103; // The current module version (Date: YYYYMMDDXX)
$plugin->requires = 2019051100; // Requires this Moodle version
$plugin->component = 'mod_forum'; // Full name of the plugin (used for diagnostics)