WordPress.org

Plugin Directory

Changeset 304726


Ignore:
Timestamp:
10/26/10 21:19:11 (3 years ago)
Author:
duck_
Message:

Introduce IMPORT_DEBUG (default true whilst in development); better errors; fix undefined vars in regex parser

Location:
wordpress-importer/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • wordpress-importer/trunk/parsers.php

    r304249 r304726  
    3434        // halt if loading produces an error 
    3535        if ( ! $xml ) 
    36             return new WP_Error( 'WXR_parse_error', __( 'There was an error when reading this WXR file', 'wordpress-importer' ) ); 
     36            return new WP_Error( 'SimpleXML_parse_error', __( 'There was an error when reading this WXR file', 'wordpress-importer' ), libxml_get_errors() ); 
    3737 
    3838        $wxr_version = $xml->xpath('/rss/channel/wp:wxr_version'); 
     
    208208 
    209209        if ( ! xml_parse( $xml, file_get_contents( $file ), true ) ) { 
     210            $current_line = xml_get_current_line_number( $xml ); 
     211            $current_column = xml_get_current_column_number( $xml );         
    210212            $error_code = xml_get_error_code( $xml ); 
    211213            $error_string = xml_error_string( $error_code ); 
    212             return new WP_Error( 'WXR_parse_error', 'There was an error when reading this WXR file', array( $error_code, $error_string ) ); 
     214            return new WP_Error( 'XML_parse_error', 'There was an error when reading this WXR file', array( $current_line, $current_column, $error_string ) ); 
    213215        } 
    214216        xml_parser_free( $xml ); 
     
    325327 */ 
    326328class WXR_Parser_Regex { 
     329    var $authors = array(); 
     330    var $posts = array(); 
     331    var $categories = array(); 
     332    var $tags = array(); 
     333    var $terms = array(); 
     334    var $base_url = ''; 
     335 
    327336    function WXR_Parser_Regex() { 
    328337        $this->__construct(); 
  • wordpress-importer/trunk/wordpress-importer.php

    r304267 r304726  
    1212if ( ! defined( 'WP_LOAD_IMPORTERS' ) ) 
    1313    return; 
     14 
     15/** Display verbose errors */ 
     16define( 'IMPORT_DEBUG', true ); 
    1417 
    1518// Load Importer API 
     
    104107 
    105108    function import_start( $file ) { 
    106         $import_arr = $this->parse( $file ); 
    107  
    108         if ( is_wp_error( $import_arr ) ) { 
     109        $import_data = $this->parse( $file ); 
     110 
     111        if ( is_wp_error( $import_data ) ) { 
    109112            echo '<p><strong>' . __( 'Sorry, there has been an error.', 'wordpress-importer' ) . '</strong></p>'; 
    110             echo '<p>' . esc_html( $import_arr->get_error_message() ) . '</p>'; 
     113            echo '<p>' . esc_html( $import_data->get_error_message() ) . '</p>'; 
     114            if ( defined('IMPORT_DEBUG') && IMPORT_DEBUG ) { 
     115                echo '<pre>'; 
     116                if ( 'SimpleXML_parse_error' == $import_data->get_error_code() ) { 
     117                    foreach  ( $import_data->get_error_data() as $error ) 
     118                        echo $error->line . ':' . $error->column . ' ' . esc_html($error->message) . "\n"; 
     119                } else if ( 'XML_parse_error' == $import_data->get_error_code() ) { 
     120                    $error = $import_data->get_error_data(); 
     121                    echo $error[0] . ':' . $error[1] . ' ' . esc_html( $error[2] ); 
     122                } 
     123                echo '</pre>'; 
     124            } 
    111125            $this->footer(); 
    112126            die(); 
    113127        } 
    114128 
    115         $this->get_authors_from_import( $import_arr ); 
    116         $this->posts = $import_arr['posts']; 
    117         $this->terms = $import_arr['terms']; 
    118         $this->categories = $import_arr['categories']; 
    119         $this->tags = $import_arr['tags']; 
    120         $this->base_url = esc_url( $import_arr['base_url'] ); 
     129        $this->get_authors_from_import( $import_data ); 
     130        $this->posts = $import_data['posts']; 
     131        $this->terms = $import_data['terms']; 
     132        $this->categories = $import_data['categories']; 
     133        $this->tags = $import_data['tags']; 
     134        $this->base_url = esc_url( $import_data['base_url'] ); 
    121135 
    122136        wp_defer_term_counting( true ); 
     
    157171            echo '<p><strong>' . __( 'Sorry, there has been an error.', 'wordpress-importer' ) . '</strong></p>'; 
    158172            echo '<p>' . esc_html( $import_data->get_error_message() ) . '</p>'; 
     173            if ( defined('IMPORT_DEBUG') && IMPORT_DEBUG ) { 
     174                echo '<pre>'; 
     175                if ( 'SimpleXML_parse_error' == $import_data->get_error_code() ) { 
     176                    foreach  ( $import_data->get_error_data() as $error ) 
     177                        echo $error->line . ':' . $error->column . ' ' . esc_html($error->message) . "\n"; 
     178                } else if ( 'XML_parse_error' == $import_data->get_error_code() ) { 
     179                    $error = $import_data->get_error_data(); 
     180                    echo $error[0] . ':' . $error[1] . ' ' . esc_html( $error[2] ); 
     181                } 
     182                echo '</pre>'; 
     183            } 
    159184            return false; 
    160185        } 
     
    173198                $login = sanitize_user( $post['post_author'], true ); 
    174199                if ( empty( $login ) ) { 
    175                     _e( sprintf( 'Error importing author %s their posts will be attributed to the current user', esc_html( $post['post_author'] ) ) ); 
     200                    _e( sprintf( 'Failed to import author %s. Their posts will be attributed to the current user.', esc_html( $post['post_author'] ) ) ); 
    176201                    echo '<br />'; 
    177202                    continue; 
     
    223248    function author_select( $n, $author ) { 
    224249        if ( ! $this->authors_from_posts && $this->allow_create_users() ) 
    225             printf( __( 'Import author %1$s or map to existing user', 'wordpress-importer' ), '<strong>' . esc_html( $author['author_display_name'] ) . '</strong>' ); 
     250            printf( __( 'Import author %s or map to existing user', 'wordpress-importer' ), '<strong>' . esc_html( $author['author_display_name'] ) . '</strong>' ); 
    226251        else 
    227             printf( __( 'Map author %1$s to existing user', 'wordpress-importer' ), '<strong>' . esc_html( $author['author_display_name'] ) . '</strong>' ); 
     252            printf( __( 'Map author %s to existing user', 'wordpress-importer' ), '<strong>' . esc_html( $author['author_display_name'] ) . '</strong>' ); 
    228253?> 
    229254        <input type="hidden" name="imported_authors[<?php echo $n; ?>]" value="<?php esc_attr_e( $author['author_login'] ); ?>" /> 
     
    258283                } 
    259284 
    260                 if ( ! is_wp_error( $user_id ) ) 
     285                if ( ! is_wp_error( $user_id ) ) { 
    261286                    $this->processed_authors[$login] = $user_id; 
    262                 else 
    263                     _e( sprintf( 'Error importing author %s their posts will be attributed to the current user', esc_html( $post['post_author'] ) ) ); 
     287                } else { 
     288                    _e( sprintf( 'Failed to import author %s. Their posts will be attributed to the current user.', esc_html( $this->authors[$login]['author_display_name'] ) ) ); 
     289                    if ( defined('IMPORT_DEBUG') && IMPORT_DEBUG ) 
     290                        echo ' ' . $user_id->get_error_message(); 
     291                    echo '<br />'; 
     292                } 
    264293            } 
    265294 
     
    296325                $this->processed_terms[intval($cat['term_id'])] = $id; 
    297326            } else { 
    298                 echo __( 'Error importing category:', 'wordpress-importer' ) . ' ' . esc_html( $id->get_error_message() ) . '<br />'; 
     327                echo sprintf( __( 'Failed to import category %s', 'wordpress-importer' ), esc_html($cat['category_nicename']) ); 
     328                if ( defined('IMPORT_DEBUG') && IMPORT_DEBUG ) 
     329                    echo ': ' . $id->get_error_message(); 
     330                echo '<br />'; 
    299331                continue; 
    300332            } 
     
    322354                $this->processed_terms[intval($tag['term_id'])] = $id['term_id']; 
    323355            } else { 
    324                 echo __( 'Error importing post tag:', 'wordpress-importer' ) . ' ' . esc_html( $id->get_error_message() ) . '<br />'; 
     356                echo sprintf( __( 'Failed to import post tag %s', 'wordpress-importer' ), esc_html($tag['tag_name']) ); 
     357                if ( defined('IMPORT_DEBUG') && IMPORT_DEBUG ) 
     358                    echo ': ' . $id->get_error_message(); 
     359                echo '<br />'; 
    325360                continue; 
    326361            } 
     
    354389                $this->processed_terms[intval($term['term_id'])] = $id['term_id']; 
    355390            } else { 
    356                 echo __( 'Error importing term:', 'wordpress-importer' ) . ' ' . esc_html( $id->get_error_message() ) . '<br />'; 
     391                echo sprintf( __( 'Failed to import %s %s', 'wordpress-importer' ), esc_html($term['term_taxonomy']), esc_html($term['term_name']) ); 
     392                if ( defined('IMPORT_DEBUG') && IMPORT_DEBUG ) 
     393                    echo ': ' . $id->get_error_message(); 
     394                echo '<br />'; 
    357395                continue; 
    358396            } 
     
    363401        foreach ( $this->posts as $post ) { 
    364402            if ( ! post_type_exists( $post['post_type'] ) ) { 
    365                 echo __( 'Error importing post object: Invalid post type', 'wordpress-importer' ) . '<br />'; 
     403                echo sprintf( __( 'Failed to import &#8220;%s&#8221;: Invalid post type %s', 'wordpress-importer' ), 
     404                    esc_html($post['post_title']), esc_html($post['post_type']) ) . '<br />'; 
    366405                continue; 
    367406            } 
     
    375414            } 
    376415 
     416            $post_type_object = get_post_type_object( $post['post_type'] ); 
     417 
    377418            $post_exists = post_exists( $post['post_title'], '', $post['post_date'] ); 
    378419            if ( $post_exists ) { 
     420                printf( __('%s &#8220;%s&#8221; already exists.', 'wordpress-importer'), $post_type_object->labels->singular_name, esc_html($post['post_title']) ); 
     421                echo '<br />'; 
    379422                $comment_post_ID = $post_id = $post_exists; 
    380423            } else { 
     
    416459 
    417460                if ( is_wp_error( $post_id ) ) { 
    418                     echo __( 'Error importing post object:', 'wordpress-importer' ) . ' ' . esc_html( $post_id->get_error_message() ) . '<br />'; 
     461                    echo sprintf( __( 'Failed to import %s &#8220;%s&#8221;', 'wordpress-importer' ), 
     462                        $post_type_object->labels->singular_name, esc_html($post['post_title']) ); 
     463                    if ( defined('IMPORT_DEBUG') && IMPORT_DEBUG ) 
     464                        echo ': ' . $post_id->get_error_message(); 
     465                    echo '<br />'; 
    419466                    continue; 
    420467                } 
     
    440487                            $term_id = $t['term_id']; 
    441488                        } else { 
    442                             echo __( 'Error importing term:', 'wordpress-importer' ) . ' ' . esc_html( $t->get_error_message() ) . '<br />'; 
     489                            echo sprintf( __( 'Failed to import %s %s', 'wordpress-importer' ), esc_html($term['term_taxonomy']), esc_html($term['term_taxonomy']) ); 
     490                            if ( defined('IMPORT_DEBUG') && IMPORT_DEBUG ) 
     491                                echo ': ' . $t->get_error_message(); 
     492                            echo '<br />'; 
    443493                            continue; 
    444494                        } 
     
    567617 
    568618    function process_attachment( $post, $url ) { 
    569         if ( ! ( $this->fetch_attachments && $url ) ) 
     619        if ( ! $this->fetch_attachments ) 
    570620            return new WP_Error( 'attachment_processing_error', 
    571                 __( 'Fetching attachments is not allowed or an empty URL was provided', 'wordpress-importer' ) ); 
     621                __( 'Fetching attachments is not enabled', 'wordpress-importer' ) ); 
    572622 
    573623        // if the URL is absolute, but does not contain address, then upload it assuming base_site_url 
     
    624674        if ( $headers['response'] != '200' ) { 
    625675            @unlink( $upload['file'] ); 
    626             return new WP_Error( 'import_file_error', sprintf( __('Remote server returned error response %1$d %2$s', 'wordpress-importer'), $headers['response'], get_status_header_desc($headers['response']) ) ); 
     676            return new WP_Error( 'import_file_error', sprintf( __('Remote server returned error response %1$d %2$s', 'wordpress-importer'), esc_html($headers['response']), get_status_header_desc($headers['response']) ) ); 
    627677        } 
    628678 
     
    642692        if ( ! empty( $max_size ) && $filesize > $max_size ) { 
    643693            @unlink( $upload['file'] ); 
    644             return new WP_Error( 'import_file_error', sprintf(__('Remote file is too large, limit is %s', size_format($max_size), 'wordpress-importer')) ); 
     694            return new WP_Error( 'import_file_error', sprintf(__('Remote file is too large, limit is %s', 'wordpress-importer'), size_format($max_size) ) ); 
    645695        } 
    646696 
Note: See TracChangeset for help on using the changeset viewer.