From efd6d59af8df9943642710c34354097203a5dc4b Mon Sep 17 00:00:00 2001 From: Matt Mullenweg Date: Wed, 5 May 2004 08:04:12 +0000 Subject: [PATCH] New MT import from Carthik. git-svn-id: https://develop.svn.wordpress.org/trunk@1230 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-admin/import-mt.php | 146 ++++++++++++++++++++++++++++++++++------- 1 file changed, 124 insertions(+), 22 deletions(-) diff --git a/wp-admin/import-mt.php b/wp-admin/import-mt.php index 982aa87699..4527eb1be8 100644 --- a/wp-admin/import-mt.php +++ b/wp-admin/import-mt.php @@ -1,11 +1,10 @@ @@ -35,6 +34,12 @@ if (!$step) $step = 0; p { line-height: 140%; } + #authors li { + padding:3px; + border: 1px solid #ccc; + width: 40%; + margin-bottom:2px; + }

WordPress

@@ -49,7 +54,6 @@ switch($step) {

define('MTEXPORT', 'import.txt');

You have to do this manually for security reasons.

If you've done that and you’re all ready, let's go! Remember that the import process may take a minute or so if you have a large number of entries and comments. Think of all the rebuilding time you'll be saving once it's done. :)

-

On our test system, importing a blog of 1189 entries and about a thousand comments took 18 seconds.

The importer is smart enough not to import duplicates, so you can run this multiple times without worry if—for whatever reason—it doesn't finish.

previous page to continue."); - -function checkauthor($author) { - global $wpdb, $tableusers; - // Checks if an author exists, creates it if it doesn't, and returns author_id - $user_id = $wpdb->get_var("SELECT ID FROM $tableusers WHERE user_login = '$author'"); - if (!$user_id) { - $wpdb->query("INSERT INTO $tableusers (user_login, user_pass, user_nickname) VALUES ('$author', 'changeme', '$author')"); - $user_id = $wpdb->get_var("SELECT ID FROM $tableusers WHERE user_login = '$author'"); - echo "Created user '$author'. "; - } - return $user_id; -} - // Bring in the data set_magic_quotes_runtime(0); $datalines = file(MTEXPORT); // Read the file into an array $importdata = implode('', $datalines); // squish it $importdata = preg_replace("/(\r\n|\n|\r)/", "\n", $importdata); +$authors = array(); +$temp = array(); +$posts = explode("--------", $importdata); + +function users_form($n) { + global $wpdb, $tableusers, $testing; + $users = $wpdb->get_results("SELECT * FROM $tableusers ORDER BY ID"); + ?> +

admins entries.'); ?>

+

italics. For each of these names, you can either pick an author in your WordPress installation from the menu, or enter a name for the author in the textbox.'); ?>

+

+ '; + echo '
'; + $j = -1; + foreach ($authors as $author) { + ++$j; + echo '
  • '.$author.'
    '.''; + } + echo ''.'
    '; + echo '
  • '; + echo ''; + + flush(); + + break; + + case 2: + $newauthornames = array(); + $formnames = array(); + $selectnames = array(); + $mtnames = array(); + foreach($_POST['user'] as $key => $line) { + $newname = trim(stripslashes($line)); + if ($newname == '') $newname = 'left_blank';//passing author names from step 1 to step 2 is accomplished by using POST. left_blank denotes an empty entry in the form. + array_push($formnames,"$newname"); + }// $formnames is the array with the form entered names + foreach ($_POST['userselect'] as $user => $key) { + $selected = trim(stripslashes($key)); + array_push($selectnames,"$selected"); + } + $count = count($formnames); + for ($i = 0; $i < $count; $i++) { + if ( $selectnames[$i] != '#NONE#') {//if no name was selected from the select menu, use the name entered in the form + array_push($newauthornames,"$selectnames[$i]"); + } + else { + array_push($newauthornames,"$formnames[$i]"); + } + } + + $j = -1; + //function to check the authorname and do the mapping + function checkauthor($author) { + global $wpdb, $tableusers, $mtnames, $newauthornames, $j;//mtnames is an array with the names in the mt import file + $md5pass = md5(changeme); + if (!(in_array($author, $mtnames))) { //a new mt author name is found + ++$j; + $mtnames[$j] = $author; //add that new mt author name to an array + $user_id = $wpdb->get_var("SELECT ID FROM $tableusers WHERE user_login = '$newauthornames[$j]'"); //check if the new author name defined by the user is a pre-existing wp user + if (!$user_id) { //banging my head against the desk now. + if ($newauthornames[$j] == 'left_blank') { //check if the user does not want to change the authorname + $wpdb->query("INSERT INTO $tableusers (user_level, user_login, user_pass, user_nickname) VALUES ('1', '$author', '$md5pass', '$author')"); // if user does not want to change, insert the authorname $author + $user_id = $wpdb->get_var("SELECT ID FROM $tableusers WHERE user_login = '$author'"); + $newauthornames[$j] = $author; //now we have a name, in the place of left_blank. + } else { + $wpdb->query("INSERT INTO $tableusers (user_level, user_login, user_pass, user_nickname) VALUES ('1', '$newauthornames[$j]', '$md5pass', '$newauthornames[$j]')"); //if not left_blank, insert the user specified name + $user_id = $wpdb->get_var("SELECT ID FROM $tableusers WHERE user_login = '$newauthornames[$j]'"); + } + } else return $user_id; // return pre-existing wp username if it exists + } else { + $key = array_search($author, $mtnames); //find the array key for $author in the $mtnames array + $user_id = $wpdb->get_var("SELECT ID FROM $tableusers WHERE user_login = '$newauthornames[$key]'");//use that key to get the value of the author's name from $newauthornames + } + return $user_id; +}//function checkauthor ends here + + //bring in the posts now + set_magic_quotes_runtime(0); +$datalines = file(MTEXPORT); // Read the file into an array +$importdata = implode('', $datalines); // squish it +$importdata = preg_replace("/(\r\n|\n|\r)/", "\n", $importdata); $posts = explode("--------", $importdata); $i = -1; @@ -82,7 +182,7 @@ echo "
      "; foreach ($posts as $post) { if ('' != trim($post)) { ++$i; unset($post_categories); - echo "
    1. Importing post... "; + echo "
    2. Processing post... "; // Take the pings out first preg_match("|(-----\n\nPING:.*)|s", $post, $pings); @@ -123,7 +223,7 @@ foreach ($posts as $post) { if ('' != trim($post)) { case '': break; case 'AUTHOR': - $post_author = checkauthor($value); + $post_author = $value; break; case 'TITLE': $post_title = addslashes($value); @@ -174,6 +274,7 @@ foreach ($posts as $post) { if ('' != trim($post)) { if ($wpdb->get_var("SELECT ID FROM $tableposts WHERE post_title = '$post_title' AND post_date = '$post_date'")) { echo "Post already imported."; } else { + $post_author = checkauthor($post_author);//just so that if a post already exists, new users are not created by checkauthor $wpdb->query("INSERT INTO $tableposts ( post_author, post_date, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_name) VALUES @@ -205,6 +306,7 @@ foreach ($posts as $post) { if ('' != trim($post)) { $exists = $wpdb->get_row("SELECT * FROM $tablepost2cat WHERE post_id = $post_id AND category_id = 1"); if (!$exists) $wpdb->query("INSERT INTO $tablepost2cat (post_id, category_id) VALUES ($post_id, 1) "); } + echo " Post imported successfully..."; // Now for comments $comments = explode("-----\nCOMMENT:", $comments[0]); foreach ($comments as $comment) { @@ -292,7 +394,7 @@ foreach ($posts as $post) { if ('' != trim($post)) { } echo "
    3. "; flush(); - // n + } } ?> @@ -303,4 +405,4 @@ foreach ($posts as $post) { if ('' != trim($post)) { } ?> - \ No newline at end of file +