bbp_admin_repair_user_favorites()
Repair user favorites
Description Description
Return Return
(array) An array of the status code and the message
Source Source
File: includes/admin/tools/repair.php
function bbp_admin_repair_user_favorites() { // Define variables $bbp_db = bbp_db(); $statement = esc_html__( 'Removing unpublished topics from user favorites… %s', 'bbpress' ); $result = esc_html__( 'Failed!', 'bbpress' ); // Query for users with favorites $key = $bbp_db->prefix . '_bbp_favorites'; $users = $bbp_db->get_results( "SELECT `user_id`, `meta_value` AS `favorites` FROM `{$bbp_db->usermeta}` WHERE `meta_key` = '{$key}'" ); if ( is_wp_error( $users ) ) { return array( 1, sprintf( $statement, $result ) ); } $topics = $bbp_db->get_col( "SELECT `ID` FROM `{$bbp_db->posts}` WHERE `post_type` = '" . bbp_get_topic_post_type() . "' AND `post_status` = '" . bbp_get_public_status_id() . "'" ); if ( is_wp_error( $topics ) ) { return array( 2, sprintf( $statement, $result ) ); } $values = array(); foreach ( $users as $user ) { if ( empty( $user->favorites ) || ! is_string( $user->favorites ) ) { continue; } $favorites = array_intersect( $topics, explode( ',', $user->favorites ) ); if ( empty( $favorites ) || ! is_array( $favorites ) ) { continue; } $favorites_joined = implode( ',', $favorites ); $values[] = "('{$user->user_id}', '{$key}', '{$favorites_joined}')"; // Cleanup unset( $favorites, $favorites_joined ); } if ( !count( $values ) ) { $result = esc_html__( 'Nothing to remove!', 'bbpress' ); return array( 0, sprintf( $statement, $result ) ); } $sql_delete = "DELETE FROM `{$bbp_db->usermeta}` WHERE `meta_key` = '{$key}'"; if ( is_wp_error( $bbp_db->query( $sql_delete ) ) ) { return array( 4, sprintf( $statement, $result ) ); } foreach ( array_chunk( $values, 10000 ) as $chunk ) { $chunk = "\n" . implode( ",\n", $chunk ); $sql_insert = "INSERT INTO `{$bbp_db->usermeta}` (`user_id`, `meta_key`, `meta_value`) VALUES {$chunk}"; if ( is_wp_error( $bbp_db->query( $sql_insert ) ) ) { return array( 5, sprintf( $statement, $result ) ); } } return array( 0, sprintf( $statement, esc_html__( 'Complete!', 'bbpress' ) ) ); }
Changelog Changelog
Version | Description |
---|---|
2.0.0 | Introduced. |