xprofile_update_clones_on_template_update( BP_XProfile_Field $field )
Update repeater/clone fields when the main/template field is updated.
Description
Parameters
- $field
-
(Required) Description
Source
File: bp-xprofile/bp-xprofile-repeaters.php
function xprofile_update_clones_on_template_update ( $field ) {
global $wpdb;
$bp = buddypress();
//get all clone field ids
$clone_ids = $wpdb->get_col( $wpdb->prepare(
"SELECT f.id FROM {$bp->profile->table_name_fields} AS f JOIN {$bp->profile->table_name_meta} AS fm ON f.id = fm.object_id "
. " WHERE f.parent_id = 0 AND fm.meta_key = '_cloned_from' AND fm.meta_value = %d ",
$field->id
) );
if ( empty( $clone_ids ) || is_wp_error( $clone_ids ) ) {
return;
}
$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 ) ) {
$sql = $wpdb->prepare(
"UPDATE {$bp->profile->table_name_fields} SET "
. " group_id = %d, parent_id = %d, type = %s, name = %s, description = %s, is_required = %d, "
. " is_default_option = %d, option_order = %d, order_by = %d, can_delete = %d "
. " WHERE id IN ( ". implode( ',', $clone_ids ) ." )",
$db_row[ 'group_id' ], $db_row[ 'parent_id' ], $db_row[ 'type' ], $db_row[ 'name' ], $db_row[ 'description' ], $db_row[ 'is_required' ],
$db_row[ 'is_default_option' ], $db_row[ 'option_order' ], $db_row[ 'order_by' ], $db_row[ 'can_delete' ]
);
$wpdb->query( $sql );
$metas = $wpdb->get_results( "SELECT * FROM {$bp->profile->table_name_meta} WHERE object_id = {$field->id} AND object_type = 'field'", ARRAY_A );
if ( !empty( $metas ) && !is_wp_error( $metas ) ) {
foreach ( $clone_ids as $clone_id ) {
foreach ( $metas as $meta ) {
bp_xprofile_update_meta( $clone_id, 'field', $meta['meta_key'], $meta['meta_value'] );
}
}
}
}
}
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.