Make WordPress Core

Ticket #15034: dotclear-importer-0.5.patch

File dotclear-importer-0.5.patch, 8.3 KB (added by briancolinger, 14 years ago)
  • dotclear-importer.php

    diff -ruN dotclear-importer/dotclear-importer.php dotclear-importer.patched//dotclear-importer.php
    old new  
    129129                $dbprefix = get_option('dcdbprefix');
    130130
    131131                // Get Categories
    132                 return $dcdb->get_results('SELECT * FROM '.$dbprefix.'categorie', ARRAY_A);
     132                return $dcdb->get_results('SELECT * FROM '.$dbprefix.'category', ARRAY_A);
    133133        }
    134134
    135135        function get_dc_users()
     
    141141                $dbprefix = get_option('dcdbprefix');
    142142
    143143                // Get Users
    144 
    145144                return $dcdb->get_results('SELECT * FROM '.$dbprefix.'user', ARRAY_A);
    146145        }
    147146
     
    153152                $dbprefix = get_option('dcdbprefix');
    154153
    155154                // Get Posts
    156                 return $dcdb->get_results('SELECT '.$dbprefix.'post.*, '.$dbprefix.'categorie.cat_libelle_url AS post_cat_name
    157                                                 FROM '.$dbprefix.'post INNER JOIN '.$dbprefix.'categorie
    158                                                 ON '.$dbprefix.'post.cat_id = '.$dbprefix.'categorie.cat_id', ARRAY_A);
     155                return $dcdb->get_results('SELECT '.$dbprefix.'post.* FROM '.$dbprefix.'post', ARRAY_A);
    159156        }
    160157
    161158        function get_dc_comments()
     
    177174                set_magic_quotes_runtime(0);
    178175                $dbprefix = get_option('dcdbprefix');
    179176
    180                 return $dcdb->get_results('SELECT * FROM '.$dbprefix.'link ORDER BY position', ARRAY_A);
     177                return $dcdb->get_results('SELECT * FROM '.$dbprefix.'link ORDER BY link_position', ARRAY_A);
    181178        }
    182179
    183180        function cat2wp($categories='')
     
    194191                                extract($category);
    195192
    196193                                // Make Nice Variables
    197                                 $name = $wpdb->escape($cat_libelle_url);
    198                                 $title = $wpdb->escape(csc ($cat_libelle));
     194                                $name = $wpdb->escape($cat_url);
     195                                $title = $wpdb->escape(csc ($cat_title));
    199196                                $desc = $wpdb->escape(csc ($cat_desc));
    200197
    201198                                if ($cinfo = category_exists($name)) {
     
    223220
    224221                // Midnight Mojo
    225222                if (is_array($users)) {
    226                         echo '<p>'.__('Importing Users...', 'dotclear-importer').'<br /><br /></p>';
     223                        echo '<p>'.__('Importing Users...', 'dotclear-importer').'</p>';
     224                        echo '<p>'.__('(  if you see any error (WP_Error): maybe you have a conflict with your current users from your wordpress and your imported users from dotclear. )', 'dotclear-importer').'<br /><br /></p>';
    227225                        foreach ($users as $user) {
    228226                                $count++;
    229227                                extract($user);
     
    292290                $dcposts2wpposts = array();
    293291                $cats = array();
    294292
     293                foreach($this->get_dc_cats() as $buffer) {
     294                        $categories[$buffer["cat_id"]] = $buffer["cat_title"];
     295                }
     296
    295297                // Do the Magic
    296298                if (is_array($posts)) {
    297299                        echo '<p>'.__('Importing Posts...', 'dotclear-importer').'<br /><br /></p>';
     
    308310                                $uinfo = ( get_userdatabylogin( $user_id ) ) ? get_userdatabylogin( $user_id ) : 1;
    309311                                $authorid = ( is_object( $uinfo ) ) ? $uinfo->ID : $uinfo ;
    310312
    311                                 $Title = $wpdb->escape(csc ($post_titre));
     313                                $Title = $wpdb->escape(csc ($post_title));
    312314                                $post_content = textconv ($post_content);
    313315                                $post_excerpt = "";
    314316                                if ($post_chapo != "") {
     
    320322                                $post_status = $stattrans[$post_pub];
    321323
    322324                                // Import Post data into WordPress
    323 
    324325                                if ($pinfo = post_exists($Title,$post_content)) {
    325326                                        $ret_id = wp_insert_post(array(
    326327                                                        'ID'                    => $pinfo,
     
    359360                                        if ( is_wp_error( $ret_id ) )
    360361                                                return $ret_id;
    361362                                }
     363
     364                                // print "Dotclear($post_id) => Wordpress($ret_id)<br/>";
    362365                                $dcposts2wpposts[$post_id] = $ret_id;
    363366
    364367                                // Make Post-to-Category associations
    365368                                $cats = array();
    366                                 $category1 = get_category_by_slug($post_cat_name);
     369                                $category1 = get_category_by_slug($categories[$cat_id]);
    367370                                $category1 = $category1->term_id;
    368371
    369372                                if ($cat1 = $category1) { $cats[1] = $cat1; }
     
    372375                        }
    373376                }
    374377                // Store ID translation for later use
    375                 add_option('dcposts2wpposts',$dcposts2wpposts);
     378                // add_option('dcposts2wpposts', $dcposts2wpposts); // after storing, all datas are altered  ôO
     379                                                                    // bug into add_option ?!!
    376380
    377381                echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> posts imported.', 'dotclear-importer'), $count).'<br /><br /></p>';
    378                 return true;
     382
     383                return $dcposts2wpposts;
    379384        }
    380385
    381         function comments2wp($comments='') {
     386        function comments2wp($comments='', $linker) {
    382387                // General Housekeeping
    383388                global $wpdb;
    384389                $count = 0;
    385390                $dccm2wpcm = array();
    386                 $postarr = get_option('dcposts2wpposts');
     391
     392                //$postarr = get_option('dcposts2wpposts'); // after storing, all datas are altered ôO
     393                                                            // bug into add_option ?!!
     394                $postarr = $linker;
    387395
    388396                // Magic Mojo
    389397                if (is_array($comments)) {
     
    395403                                // WordPressify Data
    396404                                $comment_ID = (int) ltrim($comment_id, '0');
    397405                                $comment_post_ID = (int) $postarr[$post_id];
    398                                 $comment_approved = $comment_pub;
    399                                 $name = $wpdb->escape(csc ($comment_auteur));
     406                                $comment_approved = ($comment_status == 1) ? 1 : 0;
     407                                $name = $wpdb->escape(csc ($comment_author));
    400408                                $email = $wpdb->escape($comment_email);
    401409                                $web = "http://".$wpdb->escape($comment_site);
    402410                                $message = $wpdb->escape(textconv ($comment_content));
     
    449457                                $count++;
    450458                                extract($link);
    451459
    452                                 if ($title != "") {
    453                                         if ($cinfo = term_exists(csc ($title), 'link_category')) {
    454                                                 $category = $cinfo['term_id'];
    455                                         } else {
    456                                                 $category = wp_insert_term($wpdb->escape (csc ($title)), 'link_category');
    457                                                 $category = $category['term_id'];
    458                                         }
    459                                 } else {
    460                                         $linkname = $wpdb->escape(csc ($label));
    461                                         $description = $wpdb->escape(csc ($title));
     460                                $linkname = $wpdb->escape(csc ($link_title));
     461                                $description = $wpdb->escape(csc ($link_desc));
    462462
    463                                         if ($linfo = link_exists($linkname)) {
    464                                                 $ret_id = wp_insert_link(array(
    465                                                                         'link_id'               => $linfo,
    466                                                                         'link_url'              => $href,
    467                                                                         'link_name'             => $linkname,
    468                                                                         'link_category'         => $category,
    469                                                                         'link_description'      => $description)
    470                                                                         );
    471                                         } else {
    472                                                 $ret_id = wp_insert_link(array(
    473                                                                         'link_url'              => $url,
    474                                                                         'link_name'             => $linkname,
    475                                                                         'link_category'         => $category,
    476                                                                         'link_description'      => $description)
    477                                                                         );
    478                                         }
    479                                         $dclinks2wplinks[$link_id] = $ret_id;
     463                                if ( ($linfo = link_exists($linkname)) == NULL ) {
     464                                        $ret_id = wp_insert_link(array(
     465                                                                'link_url'              => $link_href,
     466                                                                'link_name'             => $link_title,
     467                                                                'link_description'      => $link_desc
     468                                                                ));
     469                                } else {
     470                                        $ret_id = link_exists($linkname);
    480471                                }
     472                                $dclinks2wplinks[$link_id] = $ret_id;
    481473                        }
    482474                        add_option('dclinks2wplinks',$dclinks2wplinks);
    483475                        echo '<p>';
     
    511503
    512504                echo '<form action="admin.php?import=dotclear&amp;step=3" method="post">';
    513505                wp_nonce_field('import-dotclear');
    514                 printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Posts', 'dotclear-importer'));
     506                printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Posts and Comments', 'dotclear-importer'));
    515507                echo '</form>';
    516508        }
    517509
     510        function import_posts_and_comments() {
     511                $posts    = $this->get_dc_posts();
     512                $comments = $this->get_dc_comments();
     513
     514                $link_between_posts_and_comments = $this->posts2wp($posts);
     515                $this->comments2wp($comments, $link_between_posts_and_comments);
     516
     517                echo '<form action="admin.php?import=dotclear&amp;step=5" method="post">';
     518                wp_nonce_field('import-dotclear');
     519                printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Links', 'dotclear-importer'));
     520                echo '</form>';
     521        }
     522        /*
    518523        function import_posts() {
    519524                // Post Import
    520525                $posts = $this->get_dc_posts();
     
    538543                printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Links', 'dotclear-importer'));
    539544                echo '</form>';
    540545        }
     546        */
    541547
    542548        function import_links()
    543549        {
     
    656662                                $this->import_users();
    657663                                break;
    658664                        case 3 :
     665                                $result = $this->import_posts_and_comments();
     666                                if ( is_wp_error( $result ) )
     667                                        echo $result->get_error_message();
     668                                // goto directly to 5
     669                                break;
     670                        /*
     671                        // ------ previous code ------
     672                        case 3 :
    659673                                $result = $this->import_posts();
    660674                                if ( is_wp_error( $result ) )
    661675                                        echo $result->get_error_message();
     
    663677                        case 4 :
    664678                                $this->import_comments();
    665679                                break;
     680                        */
    666681                        case 5 :
    667682                                $this->import_links();
    668683                                break;