CMB2::save_group_field PHP Метод

save_group_field() публичный Метод

Save a repeatable group
С версии: 1.x.x
public save_group_field ( array $field_group ) : mixed
$field_group array CMB2_Field group field object
Результат mixed Return of CMB2_Field::update_data()
    public function save_group_field($field_group)
    {
        $base_id = $field_group->id();
        if (!isset($this->data_to_save[$base_id])) {
            return;
        }
        $old = $field_group->get_data();
        // Check if group field has sanitization_cb
        $group_vals = $field_group->sanitization_cb($this->data_to_save[$base_id]);
        $saved = array();
        $field_group->index = 0;
        $field_group->data_to_save = $this->data_to_save;
        foreach (array_values($field_group->fields()) as $field_args) {
            $field = $this->get_new_field($field_args, $field_group);
            $sub_id = $field->id(true);
            foreach ((array) $group_vals as $field_group->index => $post_vals) {
                // Get value
                $new_val = isset($group_vals[$field_group->index][$sub_id]) ? $group_vals[$field_group->index][$sub_id] : false;
                // Sanitize
                $new_val = $field->sanitization_cb($new_val);
                if (is_array($new_val) && $field->args('has_supporting_data')) {
                    if ($field->args('repeatable')) {
                        $_new_val = array();
                        foreach ($new_val as $group_index => $grouped_data) {
                            // Add the supporting data to the $saved array stack
                            $saved[$field_group->index][$grouped_data['supporting_field_id']][] = $grouped_data['supporting_field_value'];
                            // Reset var to the actual value
                            $_new_val[$group_index] = $grouped_data['value'];
                        }
                        $new_val = $_new_val;
                    } else {
                        // Add the supporting data to the $saved array stack
                        $saved[$field_group->index][$new_val['supporting_field_id']] = $new_val['supporting_field_value'];
                        // Reset var to the actual value
                        $new_val = $new_val['value'];
                    }
                }
                // Get old value
                $old_val = is_array($old) && isset($old[$field_group->index][$sub_id]) ? $old[$field_group->index][$sub_id] : false;
                $is_updated = !cmb2_utils()->isempty($new_val) && $new_val !== $old_val;
                $is_removed = cmb2_utils()->isempty($new_val) && !cmb2_utils()->isempty($old_val);
                // Compare values and add to `$updated` array
                if ($is_updated || $is_removed) {
                    $this->updated[] = $base_id . '::' . $field_group->index . '::' . $sub_id;
                }
                // Add to `$saved` array
                $saved[$field_group->index][$sub_id] = $new_val;
            }
            $saved[$field_group->index] = cmb2_utils()->filter_empty($saved[$field_group->index]);
        }
        $saved = cmb2_utils()->filter_empty($saved);
        return $field_group->update_data($saved, true);
    }