Skip to:
Content

bbPress.org

Changeset 5538


Ignore:
Timestamp:
09/25/2014 06:27:18 AM (7 years ago)
Author:
netweb
Message:

Introduce support for importing anonymous topics and replies in converter.php

  • Adds two new steps to the import conversion process:
    • "Convert anonymous topic authors" and "Convert anonymous reply authors"
  • Utilizes existing bbPress support for anonymous user topics and replies
    • Adds post meta key _bbp_anonymous_name to imported anonymous topic and replies
    • Depending on the forum being imported these may be referenced as anonymous, guest or deleted topics or replies
  • Imported topics and replies are assigned post meta key _bbp_old_topic_author_name_id or _bbp_old_reply_author_name_id respectively that is then compared using the returned true or false in the callback function callback_check_anonymous() of each of importers that are are supported.

Props netweb. See #2347

File:
1 edited

Legend:

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

    r5530 r5538  
    443443                break;
    444444
    445             // STEP 7. Stick topics.
     445            // STEP 7. Convert anonymous topic authors.
    446446            case 7 :
     447                if ( $converter->convert_anonymous_topic_authors( $start ) ) {
     448                    update_option( '_bbp_converter_step',  $step + 1 );
     449                    update_option( '_bbp_converter_start', 0         );
     450                    if ( empty( $start ) ) {
     451                        $this->converter_output( __( 'No anonymous topic authors to convert', 'bbpress' ) );
     452                    }
     453                } else {
     454                    update_option( '_bbp_converter_start', $max + 1 );
     455                    $this->converter_output( sprintf( __( 'Converting anonymous topic authors (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
     456                }
     457
     458                break;
     459
     460            // STEP 8. Stick topics.
     461            case 8 :
    447462                if ( $converter->convert_topic_stickies( $start ) ) {
    448463                    update_option( '_bbp_converter_step',  $step + 1 );
     
    458473                break;
    459474
    460             // STEP 8. Stick to front topics (Super Sicky).
    461             case 8 :
     475            // STEP 9. Stick to front topics (Super Sicky).
     476            case 9 :
    462477                if ( $converter->convert_topic_super_stickies( $start ) ) {
    463478                    update_option( '_bbp_converter_step',  $step + 1 );
     
    473488                break;
    474489
    475             // STEP 9. Closed Topics.
    476             case 9 :
     490            // STEP 10. Closed Topics.
     491            case 10 :
    477492                if ( $converter->convert_topic_closed_topics( $start ) ) {
    478493                    update_option( '_bbp_converter_step',  $step + 1 );
     
    488503                break;
    489504
    490             // STEP 10. Convert topic tags.
    491             case 10 :
     505            // STEP 11. Convert topic tags.
     506            case 11 :
    492507                if ( $converter->convert_tags( $start ) ) {
    493508                    update_option( '_bbp_converter_step',  $step + 1 );
     
    503518                break;
    504519
    505             // STEP 11. Convert replies.
    506             case 11 :
     520            // STEP 12. Convert replies.
     521            case 12 :
    507522                if ( $converter->convert_replies( $start ) ) {
    508523                    update_option( '_bbp_converter_step',  $step + 1 );
     
    518533                break;
    519534
    520             // STEP 12. Convert threaded replies parents.
    521             case 12 :
     535            // STEP 13. Convert anonymous reply authors.
     536            case 13 :
     537                if ( $converter->convert_anonymous_reply_authors( $start ) ) {
     538                    update_option( '_bbp_converter_step',  $step + 1 );
     539                    update_option( '_bbp_converter_start', 0         );
     540                    if ( empty( $start ) ) {
     541                        $this->converter_output( __( 'No anonymous reply authors to convert', 'bbpress' ) );
     542                    }
     543                } else {
     544                    update_option( '_bbp_converter_start', $max + 1 );
     545                    $this->converter_output( sprintf( __( 'Converting anonymous reply authors (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
     546                }
     547
     548                break;
     549
     550            // STEP 14. Convert threaded replies parents.
     551            case 14 :
    522552                if ( $converter->convert_reply_to_parents( $start ) ) {
    523553                    update_option( '_bbp_converter_step',  $step + 1 );
     
    12121242
    12131243    /**
     1244     * This method converts anonymous topics.
     1245     *
     1246     * @since  bbPress (r5538)
     1247     *
     1248     * @uses add_post_meta() To add _bbp_anonymous_name topic meta key
     1249     */
     1250    public function convert_anonymous_topic_authors( $start ) {
     1251
     1252        $has_update = false;
     1253
     1254        if ( !empty( $this->sync_table ) ) {
     1255            $query = 'SELECT sync_table1.value_id AS topic_id, sync_table1.meta_value AS topic_is_anonymous, sync_table2.meta_value AS topic_author
     1256                            FROM       ' . $this->sync_table_name . ' AS sync_table1
     1257                            INNER JOIN ' . $this->sync_table_name . ' AS sync_table2
     1258                            ON ( sync_table1.value_id = sync_table2.value_id )
     1259                            WHERE sync_table1.meta_value =  "true"
     1260                            AND sync_table2.meta_key =  "_bbp_old_topic_author_name_id"
     1261                            LIMIT ' . $start . ', ' . $this->max_rows;
     1262        } else {
     1263            $query = 'SELECT wp_postmeta1.post_id AS topic_id, wp_postmeta1.meta_value AS topic_is_anonymous, wp_postmeta2.meta_value AS topic_author
     1264                            FROM       ' . $this->wpdb->postmeta . ' AS wp_postmeta1
     1265                            INNER JOIN ' . $this->wpdb->postmeta . ' AS wp_postmeta2
     1266                            ON ( wp_postmeta1.post_id = wp_postmeta2.post_id )
     1267                            WHERE wp_postmeta1.meta_value =  "true"
     1268                            AND wp_postmeta2.meta_key =  "_bbp_old_topic_author_name_id"
     1269                            LIMIT ' . $start . ', ' . $this->max_rows;
     1270
     1271        }
     1272
     1273        update_option( '_bbp_converter_query', $query );
     1274
     1275        $anonymous_topics = $this->wpdb->get_results( $query );
     1276
     1277        foreach ( (array) $anonymous_topics as $row ) {
     1278            $anonymous_topic_author_id = 0;
     1279            $this->wpdb->query( 'UPDATE ' . $this->wpdb->posts . ' SET post_author = "' . $anonymous_topic_author_id . '" WHERE ID = "' . $row->topic_id . '" LIMIT 1' );
     1280
     1281            add_post_meta( $row->topic_id, '_bbp_anonymous_name', $row->topic_author );
     1282
     1283            $has_update = true;
     1284        }
     1285
     1286        return ! $has_update;
     1287    }
     1288
     1289    /**
     1290     * This method converts anonymous replies.
     1291     *
     1292     * @since  bbPress (r5538)
     1293     *
     1294     * @uses add_post_meta() To add _bbp_anonymous_name reply meta key
     1295     */
     1296    public function convert_anonymous_reply_authors( $start ) {
     1297
     1298        $has_update = false;
     1299
     1300        if ( !empty( $this->sync_table ) ) {
     1301            $query = 'SELECT sync_table1.value_id AS reply_id, sync_table1.meta_value AS reply_is_anonymous, sync_table2.meta_value AS reply_author
     1302                            FROM       ' . $this->sync_table_name . ' AS sync_table1
     1303                            INNER JOIN ' . $this->sync_table_name . ' AS sync_table2
     1304                            ON ( sync_table1.value_id = sync_table2.value_id )
     1305                            WHERE sync_table1.meta_value =  "true"
     1306                            AND sync_table2.meta_key =  "_bbp_old_reply_author_name_id"
     1307                            LIMIT ' . $start . ', ' . $this->max_rows;
     1308        } else {
     1309            $query = 'SELECT wp_postmeta1.post_id AS reply_id, wp_postmeta1.meta_value AS reply_is_anonymous, wp_postmeta2.meta_value AS reply_author
     1310                            FROM       ' . $this->wpdb->postmeta . ' AS wp_postmeta1
     1311                            INNER JOIN ' . $this->wpdb->postmeta . ' AS wp_postmeta2
     1312                            ON ( wp_postmeta1.post_id = wp_postmeta2.post_id )
     1313                            WHERE wp_postmeta1.meta_value =  "true"
     1314                            AND wp_postmeta2.meta_key =  "_bbp_old_reply_author_name_id"
     1315                            LIMIT ' . $start . ', ' . $this->max_rows;
     1316
     1317        }
     1318
     1319        update_option( '_bbp_converter_query', $query );
     1320
     1321        $anonymous_replies = $this->wpdb->get_results( $query );
     1322
     1323        foreach ( (array) $anonymous_replies as $row ) {
     1324            $anonymous_reply_author_id = 0;
     1325            $this->wpdb->query( 'UPDATE ' . $this->wpdb->posts . ' SET post_author = "' . $anonymous_reply_author_id . '" WHERE ID = "' . $row->reply_id . '" LIMIT 1' );
     1326
     1327            add_post_meta( $row->reply_id, '_bbp_anonymous_name', $row->reply_author );
     1328
     1329            $has_update = true;
     1330        }
     1331
     1332        return ! $has_update;
     1333    }
     1334
     1335    /**
    12141336     * This method deletes data from the wp database.
    12151337     */
Note: See TracChangeset for help on using the changeset viewer.