WordPress.org

Make WordPress Core

Ticket #15634: 15634.warn-on-wxr-version.diff

File 15634.warn-on-wxr-version.diff, 3.3 KB (added by duck_, 3 years ago)
  • trunk/parsers.php

     
    200200                        'categories' => $categories, 
    201201                        'tags' => $tags, 
    202202                        'terms' => $terms, 
    203                         'base_url' => $base_url 
     203                        'base_url' => $base_url, 
     204                        'version' => $wxr_version 
    204205                ); 
    205206        } 
    206207} 
     
    224225        ); 
    225226 
    226227        function parse( $file ) { 
    227                 $this->is_wxr_file = $this->in_post = $this->cdata = $this->data = $this->sub_data = $this->in_tag = $this->in_sub_tag = false; 
     228                $this->wxr_version = $this->in_post = $this->cdata = $this->data = $this->sub_data = $this->in_tag = $this->in_sub_tag = false; 
    228229                $this->authors = $this->posts = $this->term = $this->category = $this->tag = array(); 
    229230 
    230231                $xml = xml_parser_create( 'UTF-8' ); 
     
    243244                } 
    244245                xml_parser_free( $xml ); 
    245246 
    246                 if ( ! $this->is_wxr_file ) 
     247                if ( ! preg_match( '/^\d+\.\d+$/', $this->wxr_version ) ) 
    247248                        return new WP_Error( 'WXR_parse_error', __( 'This does not appear to be a WXR file, missing/invalid WXR version number', 'wordpress-importer' ) ); 
    248249 
    249250                return array( 
     
    252253                        'categories' => $this->category, 
    253254                        'tags' => $this->tag, 
    254255                        'terms' => $this->term, 
    255                         'base_url' => $this->base_url 
     256                        'base_url' => $this->base_url, 
     257                        'version' => $this->wxr_version 
    256258                ); 
    257259        } 
    258260 
     
    333335                                $this->base_url = $this->cdata; 
    334336                                break; 
    335337                        case 'wp:wxr_version': 
    336                                 $this->is_wxr_file = preg_match( '/^\d+\.\d+$/', $this->cdata ); 
     338                                $this->wxr_version = $this->cdata; 
    337339                                break; 
    338340 
    339341                        default: 
     
    370372        } 
    371373 
    372374        function parse( $file ) { 
    373                 $is_wxr = $in_post = false; 
     375                $wxr_version = $in_post = false; 
    374376 
    375377                $fp = $this->fopen( $file, 'r' ); 
    376378                if ( $fp ) { 
    377379                        while ( ! $this->feof( $fp ) ) { 
    378380                                $importline = rtrim( $this->fgets( $fp ) ); 
    379381 
    380                                 if ( ! $is_wxr && preg_match( '|<wp:wxr_version>\d+\.\d+</wp:wxr_version>|', $importline ) ) 
    381                                         $is_wxr = true; 
     382                                if ( ! $wxr_version && preg_match( '|<wp:wxr_version>(\d+\.\d+)</wp:wxr_version>|', $importline, $version ) ) 
     383                                        $wxr_version = $version[1]; 
    382384 
    383385                                if ( false !== strpos( $importline, '<wp:base_site_url>' ) ) { 
    384386                                        preg_match( '|<wp:base_site_url>(.*?)</wp:base_site_url>|is', $importline, $url ); 
     
    433435                        'categories' => $this->categories, 
    434436                        'tags' => $this->tags, 
    435437                        'terms' => $this->terms, 
    436                         'base_url' => $this->base_url 
     438                        'base_url' => $this->base_url, 
     439                        'version' => $wxr_version 
    437440                ); 
    438441        } 
    439442 
  • trunk/wordpress-importer.php

     
    3535 */ 
    3636if ( class_exists( 'WP_Importer' ) ) { 
    3737class WP_Import extends WP_Importer { 
     38        var $wxr_version = 1.1; // max. supported WXR version 
     39 
    3840        var $id; // WXR attachment ID 
    3941 
    4042        // information to import from WXR file 
     
    197199                        return false; 
    198200                } 
    199201 
     202                if ( $import_data['version'] > $this->wxr_version ) { 
     203                        echo '<div class="error"><p><strong>'; 
     204                        printf( __( 'This WXR file (version %s) may not be supported by this version of the importer, please try upgrading.', 'wordpress-importer' ), esc_html($import_data['version']) ); 
     205                        echo '</strong></p></div>'; 
     206                } 
     207 
    200208                $this->get_authors_from_import( $import_data ); 
    201209 
    202210                return true;