Make WordPress Core


Ignore:
Timestamp:
05/07/2007 04:10:20 PM (19 years ago)
Author:
ryan
Message:

Add nonces to importers

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.0/wp-admin/import/textpattern.php

    r4239 r5406  
    55if(!function_exists('get_catbynicename'))
    66{
    7     function get_catbynicename($category_nicename) 
     7    function get_catbynicename($category_nicename)
    88    {
    99    global $wpdb;
    10    
     10
    1111    $cat_id -= 0;   // force numeric
    1212    $name = $wpdb->get_var('SELECT cat_ID FROM '.$wpdb->categories.' WHERE category_nicename="'.$category_nicename.'"');
    13    
     13
    1414    return $name;
    1515    }
     
    5050        echo '</div>';
    5151    }
    52    
    53     function greet()
    54     {
    55         echo '<p>'.__('Howdy! This importer allows you to extract posts from any Textpattern 4.0.2+ into your blog. This has not been tested on previous versions of Textpattern.  Mileage may vary.').'</p>';
     52
     53    function greet() {
     54        echo '<div class="narrow">';
     55        echo '<p>'.__('Howdy! This imports categories, users, posts, comments, and links from any Textpattern 4.0.2+ into this blog.').'</p>';
     56        echo '<p>'.__('This has not been tested on previous versions of Textpattern.  Mileage may vary.').'</p>';
    5657        echo '<p>'.__('Your Textpattern Configuration settings are as follows:').'</p>';
    5758        echo '<form action="admin.php?import=textpattern&amp;step=1" method="post">';
     59        wp_nonce_field('import-textpattern');
    5860        $this->db_form();
    59         echo '<input type="submit" name="submit" value="'.__('Import Categories').'" />';
     61        echo '<p class="submit"><input type="submit" name="submit" value="'.attribute_escape(__('Import Categories &raquo;')).'" /></p>';
    6062        echo '</form>';
     63        echo '</div>';
    6164    }
    6265
     
    6871        set_magic_quotes_runtime(0);
    6972        $prefix = get_option('tpre');
    70        
     73
    7174        // Get Categories
    72         return $txpdb->get_results('SELECT 
    73                                         id,
    74                                         name,
    75                                         title
    76                                      FROM '.$prefix.'txp_category
    77                                      WHERE type = "article"',
    78                                      ARRAY_A);
    79     }
    80    
     75        return $txpdb->get_results('SELECT
     76            id,
     77            name,
     78            title
     79            FROM '.$prefix.'txp_category
     80            WHERE type = "article"',
     81            ARRAY_A);
     82    }
     83
    8184    function get_txp_users()
    8285    {
     
    8689        set_magic_quotes_runtime(0);
    8790        $prefix = get_option('tpre');
    88        
     91
    8992        // Get Users
    90        
     93
    9194        return $txpdb->get_results('SELECT
    92                                         user_id,
    93                                         name,
    94                                         RealName,
    95                                         email,
    96                                         privs
    97                                     FROM '.$prefix.'txp_users', ARRAY_A);
    98     }
    99    
     95            user_id,
     96            name,
     97            RealName,
     98            email,
     99            privs
     100            FROM '.$prefix.'txp_users', ARRAY_A);
     101    }
     102
    100103    function get_txp_posts()
    101104    {
     
    104107        set_magic_quotes_runtime(0);
    105108        $prefix = get_option('tpre');
    106        
     109
    107110        // Get Posts
    108         return $txpdb->get_results('SELECT 
    109                                         ID,
    110                                         Posted,
    111                                         AuthorID,
    112                                         LastMod,
    113                                         Title,
    114                                         Body,
    115                                         Excerpt,
    116                                         Category1,
    117                                         Category2,
    118                                         Status,
    119                                         Keywords,
    120                                         url_title,
    121                                         comments_count
    122                                     FROM '.$prefix.'textpattern
    123                                     ', ARRAY_A);
    124     }
    125    
     111        return $txpdb->get_results('SELECT
     112            ID,
     113            Posted,
     114            AuthorID,
     115            LastMod,
     116            Title,
     117            Body,
     118            Excerpt,
     119            Category1,
     120            Category2,
     121            Status,
     122            Keywords,
     123            url_title,
     124            comments_count
     125            FROM '.$prefix.'textpattern
     126            ', ARRAY_A);
     127    }
     128
    126129    function get_txp_comments()
    127130    {
     
    131134        set_magic_quotes_runtime(0);
    132135        $prefix = get_option('tpre');
    133        
     136
    134137        // Get Comments
    135138        return $txpdb->get_results('SELECT * FROM '.$prefix.'txp_discuss', ARRAY_A);
    136139    }
    137    
     140
    138141        function get_txp_links()
    139142    {
     
    142145        set_magic_quotes_runtime(0);
    143146        $prefix = get_option('tpre');
    144        
    145         return $txpdb->get_results('SELECT 
    146                                         id,
    147                                         date,
    148                                         category,
    149                                         url,
    150                                         linkname,
    151                                         description
    152                                       FROM '.$prefix.'txp_link',
    153                                       ARRAY_A);                       
    154     }
    155    
    156     function cat2wp($categories='') 
     147
     148        return $txpdb->get_results('SELECT
     149            id,
     150            date,
     151            category,
     152            url,
     153            linkname,
     154            description
     155            FROM '.$prefix.'txp_link',
     156            ARRAY_A);
     157    }
     158
     159    function cat2wp($categories='')
    157160    {
    158161        // General Housekeeping
     
    164167        {
    165168            echo '<p>'.__('Importing Categories...').'<br /><br /></p>';
    166             foreach ($categories as $category) 
     169            foreach ($categories as $category)
    167170            {
    168171                $count++;
    169172                extract($category);
    170                
    171                
     173
     174
    172175                // Make Nice Variables
    173176                $name = $wpdb->escape($name);
    174177                $title = $wpdb->escape($title);
    175                
     178
    176179                if($cinfo = category_exists($name))
    177180                {
     
    184187                $txpcat2wpcat[$id] = $ret_id;
    185188            }
    186            
     189
    187190            // Store category translation for future use
    188191            add_option('txpcat2wpcat',$txpcat2wpcat);
     
    193196        return false;
    194197    }
    195    
     198
    196199    function users2wp($users='')
    197200    {
     
    200203        $count = 0;
    201204        $txpid2wpid = array();
    202        
     205
    203206        // Midnight Mojo
    204207        if(is_array($users))
     
    209212                $count++;
    210213                extract($user);
    211                
     214
    212215                // Make Nice Variables
    213216                $name = $wpdb->escape($name);
    214217                $RealName = $wpdb->escape($RealName);
    215                
     218
    216219                if($uinfo = get_userdatabylogin($name))
    217220                {
    218                    
     221
    219222                    $ret_id = wp_insert_user(array(
    220223                                'ID'            => $uinfo->ID,
     
    226229                                );
    227230                }
    228                 else 
     231                else
    229232                {
    230233                    $ret_id = wp_insert_user(array(
     
    237240                }
    238241                $txpid2wpid[$user_id] = $ret_id;
    239                
     242
    240243                // Set Textpattern-to-WordPress permissions translation
    241244                $transperms = array(1 => '10', 2 => '9', 3 => '5', 4 => '4', 5 => '3', 6 => '2', 7 => '0');
    242                
     245
    243246                // Update Usermeta Data
    244247                $user = new WP_User($ret_id);
     
    250253                if('2'  == $transperms[$privs]) { $user->set_role('contributor'); }
    251254                if('0'  == $transperms[$privs]) { $user->set_role('subscriber'); }
    252                
     255
    253256                update_usermeta( $ret_id, 'wp_user_level', $transperms[$privs] );
    254257                update_usermeta( $ret_id, 'rich_editing', 'false');
    255258            }// End foreach($users as $user)
    256            
     259
    257260            // Store id translation array for future use
    258261            add_option('txpid2wpid',$txpid2wpid);
    259            
    260            
     262
     263
    261264            echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> users imported.'), $count).'<br /><br /></p>';
    262265            return true;
    263266        }// End if(is_array($users)
    264        
     267
    265268        echo __('No Users to Import!');
    266269        return false;
    267        
     270
    268271    }// End function user2wp()
    269    
     272
    270273    function posts2wp($posts='')
    271274    {
     
    284287                $count++;
    285288                extract($post);
    286                
     289
    287290                // Set Textpattern-to-WordPress status translation
    288291                $stattrans = array(1 => 'draft', 2 => 'private', 3 => 'draft', 4 => 'publish', 5 => 'publish');
    289                
     292
    290293                //Can we do this more efficiently?
    291294                $uinfo = ( get_userdatabylogin( $AuthorID ) ) ? get_userdatabylogin( $AuthorID ) : 1;
     
    296299                $Excerpt = $wpdb->escape($Excerpt);
    297300                $post_status = $stattrans[$Status];
    298                
     301
    299302                // Import Post data into WordPress
    300                
     303
    301304                if($pinfo = post_exists($Title,$Body))
    302305                {
    303306                    $ret_id = wp_insert_post(array(
    304                             'ID'                => $pinfo,
    305                             'post_date'         => $Posted,
    306                             'post_date_gmt'     => $post_date_gmt,
    307                             'post_author'       => $authorid,
    308                             'post_modified'     => $LastMod,
    309                             'post_modified_gmt' => $post_modified_gmt,
    310                             'post_title'        => $Title,
    311                             'post_content'      => $Body,
    312                             'post_excerpt'      => $Excerpt,
    313                             'post_status'       => $post_status,
    314                             'post_name'         => $url_title,
    315                             'comment_count'     => $comments_count)
    316                             );
    317                 }
    318                 else 
     307                        'ID'                => $pinfo,
     308                        'post_date'         => $Posted,
     309                        'post_date_gmt'     => $post_date_gmt,
     310                        'post_author'       => $authorid,
     311                        'post_modified'     => $LastMod,
     312                        'post_modified_gmt' => $post_modified_gmt,
     313                        'post_title'        => $Title,
     314                        'post_content'      => $Body,
     315                        'post_excerpt'      => $Excerpt,
     316                        'post_status'       => $post_status,
     317                        'post_name'         => $url_title,
     318                        'comment_count'     => $comments_count)
     319                        );
     320                }
     321                else
    319322                {
    320323                    $ret_id = wp_insert_post(array(
    321                             'post_date'         => $Posted,
    322                             'post_date_gmt'     => $post_date_gmt,
    323                             'post_author'       => $authorid,
    324                             'post_modified'     => $LastMod,
    325                             'post_modified_gmt' => $post_modified_gmt,
    326                             'post_title'        => $Title,
    327                             'post_content'      => $Body,
    328                             'post_excerpt'      => $Excerpt,
    329                             'post_status'       => $post_status,
    330                             'post_name'         => $url_title,
    331                             'comment_count'     => $comments_count)
    332                             );
     324                        'post_date'         => $Posted,
     325                        'post_date_gmt'     => $post_date_gmt,
     326                        'post_author'       => $authorid,
     327                        'post_modified'     => $LastMod,
     328                        'post_modified_gmt' => $post_modified_gmt,
     329                        'post_title'        => $Title,
     330                        'post_content'      => $Body,
     331                        'post_excerpt'      => $Excerpt,
     332                        'post_status'       => $post_status,
     333                        'post_name'         => $url_title,
     334                        'comment_count'     => $comments_count)
     335                        );
    333336                }
    334337                $txpposts2wpposts[$ID] = $ret_id;
    335                
     338
    336339                // Make Post-to-Category associations
    337340                $cats = array();
     
    339342                if($cat2 = get_catbynicename($Category2)) { $cats[2] = $cat2; }
    340343
    341                 if(!empty($cats)) { wp_set_post_cats('', $ret_id, $cats); }
     344                if(!empty($cats)) { wp_set_post_categories($ret_id, $cats); }
    342345            }
    343346        }
    344347        // Store ID translation for later use
    345348        add_option('txpposts2wpposts',$txpposts2wpposts);
    346        
     349
    347350        echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> posts imported.'), $count).'<br /><br /></p>';
    348         return true;   
    349     }
    350    
     351        return true;
     352    }
     353
    351354    function comments2wp($comments='')
    352355    {
     
    356359        $txpcm2wpcm = array();
    357360        $postarr = get_option('txpposts2wpposts');
    358        
     361
    359362        // Magic Mojo
    360363        if(is_array($comments))
     
    365368                $count++;
    366369                extract($comment);
    367                
     370
    368371                // WordPressify Data
    369372                $comment_ID = ltrim($discussid, '0');
     
    374377                $web = $wpdb->escape($web);
    375378                $message = $wpdb->escape($message);
    376                
     379
    377380                if($cinfo = comment_exists($name, $posted))
    378381                {
    379382                    // Update comments
    380383                    $ret_id = wp_update_comment(array(
    381                             'comment_ID'            => $cinfo,
    382                             'comment_post_ID'       => $comment_post_ID,
    383                             'comment_author'        => $name,
    384                             'comment_author_email'  => $email,
    385                             'comment_author_url'    => $web,
    386                             'comment_date'          => $posted,
    387                             'comment_content'       => $message,
    388                             'comment_approved'      => $comment_approved)
    389                             );
    390                 }
    391                 else 
     384                        'comment_ID'            => $cinfo,
     385                        'comment_post_ID'       => $comment_post_ID,
     386                        'comment_author'        => $name,
     387                        'comment_author_email'  => $email,
     388                        'comment_author_url'    => $web,
     389                        'comment_date'          => $posted,
     390                        'comment_content'       => $message,
     391                        'comment_approved'      => $comment_approved)
     392                        );
     393                }
     394                else
    392395                {
    393396                    // Insert comments
    394397                    $ret_id = wp_insert_comment(array(
    395                             'comment_post_ID'       => $comment_post_ID,
    396                             'comment_author'        => $name,
    397                             'comment_author_email'  => $email,
    398                             'comment_author_url'    => $web,
    399                             'comment_author_IP'     => $ip,
    400                             'comment_date'          => $posted,
    401                             'comment_content'       => $message,
    402                             'comment_approved'      => $comment_approved)
    403                             );
     398                        'comment_post_ID'       => $comment_post_ID,
     399                        'comment_author'        => $name,
     400                        'comment_author_email'  => $email,
     401                        'comment_author_url'    => $web,
     402                        'comment_author_IP'     => $ip,
     403                        'comment_date'          => $posted,
     404                        'comment_content'       => $message,
     405                        'comment_approved'      => $comment_approved)
     406                        );
    404407                }
    405408                $txpcm2wpcm[$comment_ID] = $ret_id;
    406409            }
    407410            // Store Comment ID translation for future use
    408             add_option('txpcm2wpcm', $txpcm2wpcm);         
    409            
     411            add_option('txpcm2wpcm', $txpcm2wpcm);
     412
    410413            // Associate newly formed categories with posts
    411414            get_comment_count($ret_id);
    412            
    413            
     415
     416
    414417            echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> comments imported.'), $count).'<br /><br /></p>';
    415418            return true;
     
    418421        return false;
    419422    }
    420    
     423
    421424    function links2wp($links='')
    422425    {
     
    424427        global $wpdb;
    425428        $count = 0;
    426        
     429
    427430        // Deal with the links
    428431        if(is_array($links))
     
    433436                $count++;
    434437                extract($link);
    435                
     438
    436439                // Make nice vars
    437440                $category = $wpdb->escape($category);
    438441                $linkname = $wpdb->escape($linkname);
    439442                $description = $wpdb->escape($description);
    440                
     443
    441444                if($linfo = link_exists($linkname))
    442445                {
     
    450453                                );
    451454                }
    452                 else 
     455                else
    453456                {
    454457                    $ret_id = wp_insert_link(array(
     
    471474        return false;
    472475    }
    473        
    474     function import_categories() 
    475     {   
    476         // Category Import 
     476
     477    function import_categories()
     478    {
     479        // Category Import
    477480        $cats = $this->get_txp_cats();
    478481        $this->cat2wp($cats);
    479482        add_option('txp_cats', $cats);
    480        
    481        
    482            
     483
     484
     485
    483486        echo '<form action="admin.php?import=textpattern&amp;step=2" method="post">';
    484         printf('<input type="submit" name="submit" value="%s" />', __('Import Users'));
     487        wp_nonce_field('import-textpattern');
     488        printf('<input type="submit" name="submit" value="%s" />', attribute_escape(__('Import Users')));
    485489        echo '</form>';
    486490
    487491    }
    488    
     492
    489493    function import_users()
    490494    {
    491495        // User Import
    492         $users = $this->get_txp_users(); 
     496        $users = $this->get_txp_users();
    493497        $this->users2wp($users);
    494        
     498
    495499        echo '<form action="admin.php?import=textpattern&amp;step=3" method="post">';
    496         printf('<input type="submit" name="submit" value="%s" />', __('Import Posts'));
     500        wp_nonce_field('import-textpattern');
     501        printf('<input type="submit" name="submit" value="%s" />', attribute_escape(__('Import Posts')));
    497502        echo '</form>';
    498503    }
    499    
     504
    500505    function import_posts()
    501506    {
     
    503508        $posts = $this->get_txp_posts();
    504509        $this->posts2wp($posts);
    505        
     510
    506511        echo '<form action="admin.php?import=textpattern&amp;step=4" method="post">';
    507         printf('<input type="submit" name="submit" value="%s" />', __('Import Comments'));
     512        wp_nonce_field('import-textpattern');
     513        printf('<input type="submit" name="submit" value="%s" />', attribute_escape(__('Import Comments')));
    508514        echo '</form>';
    509515    }
    510    
     516
    511517    function import_comments()
    512518    {
     
    514520        $comments = $this->get_txp_comments();
    515521        $this->comments2wp($comments);
    516        
     522
    517523        echo '<form action="admin.php?import=textpattern&amp;step=5" method="post">';
    518         printf('<input type="submit" name="submit" value="%s" />', __('Import Links'));
     524        wp_nonce_field('import-textpattern');
     525        printf('<input type="submit" name="submit" value="%s" />', attribute_escape(__('Import Links')));
    519526        echo '</form>';
    520527    }
    521    
     528
    522529    function import_links()
    523530    {
     
    526533        $this->links2wp($links);
    527534        add_option('txp_links', $links);
    528        
     535
    529536        echo '<form action="admin.php?import=textpattern&amp;step=6" method="post">';
    530         printf('<input type="submit" name="submit" value="%s" />', __('Finish'));
     537        wp_nonce_field('import-textpattern');
     538        printf('<input type="submit" name="submit" value="%s" />', attribute_escape(__('Finish')));
    531539        echo '</form>';
    532540    }
    533    
     541
    534542    function cleanup_txpimport()
    535543    {
     
    547555        $this->tips();
    548556    }
    549    
     557
    550558    function tips()
    551559    {
     
    566574        echo '<p>'.sprintf(__('That\'s it! What are you waiting for? Go <a href="%1$s">login</a>!'), '/wp-login.php').'</p>';
    567575    }
    568    
     576
    569577    function db_form()
    570578    {
    571         echo '<ul>';
    572         printf('<li><label for="dbuser">%s</label> <input type="text" name="dbuser" id="dbuser" /></li>', __('Textpattern Database User:'));
    573         printf('<li><label for="dbpass">%s</label> <input type="password" name="dbpass" id="dbpass" /></li>', __('Textpattern Database Password:'));
    574         printf('<li><label for="dbname">%s</label> <input type="text" id="dbname" name="dbname" /></li>', __('Textpattern Database Name:'));
    575         printf('<li><label for="dbhost">%s</label> <input type="text" id="dbhost" name="dbhost" value="localhost" /></li>', __('Textpattern Database Host:'));
    576         printf('<li><label for="dbprefix">%s</label> <input type="text" name="dbprefix" id="dbprefix"  /></li>', __('Textpattern Table prefix (if any):'));
    577         echo '</ul>';
    578     }
    579    
    580     function dispatch() 
     579        echo '<table class="editform">';
     580        printf('<tr><th scope="row"><label for="dbuser">%s</label></th><td><input type="text" name="dbuser" id="dbuser" /></td></tr>', __('Textpattern Database User:'));
     581        printf('<tr><th scope="row"><label for="dbpass">%s</label></th><td><input type="password" name="dbpass" id="dbpass" /></td></tr>', __('Textpattern Database Password:'));
     582        printf('<tr><th scope="row"><label for="dbname">%s</label></th><td><input type="text" id="dbname" name="dbname" /></td></tr>', __('Textpattern Database Name:'));
     583        printf('<tr><th scope="row"><label for="dbhost">%s</label></th><td><input type="text" id="dbhost" name="dbhost" value="localhost" /></td></tr>', __('Textpattern Database Host:'));
     584        printf('<tr><th scope="row"><label for="dbprefix">%s</label></th><td><input type="text" name="dbprefix" id="dbprefix"  /></td></tr>', __('Textpattern Table prefix (if any):'));
     585        echo '</table>';
     586    }
     587
     588    function dispatch()
    581589    {
    582590
     
    586594            $step = (int) $_GET['step'];
    587595        $this->header();
    588        
    589         if ( $step > 0 ) 
     596
     597        if ( $step > 0 )
    590598        {
     599            check_admin_referer('import-textpattern');
     600
    591601            if($_POST['dbuser'])
    592602            {
    593603                if(get_option('txpuser'))
    594                     delete_option('txpuser');   
    595                 add_option('txpuser',$_POST['dbuser']);
     604                    delete_option('txpuser');
     605                add_option('txpuser', sanitize_user($_POST['dbuser'], true));
    596606            }
    597607            if($_POST['dbpass'])
    598608            {
    599609                if(get_option('txppass'))
    600                     delete_option('txppass');   
    601                 add_option('txppass',$_POST['dbpass']);
    602             }
    603            
     610                    delete_option('txppass');
     611                add_option('txppass',  sanitize_user($_POST['dbpass'], true));
     612            }
     613
    604614            if($_POST['dbname'])
    605615            {
    606616                if(get_option('txpname'))
    607                     delete_option('txpname');   
    608                 add_option('txpname',$_POST['dbname']);
     617                    delete_option('txpname');
     618                add_option('txpname',  sanitize_user($_POST['dbname'], true));
    609619            }
    610620            if($_POST['dbhost'])
     
    612622                if(get_option('txphost'))
    613623                    delete_option('txphost');
    614                 add_option('txphost',$_POST['dbhost']);
     624                add_option('txphost',  sanitize_user($_POST['dbhost'], true));
    615625            }
    616626            if($_POST['dbprefix'])
     
    618628                if(get_option('tpre'))
    619629                    delete_option('tpre');
    620                 add_option('tpre',$_POST['dbprefix']);
    621             }           
     630                add_option('tpre',  sanitize_user($_POST['dbprefix']));
     631            }
    622632
    623633
    624634        }
    625635
    626         switch ($step) 
     636        switch ($step)
    627637        {
    628638            default:
     
    649659                break;
    650660        }
    651        
     661
    652662        $this->footer();
    653663    }
    654664
    655     function Textpattern_Import() 
    656     {
    657         // Nothing. 
     665    function Textpattern_Import()
     666    {
     667        // Nothing.
    658668    }
    659669}
    660670
    661671$txp_import = new Textpattern_Import();
    662 register_importer('textpattern', __('Textpattern'), __('Import posts from a Textpattern Blog'), array ($txp_import, 'dispatch'));
     672register_importer('textpattern', __('Textpattern'), __('Import categories, users, posts, comments, and links from a Textpattern blog'), array ($txp_import, 'dispatch'));
    663673?>
Note: See TracChangeset for help on using the changeset viewer.