Last active
December 11, 2015 11:08
-
-
Save brokentwig/4591432 to your computer and use it in GitHub Desktop.
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 | |
/** | |
* Vanilla 2.0.18.1 Converter | |
* | |
* @since bbPress (rxxxx) | |
*/ | |
class Vanilla2 extends BBP_Converter_Base { | |
/** | |
* Main constructor | |
* | |
* @uses Vanilla2::setup_globals() | |
*/ | |
function __construct() { | |
parent::__construct(); | |
$this->setup_globals(); | |
} | |
/** | |
* Sets up the field mappings | |
*/ | |
public function setup_globals() { | |
/** Forum Section *****************************************************/ | |
// Forum id (This is a Category in Vanilla. Stored in Category table) | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'CategoryID', | |
'from_expression' => 'WHERE Category.CategoryID > 0', | |
'to_type' => 'forum', | |
'to_fieldname' => '_bbp_forum_id' | |
); | |
// Forum parent id (If no parent, 0. Stored in Category table) | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'ParentCategoryID', | |
'from_expression' => 'WHERE Category.CategoryID > 0', | |
'to_type' => 'forum', | |
'to_fieldname' => '_bbp_forum_parent_id', | |
'callback_method' => 'callback_forum_parent' | |
); | |
// Forum topic count (Stored in Category table) | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'CountDiscussions', | |
'to_type' => 'forum', | |
'to_fieldname' => '_bbp_topic_count' | |
); | |
// Forum reply count (Stored in Category table) | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'CountComments', | |
'to_type' => 'forum', | |
'to_fieldname' => '_bbp_reply_count' | |
); | |
// Forum topic count (Stored in Category table) | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'CountDiscussions', | |
'to_type' => 'forum', | |
'to_fieldname' => '_bbp_total_topic_count' | |
); | |
// Forum reply count (Stored in Category table) | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'CountComments', | |
'to_type' => 'forum', | |
'to_fieldname' => '_bbp_total_reply_count' | |
); | |
// Forum title. | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'Name', | |
'to_type' => 'forum', | |
'to_fieldname' => 'post_title' | |
); | |
// Forum slug (Clean name to avoid confilcts) | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'Name', | |
'to_type' => 'forum', | |
'to_fieldname' => 'post_name', | |
'callback_method' => 'callback_slug' | |
); | |
// Forum description. | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'Description', | |
'to_type' => 'forum', | |
'to_fieldname' => 'post_content', | |
'callback_method' => 'callback_null' | |
); | |
// Forum display order (Starts from 1) | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'Sort', | |
'to_type' => 'forum', | |
'to_fieldname' => 'menu_order' | |
); | |
// Forum dates. | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'DateInserted', | |
'to_type' => 'forum', | |
'to_fieldname' => 'post_date', | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'DateInserted', | |
'to_type' => 'forum', | |
'to_fieldname' => 'post_date_gmt', | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'DateUpdated', | |
'to_type' => 'forum', | |
'to_fieldname' => 'post_modified', | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Category', | |
'from_fieldname' => 'DateUpdated', | |
'to_type' => 'forum', | |
'to_fieldname' => 'post_modified_gmt', | |
); | |
/** Topic Section *****************************************************/ | |
// Topic id (Stored in Discussion table) | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'DiscussionID', | |
'to_type' => 'topic', | |
'to_fieldname' => '_bbp_topic_id' | |
); | |
// Reply count (Stored in Discussion table) | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'CountComments', | |
'to_type' => 'topic', | |
'to_fieldname' => '_bbp_reply_count', | |
'callback_method' => 'callback_topic_reply_count' | |
); | |
// Forum id (Stored in Discussion table) | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'CategoryID', | |
'to_type' => 'topic', | |
'to_fieldname' => '_bbp_forum_id', | |
'callback_method' => 'callback_forumid' | |
); | |
// Topic author. | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'InsertUserID', | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_author', | |
'callback_method' => 'callback_userid' | |
); | |
// Topic title. | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'Name', | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_title' | |
); | |
// Topic slug (Clean name to avoid conflicts) | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'Name', | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_name', | |
'callback_method' => 'callback_slug' | |
); | |
// Topic content. | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'Body', | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_content', | |
'callback_method' => 'callback_html' | |
); | |
// Topic status. | |
// Note: post_status is more accurate than topic_status | |
$this->field_map[] = array( | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_status', | |
'default' => "publish" | |
); | |
// Author ip. | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'InsertIPAddress', | |
'to_type' => 'topic', | |
'to_fieldname' => '_bbp_author_ip' | |
); | |
// Forum id (If no parent, 0) | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'CategoryID', | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_parent', | |
'callback_method' => 'callback_forumid' | |
); | |
// Topic dates. | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'DateInserted', | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_date' | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'DateInserted', | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_date_gmt' | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'DateUpdated', | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_modified' | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'DateUpdated', | |
'to_type' => 'topic', | |
'to_fieldname' => 'post_modified_gmt' | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'DateLastComment', | |
'to_type' => 'topic', | |
'to_fieldname' => '_bbp_last_active_time' | |
); | |
/** Tags Section ******************************************************/ | |
/* | |
// Topic id. | |
$this->field_map[] = array( | |
'from_tablename' => 'term_relationships', | |
'from_fieldname' => 'object_id', | |
'to_type' => 'tags', | |
'to_fieldname' => 'objectid', | |
'callback_method' => 'callback_topicid' | |
); | |
// Taxonomy ID. | |
$this->field_map[] = array( | |
'from_tablename' => 'term_taxonomy', | |
'from_fieldname' => 'term_taxonomy_id', | |
'join_tablename' => 'term_relationships', | |
'join_type' => 'INNER', | |
'join_expression' => 'USING (term_taxonomy_id)', | |
'to_type' => 'tags', | |
'to_fieldname' => 'taxonomy' | |
); | |
// Term text. | |
$this->field_map[] = array( | |
'from_tablename' => 'terms', | |
'from_fieldname' => 'name', | |
'join_tablename' => 'term_taxonomy', | |
'join_type' => 'INNER', | |
'join_expression' => 'USING (term_id)', | |
'to_type' => 'tags', | |
'to_fieldname' => 'name' | |
); | |
*/ | |
/** Reply Section *****************************************************/ | |
// Post id. Stores in postmeta. | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'CommentID', | |
'to_type' => 'reply', | |
'to_fieldname' => '_bbp_post_id' | |
); | |
// Topic id (Stores in postmeta) | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'DiscussionID', | |
'to_type' => 'reply', | |
'to_fieldname' => '_bbp_topic_id', | |
'callback_method' => 'callback_topicid' | |
); | |
// Forum id (Stored in postmeta) | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'CategoryID', | |
'join_tablename' => 'Comment', | |
'join_type' => 'INNER', | |
'join_expression' => 'USING (DiscussionID)', | |
'to_type' => 'reply', | |
'to_fieldname' => '_bbp_forum_id', | |
'callback_method' => 'callback_forumid' | |
); | |
// Topic title (for reply title). | |
$this->field_map[] = array( | |
'from_tablename' => 'Discussion', | |
'from_fieldname' => 'Name', | |
'join_tablename' => 'Comment', | |
'join_type' => 'INNER', | |
'join_expression' => 'USING (DiscussionID)', | |
'to_type' => 'reply', | |
'to_fieldname' => 'post_title', | |
'callback_method' => 'callback_reply_title' | |
); | |
// Author ip. | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'InsertIPAddress', | |
'to_type' => 'reply', | |
'to_fieldname' => '_bbp_author_ip' | |
); | |
// Reply author. | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'InsertUserID', | |
'to_type' => 'reply', | |
'to_fieldname' => 'post_author', | |
'callback_method' => 'callback_userid' | |
); | |
// Reply status | |
$this->field_map[] = array( | |
'to_type' => 'reply', | |
'to_fieldname' => 'post_status', | |
'default' => "publish" | |
); | |
// Reply content. | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'Body', | |
'to_type' => 'reply', | |
'to_fieldname' => 'post_content', | |
'callback_method' => 'callback_html' | |
); | |
// Reply order. | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'CommentID', | |
'to_type' => 'reply', | |
'to_fieldname' => 'menu_order' | |
); | |
// Topic id. If no parent, than 0. | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'DiscussionID', | |
'to_type' => 'reply', | |
'to_fieldname' => 'post_parent', | |
'callback_method' => 'callback_topicid' | |
); | |
// Reply dates. | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'DateInserted', | |
'to_type' => 'reply', | |
'to_fieldname' => 'post_date' | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'DateInserted', | |
'to_type' => 'reply', | |
'to_fieldname' => 'post_date_gmt' | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'DateUpdated', | |
'to_type' => 'reply', | |
'to_fieldname' => 'post_modified' | |
); | |
$this->field_map[] = array( | |
'from_tablename' => 'Comment', | |
'from_fieldname' => 'DateUpdated', | |
'to_type' => 'reply', | |
'to_fieldname' => 'post_modified_gmt' | |
); | |
/** User Section ******************************************************/ | |
// Store old User id. Stores in usermeta. | |
// Don't convert users in "Confirm" status (RoleID != 3). | |
// This could be an option on the admin page | |
$this->field_map[] = array( | |
'from_tablename' => 'User', | |
'from_fieldname' => 'UserID', | |
'from_expression' => 'WHERE User.Deleted = 0', | |
'to_type' => 'user', | |
'to_fieldname' => '_bbp_user_id' | |
); | |
// Store old User password. Stores in usermeta. | |
$this->field_map[] = array( | |
'from_tablename' => 'User', | |
'from_fieldname' => 'Password', | |
'to_type' => 'user', | |
'to_fieldname' => '_bbp_password' | |
// -------------- Need special call back?? --------------// | |
); | |
// User name. | |
$this->field_map[] = array( | |
'from_tablename' => 'User', | |
'from_fieldname' => 'Name', | |
'to_type' => 'user', | |
'to_fieldname' => 'user_login' | |
); | |
// User nice name. | |
$this->field_map[] = array( | |
'from_tablename' => 'User', | |
'from_fieldname' => 'Name', | |
'to_type' => 'user', | |
'to_fieldname' => 'user_nicename' | |
); | |
// User email. | |
$this->field_map[] = array( | |
'from_tablename' => 'User', | |
'from_fieldname' => 'Email', | |
'to_type' => 'user', | |
'to_fieldname' => 'user_email' | |
); | |
/* | |
No data in Vanilla | |
// User homepage. | |
$this->field_map[] = array( | |
'from_tablename' => 'users', | |
'from_fieldname' => 'user_url', | |
'to_type' => 'user', | |
'to_fieldname' => 'user_url' | |
); | |
*/ | |
// User registered. | |
$this->field_map[] = array( | |
'from_tablename' => 'User', | |
'from_fieldname' => 'DateInserted', | |
'to_type' => 'user', | |
'to_fieldname' => 'user_registered' | |
); | |
/* | |
// User status. | |
$this->field_map[] = array( | |
'from_tablename' => 'users', | |
'from_fieldname' => 'user_status', | |
'to_type' => 'user', | |
'to_fieldname' => 'user_status' | |
); | |
*/ | |
// Display Name | |
$this->field_map[] = array( | |
'from_tablename' => 'User', | |
'from_fieldname' => 'Name', | |
'to_type' => 'user', | |
'to_fieldname' => 'display_name' | |
); | |
} | |
/** | |
* This method allows us to indicates what is or is not converted for each | |
* converter. | |
*/ | |
public function info() { | |
return ''; | |
} | |
/** | |
* Everything in Vanilla is Published, just return that | |
* | |
* @param int $status bbPress 1.x numeric status | |
* @return string WordPress safe | |
*/ | |
public function callback_status( $status = 0 ) { | |
$status = 'publish'; | |
return $status; | |
} | |
/** | |
* Clean Root Parent ID | |
* | |
* @param int $parent Vanilla 2 Parent ID | |
* @return int | |
*/ | |
public function callback_forum_parent( $parent = 0 ) { | |
if ($parent == -1) { | |
return 0; | |
} else { | |
return $parent; | |
} | |
} | |
/** | |
* Verify the topic reply count. | |
* | |
* @param int $count bbPress 1.x reply count | |
* @return string WordPress safe | |
*/ | |
public function callback_topic_reply_count( $count = 1 ) { | |
$count = absint( (int) $count - 1 ); | |
return $count; | |
} | |
/** | |
* Set the reply title | |
* | |
* @param string $title bbPress 1.x topic title of this reply | |
* @return string Prefixed topic title, or empty string | |
*/ | |
public function callback_reply_title( $title = '' ) { | |
$title = !empty( $title ) ? __( 'Re: ', 'bbpress' ) . html_entity_decode( $title ) : ''; | |
return $title; | |
} | |
/** | |
* This method is to save the salt and password together. That | |
* way when we authenticate it we can get it out of the database | |
* as one value. Array values are auto sanitized by wordpress. | |
*/ | |
public function callback_savepass( $field, $row ) { | |
return false; | |
} | |
/** | |
* This method is to take the pass out of the database and compare | |
* to a pass the user has typed in. | |
*/ | |
public function authenticate_pass( $password, $serialized_pass ) { | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
See http://bbpress.trac.wordpress.org/ticket/2179 for latest updates
See http://codex.bbpress.org/import-forums/vanilla/ for codex docs