Skip to:
Content

bbPress.org

Changeset 6340


Ignore:
Timestamp:
03/02/2017 03:57:04 AM (8 years ago)
Author:
johnjamesjacoby
Message:

Engagements: Improve efficiency of upgrade & repair tools.

Props thebrandonallen. See #3068.

Location:
trunk/src/includes/admin/tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/admin/tools/repair.php

    r6320 r6340  
    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
     
    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 );
    254 
    255     if ( is_wp_error( $bbp_db->query( $voice_id_sql ) ) ) {
     253                AND posts.post_status IN (%s, %s)
     254            GROUP BY postmeta.meta_value, posts.post_author)", $tpt, $rpt, $pps, $cps );
     255
     256    if ( is_wp_error( $bbp_db->query( $engagements_sql ) ) ) {
    256257        return array( 2, sprintf( $statement, $result ) );
    257258    }
     
    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 ) ) ) {
  • trunk/src/includes/admin/tools/upgrades.php

    r6333 r6340  
    168168    $statement = __( 'Upgrading user engagements … %s', 'bbpress' );
    169169    $result    = __( 'No engagements to upgrade.',             'bbpress' );
    170     $total     = 0;
    171170
    172171    // Delete previous engagements
     
    181180    $pps = bbp_get_public_status_id();
    182181    $cps = bbp_get_closed_status_id();
    183     $sql = $bbp_db->prepare( "SELECT postmeta.meta_value, '_bbp_engagement', posts.post_author
    184             FROM {$bbp_db->posts} AS posts
    185             LEFT JOIN {$bbp_db->postmeta} AS postmeta
    186                 ON posts.ID = postmeta.post_id
    187                 AND postmeta.meta_key = '_bbp_topic_id'
    188             WHERE posts.post_type IN (%s, %s)
    189                 AND posts.post_status IN (%s, %s)", $tpt, $rpt, $pps, $cps );
    190 
    191     $engagements = $bbp_db->get_results( $sql );
     182    $sql = $bbp_db->prepare( "INSERT INTO {$bbp_db->postmeta} (post_id, meta_key, meta_value) (
     183            SELECT postmeta.meta_value, '_bbp_engagement', posts.post_author
     184                FROM {$bbp_db->posts} AS posts
     185                LEFT JOIN {$bbp_db->postmeta} AS postmeta
     186                    ON posts.ID = postmeta.post_id
     187                    AND postmeta.meta_key = '_bbp_topic_id'
     188                WHERE posts.post_type IN (%s, %s)
     189                    AND posts.post_status IN (%s, %s)
     190                GROUP BY postmeta.meta_value, posts.post_author)", $tpt, $rpt, $pps, $cps );
     191
     192    $engagements = $bbp_db->query( $sql );
    192193
    193194    // Bail if no closed topics found
     
    196197    }
    197198
    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     // Complete results
    219     $result = sprintf( _n( 'Complete! %d engagements upgraded.', 'Complete! %d engagements upgraded.', $total, 'bbpress' ), $total );
     199    // Complete results
     200    $result = sprintf( _n( 'Complete! %d engagements upgraded.', 'Complete! %d engagements upgraded.', $engagements, 'bbpress' ), $engagements );
    220201
    221202    return array( 0, sprintf( $statement, $result ) );
Note: See TracChangeset for help on using the changeset viewer.