62% web-disrupt-funnelmentals

Code Review | Funnelmentals

WordPress plugin Funnelmentals scored 62% from 54 tests.

About plugin

  • Plugin page: web-disrupt-funne...
  • Plugin version: 1.2.6
  • PHP version: 7.4.16
  • WordPress compatibility: 4.6-5.2.1
  • WordPress version: 5.8.1
  • First release: Jul 26, 2018
  • Latest release: Jan 2, 2020
  • Number of updates: 12
  • Update frequency: every 43.8 days
  • Top authors: therealwebdisrupt (100%)

Code review

54 tests

User reviews

1 review

Install metrics

30+ active / 1,526 total downloads

Benchmarks

Plugin footprint 65% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | The install procedure must perform silently
The plugin installed gracefully, with no errors

Server metrics [RAM: ▲3.56MB] [CPU: ▼155.14ms] Passed 4 tests

This is a short check of server-side resources used by Funnelmentals
No issues were detected with server-side resource usage
PageMemory (MB)CPU Time (ms)
Home /7.19 ▲4.3639.06 ▲6.82
Dashboard /wp-admin7.21 ▲4.1540.12 ▲3.55
Posts /wp-admin/edit.php7.21 ▲4.1038.44 ▼5.52
Add New Post /wp-admin/post-new.php7.21 ▲1.7738.10 ▼623.81
Media Library /wp-admin/upload.php7.21 ▲4.2138.88 ▲5.23
Funnelmentals /wp-admin/admin.php?page=funnelmentals-settings7.2137.34
Freemius Debug [v.2.1.1] /wp-admin/admin.php?page=freemius7.2138.47
Funnelmentals /wp-admin/admin.php?page=web-disrupt-funnelmentals7.2137.08

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

Input-output and database impact of this plugin
This plugin installed successfully
Filesystem: 244 new files
Database: no new tables, 5 new options
New WordPress options
fs_api_cache
fs_active_plugins
fs_debug_mode
fs_accounts
fs_gdpr

Browser metrics Passed 4 tests

An overview of browser requirements for Funnelmentals
Normal browser usage
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,841 ▲24516.38 ▲0.7615.42 ▲5.1445.63 ▼1.58
Dashboard /wp-admin2,992 ▲645.91 ▼0.04149.52 ▲0.02117.62 ▲4.98
Posts /wp-admin/edit.php2,766 ▲272.72 ▲0.0067.76 ▼0.0596.82 ▲8.43
Add New Post /wp-admin/post-new.php1,598 ▼8518.42 ▼0.37412.23 ▲14.84114.07 ▲5.66
Media Library /wp-admin/upload.php1,758 ▼525.02 ▼0.03152.01 ▲0.48123.93 ▲13.89
Funnelmentals /wp-admin/admin.php?page=funnelmentals-settings3,4683.92106.3188.39
Freemius Debug [v.2.1.1] /wp-admin/admin.php?page=freemius1,4712.1253.7582.41
Funnelmentals /wp-admin/admin.php?page=web-disrupt-funnelmentals1,2922.1255.9498.49

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

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
Please fix the following items
  • The plugin did not uninstall gracefully
    • > Notice in wp-content/plugins/web-disrupt-funnelmentals/includes/actions.php+13
    Trying to access array offset on value of type bool
  • Zombie WordPress options were found after uninstall: 5 options
    • fs_api_cache
    • fs_debug_mode
    • fs_accounts
    • fs_active_plugins
    • fs_gdpr

Smoke tests 25% from 4 tests

Server-side errors 0% from 1 test

🔹 Test weight: 20 | This is a short smoke test looking for server-side errors
These errors were triggered by the plugin
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=web-disrupt-funnelmentals
    • > Notice in wp-content/plugins/web-disrupt-funnelmentals/includes/actions.php+13
    Trying to access array offset on value of type bool
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=funnelmentals-settings
    • > Notice in wp-content/plugins/web-disrupt-funnelmentals/templates/settings.php+49
    Undefined index: remove-elementor-bottom-margin

SRP 0% from 2 tests

🔹 Tests weight: 20 | The single-responsibility principle applies for WordPress plugins as well - please make sure your PHP files perform no actions when accessed directly
The following issues need your attention
  • 1× PHP files perform the action of outputting non-empty strings when accessed directly:
    • > /wp-content/plugins/web-disrupt-funnelmentals/includes/wordpress-sdk-master/templates/ajax-loader.php
  • 26× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
    • > PHP Notice
      Undefined variable: inputs_list in wp-content/plugins/web-disrupt-funnelmentals/templates/settings.php on line 40
    • > PHP Notice
      Trying to access array offset on value of type null in wp-content/plugins/web-disrupt-funnelmentals/templates/settings.php on line 49
    • > PHP Notice
      Trying to access array offset on value of type null in wp-content/plugins/web-disrupt-funnelmentals/includes/wordpress-sdk-master/templates/account/partials/addon.php on line 8
    • > PHP Notice
      Undefined variable: VARS in wp-content/plugins/web-disrupt-funnelmentals/includes/wordpress-sdk-master/templates/account/partials/addon.php on line 7
    • > PHP Fatal error
      Uncaught Error: Call to undefined function Web_Disrupt_Funnelmentals\\apply_filters() in wp-content/plugins/web-disrupt-funnelmentals/includes/pro-actions.php:16
    • > PHP Notice
      Undefined variable: data in wp-content/plugins/web-disrupt-funnelmentals/templates/settings.php on line 58
    • > PHP Notice
      Trying to access array offset on value of type null in wp-content/plugins/web-disrupt-funnelmentals/templates/settings.php on line 49
    • > PHP Notice
      Undefined variable: version in wp-content/plugins/web-disrupt-funnelmentals/templates/settings.php on line 25
    • > PHP Notice
      Trying to access array offset on value of type null in wp-content/plugins/web-disrupt-funnelmentals/templates/settings.php on line 58
    • > PHP Notice
      Trying to access array offset on value of type null in wp-content/plugins/web-disrupt-funnelmentals/templates/settings.php on line 58

User-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no browser errors were triggered
Everything seems fine on the user side

Optimizations

Plugin configuration 97% from 29 tests

readme.txt 94% from 16 tests

You should put a lot of thought into formatting readme.txt as it is used by WordPress.org to prepare the public listing of your plugin
These attributes need your attention:
  • 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

web-disrupt-funnelmentals/web-disrupt-funnelmentals.php Passed 13 tests

The entry point to "Funnelmentals" version 1.2.6 is a PHP file that has certain tags in its header comment area
72 characters long description:
Powerful funnel creation add-ons for the popular page builder Elementor.

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | A short check of programming languages and file extensions; no executable files are allowed
Success! There were no dangerous files found in this plugin44,091 lines of code in 176 files:
LanguageFilesBlank linesComment linesLines of code
PHP1156,58514,87129,241
PO File94,2164,9449,156
LESS45951792,608
Sass25390772,443
CSS171813395
JavaScript54378226
Markdown17022

PHP code 50% from 2 tests

This is a short overview of cyclomatic complexity and code structure for this plugin
Please fix the following
  • Cyclomatic complexity of classes should be reduced to less than 1000 (currently 2,224)
Cyclomatic complexity
Average complexity per logical line of code0.57
Average class complexity64.82
▷ Minimum class complexity1.00
▷ Maximum class complexity2,224.00
Average method complexity4.07
▷ Minimum method complexity1.00
▷ Maximum method complexity82.00
Code structure
Namespaces2
Interfaces0
Traits0
Classes55
▷ Abstract classes23.64%
▷ Concrete classes5396.36%
▷ Final classes00.00%
Methods1,177
▷ Static methods16514.02%
▷ Public methods79267.29%
▷ Protected methods927.82%
▷ Private methods29324.89%
Functions108
▷ Named functions10799.07%
▷ Anonymous functions10.93%
Constants118
▷ Global constants9782.20%
▷ Class constants2117.80%
▷ Public constants21100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

PNG files should be compressed to save space and minimize bandwidth usage
24 PNG files occupy 0.09MB with 0.05MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
assets/images/prettyPhoto/sprite.png2.44KB2.17KB▼ 11.08%
assets/images/prettyPhoto/default/sprite_y.png1.13KB0.13KB▼ 88.81%
assets/images/logo.png6.72KB3.08KB▼ 54.17%
includes/wordpress-sdk-master/assets/img/plugin-icon.png9.16KB5.26KB▼ 42.58%
assets/images/prettyPhoto/default/sprite_next.png1.33KB0.39KB▼ 70.69%