In Gravity Form’s class GF_Field_Checkbox
there is a method called get_value_export()
that returns implode( ', ', $selected )
for a bunch of elements created by GFCommon::selection_display()
The class-gf-field-checkbox.php
code so you can see what I am referencing.
public function get_value_export( $entry, $input_id = '', $use_text = false, $is_csv = false ) {
if ( empty( $input_id ) || absint( $input_id ) == $input_id ) {
$selected = array();
foreach ( $this->inputs as $input ) {
$index = (string) $input['id'];
if ( ! rgempty( $index, $entry ) ) {
$selected[] = GFCommon::selection_display( rgar( $entry, $index ), $this, rgar( $entry, 'currency' ), $use_text );
}
}
return implode( ', ', $selected );
...
This is all well and good, however, the problem with this is that I’m exploding the values that are returned from this method.
$answer = explode(', ', $field->get_value_export($entry));
I do not want to do this as there exists an edge case where a potential value
could have a comma which gets exploded. For example, say there is an option in my form like below
Label: Are you not entertained?
Value:
[x] Lorem ipsum dolor sit amet, consectetur adipiscing elit
[x] Duis blandit, risus vel rutrum suscipit
[ ] Duis cursus ex risus
As you can see the first two selections are selected, and this will be picked up and will then be exploded as such
['Lorem ipsum dolor sit amet', 'consectetur adipiscing elit', 'Duis blandit', 'risus vel rutrum suscipit']
When it should have been exploded like this
['Lorem ipsum dolor sit amet, consectetur adipiscing elit', 'Duis blandit, risus vel rutrum suscipit']
What method exists in GFAPI, or custom code can I use that could resolve this issue?
2
Answers
Rochelle's answer was useful in producing this solution. Instead of using
GF_Field_Checkbox
's method, I've created my own function that will pull out the necessary values into an array, while effectively getting rid of the comma issue, due to usingexplode()
You can retrieve the checkbox values in the following way: