_wp_ajax_delete_comment_response

Definition:
function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) {}

Sends back current comment total and new page links if they need to be updated.
Contrary to normal success AJAX response ("1"), die with time() on success.

Parameters

  • int $comment_id
  • $delta

Source code

function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) {

	$total = (int) @$_POST['_total'];

	$per_page = (int) @$_POST['_per_page'];

	$page = (int) @$_POST['_page'];

	$url = esc_url_raw( @$_POST['_url'] );

	// JS didn't send us everything we need to know. Just die with success message

	if ( !$total || !$per_page || !$page || !$url )

		die( (string) time() );



	$total += $delta;

	if ( $total < 0 )

		$total = 0;



	// Only do the expensive stuff on a page-break, and about 1 other time per page

	if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) {

		$post_id = 0;

		$status = 'total_comments'; // What type of comment count are we looking for?

		$parsed = parse_url( $url );

		if ( isset( $parsed['query'] ) ) {

			parse_str( $parsed['query'], $query_vars );

			if ( !empty( $query_vars['comment_status'] ) )

				$status = $query_vars['comment_status'];

			if ( !empty( $query_vars['p'] ) )

				$post_id = (int) $query_vars['p'];

		}



		$comment_count = wp_count_comments($post_id);



		if ( isset( $comment_count->$status ) ) // We're looking for a known type of comment count

			$total = $comment_count->$status;

			// else use the decremented value from above

	}



	$time = time(); // The time since the last comment count



	$x = new WP_Ajax_Response( array(

		'what' => 'comment',

		'id' => $comment_id, // here for completeness - not used

		'supplemental' => array(

			'total_items_i18n' => sprintf( _n( '1 item', '%s items', $total ), number_format_i18n( $total ) ),

			'total_pages' => ceil( $total / $per_page ),

			'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ),

			'total' => $total,

			'time' => $time

		)

	) );

	$x->send();

}

4383

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: