60% wp-easycart

Code Review | Shopping Cart & eCommerce Store

WordPress plugin Shopping Cart & eCommerce Store scored60%from 54 tests.

About plugin

  • Plugin page: wp-easycart
  • Plugin version: 5.5.16
  • PHP version: 7.4.16
  • WordPress version: 6.3.1
  • First release: Jul 16, 2013
  • Latest release: Dec 1, 2023
  • Number of updates: 1,356
  • Update frequency: every 2.8 days
  • Top authors: levelfourstorefront (100%)

Code review

54 tests

User reviews

186 reviews

Install metrics

5,000+ active /649,984 total downloads

Benchmarks

Plugin footprint 81% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | All plugins must install correctly, without throwing any errors, warnings, or notices
The plugin installed gracefully, with no errors

Server metrics [RAM: ▲18.28MB] [CPU: ▲238.81ms] 25% from 4 tests

A check of server-side resources used by Shopping Cart & eCommerce Store
Please fix the following
  • RAM: You should keep total memory usage under 10MB (currently 23.32MB on /wp-admin/admin.php?page=wp-easycart-settings)
  • Extra RAM: The extra memory usage must be under 5MB (currently 18.28MB on /wp-admin/admin.php?page=wp-easycart-settings)
  • Extra CPU: Extra CPU usage must be kept under 200.00ms (currently 238.81ms on /wp-admin/admin.php?page=wp-easycart-settings)
PageMemory (MB)CPU Time (ms)
Home /17.26 ▲13.79135.23 ▲91.89
Dashboard /wp-admin23.32 ▲19.97328.80 ▲267.53
Posts /wp-admin/edit.php23.32 ▲19.96367.28 ▲319.67
Add New Post /wp-admin/post-new.php25.28 ▲19.39378.82 ▲280.33
Media Library /wp-admin/upload.php23.32 ▲20.09348.61 ▲315.48
Upgrade to Premium /wp-admin/admin.php?page=wp-easycart-premium23.32311.69
Orders 0 /wp-admin/admin.php?page=wp-easycart-orders23.32354.42
Marketing /wp-admin/admin.php?page=wp-easycart-rates23.32398.54
Products /wp-admin/admin.php?page=wp-easycart-products23.32305.79
Diagnostics /wp-admin/admin.php?page=wp-easycart-status23.32424.97
Registration 0 /wp-admin/admin.php?page=wp-easycart-registration23.32319.08
Reports /wp-admin/admin.php?page=wp-easycart-dashboard23.32345.83
Store Status /wp-admin/admin.php?page=wp-easycart-license-status23.32387.43
Users /wp-admin/admin.php?page=wp-easycart-users23.32341.35
Settings /wp-admin/admin.php?page=wp-easycart-settings23.32355.95

Server storage [IO: ▲22.43MB] [DB: ▲0.26MB] 67% from 3 tests

How much does this plugin use your filesystem and database?
These are issues you should consider
  • Illegal file modification detected: 25 files (20.99KB) outside of "wp-content/plugins/wp-easycart/" and "wp-content/uploads/"
    • (new file) wp-content/plugins/wp-easycart-data/products/.htaccess
    • (new file) wp-content/plugins/wp-easycart-data/products/banners/.empty
    • (new file) wp-content/plugins/wp-easycart-data/products/pics1/images.php
    • (new file) wp-content/plugins/wp-easycart-data/products/categories/.empty
    • (new file) wp-content/plugins/wp-easycart-data/design/layout/custom-layout/.empty
    • (new file) wp-content/plugins/wp-easycart-data/products/pics2/.htaccess
    • (new file) wp-content/plugins/wp-easycart-data/products/pics1/.htaccess
    • (new file) wp-content/plugins/wp-easycart-data/design/theme/custom-theme/.empty
    • (new file) wp-content/plugins/wp-easycart-data/products/pics1/cache/.empty
    • (new file) wp-content/plugins/wp-easycart-data/products/downloads/.empty
    • ...
Filesystem: 1,131 new files
Database: 62 new tables, 764 new options
New tables
ec_giftcard
ec_affiliate_rule_to_affiliate
ec_review
ec_address
ec_tempcart_data
ec_pricetier
ec_order
ec_zone
ec_optionitem
ec_option
...
New WordPress options
ec_option_payfort_response_phrase
ec_option_disable_easycart_ad
ec_option_use_delicious_icon
ec_option_privacy_link
ec_option_2checkout_thirdparty_secret_word
ec_option_ship_to_billing_global
ec_option_stripe_connect_use_sandbox
ec_option_show_coupons
ec_option_sagepay_simulator
ec_option_checklist_tax_choice
...

Browser metrics Passed 4 tests

This is an overview of browser requirements for Shopping Cart & eCommerce Store
Normal browser usage
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,085 ▲32314.19 ▼0.1915.90 ▲14.1840.91 ▼2.39
Dashboard /wp-admin2,339 ▲1615.65 ▼0.0791.12 ▼14.1486.39 ▲42.36
Posts /wp-admin/edit.php2,977 ▲8771.98 ▼0.0535.81 ▼0.4333.14 ▼4.19
Add New Post /wp-admin/post-new.php2,436 ▲91018.32 ▼4.85741.32 ▲113.9542.78 ▼11.92
Media Library /wp-admin/upload.php1,490 ▲964.28 ▲0.0197.97 ▲2.8041.97 ▼0.12
Upgrade to Premium /wp-admin/admin.php?page=wp-easycart-premium1,9153.6771.1721.51
Orders 0 /wp-admin/admin.php?page=wp-easycart-orders4,36014.47385.50102.38
Marketing /wp-admin/admin.php?page=wp-easycart-rates3,4054.3079.22109.01
Products /wp-admin/admin.php?page=wp-easycart-products5,77313.88397.2382.96
Diagnostics /wp-admin/admin.php?page=wp-easycart-status3,4894.3382.08124.80
Registration 0 /wp-admin/admin.php?page=wp-easycart-registration3,83412.72308.3398.87
Reports /wp-admin/admin.php?page=wp-easycart-dashboard5,9946.20204.2486.61
Store Status /wp-admin/admin.php?page=wp-easycart-license-status3,6224.2579.82113.31
Users /wp-admin/admin.php?page=wp-easycart-users3,73511.21319.9790.26
Settings /wp-admin/admin.php?page=wp-easycart-settings3,2974.2581.6295.69

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

🔸 Tests weight: 35 | It is important to correctly uninstall your plugin, without leaving any traces
Please fix the following items
  • The uninstall procedure has failed, leaving 21 options in the database
    • can_compress_scripts
    • widget_ec_pricepointwidget
    • widget_ec_loginwidget
    • widget_recent-posts
    • widget_ec_searchwidget
    • widget_ec_manufacturerwidget
    • widget_ec_groupwidget
    • widget_ec_colorwidget
    • widget_ec_categorywidget
    • widget_ec_currencywidget
    • ...

Smoke tests 25% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Even though no errors were found, this is by no means an exhaustive test

SRP 0% from 2 tests

🔹 Tests weight: 20 | The single-responsibility principle: PHP files have to remain inert when accessed directly, throwing no errors and performing no actions
Please take a closer look at the following
  • 12× PHP files perform the task of outputting text when accessed with GET requests (only 10 are shown):
    • > /wp-content/plugins/wp-easycart/admin/template/extensions.php
    • > /wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_color_widget.php
    • > /wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_product_details_page_price.php
    • > /wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_store_table_display.php
    • > /wp-content/plugins/wp-easycart/admin/template/registration.php
    • > /wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_manufacturer_widget.php
    • > /wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_pricepoint_widget.php
    • > /wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_category_widget.php
    • > /wp-content/plugins/wp-easycart/admin/template/settings.php
    • > /wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_product_details_page_short_description.php
  • 637× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
    • > PHP Notice
      Undefined index: ec_categories in wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_group_widget.php on line 3
    • > PHP Fatal error
      Uncaught Error: Call to a member function get_row() on null in wp-content/plugins/wp-easycart/admin/template/settings/taxes/vat-setup.php:3
    • > PHP Fatal error
      Uncaught Error: Interface 'Psr\\Http\\Message\\StreamInterface' not found in wp-content/plugins/wp-easycart/inc/aws/GuzzleHttp/Psr7/LimitStream.php:12
    • > PHP Fatal error
      Uncaught Error: Interface 'Aws\\Signature\\SignatureInterface' not found in wp-content/plugins/wp-easycart/inc/aws/Aws/Signature/SignatureV4.php:21
    • > PHP Fatal error
      Uncaught Error: Class 'GuzzleHttp\\Promise\\RejectionException' not found in wp-content/plugins/wp-easycart/inc/aws/GuzzleHttp/Promise/AggregateException.php:8
    • > PHP Notice
      Undefined variable: product in wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_optionitem_low_stock_email.php on line 9
    • > PHP Fatal error
      Uncaught Error: Using $this when not in object context in wp-content/plugins/wp-easycart/design/layout/base-responsive-v3/ec_account_subscription_details.php:1
    • > PHP Fatal error
      Uncaught Error: Interface 'GuzzleHttp\\Promise\\PromisorInterface' not found in wp-content/plugins/wp-easycart/inc/aws/Aws/S3/ObjectCopier.php:17
    • > PHP Fatal error
      Uncaught Error: Class 'Aws\\AbstractConfigurationProvider' not found in wp-content/plugins/wp-easycart/inc/aws/Aws/ClientSideMonitoring/ConfigurationProvider.php:45
    • > PHP Fatal error
      Uncaught Error: Call to a member function get_results() on null in wp-content/plugins/wp-easycart/admin/template/exporters/export-accounts-csv.php:78

User-side errors 0% from 1 test

🔹 Test weight: 20 | A shallow check that no browser errors were triggered
Please take a look at the following user-side issues
    • > GET request to /wp-admin/admin.php?page=wp-easycart-premium
    • > Javascript (severe) in unknown
    /wp-admin/admin.php?page=wp-easycart-premium 153:18 Uncaught DOMException: Failed to execute 'replaceState' on 'History': A h…com/wp-admin/admin.php?page=wp-easycart-premium'.
  • 4 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=wp-easycart-users
    • > Other (warning) in unknown
    https://www.youtube.com/s/player/31e0b6d9/www-widgetapi.vflset/www-widgetapi.js 1248 Unrecognized feature: 'web-share'.

Optimizations

Plugin configuration 93% from 29 tests

readme.txt Passed 16 tests

The readme.txt file uses markdown syntax to describe your plugin to the world
9 plugin tags: stripe, store, shopping cart, facebook, e-commerce...

wp-easycart/wpeasycart.php 85% from 13 tests

The main file in "Shopping Cart & eCommerce Store" v. 5.5.16 serves as a complement to information provided in readme.txt and as the entry point to the plugin
Please take the time to fix the following:
  • Description: If Twitter did it, so should we! Keep the description under 140 characters (currently 482 characters long)
  • Main file name: The principal plugin file should be the same as the plugin slug ("wp-easycart.php" instead of "wpeasycart.php")

Code Analysis 0% from 3 tests

File types 0% from 1 test

🔸 Test weight: 35 | This is a short overview of programming languages used in this plugin, detecting executable files
Please make sure to remedy the following
  • You should never include executable (binary) or otherwise dangerous files in your plugin
    • .crt - Security Certificate in Firefox, IE, Chrome, Safari
      • wp-content/plugins/wp-easycart/inc/classes/gateway/cert/api_cert_chain.crt
268,739 lines of code in 968 files:
LanguageFilesBlank linesComment linesLines of code
PHP90724,25921,111178,732
PO File520,07936,12348,674
JSON14018,102
JavaScript402,23227617,157
CSS155272446,074

PHP code 0% from 2 tests

An short overview of logical lines of code, cyclomatic complexity, and other code metrics
The following items need your attention
  • Cyclomatic complexity of classes has to be reduced to less than 1000 (currently 1,952)
  • Please reduce cyclomatic complexity of methods to less than 100 (currently 202)
Cyclomatic complexity
Average complexity per logical line of code0.49
Average class complexity35.27
▷ Minimum class complexity1.00
▷ Maximum class complexity1,952.00
Average method complexity4.61
▷ Minimum method complexity1.00
▷ Maximum method complexity202.00
Code structure
Namespaces70
Interfaces43
Traits20
Classes501
▷ Abstract classes91.80%
▷ Concrete classes49298.20%
▷ Final classes6212.60%
Methods5,575
▷ Static methods70712.68%
▷ Public methods4,34477.92%
▷ Protected methods2274.07%
▷ Private methods1,00418.01%
Functions793
▷ Named functions44756.37%
▷ Anonymous functions34643.63%
Constants236
▷ Global constants198.05%
▷ Class constants21791.95%
▷ Public constants217100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

Using a strong compression for your PNG files is a great way to speed-up your plugin
83 PNG files occupy 0.34MB with 0.16MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
admin/images/admin-logo-old.png34.10KB11.66KB▼ 65.82%
design/theme/base-responsive-v3/images/visa_inactive.png3.16KB2.06KB▼ 34.88%
design/theme/base-responsive-v3/images/visadebit_inactive.png3.38KB1.91KB▼ 43.46%
design/theme/base-responsive-v3/images/diners_inactive.png3.31KB2.03KB▼ 38.61%
design/theme/base-responsive-v3/images/myspace-icon.png3.94KB2.05KB▼ 47.99%