Skip to:
Content

bbPress.org

Changeset 6174


Ignore:
Timestamp:
12/18/2016 05:28:31 AM (5 years ago)
Author:
johnjamesjacoby
Message:

Tools: First pass at upgrade tools for favorites & subscriptions.

  • Registers 2 new repair tools
  • Includes basic looping patterns for user-meta to post-meta

Needs testing and scrutiny.

See #2959.

File:
1 edited

Legend:

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

    r6173 r6174  
    671671        'components'  => array( bbp_get_user_rewrite_id() )
    672672    ) );
     673
     674    // Migrate favorites from user-meta to post-meta
     675    bbp_register_repair_tool( array(
     676        'id'          => 'bbp-user-favorites-move',
     677        'description' => __( 'Upgrade user favorites', 'bbpress' ),
     678        'callback'    => 'bbp_admin_migrate_user_favorites',
     679        'priority'    => 100,
     680        'overhead'    => esc_html__( 'High', 'bbpress' ),
     681        'components'  => array( bbp_get_user_rewrite_id() )
     682    ) );
     683
     684    // Migrate favorites from user-meta to post-meta
     685    bbp_register_repair_tool( array(
     686        'id'          => 'bbp-user-subscriptions-move',
     687        'description' => __( 'Upgrade user subscriptions', 'bbpress' ),
     688        'callback'    => 'bbp_admin_migrate_user_subscriptions',
     689        'priority'    => 105,
     690        'overhead'    => esc_html__( 'High', 'bbpress' ),
     691        'components'  => array( bbp_get_user_rewrite_id() )
     692    ) );
    673693}
    674694
     
    21202140
    21212141    return array( 0, sprintf( $statement, __( 'Complete!', 'bbpress' ) ) );
     2142}
     2143
     2144/**
     2145 * Upgrade user favorites for bbPress 2.6 and higher
     2146 *
     2147 * @since 2.6.0 bbPress (rxxxx)
     2148 *
     2149 * @return array An array of the status code and the message
     2150 */
     2151function bbp_admin_migrate_user_favorites() {
     2152
     2153    // Define variables
     2154    $bbp_db    = bbp_db();
     2155    $statement = __( 'Upgrading user favorites … %s', 'bbpress' );
     2156    $result    = __( 'No favorites to upgrade.',             'bbpress' );
     2157    $changed   = $total = 0;
     2158    $key       = $bbp_db->prefix . '_bbp_favorites';
     2159    $favorites = $bbp_db->get_col( "SELECT * FROM {$bbp_db->usermeta} WHERE meta_key = '{$key}'" );
     2160
     2161    // Bail if no closed topics found
     2162    if ( empty( $favorites ) || is_wp_error( $favorites ) ) {
     2163        return array( 1, sprintf( $statement, $result ) );
     2164    }
     2165
     2166    // Loop through each user's favorites
     2167    foreach ( $favorites as $meta_id => $meta ) {
     2168
     2169        // Get post IDs
     2170        $post_ids  = maybe_unserialize( $meta->meta_value );
     2171        $to_change = count( $post_ids );
     2172        $changed   = 0;
     2173
     2174        // Add user ID to all favorited posts
     2175        foreach ( $post_ids as $post_id ) {
     2176            $added = add_post_meta( $post_id, '_bbp_favorite', $meta->user_id );
     2177
     2178            // Bump counts if successfully added
     2179            if ( ! empty( $added ) ) {
     2180                ++$changed;
     2181                ++$total;
     2182            }
     2183        }
     2184
     2185        // Delete the old meta data
     2186        if ( $changed === $to_change ) {
     2187            delete_metadata_by_mid( 'user', $meta_id );
     2188        }
     2189    }
     2190
     2191    // Cleanup
     2192    unset( $favorites, $added, $post_ids );
     2193
     2194    // Complete results
     2195    $result = sprintf( _n( 'Complete! %d favorite upgraded.', 'Complete! %d favorites upgraded.', $changed, 'bbpress' ), $changed );
     2196
     2197    return array( 0, sprintf( $statement, $result ) );
     2198}
     2199
     2200/**
     2201 * Upgrade user subscriptions for bbPress 2.6 and higher
     2202 *
     2203 * @since 2.6.0 bbPress (rxxxx)
     2204 *
     2205 * @return array An array of the status code and the message
     2206 */
     2207function bbp_admin_migrate_user_subscriptions() {
     2208
     2209    // Define variables
     2210    $bbp_db        = bbp_db();
     2211    $statement     = __( 'Upgrading user subscriptions … %s', 'bbpress' );
     2212    $result        = __( 'No subscriptions to upgrade.',             'bbpress' );
     2213    $changed       = $total = 0;
     2214    $key           = $bbp_db->prefix . '_bbp_subscriptions';
     2215    $subscriptions = $bbp_db->get_col( "SELECT * FROM {$bbp_db->usermeta} WHERE meta_key = '{$key}'" );
     2216
     2217    // Bail if no closed topics found
     2218    if ( empty( $subscriptions ) || is_wp_error( $subscriptions ) ) {
     2219        return array( 1, sprintf( $statement, $result ) );
     2220    }
     2221
     2222    // Loop through each user's favorites
     2223    foreach ( $subscriptions as $meta_id => $meta ) {
     2224
     2225        // Get post IDs
     2226        $post_ids  = maybe_unserialize( $meta->meta_value );
     2227        $to_change = count( $post_ids );
     2228        $changed   = 0;
     2229
     2230        // Add user ID to all favorited posts
     2231        foreach ( $post_ids as $post_id ) {
     2232            $added = add_post_meta( $post_id, '_bbp_subscription', $meta->user_id );
     2233
     2234            // Bump counts if successfully added
     2235            if ( ! empty( $added ) ) {
     2236                ++$changed;
     2237                ++$total;
     2238            }
     2239        }
     2240
     2241        // Delete the old meta data
     2242        if ( $changed === $to_change ) {
     2243            delete_metadata_by_mid( 'user', $meta_id );
     2244        }
     2245    }
     2246
     2247    // Cleanup
     2248    unset( $subscriptions, $added, $post_ids );
     2249
     2250    // Complete results
     2251    $result = sprintf( _n( 'Complete! %d subscription upgraded.', 'Complete! %d subscriptions upgraded.', $total, 'bbpress' ), $total );
     2252
     2253    return array( 0, sprintf( $statement, $result ) );
    21222254}
    21232255
Note: See TracChangeset for help on using the changeset viewer.