WordPress.org

Make WordPress Core

Ticket #10816: joomla.php

File joomla.php, 20.7 KB (added by debashish, 6 years ago)

The custom importer that I am creating for Joomla2Wordpress Import

Line 
1<?php
2/**
3 * Joomla Importer
4 * @author Debashish Chakrabarty (http://debashish.com)
5 * @package WordPress
6 * @subpackage Importer
7 */
8
9if(!function_exists('get_comment_count')) {
10        /**
11         * Get the comment count for posts.
12         *
13         * @package WordPress
14         * @subpackage Joomla_Import
15         *
16         * @param int $post_ID Post ID
17         * @return int
18         */
19        function get_comment_count($post_ID) {
20                global $wpdb;
21                return $wpdb->get_var( $wpdb->prepare("SELECT count(*) FROM $wpdb->comments WHERE comment_post_ID = %d", $post_ID) );
22        }
23}
24
25if(!function_exists('link_exists')) {
26        /**
27         * Check whether link already exists.
28         *
29         * @package WordPress
30         * @subpackage Joomla_Import
31         *
32         * @param string $linkname
33         * @return int
34         */
35        function link_exists($linkname) {
36                global $wpdb;
37                return $wpdb->get_var( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_name = %s", $linkname) );
38        }
39}
40
41/**
42 * Joomla Importer Class
43 */
44class Joomla_Import { 
45
46        function header() {
47                echo '<div class="wrap">';
48                screen_icon();
49                echo '<h2>'.__('Import Joomla').'</h2>';
50                echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'</p>';
51        }
52
53        function footer() {
54                echo '</div>';
55        }
56
57        function greet() {
58                echo '<div class="narrow">';
59                echo '<p>'.__('Howdy! This imports categories, users, posts, comments (only from JomComment), and links from Joomla 1.x CMS into this blog.').'</p>';
60                echo '<p>'.__('This has not been tested on other versions of Joomla.  Mileage may vary.').'</p>';
61                echo '<p>'.__('Your Joomla Configuration settings are as follows:').'</p>';
62                echo '<form action="admin.php?import=joomla&amp;step=1" method="post">';
63                wp_nonce_field('import-joomla');
64                $this->db_form();
65                echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.attribute_escape(__('Import')).'" /></p>';
66                echo '</form>';
67                echo '</div>';
68        }
69
70        function get_joomla_cats() {
71                global $wpdb;           
72                $joomladb = new wpdb(get_option('joomlauser'), get_option('joomlapass'), get_option('joomlaname'), get_option('joomlahost'));
73                set_magic_quotes_runtime(0);
74                $prefix = get_option('tpre');
75
76                // Get Categories               
77                return $joomladb->get_results("SELECT ".$prefix."categories.id, ".$prefix."categories.title, ".$prefix."categories.name FROM ".$prefix."categories,".$prefix."sections WHERE ".$prefix."sections.id = ".$prefix."categories.section", ARRAY_A);
78        }
79
80        function get_joomla_users() {
81                global $wpdb;           
82                $joomladb = new wpdb(get_option('joomlauser'), get_option('joomlapass'), get_option('joomlaname'), get_option('joomlahost'));
83                set_magic_quotes_runtime(0);
84                $prefix = get_option('tpre');
85
86                // Get Users
87                return $joomladb->get_results('SELECT
88                    id as user_id,
89                        username as name,
90                        name as RealName,                       
91                        email,
92                        usertype as privs
93                        FROM '.$prefix.'users', ARRAY_A);
94        }
95
96        function get_joomla_posts() {
97                global $wpdb;
98                $joomladb = new wpdb(get_option('joomlauser'), get_option('joomlapass'), get_option('joomlaname'), get_option('joomlahost'));
99                set_magic_quotes_runtime(0);
100                $prefix = get_option('tpre');
101
102                // Get Posts
103                return $joomladb->get_results("SELECT
104                        jpost.id as ID,
105                        jpost.created as Posted,
106                        jpost.created_by as AuthorID,
107                        jpost.created as LastMod,
108                        jpost.title as Title,
109                        `fulltext` as Body,
110                        jpost.introtext as Excerpt,
111                        jcat.name as Category,                 
112                        jpost.state as Status,
113                        jpost.metakey as Keywords,
114                        jpost.title_alias as url_title,
115                        (select count(title) from ".$prefix."jomcomment where contentid=jpost.id) as comments_count
116                        FROM ".$prefix."content jpost, ".$prefix."categories jcat
117                        where jpost.catid = jcat.id", 
118                        ARRAY_A);
119        }
120
121        function get_joomla_comments() {
122                global $wpdb;           
123                $joomladb = new wpdb(get_option('joomlauser'), get_option('joomlapass'), get_option('joomlaname'), get_option('joomlahost'));
124                set_magic_quotes_runtime(0);
125                $prefix = get_option('tpre');
126
127                // Get Comments
128                return $joomladb->get_results('SELECT * FROM '.$prefix.'jomcomment', ARRAY_A);
129        }
130
131        function get_joomla_links()     {
132                //General Housekeeping
133                $joomladb = new wpdb(get_option('joomlauser'), get_option('joomlapass'), get_option('joomlaname'), get_option('joomlahost'));
134                set_magic_quotes_runtime(0);
135                $prefix = get_option('tpre');
136
137                return $joomladb->get_results('SELECT
138                        id,
139                        date,
140                        category,
141                        url,
142                        linkname,
143                        description
144                        FROM '.$prefix.'joomla_link',
145                        ARRAY_A);
146        }
147
148        function get_joomla_sefurl($postID='') {
149                global $wpdb;           
150                $joomladb = new wpdb(get_option('joomlauser'), get_option('joomlapass'), get_option('joomlaname'), get_option('joomlahost'));
151                set_magic_quotes_runtime(0);
152                $prefix = get_option('tpre');
153
154                // Get SEF URL         
155                return $joomladb->get_var( $joomladb->prepare('SELECT distinct external FROM '.$prefix.'opensef_sef where internal = %d', $postID) );
156        }
157
158        function cat2wp($categories='') {               
159                global $wpdb;
160                $count = 0;
161                $txpcat2wpcat = array();
162
163                // Do the Magic
164                if(is_array($categories)) {
165                        echo '<p>'.__('Importing Categories...').'<br /><br /></p>';
166                        foreach ($categories as $category) {
167                                $count++;
168                                extract($category);
169
170                                // Make Nice Variables
171                                $name = $wpdb->escape($name);
172                                $title = $wpdb->escape($title);
173
174                                if($cinfo = category_exists($name)) {
175                                        $ret_id = wp_insert_category(array('cat_ID' => $cinfo, 'category_nicename' => $name, 'cat_name' => $title));
176                                }
177                                else {
178                                        $ret_id = wp_insert_category(array('category_nicename' => $name, 'cat_name' => $title));
179                                }
180                                $txpcat2wpcat[$id] = $ret_id;
181                        }
182
183                        // Store category translation for future use
184                        add_option('txpcat2wpcat',$txpcat2wpcat);
185                        echo '<p>'.sprintf(__ngettext('Done! <strong>%1$s</strong> category imported.', 'Done! <strong>%1$s</strong> categories imported.', $count), $count).'<br /><br /></p>';
186                        return true;
187                }
188                echo __('No Categories to Import!');
189                return false;
190        }
191
192        function users2wp($users='') {         
193                global $wpdb;
194                $count = 0;
195                $txpid2wpid = array();
196
197                if(is_array($users)) {
198                        echo '<p>'.__('Importing Users...').'<br /><br /></p>';
199                        foreach($users as $user) {
200                                $count++;
201                                extract($user);
202
203                                // Make Nice Variables
204                                $name = $wpdb->escape($name);
205                                $RealName = $wpdb->escape($RealName);
206                                //echo '<p>Importing:'.$RealName.' ['.$name.']<br /><br /></p>';
207
208                                if($uinfo = get_userdatabylogin($name)) {
209                                        $ret_id = wp_insert_user(array(
210                                                                'ID'                    => $uinfo->ID,
211                                                                'user_login'    => $name,
212                                                                'user_nicename' => $RealName,
213                                                                'user_email'    => $email,
214                                                                'user_url'              => 'http://',
215                                                                'display_name'  => $name)
216                                                                );
217                                }
218                                else {
219                                        $userdata = array(
220                                                                'user_login'    => $name,
221                                                                'user_pass'             => 'password123',
222                                                                'user_nicename' => $RealName,
223                                                                'user_email'    => $email,
224                                                                'user_url'              => 'http://',
225                                                                'display_name'  => $name,
226                                                                'first_name'    => $name
227                                                                );
228                                        $ret_id = wp_insert_user($userdata);
229                                }
230                                $txpid2wpid[$user_id] = $ret_id;
231                                echo "<li>".$RealName.", Act ID:".$user_id.", WPID:".$ret_id;
232
233                                // Set Joomla-to-WordPress permissions translation
234                                //$transperms = array(1 => '10', 2 => '9', 3 => '5', 4 => '4', 5 => '3', 6 => '2', 7 => '0');
235
236                                // Update Usermeta Data
237                                $user = new WP_User($ret_id);
238                                if('Super Administrator' == $privs) { $user->set_role('administrator'); }                               
239                                if('Author'  == $privs) { $user->set_role('author'); }
240                                if('Publisher'  == $privs) { $user->set_role('editor'); }
241                                if('Registered'  == $privs) { $user->set_role('subscriber'); }
242
243                                //update_usermeta( $ret_id, 'wp_user_level', $transperms[$privs] );
244                                update_usermeta( $ret_id, 'rich_editing', 'false');
245                        }// End foreach($users as $user)
246
247                        // Store id translation array for future use
248                        add_option('txpid2wpid',$txpid2wpid);
249
250
251                        echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> users imported.'), $count).'<br /><br /></p>';
252                        return true;
253                }// End if(is_array($users)
254
255                echo __('No Users to Import!');
256                return false;
257
258        }// End function user2wp()
259
260        function posts2wp($posts='') {         
261                global $wpdb;
262                $count = 0;
263                $txpposts2wpposts = array();
264                $autharr = get_option('txpid2wpid');
265                $cats = array();
266
267                // Do the Magic
268                if(is_array($posts)) {
269                        echo '<p>'.__('Importing Posts...').'<br /><br /></p>';
270                        foreach($posts as $post) {
271                                $count++;
272                                extract($post);
273
274                                $sefurl = $this->get_joomla_sefurl($post['ID']);
275                                //echo "<br>[".$post['ID']. "] ". $sefurl;     
276       
277                                // Set Joomla-to-WordPress status translation
278                                //$stattrans = array(1 => 'draft', 2 => 'private', 3 => 'draft', 4 => 'publish', 5 => 'publish');
279                                $stattrans = array(-2 => 'draft', 1 => 'publish');
280
281                                //Can we do this more efficiently?
282                                //$uinfo = ( get_userdatabylogin( $autharr[$AuthorID] ) ) ? get_userdatabylogin( $autharr[$AuthorID] ) : 1;
283                                //$authorid = ( is_object( $uinfo ) ) ? $uinfo->ID : $uinfo ;
284                                $authorid = $autharr[$AuthorID];
285
286                                echo "<li>".$AuthorID." :: ".$autharr[$AuthorID]." :: ".$authorid;                                     
287
288                                $Title = $wpdb->escape($Title);
289                                $Body = $wpdb->escape($Body);
290                                $Excerpt = $wpdb->escape($Excerpt);
291                                $post_status = $stattrans[$Status];
292
293                                // Import Post data into WordPress
294                                if($pinfo = post_exists($Title,$Body)) {
295                                        $ret_id = wp_insert_post(array(
296                                                'ID'                            => $pinfo,
297                                                'post_date'                     => $Posted,
298                                                'post_date_gmt'         => $post_date_gmt,
299                                                'post_author'           => $authorid,
300                                                'post_modified'         => $LastMod,
301                                                'post_modified_gmt' => $post_modified_gmt,
302                                                'post_title'            => $Title,
303                                                'post_content'          => $Body,
304                                                'post_excerpt'          => $Excerpt,
305                                                'post_status'           => $post_status,
306                                                'post_name'                     => $sefurl,
307                                                'comment_count'         => $comments_count)
308                                                );
309                                        if ( is_wp_error( $ret_id ) )
310                                                return $ret_id;
311                                }
312                                else  {
313                                        $ret_id = wp_insert_post(array(
314                                                'post_date'                     => $Posted,
315                                                'post_date_gmt'         => $post_date_gmt,
316                                                'post_author'           => $authorid,
317                                                'post_modified'         => $LastMod,
318                                                'post_modified_gmt' => $post_modified_gmt,
319                                                'post_title'            => $Title,
320                                                'post_content'          => $Body,
321                                                'post_excerpt'          => $Excerpt,
322                                                'post_status'           => $post_status,
323                                                'post_name'                     => $sefurl,
324                                                'comment_count'         => $comments_count)
325                                                );
326                                        if ( is_wp_error( $ret_id ) )
327                                                return $ret_id;
328                                }
329                                $txpposts2wpposts[$ID] = $ret_id;
330
331                                // Make Post-to-Category associations
332                                $cats = array();
333                                $category = get_category_by_slug($Category);
334                                $cats[0] = $category->term_id;
335                                //echo "<li>cat1: ".$Category.", category1: ". $category->term_id;
336                                if(!empty($cats)) { 
337                                        wp_set_post_categories($ret_id, $cats); 
338                                }                               
339                        }
340                }
341                // Store ID translation for later use
342                add_option('txpposts2wpposts',$txpposts2wpposts);
343
344                echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> posts imported.'), $count).'<br /><br /></p>';
345                return true;
346        }
347
348        function comments2wp($comments='') {           
349                global $wpdb;
350                $count = 0;
351                $txpcm2wpcm = array();
352                $postarr = get_option('txpposts2wpposts');
353
354                // Magic Mojo
355                if(is_array($comments)) {
356                        echo '<p>'.__('Importing Comments...').'<br /><br /></p>';
357                        foreach($comments as $comment) {
358                                $count++;
359                                extract($comment);
360
361                                //REMOVE LATER
362                                if($count <= 10) {                                                     
363
364                                        // WordPressify Data
365                                        //$comment_ID = ltrim($discussid, '0');
366                                        $comment_ID = $id;
367                                        $comment_post_ID = $postarr[$contentid];
368                                        $comment_approved = 1;
369                                        $name = $wpdb->escape($name);
370                                        $email = $wpdb->escape($email);
371                                        $web = $wpdb->escape($website);
372                                        //$message = $wpdb->escape($comment);
373                                        $message = $comment;
374                                        $posted = $date;                               
375                               
376                                        // Insert comments
377                                        $ret_id = wp_insert_comment(array(
378                                                'comment_post_ID'               => $comment_post_ID,
379                                                'comment_author'                => $name,
380                                                'comment_author_email'  => $email,
381                                                'comment_author_url'    => $web,
382                                                'comment_author_IP'             => $ip,
383                                                'comment_date'                  => $posted,
384                                                'comment_content'               => $message,
385                                                'comment_approved'              => $comment_approved)
386                                                );
387                               
388                                        $txpcm2wpcm[$comment_ID] = $ret_id;
389                                        // Associate newly formed comments with posts
390                                        //wp_update_comment_count_now( $comment_post_ID);
391
392                                        echo "<li>name:".$name.", email:".$email.", web: ".$website.", comment:".$comment.", Date: ".$date.", IP:".$ip.", Joomla Postid: ".$contentid.", WP PostID: ".$comment_post_ID; 
393                                }
394                        }
395                        // Store Comment ID translation for future use
396                        add_option('txpcm2wpcm', $txpcm2wpcm);
397
398                        echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> comments imported.'), $count).'<br /><br /></p>';
399                        return true;
400                }
401                echo __('No Comments to Import!');
402                return false;
403        }
404
405        function links2wp($links='')
406        {
407               
408                global $wpdb;
409                $count = 0;
410
411                // Deal with the links
412                if(is_array($links))
413                {
414                        echo '<p>'.__('Importing Links...').'<br /><br /></p>';
415                        foreach($links as $link)
416                        {
417                                $count++;
418                                extract($link);
419
420                                // Make nice vars
421                                $category = $wpdb->escape($category);
422                                $linkname = $wpdb->escape($linkname);
423                                $description = $wpdb->escape($description);
424
425                                if($linfo = link_exists($linkname))
426                                {
427                                        $ret_id = wp_insert_link(array(
428                                                                'link_id'                       => $linfo,
429                                                                'link_url'                      => $url,
430                                                                'link_name'                     => $linkname,
431                                                                'link_category'         => $category,
432                                                                'link_description'      => $description,
433                                                                'link_updated'          => $date)
434                                                                );
435                                }
436                                else
437                                {
438                                        $ret_id = wp_insert_link(array(
439                                                                'link_url'                      => $url,
440                                                                'link_name'                     => $linkname,
441                                                                'link_category'         => $category,
442                                                                'link_description'      => $description,
443                                                                'link_updated'          => $date)
444                                                                );
445                                }
446                                $txplinks2wplinks[$link_id] = $ret_id;
447                        }
448                        add_option('txplinks2wplinks',$txplinks2wplinks);
449                        echo '<p>';
450                        printf(__ngettext('Done! <strong>%s</strong> link imported', 'Done! <strong>%s</strong> links imported', $count), $count);
451                        echo '<br /><br /></p>';
452                        return true;
453                }
454                echo __('No Links to Import!');
455                return false;
456        }
457
458        function import_categories() {
459                // Category Import
460                $cats = $this->get_joomla_cats();
461                $this->cat2wp($cats);
462                add_option('joomla_cats', $cats);
463
464                echo '<form action="admin.php?import=joomla&amp;step=2" method="post">';
465                wp_nonce_field('import-joomla');
466                printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', attribute_escape(__('Import Users')));
467                echo '</form>';
468
469        }
470
471        function import_users()
472        {
473                // User Import
474                $users = $this->get_joomla_users();
475                $this->users2wp($users);
476
477                echo '<form action="admin.php?import=joomla&amp;step=3" method="post">';
478                wp_nonce_field('import-joomla');
479                printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', attribute_escape(__('Import Posts')));
480                echo '</form>';
481        }
482
483        function import_posts() {
484                // Post Import
485                $posts = $this->get_joomla_posts();
486                $result = $this->posts2wp($posts);
487                if ( is_wp_error( $result ) )
488                        return $result;
489
490                echo '<form action="admin.php?import=joomla&amp;step=4" method="post">';
491                wp_nonce_field('import-joomla');
492                printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', attribute_escape(__('Import Comments')));
493                echo '</form>';
494        }
495
496        function import_comments() {
497                // Comment Import
498                $comments = $this->get_joomla_comments();
499                $this->comments2wp($comments);
500
501                echo '<form action="admin.php?import=joomla&amp;step=5" method="post">';
502                wp_nonce_field('import-joomla');
503                printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', attribute_escape(__('Import Links')));
504                echo '</form>';
505        }
506
507        function import_links() {
508                //Link Import
509                $links = $this->get_joomla_links();
510                $this->links2wp($links);
511                add_option('joomla_links', $links);
512
513                echo '<form action="admin.php?import=joomla&amp;step=6" method="post">';
514                wp_nonce_field('import-joomla');
515                printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', attribute_escape(__('Finish')));
516                echo '</form>';
517        }
518
519        function cleanup_joomlaimport() {
520                delete_option('tpre');
521                delete_option('joomla_cats');
522                delete_option('txpid2wpid');
523                delete_option('txpcat2wpcat');
524                delete_option('txpposts2wpposts');
525                delete_option('txpcm2wpcm');
526                delete_option('txplinks2wplinks');
527                delete_option('joomlauser');
528                delete_option('joomlapass');
529                delete_option('joomlaname');
530                delete_option('joomlahost');
531                do_action('import_done', 'joomla');
532                $this->tips();
533        }
534
535        function tips() {
536                echo '<p>'.__('Welcome to WordPress.  We hope (and expect!) that you will find this platform incredibly rewarding!  As a new WordPress user coming from Joomla, there are some things that we would like to point out.  Hopefully, they will help your transition go as smoothly as possible.').'</p>';
537                echo '<h3>'.__('Users').'</h3>';
538                echo '<p>'.sprintf(__('You have already setup WordPress and have been assigned an administrative login and password.  Forget it.  You didn&#8217;t have that login in Joomla, 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 Joomla 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.'), get_bloginfo( 'wpurl' ) . '/wp-login.php').'</p>';
539                echo '<h3>'.__('Preserving Authors').'</h3>';
540                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>';         
541                echo '<h3>'.__('WordPress Resources').'</h3>';
542                echo '<p>'.__('Finally, there are numerous WordPress resources around the internet.  Some of them are:').'</p>';
543                echo '<ul>';
544                echo '<li>'.__('<a href="http://www.wordpress.org">The official WordPress site</a>').'</li>';
545                echo '<li>'.__('<a href="http://wordpress.org/support/">The WordPress support forums</a>').'</li>';
546                echo '<li>'.__('<a href="http://codex.wordpress.org">The Codex (In other words, the WordPress Bible)</a>').'</li>';
547                echo '</ul>';
548                echo '<p>'.sprintf(__('That&#8217;s it! What are you waiting for? Go <a href="%1$s">login</a>!'), get_bloginfo( 'wpurl' ) . '/wp-login.php').'</p>';
549        }
550
551        function db_form() {
552                echo '<table class="form-table">';
553                printf('<tr><th scope="row"><label for="dbuser">%s</label></th><td><input type="text" name="dbuser" id="dbuser" value="root"/></td></tr>', __('Joomla Database User:'));
554                printf('<tr><th scope="row"><label for="dbpass">%s</label></th><td><input type="password" name="dbpass" id="dbpass" value=""/></td></tr>', __('Joomla Database Password:'));
555                printf('<tr><th scope="row"><label for="dbname">%s</label></th><td><input type="text" id="dbname" name="dbname" value="nirantar"/></td></tr>', __('Joomla Database Name:'));
556                printf('<tr><th scope="row"><label for="dbhost">%s</label></th><td><input type="text" id="dbhost" name="dbhost" value="localhost" /></td></tr>', __('Joomla Database Host:'));
557                printf('<tr><th scope="row"><label for="dbprefix">%s</label></th><td><input type="text" name="dbprefix" id="dbprefix" value="jos_" /></td></tr>', __('Joomla Table prefix (if any):'));
558                echo '</table>';
559        }
560
561        function dispatch() {
562
563                if (empty ($_GET['step']))
564                        $step = 0;
565                else
566                        $step = (int) $_GET['step'];
567                $this->header();
568
569                if ( $step > 0 ) {
570                        check_admin_referer('import-joomla');
571
572                        if($_POST['dbuser']) {
573                                if(get_option('joomlauser'))
574                                        delete_option('joomlauser');
575                                add_option('joomlauser', sanitize_user($_POST['dbuser'], true));
576                        }
577                        if($_POST['dbpass']) {
578                                if(get_option('joomlapass'))
579                                        delete_option('joomlapass');
580                                add_option('joomlapass',  sanitize_user($_POST['dbpass'], true));
581                        }
582
583                        if($_POST['dbname']) {
584                                if(get_option('joomlaname'))
585                                        delete_option('joomlaname');
586                                add_option('joomlaname',  sanitize_user($_POST['dbname'], true));
587                        }
588                        if($_POST['dbhost']) {
589                                if(get_option('joomlahost'))
590                                        delete_option('joomlahost');
591                                add_option('joomlahost',  sanitize_user($_POST['dbhost'], true));
592                        }
593                        if($_POST['dbprefix']) {
594                                if(get_option('tpre'))
595                                        delete_option('tpre');
596                                add_option('tpre',  sanitize_user($_POST['dbprefix']));
597                        }
598                }
599
600                switch ($step) {
601                        default:
602                        case 0 :
603                                $this->greet();
604                                break;
605                        case 1 :
606                                $this->import_categories();
607                                break;
608                        case 2 :
609                                $this->import_users();
610                                break;
611                        case 3 :
612                                $result = $this->import_posts();
613                                if ( is_wp_error( $result ) )
614                                        echo $result->get_error_message();
615                                break;
616                        case 4 :
617                                $this->import_comments();
618                                break;
619                        case 5 :
620                                $this->import_links();
621                                break;
622                        case 6 :
623                                $this->cleanup_joomlaimport();
624                                break;
625                }
626
627                $this->footer();
628        }
629
630        function Joomla_Import() {
631                // Nothing.
632        }
633}
634
635$joomla_import = new Joomla_Import();
636
637register_importer('joomla', __('Joomla'), __('Import categories, users, posts, comments, and links from a Joomla CMS.'), array ($joomla_import, 'dispatch'));
638
639?>