10% boatdealer

Code Review | WordPress Boat Dealer, Boat Seller, Yatch Dealer, PWC Plugin

WordPress plugin WordPress Boat Dealer, Boat Seller, Yatch Dealer, PWC Plugin scored 10% from 54 tests.

About plugin

  • Plugin page: boatdealer
  • Plugin version: 2.35
  • PHP compatiblity: 5.5+
  • PHP version: 7.4.16
  • WordPress compatibility: 4.9.0-5.8
  • WordPress version: 5.8.1
  • First release: Apr 1, 2016
  • Latest release: Jul 19, 2021
  • Number of updates: 755
  • Update frequency: every 2.6 days
  • Top authors: sminozzi (100%)

Code review

54 tests

User reviews

4 reviews

Install metrics

100+ active / 14,663 total downloads

Benchmarks

Plugin footprint 40% from 16 tests

Installer 0% from 1 test

🔺 Critical test (weight: 50) | The install procedure must perform silently
The following installer errors require your attention
  • The plugin did not install without errors
    • > Warning in wp-content/plugins/boatdealer/includes/functions/functions.php+776
    A non-numeric value encountered

Server metrics [RAM: ▼1.87MB] [CPU: ▼178.86ms] Passed 4 tests

This is a short check of server-side resources used by WordPress Boat Dealer, Boat Seller, Yatch Dealer, PWC Plugin
No issues were detected with server-side resource usage
PageMemory (MB)CPU Time (ms)
Home /1.76 ▼0.9612.38 ▼9.11
Dashboard /wp-admin1.78 ▼1.2710.04 ▼25.59
Posts /wp-admin/edit.php1.78 ▼1.3211.19 ▼31.26
Add New Post /wp-admin/post-new.php1.78 ▼3.659.94 ▼635.41
Media Library /wp-admin/upload.php1.78 ▼1.2210.58 ▼23.16
Go Pro /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page31.789.45
Models /wp-admin/admin.php?page=md-makes1.7815.63
Boats Table /wp-admin/admin.php?page=boats-table1.7810.68
Features /wp-admin/admin.php?page=md-locations1.7810.62
Team /wp-admin/admin.php?page=md-team1.789.51
Fields Table /wp-admin/admin.php?page=fields-table1.7815.11
boatdealer_settings /wp-admin/edit.php?post_type=boats&page=boatdealer_settings1.799.38
Settings /wp-admin/admin.php?page=boatdealer-settings1.7810.94
Dashboard /wp-admin/admin.php?page=boat_dealer_plugin1.789.75

Server storage [IO: ▲4.08MB] [DB: ▲0.00MB] Passed 3 tests

How much does this plugin use your filesystem and database?
This plugin installed successfully
Filesystem: 191 new files
Database: no new tables, 16 new options
New WordPress options
BoatDealer_show_fuel
boatdealer_plugin_version
BoatDealer_show_condition
widget_searchwidget
widget_recentwidget
BoatDealer_recipientEmail
bill_last_feedback
BoatDealer_show_price
BoatDealer_show_transmission
BoatDealer_show_orderby
...

Browser metrics Passed 4 tests

Checking browser requirements for WordPress Boat Dealer, Boat Seller, Yatch Dealer, PWC Plugin
Normal browser usage
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,973 ▲37717.27 ▲1.4016.45 ▲8.8849.87 ▼1.30
Dashboard /wp-admin3,077 ▲1436.80 ▲0.83136.59 ▼0.56145.12 ▲32.79
Posts /wp-admin/edit.php2,871 ▲1323.17 ▲0.4873.86 ▲10.0288.92 ▼5.90
Add New Post /wp-admin/post-new.php1,959 ▲45915.78 ▼2.66379.48 ▲47.46116.92 ▲10.42
Media Library /wp-admin/upload.php1,861 ▲545.50 ▲0.47130.95 ▼16.15128.71 ▲9.84
Go Pro /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page32,3214.56158.67124.33
Models /wp-admin/admin.php?page=md-makes2,6653.8080.83100.41
Boats Table /wp-admin/admin.php?page=boats-table2,3113.8483.7170.25
Features /wp-admin/admin.php?page=md-locations2,6653.8083.95107.68
Team /wp-admin/admin.php?page=md-team3,0445.32100.5681.91
Fields Table /wp-admin/admin.php?page=fields-table2,7433.8489.7182.69
boatdealer_settings /wp-admin/edit.php?post_type=boats&page=boatdealer_settings1,6152.5663.6973.49
Settings /wp-admin/admin.php?page=boatdealer-settings2,3523.4372.2193.66
Dashboard /wp-admin/admin.php?page=boat_dealer_plugin1,8282.6569.33140.07

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

🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
Please fix the following items
  • Uninstall procedure had uncaught errors
    • > Warning in wp-content/plugins/boatdealer/includes/functions/functions.php+776
    A non-numeric value encountered
  • Zombie WordPress options detected upon uninstall: 16 options
    • BoatDealer_recipientEmail
    • BoatDealer_show_transmission
    • bill_last_feedback
    • BoatDealer_activated
    • BoatDealer_show_year
    • boatdealer_plugin_version
    • widget_recentwidget
    • meta_boxes
    • BoatDealer_show_type
    • BoatDealer_show_orderby
    • ...

Smoke tests 0% from 4 tests

Server-side errors 0% from 1 test

🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Almost there, just fix the following server-side errors
  • 18 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=boat_dealer_plugin
    • > Warning in wp-content/plugins/boatdealer/includes/functions/functions.php+776
    A non-numeric value encountered
  • 36 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=boat_dealer_plugin
    • > Notice in wp-includes/query.php+114
    Undefined index: wp_the_query

SRP 0% from 2 tests

🔹 Tests weight: 20 | It is important to ensure that your PHP files perform no action when accessed directly, respecting the single-responsibility principle
Please take a closer look at the following
  • 3× PHP files output non-empty strings when accessed directly via GET requests:
    • > /wp-content/plugins/boatdealer/dashboard/fixconfig.php
    • > /wp-content/plugins/boatdealer/includes/templates/template-single.php
    • > /wp-content/plugins/boatdealer/public/restore-config.php
  • 11× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
    • > PHP Fatal error
      require_once(): Failed opening required 'BOATDEALERPLUGINPATHassets/php/boatdealer_mr_image_resize.php' (include_path='.:/usr/share/php') in wp-content/plugins/boatdealer/includes/templates/template-functions.php on line 409
    • > PHP Fatal error
      Uncaught Error: Call to undefined function BoatDealerPlugin_feedback\\is_multisite() in wp-content/plugins/boatdealer/includes/feedback/feedback.php:3
    • > PHP Fatal error
      Uncaught Error: Call to undefined function BoatDealerPlugin_activate\\is_multisite() in wp-content/plugins/boatdealer/includes/feedback/activated-manager.php:2
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/boatdealer/includes/widgets/widgets.php:9
    • > PHP Fatal error
      Uncaught Error: Call to undefined function BoatDealerPlugin_last_feedback\\is_multisite() in wp-content/plugins/boatdealer/includes/feedback/feedback-last.php:2
    • > PHP Warning
      Use of undefined constant BOATDEALERPLUGINPATH - assumed 'BOATDEALERPLUGINPATH' (this will throw an Error in a future version of PHP) in wp-content/plugins/boatdealer/includes/templates/template-functions.php on line 409
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/boatdealer/assets/php/bd_mr_image_resize.php:20
    • > PHP Fatal error
      Uncaught Error: Class 'boatdealer\\WP\\Settings\\Page' not found in wp-content/plugins/boatdealer/settings/options/plugin_options_tabbed.php:10
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/boatdealer/assets/php/boatdealer_mr_image_resize.php:20
    • > PHP Warning
      require_once(BOATDEALERPLUGINPATHassets/php/boatdealer_mr_image_resize.php): failed to open stream: No such file or directory in wp-content/plugins/boatdealer/includes/templates/template-functions.php on line 409

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=boatdealer_my-custom-submenu-page3
    • > Network (severe)
    http://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0 - Failed to load resource: the server responded with a status of 403 (Forbidden)
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Network (severe)
    http://boatdealerplugin.com/wp-content/plugins/shortcodes-ultimate/includes/fonts/fork-awesome/forkawesome-webfont.woff2?v=1.0.11 - Failed to load resource: the server responded with a status of 403 (Forbidden)

Optimizations

Plugin configuration 93% from 29 tests

readme.txt 88% from 16 tests

The readme.txt file uses markdown syntax to describe your plugin to the world
Attributes that require attention:
  • Screenshots: These screenshots require images: #1 (Front Boats Page (gallery)), #2 (Front Boats Page (list view)), #3 (Front Boat Post Page), #4 (Boats Table Page), #5 (Settings Page), #6 (Settings Design (Premium Feature)), #7 (Table Features), #8 (Setup Search Bar), #9 (Fields Table)
  • Tags: Too many tags (11 tag instead of maximum 10); only the first 5 tags are used in your directory listing
You can look at the official readme.txt

boatdealer/boatdealer.php Passed 13 tests

Analyzing the main PHP file in "WordPress Boat Dealer, Boat Seller, Yatch Dealer, PWC Plugin" version 2.35
67 characters long description:
The easiest way to manage, list and sell your boats and PWC online.

Code Analysis Passed 3 tests

File types Passed 1 test

🔸 Test weight: 35 | There should be no dangerous file extensions present in any WordPress plugin
Everything looks great! No dangerous files found in this plugin25,228 lines of code in 94 files:
LanguageFilesBlank linesComment linesLines of code
PHP443,9056967,470
CSS193491946,810
SVG6003,942
PO File71,6092,3173,577
HTML52541092,131
JavaScript131991951,298

PHP code Passed 2 tests

An overview of cyclomatic complexity and code structure
No complexity issues detected
Cyclomatic complexity
Average complexity per logical line of code0.31
Average class complexity8.48
▷ Minimum class complexity1.00
▷ Maximum class complexity25.00
Average method complexity3.00
▷ Minimum method complexity1.00
▷ Maximum method complexity19.00
Code structure
Namespaces5
Interfaces0
Traits0
Classes23
▷ Abstract classes00.00%
▷ Concrete classes23100.00%
▷ Final classes00.00%
Methods86
▷ Static methods910.47%
▷ Public methods86100.00%
▷ Protected methods00.00%
▷ Private methods00.00%
Functions109
▷ Named functions10899.08%
▷ Anonymous functions10.92%
Constants85
▷ Global constants85100.00%
▷ Class constants00.00%
▷ Public constants00.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

PNG files should be compressed to save space and minimize bandwidth usage
34 PNG files occupy 0.41MB with 0.20MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
assets/images/infox350.png60.29KB12.54KB▼ 79.21%
assets/images/step1.png4.80KB2.24KB▼ 53.25%
assets/images/noktick.png40.25KB10.96KB▼ 72.78%
assets/jquery/images/ui-bg_glass_75_dadada_1x400.png0.26KB0.16KB▼ 38.93%
assets/images/close_banner.png0.44KB0.49KB0.00%