Exemplo n.º 1
0
 }
 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));
 }