72% boatdealer

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

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

About plugin

  • Plugin page: boatdealer
  • Plugin version: 3.06
  • PHP compatiblity: 5.5+
  • PHP version: 7.4.16
  • WordPress compatibility: 4.9.0-6.3
  • WordPress version: 6.3.1
  • First release: Apr 1, 2016
  • Latest release: Oct 18, 2023
  • Number of updates: 1
  • Update frequency: every 365.0 days

Code review

54 tests

User reviews

5 reviews

Install metrics

100+ active /19,964 total downloads

Benchmarks

Plugin footprint 83% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | The install procedure must perform silently
Installer ran successfully

Server metrics [RAM: ▲1.17MB] [CPU: ▲11.02ms] 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 /4.48 ▲1.0248.08 ▲3.78
Dashboard /wp-admin4.54 ▲1.2359.93 ▲4.93
Posts /wp-admin/edit.php4.62 ▲1.2664.26 ▲13.66
Add New Post /wp-admin/post-new.php7.09 ▲1.20110.89 ▲21.71
Media Library /wp-admin/upload.php4.47 ▲1.2463.92 ▲29.81
Settings /wp-admin/admin.php?page=boatdealer-plugin-settings4.4546.50
Team /wp-admin/admin.php?page=md-team4.4550.26
Fields Table /wp-admin/admin.php?page=fields-table4.4547.83
Dashboard /wp-admin/admin.php?page=boat_dealer_plugin4.4547.71
Go Pro /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page34.4547.49
Models /wp-admin/admin.php?page=md-makes4.4552.22
Boatdealer Designer /wp-admin/admin.php?page=md-designer4.4545.60
boatdealer_settings /wp-admin/edit.php?post_type=boats&page=boatdealer_settings4.4649.74
Boatdealer Designer /wp-admin/themes.php?page=Boat_Dealer_Designer4.4544.80
Boats Table /wp-admin/admin.php?page=boats-table4.4547.40

Server storage [IO: ▲5.03MB] [DB: ▲0.02MB] Passed 3 tests

How much does this plugin use your filesystem and database?
This plugin installed successfully
Filesystem: 206 new files
Database: no new tables, 23 new options
New WordPress options
widget_recent-posts
boatdealer_show_condition
bill_show_warnings
boatdealer_show_transmission
widget_searchwidget
theysaidso_admin_options
widget_recent-comments
boatdealer_show_year
boatdealer_show_fuel
boatdealer_recipientEmail
...

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,087 ▲32615.50 ▲1.239.69 ▲7.8041.42 ▲0.28
Dashboard /wp-admin2,323 ▲1496.29 ▲0.6995.75 ▼4.5286.43 ▲42.58
Posts /wp-admin/edit.php2,265 ▲1653.01 ▲1.0357.02 ▲17.3252.04 ▲17.86
Add New Post /wp-admin/post-new.php1,692 ▲16618.78 ▼4.88597.27 ▼85.5231.72 ▼29.80
Media Library /wp-admin/upload.php1,545 ▲1515.30 ▲1.14106.96 ▲6.4792.63 ▲47.42
Settings /wp-admin/admin.php?page=boatdealer-plugin-settings2,1563.6641.3445.13
Team /wp-admin/admin.php?page=md-team2,4505.3677.7041.66
Fields Table /wp-admin/admin.php?page=fields-table2,3004.3264.9834.86
Dashboard /wp-admin/admin.php?page=boat_dealer_plugin1,3452.9451.2969.46
Go Pro /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page32,3955.73140.5099.80
Models /wp-admin/admin.php?page=md-makes2,2143.8547.6237.44
Boatdealer Designer /wp-admin/admin.php?page=md-designer13,47027.12808.06167.74
boatdealer_settings /wp-admin/edit.php?post_type=boats&page=boatdealer_settings1,4232.6936.6858.70
Boatdealer Designer /wp-admin/themes.php?page=Boat_Dealer_Designer9112.4335.3219.88
Boats Table /wp-admin/admin.php?page=boats-table2,0024.0853.5340.87

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

🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
Please fix the following items
  • Zombie WordPress options detected upon uninstall: 23 options
    • bill_last_feedback
    • widget_recent-posts
    • boatdealer_show_make
    • theysaidso_admin_options
    • widget_recentwidget
    • can_compress_scripts
    • boatdealer_show_transmission
    • db_upgraded
    • boatdealer_show_condition
    • boatdealer_activated
    • ...

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
The smoke test was a success, however most plugin functionality was not tested

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
  • 5× PHP files output non-empty strings when accessed directly via GET requests:
    • > /wp-content/plugins/boatdealer/includes/templates/template-single.php
    • > /wp-content/plugins/boatdealer/includes/checkup/class_bill_catch_errors.php
    • > /wp-content/plugins/boatdealer/includes/checkup/bill_class_diagnose.php
    • > /wp-content/plugins/boatdealer/dashboard/fixconfig.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 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 139
    • > 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 139
    • > 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 Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/boatdealer/includes/widgets/widgets.php:9
    • > 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 139
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/boatdealer/includes/multi/multi-functions.php:1
    • > 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 add_action() in wp-content/plugins/boatdealer/assets/php/boatdealer_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/bd_mr_image_resize.php:20

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
    • > Javascript (severe) in unknown
    http://boatdealerplugin.com/premium/ - Access to font at 'https://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0' (redirected from 'http://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0') from origin 'http://boatdealerplugin.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Network (severe)
    https://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0 - Failed to load resource: net::ERR_FAILED
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Javascript (severe) in unknown
    http://boatdealerplugin.com/premium/ 1628 Access to font at 'https://boatdealerplugin.com/wp-content/plugins/shortcodes-ultimate/vendor/fork-awesome/fonts/forkawesome-webfont.woff2?v=1.2.0' from origin 'http://boatdealerplugin.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Network (severe)
    https://boatdealerplugin.com/wp-content/plugins/shortcodes-ultimate/vendor/fork-awesome/fonts/forkawesome-webfont.woff2?v=1.2.0 - Failed to load resource: net::ERR_FAILED
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Javascript (severe) in unknown
    http://boatdealerplugin.com/premium/ - Access to font at 'https://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0' (redirected from 'http://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0') from origin 'http://boatdealerplugin.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Network (severe)
    https://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0 - Failed to load resource: net::ERR_FAILED
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Javascript (severe) in unknown
    http://boatdealerplugin.com/premium/ - Access to font at 'https://boatdealerplugin.com/wp-content/plugins/shortcodes-ultimate/vendor/fork-awesome/fonts/forkawesome-webfont.woff?v=1.2.0' from origin 'http://boatdealerplugin.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Network (severe)
    https://boatdealerplugin.com/wp-content/plugins/shortcodes-ultimate/vendor/fork-awesome/fonts/forkawesome-webfont.woff?v=1.2.0 - Failed to load resource: net::ERR_FAILED
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Javascript (severe) in unknown
    http://boatdealerplugin.com/premium/ - Access to font at 'https://boatdealerplugin.com/wp-content/plugins/shortcodes-ultimate/vendor/fork-awesome/fonts/forkawesome-webfont.ttf?v=1.2.0' from origin 'http://boatdealerplugin.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Network (severe)
    https://boatdealerplugin.com/wp-content/plugins/shortcodes-ultimate/vendor/fork-awesome/fonts/forkawesome-webfont.ttf?v=1.2.0 - Failed to load resource: net::ERR_FAILED
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Javascript (severe) in unknown
    http://boatdealerplugin.com/premium/ - Access to font at 'https://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0' (redirected from 'http://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0') from origin 'http://boatdealerplugin.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    • > GET request to /wp-admin/admin.php?page=boatdealer_my-custom-submenu-page3
    • > Network (severe)
    https://boatdealerplugin.com/wp-content/plugins/boatdealer/assets/fonts/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0 - Failed to load resource: net::ERR_FAILED
    • > GET request to /wp-admin/admin.php?page=md-designer
    • > Security (warning) in unknown
    /?customize_changeset_uuid=9b31aa06-1e64-4713-84a1-0c233726d6dc&customize_theme=twentytwentyone&customize_messenger_channel=preview-0 - An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.

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 3.06
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 plugin27,751 lines of code in 101 files:
LanguageFilesBlank linesComment linesLines of code
PHP483,7399549,510
CSS193542356,793
SVG6003,942
PO File71,6092,3173,577
HTML52541092,131
JavaScript162032631,798

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.30
Average class complexity9.72
▷ Minimum class complexity1.00
▷ Maximum class complexity47.00
Average method complexity3.15
▷ Minimum method complexity1.00
▷ Maximum method complexity19.00
Code structure
Namespaces4
Interfaces0
Traits0
Classes25
▷ Abstract classes00.00%
▷ Concrete classes25100.00%
▷ Final classes00.00%
Methods102
▷ Static methods109.80%
▷ Public methods10098.04%
▷ Protected methods00.00%
▷ Private methods21.96%
Functions129
▷ Named functions12899.22%
▷ Anonymous functions10.78%
Constants86
▷ Global constants86100.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
35 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/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png0.33KB0.12KB▼ 62.09%
assets/images/oktick.png41.43KB11.19KB▼ 72.99%
assets/jquery/images/ui-icons_cd0a0a_256x240.png4.44KB4.17KB▼ 6.02%
assets/images/noktick.png40.25KB10.96KB▼ 72.78%
assets/images/support.png1.76KB1.28KB▼ 27.27%