bp_member_type_import_submenu_page()

Import profile types.

Description

Source

File: bp-core/admin/bp-core-admin-functions.php

function bp_member_type_import_submenu_page() {
	?>
	<div class="wrap">
		<h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( __( 'Tools', 'buddyboss' ) ); ?></h2>
		<div class="nav-settings-subsubsub">
			<ul class="subsubsub">
				<?php bp_core_tools_settings_admin_tabs(); ?>
			</ul>
		</div>
	</div>
	<div class="wrap">
		<div class="bp-admin-card section-bp-member-type-import">
			<div class="boss-import-area">
				<form id="bp-member-type-import-form" method="post" action="">
					<div class="import-panel-content">
						<h2><?php _e( 'Import Profile Types', 'buddyboss' ); ?></h2>
						<p><?php
							printf(
							__( 'Import your existing <a href="%s">profile types</a> (or "member types" in BuddyPress). You may have created these types <strong>manually via code</strong> or by using a <strong>third party plugin</strong>. Click "Run Migration" below and all registered member types will be imported. Then you can remove the old code or plugin.', 'buddyboss' ),
							add_query_arg([
								'post_type' => bp_get_member_type_post_type(),
							], admin_url( 'edit.php' ) )
						); ?></p><br />
						<input type="submit" value="<?php _e('Run Migration', 'buddyboss'); ?>" id="bp-member-type-import-submit" name="bp-member-type-import-submit" class="button-primary">
					</div>
				</form>
			</div>
		</div>
	</div>
	<br />

	<?php

	if (isset($_POST['bp-member-type-import-submit'])) {

		$registered_member_types = bp_get_member_types();
		$created_member_types = bp_get_active_member_types();
		$active_member_types = array();

		foreach ( $created_member_types as $created_member_type ) {
			$name = bp_get_member_type_key( $created_member_type );
			array_push($active_member_types, $name);
		}

		$registered_member_types = array_diff($registered_member_types, $active_member_types);

		if (empty($registered_member_types)) {
			?>
			<div class="wrap">
				<div class="error notice " id="message"><p><?php _e('Nothing to import', 'buddyboss'); ?></p></div>
			</div>
			<?php
		}

		foreach ( $registered_member_types as $key => $import_types_data ) {
			$sing_name = ucfirst($import_types_data);
			// Create post object
			$my_post = array(
				'post_type'     => bp_get_member_type_post_type(),
				'post_title'    => $sing_name,
				'post_status'   => 'publish',
				'post_author'   => get_current_user_id(),
			);

			// Insert the post into the database
			$post_id = wp_insert_post($my_post);

			if ( $post_id ) {
				$key = get_post_field( 'post_name', $post_id );
				$term = term_exists( sanitize_key( $key ), bp_get_member_type_tax_name() );
				if ( 0 !== $term && null !== $term ) {

					$digits = 3;
					$unique = rand(pow(10, $digits-1), pow(10, $digits)-1);
					$key = $key.$unique;
				}
				update_post_meta( $post_id, '_bp_member_type_key', sanitize_key( $key ) );
				update_post_meta( $post_id, '_bp_member_type_label_name', $sing_name );
				update_post_meta( $post_id, '_bp_member_type_label_singular_name', $sing_name );

				?><div class="updated notice " id="message"><p><?php _e('Successfully Imported', 'buddyboss'); ?></p></div><?php
			}

		}

	}

}

Changelog

Changelog
Version Description
BuddyBoss 1.0.0 Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.