} if (!($forum = $DB->get_record("forum", array("id" => $discussion->forum)))) { print_error('invalidforumid', 'forum'); } if (!($cm = get_coursemodule_from_instance("forum", $forum->id, $forum->course))) { print_error('invalidcoursemodule'); } if (!($course = $DB->get_record('course', array('id' => $forum->course)))) { print_error('invalidcourseid'); } require_login($course, false, $cm); $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); if (!($post->userid == $USER->id && has_capability('mod/forum:deleteownpost', $modcontext) || has_capability('mod/forum:deleteanypost', $modcontext))) { print_error('cannotdeletepost', 'forum'); } $replycount = forum_count_replies($post); if (!empty($confirm) && confirm_sesskey()) { // User has confirmed the delete //check user capability to delete post. $timepassed = time() - $post->created; if ($timepassed > $CFG->maxeditingtime && !has_capability('mod/forum:deleteanypost', $modcontext)) { print_error("cannotdeletepost", "forum", forum_go_back_to("discuss.php?d={$post->discussion}")); } if ($post->totalscore) { notice(get_string('couldnotdeleteratings', 'rating'), forum_go_back_to("discuss.php?d={$post->discussion}")); } else { if ($replycount && !has_capability('mod/forum:deleteanypost', $modcontext)) { print_error("couldnotdeletereplies", "forum", forum_go_back_to("discuss.php?d={$post->discussion}")); } else { if (!$post->parent) { // post is a discussion topic as well, so delete discussion
/** * @global object * @param object $post * @param bool $children * @return int */ function forum_count_replies($post, $children=true) { global $DB; $count = 0; if ($children) { if ($childposts = $DB->get_records('forum_posts', array('parent' => $post->id))) { foreach ($childposts as $childpost) { $count ++; // For this child $count += forum_count_replies($childpost, true); } } } else { $count += $DB->count_records('forum_posts', array('parent' => $post->id)); } return $count; }
/** * */ function forum_count_replies($post, $children = true) { $count = 0; if ($children) { if ($childposts = get_records('forum_posts', 'parent', $post->id)) { foreach ($childposts as $childpost) { $count++; // For this child $count += forum_count_replies($childpost, true); } } } else { $count += count_records('forum_posts', 'parent', $post->id); } return $count; }