Comment_Delete()
Description #
The comment_delete ajax callback.
Source #
File: ajax/comment-delete.php
class Comment_Delete extends \AnsPress\Classes\Ajax {
	/**
	 * Instance of this class.
	 *
	 * @var null|Comment_Delete
	 */
	protected static $instance;
	/**
	 * The class constructor.
	 *
	 * Set requests and nonce key.
	 */
	protected function __construct() {
		$comment_id      = ap_sanitize_unslash( 'comment_id', 'r' );
		$this->nonce_key = 'delete_comment_' . $comment_id;
		$this->req( 'comment_id', $comment_id );
		// Call parent.
		parent::__construct();
	}
	/**
	 * Verify user permission.
	 *
	 * @return void
	 */
	protected function verify_permission() {
		$comment_id = $this->req( 'comment_id' );
		if ( ! empty( $comment_id ) && ! ap_user_can_delete_comment( $comment_id ) ) {
			parent::verify_permission();
		}
	}
	/**
	 * Handle ajax for logged in users.
	 *
	 * @return void
	 */
	public function logged_in() {
		$comment_id = $this->req( 'comment_id' );
		$_comment   = get_comment( $comment_id );
		// Check if deleting comment is locked.
		if ( ap_comment_delete_locked( $_comment->comment_ID ) && ! is_super_admin() ) {
			$this->set_fail();
			$this->snackbar(
				sprintf(
					// Translators: %s contain comment created date. i.e. 10 hours.
					__( 'The comment is locked and cannot be deleted. Any comments posted before %s cannot be deleted.', 'anspress-question-answer' ),
					human_time_diff( ap_get_current_timestamp() + ap_opt( 'disable_delete_after' ) )
				)
			);
			$this->send();
		}
		$delete = wp_delete_comment( (int) $_comment->comment_ID, true );
		if ( $delete ) {
			do_action( 'ap_unpublish_comment', $_comment );
			do_action( 'ap_after_deleting_comment', $_comment );
			$count = get_comment_count( $_comment->comment_post_ID );
			$this->set_success();
			$this->snackbar( __( 'Comment successfully deleted', 'anspress-question-answer' ) );
			$this->add_res( 'cb', 'commentDeleted' );
			$this->add_res( 'post_ID', $_comment->comment_post_ID );
			$this->add_res(
				'commentsCount',
				array(
					'text'       => sprintf(
						// Translators: %d contain comment count.
						_n( '%d Comment', '%d Comments', $count['all'], 'anspress-question-answer' ),
						$count['all']
					),
					'number'     => $count['all'],
					'unapproved' => $count['awaiting_moderation'],
				)
			);
		}
	}
}
Expand full source code Collapse full source code View on GitHub: ajax/comment-delete.php:26
  Add your comment