From f6c7db283b7b27b594a88db284c751cdc49ebec2 Mon Sep 17 00:00:00 2001 From: skodak Date: Wed, 2 Jul 2008 22:06:22 +0000 Subject: [PATCH] MDL-15390 improved subscribe me option when posting to forum - see tracker for more info; merged from MOODLE_19_STABLE --- mod/forum/lib.php | 12 +++++++++++- mod/forum/post.php | 12 ++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 246165ba60..6ba5328ced 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -4275,7 +4275,17 @@ function forum_discussions_user_has_posted_in($forumid, $userid) { */ function forum_user_has_posted($forumid, $did, $userid) { global $DB; - return $DB->record_exists('forum_posts', array('discussion'=>$did,'userid'=>$userid)); + + if (empty($did)) { + // posted in any forum discussion? + $sql = "SELECT 'x' + FROM {forum_posts} p + JOIN {forum_discussions} d ON d.id = p.discussion + WHERE p.userid = :userid AND d.forum = :forumid"; + return $DB->record_exists_sql($sql, array('forumid'=>$forumid,'userid'=>$userid)); + } else { + return $DB->record_exists('forum_posts', array('discussion'=>$did,'userid'=>$userid)); + } } /** diff --git a/mod/forum/post.php b/mod/forum/post.php index d1f8b6c85d..a56bb830fb 100644 --- a/mod/forum/post.php +++ b/mod/forum/post.php @@ -729,9 +729,17 @@ } //load data into form - $subscribe=(isset($post->forum)&&forum_is_subscribed($USER->id, $post->forum)) || - (!empty($USER->autosubscribe)); + if (forum_is_subscribed($USER->id, $forum->id)) { + $subscribe = true; + + } else if (forum_user_has_posted($forum->id, 0, $USER->id)) { + $subscribe = false; + + } else { + // user not posted yet - use subscription default specified in profile + $subscribe = !empty($USER->autosubscribe); + } // HACK ALERT: this is very wrong, the defaults should be always initialized before calling $mform->get_data() !!! $mform_post->set_data(array( 'general'=>$heading, -- 2.39.5