PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 3.06.06
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v3.06.06
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | classes/models/fields/FrmFieldNumber.php +20 -119 6.263.06.06 View file →
@@ -1,8 +1,5 @@
1 1 <?php
2 -if ( ! defined( 'ABSPATH' ) ) {
3 - die( 'You are not allowed to call this page directly.' );
4 -}
5 2
6 3 /**
7 4 * @since 3.0
8 5 */
@@ -9,21 +6,13 @@
9 6 class FrmFieldNumber extends FrmFieldType {
10 7
11 8 /**
12 9 * @var string
13 - *
14 10 * @since 3.0
15 11 */
16 12 protected $type = 'number';
13 + protected $display_type = 'text';
17 14
18 - /**
19 - * @var bool
20 - */
21 - protected $array_allowed = false;
22 -
23 - /**
24 - * @return bool[]
25 - */
26 15 protected function field_settings_for_type() {
27 16 $settings = array(
28 17 'size' => true,
29 18 'clear_on_focus' => true,
@@ -30,16 +19,16 @@
30 19 'invalid' => true,
31 20 'range' => true,
32 21 );
33 22
34 - $settings['max'] = false;
23 + $frm_settings = FrmAppHelper::get_settings();
24 + if ( $frm_settings->use_html ) {
25 + $settings['max'] = false;
26 + }
35 27
36 28 return $settings;
37 29 }
38 30
39 - /**
40 - * @return array
41 - */
42 31 protected function extra_field_opts() {
43 32 return array(
44 33 'minnum' => 0,
45 34 'maxnum' => 9999999,
@@ -48,13 +37,8 @@
48 37 }
49 38
50 39 /**
51 40 * @since 3.01.03
52 - *
53 - * @param array $args
54 - * @param string $input_html
55 - *
56 - * @return void
57 41 */
58 42 protected function add_extra_html_atts( $args, &$input_html ) {
59 43 $this->add_min_max( $args, $input_html );
60 44 }
@@ -63,105 +47,38 @@
63 47 $errors = array();
64 48
65 49 $this->remove_commas_from_number( $args );
66 50
67 - // Validate the number format.
51 + //validate the number format
68 52 if ( ! is_numeric( $args['value'] ) && '' !== $args['value'] ) {
69 53 $errors[ 'field' . $args['id'] ] = FrmFieldsHelper::get_error_msg( $this->field, 'invalid' );
70 54 }
71 55
72 - if ( $args['value'] === '' ) {
73 - return $errors;
56 + // validate number settings
57 + if ( $args['value'] != '' ) {
58 + $frm_settings = FrmAppHelper::get_settings();
59 + // only check if options are available in settings
60 + $minnum = FrmField::get_option( $this->field, 'minnum' );
61 + $maxnum = FrmField::get_option( $this->field, 'maxnum' );
62 + if ( $frm_settings->use_html && $maxnum !== '' && $minnum !== '' ) {
63 + $value = (float) $args['value'];
64 + if ( $value < $minnum ) {
65 + $errors[ 'field' . $args['id'] ] = __( 'Please select a higher number', 'formidable' );
66 + } elseif ( $value > $maxnum ) {
67 + $errors[ 'field' . $args['id'] ] = __( 'Please select a lower number', 'formidable' );
68 + }
69 + }
74 70 }
75 71
76 - $value = (float) $args['value'];
77 - $minnum = FrmField::get_option( $this->field, 'minnum' );
78 - $maxnum = FrmField::get_option( $this->field, 'maxnum' );
79 -
80 - if ( $minnum !== '' && $value < $minnum ) {
81 - $errors[ 'field' . $args['id'] ] = __( 'Please select a higher number', 'formidable' );
82 - } elseif ( $maxnum !== '' && $value > $maxnum ) {
83 - $errors[ 'field' . $args['id'] ] = __( 'Please select a lower number', 'formidable' );
84 - }
85 -
86 - $this->validate_step( $errors, $args );
87 -
88 72 return $errors;
89 73 }
90 74
91 - /**
92 - * Validates the step setting.
93 - *
94 - * @since 5.2.06
95 - *
96 - * @param array $errors Errors array.
97 - * @param array $args Validation args.
98 - *
99 - * @return void
100 - */
101 - protected function validate_step( &$errors, $args ) {
102 - if ( isset( $errors[ 'field' . $args['id'] ] ) ) {
103 - // Don't need to check if value is invalid before.
104 - return;
105 - }
106 75
107 - $step = FrmField::get_option( $this->field, 'step' );
108 -
109 - if ( ! $step || ! is_numeric( $step ) ) {
110 - return;
111 - }
112 -
113 - $result = $this->check_value_is_valid_with_step( $args['value'], $step );
114 -
115 - if ( ! $result ) {
116 - return;
117 - }
118 -
119 - $errors[ 'field' . $args['id'] ] = sprintf(
120 - // Translators: %1$s: the first nearest value; %2$s: the second nearest value.
121 - __( 'Please enter a valid value. Two nearest valid values are %1$s and %2$s', 'formidable' ),
122 - is_numeric( $result[0] ) ? floatval( $result[0] ) : $result[0],
123 - is_numeric( $result[1] ) ? floatval( $result[1] ) : $result[1]
124 - );
125 - }
126 -
127 76 /**
128 - * Checks if value is valid with the given step.
129 - *
130 - * @since 5.2.07
131 - *
132 - * @param numeric $value The value.
133 - * @param numeric $step The step.
134 - *
135 - * @return array|int Return `0` if valid. Otherwise, return an array contains two nearest values.
136 - */
137 - protected function check_value_is_valid_with_step( $value, $step ) {
138 - // Count the number of decimals.
139 - $decimals = (int) max( FrmAppHelper::count_decimals( $value ), FrmAppHelper::count_decimals( $step ) );
140 -
141 - // Convert value and step to int to prevent precision problem.
142 - $pow = 10 ** $decimals;
143 - $value = intval( $pow * $value );
144 - $step = intval( $pow * $step );
145 - $div = $value / $step;
146 -
147 - if ( is_int( $div ) ) {
148 - return 0;
149 - }
150 -
151 - $div = floor( $div );
152 - return array( $div * $step / $pow, ( $div + 1 ) * $step / $pow );
153 - }
154 -
155 - /**
156 77 * IE fallback for number fields
157 78 * Remove the comma when HTML5 isn't supported
158 79 *
159 80 * @since 3.0
160 - *
161 - * @param array $args
162 - *
163 - * @return void
164 81 */
165 82 private function remove_commas_from_number( &$args ) {
166 83 if ( strpos( $args['value'], ',' ) ) {
167 84 $args['value'] = str_replace( ',', '', $args['value'] );
@@ -170,28 +87,12 @@
170 87 }
171 88
172 89 /**
173 90 * Force the value to be numeric before it's saved in the DB
174 - *
175 - * @param array|string $value
176 - *
177 - * @return float
178 91 */
179 92 public function set_value_before_save( $value ) {
180 93 if ( ! is_numeric( $value ) ) {
181 94 $value = (float) $value;
182 95 }
183 -
184 96 return $value;
185 - }
186 -
187 - /**
188 - * @since 4.0.04
189 - *
190 - * @param array|string $value
191 - *
192 - * @return void
193 - */
194 - public function sanitize_value( &$value ) {
195 - FrmAppHelper::sanitize_value( 'sanitize_text_field', $value );
196 97 }
197 98 }