Skip to content

Instantly share code, notes, and snippets.

@jeremyclark13
Created April 5, 2012 12:50
Show Gist options
  • Save jeremyclark13/2310839 to your computer and use it in GitHub Desktop.
Save jeremyclark13/2310839 to your computer and use it in GitHub Desktop.
Simple:Press forum to bbPress forum convertor
<?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