Current path: home/webdevt/www/demo2/wp-content/plugins/divi-contact-form-helper/d5/server/Frontend/ContactField/
?? Go up: /home/webdevt/www/demo2/wp-content/plugins/divi-contact-form-helper/d5/server/Frontend
<?php
namespace KS_PAC_DCFH\Frontend\ContactField;
if (!defined('ABSPATH')) {
exit;
}
class ContactFieldConversionOutline
{
public function load(): void
{
add_filter(
'divi.moduleLibrary.conversion.moduleConversionOutline',
[$this, 'maybe_module_conversion_outline'],
10,
2
);
}
public function maybe_module_conversion_outline($conversion_outline, $module_name)
{
if ('divi/contact-field' !== $module_name) {
return $conversion_outline;
}
// ==========================
// Field Type Options
// ==========================
$conversion_outline['module']['field_type'] = 'fieldItem.advanced.type.*';
$conversion_outline['module']['use_file_upload'] = 'fieldItem.advanced.type.*';
$conversion_outline['module']['use_datetime'] = 'fieldItem.advanced.type.*';
$conversion_outline['module']['use_signature_pad'] = 'fieldItem.advanced.type.*';
$conversion_outline['module']['use_star_rating'] = 'fieldItem.advanced.type.*';
$conversion_outline['module']['use_field_html'] = 'fieldItem.advanced.type.*';
$conversion_outline['module']['use_custom_phone_format'] = 'fieldItem.advanced.type.*';
// ==========================
// Placeholder & Description
// ==========================
$conversion_outline['module']['use_field_placeholder'] = 'fieldCustomItem.advanced.hidePlaceholder.*';
$conversion_outline['module']['field_placeholder'] = 'fieldCustomItem.innerContent.placeholderText.*';
$conversion_outline['module']['field_description'] = 'fieldCustomItem.innerContent.descriptionText.*';
$conversion_outline['module']['field_description_location'] = 'fieldCustomItem.advanced.descriptionPosition.*';
// ==========================
// Field Label & Layout
// ==========================
$conversion_outline['module']['use_field_label'] = 'fieldCustomLayout.advanced.showLabel.*';
$conversion_outline['module']['show_field_labels_left'] = 'fieldCustomLayout.advanced.showLabelOnLeft.*';
$conversion_outline['module']['field_label_width'] = 'fieldCustomLayout.advanced.labelWidth.*';
$conversion_outline['module']['textarea_min_height'] = 'fieldCustomLayout.advanced.textAreaHeight.*';
// ==========================
// Field Requirements & Validation
// ==========================
$conversion_outline['module']['use_required_asterisk'] = 'fieldCustomItem.advanced.showAsterisk.*';
$conversion_outline['module']['custom_phone_format'] = 'fieldCustomItem.innerContent.phoneNumberPattern.*';
// ==========================
// Value Expansion Function Map
// ==========================
$conversion_outline['valueExpansionFunctionMap'] = [
'field_type' => [$this, 'convert_field_type'],
'use_custom_phone_format' => [$this, 'convert_phone_input'],
];
// ==========================
// Field Icon
// ==========================
$conversion_outline['module']['use_field_icon'] = "fieldIcon.advanced.showIcon.*";
$conversion_outline['module']['field_icon'] = "fieldIcon.advanced.icon.*";
$conversion_outline['module']['field_icon_color'] = "fieldIcon.decoration.iconColor.*";
$conversion_outline['valueExpansionFunctionMap']['field_icon'] = [$this, 'convert_icon'];
// ==========================
// Dropdown & Search Options
// ==========================
$conversion_outline['module']['use_dropdown_search'] = 'fieldCustomItem.advanced.searchInDropdownEnabled.*';
$conversion_outline['valueExpansionFunctionMap']['select_options'] = [$this, 'sortable_list_converter'];
$conversion_outline['valueExpansionFunctionMap']['booleancheckbox_options'] = [$this, 'sortable_list_converter'];
// ==========================
// Checkboxes
// ==========================
$conversion_outline['module']['checkbox_options'] = 'fieldItem.advanced.checkboxOptions.*';
$conversion_outline['module']['checkbox_layout'] = 'fieldCustomLayout.advanced.checkboxLayout.*';
$conversion_outline['module']['checkbox_columns'] = 'fieldCustomLayout.advanced.checkboxColumns.*';
$conversion_outline['valueExpansionFunctionMap']['checkbox_options'] = [$this, 'sortable_list_converter'];
$conversion_outline['valueExpansionFunctionMap']['checkbox_layout'] = [$this, 'convert_checkboxradio_layout'];
$conversion_outline['valueExpansionFunctionMap']['checkbox_columns'] = [$this, 'convert_checkboxradio_columns'];
// ==========================
// Radio Buttons
// ==========================
$conversion_outline['module']['radio_options'] = 'fieldItem.advanced.radioOptions.*';
$conversion_outline['module']['radio_layout'] = 'fieldCustomLayout.advanced.radioLayout.*';
$conversion_outline['module']['radio_columns'] = 'fieldCustomLayout.advanced.radioColumns.*';
$conversion_outline['valueExpansionFunctionMap']['radio_options'] = [$this, 'sortable_list_converter'];
$conversion_outline['valueExpansionFunctionMap']['radio_layout'] = [$this, 'convert_checkboxradio_layout'];
$conversion_outline['valueExpansionFunctionMap']['radio_columns'] = [$this, 'convert_checkboxradio_columns'];
// ==========================
// File Upload
// ==========================
$conversion_outline['module']['file_size'] = 'fileUpload.innerContent.maxFileSize.*';
$conversion_outline['module']['files_limit'] = 'fileUpload.innerContent.maxFileCount.*';
$conversion_outline['module']['file_mime'] = 'fileUpload.advanced.allowedFileTypes.*';
$conversion_outline['valueExpansionFunctionMap']['use_file_upload'] = [$this, 'convert_file_upload_type'];
$conversion_outline['valueExpansionFunctionMap']['file_mime'] = [$this, 'convert_file_mime'];
// ==========================
// Date Picker
// ==========================
$conversion_outline['module']['datetime_type'] = 'dateTimePicker.advanced.pickerFieldType.*';
$conversion_outline['module']['datetime_format'] = 'dateTimePicker.advanced.dateTimeFormat.*';
$conversion_outline['module']['date_format'] = 'dateTimePicker.advanced.dateFormat.*';
$conversion_outline['module']['custom_date_format'] = 'dateTimePicker.innerContent.customDateFormat.*';
$conversion_outline['module']['time_format'] = 'dateTimePicker.advanced.timeFormat.*';
$conversion_outline['module']['custom_time_format'] = 'dateTimePicker.innerContent.customTimeFormat.*';
$conversion_outline['module']['disabled_past_times'] = 'dateTimePicker.advanced.disablePastTimes.*';
$conversion_outline['module']['datetime_week_start'] = 'dateTimePicker.advanced.dayOfWeekStart.*';
$conversion_outline['module']['datetime_disabled_week_days'] = 'dateTimePicker.advanced.disabledDaysOfWeek.*';
$conversion_outline['module']['datetime_disabled_weeks'] = 'dateTimePicker.advanced.disableWeekRowNumberMarker.*';
$conversion_outline['module']['datetime_disabled_past_days'] = 'dateTimePicker.advanced.disablePastDates.*';
$conversion_outline['module']['datetime_disabled_current_date'] = 'dateTimePicker.advanced.disableCurrentDate.*';
$conversion_outline['module']['min_date_type'] = 'dateTimePicker.advanced.minDateType.*';
$conversion_outline['module']['fixed_min_date'] = 'dateTimePicker.innerContent.minFixedDate.*';
$conversion_outline['module']['relative_min_date'] = 'dateTimePicker.innerContent.minRelativeDate.*';
$conversion_outline['module']['max_date_type'] = 'dateTimePicker.advanced.maxDateType.*';
$conversion_outline['module']['fixed_max_date'] = 'dateTimePicker.innerContent.maxFixedDate.*';
$conversion_outline['module']['relative_max_date'] = 'dateTimePicker.innerContent.relativeFixedDate.*';
$conversion_outline['module']['available_dates'] = 'dateTimePicker.innerContent.availableDates.*';
$conversion_outline['module']['unavailable_dates'] = 'dateTimePicker.innerContent.unAvailableDates.*';
$conversion_outline['module']['min_time'] = 'dateTimePicker.innerContent.minSelectableTime.*';
$conversion_outline['module']['max_time'] = 'dateTimePicker.innerContent.maxSelectableTime.*';
$conversion_outline['module']['available_times'] = 'dateTimePicker.innerContent.globalAvailableTimes.*';
$conversion_outline['module']['unavailable_times'] = 'dateTimePicker.innerContent.globalUnAvailableTimes.*';
$conversion_outline['module']['time_steps'] = 'dateTimePicker.innerContent.timeSlotInterval.*';
$conversion_outline['module']['datetime_inline'] = 'dateTimePicker.advanced.showInline.*';
$conversion_outline['module']['datetime_setcurrent_datetime'] = 'dateTimePicker.advanced.autoFillCurrentDateTime.*';
$conversion_outline['module']['datetime_locale'] = 'dateTimePicker.advanced.pickerLocale.*';
$conversion_outline['module']['datetime_locale_direction'] = 'dateTimePicker.advanced.enableRTL.*';
$conversion_outline['module']['use_datetime_icscalendar_sync'] = 'dateTimePicker.advanced.enableICSCalendarSync.*';
$conversion_outline['module']['datetime_ics_sync_url'] = 'dateTimePicker.innerContent.icsFeedURL.*';
foreach (['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'] as $day) {
$day_capitalized = ucfirst($day);
$conversion_outline['module']["available_times_$day"] = "dateTimePicker.innerContent.availableTimes$day_capitalized.*";
$conversion_outline['module']["unavailable_times_$day"] = "dateTimePicker.innerContent.unAvailableTimes$day_capitalized.*";
}
$conversion_outline['valueExpansionFunctionMap']['use_datetime'] = [$this, 'convert_datetime_input'];
$conversion_outline['valueExpansionFunctionMap']['datetime_type'] = [$this, 'convert_datetime_type'];
$conversion_outline['valueExpansionFunctionMap']['datetime_format'] = [$this, 'convert_datetime_format'];
$conversion_outline['valueExpansionFunctionMap']['datetime_disabled_week_days'] = [$this, 'convert_week_days'];
// ==========================
// Signature Pad
// ==========================
$conversion_outline['module']['sp_width'] = 'signaturePad.decoration.canvasWidth.*';
$conversion_outline['module']['sp_height'] = 'signaturePad.decoration.canvasHeight.*';
$conversion_outline['module']['sp_background_color'] = 'signaturePad.decoration.canvasBackground.*';
$conversion_outline['module']['sp_pen_color'] = 'signaturePad.decoration.canvasPenColor.*';
$conversion_outline['module']['sp_pen_thickness'] = 'signaturePad.decoration.canvasPenThickness.*';
$conversion_outline['module']['sp_margin'] = 'signaturePad.decoration.canvasSpacing.*.margin';
$conversion_outline['module']['sp_padding'] = 'signaturePad.decoration.canvasSpacing.*.padding';
$conversion_outline['module']['sp_border'] = 'signaturePad.decoration.canvasBorder.*';
$conversion_outline['module']['sp_border_color'] = 'signaturePad.decoration.canvasBorder.*.styles.all.color';
$conversion_outline['module']['sp_border_width'] = 'signaturePad.decoration.canvasBorder.*.styles.all.width';
$conversion_outline['module']['sp_border_style'] = 'signaturePad.decoration.canvasBorder.*.styles.all.style';
$conversion_outline['module']['sp_shadow'] = 'signaturePad.decoration.canvasShadow.*';
$conversion_outline['module']['sp_shadow_horizontal'] = 'signaturePad.decoration.canvasShadow.*.horizontal';
$conversion_outline['module']['sp_shadow_vertical'] = 'signaturePad.decoration.canvasShadow.*.vertical';
$conversion_outline['module']['sp_shadow_blur'] = 'signaturePad.decoration.canvasShadow.*.blur';
$conversion_outline['module']['sp_shadow_spread'] = 'signaturePad.decoration.canvasShadow.*.spread';
$conversion_outline['module']['sp_shadow_color'] = 'signaturePad.decoration.canvasShadow.*.color';
$conversion_outline['module']['sp_shadow_position'] = 'dateTimePicker.decoration.canvasShadow.*.position';
$conversion_outline['module']['sp_save_btn_font'] = 'signaturePad.decoration.saveButtonFont.font.*';
$conversion_outline['module']['sp_save_btn_font_size'] = 'signaturePad.decoration.saveButtonFont.font.*.size';
$conversion_outline['module']['sp_save_btn_color'] = 'signaturePad.decoration.saveButtonFont.font.*.color';
$conversion_outline['module']['sp_save_btn_background_color'] = 'signaturePad.decoration.saveButtonBackground.*.color';
$conversion_outline['module']['sp_save_btn_padding'] = 'signaturePad.decoration.saveButtonSpacing.*.padding';
$conversion_outline['module']['sp_clear_btn_font'] = 'signaturePad.decoration.clearButtonFont.font.*';
$conversion_outline['module']['sp_clear_btn_font_size'] = 'signaturePad.decoration.clearButtonFont.font.*.size';
$conversion_outline['module']['sp_clear_btn_color'] = 'signaturePad.decoration.clearButtonFont.font.*.color';
$conversion_outline['module']['sp_clear_btn_background_color'] = 'signaturePad.decoration.clearButtonBackground.*.color';
$conversion_outline['module']['sp_clear_btn_padding'] = 'signaturePad.decoration.clearButtonSpacing.*.padding';
$conversion_outline['module']['sp_message_font'] = "signaturePad.decoration.messageFont.font.*";
$conversion_outline['module']['sp_message_font_size'] = "signaturePad.decoration.messageFont.font.*.size";
$conversion_outline['valueExpansionFunctionMap']['use_signature_pad'] = [$this, 'convert_signature_input'];
$conversion_outline['valueExpansionFunctionMap']['sp_margin'] = [$this, 'convert_spacing'];
$conversion_outline['valueExpansionFunctionMap']['sp_padding'] = [$this, 'convert_spacing'];
$conversion_outline['valueExpansionFunctionMap']['sp_border'] = [$this, 'convert_signature_pad_border'];
$conversion_outline['valueExpansionFunctionMap']['sp_shadow'] = [$this, 'convert_shadow'];
$conversion_outline['valueExpansionFunctionMap']['sp_save_btn_padding'] = [$this, 'convert_spacing'];
$conversion_outline['valueExpansionFunctionMap']['sp_clear_btn_padding'] = [$this, 'convert_spacing'];
// ==========================
// HTML Block
// ==========================
$conversion_outline['module']['field_htmlcontent'] = 'htmlBlock.innerContent.htmlContent.*';
$conversion_outline['module']['html_wrapper_margin'] = 'htmlBlock.decoration.containerSpacing.*.margin';
$conversion_outline['module']['html_wrapper_padding'] = 'htmlBlock.decoration.containerSpacing.*.padding';
$conversion_outline['module']['html_wrapper_background'] = 'htmlBlock.decoration.containerBackground.*.color';
$conversion_outline['module']['html_wrapper_border'] = 'htmlBlock.decoration.containerBorder.*';
$conversion_outline['module']['html_wrapper_border_color'] = 'htmlBlock.decoration.containerBorder.*.styles.all.color';
$conversion_outline['module']['html_wrapper_border_width'] = 'htmlBlock.decoration.containerBorder.*.styles.all.width';
$conversion_outline['module']['html_wrapper_border_style'] = 'htmlBlock.decoration.containerBorder.*.styles.all.style';
$conversion_outline['module']['html_wrapper_shadow'] = 'htmlBlock.decoration.containerShadow.*';
$conversion_outline['module']['html_wrapper_shadow_horizontal'] = 'htmlBlock.decoration.containerShadow.*.horizontal';
$conversion_outline['module']['html_wrapper_shadow_vertical'] = 'htmlBlock.decoration.containerShadow.*.vertical';
$conversion_outline['module']['html_wrapper_shadow_blur'] = 'htmlBlock.decoration.containerShadow.*.blur';
$conversion_outline['module']['html_wrapper_shadow_spread'] = 'htmlBlock.decoration.containerShadow.*.spread';
$conversion_outline['module']['html_wrapper_shadow_color'] = 'htmlBlock.decoration.containerShadow.*.color';
$conversion_outline['module']['html_wrapper_shadow_position'] = 'htmlBlock.decoration.containerShadow.*.position';
$conversion_outline['module']['html_heading_font'] = 'htmlBlock.decoration.headingFont.h1.font.*';
$conversion_outline['module']['html_heading_color'] = 'htmlBlock.decoration.headingFont.h1.font.*.color';
$conversion_outline['module']['html_heading_size'] = 'htmlBlock.decoration.headingFont.h1.font.*.size';
$conversion_outline['module']['html_heading_letterspace'] = 'htmlBlock.decoration.headingFont.h1.font.*.letterSpacing';
$conversion_outline['module']['html_heading_lineheight'] = 'htmlBlock.decoration.headingFont.h1.font.*.lineHeight';
$conversion_outline['module']['html_heading_alignment'] = 'htmlBlock.decoration.headingFont.h1.font.*.textAlign';
$conversion_outline['module']['html_paragraph_font'] = 'htmlBlock.decoration.contentFont.body.font.*';
$conversion_outline['module']['html_paragraph_color'] = 'htmlBlock.decoration.contentFont.body.font.*.color';
$conversion_outline['module']['html_paragraph_size'] = 'htmlBlock.decoration.contentFont.body.font.*.size';
$conversion_outline['module']['html_paragraph_letterspace'] = 'htmlBlock.decoration.contentFont.body.font.*.letterSpacing';
$conversion_outline['module']['html_paragraph_lineheight'] = 'htmlBlock.decoration.contentFont.body.font.*.lineHeight';
$conversion_outline['module']['html_paragraph_alignment'] = 'htmlBlock.decoration.contentFont.body.font.*.textAlign';
$conversion_outline['module']['html_link_font'] = 'htmlBlock.decoration.contentFont.link.font.*';
$conversion_outline['module']['html_link_color'] = 'htmlBlock.decoration.contentFont.link.font.*.color';
$conversion_outline['module']['html_link_size'] = 'htmlBlock.decoration.contentFont.link.font.*.size';
$conversion_outline['module']['html_link_letterspace'] = 'htmlBlock.decoration.contentFont.link.font.*.letterSpacing';
$conversion_outline['module']['html_link_lineheight'] = 'htmlBlock.decoration.contentFont.link.font.*.lineHeight';
$conversion_outline['module']['html_link_margin'] = 'htmlBlock.decoration.contentFont.link.font.*.textAlign';
$conversion_outline['module']['html_image_width'] = 'htmlBlock.decoration.imageWidth.*';
$conversion_outline['module']['html_image_height'] = 'htmlBlock.decoration.imageHeight.*';
$conversion_outline['module']['html_image_fit'] = 'htmlBlock.decoration.imageFit.*';
$conversion_outline['module']['html_image_margin'] = 'htmlBlock.decoration.imageSpacing.*.margin';
$conversion_outline['module']['html_image_padding'] = 'htmlBlock.decoration.imageSpacing.*.padding';
$conversion_outline['module']['html_image_border'] = 'htmlBlock.decoration.imageBorder.*';
$conversion_outline['module']['html_image_border_color'] = 'htmlBlock.decoration.imageBorder.*.styles.all.color';
$conversion_outline['module']['html_image_border_width'] = 'htmlBlock.decoration.imageBorder.*.styles.all.width';
$conversion_outline['module']['html_image_border_style'] = 'htmlBlock.decoration.imageBorder.*.styles.all.style';
$conversion_outline['module']['html_image_shadow'] = 'htmlBlock.decoration.imageShadow.*';
$conversion_outline['module']['html_image_shadow_horizontal'] = 'htmlBlock.decoration.imageShadow.*.horizontal';
$conversion_outline['module']['html_image_shadow_vertical'] = 'htmlBlock.decoration.imageShadow.*.vertical';
$conversion_outline['module']['html_image_shadow_blur'] = 'htmlBlock.decoration.imageShadow.*.blur';
$conversion_outline['module']['html_image_shadow_spread'] = 'htmlBlock.decoration.imageShadow.*.spread';
$conversion_outline['module']['html_image_shadow_color'] = 'htmlBlock.decoration.imageShadow.*.color';
$conversion_outline['module']['html_image_shadow_position'] = 'htmlBlock.decoration.imageShadow.*.position';
$conversion_outline['valueExpansionFunctionMap']['use_field_html'] = [$this, 'convert_html_input'];
$conversion_outline['valueExpansionFunctionMap']['html_wrapper_margin'] = [$this, 'convert_spacing'];
$conversion_outline['valueExpansionFunctionMap']['html_wrapper_padding'] = [$this, 'convert_spacing'];
$conversion_outline['valueExpansionFunctionMap']['html_wrapper_border'] = [$this, 'convert_border'];
$conversion_outline['valueExpansionFunctionMap']['html_wrapper_shadow'] = [$this, 'convert_shadow'];
$conversion_outline['valueExpansionFunctionMap']['html_image_margin'] = [$this, 'convert_spacing'];
$conversion_outline['valueExpansionFunctionMap']['html_image_padding'] = [$this, 'convert_spacing'];
$conversion_outline['valueExpansionFunctionMap']['html_image_border'] = [$this, 'convert_border'];
$conversion_outline['valueExpansionFunctionMap']['html_image_shadow'] = [$this, 'convert_shadow'];
// ==========================
// Star Ratigs
// ==========================
$conversion_outline['module']['star_color'] = "starRating.decoration.color.*";
$conversion_outline['module']['star_checked_color'] = "starRating.decoration.selectedColor.*";
$conversion_outline['module']['star_svg_width'] = "starRating.decoration.width.*";
$conversion_outline['module']['star_svg_height'] = "starRating.decoration.height.*";
$conversion_outline['valueExpansionFunctionMap']['use_star_rating'] = [$this, 'convert_star_rating_input'];
return $conversion_outline;
}
public function convert_icon($value, array $context = [])
{
$value_array = explode('||', $value);
$icon = [];
// Directly access array elements and check if they are set.
if (!empty($value_array[0])) {
$icon['unicode'] = $value_array[0];
}
if (!empty($value_array[1])) {
$icon['type'] = $value_array[1];
}
if (!empty($value_array[2])) {
$icon['weight'] = $value_array[2];
}
return !empty($icon) ? $icon : false;
}
public function convert_spacing($value): array
{
$valueArray = explode('|', $value);
$syncVertical = isset($valueArray[4]) ? $valueArray[4] : 'false';
$syncHorizontal = isset($valueArray[5]) ? $valueArray[5] : 'false';
return [
'top' => isset($valueArray[0]) ? $valueArray[0] : '',
'right' => isset($valueArray[1]) ? $valueArray[1] : '',
'bottom' => isset($valueArray[2]) ? $valueArray[2] : '',
'left' => isset($valueArray[3]) ? $valueArray[3] : '',
'syncVertical' => $syncVertical === 'true' ? 'on' : 'off',
'syncHorizontal' => $syncHorizontal === 'true' ? 'on' : 'off',
];
}
public function convert_border($value, array $context = []): array
{
$valueArray = explode('|', $value);
$isSingleValue = (strpos($value, '|') === false);
return [
'sync' => $isSingleValue ? 'on' : ($valueArray[0] ?? ''),
'topLeft' => $isSingleValue ? $value : ($valueArray[1] ?? ''),
'topRight' => $isSingleValue ? $value : ($valueArray[2] ?? ''),
'bottomRight' => $isSingleValue ? $value : ($valueArray[3] ?? ''),
'bottomLeft' => $isSingleValue ? $value : ($valueArray[4] ?? ''),
];
}
public function convert_shadow($value): array
{
if (!is_string($value) || trim($value) === '') {
return [];
}
$presets = [
'preset1' => [
'horizontal' => '0px',
'vertical' => '2px',
'blur' => '18px',
'spread' => '0px',
'position' => 'outer',
'color' => 'rgba(0, 0, 0, 0.3)',
'style' => 'preset1',
],
'preset2' => [
'horizontal' => '0px',
'vertical' => '5px',
'blur' => '30px',
'spread' => '0px',
'position' => 'outer',
'color' => 'rgba(0, 0, 0, 0.2)',
'style' => 'preset2',
],
'preset3' => [
'horizontal' => '0px',
'vertical' => '12px',
'blur' => '18px',
'spread' => '-6px',
'position' => 'outer',
'color' => 'rgba(0, 0, 0, 0.25)',
'style' => 'preset3',
],
'preset4' => [
'horizontal' => '10px',
'vertical' => '10px',
'blur' => '0px',
'spread' => '0px',
'position' => 'outer',
'color' => 'rgba(0, 0, 0, 0.25)',
'style' => 'preset4',
],
'preset5' => [
'horizontal' => '0px',
'vertical' => '6px',
'blur' => '0px',
'spread' => '10px',
'position' => 'outer',
'color' => 'rgba(0, 0, 0, 0.25)',
'style' => 'preset5',
],
'preset6' => [
'horizontal' => '0px',
'vertical' => '0px',
'blur' => '18px',
'spread' => '0px',
'position' => 'inner',
'color' => 'rgba(0, 0, 0, 0.3)',
'style' => 'preset6',
],
'preset7' => [
'horizontal' => '10px',
'vertical' => '10px',
'blur' => '0px',
'spread' => '0px',
'position' => 'inner',
'color' => 'rgba(0, 0, 0, 0.25)',
'style' => 'preset7',
],
];
if (isset($presets[$value])) {
return $presets[$value];
}
return [
'horizontal' => '0px',
'vertical' => '0px',
'blur' => '0px',
'spread' => '0px',
'position' => 'outer',
'color' => 'rgba(0, 0, 0, 0.3)',
'style' => $value,
];
}
public function convert_signature_pad_border($value, array $context = []): array
{
if (is_array($value) && isset($value['radius'])) {
return $value;
}
if (is_string($value)) {
$parts = explode('|', $value);
if ($parts[0] === 'on' && count($parts) >= 5) {
return [
'radius' => [
'topLeft' => $parts[1] ?? '',
'topRight' => $parts[2] ?? '',
'bottomLeft' => $parts[3] ?? '',
'bottomRight' => $parts[4] ?? '',
'sync' => 'on',
],
'styles' => [
'all' => [
'color' => $context['sp_border_color'] ?? '#000000',
'width' => $context['sp_border_width'] ?? '1px',
'style' => $context['sp_border_style'] ?? 'solid',
],
],
];
}
}
return [
'radius' => [
'topLeft' => '',
'topRight' => '',
'bottomLeft' => '',
'bottomRight' => '',
'sync' => 'on',
],
'styles' => [
'all' => [
'color' => $context['sp_border_color'] ?? '#000000',
'width' => $context['sp_border_width'] ?? '1px',
'style' => $context['sp_border_style'] ?? 'solid',
],
],
];
}
public function sortable_list_converter($value): array
{
$options = str_replace(['%91', '%93', '%92', '%22'], ['[', ']', '\\', '"'], $value);
$options = urldecode($options);
$sortable_options = json_decode($options, true);
return array_map(
function ($option) {
return array_merge(
$option,
[
'dragID' => isset($option['dragID']) ? (string)$option['dragID'] : null,
'checked' => isset($option['checked']) ? (string)$option['checked'] : null,
]
);
},
$sortable_options
);
}
public function convert_checkboxradio_layout($value, $context = []): array
{
$layout_value = 'column';
if (is_array($value)) {
if (isset($value['desktop']['value'])) {
$layout_value = $value['desktop']['value'];
} elseif (isset($value['value'])) {
$layout_value = $value['value'];
}
} elseif (is_string($value)) {
$layout_value = $value;
}
if ($layout_value === 'inline') {
$mapped_value = 'inline';
} else {
$mapped_value = 'column';
}
return [
'desktop' => ['value' => $mapped_value],
'tablet' => ['value' => $mapped_value],
'phone' => ['value' => $mapped_value],
];
}
public function convert_checkboxradio_columns($value, $context = []): array
{
if (!isset($context['attrs']['checkbox_layout'])) {
$context['attrs']['checkbox_layout'] = 'column';
}
$columns_value = 4;
if (is_array($value)) {
if (isset($value['desktop']['value'])) {
$columns_value = (int)$value['desktop']['value'];
} elseif (isset($value['value'])) {
$columns_value = (int)$value['value'];
}
} elseif (is_numeric($value)) {
$columns_value = (int)$value;
} elseif (is_string($value) && is_numeric($value)) {
$columns_value = (int)$value;
}
$columns_value = max(1, min(12, $columns_value));
return [
'desktop' => ['value' => $columns_value],
'tablet' => ['value' => $columns_value],
'phone' => ['value' => $columns_value],
];
}
public function convert_file_upload_type($value, $context = []): ?string
{
if ($value === 'on') {
return 'file';
}
return $context['attrs']['field_type'] ?? 'text';
}
public function convert_signature_input($value, $context = []): ?string
{
if ($value === 'on') {
return 'signature-pad';
}
return $context['attrs']['field_type'] ?? 'text';
}
public function convert_datetime_input($value, $context = []): ?string
{
if ($value === 'on') {
return 'datetime-picker';
}
return $context['attrs']['field_type'] ?? 'text';
}
public function convert_datetime_type($value, $context = []): ?string
{
if ('date' === $value) {
return 'datePicker';
} elseif ('time' === $value) {
return 'timePicker';
} elseif ('daterange' === $value) {
return 'dateRangePicker';
}
return 'both';
}
public function convert_star_rating_input($value, $context = []): ?string
{
if ($value === 'on') {
return 'star-rating';
}
return $context['attrs']['field_type'] ?? 'text';
}
public function convert_html_input($value, $context = []): ?string
{
if ($value === 'on') {
return 'html-block';
}
return $context['attrs']['field_type'] ?? 'text';
}
public function convert_phone_input($value, $context = []): ?string
{
if ($value === 'on') {
return 'phone-number';
}
return $context['attrs']['field_type'] ?? 'text';
}
public function convert_field_type($value, $context = []): ?string
{
if (isset($context['attrs']['use_field_html']) && $context['attrs']['use_field_html'] === 'on') {
return 'html-block';
}
if (isset($context['attrs']['use_signature_pad']) && $context['attrs']['use_signature_pad'] === 'on') {
return 'signature-pad';
}
if (isset($context['attrs']['use_file_upload']) && $context['attrs']['use_file_upload'] === 'on') {
return 'file';
}
if (isset($context['attrs']['use_datetime']) && $context['attrs']['use_datetime'] === 'on') {
return 'datetime-picker';
}
if (isset($context['attrs']['use_star_rating']) && $context['attrs']['use_star_rating'] === 'on') {
return 'star-rating';
}
if (isset($context['attrs']['use_custom_phone_format']) && $context['attrs']['use_custom_phone_format'] === 'on') {
return 'phone-number';
}
return $value ?? 'text';
}
public function convert_file_mime($value, $context = []): array
{
if (empty($value)) {
return [];
}
$flags = explode('|', $value);
$mime_types = [];
foreach (get_allowed_mime_types() as $key => $value) {
$mime_types[$key] = $value;
if ($key === 'css') {
$mime_types['htm|html'] = 'text/html';
} elseif ($key === 'rtf') {
$mime_types['js'] = 'application/javascript';
}
}
$unique_mimes = array_values(array_unique(array_values($mime_types)));
$allowed = [];
foreach ($flags as $index => $flag) {
if ($flag === 'on' && isset($unique_mimes[$index])) {
$allowed[] = $unique_mimes[$index];
}
}
return $allowed;
}
public function convert_datetime_format($value)
{
if (!is_string($value)) {
return $value;
}
return str_replace('_dt_', ' ', $value);
}
public function convert_week_days(string $value = '', array $context = []): array
{
if (!$value) {
return [];
}
$week_days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
$flags = explode('|', $value);
$allowed = [];
foreach ($flags as $index => $flag) {
if ($flag === 'on' && isset($week_days[$index])) {
$allowed[] = $week_days[$index];
}
}
return $allowed;
}
}