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 | } |