Make WordPress Core

Ticket #8019: 8019.diff

File 8019.diff, 3.6 KB (added by ryan, 16 years ago)
  • wp-admin/import/wordpress.php

     
    559559                preg_match_all('|<wp:comment>(.*?)</wp:comment>|is', $post, $comments);
    560560                $comments = $comments[1];
    561561                $num_comments = 0;
    562                 if ( $comments) { foreach ($comments as $comment) {
    563                         $comment_author       = $this->get_tag( $comment, 'wp:comment_author');
    564                         $comment_author_email = $this->get_tag( $comment, 'wp:comment_author_email');
    565                         $comment_author_IP    = $this->get_tag( $comment, 'wp:comment_author_IP');
    566                         $comment_author_url   = $this->get_tag( $comment, 'wp:comment_author_url');
    567                         $comment_date         = $this->get_tag( $comment, 'wp:comment_date');
    568                         $comment_date_gmt     = $this->get_tag( $comment, 'wp:comment_date_gmt');
    569                         $comment_content      = $this->get_tag( $comment, 'wp:comment_content');
    570                         $comment_approved     = $this->get_tag( $comment, 'wp:comment_approved');
    571                         $comment_type         = $this->get_tag( $comment, 'wp:comment_type');
    572                         $comment_parent       = $this->get_tag( $comment, 'wp:comment_parent');
    573 
    574                         // if this is a new post we can skip the comment_exists() check
    575                         if ( !$post_exists || !comment_exists($comment_author, $comment_date) ) {
    576                                 $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_author_email', 'comment_author_IP', 'comment_date', 'comment_date_gmt', 'comment_content', 'comment_approved', 'comment_type', 'comment_parent');
    577                                 $commentdata = wp_filter_comment($commentdata);
    578                                 wp_insert_comment($commentdata);
    579                                 $num_comments++;
     562                $inserted_comments = array();
     563                if ( $comments) {
     564                        foreach ($comments as $comment) {
     565                                $comment_id     = $this->get_tag( $comment, 'wp:comment_id');
     566                                $newcomments[$comment_id]['comment_post_ID']      = $comment_post_ID;
     567                                $newcomments[$comment_id]['comment_author']       = $this->get_tag( $comment, 'wp:comment_author');
     568                                $newcomments[$comment_id]['comment_author_email'] = $this->get_tag( $comment, 'wp:comment_author_email');
     569                                $newcomments[$comment_id]['comment_author_IP']    = $this->get_tag( $comment, 'wp:comment_author_IP');
     570                                $newcomments[$comment_id]['comment_author_url']   = $this->get_tag( $comment, 'wp:comment_author_url');
     571                                $newcomments[$comment_id]['comment_date']         = $this->get_tag( $comment, 'wp:comment_date');
     572                                $newcomments[$comment_id]['comment_date_gmt']     = $this->get_tag( $comment, 'wp:comment_date_gmt');
     573                                $newcomments[$comment_id]['comment_content']      = $this->get_tag( $comment, 'wp:comment_content');
     574                                $newcomments[$comment_id]['comment_approved']     = $this->get_tag( $comment, 'wp:comment_approved');
     575                                $newcomments[$comment_id]['comment_type']         = $this->get_tag( $comment, 'wp:comment_type');
     576                                $newcomments[$comment_id]['comment_parent']       = $this->get_tag( $comment, 'wp:comment_parent');
    580577                        }
    581                 } }
     578                        // Sort by comment ID, to make sure comment parents exist (if there at all)
     579                        ksort($newcomments);
     580                        foreach ($newcomments as $key => $comment) {
     581                                // if this is a new post we can skip the comment_exists() check
     582                                if ( !$post_exists || !comment_exists($comment['comment_author'], $comment['comment_date']) ) {
     583                                        if (isset($inserted_comments[$comment['comment_parent']]))
     584                                                $comment['comment_parent'] = $inserted_comments[$comment['comment_parent']];
     585                                        $comment = wp_filter_comment($comment);
     586                                        $inserted_comments[$key] = wp_insert_comment($comment);
     587                                        $num_comments++;
     588                                }
     589                        }
     590                }
    582591
    583592                if ( $num_comments )
    584593                        printf(' '._n('(%s comment)', '(%s comments)', $num_comments), $num_comments);