Benchmarks
Plugin footprint 40% from 16 tests
Installer 0% from 1 test
🔺 Critical test (weight: 50) | Verifying that this plugin installs correctly without errors
It is recommended to fix the following installer errors
- Install procedure had errors
- > Notice in wp-content/plugins/content4subscribers/content4subscribers.php+11
Constant WP_DEBUG already defined
Server metrics [RAM: ▼1.74MB] [CPU: ▼214.47ms] Passed 4 tests
Analyzing server-side resources used by Content4Subscribers
This plugin has minimal impact on server resources
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 1.89 ▼0.83 | 9.58 ▼10.91 |
Dashboard /wp-admin | 1.91 ▼1.14 | 6.32 ▼35.67 |
Posts /wp-admin/edit.php | 1.91 ▼1.19 | 5.97 ▼35.24 |
Add New Post /wp-admin/post-new.php | 1.91 ▼3.52 | 5.37 ▼755.89 |
Media Library /wp-admin/upload.php | 1.91 ▼1.10 | 6.54 ▼31.06 |
Content 4 Subscribers Settings /wp-admin/options-general.php?page=c4s | 1.91 | 5.91 |
Server storage [IO: ▲0.42MB] [DB: ▲0.00MB] Passed 3 tests
Analyzing filesystem and database footprints of this plugin
This plugin was installed successfully
Filesystem: 93 new files
Database: no new tables, 3 new options
New WordPress options |
---|
c4s |
widget_login-widget |
widget_signup-widget |
Browser metrics Passed 4 tests
Content4Subscribers: an overview of browser usage
This plugin renders optimally with no browser resource issues detected
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,820 ▲214 | 16.48 ▲0.61 | 10.69 ▲3.03 | 48.63 ▼0.56 |
Dashboard /wp-admin | 2,979 ▲45 | 5.89 ▼0.06 | 136.97 ▼10.17 | 117.74 ▲13.67 |
Posts /wp-admin/edit.php | 2,748 ▲9 | 2.69 ▼0.01 | 66.77 ▲0.01 | 95.00 ▲10.78 |
Add New Post /wp-admin/post-new.php | 1,613 ▲115 | 18.64 ▼0.36 | 363.31 ▲1.13 | 111.12 ▲2.03 |
Media Library /wp-admin/upload.php | 1,816 ▲9 | 4.98 ▼0.02 | 165.67 ▲7.52 | 112.41 ▼13.61 |
Content 4 Subscribers Settings /wp-admin/options-general.php?page=c4s | 1,277 | 2.25 | 52.95 | 69.74 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 50% from 4 tests
🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
You still need to fix the following
- This plugin cannot be uninstalled
- > Notice in wp-content/plugins/content4subscribers/content4subscribers.php+11
Constant WP_DEBUG already defined
- Zombie WordPress options were found after uninstall: 3 options
- widget_login-widget
- c4s
- widget_signup-widget
Smoke tests 25% from 4 tests
Server-side errors 0% from 1 test
🔹 Test weight: 20 | A smoke test targeting server-side errors
These errors were triggered by the plugin
- > GET request to /wp-admin/options-general.php?page=c4s
- > Notice in wp-content/plugins/content4subscribers/content4subscribers.php+11
Constant WP_DEBUG already defined
- > GET request to /wp-admin/options-general.php?page=c4s
- > Deprecated in wp-content/plugins/content4subscribers/includes/widgets/login.php+26
Methods with the same name as their class will not be constructors in a future version of PHP; Login_Widget has a deprecated constructor
- > GET request to /wp-admin/options-general.php?page=c4s
- > Deprecated in wp-content/plugins/content4subscribers/includes/widgets/signup.php+26
Methods with the same name as their class will not be constructors in a future version of PHP; Signup_Widget has a deprecated constructor
- > GET request to /wp-admin/options-general.php?page=c4s
- > User deprecated in wp-includes/functions.php+5304
The called constructor method for WP_Widget in Login_Widget is deprecated since version 4.3.0! Use __construct() instead.
- > GET request to /wp-admin/options-general.php?page=c4s
- > User deprecated in wp-includes/functions.php+5304
The called constructor method for WP_Widget in Signup_Widget is deprecated since version 4.3.0! Use __construct() instead.
- > GET request to /wp-admin/options-general.php?page=c4s
- > User deprecated in wp-includes/functions.php+5221
screen_icon is deprecated since version 3.8.0 with no alternative available.
- > GET request to /wp-admin/options-general.php?page=c4s
- > User deprecated in wp-includes/functions.php+5221
get_screen_icon is deprecated since version 3.8.0 with no alternative available.
- > GET request to /wp-admin/options-general.php?page=c4s
- > Notice in wp-content/plugins/content4subscribers/includes/admin.php+41
Undefined index: cr_apikey
- > GET request to /wp-admin/options-general.php?page=c4s
- > Notice in wp-content/plugins/content4subscribers/includes/admin.php+62
Undefined index: mc_apikey
SRP 0% from 2 tests
🔹 Tests weight: 20 | A shallow check of the single-responsibility principle; PHP files should perform no action - including output of placeholder text - and trigger no errors when accessed directly
Please take a closer look at the following
- 1× GET requests to PHP files return non-empty strings:
- > /wp-content/plugins/content4subscribers/templates/widget_login_confirm.php
- 69× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
- > PHP Warning
require_once(aweber_api/aweber_api.php): failed to open stream: No such file or directory in wp-content/plugins/content4subscribers/includes/classes/aweber/tests/AWeberCollectionFindTest.php on line 2
- > PHP Notice
Undefined variable: attr in wp-content/plugins/content4subscribers/templates/signup.php on line 19
- > PHP Warning
require_once(aweber_api/aweber_api.php): failed to open stream: No such file or directory in wp-content/plugins/content4subscribers/includes/classes/aweber/tests/AWeberCollectionTest.php on line 2
- > PHP Fatal error
Uncaught Error: Call to undefined function _e() in wp-content/plugins/content4subscribers/templates/signup.php:24
- > PHP Notice
Undefined variable: attr in wp-content/plugins/content4subscribers/templates/widget_signup.php on line 19
- > PHP Fatal error
Uncaught Error: Class 'OAuthApplication' not found in wp-content/plugins/content4subscribers/includes/classes/aweber/tests/mock_adapter.php:54
- > PHP Warning
require_once(aweber_api/aweber_api.php): failed to open stream: No such file or directory in wp-content/plugins/content4subscribers/includes/classes/aweber/tests/AWeberCreateEntryTest.php on line 2
- > PHP Notice
Undefined variable: attr in wp-content/plugins/content4subscribers/templates/widget_signup.php on line 16
- > PHP Fatal error
Uncaught Error: Call to undefined function _e() in wp-content/plugins/content4subscribers/templates/widget_login.php:22
- > PHP Fatal error
require_once(): Failed opening required 'aweber_api/aweber_api.php' (include_path='.:/usr/share/php') in wp-content/plugins/content4subscribers/includes/classes/aweber/tests/AWeberCreateEntryTest.php on line 2
- > PHP Warning
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a shallow check for browser errors
No browser issues were found
Optimizations
Plugin configuration Passed 29 tests
readme.txt Passed 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
5 plugin tags: email, email marketing, mailchimp, cleverreach, marketing
content4subscribers/content4subscribers.php Passed 13 tests
The primary PHP file in "Content4Subscribers" version 1.1 is used by WordPress to initiate all plugin functionality
83 characters long description:
Encourage readers to subscribe to your newsletter in order to see your blog-content
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | Executable files are not allowed as they can serve as attack vectors
Everything looks great! No dangerous files found in this plugin3,086 lines of code in 72 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 36 | 591 | 1,184 | 2,599 |
Ant | 1 | 18 | 0 | 131 |
Markdown | 1 | 50 | 0 | 116 |
PO File | 1 | 32 | 58 | 99 |
CSS | 2 | 13 | 3 | 70 |
XML | 3 | 5 | 4 | 35 |
JSON | 27 | 0 | 0 | 27 |
YAML | 1 | 3 | 0 | 9 |
PHP code Passed 2 tests
A brief analysis of cyclomatic complexity and code structure for this plugin
No complexity issues detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.19 |
Average class complexity | 3.93 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 40.00 |
Average method complexity | 1.58 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 11.00 |
Code structure | ||
---|---|---|
Namespaces | 0 | |
Interfaces | 2 | |
Traits | 0 | |
Classes | 42 | |
▷ Abstract classes | 1 | 2.38% |
▷ Concrete classes | 41 | 97.62% |
▷ Final classes | 0 | 0.00% |
Methods | 232 | |
▷ Static methods | 3 | 1.29% |
▷ Public methods | 211 | 90.95% |
▷ Protected methods | 19 | 8.19% |
▷ Private methods | 2 | 0.86% |
Functions | 17 | |
▷ Named functions | 17 | 100.00% |
▷ Anonymous functions | 0 | 0.00% |
Constants | 3 | |
▷ Global constants | 3 | 100.00% |
▷ Class constants | 0 | 0.00% |
▷ Public constants | 0 | 0.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
PNG files should be compressed to save space and minimize bandwidth usage
14 PNG files occupy 0.12MB with 0.06MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
img/mailchimp3.png | 7.93KB | 3.94KB | ▼ 50.28% |
img/mailchimp7.png | 19.20KB | 9.02KB | ▼ 53.03% |
img/mailchimp2.png | 7.84KB | 3.87KB | ▼ 50.63% |
img/mailchimp6.png | 7.11KB | 4.23KB | ▼ 40.45% |
img/unlock.png | 7.42KB | 3.42KB | ▼ 53.99% |