Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
<?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;
}
}
@ntwb

This comment has been minimized.

Copy link

@ntwb ntwb commented Jan 26, 2013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.