Conditions | 101 |
Paths | 3682 |
Total Lines | 578 |
Lines | 68 |
Ratio | 11.76 % |
Changes | 0 |
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 |
||
326 | public static function output_fields( $options, $option_name = '' ) { |
||
327 | $current_tab = give_get_current_setting_tab(); |
||
328 | |||
329 | // Field Default values. |
||
330 | $defaults = array( |
||
331 | 'id' => '', |
||
332 | 'class' => '', |
||
333 | 'css' => '', |
||
334 | 'default' => '', |
||
335 | 'desc' => '', |
||
336 | 'table_html' => true, |
||
337 | 'repeat' => false, |
||
338 | 'repeat_btn_title' => __( 'Add Field', 'give' ), |
||
339 | ); |
||
340 | |||
341 | foreach ( $options as $value ) { |
||
342 | if ( ! isset( $value['type'] ) ) { |
||
343 | continue; |
||
344 | } |
||
345 | |||
346 | // Set title. |
||
347 | $defaults['title'] = isset( $value['name'] ) ? $value['name'] : ''; |
||
348 | |||
349 | // Set default setting. |
||
350 | $value = wp_parse_args( $value, $defaults ); |
||
351 | |||
352 | // Colorpicker field. |
||
353 | $value['class'] = ( 'colorpicker' === $value['type'] ? trim( $value['class'] ) . ' give-colorpicker' : $value['class'] ); |
||
354 | $value['type'] = ( 'colorpicker' === $value['type'] ? 'text' : $value['type'] ); |
||
355 | |||
356 | |||
357 | // Custom attribute handling. |
||
358 | $custom_attributes = array(); |
||
359 | |||
360 | View Code Duplication | if ( ! empty( $value['attributes'] ) && is_array( $value['attributes'] ) ) { |
|
361 | foreach ( $value['attributes'] as $attribute => $attribute_value ) { |
||
362 | $custom_attributes[] = esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"'; |
||
363 | } |
||
364 | } |
||
365 | |||
366 | // Description handling. |
||
367 | $description = self::get_field_description( $value ); |
||
368 | |||
369 | // Switch based on type. |
||
370 | switch ( $value['type'] ) { |
||
371 | |||
372 | // Section Titles. |
||
373 | case 'title': |
||
374 | if ( ! empty( $value['title'] ) || ! empty( $value['desc'] ) ) { |
||
375 | ?> |
||
376 | <div class="give-setting-tab-header give-setting-tab-header-<?php echo $current_tab; ?>"> |
||
377 | <?php if ( ! empty( $value['title'] ) ) : ?> |
||
378 | <h2><?php echo self::get_field_title( $value ); ?></h2> |
||
379 | <hr> |
||
380 | <?php endif; ?> |
||
381 | |||
382 | <?php if ( ! empty( $value['desc'] ) ) : ?> |
||
383 | <?php echo wpautop( wptexturize( wp_kses_post( $value['desc'] ) ) ); ?> |
||
384 | <?php endif; ?> |
||
385 | </div> |
||
386 | <?php |
||
387 | } |
||
388 | |||
389 | if ( $value['table_html'] ) { |
||
390 | echo '<table class="form-table give-setting-tab-body give-setting-tab-body-' . $current_tab . '">' . "\n\n"; |
||
391 | } |
||
392 | |||
393 | if ( ! empty( $value['id'] ) ) { |
||
394 | |||
395 | /** |
||
396 | * Trigger Action. |
||
397 | * |
||
398 | * Note: action dynamically fire on basis of field id. |
||
399 | * |
||
400 | * @since 1.8 |
||
401 | */ |
||
402 | do_action( 'give_settings_' . sanitize_title( $value['id'] ) ); |
||
403 | } |
||
404 | |||
405 | break; |
||
406 | |||
407 | // Section Ends. |
||
408 | case 'sectionend': |
||
409 | View Code Duplication | if ( ! empty( $value['id'] ) ) { |
|
410 | |||
411 | /** |
||
412 | * Trigger Action. |
||
413 | * |
||
414 | * Note: action dynamically fire on basis of field id. |
||
415 | * |
||
416 | * @since 1.8 |
||
417 | */ |
||
418 | do_action( 'give_settings_' . sanitize_title( $value['id'] ) . '_end' ); |
||
419 | } |
||
420 | |||
421 | if ( $value['table_html'] ) { |
||
422 | echo '</table>'; |
||
423 | } |
||
424 | |||
425 | View Code Duplication | if ( ! empty( $value['id'] ) ) { |
|
426 | |||
427 | /** |
||
428 | * Trigger Action. |
||
429 | * |
||
430 | * Note: action dynamically fire on basis of field id. |
||
431 | * |
||
432 | * @since 1.8 |
||
433 | */ |
||
434 | do_action( 'give_settings_' . sanitize_title( $value['id'] ) . '_after' ); |
||
435 | } |
||
436 | |||
437 | break; |
||
438 | |||
439 | // Standard text inputs and subtypes like 'number'. |
||
440 | case 'colorpicker': |
||
441 | case 'hidden' : |
||
442 | $value['wrapper_class'] = empty( $value['wrapper_class'] ) ? 'give-hidden' : trim( $value['wrapper_class'] ) . ' give-hidden'; |
||
443 | case 'text': |
||
444 | case 'email': |
||
445 | case 'number': |
||
446 | case 'password' : |
||
447 | $type = $value['type']; |
||
448 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
449 | |||
450 | // Set default value for repeater field if not any value set yet. |
||
451 | if ( $value['repeat'] && is_string( $option_value ) ) { |
||
452 | $option_value = array( $value['default'] ); |
||
453 | } |
||
454 | ?> |
||
455 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
456 | <th scope="row" class="titledesc"> |
||
457 | <label |
||
458 | for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
459 | </th> |
||
460 | <td class="give-forminp give-forminp-<?php echo sanitize_title( $value['type'] ) ?>"> |
||
461 | <?php if ( $value['repeat'] ) : ?> |
||
462 | <?php foreach ( $option_value as $index => $field_value ) : ?> |
||
463 | <p> |
||
464 | <input |
||
465 | name="<?php echo esc_attr( $value['id'] ); ?>[]" |
||
466 | type="<?php echo esc_attr( $type ); ?>" |
||
467 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
468 | value="<?php echo esc_attr( $field_value ); ?>" |
||
469 | class="give-input-field<?php echo( empty( $value['class'] ) ? '' : ' ' . esc_attr( $value['class'] ) ); ?> <?php echo esc_attr( $value['id'] ); ?>" |
||
470 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
471 | /> |
||
472 | <span class="give-remove-setting-field" |
||
473 | title="<?php esc_html_e( 'Remove setting field', 'give' ); ?>">-</span> |
||
474 | </p> |
||
475 | <?php endforeach; ?> |
||
476 | <a href="#" data-id="<?php echo $value['id']; ?>" |
||
477 | class="give-repeat-setting-field button-secondary"><?php echo $value['repeat_btn_title']; ?></a> |
||
478 | <?php else : ?> |
||
479 | <input |
||
480 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
481 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
482 | type="<?php echo esc_attr( $type ); ?>" |
||
483 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
484 | value="<?php echo esc_attr( $option_value ); ?>" |
||
485 | class="give-input-field<?php echo( empty( $value['class'] ) ? '' : ' ' . esc_attr( $value['class'] ) ); ?>" |
||
486 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
487 | /> |
||
488 | <?php endif; ?> |
||
489 | <?php echo $description; ?> |
||
490 | </td> |
||
491 | </tr><?php |
||
492 | break; |
||
493 | |||
494 | // Textarea. |
||
495 | case 'textarea': |
||
496 | |||
497 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
498 | $default_attributes = array( |
||
499 | 'rows' => 10, |
||
500 | 'cols' => 60 |
||
501 | ); |
||
502 | $textarea_attributes = isset( $value['attributes'] ) ? $value['attributes'] : array(); |
||
503 | ?> |
||
504 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
505 | <th scope="row" class="titledesc"> |
||
506 | <label |
||
507 | for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
508 | </th> |
||
509 | <td class="give-forminp give-forminp-<?php echo sanitize_title( $value['type'] ) ?>"> |
||
510 | <textarea |
||
511 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
512 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
513 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
514 | class="<?php echo esc_attr( $value['class'] ); ?>" |
||
515 | <?php echo give_get_attribute_str( $textarea_attributes, $default_attributes ); ?> |
||
516 | ><?php echo esc_textarea( $option_value ); ?></textarea> |
||
517 | <?php echo $description; ?> |
||
518 | </td> |
||
519 | </tr> |
||
520 | <?php |
||
521 | break; |
||
522 | |||
523 | // Select boxes. |
||
524 | case 'select' : |
||
525 | case 'multiselect' : |
||
526 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
527 | |||
528 | /** |
||
529 | * Insert page in option if missing. |
||
530 | * |
||
531 | * Check success_page setting in general settings. |
||
532 | */ |
||
533 | if ( |
||
534 | isset( $value['attributes'] ) && |
||
535 | false !== strpos( $value['class'], 'give-select-chosen' ) && |
||
536 | in_array( 'data-search-type', array_keys( $value['attributes' ] ) ) && |
||
537 | 'pages' === $value['attributes' ]['data-search-type'] && |
||
538 | ! in_array( $option_value, array_keys( $value['options'] ) ) |
||
539 | ) { |
||
540 | $value['options'][ $option_value ] = get_the_title( $option_value ); |
||
541 | } |
||
542 | ?> |
||
543 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
544 | <th scope="row" class="titledesc"> |
||
545 | <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
546 | </th> |
||
547 | <td class="give-forminp give-forminp-<?php echo sanitize_title( $value['type'] ) ?>"> |
||
548 | <select |
||
549 | name="<?php echo esc_attr( $value['id'] ); ?><?php if ( 'multiselect' === $value['type'] ) echo '[]'; ?>" |
||
550 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
551 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
552 | class="<?php echo esc_attr( $value['class'] ); ?>" |
||
553 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
554 | <?php echo ( 'multiselect' === $value['type'] ) ? 'multiple="multiple"' : ''; ?> |
||
555 | > |
||
556 | |||
557 | <?php |
||
558 | if ( ! empty( $value['options'] ) ) { |
||
559 | foreach ( $value['options'] as $key => $val ) { |
||
560 | ?> |
||
561 | <option value="<?php echo esc_attr( $key ); ?>" <?php |
||
562 | |||
563 | if ( is_array( $option_value ) ) { |
||
564 | selected( in_array( $key, $option_value ), true ); |
||
565 | } else { |
||
566 | selected( $option_value, $key ); |
||
567 | } |
||
568 | |||
569 | ?>><?php echo $val ?></option> |
||
570 | <?php |
||
571 | } |
||
572 | } |
||
573 | ?> |
||
574 | |||
575 | </select> <?php echo $description; ?> |
||
576 | </td> |
||
577 | </tr><?php |
||
578 | break; |
||
579 | |||
580 | // Radio inputs. |
||
581 | case 'radio_inline' : |
||
582 | $value['class'] = empty( $value['class'] ) ? 'give-radio-inline' : $value['class'] . ' give-radio-inline'; |
||
583 | case 'radio' : |
||
584 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
585 | ?> |
||
586 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
587 | <th scope="row" class="titledesc"> |
||
588 | <label |
||
589 | for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
590 | </th> |
||
591 | <td class="give-forminp give-forminp-<?php echo sanitize_title( $value['type'] ) ?> <?php echo( ! empty( $value['class'] ) ? $value['class'] : '' ); ?>"> |
||
592 | <fieldset> |
||
593 | <ul> |
||
594 | <?php |
||
595 | View Code Duplication | foreach ( $value['options'] as $key => $val ) { |
|
596 | ?> |
||
597 | <li> |
||
598 | <label><input |
||
599 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
600 | value="<?php echo $key; ?>" |
||
601 | type="radio" |
||
602 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
603 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
604 | <?php checked( $key, $option_value ); ?> |
||
605 | /> <?php echo $val ?></label> |
||
606 | </li> |
||
607 | <?php |
||
608 | } |
||
609 | ?> |
||
610 | <?php echo $description; ?> |
||
611 | </fieldset> |
||
612 | </td> |
||
613 | </tr><?php |
||
614 | break; |
||
615 | |||
616 | // Checkbox input. |
||
617 | case 'checkbox' : |
||
618 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
619 | ?> |
||
620 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
621 | <th scope="row" class="titledesc"> |
||
622 | <label |
||
623 | for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
624 | </th> |
||
625 | <td class="give-forminp"> |
||
626 | <input |
||
627 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
628 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
629 | type="checkbox" |
||
630 | class="<?php echo esc_attr( isset( $value['class'] ) ? $value['class'] : '' ); ?>" |
||
631 | value="1" |
||
632 | <?php checked( $option_value, 'on' ); ?> |
||
633 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
634 | /> |
||
635 | <?php echo $description; ?> |
||
636 | </td> |
||
637 | </tr> |
||
638 | <?php |
||
639 | break; |
||
640 | |||
641 | // Multi Checkbox input. |
||
642 | case 'multicheck' : |
||
643 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
644 | $option_value = is_array( $option_value ) ? $option_value : array(); |
||
645 | ?> |
||
646 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
647 | <th scope="row" class="titledesc"> |
||
648 | <label |
||
649 | for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
650 | </th> |
||
651 | <td class="give-forminp give-forminp-<?php echo sanitize_title( $value['type'] ) ?> <?php echo( ! empty( $value['class'] ) ? $value['class'] : '' ); ?>"> |
||
652 | <fieldset> |
||
653 | <ul> |
||
654 | <?php |
||
655 | View Code Duplication | foreach ( $value['options'] as $key => $val ) { |
|
656 | ?> |
||
657 | <li> |
||
658 | <label> |
||
659 | <input |
||
660 | name="<?php echo esc_attr( $value['id'] ); ?>[]" |
||
661 | value="<?php echo $key; ?>" |
||
662 | type="checkbox" |
||
663 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
664 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
665 | <?php if ( in_array( $key, $option_value ) ) { |
||
666 | echo 'checked="checked"'; |
||
667 | } ?> |
||
668 | /> <?php echo $val ?> |
||
669 | </label> |
||
670 | </li> |
||
671 | <?php |
||
672 | } |
||
673 | ?> |
||
674 | <?php echo $description; ?> |
||
675 | </fieldset> |
||
676 | </td> |
||
677 | </tr> |
||
678 | <?php |
||
679 | break; |
||
680 | |||
681 | // File input field. |
||
682 | case 'file' : |
||
683 | case 'media' : |
||
684 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
685 | $button_label = sprintf( __( 'Add or Upload %s', 'give' ), ( 'file' === $value['type'] ? __( 'File', 'give' ) : __( 'Image', 'give' ) ) ); |
||
686 | $fvalue = empty( $value['fvalue'] ) ? 'url' : $value['fvalue']; |
||
687 | |||
688 | $allow_media_preview_tags = array( 'jpg', 'jpeg', 'png', 'gif', 'ico' ); |
||
689 | $preview_image_src = $option_value ? ( 'id' === $fvalue ? wp_get_attachment_url( $option_value ) : $option_value ) : ''; |
||
690 | $preview_image_extension = $preview_image_src ? pathinfo( $preview_image_src, PATHINFO_EXTENSION ) : ''; |
||
691 | $is_show_preview = in_array( $preview_image_extension, $allow_media_preview_tags ); |
||
692 | ?> |
||
693 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
694 | <th scope="row" class="titledesc"> |
||
695 | <label |
||
696 | for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
697 | </th> |
||
698 | <td class="give-forminp"> |
||
699 | <div class="give-field-wrap"> |
||
700 | <label for="<?php echo $value['id'] ?>"> |
||
701 | <input |
||
702 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
703 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
704 | type="text" |
||
705 | class="give-input-field<?php echo esc_attr( isset( $value['class'] ) ? ' ' . $value['class'] : '' ); ?>" |
||
706 | value="<?php echo $option_value; ?>" |
||
707 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
708 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
709 | /> <input class="give-upload-button button" type="button" |
||
710 | data-fvalue="<?php echo $fvalue; ?>" |
||
711 | data-field-type="<?php echo $value['type']; ?>" |
||
712 | value="<?php echo $button_label; ?>"> |
||
713 | <?php echo $description ?> |
||
714 | <div |
||
715 | class="give-image-thumb<?php echo ! $option_value || ! $is_show_preview ? ' give-hidden' : ''; ?>"> |
||
716 | <span class="give-delete-image-thumb dashicons dashicons-no-alt"></span> |
||
717 | <img src="<?php echo $preview_image_src; ?>" alt=""> |
||
718 | </div> |
||
719 | </label> |
||
720 | </div> |
||
721 | </td> |
||
722 | </tr> |
||
723 | <?php |
||
724 | break; |
||
725 | |||
726 | // WordPress Editor. |
||
727 | case 'wysiwyg' : |
||
728 | // Get option value. |
||
729 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
730 | |||
731 | // Get editor settings. |
||
732 | $editor_settings = ! empty( $value['options'] ) ? $value['options'] : array(); |
||
733 | ?> |
||
734 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
735 | <th scope="row" class="titledesc"> |
||
736 | <label |
||
737 | for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
738 | </th> |
||
739 | <td class="give-forminp"> |
||
740 | <?php wp_editor( $option_value, $value['id'], $editor_settings ); ?> |
||
741 | <?php echo $description; ?> |
||
742 | </td> |
||
743 | </tr><?php |
||
744 | break; |
||
745 | |||
746 | // Custom: Email preview buttons field. |
||
747 | case 'email_preview_buttons' : |
||
748 | ?> |
||
749 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
750 | <th scope="row" class="titledesc"> |
||
751 | <label |
||
752 | for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
753 | </th> |
||
754 | <td class="give-forminp"> |
||
755 | <?php give_email_preview_buttons_callback( $value ); ?> |
||
756 | <?php echo $description; ?> |
||
757 | </td> |
||
758 | </tr><?php |
||
759 | break; |
||
760 | |||
761 | // Custom: API field. |
||
762 | case 'api' : |
||
763 | give_api_callback(); |
||
764 | echo $description; |
||
765 | break; |
||
766 | |||
767 | // Custom: Gateway API key. |
||
768 | case 'api_key' : |
||
769 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
770 | $type = ! empty( $option_value ) ? 'password' : 'text'; |
||
771 | ?> |
||
772 | <tr valign="top" <?php echo ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : '' ?>> |
||
773 | <th scope="row" class="titledesc"> |
||
774 | <label |
||
775 | for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo self::get_field_title( $value ); ?></label> |
||
776 | </th> |
||
777 | <td class="give-forminp give-forminp-<?php echo sanitize_title( $value['type'] ) ?>"> |
||
778 | <input |
||
779 | name="<?php echo esc_attr( $value['id'] ); ?>" |
||
780 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
781 | type="<?php echo esc_attr( $type ); ?>" |
||
782 | style="<?php echo esc_attr( $value['css'] ); ?>" |
||
783 | value="<?php echo esc_attr( trim( $option_value ) ); ?>" |
||
784 | class="give-input-field<?php echo( empty( $value['class'] ) ? '' : ' ' . esc_attr( $value['class'] ) ); ?>" |
||
785 | <?php echo implode( ' ', $custom_attributes ); ?> |
||
786 | /> <?php echo $description; ?> |
||
787 | </td> |
||
788 | </tr><?php |
||
789 | break; |
||
790 | |||
791 | // Note: only for internal use. |
||
792 | case 'chosen' : |
||
793 | |||
794 | // Get option value. |
||
795 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
796 | $option_value = is_array( $option_value ) ? array_fill_keys( $option_value, 'selected' ) : $option_value; |
||
797 | $wrapper_class = ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : ''; |
||
798 | $type = ''; |
||
799 | $allow_new_values = ''; |
||
800 | $name = give_get_field_name( $value ); |
||
801 | |||
802 | // Set attributes based on multiselect datatype. |
||
803 | if ( 'multiselect' === $value['data_type'] ) { |
||
804 | $type = 'multiple'; |
||
805 | $allow_new_values = 'data-allows-new-values="true"'; |
||
806 | $name = $name . '[]'; |
||
807 | $option_value = empty( $option_value ) ? array() : $option_value; |
||
808 | } |
||
809 | |||
810 | $title_prefixes_value = ( is_array( $option_value ) && count( $option_value ) > 0 ) ? |
||
811 | array_merge( $value['options'], $option_value ) : |
||
812 | $value['options']; |
||
813 | |||
814 | ?> |
||
815 | <tr valign="top" <?php echo $wrapper_class; ?>> |
||
816 | <th scope="row" class="titledesc"> |
||
817 | <label for="<?php echo esc_attr( $value['id'] ); ?>"><?php echo esc_attr( self::get_field_title( $value ) ); ?></label> |
||
818 | </th> |
||
819 | <td class="give-forminp give-forminp-<?php echo esc_attr( $value['type'] ); ?>"> |
||
820 | <select |
||
821 | class="give-select-chosen give-chosen-settings" |
||
822 | style="<?php echo esc_attr( $value['style'] ); ?>" |
||
823 | name="<?php echo esc_attr( $name ); ?>" |
||
824 | id="<?php echo esc_attr( $value['id'] ); ?>" |
||
825 | <?php |
||
826 | echo "{$type} {$allow_new_values}"; |
||
827 | echo implode( ' ', $custom_attributes ); |
||
828 | ?> |
||
829 | > |
||
830 | <?php |
||
831 | View Code Duplication | if ( is_array( $title_prefixes_value ) && count( $title_prefixes_value ) > 0 ) { |
|
832 | foreach ( $title_prefixes_value as $key => $item_value ) { |
||
833 | echo sprintf( |
||
834 | '<option %1$s value="%2$s">%2$s</option>', |
||
835 | ( 'selected' === $item_value ) ? 'selected="selected"' : '', |
||
836 | esc_attr( $key ) |
||
837 | ); |
||
838 | } |
||
839 | } |
||
840 | ?> |
||
841 | </select> |
||
842 | <?php echo wp_kses_post( $description ); ?> |
||
843 | </td> |
||
844 | </tr> |
||
845 | <?php |
||
846 | break; |
||
847 | |||
848 | // Custom: Log field. |
||
849 | case 'logs' : |
||
850 | |||
851 | // Get current section. |
||
852 | $current_section = $_GET['section'] = give_get_current_setting_section(); |
||
853 | |||
854 | /** |
||
855 | * Fires for each tab of logs view. |
||
856 | * |
||
857 | * @since 1.0 |
||
858 | */ |
||
859 | do_action( "give_logs_view_{$current_section}" ); |
||
860 | |||
861 | echo $description; |
||
862 | break; |
||
863 | |||
864 | // Custom: Data field. |
||
865 | case 'data' : |
||
866 | |||
867 | include GIVE_PLUGIN_DIR . 'includes/admin/tools/views/html-admin-page-data.php'; |
||
868 | |||
869 | echo $description; |
||
870 | break; |
||
871 | |||
872 | // Custom: Give Docs Link field type. |
||
873 | case 'give_docs_link' : |
||
874 | $wrapper_class = ! empty( $value['wrapper_class'] ) ? 'class="' . $value['wrapper_class'] . '"' : ''; |
||
875 | ?> |
||
876 | <tr valign="top" <?php echo esc_html( $wrapper_class ); ?>> |
||
877 | <td class="give-docs-link" colspan="2"> |
||
878 | <p class="give-docs-link"> |
||
879 | <a href="<?php echo esc_url( $value['url'] ); ?>" target="_blank"> |
||
880 | <?php |
||
881 | echo sprintf( |
||
882 | /* translators: %s Title */ |
||
883 | esc_html__( 'Need Help? See docs on "%s"', 'give' ), |
||
884 | esc_html( $value['title'] ) |
||
885 | ); |
||
886 | ?> |
||
887 | <span class="dashicons dashicons-editor-help"></span> |
||
888 | </a> |
||
889 | </p> |
||
890 | </td> |
||
891 | </tr><?php |
||
892 | break; |
||
893 | |||
894 | // Default: run an action |
||
895 | // You can add or handle your custom field action. |
||
896 | default: |
||
897 | // Get option value. |
||
898 | $option_value = self::get_option( $option_name, $value['id'], $value['default'] ); |
||
899 | do_action( 'give_admin_field_' . $value['type'], $value, $option_value ); |
||
900 | break; |
||
901 | } |
||
902 | } |
||
903 | } |
||
904 | |||
1126 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.