Welcome to the WordPress b2evolution import utility. Before getting started, we need some information on your b2evolution database.
Now select the b2evolution blog to import and provide information about your WordPress database.
All right sparky, this is where the actual import takes place! Do you feel lucky today? :p
SQL : " . $sql);
if ($result) {
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$filepath_wp = $row['option_value']."/";
}
$filepath_b2 = "http://".$b2_url."/media/";
echo "b2Evolution file path: ".$filepath_b2."
";
echo "WordPress file path: ".$filepath_wp."
";
// get authors for blog
echo "Importing User records ...
";
$sql = "SELECT DISTINCT evo_users.* FROM evo_users INNER JOIN evo_blogusers " .
"ON evo_users.user_ID = evo_blogusers.bloguser_user_ID WHERE " .
"evo_blogusers.bloguser_blog_ID = ".$b2_blog." AND `user_login`<>'admin'";
$result = mysql_query($sql,$resB2) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
if ($result) {
$cnt = 0;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$sql = trim(str_replace("\n","","INSERT INTO `". $wp_pref ."users` ".
"(`user_login`,`user_pass`,`user_nicename`," .
"`user_email`,`user_url`,`user_registered`,`user_status`," .
"`display_name`)" .
" VALUES ('".$row['user_login']."','".$row['user_pass']."','".$row['user_login']."','".$row['user_email']. "','".$row['user_url']."','".$row['dateYMDhour']."','".$row['user_status']."','".
$row['user_login']."');"));
$q = mysql_query($sql, $resWP) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
$id = mysql_insert_id($resWP);
$arUser[$row['ID']] = $id;
$cnt = $cnt + 1;
}
echo $cnt . " User record(s) imported!
";
} else {
echo "No User records found!
";
}
// get categories
echo "Importing Category records ...
";
$sql = "SELECT * FROM evo_categories WHERE cat_blog_ID = " . $b2_blog;
$result = mysql_query($sql,$resB2) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
if ($result) {
$cnt = 0;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$sql = trim(str_replace("\n","","INSERT INTO `". $wp_pref ."categories` ".
"(`cat_name`,`category_nicename`,`category_description`)" .
" VALUES ('". mysql_escape_string($row['cat_name'])."','".mysql_escape_string($row['cat_name'])."','".mysql_escape_string($row['cat_longdesc'])."');"));
$q = mysql_query($sql, $resWP) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
$id = mysql_insert_id($resWP);
$arCat[$row['cat_ID']] = $id;
$cnt = $cnt + 1;
}
echo $cnt . " Category record(s) imported!
";
} else {
echo "No Category records found!
";
}
// get entries for blog
echo "Importing Entry records ...
";
$sql = "SELECT DISTINCT evo_posts.* " .
"FROM evo_posts " .
"INNER JOIN evo_categories ON evo_posts.post_main_cat_ID = evo_categories.cat_ID " .
"WHERE evo_categories.cat_blog_ID = " . $b2_blog;
$result = mysql_query($sql,$resB2) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
if ($result) {
$cnt = 0;
$cntCom = 0;
$cntCat = 0;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
// author ID must be switched to new author ID
$aid = $arUser[$row['post_author']];
// category ID must be switched to new category ID
$cid = $arCat[$row['post_category']];
if (!$cid) {
$cid = '1';
}
// status mapping
$stat = $row['post_status'];
if ($stat == 'published') {
$stat = 'publish';
} else if ($stat == 'deprecated') {
$stat = 'publish';
} else if ($stat == 'protected') {
$stat = 'private';
} else if ($stat == 'private') {
$stat = 'private';
} else if ($stat == 'draft') {
$stat = 'draft';
}
// WordPress needs two timestamps: local and GMT (I wonder why...)
$local_date = $row['post_datecreated'];
$gmt_date_timestamp = strtotime($local_date);
$gmt_date = gmdate("Y-m-d G:i:s ", $gmt_date_timestamp);
$local_modified = $row['post_datemodified'];
$gmt_modified_timestamp = strtotime($local_modified);
$gmt_modified = gmdate("Y-m-d G:i:s ", $gmt_modified_timestamp);
// WordPress saves the comment count in each post record.
$sql = "SELECT COUNT(comment_ID) AS comment_count FROM `evo_comments` WHERE `comment_post_ID` = " . $row['post_ID'];
$comment_res = mysql_query($sql,$resB2) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
$comment_row = mysql_fetch_array($comment_res, MYSQL_ASSOC);
$comment_count = $comment_row['comment_count'];
// update urls in the post content
$post_content = $row['post_content'];
$post_content = str_replace($filepath_b2, $filepath_wp, $post_content);
$sql = trim(str_replace("\n","","INSERT INTO `". $wp_pref ."posts` ".
"(`post_author`,`post_content`,`post_title`,`post_category`,`post_status`,`post_date`,`post_date_gmt`,`post_modified`,`post_modified_gmt`,`comment_count`, `post_name`)" .
" VALUES ('".$aid."','".
mysql_escape_string($post_content)."','" .
mysql_escape_string($row['post_title'])."','".
$cid."','".
$stat."','".
$local_date."','".
$gmt_date."','".
$local_modified."','".
$gmt_modified."','".
$comment_count."','".
mysql_escape_string($row['post_urltitle'])."');"));
echo "$sql
";
$q = mysql_query($sql, $resWP) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
$id = mysql_insert_id($resWP);
$eid = $row['post_ID'];
$cnt = $cnt + 1;
// get comments for entry
$sql = "SELECT evo_comments. * , evo_users.user_nickname, evo_users.user_url, evo_users.user_email " .
"FROM evo_comments " .
"LEFT JOIN evo_users ON evo_comments.comment_author_ID = evo_users.user_ID " .
"WHERE evo_comments.comment_post_ID=" . $eid;
$res = mysql_query($sql, $resB2) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
if ($res) {
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
// if the commentor was a user of the blog, nickname, email and url can be fetched
// from user_nickname, user_email and user_site
$checked_author = $row['comment_author'];
$checked_url = $row['comment_author_url'];
$checked_email = $row['comment_author_email'];
if ($row['comment_author_ID'] != NULL) { // The author was a logged in user
$checked_author = $row['user_nickname'];
$checked_url = $row['user_url'];
$checked_email = $row['user_email'];
}
// Wordpress needs two timestamps: local and GMT (I wonder why...)
$local_time = $row['comment_date'];
$gm_timestamp = strtotime($local_time);
$gm_time = gmdate("Y-m-d G:i:s ", $gm_timestamp);
// We need to translate the b2evo comment types to WordPress comment types
// WordPress does not know linkback, so this script will map linkbacks to pingbacks
$comment_type = $row['comment_type'];
if ($comment_type == 'comment') {
$comment_type = '';
} else if ($comment_type == 'trackback') {
// No need to change it
} else if ($comment_type == 'linkback') {
$comment_type = 'pingback';
} else if ($comment_type == 'pingback') {
// No need to change it
} else { // This shouldn't happen.
echo "Unknown comment type '" . $comment_type . "'! Defaulting to normal comment";
$comment_type = '';
}
$sql = trim(str_replace("\n","","INSERT INTO `". $wp_pref ."comments` ".
"(`comment_post_ID`,`comment_author`,`comment_author_email`," .
"`comment_author_url`,`comment_author_IP`,`comment_date`," .
"`comment_date_gmt`,`comment_content`,`comment_karma`, `comment_type`)" .
" VALUES ('".$id."','" . mysql_escape_string($checked_author) . "','" . mysql_escape_string($checked_email) .
"','" . mysql_escape_string($checked_url) . "','" . $row['comment_author_IP'] . "','" . $local_time .
"','" . $gm_time . "','" . mysql_escape_string($row['comment_content'])."','". $row['comment_karma'] ."','" . $comment_type ."');"));
$q = mysql_query($sql, $resWP) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
$cntCom = $cntCom + 1;
}
}
// get categories for entry
$cntTmp = 0;
$sql = "SELECT * FROM evo_postcats WHERE postcat_post_ID=" . $eid;
$res = mysql_query($sql, $resB2) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
if ($res) {
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
$cid = $arCat[$row['postcat_cat_ID']];
$sql = trim(str_replace("\n","","INSERT INTO `". $wp_pref ."post2cat` ".
"(`post_id`,`category_id`)" .
" VALUES ('" . $id . "','" . $cid . "');"));
$q = mysql_query($sql, $resWP) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
$cntCat = $cntCat + 1;
$cntTmp = $cntTmp + 1;
}
}
if ($cntTmp == 0) {
// No categories defined in b2evo - put it in the default category
$sql = trim(str_replace("\n","","INSERT INTO `". $wp_pref ."post2cat` ".
"(`post_id`,`category_id`)" .
" VALUES ('" . $id . "','1');"));
$q = mysql_query($sql, $resWP) or die("Invalid query: " . mysql_error() . "
SQL : " . $sql);
$cntCat = $cntCat + 1;
}
}
echo $cnt . " Entry record(s) imported!
";
echo " " . $cntCom . "Comment record(s) imported!
";
echo " " . $cntCat . "Entry Category record(s) imported!
";
} else {
echo "No Entry records found!
";
}
mysql_close($resB2);
mysql_close($resWP);
echo "That's all folks!";
break;
}
?>