Search Results for 'updated'
-
AuthorSearch Results
-
January 21, 2019 at 10:09 am #197934
In reply to: Import Hung?
budget101
ParticipantThe order should be (I think):
Users
Forums
Topics
Tags
RepliesAgreed, 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; } }January 17, 2019 at 10:08 am #197835Editor Mike
ParticipantSo, this problem has just appeared again.
Yesterday it was fine, now again when clicking the last updated by you get the topic number but not the page number…https://www.thewargameswebsite.com/forums/topic/abs-15mm-fantasy-thing/#post-107748″
January 16, 2019 at 1:54 pm #197803Topic: Update forum role through php/programming
in forum Troubleshootingsaudor
ParticipantHello, I am trying to cut down on spam and defaulting all new users to spectator/subscriber mode and use certain “tasks” such as using the site to automatically change their role to participant/member.
I found this link but all it does is just make the forum role blank:
Can someone point me in the right direction? Thanks!
BBpress Version 3.2. Updated to 4.1 but still same issue
December 19, 2018 at 10:54 am #197050tapiohuuhaa
ParticipantHi
Why bbPress could use visual editor without chaning the function.php of themes.
When thems needs to be updated, it would need every time alter that function.
In my mind bbPress should support better visual editor. Otherwise bbPress seems to be a little bit too much self-made solution. Not like professional XenForo, which supports visual editor without tricks.
I got it work in https://www.sanaristikkofoorumi.net/wordpress/forums/forum/sanaristikot/
but I was not happy searching how to do it.
December 10, 2018 at 5:40 pm #196764In reply to: phpBB import (again)
Gregg
ParticipantResolved!
Grab a cup of coffee and a seat and I’ll tell you the story of how you might be able fix this. It may take several hours so be prepared…
Situation I was in:
Older version of phpBB 3.1v and wanting to port all topics, replies, and users to bbPress (latest version at the time). A handful of issues existed that were causing more trouble than they were worth. Host of the old site is GoDaddy. The new site is on WP Engine.Forum Stats (approx)
Users: 2200
Topics: 7800
Replies: 22500Outcome:
Successfully ported all topics, replies, and users to bbPress.Updated phpBB
REMOVE ALL MODS, STYLES, anything that’s not a part of the out-of-the-box install. Then follow the upgrade instructions. Make backups (I kept a copy of the existing site on my local machine and duplicate database on the host). I found these instructions most helpful: https://www.phpbb.com/support/docs/en/3.2/ug/upgradeguide/upgrade31/The Issues
There were two issues I ran into (in different flavors but it turns out they just stemmed from these two). 1st – utf8 formatting and 2nd missing fields. These issues are with the import and NOT the upgrade for phpBB. I was able to resolve those issues by making sure I followed the instructions on that link to the letter.The first error (I don’t remember the exact error string but it was either utf8mb4 or just utf8 but it simply means the database holds the data in an older format. The solution is to export the date from the database then create a new database and restore the data into it. By creating the new database the fields will use the proper format and when the restoration is complete this issue should be resolved.
The second error was a little more mysterious – as in I’m not sure why it happened but essentially the import routine is looking for fields that don’t exist in the phpBB install even after I successfully updated it. The solution was to create the fields needed. How?
How to create the fields to get rid of the missing field errors
Note I created a copy of the functioning database on my phpBB install so I could screw it up and not hurt the functioning website. So here’s an example.The error I got basically said the script couldn’t find “users.user_from” in the database I was trying to import from. That’s not an exact quote but the gist. So I edited the copy of my database and added the missing field (user_from) to the table it was looking for it in (users) using datatype VARCHAR and length of 255 (all else was left to default). I had to do this about a dozen times between the users, topics, and forums tables.
I should note I imported all of my users as well. I had to try this whole process several times. I’ve spent 40+ hours trying to figure this all out (I’m not that familiar with phpBB or bbPress) but the actual process once I figured out the issues – took about 6 hours – mostly waiting for the script to process the data. If your import bombs – read the error and look carefully at what it’s looking for or doesn’t like. Most likely it’s looking for something that’s not there.
I was worried that the connections between topics and replies and users would somehow be messed up. But in the end, it looks like it all came out fine. I’m pretty sure I’ll find something amiss – that’s my cynical side but maybe I’ll be pleasantly surprised.
Good luck!
December 10, 2018 at 2:22 pm #196762In reply to: phpBB import (again)
Gregg
ParticipantphpBB is now fully updated but I still get errors on import like: Unknown column ‘users.user_website’ in ‘field list’
Seriously thinking of just staying with phpBB at this point since there’re no answers to be had here.
December 9, 2018 at 3:03 am #196726In reply to: is there really an RC7 ?
John James Jacoby
KeymasterYes, there is.
I must not have edited the link when I updated and saved the rest of the page.
I’ve updated the page now. Here’s the link if you need it:
https://downloads.wordpress.org/plugin/bbpress.2.6-rc-7.zip
Sorry about that!
December 6, 2018 at 2:28 pm #196701In reply to: There’s a space sign before usernames in bbpress
Foliferous
ParticipantI didn’t change or modify any core. Just installed the plugin as is. But I did disable avatars. Apparently it keeps the space, even if you don’t have avatars?
And isn’t it weird that you’d have a space for an Avatar in this text that is displayed in very small font?
This forum contains 2 topics and 2 replies, and was last updated by Admin 2 days, 4 hours ago.
This doesn’t look like a place where you would display an avatar.
December 4, 2018 at 7:24 pm #196650Topic: There’s a space sign before usernames in bbpress
in forum TroubleshootingFoliferous
ParticipantHi people,
I noticed that’s there one space in front of “Admin” here:
This forum contains 2 topics and 2 replies, and was last updated by Admin 9 hours, 17 minutes ago.
You can also see it on the right hand side under “Latest forum posts”.
Best regards.
December 4, 2018 at 11:48 am #196634Topic: Forum Index only displaying one forum
in forum Troubleshootingwritersabroad
ParticipantI created a list of 5 forums some with sub forums and used the short code to display the index of forums on a page which I added to my navigation menu. Today it is only showing the first forum and none of the others. I’ve tried refreshing the page, renewing the page with the shortcode and gone back over some of the steps (I’ve been trying to remove a sidebar from the forum page) but nothing seems to work. All the forums are listed and I haven’t changed any of the settings within the forums…
I’m using the Ruby theme – but have tried it with twenty fifteen, sixteen and seventeen and the problem persists. I’m using bbpress Version 2.5.14 and the bbpress style plug in Version 4.0.3 which was updated today.
My site is not published as I’m still working on it, ironing out some of these issues.
Thanks for any advice
December 2, 2018 at 6:53 am #196601Topic: BBpress seems to not have updated in 3 years
in forum Installationtrehesten
ParticipantWhen upgrading php version on domain to 7.2, bbpress stopped working.
I made contact with domain company, and they say bbpress have’nt been updated in 3 years, and gave me this info from my site:
wp-content/plugins/bbpress/bbpress.php:
* $Id: bbpress.php 5951 2015-10-28 04:07:50Z netweb $
checked version on site, and it says Versjon 2.6-alpha??
What to do????
November 22, 2018 at 6:08 am #196405In reply to: Moderator Approval option for Topics and Replies
Robin W
Moderatorwhilst this hasn’t been updated in a few years, I think it still works
November 19, 2018 at 3:02 pm #196312In reply to: Users keep getting HTTP error
richardt111
ParticipantStill no success.
I have been reading about some people saying they reverted to older versions of PHP. Could this work?
Bluehost are telling me they can’t see anything from their side either.Also, if it helps, I haven’t updated to added any plugin etc to my site in a while.
Thanks!
November 15, 2018 at 10:01 pm #196241In reply to: Custom Topic Statuses?
krioteh
ParticipantBuddy-bbPress Support The topic still works with bbPress 2.6, albeit with errors.
You can return the form to the console settings of a specific forum using this code:add_action('add_meta_boxes', 'bbbp_support'); add_action('save_post', 'bbbp_save'); function bbbp_support() { add_meta_box('bbbp_support', 'BbbPress Support', 'bbbp_support_callback', 'forum'); } // HTML код блока function bbbp_support_callback( $forum = falce ){ if ( empty( $forum->ID ) ) { return; } $support_feature = bpbbpst_get_forum_support_setting( $forum->ID ); $mailing_list_style = ''; if ( 3 === (int) $support_feature ) { $mailing_list_style = 'style="display:none"'; } $support_only_style = 'style="display:none"'; if ( 2 === (int) $support_feature ) { $support_only_style = ''; } bpbbpst_display_forum_setting_options( $support_feature ); ?> <div class="bpbbpst-mailing-list" <?php echo $mailing_list_style;?>> <h4><?php _e( 'Who should receive an email notification when a new support topic is posted ?', 'buddy-bbpress-support-topic' );?></h4> <?php bpbbpst_checklist_moderators( $forum->ID );?> </div> <?php do_action_ref_array( 'bpbbpst_forum_support_options', array( $forum->ID, $mailing_list_style ) ); ?> <div class="bpbbpst-support-guides" <?php echo $support_only_style;?>> <h4><?php _e( 'New Topic form extras', 'buddy-bbpress-support-topic' );?></h4> <label class="screen-reader-text" for="support-topic-intro"><?php esc_html_e( 'New Topic Guide', 'buddy-bbpress-support-topic' ); ?></label> <textarea rows="3" cols="40" name="_bpbbpst_support_topic[intro]" id="support-topic-intro" style="width:100%"><?php echo bpbbpst_get_forum_support_topic_intro( $forum->ID );?></textarea> <p class="description"><?php printf( esc_html__( 'Use this field to insert some instructions above the new topic form. Allowed tags are: %s', 'buddy-bbpress-support-topic' ), join( ', ', array_keys( (array) wp_kses_allowed_html( 'forum' ) ) ) ); ?></p> <label class="screen-reader-text" for="support-topic-tpl"><?php esc_html_e( 'New Topic Template', 'buddy-bbpress-support-topic' ); ?></label> <textarea rows="3" cols="40" name="_bpbbpst_support_topic[tpl]" id="support-topic-tpl" style="width:100%"><?php echo bpbbpst_get_forum_support_topic_template( $forum->ID );?></textarea> <p class="description"><?php esc_html_e( 'The text added within this field will be used as a template for the content of new topics.', 'buddy-bbpress-support-topic' ); ?></p> </div> <?php do_action_ref_array( 'bpbbpst_forum_support_options_after_guides', array( $forum->ID, $support_only_style ) ); } function bbbp_save( $forum_id = 0 ) { $support_feature = false; $is_forum_category = bbp_is_forum_category( $forum_id ); if ( ! empty( $_POST['_bpbbpst_forum_settings'] ) ) { $support_feature = absint( $_POST['_bpbbpst_forum_settings'] ); } // Forum is not a category, save the support metas if ( ! empty( $support_feature ) && ! $is_forum_category ) { update_post_meta( $forum_id, '_bpbbpst_forum_settings', $support_feature ); if ( 3 === (int) $support_feature ) { delete_post_meta( $forum_id, '_bpbbpst_support_recipients' ); delete_post_meta( $forum_id, '_bpbbpst_support_topic_intro' ); delete_post_meta( $forum_id, '_bpbbpst_support_topic_tpl' ); } else { $recipients = ! empty( $_POST['_bpbbpst_support_recipients'] ) ? array_map( 'intval', $_POST['_bpbbpst_support_recipients'] ) : false ; if ( ! empty( $recipients ) && is_array( $recipients ) && count( $recipients ) > 0 ) { update_post_meta( $forum_id, '_bpbbpst_support_recipients', $recipients ); } else { delete_post_meta( $forum_id, '_bpbbpst_support_recipients' ); } if ( 2 === (int) $support_feature ) { if ( ! empty( $_POST['_bpbbpst_support_topic']['intro'] ) ) { update_post_meta( $forum_id, '_bpbbpst_support_topic_intro', wp_unslash( $_POST['_bpbbpst_support_topic']['intro'] ) ); } else { delete_post_meta( $forum_id, '_bpbbpst_support_topic_intro' ); } if ( ! empty( $_POST['_bpbbpst_support_topic']['tpl'] ) ) { update_post_meta( $forum_id, '_bpbbpst_support_topic_tpl', wp_unslash( $_POST['_bpbbpst_support_topic']['tpl'] ) ); } else { delete_post_meta( $forum_id, '_bpbbpst_support_topic_tpl' ); } } else if ( ! empty( $_POST['_bpbbpst_support_topic'] ) ) { delete_post_meta( $forum_id, '_bpbbpst_support_topic_intro' ); delete_post_meta( $forum_id, '_bpbbpst_support_topic_tpl' ); } } do_action( 'bpbbpst_forum_settings_updated', $forum_id, $support_feature ); // Check for support metas to eventually remove them } else if ( $is_forum_category ) { $support_feature = get_post_meta( $forum_id, '_bpbbpst_forum_settings', true ); if ( ! empty( $support_feature ) ) { delete_post_meta( $forum_id, '_bpbbpst_forum_settings' ); delete_post_meta( $forum_id, '_bpbbpst_support_recipients' ); delete_post_meta( $forum_id, '_bpbbpst_support_topic_intro' ); delete_post_meta( $forum_id, '_bpbbpst_support_topic_tpl' ); } } return $forum_id; }Unfortunately, I have not yet found a way to eliminate errors when editing themes in the console: (
November 12, 2018 at 1:57 pm #196120In reply to: 100 is limit for email notifications
haddly
ParticipantFor some reason, emails weren’t being sent out to subscribed users when a new forum post was posted. When i started using Asychronous they started working.
I wrote to the plugin author as well (today), and he has advised to use an email queueing plugin (due to the fact it calls the wp_mail() function. And then use the queueing plugin to set a number less than 100 with an interval.
I will try his advice, but unfortunately there are 2 plugins i found, both of which haven’t been updated in 3 years such as: https://wordpress.org/plugins/smtp-mailing-queue/November 11, 2018 at 7:59 am #196094Topic: Deleting Post Versions
in forum Requests & FeedbackClivesmith
ParticipantHi,
I am sure this has been asked before but I cannot find an answer.I have 289 posts/replies in my forum, if I look at the posts table I have 782 record, most of the “extra” ones are post_type revision, can I get rid of them.
I have seen a plugin that says it can do it but it is 5 years since it was updated, does anyone know if it still works? or is there another way that I have not seen ?
ThanksNovember 5, 2018 at 4:05 pm #196014lookingahead
Participant@robin-w oh, i used a string modifier to change ‘forum’ to ‘discussion’ — that is how i got the tabs in buddypress groups to say ‘discussion’ versus ‘forum’
i’ll go back and modify it to say ‘chat’ later, but for now many things in the site that used to say ‘forum’ say ‘discussion’….because i can change that at-will and it’s not causing conflicts, i’ve not updated it yet to say ‘chat.’
the problem that is currently unmovable though is the group forum slug name; it still says ‘forum’ at the end of all buddypress groups. that was unaffected by the string modifier, and is apparently hard-coded.
i went to the wp_options table and it does currently say ‘chat’…..sooooo…….apparently that setting is not being used in buddypress when it creates group forum slugs. it is defaulting to ‘forum’ no matter what i do.
is there another place within bbpress where the instructions on how to create a slug for any type of forum whatsoever is listed…even ‘hard-coded’ as a default setting?
October 22, 2018 at 2:27 am #195607AdventureRidingNZ
ParticipantBumping this as the sentiment in the original post about the lack of progress with maintaining bbbpress as an active project seems to be even more relevant now than when this topic was made.
While somehow wordpress.org indicates the bbpress plugin was last updated a week ago, the current version 2.5.14 was released in September 2017.
The next release as far as I can tell is 2.60, for which the latest development version, rc5, was first put out for feedback 13 months ago.
it is not reasonable to call this project under active development.
October 18, 2018 at 9:50 am #195552In reply to: Short code generated index is not formatted
ak08820
ParticipantI have updated the top level forum name to forums and made it a category and still I get the same result.
It displays like this
ForumTopics Posts Freshness
Forums
Root forum for WVV forums
Vegan Activism (0, 0), Vegan Diet (0, 0), Vegan Lifestyle (0, 0),
Vegan Recipes (0, 0)If I click on the word Forums above, it displays as follows, 1 forum per line which is what I need.
ForumTopics Posts Freshness
Forums
Vegan Activism (0, 0),
Vegan Diet (0, 0),
Vegan Lifestyle (0, 0),
Vegan Recipes (0, 0)October 14, 2018 at 9:53 am #195493Topic: WP Version
in forum Installationgrimmag
ParticipantHello. It shows that this plugin is “Untested with your version of WordPress” and hasn’t been updated in over a year? I don’t want to get another plugin that doesn’t work so could you tell me if there are any plans to update to the latest WP Version? It’s not like Version 4.9.8 just came out. Thanks in advance!
October 6, 2018 at 11:31 pm #195316jimmy369
ParticipantHi Robin, So sorry for late reply.
Yes, I still stuck on the issue. Hoping the topics of the certain forum (by forum ID) can automatically close after 30 minutes, even if it has updated during this period. I paste the original code of the plugin and I have tried to modify it but failed. I will appreciate your patience and help with this situation.
September 26, 2018 at 10:40 pm #195062Topic: bbpress update broke my website
in forum Installationremcuatotgiare
ParticipantI just got notice when I went to the backend of my wordpress site that there was an update. It was a bbpress update, so I clicked to install it and it broke my website. I can’t get to the plugins page or anything to uninstall the update. Please help! Even the front end of my website is down.
It looked like it installed correctly, but I get a HTTP ERROR 500 when I try to access my homepage or any other page on the website.
“Downloading update from
Unpacking the update…
Installing the latest version…
Removing the old version of the plugin…
Plugin updated successfully.”
Thank you,
September 25, 2018 at 12:16 pm #195034In reply to: Help please!
KVNHNF
ParticipantHi there!
We are having the same issue on our website whenever we create a new BBPress topic. Tried adding it to GTM manually didn’t do the trick either.
In the search console, there is an hatom error everytime you create a new forum topic.
Missing author
Missing updatedTesting data online with Google structured data testing tool does not reveal error in that regards any idea what JSON-LD should be added to BBPress files to fix this?
Thanks
September 12, 2018 at 11:42 am #194811In reply to: sticking a reply at the top of the repies
wpGonzales
ParticipantHi, I found the plugin “bbpress Sort Topic Replies” https://wordpress.org/plugins/bbpress-sort-topic-replies/ can do that, but only for the first reply of a thread. Also, the plugin has not been updated for a long time, it seems to be abandoned.
August 16, 2018 at 2:55 am #194374Topic: no topics display despite of forum has topics
in forum Troubleshootingantardrishti
ParticipantHi, in group forum or forum alone page it shows in first line ” This forum contains 2 topics, and was last updated by Drishti Connect 4 days, 23 hours ago.” and below it display “Oh bother! No topics were found here!” my wordpress ver is 4.9.8 | bbpress ver is 2.5.14 | buddpress ver is 3.1.0 and my theme is PE School by PixelEmu. its work fine with Twenty Seventeen wordpress theme.
my problem is that my site will be used by blind people and it need to be 100% accessible and PE School theme provide me the same. our theme provider are not ready to support voluntarily.
website link – https://drishticonnect.antardrishti.org/groups/visually-impaired/forum/topic/this-is-test-msg/
Any suggest/help will be great to support blind people.
thanks -
AuthorSearch Results