woocommerce/woocommerce

View on GitHub
includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php

Summary

Maintainability
F
1 mo
Test Coverage

File class-wc-rest-products-v2-controller.php has 1797 lines of code (exceeds 250 allowed). Consider refactoring.
Open

<?php
/**
 * REST API Products controller
 *
 * Handles requests to the /products endpoint.

    Method get_item_schema has 608 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        public function get_item_schema() {
            $weight_unit    = get_option( 'woocommerce_weight_unit' );
            $dimension_unit = get_option( 'woocommerce_dimension_unit' );
            $schema         = array(
                '$schema'    => 'http://json-schema.org/draft-04/schema#',

      Function prepare_object_for_database has a Cognitive Complexity of 132 (exceeds 5 allowed). Consider refactoring.
      Open

          protected function prepare_object_for_database( $request, $creating = false ) {
              $id = isset( $request['id'] ) ? absint( $request['id'] ) : 0;
      
              // Type is the most important part here because we need to be using the correct class and methods.
              if ( isset( $request['type'] ) ) {

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Method prepare_object_for_database has 256 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          protected function prepare_object_for_database( $request, $creating = false ) {
              $id = isset( $request['id'] ) ? absint( $request['id'] ) : 0;
      
              // Type is the most important part here because we need to be using the correct class and methods.
              if ( isset( $request['type'] ) ) {

        Function get_product_data has a Cognitive Complexity of 64 (exceeds 5 allowed). Consider refactoring.
        Open

            protected function get_product_data( $product, $context = 'view' ) {
                /*
                 * @param WP_REST_Request $request Current request object. For backward compatibility, we pass this argument silently.
                 *
                 *  TODO: Refactor to fix this behavior when DI gets included to make it obvious and clean.

        Cognitive Complexity

        Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

        A method's cognitive complexity is based on a few simple rules:

        • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
        • Code is considered more complex for each "break in the linear flow of the code"
        • Code is considered more complex when "flow breaking structures are nested"

        Further reading

        Method get_product_data has 202 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            protected function get_product_data( $product, $context = 'view' ) {
                /*
                 * @param WP_REST_Request $request Current request object. For backward compatibility, we pass this argument silently.
                 *
                 *  TODO: Refactor to fix this behavior when DI gets included to make it obvious and clean.

          Function save_default_attributes has a Cognitive Complexity of 36 (exceeds 5 allowed). Consider refactoring.
          Open

              protected function save_default_attributes( $product, $request ) {
                  if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) {
          
                      $attributes         = $product->get_attributes();
                      $default_attributes = array();

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          Function delete_item has a Cognitive Complexity of 33 (exceeds 5 allowed). Consider refactoring.
          Open

              public function delete_item( $request ) {
                  $id     = (int) $request['id'];
                  $force  = (bool) $request['force'];
                  $object = $this->get_object( (int) $request['id'] );
                  $result = false;

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          Function set_product_images has a Cognitive Complexity of 31 (exceeds 5 allowed). Consider refactoring.
          Open

              protected function set_product_images( $product, $images ) {
                  $images = is_array( $images ) ? array_filter( $images ) : array();
          
                  if ( ! empty( $images ) ) {
                      $gallery_positions = array();

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

          Method get_collection_params has 98 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              public function get_collection_params() {
                  $params = parent::get_collection_params();
          
                  $params['orderby']['enum'] = array_merge( $params['orderby']['enum'], array( 'menu_order' ) );
          
          

            Method delete_item has 92 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                public function delete_item( $request ) {
                    $id     = (int) $request['id'];
                    $force  = (bool) $request['force'];
                    $object = $this->get_object( (int) $request['id'] );
                    $result = false;

              Method prepare_objects_query has 91 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  protected function prepare_objects_query( $request ) {
                      $args = parent::prepare_objects_query( $request );
              
                      // Set post_status.
                      $args['post_status'] = $request['status'];

                WC_REST_Products_V2_Controller has 28 functions (exceeds 20 allowed). Consider refactoring.
                Open

                class WC_REST_Products_V2_Controller extends WC_REST_CRUD_Controller {
                
                    /**
                     * Endpoint namespace.
                     *

                  Method register_routes has 75 lines of code (exceeds 25 allowed). Consider refactoring.
                  Open

                      public function register_routes() {
                          register_rest_route(
                              $this->namespace,
                              '/' . $this->rest_base,
                              array(

                    Function prepare_objects_query has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
                    Open

                        protected function prepare_objects_query( $request ) {
                            $args = parent::prepare_objects_query( $request );
                    
                            // Set post_status.
                            $args['post_status'] = $request['status'];

                    Cognitive Complexity

                    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                    A method's cognitive complexity is based on a few simple rules:

                    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                    • Code is considered more complex for each "break in the linear flow of the code"
                    • Code is considered more complex when "flow breaking structures are nested"

                    Further reading

                    Function get_attributes has a Cognitive Complexity of 15 (exceeds 5 allowed). Consider refactoring.
                    Open

                        protected function get_attributes( $product ) {
                            $attributes = array();
                    
                            if ( $product->is_type( 'variation' ) ) {
                                $_product = wc_get_product( $product->get_parent_id() );

                    Cognitive Complexity

                    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                    A method's cognitive complexity is based on a few simple rules:

                    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                    • Code is considered more complex for each "break in the linear flow of the code"
                    • Code is considered more complex when "flow breaking structures are nested"

                    Further reading

                    Method set_product_images has 45 lines of code (exceeds 25 allowed). Consider refactoring.
                    Open

                        protected function set_product_images( $product, $images ) {
                            $images = is_array( $images ) ? array_filter( $images ) : array();
                    
                            if ( ! empty( $images ) ) {
                                $gallery_positions = array();

                      Method get_images has 41 lines of code (exceeds 25 allowed). Consider refactoring.
                      Open

                          protected function get_images( $product ) {
                              $images         = array();
                              $attachment_ids = array();
                      
                              // Add featured image.

                        Method get_attributes has 36 lines of code (exceeds 25 allowed). Consider refactoring.
                        Open

                            protected function get_attributes( $product ) {
                                $attributes = array();
                        
                                if ( $product->is_type( 'variation' ) ) {
                                    $_product = wc_get_product( $product->get_parent_id() );

                          Method save_default_attributes has 36 lines of code (exceeds 25 allowed). Consider refactoring.
                          Open

                              protected function save_default_attributes( $product, $request ) {
                                  if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) {
                          
                                      $attributes         = $product->get_attributes();
                                      $default_attributes = array();

                            Function save_product_shipping_data has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
                            Open

                                protected function save_product_shipping_data( $product, $data ) {
                                    // Virtual.
                                    if ( isset( $data['virtual'] ) && true === $data['virtual'] ) {
                                        $product->set_weight( '' );
                                        $product->set_height( '' );

                            Cognitive Complexity

                            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                            A method's cognitive complexity is based on a few simple rules:

                            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                            • Code is considered more complex for each "break in the linear flow of the code"
                            • Code is considered more complex when "flow breaking structures are nested"

                            Further reading

                            Function get_images has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                            Open

                                protected function get_images( $product ) {
                                    $images         = array();
                                    $attachment_ids = array();
                            
                                    // Add featured image.

                            Cognitive Complexity

                            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                            A method's cognitive complexity is based on a few simple rules:

                            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                            • Code is considered more complex for each "break in the linear flow of the code"
                            • Code is considered more complex when "flow breaking structures are nested"

                            Further reading

                            Function get_default_attributes has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                            Open

                                protected function get_default_attributes( $product ) {
                                    $default = array();
                            
                                    if ( $product->is_type( 'variable' ) ) {
                                        foreach ( array_filter( (array) $product->get_default_attributes(), 'strlen' ) as $key => $value ) {

                            Cognitive Complexity

                            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                            A method's cognitive complexity is based on a few simple rules:

                            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                            • Code is considered more complex for each "break in the linear flow of the code"
                            • Code is considered more complex when "flow breaking structures are nested"

                            Further reading

                            Avoid too many return statements within this method.
                            Open

                                    return $response;

                              Avoid too many return statements within this method.
                              Open

                                          return new WP_Error(
                                              'woocommerce_rest_cannot_delete',
                                              /* translators: %s: post type */
                                              sprintf( __( 'The %s cannot be deleted.', 'woocommerce' ), $this->post_type ),
                                              array(

                                Avoid too many return statements within this method.
                                Open

                                                    return new WP_Error(
                                                        'woocommerce_rest_already_trashed',
                                                        /* translators: %s: post type */
                                                        sprintf( __( 'The %s has already been deleted.', 'woocommerce' ), $this->post_type ),
                                                        array(

                                  Identical blocks of code found in 4 locations. Consider refactoring.
                                  Open

                                          if ( isset( $request['attributes'] ) ) {
                                              $attributes = array();
                                  
                                              foreach ( $request['attributes'] as $attribute ) {
                                                  $attribute_id   = 0;
                                  includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 275..338
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1117..1180
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 401..464

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 593.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 2 locations. Consider refactoring.
                                  Open

                                      public function register_routes() {
                                          register_rest_route(
                                              $this->namespace,
                                              '/' . $this->rest_base,
                                              array(
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 57..119

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 484.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 2 locations. Consider refactoring.
                                  Open

                                                          'properties' => array(
                                                              'id'                => array(
                                                                  'description' => __( 'Image ID.', 'woocommerce' ),
                                                                  'type'        => 'integer',
                                                                  'context'     => array( 'view', 'edit' ),
                                  includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 882..933

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 385.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 2 locations. Consider refactoring.
                                  Open

                                      protected function save_default_attributes( $product, $request ) {
                                          if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) {
                                  
                                              $attributes         = $product->get_attributes();
                                              $default_attributes = array();
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1002..1051

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 342.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 4 locations. Consider refactoring.
                                  Open

                                          if ( 'yes' === get_option( 'woocommerce_manage_stock' ) ) {
                                              // Manage stock.
                                              if ( isset( $request['manage_stock'] ) ) {
                                                  $product->set_manage_stock( $request['manage_stock'] );
                                              }
                                  includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 385..428
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1227..1270
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 519..562

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 329.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 2 locations. Consider refactoring.
                                  Open

                                          if ( in_array( $product->get_type(), array( 'variable', 'grouped' ), true ) ) {
                                              $product->set_regular_price( '' );
                                              $product->set_sale_price( '' );
                                              $product->set_date_on_sale_to( '' );
                                              $product->set_date_on_sale_from( '' );
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 467..499

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 263.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 2 locations. Consider refactoring.
                                  Open

                                      protected function save_product_shipping_data( $product, $data ) {
                                          // Virtual.
                                          if ( isset( $data['virtual'] ) && true === $data['virtual'] ) {
                                              $product->set_weight( '' );
                                              $product->set_height( '' );
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 905..941

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 254.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 2 locations. Consider refactoring.
                                  Open

                                      protected function save_downloadable_files( $product, $downloads, $deprecated = 0 ) {
                                          if ( $deprecated ) {
                                              wc_deprecated_argument( 'variation_id', '3.0', 'save_downloadable_files() not requires a variation_id anymore.' );
                                          }
                                  
                                  
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 951..971

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 193.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Similar blocks of code found in 6 locations. Consider refactoring.
                                  Open

                                                  'dimensions'            => array(
                                                      'description' => __( 'Product dimensions.', 'woocommerce' ),
                                                      'type'        => 'object',
                                                      'context'     => array( 'view', 'edit' ),
                                                      'properties'  => array(
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1992..2016
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2445..2469
                                  includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 842..866
                                  includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 606..630
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1000..1024

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 188.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Similar blocks of code found in 6 locations. Consider refactoring.
                                  Open

                                                  'tags'                  => array(
                                                      'description' => __( 'List of tags.', 'woocommerce' ),
                                                      'type'        => 'array',
                                                      'context'     => array( 'view', 'edit' ),
                                                      'items'       => array(
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2093..2119
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2120..2146
                                  includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2034..2060
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1101..1127
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1128..1154

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 185.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Similar blocks of code found in 6 locations. Consider refactoring.
                                  Open

                                                  'categories'            => array(
                                                      'description' => __( 'List of categories.', 'woocommerce' ),
                                                      'type'        => 'array',
                                                      'context'     => array( 'view', 'edit' ),
                                                      'items'       => array(
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2093..2119
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2120..2146
                                  includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2061..2087
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1101..1127
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1128..1154

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 185.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 13 locations. Consider refactoring.
                                  Open

                                                  'meta_data'             => array(
                                                      'description' => __( 'Meta data.', 'woocommerce' ),
                                                      'type'        => 'array',
                                                      'context'     => array( 'view', 'edit' ),
                                                      'items'       => array(
                                  includes/rest-api/Controllers/Version2/class-wc-rest-coupons-v2-controller.php on lines 494..519
                                  includes/rest-api/Controllers/Version2/class-wc-rest-customers-v2-controller.php on lines 333..358
                                  includes/rest-api/Controllers/Version2/class-wc-rest-order-refunds-v2-controller.php on lines 400..425
                                  includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php on lines 1254..1279
                                  includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php on lines 1472..1497
                                  includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php on lines 1563..1588
                                  includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php on lines 1661..1686
                                  includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php on lines 1719..1744
                                  includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 965..990
                                  includes/rest-api/Controllers/Version3/class-wc-rest-customers-controller.php on lines 276..301
                                  includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 724..749
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1303..1328

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 177.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Similar blocks of code found in 12 locations. Consider refactoring.
                                  Open

                                                  'default_attributes'    => array(
                                                      'description' => __( 'Defaults variation attributes.', 'woocommerce' ),
                                                      'type'        => 'array',
                                                      'context'     => array( 'view', 'edit' ),
                                                      'items'       => array(
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1877..1901
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2237..2261
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2354..2378
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2526..2550
                                  includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 751..775
                                  includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 935..959
                                  includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1825..1849
                                  includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 514..538
                                  includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 694..718
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 891..915
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1255..1279

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 169.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Similar blocks of code found in 12 locations. Consider refactoring.
                                  Open

                                                  'downloads'             => array(
                                                      'description' => __( 'List of downloadable files.', 'woocommerce' ),
                                                      'type'        => 'array',
                                                      'context'     => array( 'view', 'edit' ),
                                                      'items'       => array(
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1877..1901
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2237..2261
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2354..2378
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2526..2550
                                  includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 751..775
                                  includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 935..959
                                  includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2193..2217
                                  includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 514..538
                                  includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 694..718
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 891..915
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1255..1279

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 169.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Similar blocks of code found in 2 locations. Consider refactoring.
                                  Open

                                      protected function prepare_links( $object, $request ) {
                                          $links = array(
                                              'self'       => array(
                                                  'href' => rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $object->get_id() ) ),  // @codingStandardsIgnoreLine.
                                              ),
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 640..657

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 149.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 3 locations. Consider refactoring.
                                  Open

                                                  if ( 0 === $attachment_id && isset( $image['src'] ) ) {
                                                      $upload = wc_rest_upload_image_from_url( esc_url_raw( $image['src'] ) );
                                  
                                                      if ( is_wp_error( $upload ) ) {
                                                          if ( ! apply_filters( 'woocommerce_rest_suppress_image_upload_error', false, $upload, $product->get_id(), $images ) ) {
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 852..864
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 240..252

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 131.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 3 locations. Consider refactoring.
                                  Open

                                          if ( isset( $request['type'] ) ) {
                                              $classname = WC_Product_Factory::get_classname_from_product_type( $request['type'] );
                                  
                                              if ( ! class_exists( $classname ) ) {
                                                  $classname = 'WC_Product_Simple';
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 669..681
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 303..315

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 101.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 5 locations. Consider refactoring.
                                  Open

                                          if ( ! empty( $request['sku'] ) ) {
                                              $skus = explode( ',', $request['sku'] );
                                              // Include the current string as a SKU too.
                                              if ( 1 < count( $skus ) ) {
                                                  $skus[] = $request['sku'];
                                  includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 102..114
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 192..204
                                  includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 769..784
                                  includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 148..163

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 99.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  Identical blocks of code found in 5 locations. Consider refactoring.
                                  Open

                                      protected function get_attribute_options( $product_id, $attribute ) {
                                          if ( isset( $attribute['is_taxonomy'] ) && $attribute['is_taxonomy'] ) {
                                              return wc_get_product_terms(
                                                  $product_id,
                                                  $attribute['name'],
                                  includes/legacy/api/v1/class-wc-api-products.php on lines 475..483
                                  includes/legacy/api/v2/class-wc-api-products.php on lines 1752..1760
                                  includes/legacy/api/v3/class-wc-api-products.php on lines 2305..2313
                                  includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 372..380

                                  Duplicated Code

                                  Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                  Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                  When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                  Tuning

                                  This issue has a mass of 98.

                                  We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                  The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                  If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                  See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                  Refactorings

                                  Further Reading

                                  There are no issues that match your filters.

                                  Category
                                  Status