WordPress.org

Make WordPress Core


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/import/dotclear.php

    • Property svn:eol-style deleted
    r4424 r3424  
    11<?php
    2 /*
    3  * Dotclear import plugin
    4  * by Thomas Quinot - http://thomas.quinot.org/
    5  */
    6 
    72/**
    83    Add These Functions to make our lives easier
     
    138    {
    149    global $wpdb;
    15 
     10   
    1611    $cat_id -= 0;   // force numeric
    1712    $name = $wpdb->get_var('SELECT cat_ID FROM '.$wpdb->categories.' WHERE category_nicename="'.$category_nicename.'"');
    18 
     13   
    1914    return $name;
    2015    }
     
    133128    {
    134129        echo '<div class="wrap">';
    135         echo '<h2>'.__('Import DotClear').'</h2>';
     130        echo '<h2>'.__('Import Dotclear').'</h2>';
    136131        echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'</p>';
    137132    }
     
    141136        echo '</div>';
    142137    }
    143 
     138   
    144139    function greet()
    145140    {
    146         echo '<div class="narrow"><p>'.__('Howdy! This importer allows you to extract posts from a DotClear database into your blog.  Mileage may vary.').'</p>';
    147         echo '<p>'.__('Your DotClear Configuration settings are as follows:').'</p>';
     141        echo '<p>'.__('Howdy! This importer allows you to extract posts from a Dotclear database into your blog.  Mileage may vary.').'</p>';
     142        echo '<p>'.__('Your Dotclear Configuration settings are as follows:').'</p>';
    148143        echo '<form action="admin.php?import=dotclear&amp;step=1" method="post">';
    149144        $this->db_form();
    150         echo '<p class="submit"><input type="submit" name="submit" value="'.__('Import Categories').' &raquo;" /></p>';
    151         echo '</form></div>';
     145        echo '<input type="submit" name="submit" value="'.__('Import Categories').'" />';
     146        echo '</form>';
    152147    }
    153148
     
    158153        $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
    159154        set_magic_quotes_runtime(0);
    160         $dbprefix = get_option('dcdbprefix');
    161 
     155        $prefix = get_option('tpre');
     156       
    162157        // Get Categories
    163         return $dcdb->get_results('SELECT * FROM '.$dbprefix.'categorie', ARRAY_A);
    164     }
    165 
     158        return $dcdb->get_results('SELECT * FROM dc_categorie', ARRAY_A);
     159    }
     160   
    166161    function get_dc_users()
    167162    {
     
    170165        $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
    171166        set_magic_quotes_runtime(0);
    172         $dbprefix = get_option('dcdbprefix');
    173 
     167        $prefix = get_option('tpre');
     168       
    174169        // Get Users
    175 
    176         return $dcdb->get_results('SELECT * FROM '.$dbprefix.'user', ARRAY_A);
    177     }
    178 
     170       
     171        return $dcdb->get_results('SELECT * FROM dc_user', ARRAY_A);
     172    }
     173   
    179174    function get_dc_posts()
    180175    {
     
    182177        $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
    183178        set_magic_quotes_runtime(0);
    184         $dbprefix = get_option('dcdbprefix');
    185 
     179        $prefix = get_option('tpre');
     180       
    186181        // Get Posts
    187         return $dcdb->get_results('SELECT '.$dbprefix.'post.*, '.$dbprefix.'categorie.cat_libelle_url AS post_cat_name
    188                         FROM '.$dbprefix.'post INNER JOIN '.$dbprefix.'categorie
    189                           ON '.$dbprefix.'post.cat_id = '.$dbprefix.'categorie.cat_id', ARRAY_A);
    190     }
    191 
     182        return $dcdb->get_results('SELECT dc_post.*, dc_categorie.cat_libelle_url AS post_cat_name
     183                        FROM dc_post INNER JOIN dc_categorie
     184                          ON dc_post.cat_id = dc_categorie.cat_id', ARRAY_A);
     185    }
     186   
    192187    function get_dc_comments()
    193188    {
     
    196191        $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
    197192        set_magic_quotes_runtime(0);
    198         $dbprefix = get_option('dcdbprefix');
    199 
     193        $prefix = get_option('tpre');
     194       
    200195        // Get Comments
    201         return $dcdb->get_results('SELECT * FROM '.$dbprefix.'comment', ARRAY_A);
    202     }
    203 
     196        return $dcdb->get_results('SELECT * FROM dc_comment', ARRAY_A);
     197    }
     198   
    204199    function get_dc_links()
    205200    {
     
    207202        $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
    208203        set_magic_quotes_runtime(0);
    209         $dbprefix = get_option('dcdbprefix');
    210 
    211         return $dcdb->get_results('SELECT * FROM '.$dbprefix.'link ORDER BY position', ARRAY_A);
    212     }
    213 
     204        $prefix = get_option('tpre');
     205
     206        return $dcdb->get_results('SELECT * FROM dc_link ORDER BY position', ARRAY_A);
     207    }
     208   
    214209    function cat2wp($categories='')
    215210    {
     
    226221                $count++;
    227222                extract($category);
    228 
     223               
    229224                // Make Nice Variables
    230225                $name = $wpdb->escape($cat_libelle_url);
     
    242237                $dccat2wpcat[$id] = $ret_id;
    243238            }
    244 
     239           
    245240            // Store category translation for future use
    246241            add_option('dccat2wpcat',$dccat2wpcat);
     
    251246        return false;
    252247    }
    253 
     248   
    254249    function users2wp($users='')
    255250    {
     
    258253        $count = 0;
    259254        $dcid2wpid = array();
    260 
     255       
    261256        // Midnight Mojo
    262257        if(is_array($users))
     
    267262                $count++;
    268263                extract($user);
    269 
     264               
    270265                // Make Nice Variables
    271266                $name = $wpdb->escape(csc ($name));
    272267                $RealName = $wpdb->escape(csc ($user_pseudo));
    273 
     268               
    274269                if($uinfo = get_userdatabylogin($name))
    275270                {
    276 
     271                   
    277272                    $ret_id = wp_insert_user(array(
    278273                                'ID'        => $uinfo->ID,
     
    295290                }
    296291                $dcid2wpid[$user_id] = $ret_id;
    297 
     292               
    298293                // Set Dotclear-to-WordPress permissions translation
    299 
     294               
    300295                // Update Usermeta Data
    301296                $user = new WP_User($ret_id);
     
    308303                else if(2  <= $wp_perms) { $user->set_role('contributor'); }
    309304                else                     { $user->set_role('subscriber'); }
    310 
     305               
    311306                update_usermeta( $ret_id, 'wp_user_level', $wp_perms);
    312307                update_usermeta( $ret_id, 'rich_editing', 'false');
     
    314309                update_usermeta( $ret_id, 'last_name', csc ($user_nom));
    315310            }// End foreach($users as $user)
    316 
     311           
    317312            // Store id translation array for future use
    318313            add_option('dcid2wpid',$dcid2wpid);
    319 
    320 
     314           
     315           
    321316            echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> users imported.'), $count).'<br /><br /></p>';
    322317            return true;
    323318        }// End if(is_array($users)
    324 
     319       
    325320        echo __('No Users to Import!');
    326321        return false;
    327 
     322       
    328323    }// End function user2wp()
    329 
     324   
    330325    function posts2wp($posts='')
    331326    {
     
    344339                $count++;
    345340                extract($post);
    346 
     341               
    347342                // Set Dotclear-to-WordPress status translation
    348343                $stattrans = array(0 => 'draft', 1 => 'publish');
    349344                $comment_status_map = array (0 => 'closed', 1 => 'open');
    350 
     345               
    351346                //Can we do this more efficiently?
    352347                $uinfo = ( get_userdatabylogin( $user_id ) ) ? get_userdatabylogin( $user_id ) : 1;
     
    355350                $Title = $wpdb->escape(csc ($post_titre));
    356351                $post_content = textconv ($post_content);
    357                 $post_excerpt = "";
    358352                if ($post_chapo != "") {
    359353                    $post_excerpt = textconv ($post_chapo);
     
    363357                $post_content = $wpdb->escape ($post_content);
    364358                $post_status = $stattrans[$post_pub];
    365 
     359               
    366360                // Import Post data into WordPress
    367 
     361               
    368362                if($pinfo = post_exists($Title,$post_content))
    369363                {
     
    404398                }
    405399                $dcposts2wpposts[$post_id] = $ret_id;
    406 
     400               
    407401                // Make Post-to-Category associations
    408402                $cats = array();
    409403                if($cat1 = get_catbynicename($post_cat_name)) { $cats[1] = $cat1; }
    410404
    411                 if(!empty($cats)) { wp_set_post_categories($ret_id, $cats); }
     405                if(!empty($cats)) { wp_set_post_cats('', $ret_id, $cats); }
    412406            }
    413407        }
    414408        // Store ID translation for later use
    415409        add_option('dcposts2wpposts',$dcposts2wpposts);
    416 
     410       
    417411        echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> posts imported.'), $count).'<br /><br /></p>';
    418         return true;
    419     }
    420 
     412        return true;   
     413    }
     414   
    421415    function comments2wp($comments='')
    422416    {
     
    426420        $dccm2wpcm = array();
    427421        $postarr = get_option('dcposts2wpposts');
    428 
     422       
    429423        // Magic Mojo
    430424        if(is_array($comments))
     
    435429                $count++;
    436430                extract($comment);
    437 
     431               
    438432                // WordPressify Data
    439433                $comment_ID = ltrim($comment_id, '0');
     
    444438                $web = "http://".$wpdb->escape($comment_site);
    445439                $message = $wpdb->escape(textconv ($comment_content));
    446 
     440               
    447441                if($cinfo = comment_exists($name, $comment_dt))
    448442                {
     
    479473            }
    480474            // Store Comment ID translation for future use
    481             add_option('dccm2wpcm', $dccm2wpcm);
    482 
     475            add_option('dccm2wpcm', $dccm2wpcm);           
     476           
    483477            // Associate newly formed categories with posts
    484478            get_comment_count($ret_id);
    485 
    486 
     479           
     480           
    487481            echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> comments imported.'), $count).'<br /><br /></p>';
    488482            return true;
     
    491485        return false;
    492486    }
    493 
     487   
    494488    function links2wp($links='')
    495489    {
     
    497491        global $wpdb;
    498492        $count = 0;
    499 
     493       
    500494        // Deal with the links
    501495        if(is_array($links))
     
    506500                $count++;
    507501                extract($link);
    508 
     502               
    509503                if ($title != "") {
    510504                    if ($cinfo = link_cat_exists (csc ($title))) {
     
    518512                    $linkname = $wpdb->escape(csc ($label));
    519513                    $description = $wpdb->escape(csc ($title));
    520 
     514               
    521515                    if($linfo = link_exists($linkname)) {
    522516                        $ret_id = wp_insert_link(array(
     
    547541        return false;
    548542    }
    549 
     543       
    550544    function import_categories()
    551     {
    552         // Category Import
     545    {   
     546        // Category Import 
    553547        $cats = $this->get_dc_cats();
    554548        $this->cat2wp($cats);
    555549        add_option('dc_cats', $cats);
    556 
    557 
    558 
     550       
     551       
     552           
    559553        echo '<form action="admin.php?import=dotclear&amp;step=2" method="post">';
    560554        printf('<input type="submit" name="submit" value="%s" />', __('Import Users'));
     
    562556
    563557    }
    564 
     558   
    565559    function import_users()
    566560    {
     
    568562        $users = $this->get_dc_users();
    569563        $this->users2wp($users);
    570 
     564       
    571565        echo '<form action="admin.php?import=dotclear&amp;step=3" method="post">';
    572566        printf('<input type="submit" name="submit" value="%s" />', __('Import Posts'));
    573567        echo '</form>';
    574568    }
    575 
     569   
    576570    function import_posts()
    577571    {
     
    579573        $posts = $this->get_dc_posts();
    580574        $this->posts2wp($posts);
    581 
     575       
    582576        echo '<form action="admin.php?import=dotclear&amp;step=4" method="post">';
    583577        printf('<input type="submit" name="submit" value="%s" />', __('Import Comments'));
    584578        echo '</form>';
    585579    }
    586 
     580   
    587581    function import_comments()
    588582    {
     
    590584        $comments = $this->get_dc_comments();
    591585        $this->comments2wp($comments);
    592 
     586       
    593587        echo '<form action="admin.php?import=dotclear&amp;step=5" method="post">';
    594588        printf('<input type="submit" name="submit" value="%s" />', __('Import Links'));
    595589        echo '</form>';
    596590    }
    597 
     591   
    598592    function import_links()
    599593    {
     
    602596        $this->links2wp($links);
    603597        add_option('dc_links', $links);
    604 
     598       
    605599        echo '<form action="admin.php?import=dotclear&amp;step=6" method="post">';
    606600        printf('<input type="submit" name="submit" value="%s" />', __('Finish'));
    607601        echo '</form>';
    608602    }
    609 
     603   
    610604    function cleanup_dcimport()
    611605    {
    612         delete_option('dcdbprefix');
     606        delete_option('tpre');
    613607        delete_option('dc_cats');
    614608        delete_option('dcid2wpid');
     
    624618        $this->tips();
    625619    }
    626 
     620   
    627621    function tips()
    628622    {
    629         echo '<p>'.__('Welcome to WordPress.  We hope (and expect!) that you will find this platform incredibly rewarding!  As a new WordPress user coming from DotClear, there are some things that we would like to point out.  Hopefully, they will help your transition go as smoothly as possible.').'</p>';
     623        echo '<p>'.__('Welcome to WordPress.  We hope (and expect!) that you will find this platform incredibly rewarding!  As a new WordPress user coming from Dotclear, there are some things that we would like to point out.  Hopefully, they will help your transition go as smoothly as possible.').'</p>';
    630624        echo '<h3>'.__('Users').'</h3>';
    631         echo '<p>'.sprintf(__('You have already setup WordPress and have been assigned an administrative login and password.  Forget it.  You didn\'t have that login in DotClear, why should you have it here?  Instead we have taken care to import all of your users into our system.  Unfortunately there is one downside.  Because both WordPress and DotClear uses a strong encryption hash with passwords, it is impossible to decrypt it and we are forced to assign temporary passwords to all your users.  <strong>Every user has the same username, but their passwords are reset to password123.</strong>  So <a href="%1$s">Login</a> and change it.'), '/wp-login.php').'</p>';
     625        echo '<p>'.sprintf(__('You have already setup WordPress and have been assigned an administrative login and password.  Forget it.  You didn\'t have that login in Dotclear, why should you have it here?  Instead we have taken care to import all of your users into our system.  Unfortunately there is one downside.  Because both WordPress and Dotclear uses a strong encryption hash with passwords, it is impossible to decrypt it and we are forced to assign temporary passwords to all your users.  <strong>Every user has the same username, but their passwords are reset to password123.</strong>  So <a href="%1$s">Login</a> and change it.'), '/wp-login.php').'</p>';
    632626        echo '<h3>'.__('Preserving Authors').'</h3>';
    633627        echo '<p>'.__('Secondly, we have attempted to preserve post authors.  If you are the only author or contributor to your blog, then you are safe.  In most cases, we are successful in this preservation endeavor.  However, if we cannot ascertain the name of the writer due to discrepancies between database tables, we assign it to you, the administrative user.').'</p>';
    634628        echo '<h3>'.__('Textile').'</h3>';
    635         echo '<p>'.__('Also, since you\'re coming from DotClear, you probably have been using Textile to format your comments and posts.  If this is the case, we recommend downloading and installing <a href="http://www.huddledmasses.org/category/development/wordpress/textile/">Textile for WordPress</a>.  Trust me... You\'ll want it.').'</p>';
     629        echo '<p>'.__('Also, since you\'re coming from Dotclear, you probably have been using Textile to format your comments and posts.  If this is the case, we recommend downloading and installing <a href="http://www.huddledmasses.org/2004/04/19/wordpress-plugin-textile-20/">Textile for WordPress</a>.  Trust me... You\'ll want it.').'</p>';
    636630        echo '<h3>'.__('WordPress Resources').'</h3>';
    637631        echo '<p>'.__('Finally, there are numerous WordPress resources around the internet.  Some of them are:').'</p>';
    638632        echo '<ul>';
    639633        echo '<li>'.__('<a href="http://www.wordpress.org">The official WordPress site</a>').'</li>';
    640         echo '<li>'.__('<a href="http://wordpress.org/support/">The WordPress support forums</a>').'</li>';
     634        echo '<li>'.__('<a href="http://wordpress.org/support/">The WordPress support forums').'</li>';
    641635        echo '<li>'.__('<a href="http://codex.wordpress.org">The Codex (In other words, the WordPress Bible)</a>').'</li>';
    642636        echo '</ul>';
    643         echo '<p>'.sprintf(__('That\'s it! What are you waiting for? Go <a href="%1$s">login</a>!'), '../wp-login.php').'</p>';
    644     }
    645 
     637        echo '<p>'.sprintf(__('That\'s it! What are you waiting for? Go <a href="%1$s">login</a>!'), '/wp-login.php').'</p>';
     638    }
     639   
    646640    function db_form()
    647641    {
    648         echo '<table class="editform">';
    649         printf('<tr><th><label for="dbuser">%s</label></th><td><input type="text" name="dbuser" id="dbuser" /></td></tr>', __('Dotclear Database User:'));
    650         printf('<tr><th><label for="dbpass">%s</label></th><td><input type="password" name="dbpass" id="dbpass" /></td></tr>', __('DotClear Database Password:'));
    651         printf('<tr><th><label for="dbname">%s</label></th><td><input type="text" name="dbname" id="dbname" /></td></tr>', __('Dotclear Database Name:'));
    652         printf('<tr><th><label for="dbhost">%s</label></th><td><input type="text" name="dbhost" nameid="dbhost" value="localhost" /></td></tr>', __('DotClear Database Host:'));
    653         printf('<tr><th><label for="dbprefix">%s</label></th><td><input type="text" name="dbprefix" id="dbprefix" value="dc_"/></td></tr>', __('DotClear Table prefix:'));
    654         printf('<tr><th><label for="dccharset">%s</label></th><td><input type="text" name="dccharset" id="dccharset" value="ISO-8859-15"/></td></tr>', __('Originating character set:'));
    655         echo '</table>';
    656     }
    657 
     642        echo '<ul>';
     643        printf('<li><label for="dbuser">%s</label> <input type="text" name="dbuser" /></li>', __('Dotclear Database User:'));
     644        printf('<li><label for="dbpass">%s</label> <input type="password" name="dbpass" /></li>', __('Dotclear Database Password:'));
     645        printf('<li><label for="dbname">%s</label> <input type="text" name="dbname" /></li>', __('Dotclear Database Name:'));
     646        printf('<li><label for="dbhost">%s</label> <input type="text" name="dbhost" value="localhost" /></li>', __('Dotclear Database Host:'));
     647        /* printf('<li><label for="dbprefix">%s</label> <input type="text" name="dbprefix" /></li>', __('Dotclear Table prefix (if any):')); */
     648        printf('<li><label for="dccharset">%s</label> <input type="text" name="dccharset" value="ISO-8859-15"/></li>', __('Originating character set:'));
     649        echo '</ul>';
     650    }
     651   
    658652    function dispatch()
    659653    {
     
    664658            $step = (int) $_GET['step'];
    665659        $this->header();
    666 
     660       
    667661        if ( $step > 0 )
    668662        {
     
    670664            {
    671665                if(get_option('dcuser'))
    672                     delete_option('dcuser');
     666                    delete_option('dcuser');   
    673667                add_option('dcuser',$_POST['dbuser']);
    674668            }
     
    676670            {
    677671                if(get_option('dcpass'))
    678                     delete_option('dcpass');
     672                    delete_option('dcpass');   
    679673                add_option('dcpass',$_POST['dbpass']);
    680674            }
    681 
     675           
    682676            if($_POST['dbname'])
    683677            {
    684678                if(get_option('dcname'))
    685                     delete_option('dcname');
     679                    delete_option('dcname');   
    686680                add_option('dcname',$_POST['dbname']);
    687681            }
     
    697691                    delete_option('dccharset');
    698692                add_option('dccharset',$_POST['dccharset']);
    699             }
     693            }           
    700694            if($_POST['dbprefix'])
    701695            {
    702                 if(get_option('dcdbprefix'))
    703                     delete_option('dcdbprefix');
    704                 add_option('dcdbprefix',$_POST['dbprefix']);
    705             }
     696                if(get_option('tpre'))
     697                    delete_option('tpre');
     698                add_option('tpre',$_POST['dbprefix']);
     699            }           
    706700
    707701
     
    733727                break;
    734728        }
    735 
     729       
    736730        $this->footer();
    737731    }
     
    739733    function Dotclear_Import()
    740734    {
    741         // Nothing.
     735        // Nothing. 
    742736    }
    743737}
    744738
    745739$dc_import = new Dotclear_Import();
    746 register_importer('dotclear', __('DotClear'), __('Import posts from a DotClear Blog'), array ($dc_import, 'dispatch'));
     740register_importer('dotclear', 'Dotclear', __('Import posts from a Dotclear Blog'), array ($dc_import, 'dispatch'));
    747741?>
Note: See TracChangeset for help on using the changeset viewer.