52% ameliabooking

Code Review | Booking for Appointments and Events Calendar - Amelia

WordPress plugin Booking for Appointments and Events Calendar - Amelia scored52%from 54 tests.

About plugin

  • Plugin page: ameliabooking
  • Plugin version: 1.0.92
  • PHP compatiblity: 5.6+
  • PHP version: 7.4.16
  • WordPress compatibility: 4.5-6.3.2
  • WordPress version: 6.3.1
  • First release: Dec 11, 2018
  • Latest release: Nov 27, 2023
  • Number of updates: 160
  • Update frequency: every 11.4 days
  • Top authors: ameliabooking (100%)

Code review

54 tests

User reviews

496 reviews

Install metrics

60,000+ active /499,624 total downloads

Benchmarks

Plugin footprint 65% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Checking the installer triggered no errors
Install script ran successfully

Server metrics [RAM: ▲0.26MB] [CPU: ▲1.66ms] Passed 4 tests

A check of server-side resources used by Booking for Appointments and Events Calendar - Amelia
This plugin has minimal impact on server resources
Page Memory (MB) CPU Time (ms)
Home / 3.68 ▲0.22 41.93 ▲0.01
Dashboard /wp-admin 3.61 ▲0.26 53.93 ▼10.45
Posts /wp-admin/edit.php 3.67 ▲0.31 54.04 ▲4.53
Add New Post /wp-admin/post-new.php 7.48 ▲1.59 197.71 ▲98.34
Media Library /wp-admin/upload.php 3.47 ▲0.24 43.83 ▲12.55
Dashboard /wp-admin/admin.php?page=wpamelia-dashboard 3.71 319.83
Customize New /wp-admin/admin.php?page=wpamelia-customize-new 3.59 478.69
Lite vs Premium /wp-admin/admin.php?page=wpamelia-lite-vs-premium 3.50 481.03
Events /wp-admin/admin.php?page=wpamelia-events 3.56 283.94
Custom Fields /wp-admin/admin.php?page=wpamelia-cf 3.52 474.22
Locations /wp-admin/admin.php?page=wpamelia-locations 3.50 477.72
Finance /wp-admin/admin.php?page=wpamelia-finance 3.51 280.96
Customize /wp-admin/admin.php?page=wpamelia-customize 3.52 279.17
Settings /wp-admin/admin.php?page=wpamelia-settings 3.57 287.78
What's new /wp-admin/admin.php?page=wpamelia-whats-new 3.53 308.84

Server storage [IO: ▲191.80MB] [DB: ▲0.10MB] 67% from 3 tests

Analyzing filesystem and database footprints of this plugin
It is recommended to fix the following issues
  • The filesystem usage should be lower than 25MB (currently using 191.80MB)
Filesystem: 6,434 new files
Database: 55 new tables, 7 new options
New tables
wp_amelia_providers_to_periods
wp_amelia_coupons
wp_amelia_custom_fields
wp_amelia_providers_to_services
wp_amelia_events_to_tickets
wp_amelia_services
wp_amelia_events_tags
wp_amelia_notifications_log
wp_amelia_categories
wp_amelia_providers_to_locations
...
New WordPress options
widget_theysaidso_widget
amelia_settings
db_upgraded
can_compress_scripts
theysaidso_admin_options
widget_recent-posts
widget_recent-comments

Browser metrics Passed 4 tests

This is an overview of browser requirements for Booking for Appointments and Events Calendar - Amelia
This plugin renders optimally with no browser resource issues detected
Page Nodes Memory (MB) Script (ms) Layout (ms)
Home / 2,909 ▲147 14.17 ▼0.04 1.60 ▼0.35 28.59 ▼15.31
Dashboard /wp-admin 2,299 ▲119 5.69 ▲0.04 99.32 ▲4.58 89.25 ▲52.35
Posts /wp-admin/edit.php 2,216 ▲116 1.99 ▼0.02 37.07 ▼2.51 36.33 ▼1.83
Add New Post /wp-admin/post-new.php 6,487 ▲4,961 28.25 ▲4.80 999.82 ▲391.17 42.63 ▼6.98
Media Library /wp-admin/upload.php 1,507 ▲110 4.20 ▼0.01 105.48 ▲9.81 77.73 ▲34.07
Dashboard /wp-admin/admin.php?page=wpamelia-dashboard 2,042 10.37 283.86 127.18
Customize New /wp-admin/admin.php?page=wpamelia-customize-new 1,729 7.87 91.84 79.80
Lite vs Premium /wp-admin/admin.php?page=wpamelia-lite-vs-premium 2,295 10.60 202.99 66.74
Events /wp-admin/admin.php?page=wpamelia-events 1,740 11.70 89.08 62.57
Custom Fields /wp-admin/admin.php?page=wpamelia-cf 1,682 9.30 84.46 46.95
Locations /wp-admin/admin.php?page=wpamelia-locations 1,919 9.28 90.20 66.95
Finance /wp-admin/admin.php?page=wpamelia-finance 2,015 10.51 95.35 57.88
Customize /wp-admin/admin.php?page=wpamelia-customize 1,681 10.15 100.37 62.32
Settings /wp-admin/admin.php?page=wpamelia-settings 2,067 9.28 99.30 43.37
What's new /wp-admin/admin.php?page=wpamelia-whats-new 2,789 7.47 112.35 74.76

Uninstaller [IO: ▲1.77MB] [DB: ▲0.10MB] 50% from 4 tests

🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
These items require your attention
  • This plugin does not fully uninstall, leaving 55 tables in the database
    • wp_amelia_coupons_to_events
    • wp_amelia_providers_to_google_calendar
    • wp_amelia_notifications_log
    • wp_amelia_custom_fields_options
    • wp_amelia_locations
    • wp_amelia_coupons
    • wp_amelia_providers_to_specialdays_periods
    • wp_amelia_notifications
    • wp_amelia_providers_to_services
    • wp_amelia_providers_views
    • ...
  • The uninstall procedure has failed, leaving 7 options in the database
    • amelia_settings
    • db_upgraded
    • widget_theysaidso_widget
    • can_compress_scripts
    • widget_recent-posts
    • theysaidso_admin_options
    • widget_recent-comments

Smoke tests 25% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the server (in the Apache logs)
Even though no errors were found, this is by no means an exhaustive test

SRP 0% from 2 tests

🔹 Tests weight: 20 | SRP (Single-Responsibility Principle) - PHP files must act as libraries and never output text or perform any action when accessed directly in a browser
Please fix the following items
  • 30× PHP files output text when accessed directly (only 10 are shown):
    • > /wp-content/plugins/ameliabooking/src/Infrastructure/ContainerConfig/application.services.php
    • > /wp-content/plugins/ameliabooking/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_samesite.php
    • > /wp-content/plugins/ameliabooking/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/regenerate.php
    • > /wp-content/plugins/ameliabooking/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/read_only.php
    • > /wp-content/plugins/ameliabooking/view/backend/view.php
    • > /wp-content/plugins/ameliabooking/src/Infrastructure/ContainerConfig/domain.services.php
    • > /wp-content/plugins/ameliabooking/vendor/stripe/stripe-php/build.php
    • > /wp-content/plugins/ameliabooking/vendor/symfony/http-foundation/Tests/Fixtures/response-functional/cookie_raw_urlencode.php
    • > /wp-content/plugins/ameliabooking/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.php
    • > /wp-content/plugins/ameliabooking/vendor/phpmailer/phpmailer/get_oauth_token.php
  • 2610× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'Microsoft\\Graph\\Core\\Enum' not found in wp-content/plugins/ameliabooking/vendor/microsoft/microsoft-graph/src/Model/MeetingMessageType.php:29
    • > PHP Fatal error
      Uncaught Error: Class 'Microsoft\\Graph\\Model\\Entity' not found in wp-content/plugins/ameliabooking/vendor/microsoft/microsoft-graph/src/Model/ConversationThread.php:27
    • > PHP Fatal error
      Uncaught Error: Class 'AmeliaBooking\\Infrastructure\\Repository\\AbstractRepository' not found in wp-content/plugins/ameliabooking/src/Infrastructure/Repository/Notification/NotificationsToEntitiesRepository.php:12
    • > PHP Fatal error
      Uncaught Error: Class 'Microsoft\\Graph\\Model\\Entity' not found in wp-content/plugins/ameliabooking/vendor/microsoft/microsoft-graph/src/Model/MediaConfig.php:26
    • > PHP Fatal error
      Uncaught Error: Class 'Omnipay\\Common\\Item' not found in wp-content/plugins/ameliabooking/vendor/omnipay/paypal/src/PayPalItem.php:15
    • > PHP Fatal error
      Uncaught Error: Interface 'AmeliaHttp\\Client\\Common\\Plugin' not found in wp-content/plugins/ameliabooking/vendor/php-http/client-common/src/Plugin/HeaderDefaultsPlugin.php:15
    • > PHP Fatal error
      Uncaught Error: Class 'Microsoft\\Graph\\Model\\DeviceConfiguration' not found in wp-content/plugins/ameliabooking/vendor/microsoft/microsoft-graph/src/Model/IosUpdateConfiguration.php:27
    • > PHP Fatal error
      Uncaught Error: Class 'Razorpay\\Tests\\TestCase' not found in wp-content/plugins/ameliabooking/vendor/razorpay/razorpay/tests/virtualAccountTest.php:7
    • > PHP Fatal error
      Uncaught Error: Class 'AmeliaBooking\\Application\\Commands\\Command' not found in wp-content/plugins/ameliabooking/src/Application/Commands/User/GetUserDeleteEffectCommand.php:12
    • > PHP Fatal error
      Uncaught Error: Class 'Microsoft\\Graph\\Model\\EducationOrganization' not found in wp-content/plugins/ameliabooking/vendor/microsoft/microsoft-graph/src/Model/EducationSchool.php:27

User-side errors 0% from 1 test

🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
There are user-side issues you should fix
    • > GET request to /wp-admin/admin.php?page=wpamelia-dashboard
    • > Console-api (warning) in wp-content/plugins/ameliabooking/public/js/chunks/amelia-booking-dashboard-0badb7ba9f5a7e615430.js+0:386584
    bar chart: \"scales.[x/y]Axes.barThickness\" is deprecated. Please use \"dataset.barThickness\" instead
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=wpamelia-dashboard
    • > Console-api (warning) in wp-content/plugins/ameliabooking/public/js/chunks/amelia-booking-dashboard-0badb7ba9f5a7e615430.js+0:386584
    bar chart: \"scales.[x/y]Axes.barPercentage\" is deprecated. Please use \"dataset.barPercentage\" instead
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=wpamelia-dashboard
    • > Console-api (warning) in wp-content/plugins/ameliabooking/public/js/chunks/amelia-booking-dashboard-0badb7ba9f5a7e615430.js+0:386584
    bar chart: \"scales.[x/y]Axes.categoryPercentage\" is deprecated. Please use \"dataset.categoryPercentage\" instead
    • > GET request to /wp-admin/admin.php?page=wpamelia-cf
    • > Console-api (warning) in wp-content/plugins/ameliabooking/public/js/chunks/amelia-booking-cf-0badb7ba9f5a7e615430.js+0:115389
    Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props

Optimizations

Plugin configuration 93% from 29 tests

readme.txt 94% from 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
These attributes need to be fixed:
  • Tags: Too many tags (13 tag instead of maximum 10); only the first 5 tags are used in your directory listing
Please take inspiration from this readme.txt

ameliabooking/ameliabooking.php 92% from 13 tests

"Booking for Appointments and Events Calendar - Amelia" version 1.0.92's primary PHP file adds more information about the plugin and serves as the entry point for WordPress
It is important to fix the following:
  • Description: Keep the plugin description shorter than 140 characters (currently 157 characters long)

Code Analysis 3% from 3 tests

File types 0% from 1 test

🔸 Test weight: 35 | An overview of files in this plugin; executable files are not allowed
Please fix the following items
  • Do not distribute dangerous files with your plugin
    • .crt - Security Certificate in Firefox, IE, Chrome, Safari
      • wp-content/plugins/ameliabooking/vendor/stripe/stripe-php/data/ca-certificates.crt
    • .xlsm - Excel Macro-Enabled Workbook in Microsoft Excel
      • wp-content/plugins/ameliabooking/vendor/symfony/http-foundation/Tests/File/Fixtures/case-sensitive-mime-type.xlsm
620,120 lines of code in 4,914 files:
Language Files Blank lines Comment lines Lines of code
PHP 3,461 52,438 174,504 264,065
Vuejs Component 413 15,825 6,149 113,280
PO File 33 65,649 114,793 90,314
JavaScript 419 8,516 712 48,416
LESS 47 6,445 772 32,361
JSON 61 1 0 31,195
Markdown 107 5,613 0 18,252
Sass 14 267 31 7,559
CSS 53 101 791 5,847
SVG 253 2 62 4,178
XML 17 65 50 2,727
C 1 188 47 879
YAML 23 90 19 538
C/C++ Header 2 40 46 132
reStructuredText 1 94 135 97
Bourne Shell 1 20 34 92
Pascal 2 41 74 79
m4 1 11 11 41
make 2 14 0 38
HTML 1 0 0 14
Dockerfile 1 8 0 10
INI 1 0 1 6

PHP code 50% from 2 tests

Cyclomatic complexity and code structure are the fingerprint of this plugin
Please tend to the following items
  • Cyclomatic complexity of methods has to be reduced to less than 100 (currently 192)
Cyclomatic complexity
Average complexity per logical line of code 0.32
Average class complexity 8.37
▷ Minimum class complexity 1.00
▷ Maximum class complexity 515.00
Average method complexity 2.21
▷ Minimum method complexity 1.00
▷ Maximum method complexity 192.00
Code structure
Namespaces 441
Interfaces 157
Traits 33
Classes 3,170
▷ Abstract classes 70 2.21%
▷ Concrete classes 3,100 97.79%
▷ Final classes 347 11.19%
Methods 20,572
▷ Static methods 1,587 7.71%
▷ Public methods 18,939 92.06%
▷ Protected methods 915 4.45%
▷ Private methods 718 3.49%
Functions 717
▷ Named functions 148 20.64%
▷ Anonymous functions 569 79.36%
Constants 3,266
▷ Global constants 91 2.79%
▷ Class constants 3,175 97.21%
▷ Public constants 3,175 100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

All PNG images should be compressed to minimize bandwidth usage for end users
990 compressed PNG files occupy 4.44MB
Potential savings
Compression of 5 random PNG files using pngquant
File Size - original Size - compressed Savings
public/images/nu.png 0.78KB 1.00KB 0.00%
v3/src/assets/img/flags/uy.png 0.75KB 0.82KB 0.00%
public/images/ws.png 0.75KB 0.94KB 0.00%
public/images/pk.png 0.80KB 1.12KB 0.00%
public/images/mm.png 0.62KB 0.83KB 0.00%