| Conditions | 40 |
| Paths | > 20000 |
| Total Lines | 294 |
| Lines | 15 |
| Ratio | 5.1 % |
| 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 |
||
| 370 | function render_field( $field ) { |
||
| 371 | |||
| 372 | // vars |
||
| 373 | $values = array(); |
||
| 374 | $atts = array( |
||
| 375 | 'id' => $field['id'], |
||
| 376 | 'class' => "acf-relationship {$field['class']}", |
||
| 377 | 'data-min' => $field['min'], |
||
| 378 | 'data-max' => $field['max'], |
||
| 379 | 'data-s' => '', |
||
| 380 | 'data-post_type' => '', |
||
| 381 | 'data-taxonomy' => '', |
||
| 382 | 'data-paged' => 1, |
||
| 383 | ); |
||
| 384 | |||
| 385 | |||
| 386 | // Lang |
||
| 387 | if( defined('ICL_LANGUAGE_CODE') ) { |
||
| 388 | |||
| 389 | $atts['data-lang'] = ICL_LANGUAGE_CODE; |
||
| 390 | |||
| 391 | } |
||
| 392 | |||
| 393 | |||
| 394 | // data types |
||
| 395 | $field['post_type'] = acf_get_array( $field['post_type'] ); |
||
| 396 | $field['taxonomy'] = acf_get_array( $field['taxonomy'] ); |
||
| 397 | |||
| 398 | |||
| 399 | // width for select filters |
||
| 400 | $width = array( |
||
| 401 | 'search' => 0, |
||
| 402 | 'post_type' => 0, |
||
| 403 | 'taxonomy' => 0 |
||
| 404 | ); |
||
| 405 | |||
| 406 | if( !empty($field['filters']) ) { |
||
| 407 | |||
| 408 | $width = array( |
||
| 409 | 'search' => 50, |
||
| 410 | 'post_type' => 25, |
||
| 411 | 'taxonomy' => 25 |
||
| 412 | ); |
||
| 413 | |||
| 414 | foreach( array_keys($width) as $k ) { |
||
| 415 | |||
| 416 | if( ! in_array($k, $field['filters']) ) { |
||
| 417 | |||
| 418 | $width[ $k ] = 0; |
||
| 419 | |||
| 420 | } |
||
| 421 | |||
| 422 | } |
||
| 423 | |||
| 424 | |||
| 425 | // search |
||
| 426 | if( $width['search'] == 0 ) { |
||
| 427 | |||
| 428 | $width['post_type'] = ( $width['post_type'] == 0 ) ? 0 : 50; |
||
| 429 | $width['taxonomy'] = ( $width['taxonomy'] == 0 ) ? 0 : 50; |
||
| 430 | |||
| 431 | } |
||
| 432 | |||
| 433 | // post_type |
||
| 434 | View Code Duplication | if( $width['post_type'] == 0 ) { |
|
| 435 | |||
| 436 | $width['taxonomy'] = ( $width['taxonomy'] == 0 ) ? 0 : 50; |
||
| 437 | |||
| 438 | } |
||
| 439 | |||
| 440 | |||
| 441 | // taxonomy |
||
| 442 | View Code Duplication | if( $width['taxonomy'] == 0 ) { |
|
| 443 | |||
| 444 | $width['post_type'] = ( $width['post_type'] == 0 ) ? 0 : 50; |
||
| 445 | |||
| 446 | } |
||
| 447 | |||
| 448 | |||
| 449 | // search |
||
| 450 | View Code Duplication | if( $width['post_type'] == 0 && $width['taxonomy'] == 0 ) { |
|
| 451 | |||
| 452 | $width['search'] = ( $width['search'] == 0 ) ? 0 : 100; |
||
| 453 | |||
| 454 | } |
||
| 455 | } |
||
| 456 | |||
| 457 | |||
| 458 | // post type filter |
||
| 459 | $post_types = array(); |
||
| 460 | |||
| 461 | if( $width['post_type'] ) { |
||
| 462 | |||
| 463 | if( !empty($field['post_type']) ) { |
||
| 464 | |||
| 465 | $post_types = $field['post_type']; |
||
| 466 | |||
| 467 | |||
| 468 | } else { |
||
| 469 | |||
| 470 | $post_types = acf_get_post_types(); |
||
| 471 | |||
| 472 | } |
||
| 473 | |||
| 474 | $post_types = acf_get_pretty_post_types($post_types); |
||
| 475 | |||
| 476 | } |
||
| 477 | |||
| 478 | |||
| 479 | // taxonomy filter |
||
| 480 | $taxonomies = array(); |
||
| 481 | $term_groups = array(); |
||
| 482 | |||
| 483 | if( $width['taxonomy'] ) { |
||
| 484 | |||
| 485 | // taxonomies |
||
| 486 | if( !empty($field['taxonomy']) ) { |
||
| 487 | |||
| 488 | // get the field's terms |
||
| 489 | $term_groups = acf_get_array( $field['taxonomy'] ); |
||
| 490 | $term_groups = acf_decode_taxonomy_terms( $term_groups ); |
||
| 491 | |||
| 492 | |||
| 493 | // update taxonomies |
||
| 494 | $taxonomies = array_keys($term_groups); |
||
| 495 | |||
| 496 | } elseif( !empty($field['post_type']) ) { |
||
| 497 | |||
| 498 | // loop over post types and find connected taxonomies |
||
| 499 | foreach( $field['post_type'] as $post_type ) { |
||
| 500 | |||
| 501 | $post_taxonomies = get_object_taxonomies( $post_type ); |
||
| 502 | |||
| 503 | // bail early if no taxonomies |
||
| 504 | if( empty($post_taxonomies) ) { |
||
| 505 | |||
| 506 | continue; |
||
| 507 | |||
| 508 | } |
||
| 509 | |||
| 510 | foreach( $post_taxonomies as $post_taxonomy ) { |
||
| 511 | |||
| 512 | if( !in_array($post_taxonomy, $taxonomies) ) { |
||
| 513 | |||
| 514 | $taxonomies[] = $post_taxonomy; |
||
| 515 | |||
| 516 | } |
||
| 517 | |||
| 518 | } |
||
| 519 | |||
| 520 | } |
||
| 521 | |||
| 522 | } else { |
||
| 523 | |||
| 524 | $taxonomies = acf_get_taxonomies(); |
||
| 525 | |||
| 526 | } |
||
| 527 | |||
| 528 | |||
| 529 | // terms |
||
| 530 | $term_groups = acf_get_taxonomy_terms( $taxonomies ); |
||
| 531 | |||
| 532 | |||
| 533 | // update $term_groups with specific terms |
||
| 534 | if( !empty($field['taxonomy']) ) { |
||
| 535 | |||
| 536 | foreach( array_keys($term_groups) as $taxonomy ) { |
||
| 537 | |||
| 538 | foreach( array_keys($term_groups[ $taxonomy ]) as $term ) { |
||
| 539 | |||
| 540 | if( ! in_array($term, $field['taxonomy']) ) { |
||
| 541 | |||
| 542 | unset($term_groups[ $taxonomy ][ $term ]); |
||
| 543 | |||
| 544 | } |
||
| 545 | |||
| 546 | } |
||
| 547 | |||
| 548 | } |
||
| 549 | |||
| 550 | } |
||
| 551 | |||
| 552 | } |
||
| 553 | // end taxonomy filter |
||
| 554 | |||
| 555 | ?> |
||
| 556 | <div <?php acf_esc_attr_e($atts); ?>> |
||
| 557 | |||
| 558 | <div class="acf-hidden"> |
||
| 559 | <input type="hidden" name="<?php echo $field['name']; ?>" value="" /> |
||
| 560 | </div> |
||
| 561 | |||
| 562 | <?php if( $width['search'] || $width['post_type'] || $width['taxonomy'] ): ?> |
||
| 563 | <div class="filters"> |
||
| 564 | |||
| 565 | <ul class="acf-hl"> |
||
| 566 | |||
| 567 | <?php if( $width['search'] ): ?> |
||
| 568 | <li style="width:<?php echo $width['search']; ?>%;"> |
||
| 569 | <div class="inner"> |
||
| 570 | <input class="filter" data-filter="s" placeholder="<?php _e("Search...",'acf'); ?>" type="text" /> |
||
| 571 | </div> |
||
| 572 | </li> |
||
| 573 | <?php endif; ?> |
||
| 574 | |||
| 575 | <?php if( $width['post_type'] ): ?> |
||
| 576 | <li style="width:<?php echo $width['post_type']; ?>%;"> |
||
| 577 | <div class="inner"> |
||
| 578 | <select class="filter" data-filter="post_type"> |
||
| 579 | <option value=""><?php _e('Select post type','acf'); ?></option> |
||
| 580 | <?php foreach( $post_types as $k => $v ): ?> |
||
| 581 | <option value="<?php echo $k; ?>"><?php echo $v; ?></option> |
||
| 582 | <?php endforeach; ?> |
||
| 583 | </select> |
||
| 584 | </div> |
||
| 585 | </li> |
||
| 586 | <?php endif; ?> |
||
| 587 | |||
| 588 | <?php if( $width['taxonomy'] ): ?> |
||
| 589 | <li style="width:<?php echo $width['taxonomy']; ?>%;"> |
||
| 590 | <div class="inner"> |
||
| 591 | <select class="filter" data-filter="taxonomy"> |
||
| 592 | <option value=""><?php _e('Select taxonomy','acf'); ?></option> |
||
| 593 | <?php foreach( $term_groups as $k_opt => $v_opt ): ?> |
||
| 594 | <optgroup label="<?php echo $k_opt; ?>"> |
||
| 595 | <?php foreach( $v_opt as $k => $v ): ?> |
||
| 596 | <option value="<?php echo $k; ?>"><?php echo $v; ?></option> |
||
| 597 | <?php endforeach; ?> |
||
| 598 | </optgroup> |
||
| 599 | <?php endforeach; ?> |
||
| 600 | </select> |
||
| 601 | </div> |
||
| 602 | </li> |
||
| 603 | <?php endif; ?> |
||
| 604 | </ul> |
||
| 605 | |||
| 606 | </div> |
||
| 607 | <?php endif; ?> |
||
| 608 | |||
| 609 | <div class="selection acf-cf"> |
||
| 610 | |||
| 611 | <div class="choices"> |
||
| 612 | |||
| 613 | <ul class="acf-bl list"></ul> |
||
| 614 | |||
| 615 | </div> |
||
| 616 | |||
| 617 | <div class="values"> |
||
| 618 | |||
| 619 | <ul class="acf-bl list"> |
||
| 620 | |||
| 621 | <?php if( !empty($field['value']) ): |
||
| 622 | |||
| 623 | // get posts |
||
| 624 | $posts = acf_get_posts(array( |
||
| 625 | 'post__in' => $field['value'], |
||
| 626 | 'post_type' => $field['post_type'] |
||
| 627 | )); |
||
| 628 | |||
| 629 | |||
| 630 | // set choices |
||
| 631 | if( !empty($posts) ): |
||
| 632 | |||
| 633 | foreach( array_keys($posts) as $i ): |
||
| 634 | |||
| 635 | // vars |
||
| 636 | $post = acf_extract_var( $posts, $i ); |
||
| 637 | |||
| 638 | |||
| 639 | ?><li> |
||
| 640 | <input type="hidden" name="<?php echo $field['name']; ?>[]" value="<?php echo $post->ID; ?>" /> |
||
| 641 | <span data-id="<?php echo $post->ID; ?>" class="acf-rel-item"> |
||
| 642 | <?php echo $this->get_post_title( $post, $field ); ?> |
||
| 643 | <a href="#" class="acf-icon -minus small dark" data-name="remove_item"></a> |
||
| 644 | </span> |
||
| 645 | </li><?php |
||
| 646 | |||
| 647 | endforeach; |
||
| 648 | |||
| 649 | endif; |
||
| 650 | |||
| 651 | endif; ?> |
||
| 652 | |||
| 653 | </ul> |
||
| 654 | |||
| 655 | |||
| 656 | |||
| 657 | </div> |
||
| 658 | |||
| 659 | </div> |
||
| 660 | |||
| 661 | </div> |
||
| 662 | <?php |
||
| 663 | } |
||
| 664 | |||
| 927 |
This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types.