BP_Admin_Setting_Xprofile::settings_save()

Description

Source

File: bp-core/admin/settings/bp-admin-setting-xprofile.php

	public function settings_save() {
        $if_disabled_before_saving = bp_disable_advanced_profile_search();
        
		parent::settings_save();
        
        $if_disabled_after_saving = bp_disable_advanced_profile_search();

        /**
         * sync bp-enable-member-dashboard with cutomizer settings.
		 *
         * @since BuddyBoss 1.0.0
         */
        $bp_nouveau_appearance = bp_get_option( 'bp_nouveau_appearance', array() );
        $bp_nouveau_appearance[ 'user_front_page' ] = isset( $_POST[ 'bp-enable-member-dashboard' ] ) ? $_POST[ 'bp-enable-member-dashboard' ] : 0;
        $bp_nouveau_appearance[ 'user_front_page_redirect' ] = isset( $_POST[ 'bp-enable-member-dashboard-redirect' ] ) ? $_POST[ 'bp-enable-member-dashboard-redirect' ] : 0;
        bp_update_option( 'bp_nouveau_appearance', $bp_nouveau_appearance );

        //Set requirement for last name based on display format
        if ( isset( $_POST[ 'bp-display-name-format' ] ) && $_POST[ 'bp-display-name-format' ] == 'first_last_name' ) {
        	if ( $last_name_field = xprofile_get_field( bp_xprofile_lastname_field_id() ) ) {
        		$last_name_field->is_required = true;
        		$last_name_field->save();
        	}
        }
        
        if ( $if_disabled_before_saving && ! $if_disabled_after_saving ) {
            /**
             * Advanced profile search was disabled before and is now enabled.
             * So ideally, the new 'profile search' menu should now be visible under users nav.
             * But that doesn't happen becuase by the time settings are updated, register_post_type hooks have already been executed.
             * So user doesn't see that untill next reload/request.
             * 
             * To avoid that, we'll need to do a force redirect.
             */
            wp_safe_redirect( bp_get_admin_url( 'admin.php?page=bp-settings&tab=bp-xprofile' ) );
            exit();
        }
	}

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.