From: moodler Date: Tue, 13 May 2003 13:53:36 +0000 (+0000) Subject: When posting a forum, users can unsubscribe/subscribe on the fly. X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=0a9f61b55f5ffc16c5d24c79828cc9bc51d54337;p=moodle.git When posting a forum, users can unsubscribe/subscribe on the fly. The flag has a memory, but it keeps pushing you to subscribe. :-) (so that by default it behaves like it did before) Hopefully now subscription is a bit easier to understand. --- diff --git a/lang/en/forum.php b/lang/en/forum.php index 134a29af64..ad4eb80e5f 100644 --- a/lang/en/forum.php +++ b/lang/en/forum.php @@ -104,8 +104,10 @@ $string['subscribe'] = "Subscribe to this forum"; $string['subscribed'] = "Subscribed"; $string['subscribers'] = "Subscribers"; $string['subscribersto'] = "Subscribers to '\$a'"; +$string['subscription'] = "Subscription"; $string['subscriptions'] = "Subscriptions"; $string['unsubscribe'] = "Unsubscribe from this forum"; +$string['unsubscribed'] = "Unsubscribed"; $string['youratedthis'] = "You rated this"; $string['yournewtopic'] = "Your new discussion topic"; $string['yourreply'] = "Your reply"; diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 511e0ef411..ae7e4ae462 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -1445,6 +1445,32 @@ function forum_unsubscribe($userid, $forumid) { return delete_records("forum_subscriptions", "userid", $userid, "forum", $forumid); } +function forum_post_subscription($post) { +/// Given a new post, subscribes or unsubscribes as appropriate. +/// Returns some text which describes what happened. + + global $USER; + + if (empty($post->subscribe) and empty($post->unsubscribe)) { + return ""; + } + + if (!$forum = get_record("forum", "id", $post->forum)) { + return ""; + } + + $info->name = "$USER->firstname $USER->lastname"; + $info->forum = $forum->name; + + if (!empty($post->subscribe)) { + forum_subscribe($USER->id, $post->forum); + return "

".get_string("nowsubscribed", "forum", $info)."

"; + } + + forum_unsubscribe($USER->id, $post->forum); + return "

".get_string("nownotsubscribed", "forum", $info)."

"; +} + function forum_user_has_posted_discussion($forumid, $userid) { if ($discussions = forum_get_discussions($forumid, "", $userid)) { diff --git a/mod/forum/post.html b/mod/forum/post.html index 0c90dbe8cd..5c36ca7611 100644 --- a/mod/forum/post.html +++ b/mod/forum/post.html @@ -1,24 +1,24 @@ -
enctype="multipart/form-data"> + enctype="multipart/form-data"> - + + + + + - + + + + + + + + - + + +

:

:

- +

- : + :

- message); ?> + message); ?>
- "; helpbutton("writing", get_string("helpwriting"), "moodle", true, true); @@ -36,47 +36,79 @@

:

:

- format, ""); ?> -

:

+ forcesubscribe) { + print_string("everyoneissubscribed", "forum"); + } else { + unset($options); + if (forum_is_subscribed($USER->id, $post->forum)) { + $options[0] = get_string("subscribed", "forum"); + $options[1] = get_string("unsubscribe", "forum"); + choose_from_menu($options, "unsubscribe", 0, ""); + } else { + $options[0] = get_string("unsubscribed", "forum"); + $options[1] = get_string("subscribe", "forum"); + choose_from_menu($options, "subscribe", 1, ""); + } + } + helpbutton("subscription", get_string("subscription", "forum"), "forum"); + ?> +

:
(

:
(

- + -
- - - - - - - "> + + + + + + + ">
-id = $post->edit; if (forum_update_post($post)) { add_to_log($post->course, "forum", "update post", "discuss.php?d=$post->discussion&parent=$post->id", "$post->id"); - redirect(forum_go_back_to("discuss.php?d=$post->discussion"), get_string("postupdated", "forum"), 1); + $message = get_string("postupdated", "forum"); + $timemessage = 1; + + if ($subscribemessage = forum_post_subscription($post)) { + $timemessage = 2; + } + redirect(forum_go_back_to("discuss.php?d=$post->discussion"), $message.$subscribemessage, $timemessage); + } else { error(get_string("couldnotupdate", "forum"), $errordestination); } @@ -40,13 +47,16 @@ } else if ($post->discussion) { // Adding a new post to an existing discussion if ($post->id = forum_add_new_post($post)) { - if ( ! forum_is_subscribed($USER->id, $post->forum) ) { - forum_subscribe($USER->id, $post->forum); + add_to_log($post->course, "forum", "add post", "discuss.php?d=$post->discussion&parent=$post->id", "$post->id"); + $message = get_string("postadded", "forum", format_time($CFG->maxeditingtime)); + $timemessage = 2; + + if ($subscribemessage = forum_post_subscription($post)) { + $timemessage = 4; } - add_to_log($post->course, "forum", "add post", "discuss.php?d=$post->discussion&parent=$post->id", "$post->id"); - redirect(forum_go_back_to("discuss.php?d=$post->discussion"), - get_string("postadded", "forum", format_time($CFG->maxeditingtime)), 2); + redirect(forum_go_back_to("discuss.php?d=$post->discussion"), $message.$subscribemessage, $timemessage); + } else { error(get_string("couldnotadd", "forum"), $errordestination); } @@ -57,12 +67,16 @@ $discussion->name = $post->subject; $discussion->intro = $post->message; if ($discussion->id = forum_add_discussion($discussion)) { - if ( ! forum_is_subscribed($USER->id, $post->forum) ) { - forum_subscribe($USER->id, $post->forum); - } add_to_log($post->course, "forum", "add discussion", "discuss.php?d=$discussion->id", "$discussion->id"); - redirect(forum_go_back_to("view.php?f=$post->forum"), - get_string("postadded", "forum", format_time($CFG->maxeditingtime)), 3); + $message = get_string("postadded", "forum", format_time($CFG->maxeditingtime)); + $timemessage = 2; + + if ($subscribemessage = forum_post_subscription($discussion)) { + $timemessage = 4; + } + + redirect(forum_go_back_to("view.php?f=$post->forum"), $message.$subscribemessage, $timemessage); + } else { error(get_string("couldnotadd", "forum"), $errordestination); }