/**
* Filters the data to remove those values which are not suppose to be enabled to edit according to the declared conditionals.
*/
function cmb2_conditional_filter_data_to_save(CMB2 $cmb2, $object_id)
{
foreach ($cmb2->prop('fields') as $field_args) {
if (!(array_key_exists('attributes', $field_args) && array_key_exists('data-conditional-id', $field_args['attributes']))) {
continue;
}
$field_id = $field_args['id'];
$conditional_id = $field_args['attributes']['data-conditional-id'];
if (array_key_exists('data-conditional-value', $field_args['attributes'])) {
$conditional_value = $field_args['attributes']['data-conditional-value'];
$conditional_value = ($decoded_conditional_value = @json_decode($conditional_value)) ? $decoded_conditional_value : $conditional_value;
if (is_array($conditional_value) && !in_array($cmb2->data_to_save[$conditional_id], $conditional_value)) {
unset($cmb2->data_to_save[$field_id]);
continue;
}
if (!is_array($conditional_value) && $cmb2->data_to_save[$conditional_id] != $conditional_value) {
unset($cmb2->data_to_save[$field_id]);
continue;
}
}
if (!$cmb2->data_to_save[$conditional_id]) {
unset($cmb2->data_to_save[$field_id]);
continue;
}
}
}