Ticket #8019: 8019.diff

File 8019.diff, 3.6 KB (added by ryan, 2 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);