mirror of
https://github.com/moodle/moodle.git
synced 2025-08-08 02:16:41 +02:00
MDL-47107 mod_forum Optimise forum subscription checks
Supply a coursemodule where relevant to the forum subscription checks.
This commit is contained in:
parent
457f818026
commit
4238983e2a
9 changed files with 68 additions and 14 deletions
|
@ -72,7 +72,7 @@ class mod_forum_observer {
|
|||
require_once($CFG->dirroot . '/mod/forum/lib.php');
|
||||
|
||||
$userid = $event->relateduserid;
|
||||
$sql = "SELECT f.id, cm.id AS cmid, f.forcesubscribe
|
||||
$sql = "SELECT f.id, f.course as course, cm.id AS cmid, f.forcesubscribe
|
||||
FROM {forum} f
|
||||
JOIN {course_modules} cm ON (cm.instance = f.id)
|
||||
JOIN {modules} m ON (m.id = cm.module)
|
||||
|
|
|
@ -104,14 +104,18 @@ class subscriptions {
|
|||
* @param int $userid The user ID
|
||||
* @param \stdClass $forum The record of the forum to test
|
||||
* @param int $discussionid The ID of the discussion to check
|
||||
* @param \cm_info $cm The coursemodule record. If not supplied, this will be calculated using get_fast_modinfo instead.
|
||||
* @return boolean
|
||||
*/
|
||||
public static function is_subscribed($userid, $forum, $discussionid = null) {
|
||||
public static function is_subscribed($userid, $forum, $discussionid = null, cm_info $cm = null) {
|
||||
// If forum is force subscribed and has allowforcesubscribe, then user is subscribed.
|
||||
$cm = get_coursemodule_from_instance('forum', $forum->id);
|
||||
if ($cm && self::is_forcesubscribed($forum) &&
|
||||
has_capability('mod/forum:allowforcesubscribe', \context_module::instance($cm->id), $userid)) {
|
||||
return true;
|
||||
if (self::is_forcesubscribed($forum)) {
|
||||
if (!$cm) {
|
||||
$cm = get_fast_modinfo($forum->course)->instances['forum'][$forum->id];
|
||||
}
|
||||
if (has_capability('mod/forum:allowforcesubscribe', \context_module::instance($cm->id), $userid)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($discussionid === null) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue