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