bbp_admin_upgrade_user_engagements()

Upgrade user engagements for bbPress 2.6 and higher


Description Description


Return Return

(array) An array of the status code and the message


Top ↑

Source Source

File: includes/admin/tools/upgrade.php

function bbp_admin_upgrade_user_engagements() {

	// Define variables
	$bbp_db    = bbp_db();
	$statement = esc_html__( 'Upgrading user engagements… %s', 'bbpress' );
	$result    = esc_html__( 'No engagements to upgrade.',            'bbpress' );

	// Delete previous engagements
	$sql_delete = "DELETE FROM {$bbp_db->postmeta} WHERE meta_key = '_bbp_engagement'";
	if ( is_wp_error( $bbp_db->query( $sql_delete ) ) ) {
		return array( 1, sprintf( $statement, $result ) );
	}

	// Post types and statuses
	$tpt = bbp_get_topic_post_type();
	$rpt = bbp_get_reply_post_type();
	$pps = bbp_get_public_status_id();
	$cps = bbp_get_closed_status_id();
	$sql = "INSERT INTO {$bbp_db->postmeta} (post_id, meta_key, meta_value) (
			SELECT postmeta.meta_value, '_bbp_engagement', posts.post_author
				FROM {$bbp_db->posts} AS posts
				LEFT JOIN {$bbp_db->postmeta} AS postmeta
					ON posts.ID = postmeta.post_id
					AND postmeta.meta_key = '_bbp_topic_id'
				WHERE posts.post_type IN (%s, %s)
					AND posts.post_status IN (%s, %s)
				GROUP BY postmeta.meta_value, posts.post_author)";

	// Run the big query
	$prepare     = $bbp_db->prepare( $sql, $tpt, $rpt, $pps, $cps );
	$engagements = $bbp_db->query( $prepare );

	// Bail if no closed topics found
	if ( empty( $engagements ) || is_wp_error( $engagements ) ) {
		return array( 1, sprintf( $statement, $result ) );
	}

	// Complete results
	$result = sprintf( _n( 'Complete! %d engagement upgraded.', 'Complete! %d engagements upgraded.', $engagements, 'bbpress' ), bbp_number_format( $engagements ) );

	return array( 0, sprintf( $statement, $result ) );
}

Top ↑

Changelog Changelog

Changelog
Version Description
2.6.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.