]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-15390 improved subscribe me option when posting to forum - see tracker for more...
authorskodak <skodak>
Wed, 2 Jul 2008 22:06:22 +0000 (22:06 +0000)
committerskodak <skodak>
Wed, 2 Jul 2008 22:06:22 +0000 (22:06 +0000)
mod/forum/lib.php
mod/forum/post.php

index 246165ba60cb4b8cea381e5212f2b94944572bc5..6ba5328ced3d610983993f7cda5edfb5bff09ca0 100644 (file)
@@ -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));
+    }
 }
 
 /**
index d1f8b6c85d7372d7f04d6ba841f48246a3b3da71..a56bb830fb458329bb836cebea4fa280e3878402 100644 (file)
     }
 
     //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,