From 2edcf21abf47551759ac80e3e59667a62f076813 Mon Sep 17 00:00:00 2001 From: "adrian@moodle.com" Date: Mon, 12 Dec 2011 14:21:59 +0800 Subject: [PATCH] MDL-18128 - forum - Addition of group editing for forums. --- mod/forum/post.php | 11 +++++++++++ mod/forum/post_form.php | 23 +++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/mod/forum/post.php b/mod/forum/post.php index 197d3c2061d..f3f2f8219bf 100644 --- a/mod/forum/post.php +++ b/mod/forum/post.php @@ -599,6 +599,8 @@ if ($fromform = $mform_post->get_data()) { // WARNING: the $fromform->message array has been overwritten, do not use it anymore! $fromform->messagetrust = trusttext_trusted($modcontext); + $contextcheck = isset($fromform->groupinfo) && has_capability('mod/forum:movediscussions', $modcontext); + if ($fromform->edit) { // Updating a post unset($fromform->groupid); $fromform->id = $fromform->edit; @@ -621,6 +623,11 @@ if ($fromform = $mform_post->get_data()) { print_error('cannotupdatepost', 'forum'); } + // If the user has access to all groups and they are changing the group, then update the post. + if ($contextcheck) { + $DB->set_field('forum_discussions' ,'groupid' , $fromform->groupinfo, array('firstpost' => $fromform->id)); + } + $updatepost = $fromform; //realpost $updatepost->forum = $forum->id; if (!forum_update_post($updatepost, $mform_post, $message)) { @@ -712,6 +719,10 @@ if ($fromform = $mform_post->get_data()) { if (!forum_user_can_post_discussion($forum, $fromform->groupid, -1, $cm, $modcontext)) { print_error('cannotcreatediscussion', 'forum'); } + // If the user has access all groups capability let them choose the group. + if ($contextcheck) { + $fromform->groupid = $fromform->groupinfo; + } if (empty($fromform->groupid)) { $fromform->groupid = -1; } diff --git a/mod/forum/post_form.php b/mod/forum/post_form.php index b26deafc561..e3caa53819c 100644 --- a/mod/forum/post_form.php +++ b/mod/forum/post_form.php @@ -112,15 +112,26 @@ class mod_forum_post_form extends moodleform { } if (groups_get_activity_groupmode($cm, $course)) { // hack alert - if (empty($post->groupid)) { - $groupname = get_string('allparticipants'); + $groupdata = groups_get_activity_allowed_groups($cm); + $groupcount = count($groupdata); + $modulecontext = get_context_instance(CONTEXT_MODULE, $cm->id); + $contextcheck = has_capability('mod/forum:movediscussions', $modulecontext) && empty($post->parent) && $groupcount > 1; + if ($contextcheck) { + $groupinfo = array('0' => get_string('allparticipants')); + foreach ($groupdata as $grouptemp) { + $groupinfo[$grouptemp->id] = $grouptemp->name; + } + $mform->addElement('select','groupinfo', get_string('group'), $groupinfo); + $mform->setDefault('groupinfo', $post->groupid); } else { - $group = groups_get_group($post->groupid); - $groupname = format_string($group->name); + if (empty($post->groupid)) { + $groupname = get_string('allparticipants'); + } else { + $groupname = format_string($groupdata[$post->groupid]->name); + } + $mform->addElement('static', 'groupinfo', get_string('group'), $groupname); } - $mform->addElement('static', 'groupinfo', get_string('group'), $groupname); } - //------------------------------------------------------------------------------- // buttons if (isset($post->edit)) { // hack alert