Skip to:
Content

bbPress.org

Ticket #3068: 3068.1.voice_count_repair_upgrade_queries.diff

File 3068.1.voice_count_repair_upgrade_queries.diff, 3.7 KB (added by thebrandonallen, 8 years ago)
  • src/includes/admin/tools/repair.php

    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() { 
    243243        $pps = bbp_get_public_status_id();
    244244        $cps = bbp_get_closed_status_id();
    245245
    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) (
    247247                SELECT postmeta.meta_value, '_bbp_engagement', posts.post_author
    248248                        FROM {$bbp_db->posts} AS posts
    249249                        LEFT JOIN {$bbp_db->postmeta} AS postmeta
    250250                                ON posts.ID = postmeta.post_id
    251251                                AND postmeta.meta_key = '_bbp_topic_id'
    252252                        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 );
    254255
    255         if ( is_wp_error( $bbp_db->query( $voice_id_sql ) ) ) {
     256        if ( is_wp_error( $bbp_db->query( $engagements_sql ) ) ) {
    256257                return array( 2, sprintf( $statement, $result ) );
    257258        }
    258259
    function bbp_admin_repair_topic_voice_count() { 
    260261                SELECT post_id, '_bbp_voice_count', COUNT(DISTINCT meta_value)
    261262                        FROM {$bbp_db->postmeta}
    262263                        WHERE meta_key = '_bbp_engagement'
    263                         GROUP BY post_id ORDER BY post_id)";
     264                        GROUP BY post_id)";
    264265
    265266        if ( is_wp_error( $bbp_db->query( $voice_count_sql ) ) ) {
    266267                return array( 3, sprintf( $statement, $result ) );
  • src/includes/admin/tools/upgrades.php

    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() { 
    180180        $rpt = bbp_get_reply_post_type();
    181181        $pps = bbp_get_public_status_id();
    182182        $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
    184185                        FROM {$bbp_db->posts} AS posts
    185186                        LEFT JOIN {$bbp_db->postmeta} AS postmeta
    186187                                ON posts.ID = postmeta.post_id
    187188                                AND postmeta.meta_key = '_bbp_topic_id'
    188189                        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 );
    190192
    191         $engagements = $bbp_db->get_results( $sql );
     193        $engagements = $bbp_db->query( $sql );
    192194
    193195        // Bail if no closed topics found
    194196        if ( empty( $engagements ) || is_wp_error( $engagements ) ) {
    195197                return array( 1, sprintf( $statement, $result ) );
    196198        }
    197199
    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 
    218200        // 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 );
    220202
    221203        return array( 0, sprintf( $statement, $result ) );
    222204}