PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.14
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.14
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/FrmTableHTMLGenerator.php +29 -131 6.356.14 View file →
@@ -9,9 +9,8 @@
9 9 class FrmTableHTMLGenerator {
10 10
11 11 /**
12 12 * @var string
13 - *
14 13 * @since 2.04
15 14 */
16 15 private $type = '';
17 16
@@ -16,9 +15,8 @@
16 15 private $type = '';
17 16
18 17 /**
19 18 * @var array
20 - *
21 19 * @since 2.04
22 20 */
23 21 private $style_settings = array();
24 22
@@ -23,9 +21,8 @@
23 21 private $style_settings = array();
24 22
25 23 /**
26 24 * @var bool
27 - *
28 25 * @since 2.04
29 26 */
30 27 private $use_inline_style = true;
31 28
@@ -30,9 +27,8 @@
30 27 private $use_inline_style = true;
31 28
32 29 /**
33 30 * @var string
34 - *
35 31 * @since 2.04
36 32 * @since 5.0.16 Changed scope from `private` to `protected`.
37 33 */
38 34 protected $direction = 'ltr';
@@ -38,9 +34,8 @@
38 34 protected $direction = 'ltr';
39 35
40 36 /**
41 37 * @var bool
42 - *
43 38 * @since 2.04
44 39 */
45 40 private $odd = true;
46 41
@@ -45,9 +40,8 @@
45 40 private $odd = true;
46 41
47 42 /**
48 43 * @var string
49 - *
50 44 * @since 2.04
51 45 * @since 5.0.16 Changed scope from `private` to `protected`.
52 46 */
53 47 protected $table_style = '';
@@ -53,9 +47,8 @@
53 47 protected $table_style = '';
54 48
55 49 /**
56 50 * @var string
57 - *
58 51 * @since 2.04
59 52 * @since 5.0.16 Changed scope from `private` to `protected`.
60 53 */
61 54 protected $td_style = '';
@@ -60,30 +53,11 @@
60 53 */
61 54 protected $td_style = '';
62 55
63 56 /**
64 - * Cell padding.
65 - *
66 - * @since 6.25
67 - *
68 - * @var string
69 - */
70 - protected $cell_padding = '7px 9px';
71 -
72 - /**
73 - * Table width.
74 - *
75 - * @since 6.25
76 - *
77 - * @var string
78 - */
79 - protected $width = '';
80 -
81 - /**
82 57 * Used to add a class in tables. Set in Pro.
83 58 *
84 59 * @var bool
85 - *
86 60 * @since 5.4.2
87 61 */
88 62 public $is_child = false;
89 63
@@ -93,18 +67,10 @@
93 67 * @param string $type
94 68 * @param array $atts
95 69 */
96 70 public function __construct( $type, $atts = array() ) {
97 - $this->type = $type;
98 71
99 - if ( isset( $atts['cell_padding'] ) ) {
100 - $this->cell_padding = $atts['cell_padding'];
101 - }
102 -
103 - if ( isset( $atts['width'] ) ) {
104 - $this->width = $atts['width'];
105 - }
106 -
72 + $this->type = (string) $type;
107 73 $this->init_style_settings( $atts );
108 74 $this->init_use_inline_style( $atts );
109 75 $this->init_direction( $atts );
110 76 $this->init_table_style();
@@ -116,9 +82,8 @@
116 82 *
117 83 * @since 2.04
118 84 *
119 85 * @param array $atts
120 - *
121 86 * @return void
122 87 */
123 88 private function init_style_settings( $atts ) {
124 89 $style_settings = array(
@@ -140,9 +105,9 @@
140 105 $this->style_settings[ $key ] = $this->get_color_markup( $this->style_settings[ $key ] );
141 106 }
142 107 }
143 108
144 - $this->style_settings['class'] = $atts['class'] ?? '';
109 + $this->style_settings['class'] = isset( $atts['class'] ) ? $atts['class'] : '';
145 110 }
146 111
147 112 /**
148 113 * Set the use_inline_style property
@@ -149,9 +114,8 @@
149 114 *
150 115 * @since 2.04
151 116 *
152 117 * @param array $atts
153 - *
154 118 * @return void
155 119 */
156 120 private function init_use_inline_style( $atts ) {
157 121 if ( isset( $atts['inline_style'] ) && ! $atts['inline_style'] ) {
@@ -164,9 +128,8 @@
164 128 *
165 129 * @since 2.04
166 130 *
167 131 * @param array $atts
168 - *
169 132 * @return void
170 133 */
171 134 private function init_direction( $atts ) {
172 135 if ( isset( $atts['direction'] ) && $atts['direction'] === 'rtl' ) {
@@ -177,24 +140,21 @@
177 140 /**
178 141 * Set the table_style property
179 142 *
180 143 * @since 2.04
181 - *
182 144 * @return void
183 145 */
184 146 private function init_table_style() {
185 147 if ( $this->use_inline_style === true ) {
186 - $this->table_style = ' style="' . esc_attr( 'border-spacing:0;font-size:' . $this->style_settings['font_size'] . ';line-height:135%;' );
148 +
149 + $this->table_style = ' style="' . esc_attr( 'font-size:' . $this->style_settings['font_size'] . ';line-height:135%;' );
187 150 $this->table_style .= esc_attr( 'border-bottom:' . $this->style_settings['border_width'] . ' solid ' . $this->style_settings['border_color'] . ';' ) . '"';
151 +
188 152 }
189 153
190 154 if ( ! empty( $this->style_settings['class'] ) ) {
191 155 $this->table_style .= ' class="' . esc_attr( $this->style_settings['class'] ) . '"';
192 156 }
193 -
194 - if ( $this->width ) {
195 - $this->table_style .= ' width="' . esc_attr( $this->width ) . '"';
196 - }
197 157 }
198 158
199 159 /**
200 160 * Set the td_style property
@@ -199,55 +159,31 @@
199 159 /**
200 160 * Set the td_style property
201 161 *
202 162 * @since 2.04
203 - *
204 163 * @return void
205 164 */
206 165 private function init_td_style() {
207 - if ( $this->use_inline_style !== true ) {
208 - return;
209 - }
166 + if ( $this->use_inline_style === true ) {
210 167
211 - $td_style_attributes = 'text-align:' . ( $this->direction === 'rtl' ? 'right' : 'left' ) . ';';
212 - $td_style_attributes .= 'color:' . $this->style_settings['text_color'] . ';padding:' . $this->cell_padding . ';vertical-align:top;';
213 - $td_style_attributes .= 'border-top:' . $this->style_settings['border_width'] . ' solid ' . $this->style_settings['border_color'] . ';';
168 + $td_style_attributes = 'text-align:' . ( $this->direction === 'rtl' ? 'right' : 'left' ) . ';';
169 + $td_style_attributes .= 'color:' . $this->style_settings['text_color'] . ';padding:7px 9px;vertical-align:top;';
170 + $td_style_attributes .= 'border-top:' . $this->style_settings['border_width'] . ' solid ' . $this->style_settings['border_color'] . ';';
214 171
215 - $this->td_style = ' style="' . esc_attr( $td_style_attributes ) . '"';
172 + $this->td_style = ' style="' . $td_style_attributes . '"';
173 + }
216 174 }
217 175
218 176 /**
219 - * Removes border CSS from HTML.
220 - *
221 - * @since 6.25
222 - *
223 - * @param string $html The HTML.
224 - * @param string $position The border position. Default is `top`.
225 - *
226 - * @return string
227 - */
228 - public function remove_border( $html, $position = 'top' ) {
229 - $search = sprintf(
230 - 'border-%1$s:%2$s solid %3$s;',
231 - $position,
232 - $this->style_settings['border_width'],
233 - $this->style_settings['border_color']
234 - );
235 -
236 - return str_replace( $search, '', $html );
237 - }
238 -
239 - /**
240 177 * Determine if setting is for a color, e.g. text color, background color, or border color
241 178 *
242 179 * @since 2.05
243 - *
244 180 * @param string $setting_key Name of setting.
245 181 *
246 182 * @return bool
247 183 */
248 184 private function is_color_setting( $setting_key ) {
249 - return str_contains( $setting_key, 'color' );
185 + return strpos( $setting_key, 'color' ) !== false;
250 186 }
251 187
252 188 /**
253 189 * Get color markup from color setting value
@@ -252,9 +188,8 @@
252 188 /**
253 189 * Get color markup from color setting value
254 190 *
255 191 * @since 2.05
256 - *
257 192 * @param string $color_markup value of a color setting, with format #FFFFF, FFFFFF, or white.
258 193 *
259 194 * @return string
260 195 */
@@ -262,9 +197,9 @@
262 197 $color_markup = trim( $color_markup );
263 198
264 199 // Check if each character in string is valid hex digit
265 200 if ( FrmAppHelper::ctype_xdigit( $color_markup ) ) {
266 - return '#' . $color_markup;
201 + $color_markup = '#' . $color_markup;
267 202 }
268 203
269 204 return $color_markup;
270 205 }
@@ -276,9 +211,9 @@
276 211 *
277 212 * @return string
278 213 */
279 214 private function table_row_background_color() {
280 - return $this->odd ? $this->style_settings['bg_color'] : $this->style_settings['alt_bg_color'];
215 + return ( $this->odd ? $this->style_settings['bg_color'] : $this->style_settings['alt_bg_color'] );
281 216 }
282 217
283 218 /**
284 219 * Get the table row style
@@ -284,13 +219,13 @@
284 219 * Get the table row style
285 220 *
286 221 * @since 2.04
287 222 * @since 5.0.16 Changed scope from `private` to `protected`.
288 - * @since 6.25 Changed scope from `protected` to `public`.
289 223 *
290 224 * @return string
291 225 */
292 - public function tr_style() {
226 + protected function tr_style() {
227 +
293 228 if ( $this->type === 'shortcode' ) {
294 229 $tr_style = ' style="[frm-alt-color]"';
295 230 } elseif ( $this->use_inline_style ) {
296 231 $tr_style = ' style="background-color:' . $this->table_row_background_color() . ';"';
@@ -301,30 +236,8 @@
301 236 return $tr_style;
302 237 }
303 238
304 239 /**
305 - * Gets table style.
306 - *
307 - * @since 6.25
308 - *
309 - * @return string
310 - */
311 - public function get_table_style() {
312 - return $this->table_style;
313 - }
314 -
315 - /**
316 - * Gets td style.
317 - *
318 - * @since 6.25
319 - *
320 - * @return string
321 - */
322 - public function get_td_style() {
323 - return $this->td_style;
324 - }
325 -
326 - /**
327 240 * Switch the odd property from true to false or false to true
328 241 *
329 242 * @since 2.04
330 243 * @since 5.0.16 Changed scope from `private` to `protected`.
@@ -344,9 +257,9 @@
344 257 *
345 258 * @return string
346 259 */
347 260 public function generate_table_header() {
348 - return '<table cellspacing="0"' . $this->table_style . '><tbody>' . "\r\n";
261 + return '<table cellspacing="0" ' . $this->table_style . '><tbody>' . "\r\n";
349 262 }
350 263
351 264 /**
352 265 * Generate a table footer
@@ -365,20 +278,20 @@
365 278 * @since 2.04
366 279 *
367 280 * @param string $label The label.
368 281 * @param string $value The value.
369 - * @param array $args Additional arguments. May include "field_type" string.
370 282 *
371 283 * @return string
372 284 */
373 - public function generate_two_cell_table_row( $label, $value, $args = array() ) {
374 - $row = '<tr' . $this->tr_style();
375 - $row .= $this->add_row_class( $value === '' );
376 - $row .= '>';
377 - $label = '<th scope="row"' . $this->td_style . '>' . wp_kses_post( $label ) . '</th>';
378 - $value = '<td' . $this->td_style . '>' . $this->filter_value_for_display( $value, $args ) . '</td>';
285 + public function generate_two_cell_table_row( $label, $value ) {
286 + $row = '<tr' . $this->tr_style();
287 + $row .= $this->add_row_class( $value === '' );
288 + $row .= '>';
379 289
380 - if ( 'rtl' === $this->direction ) {
290 + $label = '<th' . $this->td_style . '>' . wp_kses_post( $label ) . '</th>';
291 + $value = '<td' . $this->td_style . '>' . wp_kses_post( $value ) . '</td>';
292 +
293 + if ( 'rtl' == $this->direction ) {
381 294 $row .= $value;
382 295 $row .= $label;
383 296 } else {
384 297 $row .= $label;
@@ -392,23 +305,8 @@
392 305 return $row;
393 306 }
394 307
395 308 /**
396 - * @param string $value
397 - * @param array $args
398 - *
399 - * @return string
400 - */
401 - private function filter_value_for_display( $value, $args ) {
402 - if ( empty( $args['field_type'] ) ) {
403 - return wp_kses_post( $value );
404 - }
405 -
406 - $field_object = FrmFieldFactory::get_field_type( $args['field_type'] );
407 - return $field_object->filter_value_for_table_html( $value );
408 - }
409 -
410 - /**
411 309 * Generate a single cell row for an HTML table
412 310 *
413 311 * @since 2.04
414 312 *
@@ -438,17 +336,17 @@
438 336 * @return string
439 337 */
440 338 protected function add_row_class( $empty = false ) {
441 339 $class = '';
442 -
443 340 if ( $empty ) {
444 341 // Only add this class on two cell rows.
445 342 $class .= ' frm-empty-row';
446 343 }
447 -
448 344 if ( $this->is_child ) {
449 345 $class .= ' frm-child-row';
450 346 }
451 -
452 - return $class ? ' class="' . trim( $class ) . '"' : $class;
347 + if ( $class ) {
348 + $class = ' class="' . trim( $class ) . '"';
349 + }
350 + return $class;
453 351 }
454 352 }