bp_clone_field_for_repeater_sets( type $field_id )
Copy form fields for field sets that repeat.
Description
Parameters
- $field_id
-
(Required)
Return
(boolean)
Source
File: bp-xprofile/bp-xprofile-repeaters.php
function bp_clone_field_for_repeater_sets ( $field_id ) { global $wpdb; $bp = buddypress(); $db_row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->profile->table_name_fields} WHERE id = %d", $field_id ), ARRAY_A ); if ( !empty( $db_row ) && !is_wp_error( $db_row ) ) { $template_field_id = $db_row['id']; $new_field_column_names = array( 'group_id', 'parent_id', 'type', 'name', 'description', 'is_required', 'is_default_option', 'field_order', 'option_order', 'order_by', 'can_delete', ); $new_field_column_data_types = array( '%d', '%d', '%s', '%s', '%s', '%d', '%d', '%d', '%d', '%s', '%d' ); $new_field_column_data = array( 'group_id' => $db_row['group_id'], 'parent_id' => $db_row['parent_id'], 'type' => $db_row['type'], 'name' => $db_row['name'], 'description' => $db_row['description'], 'is_required' => $db_row['is_required'], 'is_default_option' => $db_row['is_default_option'], 'field_order' => $db_row['field_order'], 'option_order' => $db_row['option_order'], 'order_by' => $db_row['order_by'], 'can_delete' => $db_row['can_delete'], ); $inserted = $wpdb->insert( $bp->profile->table_name_fields, $new_field_column_data, $new_field_column_data_types ); if ( $inserted ) { $new_field_id = $wpdb->insert_id; $metas = $wpdb->get_results( "SELECT * FROM {$bp->profile->table_name_meta} WHERE object_id = {$template_field_id} AND object_type = 'field'", ARRAY_A ); if ( !empty( $metas ) && !is_wp_error( $metas ) ) { foreach ( $metas as $meta ) { bp_xprofile_update_meta( $new_field_id, 'field', $meta['meta_key'], $meta['meta_value'] ); } } $current_clone_number = 1; //get all clones of the template field $all_clones = $wpdb->get_col( "SELECT object_id FROM {$bp->profile->table_name_meta} WHERE meta_key = '_cloned_from' AND meta_value = {$template_field_id}" ); if ( !empty( $all_clones ) && !is_wp_error( $all_clones ) ) { $last_max_clone_number = $wpdb->get_var( "SELECT MAX( meta_value ) FROM {$bp->profile->table_name_meta} WHERE meta_key = '_clone_number' AND object_id IN (". implode( ',', $all_clones ) .")" ); $last_max_clone_number = !empty( $last_max_clone_number ) ? absint( $last_max_clone_number ) : 0; $current_clone_number = $last_max_clone_number + 1; } bp_xprofile_update_meta( $new_field_id, 'field', '_is_repeater_clone', true ); bp_xprofile_update_meta( $new_field_id, 'field', '_cloned_from', $template_field_id ); bp_xprofile_update_meta( $new_field_id, 'field', '_clone_number', $current_clone_number ); //fix field order $field_order = ( $current_clone_number * bp_profile_field_set_max_cap() ) + $db_row[ 'field_order' ]; $wpdb->update( $bp->profile->table_name_fields, array( 'field_order' => $field_order ), array( 'id' => $new_field_id ), array( '%d' ), array( '%d' ) ); return $new_field_id; } } return false; }
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.