PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.0
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.0
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/helpers/FrmStylesHelper.php +139 -704 6.346.0 View file →
@@ -4,14 +4,10 @@
4 4 }
5 5
6 6 class FrmStylesHelper {
7 7
8 - /**
9 - * @return array
10 - */
11 8 public static function get_upload_base() {
12 9 $uploads = wp_upload_dir();
13 -
14 10 if ( is_ssl() && ! preg_match( '/^https:\/\/.*\..*$/', $uploads['baseurl'] ) ) {
15 11 $uploads['baseurl'] = str_replace( 'http://', 'https://', $uploads['baseurl'] );
16 12 }
17 13
@@ -21,23 +17,17 @@
21 17 /**
22 18 * Called from the admin header.
23 19 *
24 20 * @since 4.0
25 - *
26 - * @return void
27 21 */
28 22 public static function save_button() {
29 - // phpcs:disable Generic.WhiteSpace.ScopeIndent
30 23 ?>
31 24 <input type="submit" name="submit" class="button button-primary frm-button-primary" value="<?php esc_attr_e( 'Update', 'formidable' ); ?>" />
32 25 <?php
33 - // phpcs:enable Generic.WhiteSpace.ScopeIndent
34 26 }
35 27
36 28 /**
37 29 * @since 2.05
38 - *
39 - * @return array
40 30 */
41 31 public static function get_css_label_positions() {
42 32 return array(
43 33 'none' => __( 'top', 'formidable' ),
@@ -47,17 +37,10 @@
47 37 'inside' => __( 'inside', 'formidable' ),
48 38 );
49 39 }
50 40
51 - /**
52 - * @since 6.11 Added $field param.
53 - *
54 - * @param array|object $field
55 - *
56 - * @return array
57 - */
58 - public static function get_single_label_positions( $field = array() ) {
59 - $label_positions = array(
41 + public static function get_single_label_positions() {
42 + return array(
60 43 'top' => __( 'Top', 'formidable' ),
61 44 'left' => __( 'Left', 'formidable' ),
62 45 'right' => __( 'Right', 'formidable' ),
63 46 'inline' => __( 'Inline (left without a set width)', 'formidable' ),
@@ -64,23 +47,10 @@
64 47 'none' => __( 'None', 'formidable' ),
65 48 'hidden' => __( 'Hidden (but leave the space)', 'formidable' ),
66 49 'inside' => __( 'Placeholder inside the field', 'formidable' ),
67 50 );
68 -
69 - /**
70 - * Allows updating label positions in field settings.
71 - *
72 - * @since 6.11
73 - *
74 - * @param array $label_positions
75 - * @param array|object $field
76 - */
77 - return apply_filters( 'frm_single_label_positions', $label_positions, $field );
78 51 }
79 52
80 - /**
81 - * @return array
82 - */
83 53 public static function minus_icons() {
84 54 return array(
85 55 0 => array(
86 56 '-' => '62e',
@@ -104,11 +74,8 @@
104 74 ),
105 75 );
106 76 }
107 77
108 - /**
109 - * @return array
110 - */
111 78 public static function arrow_icons() {
112 79 $minus_icons = self::minus_icons();
113 80
114 81 return array(
@@ -149,18 +116,13 @@
149 116 }
150 117
151 118 /**
152 119 * @since 2.0
153 - *
154 - * @param int|string $key Icon key.
155 - * @param string $icon Icon state, `+` or `-`.
156 - * @param string $type Icon type, such as `arrow`.
157 - *
158 120 * @return string The class for this icon.
159 121 */
160 122 public static function icon_key_to_class( $key, $icon = '+', $type = 'arrow' ) {
161 123 if ( 'arrow' === $type && is_numeric( $key ) ) {
162 - // frm_arrowup6_icon.
124 + //frm_arrowup6_icon
163 125 $arrow = array(
164 126 '-' => 'down',
165 127 '+' => 'up',
166 128 );
@@ -165,9 +127,9 @@
165 127 '+' => 'up',
166 128 );
167 129 $class = 'frm_arrow' . $arrow[ $icon ];
168 130 } else {
169 - // frm_minus1_icon.
131 + //frm_minus1_icon
170 132 $key = str_replace( 'p', '', $key );
171 133 $plus = array(
172 134 '-' => 'minus',
173 135 '+' => 'plus',
@@ -177,10 +139,11 @@
177 139
178 140 if ( $key ) {
179 141 $class .= $key;
180 142 }
143 + $class .= '_icon';
181 144
182 - return $class . '_icon';
145 + return $class;
183 146 }
184 147
185 148 /**
186 149 * @param WP_Post $style
@@ -185,9 +148,8 @@
185 148 /**
186 149 * @param WP_Post $style
187 150 * @param FrmStyle $frm_style
188 151 * @param string $type
189 - *
190 152 * @return void
191 153 */
192 154 public static function bs_icon_select( $style, $frm_style, $type = 'arrow' ) {
193 155 $function_name = $type . '_icons';
@@ -194,9 +156,8 @@
194 156 $icons = self::$function_name();
195 157 unset( $function_name );
196 158
197 159 $name = 'arrow' === $type ? 'collapse_icon' : 'repeat_icon';
198 - // phpcs:disable Generic.WhiteSpace.ScopeIndent
199 160 ?>
200 161 <div class="btn-group" id="frm_<?php echo esc_attr( $name ); ?>_select">
201 162 <button class="multiselect dropdown-toggle btn btn-default" data-toggle="dropdown" type="button">
202 163 <?php FrmAppHelper::icon_by_class( 'frmfont ' . self::icon_key_to_class( $style->post_content[ $name ], '+', $type ) ); ?>
@@ -204,12 +165,12 @@
204 165 <b class="caret"></b>
205 166 </button>
206 167 <ul class="multiselect-container frm-dropdown-menu">
207 168 <?php foreach ( $icons as $key => $icon ) { ?>
208 - <li <?php echo $style->post_content['collapse_icon'] == $key ? 'class="active"' : ''; // phpcs:ignore Universal.Operators.StrictComparisons ?>>
169 + <li <?php echo ( $style->post_content['collapse_icon'] == $key ) ? 'class="active"' : ''; ?>>
209 170 <a href="javascript:void(0);">
210 171 <label>
211 - <input type="radio" value="<?php echo esc_attr( $key ); ?>" name="<?php echo esc_attr( $frm_style->get_field_name( $name ) ); ?>" <?php checked( $style->post_content[ $name ], $key ); ?> /><?php // phpcs:ignore SlevomatCodingStandard.Files.LineLength.LineTooLong ?>
172 + <input type="radio" value="<?php echo esc_attr( $key ); ?>" name="<?php echo esc_attr( $frm_style->get_field_name( $name ) ); ?>" <?php checked( $style->post_content[ $name ], $key ); ?> />
212 173 <span>
213 174 <?php
214 175 FrmAppHelper::icon_by_class( 'frmfont ' . self::icon_key_to_class( $key, '+', $type ) );
215 176 FrmAppHelper::icon_by_class( 'frmfont ' . self::icon_key_to_class( $key, '-', $type ) );
@@ -221,71 +182,26 @@
221 182 <?php } ?>
222 183 </ul>
223 184 </div>
224 185 <?php
225 - // phpcs:enable Generic.WhiteSpace.ScopeIndent
226 186 }
227 187
228 - /**
229 - * Convert a color setting to a RGB CSV (without the rgb()/rgba() wrapper).
230 - *
231 - * @since 2.0
232 - *
233 - * @param string $color Color setting value. This could be hex or rgb.
234 - *
235 - * @return string RGB value without the rgb() wrapper.
236 - */
237 - public static function hex2rgb( $color ) {
238 - $rgb = str_starts_with( $color, 'rgb' ) ? self::get_rgb_array_from_rgb( $color ) : self::get_rgb_array_from_hex( $color );
239 - return implode( ',', $rgb );
240 - }
188 + public static function hex2rgb( $hex ) {
189 + $hex = str_replace( '#', '', $hex );
241 190
242 - /**
243 - * Remove the rgb()/rgba() wrapper from a RGB color and return its R, G and B values as an array.
244 - *
245 - * @since 6.8.3
246 - *
247 - * @param string $rgb RGB value including the rgb() or rgba() wrapper.
248 - *
249 - * @return array<string> including three numeric values for R, G, and B.
250 - */
251 - private static function get_rgb_array_from_rgb( $rgb ) {
252 - $rgb = str_replace( array( 'rgb(', 'rgba(', ')' ), '', $rgb );
253 - $rgb = explode( ',', $rgb );
191 + list( $r, $g, $b ) = sscanf( $hex, '%02x%02x%02x' );
254 192
255 - if ( 4 === count( $rgb ) ) {
256 - // Drop the alpha. The function is expected to only return r,g,b with no alpha.
257 - array_pop( $rgb );
258 - }
193 + $rgb = array( $r, $g, $b );
259 194
260 - return $rgb;
195 + return implode( ',', $rgb );
261 196 }
262 197
263 198 /**
264 - * Get the R, G, and B array values from a Hex color code.
265 - *
266 - * @since 6.8.3
267 - *
268 - * @param string $hex A hex color string.
269 - *
270 - * @return array<string> Including three numeric values for R, G, and B.
271 - */
272 - private static function get_rgb_array_from_hex( $hex ) {
273 - $hex = str_replace( '#', '', $hex );
274 - list( $r, $g, $b ) = sscanf( $hex, '%02x%02x%02x' );
275 - return array( $r, $g, $b );
276 - }
277 -
278 - /**
279 199 * @since 4.0
280 - *
281 - * @param string $hex Hex color string.
282 - * @param float|int|string $a Alpha channel value.
283 - *
284 - * @return string
285 200 */
286 201 public static function hex2rgba( $hex, $a ) {
287 202 $rgb = self::hex2rgb( $hex );
203 +
288 204 return 'rgba(' . $rgb . ',' . $a . ')';
289 205 }
290 206
291 207 /**
@@ -290,15 +206,13 @@
290 206
291 207 /**
292 208 * @since 6.0
293 209 *
294 - * @param string $rgba Color setting value. This could be hex or rgb.
295 - *
296 - * @return string Hex color value.
210 + * @param string $rgba
211 + * @return string
297 212 */
298 213 private static function rgb_to_hex( $rgba ) {
299 - if ( str_starts_with( $rgba, '#' ) ) {
300 - // Color is already hex.
214 + if ( strpos( $rgba, '#' ) === 0 ) {
301 215 return $rgba;
302 216 }
303 217 preg_match( '/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i', $rgba, $by_color );
304 218 return sprintf( '%02x%02x%02x', $by_color[1], $by_color[2], $by_color[3] );
@@ -304,80 +218,17 @@
304 218 return sprintf( '%02x%02x%02x', $by_color[1], $by_color[2], $by_color[3] );
305 219 }
306 220
307 221 /**
308 - * @since 6.8
222 + * @param $hex string - The original color in hex format #ffffff
223 + * @param $steps integer - should be between -255 and 255. Negative = darker, positive = lighter
309 224 *
310 - * @param string $hsl
311 - *
312 - * @return string|null Null if it fails to parse the HSL string.
313 - */
314 - private static function hsl_to_hex( $hsl ) {
315 - // Convert hsla to hsl.
316 - $hsl = preg_replace( '/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/', 'hsl($1, $2%, $3%)', $hsl );
317 -
318 - // Extract HSL components from the color string.
319 - preg_match( '/hsl\((\d+),\s*(\d+)%,\s*(\d+)%\)/', $hsl, $matches );
320 -
321 - if ( count( $matches ) !== 4 ) {
322 - // Invalid HSL string format.
323 - return null;
324 - }
325 -
326 - // Extract HSL values.
327 - $h = (int) $matches[1];
328 - $s = (int) $matches[2] / 100;
329 - $l = (int) $matches[3] / 100;
330 -
331 - // Calculate RGB values.
332 - $c = ( 1 - abs( 2 * $l - 1 ) ) * $s;
333 - $x = $c * ( 1 - abs( ( (int) ( $h / 60 ) % 2 ) - 1 ) );
334 - $m = $l - $c / 2;
335 - $r = 0;
336 - $g = 0;
337 - $b = 0;
338 -
339 - if ( $h >= 0 && $h < 60 ) {
340 - $r = $c;
341 - $g = $x;
342 - } elseif ( $h >= 60 && $h < 120 ) {
343 - $r = $x;
344 - $g = $c;
345 - } elseif ( $h >= 120 && $h < 180 ) {
346 - $g = $c;
347 - $b = $x;
348 - } elseif ( $h >= 180 && $h < 240 ) {
349 - $g = $x;
350 - $b = $c;
351 - } elseif ( $h >= 240 && $h < 300 ) {
352 - $r = $x;
353 - $b = $c;
354 - } elseif ( $h >= 300 && $h < 360 ) {
355 - $r = $c;
356 - $b = $x;
357 - }//end if
358 -
359 - // Convert RGB to 8-bit values
360 - $r = round( ( $r + $m ) * 255 );
361 - $g = round( ( $g + $m ) * 255 );
362 - $b = round( ( $b + $m ) * 255 );
363 -
364 - // Convert RGB to hex
365 - return sprintf( '%02x%02x%02x', $r, $g, $b );
366 - }
367 -
368 - /**
369 225 * @since 2.3
370 - *
371 - * @param string $hex string The original color in hex format #ffffff.
372 - * @param int $steps integer Should be between -255 and 255. Negative = darker, positive = lighter.
373 - *
374 - * @return string
375 226 */
376 227 public static function adjust_brightness( $hex, $steps ) {
377 228 $steps = max( - 255, min( 255, $steps ) );
378 229
379 - if ( str_starts_with( $hex, 'rgba(' ) ) {
230 + if ( 0 === strpos( $hex, 'rgba(' ) ) {
380 231 $rgba = str_replace( ')', '', str_replace( 'rgba(', '', $hex ) );
381 232 list ( $r, $g, $b, $a ) = array_map( 'trim', explode( ',', $rgba ) );
382 233 $r = max( 0, min( 255, $r + $steps ) );
383 234 $g = max( 0, min( 255, $g + $steps ) );
@@ -393,15 +244,11 @@
393 244 $color_parts = str_split( $hex, 2 );
394 245 $return = '#';
395 246
396 247 foreach ( $color_parts as $color ) {
397 - // Convert to decimal.
398 - $color = hexdec( $color );
399 - // Adjust color.
400 - $color = max( 0, min( 255, $color + $steps ) );
401 -
402 - // Make two char hex code.
403 - $return .= str_pad( dechex( $color ), 2, '0', STR_PAD_LEFT );
248 + $color = hexdec( $color ); // Convert to decimal
249 + $color = max( 0, min( 255, $color + $steps ) ); // Adjust color
250 + $return .= str_pad( dechex( $color ), 2, '0', STR_PAD_LEFT ); // Make two char hex code
404 251 }
405 252
406 253 return $return;
407 254 }
@@ -409,34 +256,23 @@
409 256 /**
410 257 * @since 6.0
411 258 *
412 259 * @param string $color
413 - *
414 260 * @return int
415 261 */
416 262 public static function get_color_brightness( $color ) {
417 - if ( str_starts_with( $color, 'rgb' ) ) {
263 + if ( 0 === strpos( $color, 'rgb' ) ) {
418 264 $color = self::rgb_to_hex( $color );
419 265 }
420 266
421 - if ( str_starts_with( $color, 'hsl' ) ) {
422 - $hsl_to_hex = self::hsl_to_hex( $color );
423 -
424 - if ( is_null( $hsl_to_hex ) ) {
425 - // Fallback if we cannot convert the HSL value.
426 - return 0;
427 - }
428 -
429 - $color = $hsl_to_hex;
430 - }
431 -
432 267 self::fill_hex( $color );
433 268
434 - $c_r = hexdec( substr( $color, 0, 2 ) );
435 - $c_g = hexdec( substr( $color, 2, 2 ) );
436 - $c_b = hexdec( substr( $color, 4, 2 ) );
269 + $c_r = hexdec( substr( $color, 0, 2 ) );
270 + $c_g = hexdec( substr( $color, 2, 2 ) );
271 + $c_b = hexdec( substr( $color, 4, 2 ) );
272 + $brightness = ( ( $c_r * 299 ) + ( $c_g * 587 ) + ( $c_b * 114 ) ) / 1000;
437 273
438 - return ( ( $c_r * 299 ) + ( $c_g * 587 ) + ( $c_b * 114 ) ) / 1000;
274 + return $brightness;
439 275 }
440 276
441 277 /**
442 278 * Change a 3 character hex color to a 6 character one.
@@ -442,11 +278,9 @@
442 278 * Change a 3 character hex color to a 6 character one.
443 279 *
444 280 * @since 6.0
445 281 *
446 - * @param string $color Color value, passed by reference.
447 - *
448 - * @return void
282 + * @return array
449 283 */
450 284 private static function fill_hex( &$color ) {
451 285 if ( 3 === strlen( $color ) ) {
452 286 $color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2];
@@ -454,12 +288,8 @@
454 288 }
455 289
456 290 /**
457 291 * @since 4.05.02
458 - *
459 - * @param array $vars CSS variable keys.
460 - *
461 - * @return array
462 292 */
463 293 public static function get_css_vars( $vars = array() ) {
464 294 $vars = apply_filters( 'frm_css_vars', $vars );
465 295 return array_unique( $vars );
@@ -466,233 +296,51 @@
466 296 }
467 297
468 298 /**
469 299 * @since 4.05.02
470 - *
471 - * @param array $settings Style settings.
472 - * @param array $defaults Default style settings.
473 - * @param array $vars CSS variable keys to output.
474 - *
475 - * @return void
476 300 */
477 301 public static function output_vars( $settings, $defaults = array(), $vars = array() ) {
478 - if ( ! $vars ) {
302 + if ( empty( $vars ) ) {
479 303 $vars = self::get_css_vars( array_keys( $settings ) );
480 304 }
305 + $remove = array( 'remove_box_shadow', 'remove_box_shadow_active', 'theme_css', 'theme_name', 'theme_selector', 'important_style', 'submit_style', 'collapse_icon', 'center_form', 'custom_css', 'style_class', 'submit_bg_img', 'change_margin', 'repeat_icon' );
306 + $vars = array_diff( $vars, $remove );
481 307
482 - $vars = array_diff( $vars, self::get_style_keys_to_remove_from_output_vars() );
483 -
484 308 foreach ( $vars as $var ) {
485 - if ( ! isset( $settings[ $var ] ) || ! self::css_key_is_valid( $var ) ) {
309 + if ( ! isset( $settings[ $var ] ) ) {
486 310 continue;
487 311 }
488 -
489 312 if ( ! isset( $defaults[ $var ] ) ) {
490 313 $defaults[ $var ] = '';
491 314 }
492 -
493 - $prepared_value = '';
494 -
495 - if ( self::should_add_css_var( $settings, $defaults, $var, $prepared_value ) ) {
496 - // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
497 - echo '--' . esc_html( self::clean_var_name( str_replace( '_', '-', $var ) ) ) . ':' . $prepared_value . ';';
315 + $show = empty( $defaults ) || ( $settings[ $var ] !== '' && $settings[ $var ] !== $defaults[ $var ] );
316 + if ( $show ) {
317 + echo '--' . esc_html( str_replace( '_', '-', $var ) ) . ':' . ( $var === 'font' ? FrmAppHelper::kses( $settings[ $var ] ) : esc_html( $settings[ $var ] ) ) . ';'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
498 318 }
499 319 }
500 320 }
501 321
502 322 /**
503 - * None of these style settings are used as CSS variables, so we want to exclude them to keep the CSS output clean.
504 - *
505 - * @since 6.26.1
506 - *
507 - * @return array<string>
508 - */
509 - private static function get_style_keys_to_remove_from_output_vars() {
510 - return array(
511 - 'remove_box_shadow',
512 - 'remove_box_shadow_active',
513 - 'theme_css',
514 - 'theme_name',
515 - 'theme_selector',
516 - 'important_style',
517 - 'submit_style',
518 - 'collapse_icon',
519 - 'center_form',
520 - 'custom_css',
521 - 'style_class',
522 - 'submit_bg_img',
523 - 'change_margin',
524 - 'repeat_icon',
525 - 'use_base_font_size',
526 - 'field_shape_type',
527 - 'bg_image_id',
528 - 'single_style_custom_css',
529 - 'enable_style_custom_css',
530 - );
531 - }
532 -
533 - /**
534 - * Check if a CSS variable setting is not blank, doesn't match the default, and doesn't include invalid substrings.
535 - *
536 - * @since 6.24
537 - *
538 - * @param array $settings Array of setting values.
539 - * @param array $defaults Array of default values.
540 - * @param string $var The setting key name.
541 - * @param string $prepared_value The value from calling css_var_prepare_value. This is set by reference so it can be used after this function is called.
542 - *
543 - * @return bool True if the CSS value should be printed.
544 - */
545 - private static function should_add_css_var( $settings, $defaults, $var, &$prepared_value ) {
546 - $prepared_value = self::css_var_prepare_value( $settings, $var );
547 -
548 - if ( $prepared_value === '' ) {
549 - return false;
550 - }
551 -
552 - if ( $defaults && $defaults[ $var ] === $prepared_value ) {
553 - return false;
554 - }
555 -
556 - return self::css_value_is_valid( $prepared_value );
557 - }
558 -
559 - /**
560 - * Prevent invalid CSS keys from getting added to the generated CSS.
561 - *
562 - * @since 6.20
563 - *
564 - * @param string $key
565 - *
566 - * @return bool
567 - */
568 - private static function css_key_is_valid( $key ) {
569 - // Any key that is abnormally large is not valid.
570 - // Any key that contains a '{' is not valid.
571 - return strlen( $key ) < 100 && ! str_contains( $key, '{' );
572 - }
573 -
574 - /**
575 - * Confirm a CSS value is valid.
576 - * If it appears to contain JavaScript, it will not be added.
577 - *
578 - * @since 6.20
579 - *
580 - * @param string $var
581 - *
582 - * @return bool
583 - */
584 - private static function css_value_is_valid( $var ) {
585 - if ( is_numeric( $var ) ) {
586 - return true;
587 - }
588 -
589 - // None of these substrings should be present in any CSS value.
590 - $invalid_substrings = array(
591 - 'function(',
592 - ';userAgent',
593 - ';stopPropagation',
594 - '{const',
595 - 'window[',
596 - 'navigator[',
597 - 'Array;',
598 - );
599 -
600 - foreach ( $invalid_substrings as $substring ) {
601 - if ( str_contains( $var, $substring ) ) {
602 - return false;
603 - }
604 - }
605 -
606 - return true;
607 - }
608 -
609 - /**
610 - * Remove anything that isn't used as a CSS variable name.
611 - *
612 - * @param string $var_name
613 - *
614 - * @return string
615 - */
616 - private static function clean_var_name( $var_name ) {
617 - return preg_replace( '/[^a-zA-Z0-9_-]/', '', $var_name );
618 - }
619 -
620 - /**
621 - * Prepare the value for a CSS variable.
622 - *
623 - * @since 6.14
624 - *
625 - * @param array $settings An array of css style.
626 - * @param string $key
627 - *
628 - * @return string
629 - */
630 - private static function css_var_prepare_value( $settings, $key ) {
631 - $value = $settings[ $key ];
632 -
633 - if ( ! is_string( $value ) && ! is_numeric( $value ) ) {
634 - return '';
635 - }
636 -
637 - switch ( $key ) {
638 - case 'font':
639 - return safecss_filter_attr( $value );
640 -
641 - case 'border_width_error':
642 - case 'field_border_width':
643 - if ( ! empty( $settings['field_shape_type'] ) && 'underline' === $settings['field_shape_type'] ) {
644 - return safecss_filter_attr( '0px 0px ' . $value . ' 0px' );
645 - }
646 - break;
647 -
648 - case 'box_shadow':
649 - if ( ! empty( $settings['field_shape_type'] ) && 'underline' === $settings['field_shape_type'] ) {
650 - return safecss_filter_attr( 'none' );
651 - }
652 - break;
653 -
654 - case 'border_radius':
655 - if ( ! empty( $settings['field_shape_type'] ) ) {
656 - switch ( $settings['field_shape_type'] ) {
657 - case 'underline':
658 - case 'regular':
659 - return safecss_filter_attr( '0px' );
660 - case 'circle':
661 - return safecss_filter_attr( '30px' );
662 - }
663 - }
664 - break;
665 - }//end switch
666 -
667 - return esc_html( $value );
668 - }
669 -
670 - /**
671 323 * @since 2.3
672 324 *
673 325 * @param WP_Post $style
674 - *
675 326 * @return array
676 327 */
677 328 public static function get_settings_for_output( $style ) {
678 329 if ( self::previewing_style() ) {
679 330 $frm_style = new FrmStyle();
680 -
681 331 if ( isset( $_POST['frm_style_setting'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
682 332
683 333 // Sanitizing is done later.
684 - //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Missing
685 - $posted = wp_unslash( $_POST['frm_style_setting'] );
686 -
687 - if ( is_array( $posted ) ) {
688 - $settings = $frm_style->sanitize_post_content( $posted['post_content'] );
689 - $style_name = FrmAppHelper::get_post_param( 'style_name', '', 'sanitize_title' );
690 - } else {
334 + $posted = wp_unslash( $_POST['frm_style_setting'] ); //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Missing
335 + if ( ! is_array( $posted ) ) {
691 336 $posted = json_decode( $posted, true );
692 337 FrmAppHelper::format_form_data( $posted );
693 338 $settings = $frm_style->sanitize_post_content( $posted['frm_style_setting']['post_content'] );
694 339 $style_name = sanitize_title( $posted['style_name'] );
340 + } else {
341 + $settings = $frm_style->sanitize_post_content( $posted['post_content'] );
342 + $style_name = FrmAppHelper::get_post_param( 'style_name', '', 'sanitize_title' );
695 343 }
696 344 } else {
697 345 $settings = $frm_style->sanitize_post_content( wp_unslash( $_GET ) );
698 346 $style_name = FrmAppHelper::get_param( 'style_name', '', 'get', 'sanitize_title' );
@@ -697,14 +345,11 @@
697 345 $settings = $frm_style->sanitize_post_content( wp_unslash( $_GET ) );
698 346 $style_name = FrmAppHelper::get_param( 'style_name', '', 'get', 'sanitize_title' );
699 347 }
700 348
701 - $settings = self::update_base_font_size( $settings, $frm_style->get_defaults() );
702 -
703 349 FrmAppHelper::sanitize_value( 'sanitize_text_field', $settings );
704 350
705 351 $settings['style_class'] = '';
706 -
707 352 if ( ! empty( $style_name ) ) {
708 353 $settings['style_class'] = $style_name . '.';
709 354 }
710 355 } else {
@@ -709,9 +354,9 @@
709 354 }
710 355 } else {
711 356 $settings = $style->post_content;
712 357 $settings['style_class'] = 'frm_style_' . $style->post_name . '.';
713 - }//end if
358 + }
714 359
715 360 $settings['style_class'] .= 'with_frm_style';
716 361 $settings['font'] = stripslashes( $settings['font'] );
717 362 $settings['change_margin'] = self::description_margin_for_screensize( $settings['width'] );
@@ -716,9 +361,8 @@
716 361 $settings['font'] = stripslashes( $settings['font'] );
717 362 $settings['change_margin'] = self::description_margin_for_screensize( $settings['width'] );
718 363
719 364 $checkbox_opts = array( 'important_style', 'auto_width', 'submit_style', 'collapse_icon', 'center_form' );
720 -
721 365 foreach ( $checkbox_opts as $opt ) {
722 366 if ( ! isset( $settings[ $opt ] ) ) {
723 367 $settings[ $opt ] = 0;
724 368 }
@@ -728,9 +372,9 @@
728 372
729 373 $settings['field_height'] = $settings['field_height'] === '' ? 'auto' : $settings['field_height'];
730 374 $settings['field_width'] = $settings['field_width'] === '' ? 'auto' : $settings['field_width'];
731 375 $settings['auto_width'] = $settings['auto_width'] ? 'auto' : $settings['field_width'];
732 - $settings['box_shadow'] = ! empty( $settings['remove_box_shadow'] ) ? 'none' : '0 1px 2px 0 rgba(18, 18, 23, 0.05)';
376 + $settings['box_shadow'] = ! empty( $settings['remove_box_shadow'] ) ? 'none' : '0 1px 1px rgba(0, 0, 0, 0.075) inset';
733 377
734 378 if ( ! isset( $settings['repeat_icon'] ) ) {
735 379 $settings['repeat_icon'] = 1;
736 380 }
@@ -738,85 +382,16 @@
738 382 return $settings;
739 383 }
740 384
741 385 /**
742 - * Update the "Base Font Size" value from "Quick Settings across multiple settings values".
743 - *
744 - * @since 6.14
745 - *
746 - * @param array $settings An array of css style.
747 - * @param array $defaults Default style settings.
748 - *
749 - * @return array
750 - */
751 - public static function update_base_font_size( $settings, $defaults ) {
752 - if ( empty( $settings['base_font_size'] ) || empty( $settings['use_base_font_size'] ) || 'false' === $settings['use_base_font_size'] ) {
753 - return $settings;
754 - }
755 -
756 - $base_font_size = (int) $settings['base_font_size'];
757 - $font_size = $defaults['font_size'];
758 - $font_sizes_to_update = array(
759 - 'font_size',
760 - 'field_font_size',
761 - 'check_font_size',
762 - 'title_size',
763 - 'form_desc_size',
764 - 'description_font_size',
765 - 'section_font_size',
766 - 'submit_font_size',
767 - 'success_font_size',
768 - 'error_font_size',
769 - 'progress_size',
770 - );
771 -
772 - array_map(
773 - function ( $key ) use ( $defaults, $font_size, $base_font_size, &$settings ) {
774 - if ( isset( $settings[ $key ] ) ) {
775 - $settings[ $key ] = round( self::get_base_font_size_scale( $key, $font_size, $defaults ) * $base_font_size ) . 'px';
776 - }
777 - },
778 - $font_sizes_to_update
779 - );
780 -
781 - return $settings;
782 - }
783 -
784 - /**
785 - * Get style font size scale value.
786 - *
787 - * @since 6.14
788 - *
789 - * @param string $key Setting key.
790 - * @param int|string $value Base font size value.
791 - * @param array $defaults Default style settings.
792 - *
793 - * @return float
794 - */
795 - private static function get_base_font_size_scale( $key, $value, $defaults ) {
796 - if ( empty( $defaults[ $key ] ) || ! is_numeric( (int) $defaults[ $key ] ) || ! is_numeric( (int) $value ) || 0 === (int) $value ) {
797 - return 1;
798 - }
799 -
800 - return round( (int) $defaults[ $key ] / (int) $value, 2 );
801 - }
802 -
803 - /**
804 386 * @since 2.3
805 - *
806 - * @param array $settings Style settings, passed by reference.
807 - * @param bool $allow_transparent Whether transparent colors are allowed.
808 - *
809 - * @return void
810 387 */
811 388 public static function prepare_color_output( &$settings, $allow_transparent = true ) {
812 389 $colors = self::allow_color_override();
813 -
814 390 foreach ( $colors as $css => $opts ) {
815 391 if ( $css === 'transparent' && ! $allow_transparent ) {
816 392 $css = '';
817 393 }
818 -
819 394 foreach ( $opts as $opt ) {
820 395 self::get_color_output( $css, $settings[ $opt ] );
821 396 }
822 397 }
@@ -823,10 +398,8 @@
823 398 }
824 399
825 400 /**
826 401 * @since 2.3
827 - *
828 - * @return array
829 402 */
830 403 private static function allow_color_override() {
831 404 $frm_style = new FrmStyle();
832 405 $colors = $frm_style->get_color_settings();
@@ -846,8 +419,9 @@
846 419 'submit_hover_border_color',
847 420 'submit_active_border_color',
848 421 'submit_hover_bg_color',
849 422 'submit_active_bg_color',
423 + 'success_bg_color',
850 424 );
851 425
852 426 return array(
853 427 'transparent' => $transparent,
@@ -856,66 +430,30 @@
856 430 }
857 431
858 432 /**
859 433 * @since 2.3
860 - *
861 - * @param string $default Default color value.
862 - * @param string $color Color value, passed by reference.
863 - *
864 - * @return void
865 434 */
866 435 private static function get_color_output( $default, &$color ) {
867 436 $color = trim( $color );
868 -
869 - if ( ! $color ) {
437 + if ( empty( $color ) ) {
870 438 $color = $default;
871 - } elseif ( ! str_contains( $color, '#' ) && self::is_hex( $color ) ) {
439 + } elseif ( false !== strpos( $color, 'rgb(' ) ) {
440 + $color = str_replace( 'rgb(', 'rgba(', $color );
441 + $color = str_replace( ')', ',1)', $color );
442 + } elseif ( strpos( $color, '#' ) === false && false === strpos( $color, 'rgba(' ) ) {
872 443 $color = '#' . $color;
873 444 }
874 445 }
875 446
876 447 /**
877 - * If a color looks like a hex code without the #, prepend the #.
878 - * A color looks like a hex code if it does not contain the substrings "rgb", "rgba", "hsl", "hsla", or "hwb".
879 - *
880 - * @since 6.8
881 - *
882 - * @param string $color
883 - *
884 - * @return bool
885 - */
886 - private static function is_hex( $color ) {
887 - $non_hex_substrings = array(
888 - 'rgb(',
889 - 'rgba(',
890 - 'hsl(',
891 - 'hsla(',
892 - 'hwb(',
893 - );
894 -
895 - foreach ( $non_hex_substrings as $substring ) {
896 - if ( str_contains( $color, $substring ) ) {
897 - return false;
898 - }
899 - }
900 -
901 - return true;
902 - }
903 -
904 - /**
905 448 * If left/right label is over a certain size,
906 449 * adjust the field description margin at a different screen size
907 450 *
908 451 * @since 2.3
909 - *
910 - * @param string $width Label width value.
911 - *
912 - * @return false|string
913 452 */
914 453 private static function description_margin_for_screensize( $width ) {
915 454 $temp_label_width = str_replace( 'px', '', $width );
916 455 $change_margin = false;
917 -
918 456 if ( $temp_label_width >= 230 ) {
919 457 $change_margin = '800px';
920 458 } elseif ( $width >= 215 ) {
921 459 $change_margin = '700px';
@@ -926,33 +464,48 @@
926 464 return $change_margin;
927 465 }
928 466
929 467 /**
930 - * Get the raw alignment value stored in the active style for a radio or checkbox field.
468 + * @since 2.3
931 469 *
932 - * @since 6.32
933 - *
934 - * @param array|int $field The 'field' array.
935 - *
936 - * @return string
470 + * @return bool
937 471 */
938 - public static function get_align_from_active_style( $field ) {
939 - $field_type = FrmField::is_checkbox( $field ) ? 'checkbox' : 'radio';
940 - $key = FrmStylesController::get_align_key_for_style_settings( $field_type );
472 + public static function previewing_style() {
473 + $ajax_change = isset( $_POST['action'] ) && $_POST['action'] === 'frm_change_styling' && isset( $_POST['frm_style_setting'] ); // phpcs:ignore WordPress.Security.NonceVerification.Missing
941 474
942 - return FrmStylesController::get_active_style( $field )->post_content[ $key ] ?? '';
475 + return $ajax_change || isset( $_GET['flat'] );
943 476 }
944 477
945 478 /**
946 - * @since 2.3
947 - *
948 - * @return bool
479 + * @since 5.5.1
480 + * @return void
949 481 */
950 - public static function previewing_style() {
951 - // phpcs:ignore WordPress.Security.NonceVerification.Missing
952 - $ajax_change = isset( $_POST['action'] ) && $_POST['action'] === 'frm_change_styling' && isset( $_POST['frm_style_setting'] );
482 + public static function maybe_include_font_icon_css() {
483 + $signature_add_on_is_active = class_exists( 'FrmSigAppHelper', false );
953 484
954 - return $ajax_change || isset( $_GET['flat'] );
485 + if ( ! FrmAppHelper::pro_is_installed() && ! $signature_add_on_is_active ) {
486 + // If Pro and Signatures are both not active, there is no need to include the font icon CSS in lite.
487 + return;
488 + }
489 +
490 + $pro_version_will_handle_loading = false;
491 +
492 + if ( class_exists( 'FrmProDb', false ) ) {
493 + $pro_version_that_includes_font_icons_css = '5.5.1';
494 +
495 + // Include font icons in Lite for backward compatibility with older version of Pro.
496 + $pro_version_will_handle_loading = version_compare( FrmProDb::$plug_version, $pro_version_that_includes_font_icons_css, '>=' );
497 + }
498 +
499 + $load_it_here = false;
500 + if ( ! $pro_version_will_handle_loading ) {
501 + // If Pro is not handling it, we still need to include it for the Signature add on.
502 + $load_it_here = $signature_add_on_is_active;
503 + }
504 +
505 + if ( $load_it_here ) {
506 + readfile( FrmAppHelper::plugin_path() . '/css/font_icons.css' );
507 + }
955 508 }
956 509
957 510 /**
958 511 * Get the URL for the Styler page list view (where you can assign styles to a form and view style templates) for a target form.
@@ -958,10 +511,9 @@
958 511 * Get the URL for the Styler page list view (where you can assign styles to a form and view style templates) for a target form.
959 512 *
960 513 * @since 6.0
961 514 *
962 - * @param int|string $form_id
963 - *
515 + * @param string|int $form_id
964 516 * @return string
965 517 */
966 518 public static function get_list_url( $form_id ) {
967 519 return admin_url( 'admin.php?page=formidable-styles&form=' . absint( $form_id ) );
@@ -967,45 +519,19 @@
967 519 return admin_url( 'admin.php?page=formidable-styles&form=' . absint( $form_id ) );
968 520 }
969 521
970 522 /**
971 - * Get the back button args from Style settings.
972 - *
973 - * @since 6.14
974 - *
975 - * @param stdClass|WP_Post $style
976 - * @param int $form_id
977 - *
978 - * @return array
979 - */
980 - public static function get_style_options_back_button_args( $style, $form_id ) {
981 - if ( self::is_advanced_settings() ) {
982 - return array(
983 - 'title' => __( 'Quick Settings', 'formidable' ),
984 - 'id' => 'frm_style_back_to_quick_settings',
985 - );
986 - }
987 - return array(
988 - 'href' => self::get_list_url( $form_id ),
989 - 'title' => $style->post_title,
990 - );
991 - }
992 -
993 - /**
994 523 * Get a link to edit a target style post object in the visual styler.
995 524 *
996 - * @param stdClass|WP_Post $style
997 - * @param int|string $form_id Used for the back button and preview form target.
998 - * @param string $section The url param section.
999 - *
525 + * @param WP_Post|stdClass $style
526 + * @param string|int $form_id Used for the back button and preview form target.
1000 527 * @return string
1001 528 */
1002 - public static function get_edit_url( $style, $form_id = 0, $section = '' ) {
529 + public static function get_edit_url( $style, $form_id = 0 ) {
1003 530 $query_args = array(
1004 531 'page' => 'formidable-styles',
1005 532 'frm_action' => 'edit',
1006 533 'id' => $style->ID,
1007 - 'section' => $section,
1008 534 );
1009 535
1010 536 if ( $form_id ) {
1011 537 // We include &form_id for the back button to know where to point to.
@@ -1020,17 +546,15 @@
1020 546 * All unassigned forms are included in the count for the default style.
1021 547 *
1022 548 * @since 6.0
1023 549 *
1024 - * @param int|string $style_id
550 + * @param string|int $style_id
1025 551 * @param bool $is_default
1026 - *
1027 552 * @return int
1028 553 */
1029 554 public static function get_form_count_for_style( $style_id, $is_default ) {
1030 - $serialized = serialize( array( 'custom_style' => (string) $style_id ) );
1031 - // Chop off the "a:1:{" from the front and the "}" from the back.
1032 - $substring = substr( $serialized, 5, -1 );
555 + $serialized = serialize( array( 'custom_style' => (string) $style_id ) );
556 + $substring = substr( $serialized, 5, -1 ); // Chop off the "a:1:{" from the front and the "}" from the back.
1033 557 $number_of_forms = FrmDb::get_count(
1034 558 'frm_forms',
1035 559 array(
1036 560 'status' => 'published',
@@ -1043,10 +567,11 @@
1043 567 return $number_of_forms;
1044 568 }
1045 569
1046 570 $conversational_style_id = FrmDb::get_var( 'posts', array( 'post_name' => 'lines-no-boxes' ), 'ID' );
571 + $number_of_forms += self::get_default_style_count( $style_id, $conversational_style_id );
1047 572
1048 - return $number_of_forms + self::get_default_style_count( $style_id, $conversational_style_id );
573 + return $number_of_forms;
1049 574 }
1050 575
1051 576 /**
1052 577 * Get the number of forms that use the default style.
@@ -1052,22 +577,21 @@
1052 577 * Get the number of forms that use the default style.
1053 578 *
1054 579 * @since 6.0
1055 580 *
1056 - * @param int|string $style_id
581 + * @param string|int $style_id
1057 582 * @param mixed $conversational_style_id
1058 - *
1059 583 * @return int
1060 584 */
1061 585 private static function get_default_style_count( $style_id, $conversational_style_id ) {
1062 586 $substrings = array_map(
1063 - function ( $value ) {
587 + function( $value ) {
1064 588 $substring = serialize( array( 'custom_style' => $value ) );
1065 589 return substr( $substring, 5, -1 );
1066 590 },
1067 591 array( '1', 1 )
1068 592 );
1069 - $where = array(
593 + $where = array(
1070 594 'status' => 'published',
1071 595 0 => array(
1072 596 'options NOT LIKE' => 'custom_style',
1073 597 'or' => 1,
@@ -1077,9 +601,9 @@
1077 601
1078 602 if ( $conversational_style_id ) {
1079 603 // When a conversational style is set, check for it in the query by wrapping the where and adding a conversational option check.
1080 604 $is_conversational_style = (int) $style_id === (int) $conversational_style_id;
1081 - $where[0] = array(
605 + $where[0] = array(
1082 606 // The chat option doesn't exist if it isn't on.
1083 607 ( $is_conversational_style ? 'options LIKE' : 'options NOT LIKE' ) => ';s:4:"chat";',
1084 608 $where[0],
1085 609 );
@@ -1088,178 +612,89 @@
1088 612 return FrmDb::get_count( 'frm_forms', $where );
1089 613 }
1090 614
1091 615 /**
1092 - * Check if the current page is the advanced settings page.
1093 - *
1094 - * @since 6.14
1095 - *
1096 - * @return bool True if is advanced settings, false otherwise.
616 + * @deprecated 3.01
617 + * @codeCoverageIgnore
1097 618 */
1098 - public static function is_advanced_settings() {
1099 - return FrmAppHelper::get_param( 'section' ) === 'advanced-settings' && FrmAppHelper::get_param( 'page' ) === 'formidable-styles';
619 + public static function get_sigle_label_postitions() {
620 + return FrmDeprecated::get_sigle_label_postitions();
1100 621 }
1101 622
1102 623 /**
1103 - * Get wrapper classname for style editor sections.
1104 - *
1105 - * @since 6.16
1106 - *
1107 - * @param string $section_type
1108 - *
1109 - * @return string The style editor wrapper classname.
624 + * @deprecated 3.02.03
625 + * @codeCoverageIgnore
1110 626 */
1111 - public static function style_editor_get_wrapper_classname( $section_type ) {
1112 - $is_quick_settings = 'quick-settings' === $section_type;
1113 - $classname = 'frm-style-editor-form';
1114 - $classname .= ( ! self::is_advanced_settings() xor $is_quick_settings ) ? ' frm_hidden' : '';
1115 -
1116 - return $classname . ( FrmAppHelper::pro_is_installed() ? ' frm-pro' : '' );
627 + public static function jquery_themes() {
628 + return FrmDeprecated::jquery_themes();
1117 629 }
1118 630
1119 631 /**
1120 - * Retrieve the background image URL of the submit button.
1121 - * It may be either a full URL string (used in versions prior to 6.14) or a numeric attachment ID (introduced in version 6.14).
1122 - *
1123 - * @since 6.14
1124 - *
1125 - * @param array $settings
1126 - *
1127 - * @return false|string Return image url or false.
632 + * @deprecated 3.02.03
633 + * @codeCoverageIgnore
1128 634 */
1129 - public static function get_submit_image_bg_url( $settings ) {
1130 - $background_image = $settings['submit_bg_img'];
1131 -
1132 - if ( ! $background_image ) {
1133 - return false;
1134 - }
1135 -
1136 - // Handle the case where the submit_bg_img is a full URL string. If the
1137 - // Settings were saved with the older styler version prior to 6.14, the
1138 - // submit_bg_img will be a full URL string.
1139 - if ( ! is_numeric( $background_image ) ) {
1140 - return $background_image;
1141 - }
1142 -
1143 - return wp_get_attachment_url( (int) $background_image );
635 + public static function jquery_css_url( $theme_css ) {
636 + return FrmDeprecated::jquery_css_url( $theme_css );
1144 637 }
1145 638
1146 639 /**
1147 - * Determines if the chosen JavaScript library should be used.
1148 - *
1149 - * @since 6.13
1150 - *
1151 - * @return bool
640 + * @deprecated 3.02.03
641 + * @codeCoverageIgnore
1152 642 */
1153 - public static function use_chosen_js() {
1154 - if ( ! FrmAppHelper::pro_is_installed() ) {
1155 - return false;
1156 - }
1157 -
1158 - return is_callable( 'FrmProAppHelper::use_chosen_js' ) ? FrmProAppHelper::use_chosen_js() : true;
643 + public static function enqueue_jquery_css() {
644 + FrmDeprecated::enqueue_jquery_css();
1159 645 }
1160 646
1161 647 /**
1162 - * Returns the bottom part from a margin/padding value.
1163 - *
1164 - * @since 6.17
1165 - *
1166 - * @param string $value The margin/padding value.
1167 - *
1168 - * @return string
648 + * @deprecated 3.02.03
649 + * @codeCoverageIgnore
1169 650 */
1170 - public static function get_bottom_value( $value ) {
1171 - if ( ! $value ) {
1172 - return $value;
1173 - }
1174 -
1175 - $parts = explode( ' ', $value );
1176 -
1177 - return count( $parts ) < 3 ? $parts[0] : $parts[2];
651 + public static function get_form_for_page() {
652 + return FrmDeprecated::get_form_for_page();
1178 653 }
1179 654
1180 655 /**
1181 - * Scope CSS to .frm_forms on admin pages to prevent style conflicts.
1182 - * On front-end pages, the CSS is returned unchanged.
656 + * @since 4.0
657 + * @deprecated x.x The style menu is no longer used in the styler.
1183 658 *
1184 - * @since 6.30
1185 - *
1186 - * @param string $css The CSS to scope.
1187 - *
659 + * @param string $active
1188 660 * @return string
1189 661 */
1190 - public static function maybe_scope_css_for_admin( $css ) {
1191 - if ( ! self::should_scope_custom_css() ) {
1192 - return $css;
1193 - }
1194 -
1195 - /**
1196 - * Filter the CSS selector used for @scope when scoping custom CSS on admin pages.
1197 - *
1198 - * @since 6.30
1199 - *
1200 - * @param string $selector The CSS selector to scope to. Default '.frm_forms'.
1201 - */
1202 - $selector = apply_filters( 'frm_scope_custom_css_selector', '.frm_forms' );
1203 -
1204 - return '@scope (' . $selector . ') {' . $css . '}';
662 + public static function get_style_menu( $active = '' ) {
663 + _deprecated_function( __METHOD__, 'x.x' );
664 + return '';
1205 665 }
1206 666
1207 667 /**
1208 - * Scope only the custom CSS portion of the full cached stylesheet for admin pages.
1209 - * Extracts the global custom CSS from the cached CSS, outputs the theme CSS unchanged,
1210 - * and returns only the custom CSS portion scoped.
668 + * @deprecated x.x The style menu is no longer used in the styler.
1211 669 *
1212 - * @since 6.30
1213 - *
1214 - * @param string $css The full cached CSS containing both theme and custom CSS.
1215 - *
1216 - * @return string The theme CSS with only the custom CSS portion scoped.
670 + * @param string $active
671 + * @return void
1217 672 */
1218 - public static function maybe_scope_custom_css_in_cached_output( $css ) {
1219 - if ( ! self::should_scope_custom_css() ) {
1220 - return $css;
1221 - }
1222 -
1223 - $custom_css = strip_tags( FrmStylesController::get_custom_css() );
1224 -
1225 - if ( ! $custom_css ) {
1226 - return $css;
1227 - }
1228 -
1229 - // The cached CSS is minified. Minify the custom CSS the same way to find it.
1230 - $minified_custom_css = self::minify_css( $custom_css );
1231 - $custom_css_pos = strrpos( $css, $minified_custom_css );
1232 -
1233 - if ( false !== $custom_css_pos ) {
1234 - $css = substr( $css, 0, $custom_css_pos );
1235 - }
1236 -
1237 - return $css . self::maybe_scope_css_for_admin( $custom_css );
673 + public static function style_menu( $active = '' ) {
674 + _deprecated_function( __METHOD__, 'x.x' );
1238 675 }
1239 676
1240 677 /**
1241 - * Minify CSS by stripping comments and whitespace.
1242 - * Matches the minification used when saving the cached CSS file.
678 + * Either get the heading or the style switcher.
1243 679 *
1244 - * @since 6.30
680 + * @since 4.0
681 + * @deprecated x.x The style switcher was replaced with a form switcher and is no longer used.
1245 682 *
1246 - * @param string $css The CSS to minify.
1247 - *
1248 - * @return string
683 + * @param array $atts
684 + * @return void
1249 685 */
1250 - private static function minify_css( $css ) {
1251 - return preg_replace( '/\/\*(.|\s)*?\*\//', '', str_replace( array( "\r\n", "\r", "\n", "\t", ' ' ), '', $css ) );
686 + public static function styler_switcher( $atts ) {
687 + _deprecated_function( __METHOD__, 'x.x' );
1252 688 }
1253 689
1254 690 /**
1255 - * Check if custom CSS should be scoped for admin context.
691 + * @since 4.0
692 + * @deprecated x.x The styler now uses the Embed/Preview/Update header. It uses the same save button as other pages with Form tabs.
1256 693 *
1257 - * @since 6.30
1258 - *
1259 - * @return bool
694 + * @param array $atts
695 + * @return void
1260 696 */
1261 - private static function should_scope_custom_css() {
1262 - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Read-only, used to scope CSS output for admin context.
1263 - return isset( $_GET['frm_scope_custom_css'] );
697 + public static function styler_save_button( $atts ) {
698 + _deprecated_function( __METHOD__, 'x.x' );
1264 699 }
1265 700 }