diff --git a/src/includes/admin/tools/repair.php b/src/includes/admin/tools/repair.php
index 2be64e7..e95bfdb 100644
|
a
|
b
|
function bbp_admin_repair_topic_voice_count() { |
| 243 | 243 | $pps = bbp_get_public_status_id(); |
| 244 | 244 | $cps = bbp_get_closed_status_id(); |
| 245 | 245 | |
| 246 | | $voice_id_sql = $bbp_db->prepare( "INSERT INTO {$bbp_db->postmeta} (post_id, meta_key, meta_value) ( |
| | 246 | $engagements_sql = $bbp_db->prepare( "INSERT INTO {$bbp_db->postmeta} (post_id, meta_key, meta_value) ( |
| 247 | 247 | SELECT postmeta.meta_value, '_bbp_engagement', posts.post_author |
| 248 | 248 | FROM {$bbp_db->posts} AS posts |
| 249 | 249 | LEFT JOIN {$bbp_db->postmeta} AS postmeta |
| 250 | 250 | ON posts.ID = postmeta.post_id |
| 251 | 251 | AND postmeta.meta_key = '_bbp_topic_id' |
| 252 | 252 | WHERE posts.post_type IN (%s, %s) |
| 253 | | AND posts.post_status IN (%s, %s))", $tpt, $rpt, $pps, $cps ); |
| | 253 | AND posts.post_status IN (%s, %s) |
| | 254 | GROUP BY postmeta.meta_value, posts.post_author)", $tpt, $rpt, $pps, $cps ); |
| 254 | 255 | |
| 255 | | if ( is_wp_error( $bbp_db->query( $voice_id_sql ) ) ) { |
| | 256 | if ( is_wp_error( $bbp_db->query( $engagements_sql ) ) ) { |
| 256 | 257 | return array( 2, sprintf( $statement, $result ) ); |
| 257 | 258 | } |
| 258 | 259 | |
| … |
… |
function bbp_admin_repair_topic_voice_count() { |
| 260 | 261 | SELECT post_id, '_bbp_voice_count', COUNT(DISTINCT meta_value) |
| 261 | 262 | FROM {$bbp_db->postmeta} |
| 262 | 263 | WHERE meta_key = '_bbp_engagement' |
| 263 | | GROUP BY post_id ORDER BY post_id)"; |
| | 264 | GROUP BY post_id)"; |
| 264 | 265 | |
| 265 | 266 | if ( is_wp_error( $bbp_db->query( $voice_count_sql ) ) ) { |
| 266 | 267 | return array( 3, sprintf( $statement, $result ) ); |
diff --git a/src/includes/admin/tools/upgrades.php b/src/includes/admin/tools/upgrades.php
index 8de8253..861573a 100644
|
a
|
b
|
function bbp_admin_upgrade_user_engagements() { |
| 180 | 180 | $rpt = bbp_get_reply_post_type(); |
| 181 | 181 | $pps = bbp_get_public_status_id(); |
| 182 | 182 | $cps = bbp_get_closed_status_id(); |
| 183 | | $sql = $bbp_db->prepare( "SELECT postmeta.meta_value, '_bbp_engagement', posts.post_author |
| | 183 | $sql = $bbp_db->prepare( "INSERT INTO {$bbp_db->postmeta} (post_id, meta_key, meta_value) ( |
| | 184 | SELECT postmeta.meta_value, '_bbp_engagement', posts.post_author |
| 184 | 185 | FROM {$bbp_db->posts} AS posts |
| 185 | 186 | LEFT JOIN {$bbp_db->postmeta} AS postmeta |
| 186 | 187 | ON posts.ID = postmeta.post_id |
| 187 | 188 | AND postmeta.meta_key = '_bbp_topic_id' |
| 188 | 189 | WHERE posts.post_type IN (%s, %s) |
| 189 | | AND posts.post_status IN (%s, %s)", $tpt, $rpt, $pps, $cps ); |
| | 190 | AND posts.post_status IN (%s, %s) |
| | 191 | GROUP BY postmeta.meta_value, posts.post_author)", $tpt, $rpt, $pps, $cps ); |
| 190 | 192 | |
| 191 | | $engagements = $bbp_db->get_results( $sql ); |
| | 193 | $engagements = $bbp_db->query( $sql ); |
| 192 | 194 | |
| 193 | 195 | // Bail if no closed topics found |
| 194 | 196 | if ( empty( $engagements ) || is_wp_error( $engagements ) ) { |
| 195 | 197 | return array( 1, sprintf( $statement, $result ) ); |
| 196 | 198 | } |
| 197 | 199 | |
| 198 | | // Loop through each user's engagements |
| 199 | | foreach ( $engagements as $meta ) { |
| 200 | | |
| 201 | | // Skip if already exists |
| 202 | | if ( $bbp_db->get_var( $bbp_db->prepare( "SELECT * FROM {$bbp_db->postmeta} WHERE post_id = %d AND meta_key = %s AND meta_value = %d LIMIT 1", $meta->meta_value, '_bbp_engagement', $meta->post_author ) ) ) { |
| 203 | | continue; |
| 204 | | } |
| 205 | | |
| 206 | | // Add the post meta |
| 207 | | $added = add_post_meta( $meta->meta_value, '_bbp_engagement', $meta->post_author, false ); |
| 208 | | |
| 209 | | // Bump counts if successfully added |
| 210 | | if ( ! empty( $added ) ) { |
| 211 | | ++$total; |
| 212 | | } |
| 213 | | } |
| 214 | | |
| 215 | | // Cleanup |
| 216 | | unset( $engagements, $added ); |
| 217 | | |
| 218 | 200 | // Complete results |
| 219 | | $result = sprintf( _n( 'Complete! %d engagements upgraded.', 'Complete! %d engagements upgraded.', $total, 'bbpress' ), $total ); |
| | 201 | $result = sprintf( _n( 'Complete! %d engagements upgraded.', 'Complete! %d engagements upgraded.', $engagements, 'bbpress' ), $engagements ); |
| 220 | 202 | |
| 221 | 203 | return array( 0, sprintf( $statement, $result ) ); |
| 222 | 204 | } |