Conditions | 65 |
Paths | > 20000 |
Total Lines | 398 |
Code Lines | 271 |
Lines | 11 |
Ratio | 2.76 % |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
219 | public static function output_fields( $options ) { |
||
220 | foreach ( $options as $value ) { |
||
221 | if ( ! isset( $value['type'] ) ) { |
||
222 | continue; |
||
223 | } |
||
224 | if ( ! isset( $value['id'] ) ) { |
||
225 | $value['id'] = ''; |
||
226 | } |
||
227 | if ( ! isset( $value['title'] ) ) { |
||
228 | $value['title'] = isset( $value['name'] ) ? $value['name'] : ''; |
||
229 | } |
||
230 | if ( ! isset( $value['class'] ) ) { |
||
231 | $value['class'] = ''; |
||
232 | } |
||
233 | if ( ! isset( $value['css'] ) ) { |
||
234 | $value['css'] = ''; |
||
235 | } |
||
236 | if ( ! isset( $value['default'] ) ) { |
||
237 | $value['default'] = ''; |
||
238 | } |
||
239 | if ( ! isset( $value['desc'] ) ) { |
||
240 | $value['desc'] = ''; |
||
241 | } |
||
242 | if ( ! isset( $value['desc_tip'] ) ) { |
||
243 | $value['desc_tip'] = false; |
||
244 | } |
||
245 | if ( ! isset( $value['placeholder'] ) ) { |
||
246 | $value['placeholder'] = ''; |
||
247 | } |
||
248 | |||
249 | // Custom attribute handling |
||
250 | $custom_attributes = array(); |
||
251 | |||
252 | View Code Duplication | if ( ! empty( $value['custom_attributes'] ) && is_array( $value['custom_attributes'] ) ) { |
|
253 | foreach ( $value['custom_attributes'] as $attribute => $attribute_value ) { |
||
254 | $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"'; |
||
255 | } |
||
256 | } |
||
257 | |||
258 | // Description handling |
||
259 | $field_description = self::get_field_description( $value ); |
||
260 | extract( $field_description ); |
||
261 | |||
262 | // Switch based on type |
||
263 | switch ( $value['type'] ) { |
||
264 | |||
265 | // Section Titles |
||
266 | case 'title': |
||
267 | if ( ! empty( $value['title'] ) ) { |
||
268 | echo '<h3>' . esc_html( $value['title'] ) . '</h3>'; |
||
269 | } |
||
270 | if ( ! empty( $value['desc'] ) ) { |
||
271 | echo wpautop( wptexturize( wp_kses_post( $value['desc'] ) ) ); |
||
272 | } |
||
273 | echo '<table class="form-table">'. "\n\n"; |
||
274 | if ( ! empty( $value['id'] ) ) { |
||
275 | do_action( 'woocommerce_settings_' . sanitize_title( $value['id'] ) ); |
||
276 | } |
||
277 | break; |
||
278 | |||
279 | // Section Ends |
||
280 | case 'sectionend': |
||
281 | View Code Duplication | if ( ! empty( $value['id'] ) ) { |
|
282 | do_action( 'woocommerce_settings_' . sanitize_title( $value['id'] ) . '_end' ); |
||
283 | } |
||
284 | echo '</table>'; |
||
285 | View Code Duplication | if ( ! empty( $value['id'] ) ) { |
|
286 | do_action( 'woocommerce_settings_' . sanitize_title( $value['id'] ) . '_after' ); |
||
287 | } |
||
288 | break; |
||
289 | |||
290 | // Standard text inputs and subtypes like 'number' |
||
291 | case 'text': |
||
292 | case 'email': |
||
293 | case 'number': |
||
294 | case 'color' : |
||
295 | case 'password' : |
||
296 | |||
297 | $type = $value['type']; |
||
298 | $option_value = self::get_option( $value['id'], $value['default'] ); |
||
299 | |||
300 | if ( $value['type'] == 'color' ) { |
||
301 | $type = 'text'; |
||
302 | $value['class'] .= 'colorpick'; |
||
303 | $description .= '<div id="colorPickerDiv_' . esc_attr( $value['id'] ) . '" class="colorpickdiv" style="z-index: 100;background:#eee;border:1px solid #ccc;position:absolute;display:none;"></div>'; |
||
304 | } |
||
305 | |||
306 | ?><tr valign="top"> |
||
307 | <th scope="row" class="titledesc"> |
||
308 | <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label> |
||
309 | <?php echo $tooltip_html; ?> |
||
310 | </th> |
||
311 | <td class="forminp forminp-<?php echo sanitize_title( $value['type'] ) ?>"> |
||
312 | <?php |
||
313 | if ( 'color' == $value['type'] ) { |
||
314 | echo '<span class="colorpickpreview" style="background: ' . esc_attr( $option_value ) . ';"></span>'; |
||
315 | } |
||
316 | ?> |
||
317 | <input |
||
318 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
319 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
320 | type="<?php echo esc_attr( $type ); ?>" |
||
321 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
322 | value="<?php echo esc_attr( $option_value ); ?>" |
||
323 | class="<?php echo esc_attr( $value['class'] ); ?>" |
||
324 | placeholder="<?php echo esc_attr( $value['placeholder'] ); ?>" |
||
325 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
326 | /> <?php echo $description; ?> |
||
327 | </td> |
||
328 | </tr><?php |
||
329 | break; |
||
330 | |||
331 | // Textarea |
||
332 | case 'textarea': |
||
333 | |||
334 | $option_value = self::get_option( $value['id'], $value['default'] ); |
||
335 | |||
336 | ?><tr valign="top"> |
||
337 | <th scope="row" class="titledesc"> |
||
338 | <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label> |
||
339 | <?php echo $tooltip_html; ?> |
||
340 | </th> |
||
341 | <td class="forminp forminp-<?php echo sanitize_title( $value['type'] ) ?>"> |
||
342 | <?php echo $description; ?> |
||
343 | |||
344 | <textarea |
||
345 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
346 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
347 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
348 | class="<?php echo esc_attr( $value['class'] ); ?>" |
||
349 | placeholder="<?php echo esc_attr( $value['placeholder'] ); ?>" |
||
350 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
351 | ><?php echo esc_textarea( $option_value ); ?></textarea> |
||
352 | </td> |
||
353 | </tr><?php |
||
354 | break; |
||
355 | |||
356 | // Select boxes |
||
357 | case 'select' : |
||
358 | case 'multiselect' : |
||
359 | |||
360 | $option_value = self::get_option( $value['id'], $value['default'] ); |
||
361 | |||
362 | ?><tr valign="top"> |
||
363 | <th scope="row" class="titledesc"> |
||
364 | <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label> |
||
365 | <?php echo $tooltip_html; ?> |
||
366 | </th> |
||
367 | <td class="forminp forminp-<?php echo sanitize_title( $value['type'] ) ?>"> |
||
368 | <select |
||
369 | name="<?php echo esc_attr( $value['id'] ); ?><?php if ( $value['type'] == 'multiselect' ) echo '[]'; ?>" |
||
370 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
371 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
372 | class="<?php echo esc_attr( $value['class'] ); ?>" |
||
373 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
374 | <?php echo ( 'multiselect' == $value['type'] ) ? 'multiple="multiple"' : ''; ?> |
||
375 | > |
||
376 | <?php |
||
377 | foreach ( $value['options'] as $key => $val ) { |
||
378 | ?> |
||
379 | <option value="<?php echo esc_attr( $key ); ?>" <?php |
||
380 | |||
381 | if ( is_array( $option_value ) ) { |
||
382 | selected( in_array( $key, $option_value ), true ); |
||
383 | } else { |
||
384 | selected( $option_value, $key ); |
||
385 | } |
||
386 | |||
387 | ?>><?php echo $val ?></option> |
||
388 | <?php |
||
389 | } |
||
390 | ?> |
||
391 | </select> <?php echo $description; ?> |
||
392 | </td> |
||
393 | </tr><?php |
||
394 | break; |
||
395 | |||
396 | // Radio inputs |
||
397 | case 'radio' : |
||
398 | |||
399 | $option_value = self::get_option( $value['id'], $value['default'] ); |
||
400 | |||
401 | ?><tr valign="top"> |
||
402 | <th scope="row" class="titledesc"> |
||
403 | <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label> |
||
404 | <?php echo $tooltip_html; ?> |
||
405 | </th> |
||
406 | <td class="forminp forminp-<?php echo sanitize_title( $value['type'] ) ?>"> |
||
407 | <fieldset> |
||
408 | <?php echo $description; ?> |
||
409 | <ul> |
||
410 | <?php |
||
411 | foreach ( $value['options'] as $key => $val ) { |
||
412 | ?> |
||
413 | <li> |
||
414 | <label><input |
||
415 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
416 | value="<?php echo $key; ?>" |
||
417 | type="radio" |
||
418 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
419 | class="<?php echo esc_attr( $value['class'] ); ?>" |
||
420 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
421 | <?php checked( $key, $option_value ); ?> |
||
422 | /> <?php echo $val ?></label> |
||
423 | </li> |
||
424 | <?php |
||
425 | } |
||
426 | ?> |
||
427 | </ul> |
||
428 | </fieldset> |
||
429 | </td> |
||
430 | </tr><?php |
||
431 | break; |
||
432 | |||
433 | // Checkbox input |
||
434 | case 'checkbox' : |
||
435 | |||
436 | $option_value = self::get_option( $value['id'], $value['default'] ); |
||
437 | $visbility_class = array(); |
||
438 | |||
439 | if ( ! isset( $value['hide_if_checked'] ) ) { |
||
440 | $value['hide_if_checked'] = false; |
||
441 | } |
||
442 | if ( ! isset( $value['show_if_checked'] ) ) { |
||
443 | $value['show_if_checked'] = false; |
||
444 | } |
||
445 | if ( 'yes' == $value['hide_if_checked'] || 'yes' == $value['show_if_checked'] ) { |
||
446 | $visbility_class[] = 'hidden_option'; |
||
447 | } |
||
448 | if ( 'option' == $value['hide_if_checked'] ) { |
||
449 | $visbility_class[] = 'hide_options_if_checked'; |
||
450 | } |
||
451 | if ( 'option' == $value['show_if_checked'] ) { |
||
452 | $visbility_class[] = 'show_options_if_checked'; |
||
453 | } |
||
454 | |||
455 | if ( ! isset( $value['checkboxgroup'] ) || 'start' == $value['checkboxgroup'] ) { |
||
456 | ?> |
||
457 | <tr valign="top" class="<?php echo esc_attr( implode( ' ', $visbility_class ) ); ?>"> |
||
458 | <th scope="row" class="titledesc"><?php echo esc_html( $value['title'] ) ?></th> |
||
459 | <td class="forminp forminp-checkbox"> |
||
460 | <fieldset> |
||
461 | <?php |
||
462 | } else { |
||
463 | ?> |
||
464 | <fieldset class="<?php echo esc_attr( implode( ' ', $visbility_class ) ); ?>"> |
||
465 | <?php |
||
466 | } |
||
467 | |||
468 | if ( ! empty( $value['title'] ) ) { |
||
469 | ?> |
||
470 | <legend class="screen-reader-text"><span><?php echo esc_html( $value['title'] ) ?></span></legend> |
||
471 | <?php |
||
472 | } |
||
473 | |||
474 | ?> |
||
475 | <label for="<?php echo $value['id'] ?>"> |
||
476 | <input |
||
477 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
478 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
479 | type="checkbox" |
||
480 | class="<?php echo esc_attr(isset($value['class']) ? $value['class'] : ''); ?>" |
||
481 | value="1" |
||
482 | <?php checked( $option_value, 'yes'); ?> |
||
483 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
484 | /> <?php echo $description ?> |
||
485 | </label> <?php echo $tooltip_html; ?> |
||
486 | <?php |
||
487 | |||
488 | if ( ! isset( $value['checkboxgroup'] ) || 'end' == $value['checkboxgroup'] ) { |
||
489 | ?> |
||
490 | </fieldset> |
||
491 | </td> |
||
492 | </tr> |
||
493 | <?php |
||
494 | } else { |
||
495 | ?> |
||
496 | </fieldset> |
||
497 | <?php |
||
498 | } |
||
499 | break; |
||
500 | |||
501 | // Image width settings |
||
502 | case 'image_width' : |
||
503 | |||
504 | $image_size = str_replace( '_image_size', '', $value[ 'id' ] ); |
||
505 | $size = wc_get_image_size( $image_size ); |
||
506 | $width = isset( $size[ 'width' ] ) ? $size[ 'width' ] : $value[ 'default' ][ 'width' ]; |
||
507 | $height = isset( $size[ 'height' ] ) ? $size[ 'height' ] : $value[ 'default' ][ 'height' ]; |
||
508 | $crop = isset( $size[ 'crop' ] ) ? $size[ 'crop' ] : $value[ 'default' ][ 'crop' ]; |
||
509 | $disabled_attr = ''; |
||
510 | $disabled_message = ''; |
||
511 | |||
512 | if ( has_filter( 'woocommerce_get_image_size_' . $image_size ) ) { |
||
513 | $disabled_attr = 'disabled="disabled"'; |
||
514 | $disabled_message = "<p><small>" . __( 'The settings of this image size have been disabled because its values are being overwritten by a filter.', 'woocommerce' ) . "</small></p>"; |
||
515 | } |
||
516 | |||
517 | ?><tr valign="top"> |
||
518 | <th scope="row" class="titledesc"><?php echo esc_html( $value['title'] ) ?> <?php echo $tooltip_html; echo $disabled_message; ?></th> |
||
519 | <td class="forminp image_width_settings"> |
||
520 | |||
521 | <input name="<?php echo esc_attr( $value['id'] ); ?>[width]" <?php echo $disabled_attr; ?> id="<?php echo esc_attr( $value['id'] ); ?>-width" type="text" size="3" value="<?php echo $width; ?>" /> × <input name="<?php echo esc_attr( $value['id'] ); ?>[height]" <?php echo $disabled_attr; ?> id="<?php echo esc_attr( $value['id'] ); ?>-height" type="text" size="3" value="<?php echo $height; ?>" />px |
||
522 | |||
523 | <label><input name="<?php echo esc_attr( $value['id'] ); ?>[crop]" <?php echo $disabled_attr; ?> id="<?php echo esc_attr( $value['id'] ); ?>-crop" type="checkbox" value="1" <?php checked( 1, $crop ); ?> /> <?php _e( 'Hard Crop?', 'woocommerce' ); ?></label> |
||
524 | |||
525 | </td> |
||
526 | </tr><?php |
||
527 | break; |
||
528 | |||
529 | // Single page selects |
||
530 | case 'single_select_page' : |
||
531 | |||
532 | $args = array( |
||
533 | 'name' => $value['id'], |
||
534 | 'id' => $value['id'], |
||
535 | 'sort_column' => 'menu_order', |
||
536 | 'sort_order' => 'ASC', |
||
537 | 'show_option_none' => ' ', |
||
538 | 'class' => $value['class'], |
||
539 | 'echo' => false, |
||
540 | 'selected' => absint( self::get_option( $value['id'] ) ) |
||
541 | ); |
||
542 | |||
543 | if ( isset( $value['args'] ) ) { |
||
544 | $args = wp_parse_args( $value['args'], $args ); |
||
545 | } |
||
546 | |||
547 | ?><tr valign="top" class="single_select_page"> |
||
548 | <th scope="row" class="titledesc"><?php echo esc_html( $value['title'] ) ?> <?php echo $tooltip_html; ?></th> |
||
549 | <td class="forminp"> |
||
550 | <?php echo str_replace(' id=', " data-placeholder='" . esc_attr__( 'Select a page…', 'woocommerce' ) . "' style='" . $value['css'] . "' class='" . $value['class'] . "' id=", wp_dropdown_pages( $args ) ); ?> <?php echo $description; ?> |
||
551 | </td> |
||
552 | </tr><?php |
||
553 | break; |
||
554 | |||
555 | // Single country selects |
||
556 | case 'single_select_country' : |
||
557 | $country_setting = (string) self::get_option( $value['id'] ); |
||
558 | |||
559 | if ( strstr( $country_setting, ':' ) ) { |
||
560 | $country_setting = explode( ':', $country_setting ); |
||
561 | $country = current( $country_setting ); |
||
562 | $state = end( $country_setting ); |
||
563 | } else { |
||
564 | $country = $country_setting; |
||
565 | $state = '*'; |
||
566 | } |
||
567 | ?><tr valign="top"> |
||
568 | <th scope="row" class="titledesc"> |
||
569 | <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label> |
||
570 | <?php echo $tooltip_html; ?> |
||
571 | </th> |
||
572 | <td class="forminp"><select name="<?php echo esc_attr( $value['id'] ); ?>" style="<?php echo esc_attr( $value['css'] ); ?>" data-placeholder="<?php esc_attr_e( 'Choose a country…', 'woocommerce' ); ?>" title="<?php esc_attr_e( 'Country', 'woocommerce' ) ?>" class="wc-enhanced-select"> |
||
573 | <?php WC()->countries->country_dropdown_options( $country, $state ); ?> |
||
574 | </select> <?php echo $description; ?> |
||
575 | </td> |
||
576 | </tr><?php |
||
577 | break; |
||
578 | |||
579 | // Country multiselects |
||
580 | case 'multi_select_countries' : |
||
581 | |||
582 | $selections = (array) self::get_option( $value['id'] ); |
||
583 | |||
584 | if ( ! empty( $value['options'] ) ) { |
||
585 | $countries = $value['options']; |
||
586 | } else { |
||
587 | $countries = WC()->countries->countries; |
||
588 | } |
||
589 | |||
590 | asort( $countries ); |
||
591 | ?><tr valign="top"> |
||
592 | <th scope="row" class="titledesc"> |
||
593 | <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_html( $value['title'] ); ?></label> |
||
594 | <?php echo $tooltip_html; ?> |
||
595 | </th> |
||
596 | <td class="forminp"> |
||
597 | <select multiple="multiple" name="<?php echo esc_attr( $value['id'] ); ?>[]" style="width:350px" data-placeholder="<?php esc_attr_e( 'Choose countries…', 'woocommerce' ); ?>" title="<?php esc_attr_e( 'Country', 'woocommerce' ) ?>" class="wc-enhanced-select"> |
||
598 | <?php |
||
599 | if ( ! empty( $countries ) ) { |
||
600 | foreach ( $countries as $key => $val ) { |
||
601 | echo '<option value="' . esc_attr( $key ) . '" ' . selected( in_array( $key, $selections ), true, false ).'>' . $val . '</option>'; |
||
602 | } |
||
603 | } |
||
604 | ?> |
||
605 | </select> <?php echo ( $description ) ? $description : ''; ?> </br><a class="select_all button" href="#"><?php _e( 'Select all', 'woocommerce' ); ?></a> <a class="select_none button" href="#"><?php _e( 'Select none', 'woocommerce' ); ?></a> |
||
606 | </td> |
||
607 | </tr><?php |
||
608 | break; |
||
609 | |||
610 | // Default: run an action |
||
611 | default: |
||
612 | do_action( 'woocommerce_admin_field_' . $value['type'], $value ); |
||
613 | break; |
||
614 | } |
||
615 | } |
||
616 | } |
||
617 | |||
807 |
The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.
The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.
To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.