} if (!($forum = $DB->get_record("hsuforum", array("id" => $discussion->forum)))) { print_error('invalidforumid', 'hsuforum'); } if (!($cm = get_coursemodule_from_instance("hsuforum", $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 = context_module::instance($cm->id); if (!($post->userid == $USER->id && has_capability('mod/hsuforum:deleteownpost', $modcontext) || has_capability('mod/hsuforum:deleteanypost', $modcontext))) { print_error('cannotdeletepost', 'hsuforum'); } $replycount = hsuforum_count_replies($post); if (!empty($confirm) && confirm_sesskey()) { // User has confirmed the delete redirect(hsuforum_verify_and_delete_post($course, $cm, $forum, $modcontext, $discussion, $post)); } else { // User just asked to delete something hsuforum_set_return(); $PAGE->navbar->add(get_string('delete', 'hsuforum')); $PAGE->set_title($course->shortname); $PAGE->set_heading($course->fullname); $renderer = $PAGE->get_renderer('mod_hsuforum'); $PAGE->requires->js_init_call('M.mod_hsuforum.init', null, false, $renderer->get_js_module()); if ($replycount) { if (!has_capability('mod/hsuforum:deleteanypost', $modcontext)) { print_error("couldnotdeletereplies", "hsuforum", hsuforum_go_back_to("discuss.php?d={$post->discussion}")); }
/** * @global object * @param object $post * @param bool $children * @return int */ function hsuforum_count_replies($post, $children = true) { global $DB, $USER; $count = 0; $select = 'parent = ? AND (privatereply = 0 OR privatereply = ? OR userid = ?)'; $params = array($post->id, $USER->id, $USER->id); if ($children) { if ($childposts = $DB->get_records_select('hsuforum_posts', $select, $params)) { foreach ($childposts as $childpost) { $count++; // For this child $count += hsuforum_count_replies($childpost, true); } } } else { $count += $DB->count_records_select('hsuforum_posts', $select, $params); } return $count; }