Benchmarks
Plugin footprint 47% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | The install procedure must perform silently
Install script ran successfully
Server metrics [RAM: ▲10.40MB] [CPU: ▲101.34ms] 50% from 4 tests
This is a short check of server-side resources used by LifterLMS - WordPress LMS Plugin for eLearning
Please have a look at the following items
- RAM: You should keep total memory usage under 10MB (currently 13.49MB on /wp-admin/edit.php?post_type=llms_engagement)
- Extra RAM: Extra memory usage should kept under 5MB (currently 10.40MB on /wp-admin/edit.php?post_type=llms_engagement)
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 11.69 ▲8.23 | 120.74 ▲72.46 |
Dashboard /wp-admin | 16.45 ▲13.11 | 213.66 ▲147.88 |
Posts /wp-admin/edit.php | 13.54 ▲10.18 | 149.98 ▲104.25 |
Add New Post /wp-admin/post-new.php | 19.17 ▲13.29 | 204.51 ▲112.56 |
Media Library /wp-admin/upload.php | 13.31 ▲10.08 | 148.10 ▲116.10 |
Settings /wp-admin/admin.php?page=llms-settings | 13.85 | 128.86 |
Awarded Certificates /wp-admin/edit.php?post_type=llms_my_certificate | 13.52 | 135.33 |
Scheduled Actions /wp-admin/tools.php?page=action-scheduler | 13.47 | 122.17 |
Forms /wp-admin/edit.php?post_type=llms_form | 13.60 | 158.99 |
Awarded Achievements /wp-admin/edit.php?post_type=llms_my_achievement | 13.49 | 119.82 |
Lessons /wp-admin/edit.php?post_type=lesson | 13.49 | 118.03 |
Orders /wp-admin/edit.php?post_type=llms_order | 13.49 | 118.41 |
Categories /wp-admin/edit-tags.php?taxonomy=membership_cat&post_type=llms_membership | 13.33 | 110.80 |
Courses /wp-admin/edit.php?post_type=course | 13.49 | 117.63 |
Engagements /wp-admin/edit.php?post_type=llms_engagement | 13.49 | 122.38 |
Server storage [IO: ▲17.91MB] [DB: ▲1.05MB] Passed 3 tests
A short overview of filesystem and database impact
This plugin installed successfully
Filesystem: 1,408 new files
Database: 15 new tables, 62 new options
New tables |
---|
wp_lifterlms_events |
wp_actionscheduler_groups |
wp_actionscheduler_claims |
wp_lifterlms_notifications |
wp_lifterlms_product_to_voucher |
wp_lifterlms_sessions |
wp_actionscheduler_logs |
wp_actionscheduler_actions |
wp_lifterlms_api_keys |
wp_lifterlms_quiz_attempts |
... |
New WordPress options |
---|
lifterlms_country |
llms_forms_username_locations |
lifterlms_myaccount_redeem_vouchers_endpoint |
lifterlms_decimal_separator |
lifterlms_myaccount_orders_endpoint |
llms_grant_site_access |
widget_theysaidso_widget |
lifterlms_myaccount_achievements_endpoint |
llms_site_url |
lifterlms_memberships_ordering |
... |
Browser metrics Passed 4 tests
An overview of browser requirements for LifterLMS - WordPress LMS Plugin for eLearning
Normal browser usage
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,645 ▲883 | 18.89 ▲4.61 | 15.30 ▲13.58 | 33.49 ▼11.54 |
Dashboard /wp-admin | 2,863 ▲686 | 8.96 ▲3.41 | 167.04 ▲65.83 | 50.59 ▲7.70 |
Posts /wp-admin/edit.php | 2,591 ▲491 | 3.96 ▲1.94 | 95.06 ▲58.68 | 34.85 ▼0.71 |
Add New Post /wp-admin/post-new.php | 1,898 ▲372 | 19.32 ▼3.84 | 938.72 ▲215.38 | 43.74 ▼15.01 |
Media Library /wp-admin/upload.php | 1,701 ▲304 | 4.22 ▼0.05 | 100.84 ▼9.85 | 45.59 ▼3.07 |
Settings /wp-admin/admin.php?page=llms-settings | 1,605 | 3.87 | 61.04 | 105.44 |
Awarded Certificates /wp-admin/edit.php?post_type=llms_my_certificate | 1,811 | 12.17 | 218.32 | 139.79 |
Scheduled Actions /wp-admin/tools.php?page=action-scheduler | 1,553 | 1.79 | 30.07 | 29.22 |
Forms /wp-admin/edit.php?post_type=llms_form | 2,274 | 3.92 | 56.03 | 66.67 |
Awarded Achievements /wp-admin/edit.php?post_type=llms_my_achievement | 1,689 | 4.05 | 67.50 | 85.01 |
Lessons /wp-admin/edit.php?post_type=lesson | 1,707 | 3.83 | 68.49 | 83.60 |
Orders /wp-admin/edit.php?post_type=llms_order | 1,650 | 3.55 | 58.67 | 82.90 |
Categories /wp-admin/edit-tags.php?taxonomy=membership_cat&post_type=llms_membership | 1,764 | 3.82 | 50.70 | 33.75 |
Courses /wp-admin/edit.php?post_type=course | 1,700 | 3.87 | 53.14 | 85.77 |
Engagements /wp-admin/edit.php?post_type=llms_engagement | 1,614 | 3.81 | 62.21 | 87.49 |
Uninstaller [IO: ▲0.00MB] [DB: ▲1.05MB] 25% from 4 tests
🔸 Tests weight: 35 | It is important to correctly uninstall your plugin, without leaving any traces
The following items require your attention
- Uninstall procedure validation failed for this plugin
- > Error in wp-content/plugins/lifterlms/includes/admin/llms.functions.admin.php+154
Uncaught Error: Class 'LLMS_Dot_Com_API' not found in wp-content/plugins/lifterlms/includes/admin/llms.functions.admin.php:154
Stack trace:
#0 wp-content/plugins/lifterlms/libraries/lifterlms-helper/includes/class-llms-helper-upgrader.php(259): llms_get_add_ons()
#1 wp-includes/class-wp-hook.php(312): LLMS_Helper_Upgrader->pre_set_site_transient_update_things()
#2 wp-includes/plugin.php(205): WP_Hook->apply_filters()
#3 wp-includes/option.php(2053): apply_filters()
#4 wp-admin/includes/plugin.php(1031): set_site_transient() - Zombie tables detected upon uninstall: 15 tables
- wp_lifterlms_quiz_attempts
- wp_lifterlms_sessions
- wp_lifterlms_notifications
- wp_actionscheduler_logs
- wp_lifterlms_events_open_sessions
- wp_lifterlms_api_keys
- wp_lifterlms_webhooks
- wp_actionscheduler_groups
- wp_actionscheduler_actions
- wp_lifterlms_user_postmeta
- ...
- Zombie WordPress options were found after uninstall: 64 options
- lifterlms_current_version
- llms_review
- lifterlms_myaccount_achievements_endpoint
- lifterlms_prevent_concurrent_logins
- llms_rest_version
- lifterlms_prevent_concurrent_logins_roles
- lifterlms_myaccount_courses_in_progress_sorting
- action_scheduler_hybrid_store_demarkation
- llms_admin_notices
- action_scheduler_migration_status
- ...
Smoke tests 75% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | A smoke test targeting server-side errors
Good news, no errors were detected
SRP 50% 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 take a closer look at the following
- 63× PHP files trigger server errors when accessed directly (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Class 'ActionScheduler_Action' not found in wp-content/plugins/lifterlms/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_NullAction.php:6
- > PHP Warning
require_once(ABSPATHwp-admin/includes/class-wp-list-table.php): failed to open stream: No such file or directory in wp-content/plugins/lifterlms/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php on line 4
- > PHP Fatal error
Uncaught Error: Class 'Action_Scheduler\\Migration\\LogMigrator' not found in wp-content/plugins/lifterlms/vendor/woocommerce/action-scheduler/classes/migration/DryRun_LogMigrator.php:13
- > PHP Fatal error
Uncaught Error: Interface 'ActionScheduler_Exception' not found in wp-content/plugins/lifterlms/vendor/woocommerce/action-scheduler/classes/ActionScheduler_InvalidActionException.php:10
- > PHP Fatal error
Uncaught Error: Class 'CronExpression_AbstractField' not found in wp-content/plugins/lifterlms/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_DayOfWeekField.php:18
- > PHP Fatal error
Uncaught Error: Class 'WP_CLI_Command' not found in wp-content/plugins/lifterlms/vendor/woocommerce/action-scheduler/classes/WP_CLI/Migration_Command.php:22
- > PHP Fatal error
Uncaught Error: Class 'ActionScheduler_Abstract_RecurringSchedule' not found in wp-content/plugins/lifterlms/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_CronSchedule.php:6
- > PHP Fatal error
Uncaught Error: Call to undefined function get_post_type_object() in wp-content/plugins/lifterlms/includes/admin/views/builder/section.php:16
- > PHP Fatal error
Uncaught Error: Class 'ActionScheduler_DBStore' not found in wp-content/plugins/lifterlms/vendor/woocommerce/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php:10
- > PHP Fatal error
Uncaught Error: Class 'ActionScheduler_Logger' not found in wp-content/plugins/lifterlms/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBLogger.php:10
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
Everything seems fine, but this is not an exhaustive test
Optimizations
Plugin configuration 97% from 29 tests
readme.txt 94% from 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
Attributes that need to be fixed:
- Screenshots: Please add descriptions for these screenshots #10, #11, #12, #13, #14 in lifterlms/assets to your readme.txt
lifterlms/lifterlms.php Passed 13 tests
The primary PHP file in "LifterLMS - WordPress LMS Plugin for eLearning" version 7.5.0 is used by WordPress to initiate all plugin functionality
107 characters long description:
Complete e-learning platform to sell online courses, protect lessons, offer memberships, and quiz students.
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | A short check of programming languages and file extensions; no executable files are allowed
Good job! No executable or dangerous file extensions detected160,635 lines of code in 1,164 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 905 | 28,122 | 71,415 | 87,630 |
JavaScript | 174 | 11,165 | 13,137 | 36,045 |
CSS | 51 | 3,613 | 568 | 32,684 |
SVG | 2 | 0 | 0 | 2,679 |
JSON | 21 | 0 | 0 | 1,112 |
Markdown | 3 | 311 | 0 | 477 |
HTML | 8 | 0 | 32 | 8 |
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.40 |
Average class complexity | 17.00 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 164.00 |
Average method complexity | 2.94 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 73.00 |
Code structure | ||
---|---|---|
Namespaces | 12 | |
Interfaces | 7 | |
Traits | 17 | |
Classes | 521 | |
▷ Abstract classes | 60 | 11.52% |
▷ Concrete classes | 461 | 88.48% |
▷ Final classes | 4 | 0.87% |
Methods | 4,555 | |
▷ Static methods | 633 | 13.90% |
▷ Public methods | 2,928 | 64.28% |
▷ Protected methods | 1,087 | 23.86% |
▷ Private methods | 540 | 11.86% |
Functions | 560 | |
▷ Named functions | 498 | 88.93% |
▷ Anonymous functions | 62 | 11.07% |
Constants | 125 | |
▷ Global constants | 35 | 28.00% |
▷ Class constants | 90 | 72.00% |
▷ Public constants | 71 | 78.89% |
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
81 PNG files occupy 1.96MB with 0.33MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
assets/images/addons/Simply-Schedule-Appointments-LifterLMS.png | 39.28KB | 40.29KB | 0.00% |
assets/images/notifications/icon-positive.png | 5.98KB | 3.17KB | ▼ 47.07% |
assets/images/addons/Presto-Player.png | 26.44KB | 28.36KB | 0.00% |
assets/images/addons/WP-Fusion.png | 25.11KB | 26.11KB | 0.00% |
assets/vendor/jquery-ui-flick/images/ui-icons_454545_256x240.png | 6.81KB | 4.20KB | ▼ 38.28% |