84% bh-wp-autologin-urls

Code Review | Magic Emails & Autologin URLs

WordPress plugin Magic Emails & Autologin URLs scored84%from 54 tests.

About plugin

  • Plugin page: bh-wp-autologin-urls
  • Plugin version: 2.3.0
  • PHP compatiblity: 7.4+
  • PHP version: 7.4.16
  • WordPress compatibility: 4.5.0-6.2
  • WordPress version: 6.3.1
  • First release: Sep 2, 2019
  • Latest release: Oct 12, 2023
  • Number of updates: 12
  • Update frequency: every 125.0 days
  • Top authors: brianhenryie (100%)

Code review

54 tests

User reviews

1 review

Install metrics

10+ active /1,840 total downloads

Benchmarks

Plugin footprint 83% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Verifying that this plugin installs correctly without errors
The plugin installed gracefully, with no errors

Server metrics [RAM: ▲0.34MB] [CPU: ▲1.53ms] Passed 4 tests

Analyzing server-side resources used by Magic Emails & Autologin URLs
This plugin does not affect your website's performance
PageMemory (MB)CPU Time (ms)
Home /3.80 ▲0.3438.28 ▼1.06
Dashboard /wp-admin3.68 ▲0.3850.82 ▲2.75
Posts /wp-admin/edit.php3.73 ▲0.3853.05 ▲5.61
Add New Post /wp-admin/post-new.php6.22 ▲0.3387.54 ▼1.17
Media Library /wp-admin/upload.php3.54 ▲0.3241.83 ▲7.25
Autologin URLs /wp-admin/options-general.php?page=bh-wp-autologin-urls3.5436.73
Logs /wp-admin/admin.php?page=bh-wp-autologin-urls-logs3.5936.80

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

A short overview of filesystem and database impact
This plugin was installed successfully
Filesystem: 342 new files
Database: 1 new table, 8 new options
New tables
wp_autologin_urls
New WordPress options
bh_wp_autologin_urls_db_version
theysaidso_admin_options
can_compress_scripts
widget_recent-comments
widget_recent-posts
db_upgraded
bh-wp-autologin-urls-last-logs-view-time
widget_theysaidso_widget

Browser metrics Passed 4 tests

Checking browser requirements for Magic Emails & Autologin URLs
This plugin has a minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,837 ▲5114.64 ▲0.021.68 ▼0.2037.37 ▼5.57
Dashboard /wp-admin2,218 ▲415.59 ▼0.0185.91 ▼1.0841.69 ▲2.58
Posts /wp-admin/edit.php2,126 ▲292.09 ▲0.0737.76 ▲0.7035.67 ▲0.63
Add New Post /wp-admin/post-new.php1,543 ▲1723.31 ▲0.38668.15 ▲30.3557.90 ▲5.82
Media Library /wp-admin/upload.php1,426 ▲234.23 ▲0.0595.26 ▼0.4843.58 ▲1.41
Autologin URLs /wp-admin/options-general.php?page=bh-wp-autologin-urls9512.0723.4335.29
Logs /wp-admin/admin.php?page=bh-wp-autologin-urls-logs9782.4932.3329.84

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

🔸 Tests weight: 35 | Verifying that this plugin uninstalls completely without leaving any traces
It is recommended to fix the following
  • Zombie WordPress options were found after uninstall: 8 options
    • db_upgraded
    • can_compress_scripts
    • theysaidso_admin_options
    • widget_theysaidso_widget
    • bh_wp_autologin_urls_db_version
    • widget_recent-posts
    • widget_recent-comments
    • bh-wp-autologin-urls-last-logs-view-time

Smoke tests 75% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | A smoke test targeting server-side errors
Even though everything seems fine, this is not an exhaustive test

SRP 50% 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
The following issues need your attention
  • 179× GET requests to PHP files have triggered server-side errors or warnings (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Interface 'BrianHenryIE\\WP_Autologin_URLs\\Psr\\Http\\Message\\UriInterface' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/guzzlehttp/psr7/src/Uri.php:23
    • > PHP Fatal error
      Uncaught Error: Interface 'BrianHenryIE\\WP_Autologin_URLs\\Psr\\Http\\Client\\ClientExceptionInterface' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/psr/http-client/src/RequestExceptionInterface.php:20
    • > PHP Fatal error
      Uncaught Error: Class 'BrianHenryIE\\WP_Autologin_URLs\\WP_Private_Uploads\\API\\API' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/brianhenryie/bh-wp-private-uploads/src/class-private-uploads.php:25
    • > PHP Fatal error
      Uncaught Error: Class 'BrianHenryIE\\WP_Autologin_URLs\\GuzzleHttp\\Exception\\BadResponseException' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/guzzlehttp/guzzle/src/Exception/ServerException.php:14
    • > PHP Fatal error
      Uncaught Error: Interface 'Psr\\Log\\LoggerInterface' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/brianhenryie/bh-wp-logger/src/woocommerce/class-wc-psr-logger.php:32
    • > PHP Fatal error
      Uncaught Error: Interface 'BrianHenryIE\\WP_Autologin_URLs\\Klaviyo\\Model\\ModelInterface' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/klaviyo/sdk/lib/Model/PrivacyEmail.php:49
    • > PHP Fatal error
      Uncaught Error: Interface 'BrianHenryIE\\WP_Autologin_URLs\\Klaviyo\\Model\\ModelInterface' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/klaviyo/sdk/lib/Model/TrackPayloadCustomerProperties.php:49
    • > PHP Fatal error
      Uncaught Error: Class 'BrianHenryIE\\WP_Autologin_URLs\\Spatie\\Backtrace\\Arguments\\ReducedArgument\\ReducedArgument' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/spatie/backtrace/src/Arguments/ReducedArgument/VariadicReducedArgument.php:13
    • > PHP Fatal error
      Uncaught Error: Interface 'BrianHenryIE\\WP_Autologin_URLs\\Spatie\\Backtrace\\Arguments\\ReducedArgument\\ReducedArgumentContract' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/spatie/backtrace/src/Arguments/ReducedArgument/UnReducedArgument.php:11
    • > PHP Fatal error
      Uncaught Error: Interface 'BrianHenryIE\\WP_Autologin_URLs\\Klaviyo\\Model\\ModelInterface' not found in wp-content/plugins/bh-wp-autologin-urls/vendor-prefixed/klaviyo/sdk/lib/Model/RenderedTemplate.php:49

User-side errors Passed 1 test

🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
Everything seems fine, but this is not an exhaustive test

Optimizations

Plugin configuration 97% from 29 tests

readme.txt 94% from 16 tests

The readme.txt file uses markdown syntax to describe your plugin to the world
Attributes that require attention: You can take inspiration from this readme.txt

bh-wp-autologin-urls/bh-wp-autologin-urls.php Passed 13 tests

The main PHP file in "Magic Emails & Autologin URLs" ver. 2.3.0 adds more information about the plugin and also serves as the entry point for this plugin
44 characters long description:
Log in users via emails sent from WordPress.

Code Analysis Passed 3 tests

File types Passed 1 test

🔸 Test weight: 35 | Executable files are considered dangerous and should not be included with any WordPress plugin
There were no executable files found in this plugin36,495 lines of code in 338 files:
LanguageFilesBlank linesComment linesLines of code
PHP3248,79527,98535,697
JavaScript9173212631
CSS428798
Markdown132069

PHP code Passed 2 tests

This plugin's cyclomatic complexity and code structure detailed below
This plugin has no cyclomatic complexity issues
Cyclomatic complexity
Average complexity per logical line of code0.37
Average class complexity13.72
▷ Minimum class complexity1.00
▷ Maximum class complexity460.00
Average method complexity2.41
▷ Minimum method complexity1.00
▷ Maximum method complexity47.00
Code structure
Namespaces50
Interfaces48
Traits7
Classes254
▷ Abstract classes41.57%
▷ Concrete classes25098.43%
▷ Final classes4216.80%
Methods2,856
▷ Static methods49617.37%
▷ Public methods2,60391.14%
▷ Protected methods1123.92%
▷ Private methods1414.94%
Functions281
▷ Named functions217.47%
▷ Anonymous functions26092.53%
Constants221
▷ Global constants20.90%
▷ Class constants21999.10%
▷ Public constants20292.24%

Plugin size Passed 2 tests

Image compression Passed 2 tests

All PNG images should be compressed to minimize bandwidth usage for end users
PNG images were not found in this plugin