} 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}")); } echo $OUTPUT->header(); echo $OUTPUT->heading(format_string($forum->name), 2); echo $OUTPUT->confirm(get_string("deletesureplural", "hsuforum", $replycount + 1), "post.php?delete={$delete}&confirm={$delete}", $CFG->wwwroot . '/mod/hsuforum/discuss.php?d=' . $post->discussion . '#p' . $post->id);
/** * @return json_response * @throws \coding_exception */ public function delete_post_action() { global $USER, $DB, $PAGE; if (!AJAX_SCRIPT) { throw new coding_exception('This is an AJAX action and you cannot access it directly'); } require_sesskey(); $postid = required_param('postid', PARAM_INT); $post = $DB->get_record('hsuforum_posts', array('id' => $postid), '*', MUST_EXIST); $discussion = $DB->get_record('hsuforum_discussions', array('id' => $post->discussion), '*', MUST_EXIST); $candeleteown = $post->userid == $USER->id && has_capability('mod/hsuforum:deleteownpost', $PAGE->context); if (!($candeleteown || has_capability('mod/hsuforum:deleteanypost', $PAGE->context))) { print_error('cannotdeletepost', 'hsuforum'); } $redirect = hsuforum_verify_and_delete_post($PAGE->course, $PAGE->cm, $PAGE->activityrecord, $PAGE->context, $discussion, $post); $html = ''; if ($discussion->firstpost != $post->id) { $html = $this->discussionservice->render_full_thread($discussion->id); $message = get_string('postdeleted', 'hsuforum'); } else { $message = get_string('deleteddiscussion', 'hsuforum'); } /** @var \core_renderer $renderer */ $renderer = $PAGE->get_renderer('core', null, RENDERER_TARGET_GENERAL); return new json_response(array('redirecturl' => $redirect, 'html' => $html, 'postid' => $post->id, 'livelog' => $message, 'notificationhtml' => $renderer->notification($message, 'notifysuccess'), 'discussionid' => $discussion->id)); }