PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / V3.3.2
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder vV3.3.2
V3.3.2 3.3.1 V-3.3.0 3.2.2 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 V3.0.3 V3.0.2 -3.0.1 V_3.0.0 1.1.1 1.1.8 1.2 1.3 1.4 1.4.18 1.5.2 1.9 2.0 2.10.0 All 139 releases
← All changes | includes/Frontend/Form/View/Theme/Fields/SliderField.php +23 -6 3.2.2 → V3.3.2 View file →
@@ -1,8 +1,9 @@
1 1 <?php
2 2
3 3 namespace BitCode\BitForm\Frontend\Form\View\Theme\Fields;
4 4
5 +use BitCode\BitForm\Core\Util\FieldValueHandler;
5 6 use BitCode\BitForm\Core\Util\FrontendHelpers;
6 7
7 8 class SliderField
8 9 {
@@ -62,19 +63,25 @@
62 63 if (property_exists($field, 'inputMode') && '' !== $field->inputMode) {
63 64 $inputMode = "inputMode='{$fieldHelpers->esc_attr($field->inputMode)}'";
64 65 }
65 66
66 - $minValue = property_exists($field, 'mn') ? $field->mn : 0;
67 - $maxValue = property_exists($field, 'mx') ? $field->mx : 100;
67 + $minValue = self::numericOr(property_exists($field, 'mn') ? $field->mn : null, 0);
68 + $maxValue = self::numericOr(property_exists($field, 'mx') ? $field->mx : null, 100);
68 69
69 70 $defaultVal = (($maxValue - $minValue) / 2) + $minValue;
71 + // The builder used to seed Default value with the field label ("Slider"), so a stored value
72 + // or default can be non-numeric; arithmetic on it fatals on PHP 8. Fall back to the minimum.
70 73 if ($fieldHelpers->property_exists_nested($field, 'val', '', 1)) {
71 - $defaultVal = $field->val;
74 + $defaultVal = self::numericOr($field->val, $minValue);
75 + $value = "value='{$fieldHelpers->esc_attr($defaultVal)}'";
72 76 } elseif ($fieldHelpers->property_exists_nested($field, 'defaultValue', '', 1)) {
73 - $defaultVal = $field->defaultValue;
77 + $defaultVal = self::numericOr(FieldValueHandler::replaceSmartTagWithValue($field->defaultValue), $minValue);
78 + $value = "value='{$fieldHelpers->esc_attr($defaultVal)}'";
74 79 }
75 80
76 - $lowerTrackPercentage = ($defaultVal - $minValue) / ($maxValue - $minValue) * 100;
81 + // Min equal to max leaves no track to fill; avoid a division by zero.
82 + $range = $maxValue - $minValue;
83 + $lowerTrackPercentage = 0.0 !== (float) $range ? ($defaultVal - $minValue) / $range * 100 : 0;
77 84
78 85 $wrpperStyle = "style='--bfv-fld-val: \"" . $fieldHelpers->esc_attr($defaultVal) . "\";'";
79 86 $inputStyle = "style='--bfv-fill-lower-track: " . $fieldHelpers->esc_attr($lowerTrackPercentage) . "% !important;'";
80 87
@@ -105,9 +112,19 @@
105 112 ' . $inputStyle . '
106 113 />
107 114 ' . $prefixIcn . '
108 115 ' . $suffixIcn . '
109 - <span class="' . $fieldHelpers->getAtomicCls('slider-val') . '">Value : </span>
116 + <span class="' . $fieldHelpers->getAtomicCls('slider-val') . '">' . esc_html__('Value:', 'bit-form') . ' </span>
110 117 </div>
111 118 ' . $sugg . "\n";
119 + }
120 +
121 + /**
122 + * @param mixed $value
123 + * @param int|float $fallback
124 + * @return int|float
125 + */
126 + private static function numericOr($value, $fallback)
127 + {
128 + return is_numeric($value) ? $value + 0 : $fallback;
112 129 }
113 130 }