Benchmarks
Plugin footprint 64% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | The install procedure must perform silently
Install script ran successfully
Server metrics [RAM: ▲2.17MB] [CPU: ▲17.38ms] 75% from 4 tests
This is a short check of server-side resources used by Gmedia Photo Gallery
Please have a look at the following items
- CPU: The total CPU usage must kept under 500.00ms (currently 2,976.76ms on /wp-admin/admin.php?page=GrandMedia_Modules)
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 5.37 ▲1.87 | 57.96 ▲15.17 |
Dashboard /wp-admin | 5.62 ▲2.28 | 69.25 ▲15.80 |
Posts /wp-admin/edit.php | 5.75 ▲2.35 | 71.31 ▲19.43 |
Add New Post /wp-admin/post-new.php | 8.23 ▲2.30 | 125.15 ▲36.11 |
Media Library /wp-admin/upload.php | 5.52 ▲2.25 | 58.27 ▲19.11 |
Galleries /wp-admin/admin.php?page=GrandMedia_Galleries | 5.63 | 57.84 |
Gmedia Library /wp-admin/admin.php?page=GrandMedia | 5.96 | 58.61 |
Albums /wp-admin/admin.php?page=GrandMedia_Albums | 5.88 | 61.90 |
Modules /wp-admin/admin.php?page=GrandMedia_Modules | 5.73 | 2,976.76 |
Gmedia Logs /wp-admin/admin.php?page=GrandMedia_Logs | 5.60 | 52.87 |
Categories /wp-admin/admin.php?page=GrandMedia_Categories | 5.87 | 59.19 |
Tags /wp-admin/admin.php?page=GrandMedia_Tags | 5.64 | 54.67 |
Settings /wp-admin/admin.php?page=GrandMedia_Settings | 5.65 | 53.71 |
Add/Import Files /wp-admin/admin.php?page=GrandMedia_AddMedia | 5.54 | 54.77 |
WP Media Library /wp-admin/admin.php?page=GrandMedia_WordpressLibrary | 5.61 | 64.04 |
Server storage [IO: ▲9.48MB] [DB: ▲0.02MB] 67% from 3 tests
Analyzing filesystem and database footprints of this plugin
Please try to fix the following items
- The plugin illegally modified 7 files (0.00KB) outside of "wp-content/plugins/grand-media/" and "wp-content/uploads/"
- (new file) wp-content/grand-media/text/.empty
- (new file) wp-content/grand-media/image/thumb/.empty
- (new file) wp-content/grand-media/module/.empty
- (new file) wp-content/grand-media/audio/.empty
- (new file) wp-content/grand-media/image/original/.empty
- (new file) wp-content/grand-media/video/.empty
- (new file) wp-content/grand-media/application/.empty
Filesystem: 374 new files
Database: 6 new tables, 12 new options
New tables |
---|
wp_gmedia |
wp_gmedia_term_meta |
wp_gmedia_term |
wp_gmedia_term_relationships |
wp_gmedia_meta |
wp_gmedia_log |
New WordPress options |
---|
gmediaVersion |
theysaidso_admin_options |
gmediaDbVersion |
gmediaOptions |
db_upgraded |
GmediaHashID_salt |
widget_recent-posts |
widget_theysaidso_widget |
can_compress_scripts |
widget_gmedia_album_widget |
... |
Browser metrics Passed 4 tests
This is an overview of browser requirements for Gmedia Photo Gallery
Normal browser usage
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,013 ▲252 | 13.39 ▼0.96 | 10.13 ▲8.45 | 41.36 ▼3.71 |
Dashboard /wp-admin | 2,308 ▲134 | 5.56 ▼0.11 | 101.25 ▲8.70 | 38.21 ▼1.57 |
Posts /wp-admin/edit.php | 2,219 ▲119 | 2.12 ▲0.16 | 51.59 ▲6.84 | 35.48 ▼6.11 |
Add New Post /wp-admin/post-new.php | 1,670 ▲144 | 20.35 ▼3.34 | 654.94 ▼48.50 | 55.60 ▼1.08 |
Media Library /wp-admin/upload.php | 1,512 ▲109 | 4.31 ▲0.08 | 105.32 ▲1.15 | 43.51 ▼2.75 |
Galleries /wp-admin/admin.php?page=GrandMedia_Galleries | 1,857 | 3.80 | 114.42 | 104.70 |
Gmedia Library /wp-admin/admin.php?page=GrandMedia | 2,076 | 4.16 | 104.95 | 45.79 |
Albums /wp-admin/admin.php?page=GrandMedia_Albums | 2,024 | 4.34 | 90.47 | 65.54 |
Modules /wp-admin/admin.php?page=GrandMedia_Modules | 2,900 | 3.75 | 79.17 | 65.41 |
Gmedia Logs /wp-admin/admin.php?page=GrandMedia_Logs | 1,599 | 3.79 | 84.44 | 39.75 |
Categories /wp-admin/admin.php?page=GrandMedia_Categories | 1,971 | 4.33 | 89.66 | 51.68 |
Tags /wp-admin/admin.php?page=GrandMedia_Tags | 1,684 | 3.83 | 83.77 | 44.64 |
Settings /wp-admin/admin.php?page=GrandMedia_Settings | 3,019 | 3.78 | 84.92 | 44.97 |
Add/Import Files /wp-admin/admin.php?page=GrandMedia_AddMedia | 1,840 | 4.42 | 108.31 | 56.52 |
WP Media Library /wp-admin/admin.php?page=GrandMedia_WordpressLibrary | 1,709 | 3.81 | 89.42 | 41.02 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 50% from 4 tests
🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
The following items require your attention
- The plugin did not uninstall successfully, leaving 6 tables in the database
- wp_gmedia_term_meta
- wp_gmedia
- wp_gmedia_meta
- wp_gmedia_term
- wp_gmedia_term_relationships
- wp_gmedia_log
- Zombie WordPress options were found after uninstall: 8 options
- widget_theysaidso_widget
- db_upgraded
- theysaidso_admin_options
- can_compress_scripts
- widget_recent-comments
- widget_gmedia_album_widget
- widget_gmedia_gallery_widget
- widget_recent-posts
Smoke tests 0% from 4 tests
Server-side errors 0% from 1 test
🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Almost there, just fix the following server-side errors
- > GET request to /wp-admin/admin.php?page=GrandMedia_Modules
- > Notice in wp-content/plugins/grand-media/admin/pages/modules/functions.php+52
Undefined index: status
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 items
- 70× PHP files output non-empty strings when accessed directly via GET requests (only 10 are shown):
- > /wp-content/plugins/grand-media/inc/core.php
- > /wp-content/plugins/grand-media/admin/pages/terms/tpl/album-list-item.php
- > /wp-content/plugins/grand-media/admin/pages/galleries/tpl/gallery-edit-item.php
- > /wp-content/plugins/grand-media/admin/pages/library/tpl/grid-item.php
- > /wp-content/plugins/grand-media/admin/pages/modules/tpl/modal-modulezip.php
- > /wp-content/plugins/grand-media/config/setup.php
- > /wp-content/plugins/grand-media/admin/pages/galleries/galleries.php
- > /wp-content/plugins/grand-media/admin/pages/settings/tpl/roles.php
- > /wp-content/plugins/grand-media/admin/pages/modules/edit-preset.php
- > /wp-content/plugins/grand-media/admin/pages/terms/tpl/album-create-item.php
- 65× GET requests to PHP files have triggered server-side errors or warnings (only 10 are shown):
- > PHP Notice
Undefined variable: settings in wp-content/plugins/grand-media/module/wp-videoplayer/init.php on line 13
- > PHP Fatal error
Uncaught Error: Call to undefined function get_gmedia_header() in wp-content/plugins/grand-media/template/single.php:1
- > PHP Fatal error
Uncaught Error: Call to undefined function sanitize_text_field() in wp-content/plugins/grand-media/module/amron/init.php:4
- > PHP Fatal error
Uncaught Error: Class 'GmediaProcessor' not found in wp-content/plugins/grand-media/admin/processor/class.processor.modules.php:6
- > PHP Warning
Use of undefined constant GMEDIA_ABSPATH - assumed 'GMEDIA_ABSPATH' (this will throw an Error in a future version of PHP) in wp-content/plugins/grand-media/admin/class.processor.php on line 120
- > PHP Fatal error
Uncaught Error: Class 'lsolesen\\pel\\PelEntryNumber' not found in wp-content/plugins/grand-media/inc/pel/PelEntryByte.php:50
- > PHP Fatal error
Uncaught Error: Class 'lsolesen\\pel\\PelEntryAscii' not found in wp-content/plugins/grand-media/inc/pel/PelEntryTime.php:52
- > PHP Fatal error
Uncaught Error: Call to undefined function sanitize_text_field() in wp-content/plugins/grand-media/module/jq-mplayer/init.php:16
- > PHP Fatal error
Uncaught Error: Class 'GmediaProcessor' not found in wp-content/plugins/grand-media/admin/processor/class.processor.addmedia.php:6
- > PHP Fatal error
Uncaught Error: Call to undefined function add_action() in wp-content/plugins/grand-media/admin/pages/terms/functions.php:118
- > PHP Notice
User-side errors 0% from 1 test
🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
Please fix the following browser errors
- 10 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=GrandMedia_WordpressLibrary
- > Console-api (severe) in unknown
https://platform.twitter.com/widgets.js 0:11500 "Error: This Timeline type is no longer supported (Likes, Collections, & Moments). \n\t" "* Twitter still supports Profile and List Timelines \n\t" "* You can learn more about this change in our announcement: \n\t" "https://twittercommunity.com/t/removing-support-for-embedded-like-collection-and-moment-timelines/150313 \n\t" "* In order to create a new Embedded Timeline, visit: https://publish.twitter.com"
Optimizations
Plugin configuration Passed 29 tests
readme.txt Passed 16 tests
Don't ignore readme.txt as it is the file that instructs WordPress.org on how to present your plugin to the world
5 plugin tags: best gallery plugin, image gallery, wordpress gallery plugin, gallery, photo gallery
grand-media/grand-media.php Passed 13 tests
The principal PHP file in "Gmedia Photo Gallery" v. 1.22.0 is loaded by WordPress automatically on each request
99 characters long description:
Gmedia Gallery - powerful media library plugin for creating beautiful galleries and managing files.
Code Analysis 97% from 3 tests
File types Passed 1 test
🔸 Test weight: 35 | This is a short overview of programming languages used in this plugin, detecting executable files
Good job! No executable or dangerous file extensions detected82,771 lines of code in 223 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 159 | 4,411 | 11,142 | 32,236 |
JavaScript | 40 | 5,773 | 3,984 | 30,865 |
CSS | 24 | 4,830 | 249 | 19,670 |
PHP code 50% from 2 tests
A brief analysis of cyclomatic complexity and code structure for this plugin
It is recommended to fix the following
- Cyclomatic complexity of methods should be reduced to less than 100 (currently 185)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.39 |
Average class complexity | 43.55 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 723.00 |
Average method complexity | 6.48 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 185.00 |
Code structure | ||
---|---|---|
Namespaces | 1 | |
Interfaces | 0 | |
Traits | 0 | |
Classes | 64 | |
▷ Abstract classes | 3 | 4.69% |
▷ Concrete classes | 61 | 95.31% |
▷ Final classes | 0 | 0.00% |
Methods | 495 | |
▷ Static methods | 62 | 12.53% |
▷ Public methods | 457 | 92.32% |
▷ Protected methods | 17 | 3.43% |
▷ Private methods | 21 | 4.24% |
Functions | 159 | |
▷ Named functions | 149 | 93.71% |
▷ Anonymous functions | 10 | 6.29% |
Constants | 382 | |
▷ Global constants | 8 | 2.09% |
▷ Class constants | 374 | 97.91% |
▷ Public constants | 369 | 98.66% |
Plugin size 50% from 2 tests
Image compression 50% from 2 tests
Using a strong compression for your PNG files is a great way to speed-up your plugin
103 PNG files occupy 0.58MB with 0.18MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
admin/assets/img/application.png | 5.83KB | 3.53KB | ▼ 39.45% |
assets/photoswipe/images/icons@2x.png | 8.00KB | 5.50KB | ▼ 31.25% |
assets/image-editor/img/ui-slider.png | 0.41KB | 0.29KB | ▼ 28.19% |
module/jq-mplayer/img/player-pause.png | 0.16KB | 0.17KB | 0.00% |
module/wp-videoplayer/screenshot.png | 87.92KB | 36.74KB | ▼ 58.21% |