Skip to:
Content
Pages
Categories
Search
Top
Bottom

Search Results for 'register'

Viewing 25 results - 476 through 500 (of 4,248 total)
  • Author
    Search Results
  • #200003

    When a user registers and registrations are moderated, the moderating admin(s) are sent an email with this content:

    [username] ( [user]@gmail.com ) would like to become a member of your website. To accept or reject their request, please go to Member Requests

    How can I change/edit the addresses to which this email is sent?

    #199828
    atcreat
    Participant

    I created a site using buddypress. The shortcodes like [bbp-login], [bbp-register], [bbp-lost-pass] not working. It just shows the shortcode. I tested it with the theme Twenty Seventeen and NO other plugin installed. WordPress 5.1.1, PHP 7.3 (tested also with 5.6 and 7.2), and Buddypress 4.2.0.
    You can see it here: https://bbpress.at-creation.ch/login/
    Thanks for your help.

    #199321
    kidbooo
    Participant

    Hello everyone,,
    I admit I am a “newbie” and am having a bundle of problems. I am in the process of building a website which is still offline, and am very stuck. I am using ocean wp and I don’t know how to find out the version, but everything is new in the last 2 weeks.. sorry I really am a newbie…
    I am making “TheAmericanQuarterHorse.com” and wanted to make a small forum page alongside of information pages, I had to do a whole pile of deleting and rebuilding on the forum site, but now I have the basic structure!! So that is a plus, but am stuck on the login–register-lost password widget. The first time I made it, it put the menu all over the place and the login was on every page. Iwas using bbpress tweaks, so uninstalled the bbpress tweaks, and ended up re-installing. I watched a whole pile of youtube on how to do it, and went back at it. I did all the “making the page” and putting the permalinks in the widget slot in the bbpress side bar. This time I had logins on every page BUT THE FORUM PAGE!!! This is the 3rd time I have deleted everything and started over.. I am about to forget the whole thing or use a different forum widget. I am STUCK. Any ideas??
    The other thing is the text is sooo thin and tiny on the forum page it is hard to see. I have heard something about css, but have no clue about what that is or how to use it..
    Would really appreciate any ideas..
    thanks

    #199314
    glfoster
    Participant

    Hello,

    I’m looking for a way to denied the ‘Participant’ user role the access to the dashboard /wp-admin

    I’ve looked all over google and I haven’t found a complete solution. Can someone help me by pointing me into the right direction.

    I’ve used user role plugins and they aren’t registering the user roles.

    Thank you in advance

    #199200
    reedy
    Participant

    Can someone remind me how to edit/customize the new user email that is sent to members when they register for the forum? I know this is editable because I have customized the welcome email but I can not remember how I did this (I didn’t use a plugin — that much I think I recall!).

    Robin W
    Moderator

    1. install

    Private groups

    set up a group, then activate topic permissions, and set the forum topic permissions to create/edit replies

    2. not sure how this is different from users being registered

    #199043
    rngeer
    Participant

    Managed to sort this out myself. We are using BuddyPress Registration Options plugin and I missed the check box: Only registered or approved members can view BuddyPress/bbPress pages (Private Network).

    I need a drink ha…

    w3215
    Participant

    Thanks. Ok–sounds like I will need something like Ultimate Member so people can register without any wordpress account.

    w3215
    Participant

    Hi. On the issue of whether bbpress registration goes through WordPress registration–it appears that it does.

    I put the bbpress registration page on my test site, and tried to create a new user. It took me to a WordPress page that said email not recognized. I believe what was happening was that in order to register for bbpress, I had to be a wordpress user, and I was taken to the wordpress page when wordpress could not find the email address.

    So, based on this, indeed it does seem like in order to use bbpress users have to have WordPress accounts. This is what I do not want. Users should never be taken to a wordpress page to check if they are wordpress users.

    Rather, users should be able to register directly on the site without having to have wordpress accounts.

    Does anyone have a good way around this?

    I am assuming the only way is through a front end registration plugin like Ultimate Member, but I would be happy if there was another way.

    Robin W
    Moderator

    1. I’m just a user who helps out on the forums, you’ll need to judge for yourself if this will work capacity wise, but bbpress supports the wordpress forums which are huge.

    2. you have to enable nothing – I can only suggest that you set up a wordpress site with just forums, and you’ll soon realise that your iste doens;t neeed to look wordpressy and that users can just register on that site fro the forums using the forum registration (which is just a front end for WordPress site registration. You don’t need to use any other plugins to get bbpress working.

    3. Many people have a ‘just forum’ site, it is more common to have a forum as part of a site, but by no means necessary.

    w3215
    Participant

    Thanks, but I think my situation is still slightly different than you have in mind, and maybe the difference is instructive. (or maybe I am not understanding what you mean.)

    Let’s say I want to build a question and answer site, like stackoverflow or these discourse sites: https://discuss.atom.io/ or https://meta.discourse.org/. The question/answer piece (the forum piece) is THE site. It is not an add-on to a blog. It is an online tool like those sites are.

    I understand that the common use case for bbpress is to be a modest forum that supplements an existing wordpress blog or wordpress advertising site. This is not what I have in mind. I am interested in seeing if bbpress can be used to build a web tool that would have its own (potentially large and active) user base.

    I have considered other options out there–coding from scratch, discourse itself, NodeBB–but I have not seen anything as developed and creator friendly out of the box as bbpress. So I thought I’d give it a spin. For this to work, a few things have to be true:

    1) Can BBPress handle many thousands of users and many many thousands of topics (or more)? It seems like the answer is yes, given there are forums out there with a lot of users/topics that seem ok. But a common reply here is “wait for version 2.6”–and version 2.6 has been 4 years+ in the making(!) So this brings up the question of whether BBPress is being maintained. (I asked that here: https://bbpress.org/forums/topic/is-bbpress-being-maintained/). And whether bbpress can be performant at scale.

    2) What do I have to do to enable anyone in the world to register for the bbpress-focused site? To use stackoverflow, you don’t need to be a wordpress user; same with those discourse sites. To run bbpress at all, I understand I have to have an underlying wordpress site. But I was hoping to use bbpress’ registration so people could sign up for the forum–and they would not even know wordpress was being used under the hood.

    From what you are saying, sounds like this is not possible out of the box? Do I have to use a wordpress front end registration plugin like Ultimate Member and have that coordinate with bbpress, so that a user’s registration page–generated by ultimate member or some other like plugin–shows their posts and replies (just like your registration page at stackoverflow)?

    3) I understand what I have in mind is not the common use case for bbpress–but based on what I am seeing, bbpress should be up to the job. Is there something I am missing–some reason you would not want to use bbpress to power a question and answer web app?

    Thank you very much for your info.

    Robin W
    Moderator

    ‘users register directly on the site without need to have an underlying account somewhere else’

    If you install bbpress on a wordpress site, then anyone who registers with that site will be a bbpress user. They can then use the forum. They don’t need to be registered ‘somewhere else’ – just on your site.

    You can also allow anonymous posting (but it does tend to get you spammed a lot!)

    w3215
    Participant

    Thank you for your reply.

    Here is the issue: I am considering using bbpress as an important part of a site that anyone can use. Imagine it like stackoverflow, discussion sites run by discourse, or practically any web app–users register directly on the site without need to have an underlying account somewhere else. It seems to me that if someone wanted to build a site like these–entirely separate from a wordpress blog– bbpress would be a good place to start. (Please let me know if you disagree.)

    So I will require a way for anyone who wants to use my site–wordpress user or not–to register and use the site. One of the great things about bbpress is that out of the box it covers so much and it has been around long enough to be thoroughly tested; so I had hoped I could just use bbpress’s registration, without having to configure a separate registration process.

    In particular, I like how bbpress generates a user profile page that summarizes a user’s activity in a simple way.

    Is there a way to allow non-wordpress users to register, while still utilizing bbpress’s tools like its user profile page? Maybe a bbpress plugin?

    I know there are general wordpress plugins that allow registration on the front end by non-wordpress users, like Ultimate Member. I am not familiar with how those could work with bbpress.

    Thanks!

    w3215
    Participant

    Using bbpress registration for my forum, can anyone–including people without any wordpress account–register?

    I would assume so and hope so, but I saw that this bbpress-powered forum requires a wordpress account for registration.

    #198356
    hthornhillhww
    Participant

    Hi,

    I have created a custom notification for my site when a post is published, the code used to do this is :-

    // this is to add a fake component to BuddyPress. A registered component is needed to add notifications
    function custom_filter_notifications_get_registered_components( $component_names = array() ) {
        // Force $component_names to be an array
        if ( ! is_array( $component_names ) ) {
            $component_names = array();
        }
        // Add 'custom' component to registered components array
        array_push( $component_names, 'publishpost' );
        // Return component's with 'custom' appended
        return $component_names;
    }
    add_filter( 'bp_notifications_get_registered_components', 'custom_filter_notifications_get_registered_components' );
    
    // this hooks to post creation and saves the post id
    function bp_custom_add_notification( $post_id, $post ) {
            $post = get_post( $post_id );
            $author_id = $post->post_author;
    		
    		$blogusers = get_users( array( 'role' => 'staff' ) );
    		// Array of WP_User objects.
    		foreach ( $blogusers as $user ) {
    			bp_notifications_add_notification( array(
                'user_id'           => $user->id,
                'item_id'           => $post_id,
                'component_name'    => 'publishpost',
                'component_action'  => 'publishpost_action',
                'date_notified'     => bp_core_current_time(),
                'is_new'            => 1,
            ) );   
    		}        
    }
    add_action( 'publish_post', 'bp_custom_add_notification', 99, 2 );
    
    /**
     * Format the BuddyBar/Toolbar notifications
     *
     * @since bbPress (r5155)
     *
     * @package bbPress
     *
     * @param string $action The kind of notification being rendered
     * @param int $item_id The primary item id
     * @param int $secondary_item_id The secondary item id
     * @param int $total_items The total number of messaging-related notifications waiting for the user
     * @param string $format 'string' for BuddyBar-compatible notifications; 'array' for WP Toolbar
     */
    function custom_format_buddypress_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) 
    {
    // New custom notifications
        if ( 'publishpost_action' === $action ) {
    
            $post = get_post( $item_id );
    		$author_name = get_the_author_meta('display_name', $post->post_author);
            $custom_title = bp_core_get_user_displayname( $post->post_author ) . ' published a new post "' . get_the_title( $item_id ) . '"';
            $custom_link  = get_permalink( $post );
            $custom_text = bp_core_get_user_displayname( $post->post_author ) . ' published a new post "' . get_the_title( $item_id ) . '"';
            // WordPress Toolbar
            if ( 'string' === $format ) {
                $return = apply_filters( 'publishpost_filter', '<a href="' . esc_url( $custom_link ) . '" title="' . esc_attr( $custom_title ) . '">' . esc_html( $custom_text ) . '</a>', $custom_text, $custom_link );
            // Deprecated BuddyBar
            } else {
                $return = apply_filters( 'publishpost_filter', array(
                    'text' => $custom_text,
                    'link' => $custom_link
                ), $custom_link, (int) $total_items, $custom_text, $custom_title );
            }
    
            return $return;
    
        } 
    	
    	if ( 'bbp_new_reply' === $action ) {
    		$topic_id    = bbp_get_reply_topic_id( $item_id );
    		$topic_title = bbp_get_topic_title( $topic_id );
    		$topic_link  = wp_nonce_url( add_query_arg( array( 'action' => 'bbp_mark_read', 'topic_id' => $topic_id ), bbp_get_reply_url( $item_id ) ), 'bbp_mark_topic_' . $topic_id );
    		$title_attr  = __( 'Topic Replies', 'bbpress' );
    
    		if ( (int) $total_items > 1 ) {
    			$text   = sprintf( __( 'You have %d new replies', 'bbpress' ), (int) $total_items );
    			$filter = 'bbp_multiple_new_subscription_notification';
    		} else {
    			if ( !empty( $secondary_item_id ) ) {
    				$text = sprintf( __( 'You have %d new reply to %2$s from %3$s', 'bbpress' ), (int) $total_items, $topic_title, bp_core_get_user_displayname( $secondary_item_id ) );
    			} else {
    				$text = sprintf( __( 'You have %d new reply to %s',             'bbpress' ), (int) $total_items, $topic_title );
    			}
    			$filter = 'bbp_single_new_subscription_notification';
    		}
    
    		// WordPress Toolbar
    		if ( 'string' === $format ) {
    			$return = apply_filters( $filter, '<a href="' . esc_url( $topic_link ) . '" title="' . esc_attr( $title_attr ) . '">' . esc_html( $text ) . '</a>', (int) $total_items, $text, $topic_link );
    
    		// Deprecated BuddyBar
    		} else {
    			$return = apply_filters( $filter, array(
    				'text' => $text,
    				'link' => $topic_link
    			), $topic_link, (int) $total_items, $text, $topic_title );
    		}
    
    		do_action( 'bbp_format_buddypress_notifications', $action, $item_id, $secondary_item_id, $total_items );
    
    		return $return;
    	}
    }
    add_filter( 'bp_notifications_get_notifications_for_user', 'custom_format_buddypress_notifications', 1, 5 );

    How can i create the same for a new bbpress topic? i’m thinking i need to change this code section but not sure how

    // this hooks to post creation and saves the post id
    function bp_custom_add_notification( $post_id, $post ) {
            $post = get_post( $post_id );
            $author_id = $post->post_author;
    		
    		$blogusers = get_users( array( 'role' => 'staff' ) );
    		// Array of WP_User objects.
    		foreach ( $blogusers as $user ) {
    			bp_notifications_add_notification( array(
                'user_id'           => $user->id,
                'item_id'           => $post_id,
                'component_name'    => 'publishpost',
                'component_action'  => 'publishpost_action',
                'date_notified'     => bp_core_current_time(),
                'is_new'            => 1,
            ) );   
    		}        
    }
    add_action( 'publish_post', 'bp_custom_add_notification', 99, 2 );

    I am using woffice as the theme, bbpress version 2.5.14, buddypress version 4.1.0 and the latest version of wordpress

    Thanks

    #198316
    hthornhillhww
    Participant

    Hi,

    I have created a custom notification for my site when a post is published, if i have buddypress activated alone i see the notification text but as soon as i activate bbpress i can no longer see the notification description. In order to work out this was happening when bbpress was activated i created a whole new blank install of wpress and only installed the two plugins and when i deactivated bbpress it showed the text.

    this is how the notification shows when bbpress is activated
    https://www.dropbox.com/s/uepps9cjcd8xan5/With%20BbPress%20no%20text.PNG?dl=0

    this is how the notification shows when bbpress is NOT activated
    https://www.dropbox.com/s/03wch6bc27nsked/Without%20BbPress%20showing%20text.PNG?dl=0

    I am using Twenty seventeen as the theme, bbpress version 2.5.14, buddypress version 4.1.0 and the latest version of wordpress

    The code i have used to generate the notification is below, and this is located in \wp-content\plugins\bp-custom.php

    <?php
    // this is to add a fake component to BuddyPress. A registered component is needed to add notifications
    function custom_filter_notifications_get_registered_components( $component_names = array() ) {
        // Force $component_names to be an array
        if ( ! is_array( $component_names ) ) {
            $component_names = array();
        }
        // Add 'custom' component to registered components array
        array_push( $component_names, 'publishpost' );
        // Return component's with 'custom' appended
        return $component_names;
    }
    add_filter( 'bp_notifications_get_registered_components', 'custom_filter_notifications_get_registered_components' );
    
    // this hooks to post creation and saves the post id
    function bp_custom_add_notification( $post_id, $post ) {
            $post = get_post( $post_id );
            $author_id = $post->post_author;
            bp_notifications_add_notification( array(
                'user_id'           => $author_id,
                'item_id'           => $post_id,
                'component_name'    => 'publishpost',
                'component_action'  => 'publishpost_action',
                'date_notified'     => bp_core_current_time(),
                'is_new'            => 1,
            ) );   
    }
    add_action( 'publish_post', 'bp_custom_add_notification', 99, 2 );
    
    function custom_format_buddypress_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) 
    {
    // New custom notifications
        if ( 'publishpost_action' === $action ) {
    
            $post = get_post( $item_id );
    
            $custom_title = $post->post_author . ' published a new post ' . get_the_title( $item_id );
            $custom_link  = get_permalink( $post );
            $custom_text = $post->post_author . ' published a new post ' . get_the_title( $item_id );
            // WordPress Toolbar
            if ( 'string' === $format ) {
                $return = apply_filters( 'publishpost_filter', '<a href="' . esc_url( $custom_link ) . '" title="' . esc_attr( $custom_title ) . '">' . esc_html( $custom_text ) . '</a>', $custom_text, $custom_link );
            // Deprecated BuddyBar
            } else {
                $return = apply_filters( 'publishpost_filter', array(
                    'text' => $custom_text,
                    'link' => $custom_link
                ), $custom_link, (int) $total_items, $custom_text, $custom_title );
            }
    
            return $return;
    
        }
    }
    add_filter( 'bp_notifications_get_notifications_for_user', 'custom_format_buddypress_notifications', 10, 5 );

    I need to get it so that when bbpress is activated i can see the custom notification description as we use bbpress for our forums

    #198301
    kilerb
    Participant

    Also, I know this isn’t part of BBPress or anything… But for the 2 users that tried to register and never got their link because of the first problem, do you happen to know if there’s a way to send it to them again? Didn’t see the option when I click on their username in the dashboard. Thanks.

    #198296
    Robin W
    Moderator

    Whether you register via wordpress or bbpress the password email comes from

    wordpress@mysite.com

    see this article for further help

    https://www.wpbeginner.com/plugins/how-to-change-sender-name-in-outgoing-wordpress-email/

    #198278
    kilerb
    Participant

    Hi, I just started a new website and forum board. Mine does not send new users a link to set their password, but strangely enough, I did go to wp-admin and register a new user there and that did send an email. Went to spam, but it was there. When a new user registers through the bbpress widget, it send me their email and username, but they never get an email. When I successfully got the email for registering on the wp site at /wp-admin, it came from “wordpress@mysite.com” which I never set up. Under general settings I just have my personal email being used, but the reg. email came from wordpress@mysite.com. Any idea why it’s not sending out an email to new users when they register through bb.com but it does when they register at /wp-admin? Everything was just installed today, so plugins and wordpress are all up to date. Thanks!

    #198040
    Luisgasser
    Participant

    Hi,

    iv i try to register a new forum user i got an error message – “at the moment you can’t register”

    Any idea what do do?

    Thank you for helping!

    #197934

    In reply to: Import Hung?

    budget101
    Participant

    The order should be (I think):

    Users
    Forums
    Topics
    Tags
    Replies

    Agreed, this is necessary for large imports, I initially had a database of 110K+ users and 2.2 million posts/topics, which after 13 days of importing I decided to prune before attempting again.

    In theory, you could rearrange these yourself by altering the wp-content>plugins>bbpress>includes>admin>converter.php file and changing the order of the steps. I actually thing the tags are the least important step for my site & the one that caused the most headache/issues while importing, so I made that step the LAST step.

    <?php
    
    /**
     * bbPress Converter
     *
     * Based on the hard work of Adam Ellis at http://bbconverter.com
     *
     * @package bbPress
     * @subpackage Administration
     */
    
    // Exit if accessed directly
    if ( !defined( 'ABSPATH' ) ) exit;
    
    /**
     * Main BBP_Converter Class
     */
    class BBP_Converter {
    
    	/**
    	 * The main bbPress Converter loader
    	 *
    	 * @since bbPress (r3813)
    	 * @uses BBP_Converter::includes() Include the required files
    	 * @uses BBP_Converter::setup_actions() Setup the actions
    	 */
    	public function __construct() {
    
    		// "I wonder where I'll float next."
    		if ( empty( $_SERVER['REQUEST_METHOD'] ) )
    			return;
    
    		// Bail if request is not correct
    		switch ( strtoupper( $_SERVER['REQUEST_METHOD'] ) ) {
    
    			// Converter is converting
    			case 'POST' :
    				if ( ( empty( $_POST['action'] ) || ( 'bbconverter_process' !=  $_POST['action'] ) ) )
    					return;
    
    				break;
    
    			// Some other admin page
    			case 'GET'  :
    				if ( ( empty( $_GET['page'] ) || ( 'bbp-converter' !=  $_GET['page'] ) ) )
    					return;
    
    				break;
    		}
    
    		// Proceed with the actions
    		$this->setup_actions();
    	}
    
    	/**
    	 * Setup the default actions
    	 *
    	 * @since bbPress (r3813)
    	 * @uses add_action() To add various actions
    	 */
    	private function setup_actions() {
    
    		// Attach to the admin head with our ajax requests cycle and css
    		add_action( 'bbp_admin_head',              array( $this, 'admin_head'              ) );
    
    		// Attach the bbConverter admin settings action to the WordPress admin init action.
    		add_action( 'bbp_register_admin_settings', array( $this, 'register_admin_settings' ) );
    
    		// Attach to the admin ajax request to process cycles
    		add_action( 'wp_ajax_bbconverter_process', array( $this, 'process_callback'        ) );
    	}
    
    	/**
    	 * Register the settings
    	 *
    	 * @since bbPress (r3813)
    	 * @uses add_settings_section() To add our own settings section
    	 * @uses add_settings_field() To add various settings fields
    	 * @uses register_setting() To register various settings
    	 */
    	public function register_admin_settings() {
    
    		// Add the main section
    		add_settings_section( 'bbpress_converter_main',     __( 'Database Settings', 'bbpress' ),  'bbp_converter_setting_callback_main_section', 'bbpress_converter' );
    
    		// System Select
    		add_settings_field( '_bbp_converter_platform',      __( 'Select Platform',   'bbpress' ),  'bbp_converter_setting_callback_platform', 'bbpress_converter', 'bbpress_converter_main' );
    		register_setting  ( 'bbpress_converter_main',       '_bbp_converter_platform',           'sanitize_title' );
    
    		// Database Server
    		add_settings_field( '_bbp_converter_db_server',     __( 'Database Server',   'bbpress' ),  'bbp_converter_setting_callback_dbserver', 'bbpress_converter', 'bbpress_converter_main' );
    		register_setting  ( 'bbpress_converter_main',       '_bbp_converter_db_server',          'sanitize_title' );
    
    		// Database Server Port
    		add_settings_field( '_bbp_converter_db_port',       __( 'Database Port',     'bbpress' ),  'bbp_converter_setting_callback_dbport', 'bbpress_converter', 'bbpress_converter_main' );
    		register_setting  ( 'bbpress_converter_main',       '_bbp_converter_db_port',            'sanitize_title' );
    
    		// Database Name
    		add_settings_field( '_bbp_converter_db_name',       __( 'Database Name',     'bbpress' ),  'bbp_converter_setting_callback_dbname', 'bbpress_converter', 'bbpress_converter_main' );
    		register_setting  ( 'bbpress_converter_main',       '_bbp_converter_db_name',            'sanitize_title' );
    
    		// Database User
    		add_settings_field( '_bbp_converter_db_user',       __( 'Database User',     'bbpress' ),  'bbp_converter_setting_callback_dbuser', 'bbpress_converter', 'bbpress_converter_main' );
    		register_setting  ( 'bbpress_converter_main',       '_bbp_converter_db_user',            'sanitize_title' );
    
    		// Database Pass
    		add_settings_field( '_bbp_converter_db_pass',       __( 'Database Password', 'bbpress' ),  'bbp_converter_setting_callback_dbpass', 'bbpress_converter', 'bbpress_converter_main' );
    		register_setting  ( 'bbpress_converter_main',       '_bbp_converter_db_pass',            'sanitize_title' );
    
    		// Database Prefix
    		add_settings_field( '_bbp_converter_db_prefix',     __( 'Table Prefix',      'bbpress' ),  'bbp_converter_setting_callback_dbprefix', 'bbpress_converter', 'bbpress_converter_main' );
    		register_setting  ( 'bbpress_converter_main',       '_bbp_converter_db_prefix',          'sanitize_title' );
    
    		// Add the options section
    		add_settings_section( 'bbpress_converter_opt',      __( 'Options',           'bbpress' ),  'bbp_converter_setting_callback_options_section', 'bbpress_converter' );
    
    		// Rows Limit
    		add_settings_field( '_bbp_converter_rows',          __( 'Rows Limit',        'bbpress' ),  'bbp_converter_setting_callback_rows', 'bbpress_converter', 'bbpress_converter_opt' );
    		register_setting  ( 'bbpress_converter_opt',        '_bbp_converter_rows',               'intval' );
    
    		// Delay Time
    		add_settings_field( '_bbp_converter_delay_time',    __( 'Delay Time',        'bbpress' ), 'bbp_converter_setting_callback_delay_time', 'bbpress_converter', 'bbpress_converter_opt' );
    		register_setting  ( 'bbpress_converter_opt',        '_bbp_converter_delay_time',        'intval' );
    
    		// Convert Users ?
    		add_settings_field( '_bbp_converter_convert_users', __( 'Convert Users',     'bbpress' ), 'bbp_converter_setting_callback_convert_users', 'bbpress_converter', 'bbpress_converter_opt' );
    		register_setting  ( 'bbpress_converter_opt',        '_bbp_converter_convert_users',     'intval' );
    
    		// Restart
    		add_settings_field( '_bbp_converter_restart',       __( 'Start Over',        'bbpress' ), 'bbp_converter_setting_callback_restart', 'bbpress_converter', 'bbpress_converter_opt' );
    		register_setting  ( 'bbpress_converter_opt',        '_bbp_converter_restart',           'intval' );
    
    		// Clean
    		add_settings_field( '_bbp_converter_clean',         __( 'Purge Previous Import', 'bbpress' ), 'bbp_converter_setting_callback_clean', 'bbpress_converter', 'bbpress_converter_opt' );
    		register_setting  ( 'bbpress_converter_opt',        '_bbp_converter_clean',             'intval' );
    	}
    
    	/**
    	 * Admin scripts
    	 *
    	 * @since bbPress (r3813)
    	 */
    	public function admin_head() { ?>
    
    		<style type="text/css" media="screen">
    			/*<![CDATA[*/
    
    			div.bbp-converter-updated,
    			div.bbp-converter-warning {
    				border-radius: 3px 3px 3px 3px;
    				border-style: solid;
    				border-width: 1px;
    				padding: 5px 5px 5px 5px;
    			}
    
    			div.bbp-converter-updated {
    				height: 300px;
    				overflow: auto;
    				display: none;
    				background-color: #FFFFE0;
    				border-color: #E6DB55;
    				font-family: monospace;
    				font-weight: bold;
    			}
    
    			div.bbp-converter-updated p {
    				margin: 0.5em 0;
    				padding: 2px;
    				float: left;
    				clear: left;
    			}
    
    			div.bbp-converter-updated p.loading {
    				background-image: url('%3C?php echo admin_url(');
    				background-repeat: no-repeat;
    				background-position:  right center;; padding-left:2px; padding-right:20px; padding-top:2px; padding-bottom:2px
    			}
    
    			#bbp-converter-stop {
    				display:none;
    			}
    
    			#bbp-converter-progress {
    				display:none;
    			}
    
    			/*]]>*/
    		</style>
    
    		<script language="javascript">
    
    			var bbconverter_is_running = false;
    			var bbconverter_run_timer;
    			var bbconverter_delay_time = 0;
    
    			function bbconverter_grab_data() {
    				var values = {};
    				jQuery.each(jQuery('#bbp-converter-settings').serializeArray(), function(i, field) {
    					values[field.name] = field.value;
    				});
    
    				if( values['_bbp_converter_restart'] ) {
    					jQuery('#_bbp_converter_restart').removeAttr("checked");
    				}
    
    				if( values['_bbp_converter_delay_time'] ) {
    					bbconverter_delay_time = values['_bbp_converter_delay_time'] * 1000;
    				}
    
    				values['action'] = 'bbconverter_process';
    				values['_ajax_nonce'] = '<?php echo  wp_create_nonce( 'bbp_converter_process' ); ?>';
    
    				return values;
    			}
    
    			function bbconverter_start() {
    				if( false == bbconverter_is_running ) {
    					bbconverter_is_running = true;
    					jQuery('#bbp-converter-start').hide();
    					jQuery('#bbp-converter-stop').show();
    					jQuery('#bbp-converter-progress').show();
    					bbconverter_log( '<p class="loading"><?php esc_html_e( 'Starting Conversion', 'bbpress' ); ?></p>' );
    					bbconverter_run();
    				}
    			}
    
    			function bbconverter_run() {
    				jQuery.post(ajaxurl, bbconverter_grab_data(), function(response) {
    					var response_length = response.length - 1;
    					response = response.substring(0,response_length);
    					bbconverter_success(response);
    				});
    			}
    
    			function bbconverter_stop() {
    				jQuery('#bbp-converter-start').show();
    				jQuery('#bbp-converter-stop').hide();
    				jQuery('#bbp-converter-progress').hide();
    				jQuery('#bbp-converter-message p').removeClass( 'loading' );
    				bbconverter_is_running = false;
    				clearTimeout( bbconverter_run_timer );
    			}
    
    			function bbconverter_success(response) {
    				bbconverter_log(response);
    
    				if ( response == '<p class="loading"><?php esc_html_e( 'Conversion Complete', 'bbpress' ); ?></p>' || response.indexOf('error') > -1 ) {
    					bbconverter_log('<p>Repair any missing information: <a href="<?php echo admin_url(); ?>tools.php?page=bbp-repair">Continue</a></p>');
    					bbconverter_stop();
    				} else if( bbconverter_is_running ) { // keep going
    					jQuery('#bbp-converter-progress').show();
    					clearTimeout( bbconverter_run_timer );
    					bbconverter_run_timer = setTimeout( 'bbconverter_run()', bbconverter_delay_time );
    				} else {
    					bbconverter_stop();
    				}
    			}
    
    			function bbconverter_log(text) {
    				if ( jQuery('#bbp-converter-message').css('display') == 'none' ) {
    					jQuery('#bbp-converter-message').show();
    				}
    				if ( text ) {
    					jQuery('#bbp-converter-message p').removeClass( 'loading' );
    					jQuery('#bbp-converter-message').prepend( text );
    				}
    			}
    
    		</script>
    
    		<?php
    	}
    
    	/**
    	 * Wrap the converter output in paragraph tags, so styling can be applied
    	 *
    	 * @since bbPress (r4052)
    	 *
    	 * @param string $output
    	 */
    	private static function converter_output( $output = '' ) {
    
    		// Get the last query
    		$before = '<p class="loading">';
    		$after  = '</p>';
    		$query  = get_option( '_bbp_converter_query' );
    
    		if ( ! empty( $query ) )
    			$before = '<p class="loading" title="' . esc_attr( $query ) . '">';
    
    		echo $before . $output . $after;
    	}
    
    	/**
    	 * Callback processor
    	 *
    	 * @since bbPress (r3813)
    	 */
    	public function process_callback() {
    
    		// Verify intent
    		check_ajax_referer( 'bbp_converter_process' );
    
    		// Bail if user cannot view import page
    		if ( ! current_user_can( 'bbp_tools_import_page' ) ) {
    			wp_die( '0' );
    		}
    
    		if ( ! ini_get( 'safe_mode' ) ) {
    			set_time_limit( 0 );
    			ini_set( 'memory_limit',   '256M' );
    			ini_set( 'implicit_flush', '1'    );
    			ignore_user_abort( true );
    		}
    
    		// Save step and count so that it can be restarted.
    		if ( ! get_option( '_bbp_converter_step' ) || ( !empty( $_POST['_bbp_converter_restart'] ) ) ) {
    			update_option( '_bbp_converter_step',  1 );
    			update_option( '_bbp_converter_start', 0 );
    		}
    
    		$step  = (int) get_option( '_bbp_converter_step',  1 );
    		$min   = (int) get_option( '_bbp_converter_start', 0 );
    		$count = (int) ! empty( $_POST['_bbp_converter_rows'] ) ? $_POST['_bbp_converter_rows'] : 100;
    		$max   = ( $min + $count ) - 1;
    		$start = $min;
    
    		// Bail if platform did not get saved
    		$platform = !empty( $_POST['_bbp_converter_platform' ] ) ? $_POST['_bbp_converter_platform' ] : get_option( '_bbp_converter_platform' );
    		if ( empty( $platform ) )
    			return;
    
    		// Include the appropriate converter.
    		$converter = bbp_new_converter( $platform );
    
    		switch ( $step ) {
    
    			// STEP 1. Clean all tables.
    			case 1 :
    				if ( !empty( $_POST[_bbp_converter_clean] ) ) { if ( $converter->clean( $start ) ) { update_option( _bbp_converter_step'', $step + 1 );
    						update_option( '_bbp_converter_start', 0         )
    						}
    					} else {
    						update_option( '_bbp_converter_start', $max + 1 );
    						$this->converter_output( sprintf( __( 'Deleting previously converted data (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    					}
    				} else {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    				}
    
    				break;
    
    			// STEP 2. Convert users.
    			case 2 :
    				if ( !empty( $_POST['_bbp_converter_convert_users'] ) ) {
    					if ( $converter->convert_users( $start ) ) {
    						update_option( '_bbp_converter_step',  $step + 1 );
    						update_option( '_bbp_converter_start', 0         );
    						if ( empty( $start ) ) {
    							$this->converter_output( __( 'No users to convert', 'bbpress' ) );
    						}
    					} else {
    						update_option( '_bbp_converter_start', $max + 1 );
    						$this->converter_output( sprintf(  __( 'Converting users (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    					}
    				} else {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    				}
    
    				break;
    
    			// STEP 3. Clean passwords.
    			case 3 :
    				if ( !empty( $_POST['_bbp_converter_convert_users'] ) ) {
    					if ( $converter->clean_passwords( $start ) ) {
    						update_option( '_bbp_converter_step',  $step + 1 );
    						update_option( '_bbp_converter_start', 0         );
    						if ( empty( $start ) ) {
    							$this->converter_output( __( 'No passwords to clear', 'bbpress' ) );
    						}
    					} else {
    						update_option( '_bbp_converter_start', $max + 1 );
    						$this->converter_output( sprintf( __( 'Delete users WordPress default passwords (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    					}
    				} else {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    				}
    
    				break;
    
    			// STEP 4. Convert forums.
    			case 4 :
    				if ( $converter->convert_forums( $start ) ) {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    					if ( empty( $start ) ) {
    						$this->converter_output( __( 'No forums to convert', 'bbpress' ) );
    					}
    				} else {
    					update_option( '_bbp_converter_start', $max + 1 );
    					$this->converter_output( sprintf( __( 'Converting forums (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    				}
    
    				break;
    
    			// STEP 5. Convert forum parents.
    			case 5 :
    				if ( $converter->convert_forum_parents( $start ) ) {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    					if ( empty( $start ) ) {
    						$this->converter_output( __( 'No forum parents to convert', 'bbpress' ) );
    					}
    				} else {
    					update_option( '_bbp_converter_start', $max + 1 );
    					$this->converter_output( sprintf( __( 'Calculating forum hierarchy (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    				}
    
    				break;
    
    			// STEP 6. Convert topics.
    			case 6 :
    				if ( $converter->convert_topics( $start ) ) {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    					if ( empty( $start ) ) {
    						$this->converter_output( __( 'No topics to convert', 'bbpress' ) );
    					}
    				} else {
    					update_option( '_bbp_converter_start', $max + 1 );
    					$this->converter_output( sprintf( __( 'Converting topics (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    				}
    
    				break;
    
    			// STEP 7. Stick topics.
    			case 7 :
    				if ( $converter->convert_topic_stickies( $start ) ) {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    					if ( empty( $start ) ) {
    						$this->converter_output( __( 'No stickies to stick', 'bbpress' ) );
    					}
    				} else {
    					update_option( '_bbp_converter_start', $max + 1 );
    					$this->converter_output( sprintf( __( 'Calculating topic stickies (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    				}
    
    				break;
    
    			// STEP 8. Stick to front topics (Super Sicky).
    			case 8 :
    				if ( $converter->convert_topic_super_stickies( $start ) ) {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    					if ( empty( $start ) ) {
    						$this->converter_output( __( 'No super stickies to stick', 'bbpress' ) );
    					}
    				} else {
    					update_option( '_bbp_converter_start', $max + 1 );
    					$this->converter_output( sprintf( __( 'Calculating topic super stickies (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    				}
    
    				break;
    
    			
    			// STEP 9. Convert replies.
    			case 9 :
    				if ( $converter->convert_replies( $start ) ) {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    					if ( empty( $start ) ) {
    						$this->converter_output( __( 'No replies to convert', 'bbpress' ) );
    					}
    				} else {
    					update_option( '_bbp_converter_start', $max + 1 );
    					$this->converter_output( sprintf( __( 'Converting replies (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    				}
    
    				break;
    
    			// STEP 10. Convert reply_to parents.
    			case 10 :
    				if ( $converter->convert_reply_to_parents( $start ) ) {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    					if ( empty( $start ) ) {
    						$this->converter_output( __( 'No reply_to parents to convert', 'bbpress' ) );
    					}
    				} else {
    					update_option( '_bbp_converter_start', $max + 1 );
    					$this->converter_output( sprintf( __( 'Calculating reply_to parents (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    				}
    
    				break;
    				
    			// STEP 11. Convert tags.
    			case 11 :
    				if ( $converter->convert_tags( $start ) ) {
    					update_option( '_bbp_converter_step',  $step + 1 );
    					update_option( '_bbp_converter_start', 0         );
    					if ( empty( $start ) ) {
    						$this->converter_output( __( 'No tags to convert', 'bbpress' ) );
    					}
    				} else {
    					update_option( '_bbp_converter_start', $max + 1 );
    					$this->converter_output( sprintf( __( 'Converting topic tags (%1$s - %2$s)', 'bbpress' ), $min, $max ) );
    				}
    
    				break;
    
    			default :
    				delete_option( '_bbp_converter_step'  );
    				delete_option( '_bbp_converter_start' );
    				delete_option( '_bbp_converter_query' );
    
    				$this->converter_output( __( 'Conversion Complete', 'bbpress' ) );
    
    				break;
    		}
    	}
    
    	/**
    	 * Create Tables for fast syncing
    	 *
    	 * @since bbPress (r3813)
    	 */
    	public function sync_table( $drop = false ) {
    		global $wpdb;
    
    		$table_name = $wpdb->prefix . 'bbp_converter_translator';
    		if ( ! empty( $drop ) && $wpdb->get_var( "SHOW TABLES LIKE '{$table_name}'" ) == $table_name )
    			$wpdb->query( "DROP TABLE {$table_name}" );
    
    		require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
    
    		if ( !empty( $wpdb->charset ) ) {
    			$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
    		}
    
    		if ( !empty( $wpdb->collate ) ) {
    			$charset_collate .= "COLLATE $wpdb->collate";
    		}
    
    		/** Translator ****************************************************/
    
    		$sql = "CREATE TABLE {$table_name} (
    					meta_id mediumint(8) unsigned not null auto_increment,
    					value_type varchar(25) null,
    					value_id bigint(20) unsigned not null default '0',
    					meta_key varchar(25) null,
    					meta_value varchar(25) null,
    				PRIMARY KEY  (meta_id),
    					KEY value_id (value_id),
    					KEY meta_join (meta_key, meta_value) ) {$charset_collate};";
    
    		dbDelta( $sql );
    	}
    }
    
    /**
     * Base class to be extended by specific individual importers
     *
     * @since bbPress (r3813)
     */
    abstract class BBP_Converter_Base {
    
    	/**
    	 * @var array() This is the field mapping array to process.
    	 */
    	protected $field_map = array();
    
    	/**
    	 * @var object This is the connection to the WordPress datbase.
    	 */
    	protected $wpdb;
    
    	/**
    	 * @var object This is the connection to the other platforms database.
    	 */
    	protected $opdb;
    
    	/**
    	 * @var int This is the max rows to process at a time.
    	 */
    	public $max_rows;
    
    	/**
    	 * @var array() Map of topic to forum.  It is for optimization.
    	 */
    	private $map_topicid_to_forumid = array();
    
    	/**
    	 * @var array() Map of from old forum ids to new forum ids.  It is for optimization.
    	 */
    	private $map_forumid = array();
    
    	/**
    	 * @var array() Map of from old topic ids to new topic ids.  It is for optimization.
    	 */
    	private $map_topicid = array();
    
    	/**
    	 * @var array() Map of from old reply_to ids to new reply_to ids.  It is for optimization.
    	 */
    	private $map_reply_to = array();
    
    	/**
    	 * @var array() Map of from old user ids to new user ids.  It is for optimization.
    	 */
    	private $map_userid = array();
    
    	/**
    	 * @var str This is the charset for your wp database.
    	 */
    	public $charset;
    
    	/**
    	 * @var boolean Sync table available.
    	 */
    	public $sync_table = false;
    
    	/**
    	 * @var str Sync table name.
    	 */
    	public $sync_table_name;
    
    	/** Methods ***************************************************************/
    
    	/**
    	 * This is the constructor and it connects to the platform databases.
    	 */
    	public function __construct() {
    		$this->setup_globals();
    	}
    
    	private function setup_globals() {
    		global $wpdb;
    
    		/** Get database connections ******************************************/
    
    		$this->wpdb         = $wpdb;
    		$this->max_rows     = (int) $_POST['_bbp_converter_rows'];
    		$this->opdb         = new wpdb( $_POST['_bbp_converter_db_user'], $_POST['_bbp_converter_db_pass'], $_POST['_bbp_converter_db_name'], $_POST['_bbp_converter_db_server'] );
    		$this->opdb->prefix = $_POST['_bbp_converter_db_prefix'];
    
    		/**
    		 * Error Reporting
    		 */
    		$this->wpdb->show_errors();
    		$this->opdb->show_errors();
    
    		/**
    		 * Syncing
    		 */
    		$this->sync_table_name = $this->wpdb->prefix . 'bbp_converter_translator';
    		if ( $this->wpdb->get_var( "SHOW TABLES LIKE '" . $this->sync_table_name . "'" ) == $this->sync_table_name ) {
    			$this->sync_table = true;
    		} else {
    			$this->sync_table = false;
    		}
    
    		/**
    		 * Charset
    		 */
    		if ( empty( $this->wpdb->charset ) ) {
    			$this->charset = 'UTF8mb4';
    		} else {
    			$this->charset = $this->wpdb->charset;
    		}
    
    		/**
    		 * Default mapping.
    		 */
    
    		/** Forum Section *****************************************************/
    
    		$this->field_map[] = array(
    			'to_type'      => 'forum',
    			'to_fieldname' => 'post_status',
    			'default'      => 'publish'
    		);
    		$this->field_map[] = array(
    			'to_type'      => 'forum',
    			'to_fieldname' => 'comment_status',
    			'default'      => 'closed'
    		);
    		$this->field_map[] = array(
    			'to_type'      => 'forum',
    			'to_fieldname' => 'ping_status',
    			'default'      => 'closed'
    		);
    		$this->field_map[] = array(
    			'to_type'      => 'forum',
    			'to_fieldname' => 'post_type',
    			'default'      => 'forum'
    		);
    
    		/** Topic Section *****************************************************/
    
    		$this->field_map[] = array(
    			'to_type'      => 'topic',
    			'to_fieldname' => 'post_status',
    			'default'      => 'publish'
    		);
    		$this->field_map[] = array(
    			'to_type'      => 'topic',
    			'to_fieldname' => 'comment_status',
    			'default'      => 'closed'
    		);
    		$this->field_map[] = array(
    			'to_type'      => 'topic',
    			'to_fieldname' => 'ping_status',
    			'default'      => 'closed'
    		);
    		$this->field_map[] = array(
    			'to_type'      => 'topic',
    			'to_fieldname' => 'post_type',
    			'default'      => 'topic'
    		);
    
    		/** Post Section ******************************************************/
    
    		$this->field_map[] = array(
    			'to_type'      => 'reply',
    			'to_fieldname' => 'post_status',
    			'default'      => 'publish'
    		);
    		$this->field_map[] = array(
    			'to_type'      => 'reply',
    			'to_fieldname' => 'comment_status',
    			'default'      => 'closed'
    		);
    		$this->field_map[] = array(
    			'to_type'      => 'reply',
    			'to_fieldname' => 'ping_status',
    			'default'      => 'closed'
    		);
    		$this->field_map[] = array(
    			'to_type'      => 'reply',
    			'to_fieldname' => 'post_type',
    			'default'      => 'reply'
    		);
    
    		/** User Section ******************************************************/
    
    		$this->field_map[] = array(
    			'to_type'      => 'user',
    			'to_fieldname' => 'role',
    			'default'      => get_option( 'default_role' )
    		);
    	}
    
    	/**
    	 * Convert Forums
    	 */
    	public function convert_forums( $start = 1 ) {
    		return $this->convert_table( 'forum', $start );
    	}
    
    	/**
    	 * Convert Topics / Threads
    	 */
    	public function convert_topics( $start = 1 ) {
    		return $this->convert_table( 'topic', $start );
    	}
    
    	/**
    	 * Convert Posts
    	 */
    	public function convert_replies( $start = 1 ) {
    		return $this->convert_table( 'reply', $start );
    	}
    
    	/**
    	 * Convert Users
    	 */
    	public function convert_users( $start = 1 ) {
    		return $this->convert_table( 'user', $start );
    	}
    
    	/**
    	 * Convert Tags
    	 */
    	public function convert_tags( $start = 1 ) {
    		return $this->convert_table( 'tags', $start );
    	}
    
    	/**
    	 * Convert Table
    	 *
    	 * @param string to type
    	 * @param int Start row
    	 */
    	public function convert_table( $to_type, $start ) {
    
    		// Are we usig a sync table, or postmeta?
    		if ( $this->wpdb->get_var( "SHOW TABLES LIKE '" . $this->sync_table_name . "'" ) == $this->sync_table_name ) {
    			$this->sync_table = true;
    		} else {
    			$this->sync_table = false;
    		}
    
    		// Set some defaults
    		$has_insert     = false;
    		$from_tablename = '';
    		$field_list     = $from_tables = $tablefield_array = array();
    
    		// Toggle Table Name based on $to_type (destination)
    		switch ( $to_type ) {
    			case 'user' :
    				$tablename = $this->wpdb->users;
    				break;
    
    			case 'tags' :
    				$tablename = '';
    				break;
    
    			default :
    				$tablename = $this->wpdb->posts;
    		}
    
    		// Get the fields from the destination table
    		if ( !empty( $tablename ) ) {
    			$tablefield_array = $this->get_fields( $tablename );
    		}
    
    		/** Step 1 ************************************************************/
    
    		// Loop through the field maps, and look for to_type matches
    		foreach ( $this->field_map as $item ) {
    
    			// Yay a match, and we have a from table, too
    			if ( ( $item['to_type'] == $to_type ) && !empty( $item['from_tablename'] ) ) {
    
    				// $from_tablename was set from a previous loop iteration
    				if ( ! empty( $from_tablename ) ) {
    
    					// Doing some joining
    					if ( !in_array( $item['from_tablename'], $from_tables ) && in_array( $item['join_tablename'], $from_tables ) ) {
    						$from_tablename .= ' ' . $item['join_type'] . ' JOIN ' . $this->opdb->prefix . $item['from_tablename'] . ' AS ' . $item['from_tablename'] . ' ' . $item['join_expression'];
    					}
    
    				// $from_tablename needs to be set
    				} else {
    					$from_tablename = $item['from_tablename'] . ' AS ' . $item['from_tablename'];
    				}
    
    				// Specific FROM expression data used
    				if ( !empty( $item['from_expression'] ) ) {
    
    					// No 'WHERE' in expression
    					if ( stripos( $from_tablename, "WHERE" ) === false ) {
    						$from_tablename .= ' ' . $item['from_expression'];
    
    					// 'WHERE' in expression, so replace with 'AND'
    					} else {
    						$from_tablename .= '. str_replace( WHERE, AND, $item[from_expression'] )'';
    					}
    				}
    
    				// Add tablename and fieldname to arrays, formatted for querying
    				$from_tables[] = $item['from_tablename'];
    				$field_list[]  = 'convert(' . $item['from_tablename'] . '.' . $item['from_fieldname'] . ' USING "' . $this->charset . '") AS ' . $item['from_fieldname'];
    			}
    		}
    
    		/** Step 2 ************************************************************/
    
    		// We have a $from_tablename, so we want to get some data to convert
    		if ( !empty( $from_tablename ) ) {
    
    			// Get some data from the old forums
    			$field_list  = array_unique( $field_list );
    			$forum_query = 'SELECT ' . implode( ',', $field_list ) . ' FROM ' . $this->opdb->prefix . $from_tablename . ' LIMIT ' . $start . ', ' . $this->max_rows;
    			$forum_array = $this->opdb->get_results( $forum_query, ARRAY_A );
    
    			// Set this query as the last one ran
    			update_option( '_bbp_converter_query', $forum_query );
    
    			// Query returned some results
    			if ( !empty( $forum_array ) ) {
    
    				// Loop through results
    				foreach ( (array) $forum_array as $forum ) {
    
    					// Reset some defaults
    					$insert_post = $insert_postmeta = $insert_data = array();
    
    					// Loop through field map, again...
    					foreach ( $this->field_map as $row ) {
    
    						// Types matchand to_fieldname is present. This means
    						// we have some work to do here.
    						if ( ( $row['to_type'] == $to_type ) && ! is_null( $row['to_fieldname'] ) ) {
    
    							// This row has a destination that matches one of the
    							// columns in this table.
    							if ( in_array( $row['to_fieldname'], $tablefield_array ) ) {
    
    								// Allows us to set default fields.
    								if ( isset( $row['default'] ) ) {
    									$insert_post[$row['to_fieldname']] = $row['default'];
    
    								// Translates a field from the old forum.
    								} elseif ( isset( $row['callback_method'] ) ) {
    									if ( ( 'callback_userid' == $row['callback_method'] ) && empty( $_POST['_bbp_converter_convert_users'] ) ) {
    										$insert_post[$row['to_fieldname']] = $forum[$row['from_fieldname']];
    									} else {
    										$insert_post[$row['to_fieldname']] = call_user_func_array( array( $this, $row[callback_method] ), array( $forum[$row['from_fieldname']]'', $forum ) );
    									}
    
    								// Maps the field from the old forum.
    								} else {
    									$insert_post[$row['to_fieldname']] = $forum[$row['from_fieldname']];
    								}
    
    							// Destination field is not empty, so we might need
    							// to do some extra work or set a default.
    							} elseif ( !empty( $row['to_fieldname'] ) ) {
    
    								// Allows us to set default fields.
    								if ( isset( $row['default'] ) ) {
    									$insert_postmeta[$row['to_fieldname']] = $row['default'];
    
    								// Translates a field from the old forum.
    								} elseif ( isset( $row['callback_method'] ) ) {
    									if ( ( $row['callback_method'] == 'callback_userid' ) && ( 0 == $_POST['_bbp_converter_convert_users'] ) ) {
    										$insert_postmeta[$row['to_fieldname']] = $forum[$row['from_fieldname']];
    									} else {
    										$insert_postmeta[$row['to_fieldname']] = call_user_func_array( array( $this, $row[callback_method] ), array( $forum[$row['from_fieldname']]'', $forum ) );
    									}
    
    								// Maps the field from the old forum.
    								} else {
    									$insert_postmeta[$row['to_fieldname']] = $forum[$row['from_fieldname']];
    								}
    							}
    						}
    					}
    
    					/** Step 3 ************************************************/
    
    					// Something to insert into the destination field
    					if ( count( $insert_post ) > 0 || ( $to_type == 'tags' && count( $insert_postmeta ) > 0 ) ) {
    
    						switch ( $to_type ) {
    
    							/** New user **************************************/
    
    							case 'user':
    								if ( username_exists( $insert_post['user_login'] ) ) {
    									$insert_post['user_login'] = 'imported_' . $insert_post['user_login'];
    								}
    
    								if ( email_exists( $insert_post['user_email'] ) ) {
    									$insert_post['user_email'] = 'imported_' . $insert_post['user_email'];
    								}
    
    								$post_id = wp_insert_user( $insert_post );
    
    								if ( is_numeric( $post_id ) ) {
    
    									foreach ( $insert_postmeta as $key => $value ) {
    
    										add_user_meta( $post_id, $key, $value, true );
    
    										if ( '_id' == substr( $key, -3 ) && ( true === $this->sync_table ) ) {
    											$this->wpdb->insert( $this->sync_table_name, array( 'value_type' => 'user', 'value_id' => $post_id, 'meta_key' => $key, 'meta_value' => $value ) );
    										}
    									}
    								}
    								break;
    
    							/** New Topic-Tag *********************************/
    
    							case 'tags':
    								$post_id = wp_set_object_terms( $insert_postmeta['objectid'], $insert_postmeta['name'], 'topic-tag', true );
    								$term = get_term_by( 'name', $insert_postmeta['name'], 'topic-tag');
    								if ( false !== $term ) {
    									wp_update_term( $term->term_id, 'topic-tag', array(
    										'description' => $insert_postmeta[description']', slug => $insert_postmeta[slug'] ) )';
    								}
     								break;
    
    							/** Forum, Topic, Reply ***************************/
    
    							default:
    								$post_id = wp_insert_post( $insert_post );
    
    								if ( is_numeric( $post_id ) ) {
    
    									foreach ( $insert_postmeta as $key => $value ) {
    
    										add_post_meta( $post_id, $key, $value, true );
    
    										// Forums need to save their old ID for group forum association
    										if ( ( 'forum' == $to_type ) && ( '_bbp_forum_id' == $key ) )
    											add_post_meta( $post_id, '_bbp_old_forum_id', $value );
    
    										// Topics need an extra bit of metadata
    										// to be keyed to the new post_id
    										if ( ( 'topic' == $to_type ) && ( '_bbp_topic_id' == $key ) ) {
    
    											// Update the live topic ID
    											update_post_meta( $post_id, $key, $post_id );
    
    											// Save the old topic ID
    											add_post_meta( $post_id, '_bbp_old_topic_id', $value );
    											if ( '_id' == substr( $key, -3 ) && ( true === $this->sync_table ) ) {
    												$this->wpdb->insert( $this->sync_table_name, array( 'value_type' => 'post', 'value_id' => $post_id, 'meta_key' => '_bbp_topic_id',     'meta_value' => $post_id ) );
    												$this->wpdb->insert( $this->sync_table_name, array( 'value_type' => 'post', 'value_id' => $post_id, 'meta_key' => '_bbp_old_topic_id', 'meta_value' => $value   ) );
    											}
    
    										} elseif ( '_id' == substr( $key, -3 ) && ( true === $this->sync_table ) ) {
    											$this->wpdb->insert( $this->sync_table_name, array( 'value_type' => 'post', 'value_id' => $post_id, 'meta_key' => $key, 'meta_value' => $value ) );
    										}
    
    										// Replies need to save their old reply_to ID for hierarchical replies association
    										if ( ( 'reply' == $to_type ) && ( '_bbp_reply_to' == $key ) ) {
    											add_post_meta( $post_id, '_bbp_old_reply_to', $value );
    										}
    									}
    								}
    								break;
    						}
    						$has_insert = true;
    					}
    				}
    			}
    		}
    
    		return ! $has_insert;
    	}
    
    	/**
    	 * This method converts old forum heirarchy to new bbPress heirarchy.
    	 */
    	public function convert_forum_parents( $start ) {
    
    		$has_update = false;
    
    		if ( !empty( $this->sync_table ) ) {
    			$query = 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_forum_parent_id" AND meta_value > 0 LIMIT ' . $start . ', ' . $this->max_rows;
    		} else {
    			$query = 'SELECT post_id AS value_id, meta_value FROM ' . $this->wpdb->postmeta . ' WHERE meta_key = "_bbp_forum_parent_id" AND meta_value > 0 LIMIT ' . $start . ', ' . $this->max_rows;
    		}
    
    		update_option( '_bbp_converter_query', $query );
    
    		$forum_array = $this->wpdb->get_results( $query );
    
    		foreach ( (array) $forum_array as $row ) {
    			$parent_id = $this->callback_forumid( $row->meta_value );
    			$this->wpdb->query( 'UPDATE ' . $this->wpdb->posts . ' SET post_parent = "' . $parent_id . '" WHERE ID = "' . $row->value_id . '" LIMIT 1' );
    			$has_update = true;
    		}
    
    		return ! $has_update;
    	}
    
    	/**
    	 * This method converts old topic stickies to new bbPress stickies.
    	 *
    	 * @since bbPress (r)
    	 *
    	 * @uses WPDB $wpdb
    	 * @uses bbp_stick_topic() to set the imported topic as sticky
    	 *
    	 */
    	public function convert_topic_stickies( $start ) {
    
    		$has_update = false;
    
    		if ( !empty( $this->sync_table ) ) {
    			$query = 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_old_sticky_status" AND meta_value = "sticky" LIMIT ' . $start . ', ' . $this->max_rows;
    		} else {
    			$query = 'SELECT post_id AS value_id, meta_value FROM ' . $this->wpdb->postmeta . ' WHERE meta_key = "_bbp_old_sticky_status" AND meta_value = "sticky" LIMIT ' . $start . ', ' . $this->max_rows;
    		}
    
    		update_option( '_bbp_converter_query', $query );
    
    		$sticky_array = $this->wpdb->get_results( $query );
    
    		foreach ( (array) $sticky_array as $row ) {
    			bbp_stick_topic( $row->value_id );
    			$has_update = true;
    		}
    
    		return ! $has_update;
    	}
    
    	/**
    	 * This method converts old topic super stickies to new bbPress super stickies.
    	 *
    	 * @since bbPress (r)
    	 *
    	 * @uses WPDB $wpdb
    	 * @uses bbp_stick_topic() to set the imported topic as super sticky
    	 *
    	 */
    	public function convert_topic_super_stickies( $start ) {
    
    		$has_update = false;
    
    		if ( !empty( $this->sync_table ) ) {
    			$query = 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_old_sticky_status" AND meta_value = "super-sticky" LIMIT ' . $start . ', ' . $this->max_rows;
    		} else {
    			$query = 'SELECT post_id AS value_id, meta_value FROM ' . $this->wpdb->postmeta . ' WHERE meta_key = "_bbp_old_sticky_status" AND meta_value = "super-sticky" LIMIT ' . $start . ', ' . $this->max_rows;
    		}
    
    		update_option( '_bbp_converter_query', $query );
    
    		$sticky_array = $this->wpdb->get_results( $query );
    
    		foreach ( (array) $sticky_array as $row ) {
    			$super = true;
    			bbp_stick_topic( $row->value_id, $super );
    			$has_update = true;
    		}
    
    		return ! $has_update;
    	}
    
    	/**
    	 * This method converts old reply_to post id to new bbPress reply_to post id.
    	 */
    	public function convert_reply_to_parents( $start ) {
    
    		$has_update = false;
    
    		if ( !empty( $this->sync_table ) ) {
    			$query = 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_old_reply_to" AND meta_value > 0 LIMIT ' . $start . ', ' . $this->max_rows;
    		} else {
    			$query = 'SELECT post_id AS value_id, meta_value FROM ' . $this->wpdb->postmeta . ' WHERE meta_key = "_bbp_old_reply_to" AND meta_value > 0 LIMIT ' . $start . ', ' . $this->max_rows;
    		}
    
    		update_option( '_bbp_converter_query', $query );
    
    		$reply_to_array = $this->wpdb->get_results( $query );
    
    		foreach ( (array) $reply_to_array as $row ) {
    			$reply_to = $this->callback_reply_to( $row->meta_value );
    			$this->wpdb->query( 'UPDATE ' . $this->wpdb->postmeta . ' SET meta_value = "' . $reply_to . '" WHERE meta_key = "_bbp_reply_to" AND post_id = "' . $row->value_id . '" LIMIT 1' );
    			$has_update = true;
    		}
    
    		return ! $has_update;
    	}
    
    	/**
    	 * This method deletes data from the wp database.
    	 */
    	public function clean( $start ) {
    
    		$start      = 0;
    		$has_delete = false;
    
    		/** Delete bbconverter topics/forums/posts ****************************/
    
    		if ( true === $this->sync_table ) {
    			$query = 'SELECT value_id FROM ' . $this->sync_table_name . ' INNER JOIN ' . $this->wpdb->posts . ' ON(value_id = ID) WHERE meta_key LIKE "_bbp_%" AND value_type = "post" GROUP BY value_id ORDER BY value_id DESC LIMIT ' . $this->max_rows;
    		} else {
    			$query = 'SELECT post_id AS value_id FROM ' . $this->wpdb->postmeta . ' WHERE meta_key LIKE "_bbp_%" GROUP BY post_id ORDER BY post_id DESC LIMIT ' . $this->max_rows;
    		}
    
    		update_option( '_bbp_converter_query', $query );
    
    		$posts = $this->wpdb->get_results( $query, ARRAY_A );
    
    		if ( isset( $posts[0] ) && ! empty( $posts[0]['value_id'] ) ) {
    			foreach ( (array) $posts as $value ) {
    				wp_delete_post( $value['value_id'], true );
    			}
    			$has_delete = true;
    		}
    
    		/** Delete bbconverter users ******************************************/
    
    		if ( true === $this->sync_table ) {
    			$query = 'SELECT value_id FROM ' . $this->sync_table_name . ' INNER JOIN ' . $this->wpdb->users . ' ON(value_id = ID) WHERE meta_key = "_bbp_user_id" AND value_type = "user" LIMIT ' . $this->max_rows;
    		} else {
    			$query = 'SELECT user_id AS value_id FROM ' . $this->wpdb->usermeta . ' WHERE meta_key = "_bbp_user_id" LIMIT ' . $this->max_rows;
    		}
    
    		update_option( '_bbp_converter_query', $query );
    
    		$users = $this->wpdb->get_results( $query, ARRAY_A );
    
    		if ( !empty( $users ) ) {
    			foreach ( $users as $value ) {
    				wp_delete_user( $value['value_id'] );
    			}
    			$has_delete = true;
    		}
    
    		unset( $posts );
    		unset( $users );
    
    		return ! $has_delete;
    	}
    
    	/**
    	 * This method deletes passwords from the wp database.
    	 *
    	 * @param int Start row
    	 */
    	public function clean_passwords( $start ) {
    
    		$has_delete = false;
    
    		/** Delete bbconverter passwords **************************************/
    
    		$query       = 'SELECT user_id, meta_value FROM ' . $this->wpdb->usermeta . ' WHERE meta_key = "_bbp_password" LIMIT ' . $start . ', ' . $this->max_rows;
    		update_option( '_bbp_converter_query', $query );
    
    		$bbconverter = $this->wpdb->get_results( $query, ARRAY_A );
    
    		if ( !empty( $bbconverter ) ) {
    
    			foreach ( $bbconverter as $value ) {
    				if ( is_serialized( $value['meta_value'] ) ) {
    					$this->wpdb->query( 'UPDATE ' . $this->wpdb->users . ' ' . 'SET user_pass = "" ' . 'WHERE ID = "' . $value['user_id'] . '"' );
    				} else {
    					$this->wpdb->query( 'UPDATE ' . $this->wpdb->users . ' ' . 'SET user_pass = "' . $value['meta_value'] . '" ' . 'WHERE ID = "' . $value['user_id'] . '"' );
    					$this->wpdb->query( 'DELETE FROM ' . $this->wpdb->usermeta . ' WHERE meta_key = "_bbp_password" AND user_id = "' . $value['user_id'] . '"' );
    				}
    			}
    			$has_delete = true;
    		}
    
    		return ! $has_delete;
    	}
    
    	/**
    	 * This method implements the authentication for the different forums.
    	 *
    	 * @param string Unencoded password.
    	 */
    	abstract protected function authenticate_pass( $password, $hash );
    
    	/**
    	 * Info
    	 */
    	abstract protected function info();
    
    	/**
    	 * This method grabs appropriate fields from the table specified
    	 *
    	 * @param string The table name to grab fields from
    	 */
    	private function get_fields( $tablename ) {
    		$rval        = array();
    		$field_array = $this->wpdb->get_results( 'DESCRIBE ' . $tablename, ARRAY_A );
    
    		foreach ( $field_array as $field ) {
    			$rval[] = $field['Field'];
    		}
    
    		if ( $tablename == $this->wpdb->users ) {
    			$rval[] = 'role';
    			$rval[] = 'yim';
    			$rval[] = 'aim';
    			$rval[] = 'jabber';
    		}
    		return $rval;
    	}
    
    	/** Callbacks *************************************************************/
    
    	/**
    	 * Run password through wp_hash_password()
    	 *
    	 * @param string $username
    	 * @param string $password
    	 */
    	public function callback_pass( $username, $password ) {
    		$user = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT * FROM ' . $this->wpdb->users . ' WHERE user_login = "%s" AND user_pass = "" LIMIT 1', $username ) );
    		if ( !empty( $user ) ) {
    			$usermeta = $this->wpdb->get_row( 'SELECT * FROM ' . $this->wpdb->usermeta . ' WHERE meta_key = "_bbp_password" AND user_id = "' . $user->ID . '" LIMIT 1' );
    
    			if ( !empty( $usermeta ) ) {
    				if ( $this->authenticate_pass( $password, $usermeta->meta_value ) ) {
    					$this->wpdb->query( 'UPDATE ' . $this->wpdb->users . ' ' . 'SET user_pass = "' . wp_hash_password( $password ) . '" ' . 'WHERE ID = "' . $user->ID . '"' );
    					$this->wpdb->query( 'DELETE FROM ' . $this->wpdb->usermeta . ' WHERE meta_key = "_bbp_password" AND user_id = "' . $user->ID . '"' );
    				}
    			}
    		}
    	}
    
    	/**
    	 * A mini cache system to reduce database calls to forum ID's
    	 *
    	 * @param string $field
    	 * @return string
    	 */
    	private function callback_forumid( $field ) {
    		if ( !isset( $this->map_forumid[$field] ) ) {
    			if ( !empty( $this->sync_table ) ) {
    				$row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_forum_id" AND meta_value = "%s" LIMIT 1', $field ) );
    			} else {
    				$row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT post_id AS value_id FROM ' . $this->wpdb->postmeta . ' WHERE meta_key = "_bbp_forum_id" AND meta_value = "%s" LIMIT 1', $field ) );
    			}
    
    			if ( !is_null( $row ) ) {
    				$this->map_forumid[$field] = $row->value_id;
    			} else {
    				$this->map_forumid[$field] = 0;
    			}
    		}
    		return $this->map_forumid[$field];
    	}
    
    	/**
    	 * A mini cache system to reduce database calls to topic ID's
    	 *
    	 * @param string $field
    	 * @return string
    	 */
    	private function callback_topicid( $field ) {
    		if ( !isset( $this->map_topicid[$field] ) ) {
    			if ( !empty( $this->sync_table ) ) {
    				$row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_old_topic_id" AND meta_value = "%s" LIMIT 1', $field ) );
    			} else {
    				$row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT post_id AS value_id FROM ' . $this->wpdb->postmeta . ' WHERE meta_key = "_bbp_old_topic_id" AND meta_value = "%s" LIMIT 1', $field ) );
    			}
    
    			if ( !is_null( $row ) ) {
    				$this->map_topicid[$field] = $row->value_id;
    			} else {
    				$this->map_topicid[$field] = 0;
    			}
    		}
    		return $this->map_topicid[$field];
    	}
    
    	/**
    	 * A mini cache system to reduce database calls to reply_to post id.
    	 *
    	 * @param string $field
    	 * @return string
    	 */
    	private function callback_reply_to( $field ) {
    		if ( !isset( $this->map_reply_to[$field] ) ) {
    			if ( !empty( $this->sync_table ) ) {
    				$row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_post_id" AND meta_value = "%s" LIMIT 1', $field ) );
    			} else {
    				$row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT post_id AS value_id FROM ' . $this->wpdb->postmeta . ' WHERE meta_key = "_bbp_post_id" AND meta_value = "%s" LIMIT 1', $field ) );
    			}
    
    			if ( !is_null( $row ) ) {
    				$this->map_reply_to[$field] = $row->value_id;
    			} else {
    				$this->map_reply_to[$field] = 0;
    			}
    		}
    		return $this->map_reply_to[$field];
    	}
    
    	/**
    	 * A mini cache system to reduce database calls to user ID's
    	 *
    	 * @param string $field
    	 * @return string
    	 */
    	private function callback_userid( $field ) {
    		if ( !isset( $this->map_userid[$field] ) ) {
    			if ( !empty( $this->sync_table ) ) {
    				$row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT value_id, meta_value FROM ' . $this->sync_table_name . ' WHERE meta_key = "_bbp_user_id" AND meta_value = "%s" LIMIT 1', $field ) );
    			} else {
    				$row = $this->wpdb->get_row( $this->wpdb->prepare( 'SELECT user_id AS value_id FROM ' . $this->wpdb->usermeta . ' WHERE meta_key = "_bbp_user_id" AND meta_value = "%s" LIMIT 1', $field ) );
    			}
    
    			if ( !is_null( $row ) ) {
    				$this->map_userid[$field] = $row->value_id;
    			} else {
    				if ( !empty( $_POST['_bbp_converter_convert_users'] ) && ( $_POST['_bbp_converter_convert_users'] == 1 ) ) {
    					$this->map_userid[$field] = 0;
    				} else {
    					$this->map_userid[$field] = $field;
    				}
    			}
    		}
    		return $this->map_userid[$field];
    	}
    
    	/**
    	 * A mini cache system to reduce database calls map topics ID's to forum ID's
    	 *
    	 * @param string $field
    	 * @return string
    	 */
    	private function callback_topicid_to_forumid( $field ) {
    		$topicid = $this->callback_topicid( $field );
    		if ( empty( $topicid ) ) {
    			$this->map_topicid_to_forumid[$topicid] = 0;
    		} elseif ( ! isset( $this->map_topicid_to_forumid[$topicid] ) ) {
    			$row = $this->wpdb->get_row( 'SELECT post_parent FROM ' . $this->wpdb->posts . ' WHERE ID = "' . $topicid . '" LIMIT 1' );
    
    			if ( !is_null( $row ) ) {
    				$this->map_topicid_to_forumid[$topicid] = $row->post_parent;
    			} else {
    				$this->map_topicid_to_forumid[$topicid] = 0;
    			}
    		}
    
    		return $this->map_topicid_to_forumid[$topicid];
    	}
    
    	protected function callback_slug( $field ) {
    		return sanitize_title( $field );
    	}
    
    	protected function callback_negative( $field ) {
    		if ( $field < 0 ) {
    			return 0;
    		} else {
    			return $field;
    		}
    	}
    
    	protected function callback_html( $field ) {
    		require_once( bbpress()->admin->admin_dir . 'parser.php' );
    		$bbcode = BBCode::getInstance();
    		return html_entity_decode( $bbcode->Parse( $field ) );
    	}
    
    	protected function callback_null( $field ) {
    		if ( is_null( $field ) ) {
    			return '';
    		} else {
    			return $field;
    		}
    	}
    
    	protected function callback_datetime( $field ) {
    		if ( is_numeric( $field ) ) {
    			return date( 'Y-m-d H:i:s', $field );
    		} else {
    			return date( 'Y-m-d H:i:s', strtotime( $field ) );
    		}
    	}
    }
    
    /**
     * This is a function that is purposely written to look like a "new" statement.
     * It is basically a dynamic loader that will load in the platform conversion
     * of your choice.
     *
     * @param string $platform Name of valid platform class.
     */
    function bbp_new_converter( $platform ) {
    	$found = false;
    
    	if ( $curdir = opendir( bbpress()->admin->admin_dir . 'converters/' ) ) {
    		while ( $file = readdir( $curdir ) ) {
    			if ( stristr( $file, '.php' ) && stristr( $file, 'index' ) === FALSE ) {
    				$file = preg_replace( '/.php/', '', $file );
    				if ( $platform == $file ) {
    					$found = true;
    					continue;
    				}
    			}
    		}
    		closedir( $curdir );
    	}
    
    	if ( true === $found ) {
    		require_once( bbpress()->admin->admin_dir . 'converters/' . $platform . '.php' );
    		return new $platform;
    	} else {
    		return null;
    	}
    }
    #197793
    grayson_marik
    Participant

    I solved it by using a 404 plugin, which allowed me to generate my own 404 page, which then included links to register / login. Not a sollution but a walk around.

    #197779

    Topic: Register button

    in forum Installation
    #197751
    Robin W
    Moderator

    bbpress just uses wordpress registration, so the issue is with that.

    Firstly check that you have membership ticked in dashboard>settings>general so that anyone can register.

    If you are not receiving emails, then what is set in
    dashboard>settings>general>email address
    and does it match your site?
    1. You should be aware that many spam filters strip messages that do not come from the correct address. So if your site is mysite.com and your email address in wordpress settings>general is fred@gmail.comthen it is likely that messages will be dumped in transit. You need to set up email to come from your site eg fred@mysite.com, your hosting provider can help if needed.
    2. Just bbpress?
    Then you need to see if this is wordpress wide or just bbpress.
    Try https://wordpress.org/plugins/check-email/

    #197742

    Hi everyone,

    I use WordPress 5.03 with BBpress version 2.5.14.
    My website is http://club.geef-model.nl

    The issue that I experience with my forum is that I don’t receive a notification when I new user is registered.

    Most likely it is just one box I have to enable 😉
    but I cannot find it.

    I hope there is somebody who has the solution for me.

    Thank you in advance for your help and response.

    With kind regards,
    Klaziena Waerts, the Netherlands

    My site is in Dutch and when I must translate it, or change it (for a short while) to English is that no problem at all 🙂

Viewing 25 results - 476 through 500 (of 4,248 total)
Skip to toolbar