MDL-15390 improved subscribe me option when posting to forum - see tracker for more info

This commit is contained in:
skodak
2008-07-02 21:58:35 +00:00
parent cd50a71370
commit 37b48d3202
2 changed files with 23 additions and 3 deletions
+13 -1
View File
@@ -4190,7 +4190,19 @@ function forum_discussions_user_has_posted_in($forumid, $userid) {
*
*/
function forum_user_has_posted($forumid, $did, $userid) {
return record_exists('forum_posts','discussion',$did,'userid',$userid);
global $CFG;
if (empty($did)) {
// posted in any forum discussion?
$sql = "SELECT 'x'
FROM {$CFG->prefix}forum_posts p
JOIN {$CFG->prefix}forum_discussions d ON d.id = p.discussion
WHERE p.userid = $userid AND d.forum = $forumid";
return record_exists_sql($sql);
} else {
// started discussion?
return record_exists('forum_posts','discussion',$did,'userid',$userid);
}
}
/**
+10 -2
View File
@@ -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,