Benchmarks
Plugin footprint 63% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | All plugins must install correctly, without throwing any errors, warnings, or notices
This plugin's installer ran successfully
Server metrics [RAM: ▲6.49MB] [CPU: ▲61.75ms] 50% from 4 tests
A check of server-side resources used by WordPress Gallery Plugin - NextGEN Gallery
It is recommended to improve the following
- RAM: Try to keep total memory usage under 10MB (currently 10.74MB on /wp-admin/admin.php?page=nextgen-gallery-about-us)
- Extra RAM: Extra memory usage must be kept under 5MB (currently 6.49MB on /wp-admin/admin.php?page=nextgen-gallery-about-us)
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 7.31 ▲3.85 | 68.86 ▲27.91 |
Dashboard /wp-admin | 10.71 ▲7.37 | 162.68 ▲100.99 |
Posts /wp-admin/edit.php | 10.73 ▲7.37 | 116.55 ▲69.86 |
Add New Post /wp-admin/post-new.php | 13.41 ▲7.53 | 158.10 ▲58.79 |
Media Library /wp-admin/upload.php | 10.62 ▲7.39 | 121.79 ▲90.42 |
Extensions /wp-admin/admin.php?page=ngg_pro_upgrade | 10.69 | 125.28 |
Add Gallery / Images /wp-admin/admin.php?page=ngg_addgallery | 10.82 | 463.72 |
Overview /wp-admin/admin.php?page=nextgen-gallery | 10.66 | 96.16 |
Other Options /wp-admin/admin.php?page=ngg_other_options | 10.69 | 111.81 |
Manage Galleries /wp-admin/admin.php?page=nggallery-manage-gallery | 11.03 | 108.55 |
Gallery Settings /wp-admin/admin.php?page=ngg_display_settings | 11.75 | 172.47 |
Ecommerce /wp-admin/admin.php?page=nextgen-gallery-albums | 10.79 | 92.82 |
Manage Tags /wp-admin/admin.php?page=nggallery-tags | 10.74 | 90.92 |
Manage Albums /wp-admin/admin.php?page=nggallery-manage-album | 10.88 | 98.42 |
About Us /wp-admin/admin.php?page=nextgen-gallery-about-us | 10.74 | 89.36 |
Server storage [IO: ▲16.83MB] [DB: ▲0.04MB] 67% from 3 tests
How much does this plugin use your filesystem and database?
Please try to fix the following items
- Illegal file modification found: 21 files (0.00KB) outside of "wp-content/plugins/nextgen-gallery/" and "wp-content/uploads/"
- (new file) wp-content/gallery/.empty
- (new file) wp-content/ngg/modules/photocrati-attach_to_post/templates/.empty
- (new file) wp-content/ngg/modules/photocrati-frame_communication/static/.empty
- (new file) wp-content/ngg/modules/imagely-displaytype_admin/templates/.empty
- (new file) wp-content/ngg/modules/photocrati-marketing/static/.empty
- (new file) wp-content/ngg/modules/photocrati-marketing/templates/.empty
- (new file) wp-content/ngg/modules/photocrati-attach_to_post/static/.empty
- (new file) wp-content/ngg/modules/photocrati-ajax/static/.empty
- (new file) wp-content/ngg/modules/imagely-displaytype_admin/static/.empty
- (new file) wp-content/ngg/modules/photocrati-lightbox/static/.empty
- ...
Filesystem: 1,429 new files
Database: 3 new tables, 10 new options
New tables |
---|
wp_ngg_gallery |
wp_ngg_album |
wp_ngg_pictures |
New WordPress options |
---|
theysaidso_admin_options |
widget_recent-comments |
can_compress_scripts |
widget_ngg-mrssw |
ngg_transient_groups |
widget_slideshow |
widget_ngg-images |
widget_theysaidso_widget |
db_upgraded |
widget_recent-posts |
Browser metrics 75% from 4 tests
WordPress Gallery Plugin - NextGEN Gallery: an overview of browser usage
A great user experience is important, so you should focus on the following
- Script duration: Try to keep JavaScript execution under 1,500.00ms (currently 1,935.31ms on /wp-admin/admin.php?page=nextgen-gallery)
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,660 ▲898 | 24.04 ▲9.71 | 52.67 ▲50.98 | 37.14 ▼6.76 |
Dashboard /wp-admin | 2,735 ▲555 | 11.73 ▲6.10 | 352.22 ▲262.90 | 71.85 ▲32.60 |
Posts /wp-admin/edit.php | 2,974 ▲874 | 11.98 ▲10.05 | 236.91 ▲196.68 | 31.74 ▼7.37 |
Add New Post /wp-admin/post-new.php | 7,136 ▲5,610 | 35.89 ▲12.80 | 1,262.14 ▲629.42 | 39.38 ▼41.97 |
Media Library /wp-admin/upload.php | 2,279 ▲888 | 14.55 ▲10.37 | 305.75 ▲206.87 | 85.06 ▲45.00 |
Extensions /wp-admin/admin.php?page=ngg_pro_upgrade | 2,933 | 4.41 | 69.26 | 144.34 |
Add Gallery / Images /wp-admin/admin.php?page=ngg_addgallery | 2,235 | 7.10 | 114.84 | 174.83 |
Overview /wp-admin/admin.php?page=nextgen-gallery | 7,054 | 71.68 | 1,935.31 | 118.36 |
Other Options /wp-admin/admin.php?page=ngg_other_options | 5,035 | 5.87 | 105.15 | 105.08 |
Manage Galleries /wp-admin/admin.php?page=nggallery-manage-gallery | 2,387 | 9.70 | 281.66 | 96.94 |
Gallery Settings /wp-admin/admin.php?page=ngg_display_settings | 4,093 | 5.50 | 78.69 | 148.62 |
Ecommerce /wp-admin/admin.php?page=nextgen-gallery-albums | 3,742 | 7.11 | 148.68 | 105.24 |
Manage Tags /wp-admin/admin.php?page=nggallery-tags | 1,668 | 2.34 | 35.69 | 51.69 |
Manage Albums /wp-admin/admin.php?page=nggallery-manage-album | 1,696 | 2.59 | 44.70 | 56.00 |
About Us /wp-admin/admin.php?page=nextgen-gallery-about-us | 2,228 | 2.29 | 37.44 | 97.98 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.04MB] 50% from 4 tests
🔸 Tests weight: 35 | Verifying that this plugin uninstalls completely without leaving any traces
The following items require your attention
- Zombie tables detected upon uninstall: 3 tables
- wp_ngg_pictures
- wp_ngg_gallery
- wp_ngg_album
- The uninstall procedure has failed, leaving 10 options in the database
- can_compress_scripts
- widget_slideshow
- theysaidso_admin_options
- ngg_transient_groups
- widget_recent-posts
- db_upgraded
- widget_theysaidso_widget
- widget_ngg-mrssw
- widget_ngg-images
- widget_recent-comments
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 server-side errors were triggered
- > GET request to /wp-admin/admin.php?page=ngg_other_options
- > Notice in wp-includes/formatting.php+1104
Array to string conversion
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
Please fix the following
- 37× PHP files output text when accessed directly (only 10 are shown):
- > /wp-content/plugins/nextgen-gallery/src/Legacy/admin/showmeta.php
- > /wp-content/plugins/nextgen-gallery/templates/GalleryDisplay/Related.php
- > /wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/templates/image/after.php
- > /wp-content/plugins/nextgen-gallery/src/Legacy/view/album-compact.php
- > /wp-content/plugins/nextgen-gallery/vendor/imagely/pope-framework/lib/class.component_factory.php
- > /wp-content/plugins/nextgen-gallery/templates/Albums/breadcrumbs.php
- > /wp-content/plugins/nextgen-gallery/vendor/imagely/pope-framework/lib/class.base_product.php
- > /wp-content/plugins/nextgen-gallery/src/Legacy/view/gallery-caption.php
- > /wp-content/plugins/nextgen-gallery/templates/AttachToPost/preview_tab.php
- > /wp-content/plugins/nextgen-gallery/vendor/imagely/pope-framework/lib/interface.pope_module.php
- 453× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
- > PHP Notice
Undefined variable: i18n in wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/templates/update_legacy_featured_images_field.php on line 20
- > PHP Fatal error
Uncaught Error: Class 'Imagely\GG\\Display\\StaticAssets' not found in wp-content/plugins/nextgen-gallery/src/Display/StaticPopeAssets.php:8
- > PHP Fatal error
Uncaught Error: Class 'HTMLPurifier_HTMLModule' not found in wp-content/plugins/nextgen-gallery/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoreferrer.php:7
- > PHP Fatal error
Uncaught Error: Class 'HTMLPurifier_AttrTransform' not found in wp-content/plugins/nextgen-gallery/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Input.php:7
- > PHP Fatal error
Uncaught Error: Class 'lsolesen\\pel\\PelException' not found in wp-content/plugins/nextgen-gallery/lib/pel-0.9.9/src/PelEntryException.php:49
- > PHP Fatal error
Uncaught Error: Class 'HTMLPurifier_AttrTransform' not found in wp-content/plugins/nextgen-gallery/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoreferrer.php:12
- > PHP Fatal error
Uncaught Error: Class 'HTMLPurifier_Filter' not found in wp-content/plugins/nextgen-gallery/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php:25
- > PHP Fatal error
Uncaught Error: Class 'HTMLPurifier_AttrDef' not found in wp-content/plugins/nextgen-gallery/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Filter.php:8
- > PHP Fatal error
Uncaught Error: Class 'Imagely\GG\\DisplayType\\Controller' not found in wp-content/plugins/nextgen-gallery/src/DisplayTypes/Albums/SharedController.php:17
- > PHP Fatal error
Uncaught Error: Call to undefined function esc_attr() in wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/displaytype_admin/templates/nextgen_basic_singlepic_settings_quality.php:3
- > PHP Notice
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a shallow check for browser errors
There were no browser issues found
Optimizations
Plugin configuration 86% from 29 tests
readme.txt 94% from 16 tests
Perhaps the most important file in your plugin readme.txt gets parsed in order to generate the public listing of your plugin
Attributes that need to be fixed:
- Tags: Too many tags (12 tag instead of maximum 10); only the first 5 tags are used in your directory listing
nextgen-gallery/nggallery.php 77% from 13 tests
The main PHP file in "WordPress Gallery Plugin - NextGEN Gallery" ver. 3.54 adds more information about the plugin and also serves as the entry point for this plugin
It is important to fix the following:
- Main file name: Even though not officially enforced, the main plugin file should be the same as the plugin slug ("nextgen-gallery.php" instead of "nggallery.php")
- Text Domain: If you choose to specify the text domain, it must be the same as the plugin slug; optional since WordPress version 4.6
- Domain Path: Use only dashes and lowercase characters for the domain path ("/static/I18N/")
Code Analysis 97% from 3 tests
File types Passed 1 test
🔸 Test weight: 35 | A short glimpse at programming languages used with this plugin and a check that no dangerous files are present
There were no executable files found in this plugin139,130 lines of code in 1,066 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 620 | 12,631 | 35,500 | 73,237 |
JavaScript | 261 | 6,980 | 2,431 | 27,372 |
CSS | 127 | 1,714 | 486 | 18,241 |
SVG | 27 | 1 | 0 | 9,875 |
PO File | 9 | 4,150 | 7,229 | 8,023 |
Sass | 7 | 97 | 5 | 1,369 |
Markdown | 3 | 115 | 0 | 362 |
JSX | 4 | 56 | 3 | 275 |
JSON | 4 | 0 | 0 | 210 |
LESS | 1 | 11 | 5 | 152 |
Ruby | 1 | 2 | 0 | 8 |
XML | 1 | 0 | 0 | 5 |
INI | 1 | 1 | 1 | 1 |
PHP code 50% from 2 tests
An overview of cyclomatic complexity and code structure
The following items need your attention
- Method cyclomatic complexity has to be reduced to less than 100 (currently 643)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.43 |
Average class complexity | 20.06 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 643.00 |
Average method complexity | 4.25 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 643.00 |
Code structure | ||
---|---|---|
Namespaces | 25 | |
Interfaces | 4 | |
Traits | 1 | |
Classes | 585 | |
▷ Abstract classes | 30 | 5.13% |
▷ Concrete classes | 555 | 94.87% |
▷ Final classes | 0 | 0.00% |
Methods | 3,493 | |
▷ Static methods | 392 | 11.22% |
▷ Public methods | 3,286 | 94.07% |
▷ Protected methods | 106 | 3.03% |
▷ Private methods | 101 | 2.89% |
Functions | 74 | |
▷ Named functions | 40 | 54.05% |
▷ Anonymous functions | 34 | 45.95% |
Constants | 919 | |
▷ Global constants | 136 | 14.80% |
▷ Class constants | 783 | 85.20% |
▷ Public constants | 778 | 99.36% |
Plugin size 50% from 2 tests
Image compression 50% from 2 tests
PNG files should be compressed to save space and minimize bandwidth usage
99 PNG files occupy 0.56MB with 0.11MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
static/Lightbox/fancybox/fancy_title_main.png | 0.09KB | 0.14KB | 0.00% |
products/photocrati_nextgen/modules/nextgen_admin/static/jquery-ui/images/ui-icons_cccccc_256x240.png | 6.81KB | 4.17KB | ▼ 38.71% |
static/Lightbox/fancybox/fancy_shadow_nw.png | 0.32KB | 0.47KB | 0.00% |
products/photocrati_nextgen/modules/nextgen_admin/static/jquery-ui/images/ui-bg_flat_0_fff_40x100.png | 0.20KB | 0.08KB | ▼ 58.17% |
products/photocrati_nextgen/modules/nextgen_admin/static/select2/select2.png | 0.60KB | 0.99KB | 0.00% |