Created
April 5, 2012 12:50
-
-
Save jeremyclark13/2310839 to your computer and use it in GitHub Desktop.
Simple:Press forum to bbPress forum convertor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: Simple Press to bbPress | |
Plugin URI: http://www.4-14.org.uk/ | |
Description: Import Simple Press forums to bbPress | |
Author: Mark Barnes | |
Version: 0.1 | |
Author URI: http://www.4-14.org.uk/ | |
*/ | |
if (isset($_GET['bbpressimport'])) | |
add_action ('init', 'mbbb_init'); | |
function mbbb_init () { | |
global $wpdb; | |
define('WP_IMPORTING', true); | |
//Delete existing posts | |
if (isset($_GET['delete'])) { | |
$post_ids = $wpdb->get_results("SELECT ID from {$wpdb->posts} WHERE post_type IN ('forum', 'reply', 'topic')"); | |
if ($post_ids) | |
foreach ($post_ids as $post_id) | |
wp_delete_post ($post_id->ID, true); | |
} | |
// Import forums | |
$forum_map = array(); | |
$sp_forums = $wpdb->get_results("SELECT forum_desc, forum_name, forum_slug, forum_seq, forum_id FROM {$wpdb->prefix}sfforums ORDER BY forum_seq"); | |
if ($sp_forums) { | |
foreach ($sp_forums as $sp_forum) { | |
$post_id = $wpdb->get_var ("SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_value='forum_{$sp_forum->forum_id}' AND meta_key='_mbbb_sp_id'"); | |
if (!$post_id) { | |
$inserted_forum = wp_insert_post( array( | |
'post_author' => get_current_user_id(), | |
'post_content' => $sp_forum->forum_desc, | |
'post_title' => $sp_forum->forum_name, | |
'post_excerpt' => '', | |
'post_status' => 'publish', | |
'comment_status' => 'closed', | |
'ping_status' => 'closed', | |
'post_name' => $sp_forum->forum_slug, | |
'post_parent' => 0, | |
'post_type' => bbp_get_forum_post_type(), | |
'menu_order' => $sp_forum->forum_seq | |
) ); | |
if ($inserted_forum) { | |
echo "Added {$sp_forum->forum_name}<br/>\n"; | |
update_post_meta( $inserted_forum, '_mbbb_sp_id', "forum_{$sp_forum->forum_id}" ); | |
} else | |
echo "Failed to add {$sp_forum->forum_name}<br/>\n"; | |
} else | |
$inserted_forum = $post_id; | |
$forum_map[$sp_forum->forum_id] = $inserted_forum; | |
} | |
} | |
// Import topics | |
$topic_count = 0; | |
$sp_topics = $wpdb->get_results ("SELECT forum_id, user_id, topic_name, topic_slug, topic_date, topic_id FROM {$wpdb->prefix}sftopics ORDER BY topic_date ASC"); | |
if ($sp_topics) { | |
foreach ($sp_topics as $sp_topic) { | |
$post_id = $wpdb->get_var ("SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_value='topic_{$sp_topic->topic_id}' AND meta_key='_mbbb_sp_id'"); | |
$sp_posts = $wpdb->get_results ("SELECT topic_id, user_id, post_date, post_content, poster_ip, post_id from {$wpdb->prefix}sfposts WHERE topic_id = '{$sp_topic->topic_id}' ORDER BY post_date ASC"); | |
if (isset($forum_map[$sp_topic->forum_id]) && $sp_posts) { | |
if (!$post_id) { | |
$inserted_topic = wp_insert_post( array( | |
'post_parent' => $forum_map[$sp_topic->forum_id], | |
'post_author' => $sp_posts[0]->user_id, | |
'post_content' => $sp_posts[0]->post_content, | |
'post_title' => $sp_topic->topic_name, | |
'post_name' => $sp_topic->topic_slug, | |
'post_status' => 'publish', | |
'post_date_gmt' => $sp_topic->topic_date, | |
'post_date' => get_date_from_gmt( $sp_topic->topic_date ), | |
'post_type' => bbp_get_topic_post_type(), | |
) ); | |
if ($inserted_topic) { | |
echo "Added {$sp_topic->topic_name}<br/>\n"; | |
update_post_meta( $inserted_topic, '_bbp_forum_id', $forum_map[$sp_topic->forum_id] ); | |
update_post_meta( $inserted_topic, '_bbp_topic_id', $inserted_topic ); | |
update_post_meta( $inserted_topic, '_mbbb_sp_id', "topic_{$sp_topic->topic_id}" ); | |
} else | |
echo "Failed to add {$sp_forum->topic_name}<br/>\n"; | |
} else | |
$inserted_topic = $post_id; | |
} | |
//Import posts | |
$post_count = 0; | |
if ($sp_posts) { | |
foreach ($sp_posts as $sp_post) { | |
$post_id = $wpdb->get_var ("SELECT post_id FROM {$wpdb->prefix}postmeta WHERE meta_value='post_{$sp_post->post_id}' AND meta_key='_mbbb_sp_id'"); | |
if (!$post_id) { | |
if ($post_count != 0) { | |
$inserted_post = wp_insert_post( array( | |
'post_parent' => $inserted_topic, | |
'post_author' => $sp_post->user_id, | |
'post_date_gmt' => $sp_post->post_date, | |
'post_date' => get_date_from_gmt( $sp_post->post_date ), | |
'post_title' => 'Reply To: '.$sp_topic->topic_name, | |
'post_status' => 'publish', | |
'post_type' => bbp_get_reply_post_type(), | |
'post_content' => $sp_post->post_content | |
) ); | |
if ($inserted_post) { | |
update_post_meta( $inserted_post, '_bbp_author_ip', $sp_post->poster_ip ); | |
update_post_meta( $inserted_post, '_bbp_forum_id', $forum_map[$sp_topic->forum_id] ); | |
update_post_meta( $inserted_post, '_bbp_topic_id', $inserted_topic ); | |
update_post_meta( $inserted_post, '_mbbb_sp_id', "post_{$sp_post->post_id}" ); | |
bbp_update_reply_walker( $inserted_post ); | |
} | |
} | |
else | |
update_post_meta( $inserted_topic, '_bbp_author_ip', $sp_post->poster_ip ); | |
} else | |
$inserted_post = $post_id; | |
$post_count ++; | |
} | |
} | |
update_post_meta( $inserted_topic, '_bbp_last_reply_id', $inserted_post ); | |
update_post_meta( $inserted_topic, '_bbp_last_active_id', $inserted_post ? $inserted_post : $inserted_topic ); | |
update_post_meta( $inserted_topic, '_bbp_last_active_time', $inserted_post ? $sp_post->post_date : $sp_topic->topic_date ); | |
update_post_meta( $inserted_topic, '_bbp_reply_count', $post_count -1 ); | |
update_post_meta( $inserted_topic, '_bbp_hidden_reply_count', 0 ); | |
bbp_update_topic_walker( $inserted_topic ); | |
$topic_count ++; | |
} | |
} | |
global $wp_rewrite; | |
$wp_rewrite->flush_rules(false); | |
}?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment