error("Only teachers can do that!");
}
if ($forum = get_record("forum", "id", $move)) {
+ if (!forum_move_attachments($discussion, $move)) {
+ notify("Errors occurred while moving attachment directories - check your file permissions");
+ }
set_field("forum_discussions", "forum", $forum->id, "id", $discussion->id);
$discussion->forum = $forum->id;
add_to_log($course->id, "forum", "move discussion", "discuss.php?d=$discussion->id", "$discussion->id");
}
}
+function forum_move_attachments($discussion, $forumid) {
+/// Given a discussion object that is being moved to forumid,
+/// this function checks all posts in that discussion
+/// for attachments, and if any are found, these are
+/// moved to the new forum directory.
+
+ global $CFG;
+
+ $return = true;
+
+ if ($posts = get_records_select("forum_posts", "discussion = '$discussion->id' AND attachment <> ''")) {
+ foreach ($posts as $oldpost) {
+ $oldpost->course = $discussion->course;
+ $oldpost->forum = $discussion->forum;
+ $oldpostdir = "$CFG->dataroot/".forum_file_area_name($oldpost);
+ if (is_dir($oldpostdir)) {
+ $newpost = $oldpost;
+ $newpost->forum = $forumid;
+ $newpostdir = "$CFG->dataroot/".forum_file_area_name($newpost);
+ if (! @rename($oldpostdir, $newpostdir)) {
+ $return = false;
+ }
+ }
+ }
+ }
+ return $return;
+}
+
function forum_print_attachments($post, $return=NULL) {
// if return=html, then return a html string.
// if return=text, then return a text-only string.