CssOption.php
1 week ago
CustomFieldDisabledOption.php
1 week ago
CustomFieldOption.php
1 week ago
DefaultOption.php
1 week ago
DisplayOnAccountAddressOption.php
1 week ago
DisplayOnAccountOrderOption.php
1 week ago
DisplayOnEmailsOption.php
1 week ago
DisplayOnOnlyAddressOption.php
1 week ago
DisplayOnOption.php
1 week ago
DisplayOnThankYouOption.php
1 week ago
DisplayOnWithoutAddressOption.php
1 week ago
EnabledOption.php
1 week ago
ExternalFieldInfoOption.php
1 week ago
ExternalFieldOption.php
1 week ago
FieldTypeDefaultOption.php
1 week ago
FieldTypeOption.php
1 week ago
FormattingFieldLabelOption.php
1 week ago
FormattingNewLineOption.php
1 week ago
FormattingOption.php
1 week ago
FormattingStateAbbrOption.php
1 week ago
FormattingStateCommaOption.php
1 week ago
FormattingStateOption.php
1 week ago
FormattingWcOption.php
1 week ago
ImageOption.php
1 week ago
ImageWidthOption.php
1 week ago
LabelOption.php
1 week ago
LabelOptionallyOption.php
1 week ago
LogicAdvOption.php
1 week ago
NameOption.php
1 week ago
OptionAbstract.php
1 week ago
OptionIntegration.php
1 week ago
OptionInterface.php
1 week ago
PlaceholderCheckboxOption.php
1 week ago
PlaceholderOption.php
1 week ago
PricingAdvOption.php
1 week ago
PriorityOption.php
1 week ago
RegexMessageOption.php
1 week ago
RegexPhoneOption.php
1 week ago
RequiredHiddenOption.php
1 week ago
RequiredOption.php
1 week ago
RequiredWcHiddenOption.php
1 week ago
SettingJqueryCssOption.php
1 week ago
SettingJqueryOption.php
1 week ago
SettingSectionsAdvOption.php
1 week ago
ValidationInfoOption.php
1 week ago
ValidationOption.php
1 week ago
ValidationPostcodeOption.php
1 week ago
ValidationWcOption.php
1 week ago
ValueMaxOption.php
1 week ago
ValueMinOption.php
1 week ago
ValueStepOption.php
1 week ago
OptionIntegration.php
86 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WPDesk\FCF\Free\Settings\Option; |
| 4 | |
| 5 | /** |
| 6 | * Initializes integration for option of field. |
| 7 | */ |
| 8 | class OptionIntegration { |
| 9 | |
| 10 | /** |
| 11 | * Class object for field type. |
| 12 | * |
| 13 | * @var OptionInterface |
| 14 | */ |
| 15 | private $option_object; |
| 16 | |
| 17 | /** |
| 18 | * Class constructor. |
| 19 | * |
| 20 | * @param OptionInterface $option_object Class object of field type. |
| 21 | */ |
| 22 | public function __construct( OptionInterface $option_object ) { |
| 23 | $this->option_object = $option_object; |
| 24 | } |
| 25 | |
| 26 | /** |
| 27 | * Returns list of settings for field. |
| 28 | * |
| 29 | * @return array Settings of field. |
| 30 | */ |
| 31 | public function get_field_settings(): array { |
| 32 | $settings = [ |
| 33 | 'name' => $this->option_object->get_option_name(), |
| 34 | 'type' => $this->option_object->get_option_type(), |
| 35 | 'tab_name' => $this->option_object->get_option_tab(), |
| 36 | 'label' => $this->option_object->get_option_label(), |
| 37 | 'label_row' => $this->option_object->get_option_row_label(), |
| 38 | 'label_tooltip' => $this->option_object->get_label_tooltip(), |
| 39 | 'label_tooltip_url' => $this->option_object->get_label_tooltip_url(), |
| 40 | 'html_atts' => $this->option_object->get_input_atts(), |
| 41 | 'display_pattern' => $this->option_object->get_print_pattern(), |
| 42 | 'readonly' => $this->option_object->is_readonly(), |
| 43 | 'validation_rules' => array_map( |
| 44 | function ( string $validation_regex, string $validation_message ) { |
| 45 | return [ |
| 46 | 'regex' => $validation_regex, |
| 47 | 'message' => $validation_message, |
| 48 | 'is_fatal' => true, |
| 49 | ]; |
| 50 | }, |
| 51 | array_keys( $this->option_object->get_validation_rules() ), |
| 52 | $this->option_object->get_validation_rules() |
| 53 | ), |
| 54 | 'option_name_rows' => $this->option_object->get_option_name_to_rows(), |
| 55 | 'default_value' => $this->option_object->get_default_value(), |
| 56 | 'show_if_regexes' => $this->option_object->get_options_regexes_to_display(), |
| 57 | 'refresh_trigger' => $this->option_object->is_refresh_trigger(), |
| 58 | 'endpoint_route' => $this->option_object->get_endpoint_route(), |
| 59 | 'endpoint_params' => $this->option_object->get_endpoint_option_names(), |
| 60 | 'endpoint_autorefresh' => $this->option_object->is_endpoint_autorefreshed(), |
| 61 | 'update_field_callback' => [ $this->option_object, 'update_field_data' ], |
| 62 | 'save_field_callback' => [ $this->option_object, 'save_field_data' ], |
| 63 | 'items' => [], |
| 64 | ]; |
| 65 | |
| 66 | switch ( $settings['type'] ) { |
| 67 | case OptionAbstract::FIELD_TYPE_CHECKBOX_LIST: |
| 68 | case OptionAbstract::FIELD_TYPE_GROUP: |
| 69 | case OptionAbstract::FIELD_TYPE_REPEATER: |
| 70 | case OptionAbstract::FIELD_TYPE_REPEATER_GROUP: |
| 71 | case OptionAbstract::FIELD_TYPE_REPEATER_RULES: |
| 72 | foreach ( $this->option_object->get_children() as $child_object ) { |
| 73 | $settings['items'][] = ( new OptionIntegration( $child_object ) )->get_field_settings(); |
| 74 | } |
| 75 | break; |
| 76 | case OptionAbstract::FIELD_TYPE_RADIO: |
| 77 | case OptionAbstract::FIELD_TYPE_SELECT: |
| 78 | case OptionAbstract::FIELD_TYPE_SELECT_MULTI: |
| 79 | $settings['items'] = $this->option_object->get_values(); |
| 80 | break; |
| 81 | } |
| 82 | |
| 83 | return $settings; |
| 84 | } |
| 85 | } |
| 86 |