bp_nouveau_ajax_xprofile_get_field()
Ajax callback for get the conditional field based on the selected member type.
Description
Source
File: bp-templates/bp-nouveau/includes/xprofile/ajax.php
function bp_nouveau_ajax_xprofile_get_field() { global $wpdb; $response = array( 'feedback' => sprintf( '<div class="bp-feedback error bp-ajax-message"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', esc_html__( 'There was a problem performing this action. Please try again.', 'buddyboss' ) ), ); // Bail if not a GET action. if ( ! bp_is_get_request() ) { wp_send_json_error( $response ); } if ( empty( $_GET['_wpnonce'] ) ) { wp_send_json_error( $response ); } // Use default nonce $nonce = $_GET['_wpnonce']; $check = 'bp-core-register-page-js'; // Nonce check! if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, $check ) ) { wp_send_json_error( $response ); } $bp = buddypress(); $member_type_id = filter_input( INPUT_GET, 'type', FILTER_VALIDATE_INT ); $existing_fields = filter_input( INPUT_GET, 'fields', FILTER_SANITIZE_STRING ); $existing_fields_exclude = filter_input( INPUT_GET, 'fields', FILTER_SANITIZE_STRING ); $existing_fields_fixed_ids = filter_input( INPUT_GET, 'fixedIds', FILTER_SANITIZE_STRING ); $prevId = filter_input( INPUT_GET, 'prevId', FILTER_SANITIZE_STRING ); $member_type_key = bp_get_member_type_key( $member_type_id ); $prev_type_key = bp_get_member_type_key( $prevId ); $existing_fields_arr = explode( ',', $existing_fields ); $tinymce_added = filter_input( INPUT_GET, 'tinymce', FILTER_VALIDATE_INT ); $signup_group_id = bp_xprofile_base_group_id(); //FOr prev data $get_prev_ids = []; if ( 0 < strlen( $prev_type_key ) ) { $query = "SELECT object_id FROM {$bp->profile->table_name_meta} WHERE meta_key = 'member_type' AND meta_value = '{$prev_type_key}' AND object_type = 'field'"; $get_db_prev_ids = $wpdb->get_results( $query ); if ( isset( $get_db_prev_ids ) ) { foreach ( $get_db_prev_ids as $id ) { $get_prev_ids[] = $id->object_id; } } } $query = "SELECT object_id FROM {$bp->profile->table_name_meta} WHERE meta_key = 'member_type' AND meta_value = '{$member_type_key}' AND object_type = 'field'"; $get_db_ids = $wpdb->get_results( $query ); $new_fields = array(); if ( isset( $get_db_ids ) ) { foreach ( $get_db_ids as $id ) { if ( ! in_array( $id->object_id, $existing_fields_arr ) ) { $field = xprofile_get_field( $id->object_id, null, false ); if ( $field->group_id === (int) $signup_group_id ) { if ( ! in_array( $id->object_id, $get_prev_ids ) ) { $new_fields[] = $id->object_id; } $existing_fields_arr[] = $id->object_id; } } } } $existing_fields = implode( ',', $existing_fields_arr ); $include_fields = implode( ',', $new_fields ); $fixed_fields_arr = explode( ',', $existing_fields_fixed_ids ); ob_start(); if ( 0 === $tinymce_added ) { $check_editor = array(); foreach ( $fixed_fields_arr as $id ) { $fields = xprofile_get_field( $id, null, false ); if ( isset( $fields->type ) && 'textarea' === $fields->type ) { $check_editor[] = $id; } } if ( empty( $check_editor ) ) { $tinymce_added = 1; ?> <script type='text/javascript' src='<?php echo esc_url( site_url( '/' ) . WPINC . '/js/tinymce/tinymce.min.js' ); ?>'></script> <?php } } if ( bp_has_profile( "profile_group_id=$signup_group_id&exclude_fields=$existing_fields_exclude&include_fields=$include_fields" ) ) : // Get the current display settings from BuddyBoss > Settings > Profiles > Display Name Format. $current_value = bp_get_option( 'bp-display-name-format' ); while ( bp_profile_groups() ) : bp_the_profile_group(); while ( bp_profile_fields() ) : bp_the_profile_field(); // If First Name selected then do not add last name field. if ( 'first_name' === $current_value && bp_get_the_profile_field_id() === bp_xprofile_lastname_field_id() && false === bp_hide_last_name() ) { continue; // If Nick Name selected then do not add last name field. } elseif ( 'nickname' === $current_value && bp_get_the_profile_field_id() === bp_xprofile_lastname_field_id() && false === bp_hide_nickname_last_name() ) { continue; // If Nick Name selected then do not add first name field. } elseif ( 'nickname' === $current_value && bp_get_the_profile_field_id() === bp_xprofile_firstname_field_id() && false === bp_hide_nickname_first_name() ) { continue; } ?> <div<?php bp_field_css_class( 'editfield ajax_added' ); bp_field_data_attribute(); ?>> <fieldset> <?php $field_type = bp_xprofile_create_field_type( bp_get_the_profile_field_type() ); $field_type->edit_field_html(); ?> </fieldset> </div> <?php endwhile; endwhile; endif; $content = ob_get_clean(); $response = array(); $response['field_ids'] = $existing_fields; $response['field_html'] = $content; $response['field_tiny'] = $tinymce_added; wp_send_json_success( $response ); }
Changelog
Version | Description |
---|---|
BuddyBoss 1.1.6 | 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.