' . "\n";
$text .= '
div div.toggle\')
+ .toggleClass(\'open\');$(\'dd#cmid' . $itemmodule . $coursemoduleid . ' > ul\')
.toggleClass(\'block_grade_me_hide\');">
Toggle Section
' . "\n";
@@ -195,6 +203,8 @@ function block_grade_me_tree($course) {
} else if ($itemmodule == 'lesson') {
$submissionlink .= '/mod/lesson/essay.php?id=' . $coursemoduleid . '&mode=grade&attemptid='
. $submissionid . '&sesskey=' . sesskey();
+ } else if ($itemmodule == 'wholeforum') {
+ $submissionlink = $gradelink;
}
unset($submission['meta']);
@@ -319,6 +329,7 @@ function block_grade_me_cache_grade_data() {
$sql = "SELECT gi.id itemid, gi.itemname itemname, gi.itemtype itemtype,
gi.itemmodule itemmodule, gi.iteminstance iteminstance,
gi.sortorder itemsortorder, c.id courseid, c.shortname coursename,
+ gi.itemnumber itemnumber,
cm.id coursemoduleid
FROM {grade_items} gi
LEFT JOIN {course} c ON gi.courseid = c.id
@@ -331,6 +342,9 @@ function block_grade_me_cache_grade_data() {
$paramscourse = array_merge($paramscourse, $inparams);
$rs = $DB->get_recordset_sql($sql, $paramscourse);
foreach ($rs as $rec) {
+ if ($rec->itemmodule == 'forum' && $rec->itemnumber == 1) {
+ $rec->itemmodule = 'wholeforum';
+ }
$values = array(
'itemtype' => $rec->itemtype,
'itemmodule' => $rec->itemmodule,
diff --git a/plugins/wholeforum/wholeforum_plugin.php b/plugins/wholeforum/wholeforum_plugin.php
new file mode 100644
index 0000000..f431915
--- /dev/null
+++ b/plugins/wholeforum/wholeforum_plugin.php
@@ -0,0 +1,53 @@
+.
+
+function block_grade_me_required_capability_wholeforum() {
+ $enabledplugins['wholeforum'] = array(
+ 'capability' => 'mod/forum:grade',
+ 'default_on' => false,
+ 'versiondependencies' => 'ANY_VERSION'
+ );
+ return $enabledplugins;
+}
+
+/**
+ * Build SQL query for the forum plugin
+ *
+ * @param array $gradebookusers ID's of gradebook users
+ * @return array|bool SQL query and parameters or false on failure
+ */
+function block_grade_me_query_wholeforum($gradebookusers) {
+ global $USER, $DB;
+
+ if (empty($gradebookusers)) {
+ return false;
+ }
+ list($insql, $inparams) = $DB->get_in_or_equal($gradebookusers);
+
+ $query = ", fp.id submissionid, fp.userid, fp.modified timesubmitted
+ FROM {forum_posts} fp
+ JOIN {forum_discussions} fd ON fd.id = fp.discussion
+ JOIN {forum} f ON f.id = fd.forum
+ JOIN {grade_items} gi ON gi.iteminstance = f.id
+ AND gi.itemmodule = 'forum' AND gi.itemnumber = 1
+ LEFT JOIN {grade_grades} gg ON gg.itemid = gi.id AND gg.userid = fp.userid
+ LEFT JOIN {block_grade_me} bgm ON bgm.courseid = f.course AND bgm.iteminstance = f.id
+ WHERE fp.userid $insql
+ AND f.grade_forum != 0
+ AND gg.finalgrade IS NULL ";
+
+ return array($query, $inparams);
+}
diff --git a/settings.php b/settings.php
index 3abf80e..6f34901 100644
--- a/settings.php
+++ b/settings.php
@@ -46,6 +46,13 @@
$settingname = 'block_grade_me_enable' . $plugin;
$default = (isset($a[$plugin]) && isset($a[$plugin]['default_on'])) ? $a[$plugin]['default_on'] : false;
$settings->add(new admin_setting_configcheckbox($settingname, $langshowmod, $langshowdesc, $default));
+ } else if ($plugin == 'wholeforum' && \core_plugin_manager::instance()->get_plugin_info('forum')) {
+ $langmodname = get_string('grade_forum_name', 'forum');
+ $langshowmod = get_string('settings_enablepre', 'block_grade_me') . ' ' . $langmodname;
+ $langshowdesc = get_string('settings_configenablepre', 'block_grade_me', ['plugin_name' => $langmodname]);
+ $settingname = 'block_grade_me_enable' . $plugin;
+ $default = (isset($a[$plugin]) && isset($a[$plugin]['default_on'])) ? $a[$plugin]['default_on'] : false;
+ $settings->add(new admin_setting_configcheckbox($settingname, $langshowmod, $langshowdesc, $default));
}
}
}