flexible-shipping
/
vendor_prefixed
/
wpdesk
/
wp-forms
/
src
/
Renderer
/
JsonNormalizedRenderer.php
JsonNormalizedRenderer.php
59 lines
| 1 | <?php |
| 2 | |
| 3 | namespace FSVendor\WPDesk\Forms\Renderer; |
| 4 | |
| 5 | use FSVendor\WPDesk\Forms\FieldProvider; |
| 6 | use FSVendor\WPDesk\Forms\FieldRenderer; |
| 7 | /** |
| 8 | * Can render form fields as JSON. |
| 9 | * |
| 10 | * @package WPDesk\Forms\Renderer |
| 11 | */ |
| 12 | class JsonNormalizedRenderer implements FieldRenderer |
| 13 | { |
| 14 | /** |
| 15 | * @param FieldProvider $provider |
| 16 | * @param array $fields_data |
| 17 | * @param string $name_prefix |
| 18 | * |
| 19 | * @return array Normalized fields with data. |
| 20 | */ |
| 21 | public function render_fields(FieldProvider $provider, array $fields_data, $name_prefix = '') |
| 22 | { |
| 23 | $rendered_fields = []; |
| 24 | foreach ($provider->get_fields() as $field) { |
| 25 | $rendered = ['name' => $field->get_name(), 'template' => $field->get_template_name(), 'multiple' => $field->is_multiple(), 'disabled' => $field->is_disabled(), 'readonly' => $field->is_readonly(), 'required' => $field->is_required(), 'prefix' => $name_prefix, 'value ' => isset($fields_data[$field->get_name()]) ? $fields_data[$field->get_name()] : $field->get_default_value()]; |
| 26 | if ($field->has_classes()) { |
| 27 | $rendered['class'] = $field->get_classes(); |
| 28 | } |
| 29 | if ($field->has_description()) { |
| 30 | $rendered['description'] = $field->get_description(); |
| 31 | } |
| 32 | if ($field->has_description_tip()) { |
| 33 | $rendered['description_tip'] = $field->get_description_tip(); |
| 34 | } |
| 35 | if ($field->has_label()) { |
| 36 | $rendered['label'] = $field->get_label(); |
| 37 | } |
| 38 | if ($field->has_placeholder()) { |
| 39 | $rendered['placeholder'] = $field->get_placeholder(); |
| 40 | } |
| 41 | $options = $field->get_possible_values(); |
| 42 | if ($options) { |
| 43 | $rendered['options'] = $options; |
| 44 | } |
| 45 | if ($field->has_data()) { |
| 46 | $data = $field->get_data(); |
| 47 | $rendered['data'] = []; |
| 48 | foreach ($data as $data_name => $data_value) { |
| 49 | $rendered['data'][] = ['name' => $data_name, 'value' => $data_value]; |
| 50 | } |
| 51 | } |
| 52 | if (json_encode($rendered) !== \false) { |
| 53 | $rendered_fields[] = $rendered; |
| 54 | } |
| 55 | } |
| 56 | return $rendered_fields; |
| 57 | } |
| 58 | } |
| 59 |