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