57% dc-woocommerce-multi-vendor

Code Review | MultiVendorX - MultiVendor Marketplace Solution For WooCommerce

WordPress plugin MultiVendorX - MultiVendor Marketplace Solution For WooCommerce scored57%from 54 tests.

About plugin

  • Plugin page: dc-woocommerce-mu...
  • Plugin version: 4.0.31
  • PHP compatiblity: 7.2+
  • PHP version: 7.4.16
  • WordPress compatibility: 4.4-6.4.1
  • WordPress version: 6.3.1
  • First release: Jul 24, 2015
  • Latest release: Nov 28, 2023
  • Number of updates: 296
  • Update frequency: every 10.3 days
  • Top authors: Dualcube (62.16%)wcmp (28.04%)purnendu (4.73%)abhirup23 (3.72%)greyparrots (1.69%)

Code review

54 tests

User reviews

387 reviews

Install metrics

7,000+ active /769,276 total downloads

Benchmarks

Plugin footprint 65% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Checking the installer triggered no errors
Installer ran successfully

Server metrics [RAM: ▲1.45MB] [CPU: ▼1.19ms] Passed 4 tests

This is a short check of server-side resources used by MultiVendorX - MultiVendor Marketplace Solution For WooCommerce
Server-side resource usage in normal parameters
PageMemory (MB)CPU Time (ms)
Home /4.92 ▲1.4543.25 ▲1.10
Dashboard /wp-admin4.94 ▲1.5956.23 ▼1.74
Posts /wp-admin/edit.php4.94 ▲1.5856.55 ▲7.36
Add New Post /wp-admin/post-new.php7.05 ▲1.1688.44 ▼9.65
Media Library /wp-admin/upload.php4.94 ▲1.7144.01 ▲5.53

Server storage [IO: ▲21.53MB] [DB: ▲0.01MB] Passed 3 tests

How much does this plugin use your filesystem and database?
No storage issues were detected
Filesystem: 990 new files
Database: 8 new tables, 14 new options
New tables
wp_mvx_vendor_orders
wp_mvx_cust_answers
wp_mvx_visitors_stats
wp_mvx_products_map
wp_mvx_shipping_zone_locations
wp_mvx_shipping_zone_methods
wp_mvx_cust_questions
wp_mvx_vendor_ledger
New WordPress options
mvx_commissions_tab_settings
widget_recent-comments
mvx_product_vendor_vendor_page_id
dc_product_vendor_plugin_page_install
widget_theysaidso_widget
mvx_product_vendor_registration_page_id
mvx_table_created
dc_product_vendor_plugin_installed
mvx_settings_general_tab_settings
widget_recent-posts
...

Browser metrics Passed 4 tests

Checking browser requirements for MultiVendorX - MultiVendor Marketplace Solution For WooCommerce
This plugin has a minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,802 ▲4014.27 ▲0.381.52 ▼0.3039.05 ▼2.25
Dashboard /wp-admin2,201 ▲215.61 ▼0.0694.47 ▼3.0444.65 ▲0.47
Posts /wp-admin/edit.php2,113 ▲131.95 ▼0.0835.51 ▼4.0234.45 ▼4.61
Add New Post /wp-admin/post-new.php1,538 ▲1221.06 ▼2.26724.91 ▲22.7360.60 ▲5.02
Media Library /wp-admin/upload.php1,412 ▲94.17 ▲0.0197.28 ▲0.0142.47 ▼1.25

Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 50% from 4 tests

🔸 Tests weight: 35 | It is important to correctly uninstall your plugin, without leaving any traces
Please fix the following items
  • Zombie tables were found after uninstall: 8 tables
    • wp_mvx_shipping_zone_methods
    • wp_mvx_vendor_ledger
    • wp_mvx_shipping_zone_locations
    • wp_mvx_products_map
    • wp_mvx_cust_answers
    • wp_mvx_visitors_stats
    • wp_mvx_vendor_orders
    • wp_mvx_cust_questions
  • Zombie WordPress options detected upon uninstall: 13 options
    • mvx_commissions_tab_settings
    • db_upgraded
    • mvx_disbursement_tab_settings
    • mvx_product_vendor_vendor_page_id
    • theysaidso_admin_options
    • mvx_table_created
    • widget_recent-posts
    • widget_theysaidso_widget
    • mvx_settings_general_tab_settings
    • can_compress_scripts
    • ...

Smoke tests 50% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Good news, no errors were detected

SRP 0% from 2 tests

🔹 Tests weight: 20 | SRP (Single-Responsibility Principle) - PHP files must act as libraries and never output text or perform any action when accessed directly in a browser
The following issues need your attention
  • 5× GET requests to PHP files return non-empty strings:
    • > /wp-content/plugins/dc-woocommerce-multi-vendor/templates/vendor-registration-form.php
    • > /wp-content/plugins/dc-woocommerce-multi-vendor/packages/mvx-elementor/views/template-preview-9000001.php
    • > /wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/build.php
    • > /wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/update_certs.php
    • > /wp-content/plugins/dc-woocommerce-multi-vendor/templates/archive-vendor-banner.php
  • 329× PHP files trigger server errors when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Interface 'Stripe\\HttpClient\\ClientInterface' not found in wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/lib/HttpClient/CurlClient.php:27
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\ApiResource' not found in wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/lib/TestHelpers/TestClock.php:24
    • > PHP Fatal error
      Uncaught Error: Class 'Elementor\\Widget_Button' not found in wp-content/plugins/dc-woocommerce-multi-vendor/packages/mvx-elementor/widgets/class-mvx-widget-storechat.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\ApiResource' not found in wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/lib/Subscription.php:53
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\ApiResource' not found in wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/lib/CreditNoteLineItem.php:23
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\ApiResource' not found in wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/lib/PaymentMethod.php:56
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\ApiResource' not found in wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/lib/SetupIntent.php:67
    • > PHP Fatal error
      Uncaught Error: Class 'MVX_Elementor_TagBase' not found in wp-content/plugins/dc-woocommerce-multi-vendor/packages/mvx-elementor/includes/Tags/StoreDummyProducts.php:3
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\ApiResource' not found in wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/lib/InvoiceLineItem.php:31
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\Service\\AbstractServiceFactory' not found in wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/lib/Service/BillingPortal/BillingPortalServiceFactory.php:13

User-side errors Passed 1 test

🔹 Test weight: 20 | This is a shallow check for browser errors
Everything seems fine, but this is not an exhaustive test

Optimizations

Plugin configuration 90% from 29 tests

readme.txt 94% from 16 tests

The readme.txt file is an important file in your plugin as it is parsed by WordPress.org to prepare the public listing of your plugin
These attributes need your attention:
  • Tags: Please delete some tags, you are using 17 tag instead of maximum 10
You can look at the official readme.txt

dc-woocommerce-multi-vendor/dc_product_vendor.php 85% from 13 tests

The primary PHP file in "MultiVendorX - MultiVendor Marketplace Solution For WooCommerce" version 4.0.31 is used by WordPress to initiate all plugin functionality
Please make the necessary changes and fix the following:
  • Text Domain: The text domain is optional since WordPress version 4.6; if you do specify it, it must be the same as the plugin slug
  • Main file name: It is recommended to name the main PHP file as the plugin slug ("dc-woocommerce-multi-vendor.php" instead of "dc_product_vendor.php")

Code Analysis 0% from 3 tests

File types 0% from 1 test

🔸 Test weight: 35 | There should be no dangerous file extensions present in any WordPress plugin
Please fix the following items
  • For security reasons, never distribute binary or executable files with your plugin
    • .crt - Security Certificate in Firefox, IE, Chrome, Safari
      • wp-content/plugins/dc-woocommerce-multi-vendor/lib/Stripe/data/ca-certificates.crt
221,032 lines of code in 879 files:
LanguageFilesBlank linesComment linesLines of code
PHP6409,89423,49074,212
CSS654,62242566,241
JavaScript1325,4153,85638,066
JSON60021,156
Sass241698318,331
Markdown41,01702,500
SVG602466
XML10031
make110029

PHP code 0% from 2 tests

This is a very shot review of cyclomatic complexity and code structure
Please tend to the following items
  • Please reduce cyclomatic complexity of classes to less than 1000 (currently 1,303)
  • Cyclomatic complexity of methods has to be reduced to less than 100 (currently 155)
Cyclomatic complexity
Average complexity per logical line of code0.43
Average class complexity20.30
▷ Minimum class complexity1.00
▷ Maximum class complexity1,303.00
Average method complexity4.15
▷ Minimum method complexity1.00
▷ Maximum method complexity155.00
Code structure
Namespaces33
Interfaces9
Traits9
Classes421
▷ Abstract classes153.56%
▷ Concrete classes40696.44%
▷ Final classes20.49%
Methods2,626
▷ Static methods28510.85%
▷ Public methods2,39091.01%
▷ Protected methods1676.36%
▷ Private methods692.63%
Functions587
▷ Named functions55895.06%
▷ Anonymous functions294.94%
Constants975
▷ Global constants121.23%
▷ Class constants96398.77%
▷ Public constants963100.00%

Plugin size 50% from 2 tests

Image compression 50% from 2 tests

Using a strong compression for your PNG files is a great way to speed-up your plugin
37 PNG files occupy 2.81MB with 0.93MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
assets/images/delete-icon.png0.65KB0.51KB▼ 21.34%
assets/images/pro-bg.png105.35KB61.40KB▼ 41.71%
assets/images/edit.png6.02KB3.62KB▼ 39.81%
assets/images/trash.png2.22KB2.52KB0.00%
packages/mvx-elementor/assets/images/store-preview-9000001.png1,392.67KB515.68KB▼ 62.97%