62% bookme-free-appointment-booking-system

Code Review | Bookme - Free Online Appointment Booking and Scheduling Plugin

WordPress plugin Bookme - Free Online Appointment Booking and Scheduling Plugin scored62%from 54 tests.

About plugin

  • Plugin page: bookme-free-appoi...
  • Plugin version: 4.2
  • PHP compatiblity: 5.3.7+
  • PHP version: 7.4.16
  • WordPress compatibility: 4.5-6.0
  • WordPress version: 6.3.1
  • First release: Jun 9, 2022
  • Latest release: Jun 9, 2022
  • Number of updates: 4
  • Update frequency: every 8.8 days
  • Top authors: bylancer (100%)

Code review

54 tests

User reviews

3 reviews

Install metrics

100+ active /2,438 total downloads

Benchmarks

Plugin footprint 65% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | It is important to correctly install your plugin, without throwing errors or notices
Installer ran successfully

Server metrics [RAM: ▲1.28MB] [CPU: ▲5.69ms] Passed 4 tests

A check of server-side resources used by Bookme - Free Online Appointment Booking and Scheduling Plugin
This plugin does not affect your website's performance
PageMemory (MB)CPU Time (ms)
Home /4.20 ▲0.7341.43 ▲3.12
Dashboard /wp-admin4.78 ▲1.4752.11 ▲5.71
Posts /wp-admin/edit.php4.83 ▲1.4755.43 ▲17.34
Add New Post /wp-admin/post-new.php7.46 ▲1.5798.20 ▼1.89
Media Library /wp-admin/upload.php4.70 ▲1.4751.37 ▲15.81
All Bookings /wp-admin/admin.php?page=bookme-bookings5.1948.57
Customers /wp-admin/admin.php?page=bookme-customers4.8040.86
Payments /wp-admin/admin.php?page=bookme-payments4.9441.40
Settings /wp-admin/admin.php?page=bookme-settings5.2091.06
Staff Members /wp-admin/admin.php?page=bookme-staff4.9346.95
Services /wp-admin/admin.php?page=bookme-services4.9242.24
Appearance /wp-admin/admin.php?page=bookme-appearance4.9242.00
Notifications /wp-admin/admin.php?page=bookme-notifications5.2263.98

Server storage [IO: ▲3.83MB] [DB: ▲0.03MB] Passed 3 tests

How much does this plugin use your filesystem and database?
There were no storage issued detected upon installing this plugin
Filesystem: 258 new files
Database: 16 new tables, 121 new options
New tables
wp_bm_holidays
wp_bm_customer_bookings
wp_bm_customers
wp_bm_sent_notifications
wp_bm_employee_preference_orders
wp_bm_employees
wp_bm_payments
wp_bm_services
wp_bm_notifications
wp_bm_coupons_to_services
...
New WordPress options
bookme_reject_success_url
bookme_form_custom_css
bookme_company_website
bookme_default_country_code
bookme_gc_event_title
bookme_paypal_api_password
bookme_authorize_net_sandbox
bookme_twillio_phone_number
bookme_lang_title_service
bookme_wh_thursday_end
...

Browser metrics Passed 4 tests

This is an overview of browser requirements for Bookme - Free Online Appointment Booking and Scheduling Plugin
Minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,963 ▲21713.72 ▼0.689.93 ▲8.2538.17 ▼6.14
Dashboard /wp-admin2,241 ▲615.55 ▼0.1182.91 ▼16.3478.78 ▲37.54
Posts /wp-admin/edit.php2,128 ▲281.98 ▲0.0436.43 ▼4.0933.67 ▼4.73
Add New Post /wp-admin/post-new.php1,859 ▲33122.20 ▼0.86658.45 ▲58.5153.09 ▼4.88
Media Library /wp-admin/upload.php1,449 ▲494.13 ▼0.2394.69 ▼7.4173.00 ▲29.45
All Bookings /wp-admin/admin.php?page=bookme-bookings5,5105.53147.31252.72
Customers /wp-admin/admin.php?page=bookme-customers4,1354.03105.65102.55
Payments /wp-admin/admin.php?page=bookme-payments2,6545.28110.36138.69
Settings /wp-admin/admin.php?page=bookme-settings15,7513.64124.89369.59
Staff Members /wp-admin/admin.php?page=bookme-staff2,3903.7556.07360.87
Services /wp-admin/admin.php?page=bookme-services2,0462.6644.58115.33
Appearance /wp-admin/admin.php?page=bookme-appearance2,7873.4173.71466.68
Notifications /wp-admin/admin.php?page=bookme-notifications6,45912.34328.82125.32

Uninstaller [IO: ▲0.00MB] [DB: ▲0.03MB] 50% from 4 tests

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
It is recommended to fix the following
  • This plugin does not fully uninstall, leaving 16 tables in the database
    • wp_bm_coupons
    • wp_bm_customers
    • wp_bm_services
    • wp_bm_employee_schedules
    • wp_bm_categories
    • wp_bm_employee_preference_orders
    • wp_bm_payments
    • wp_bm_notifications
    • wp_bm_employee_schedule_breaks
    • wp_bm_customer_bookings
    • ...
  • Zombie WordPress options detected upon uninstall: 121 options
    • bookme_paypal_enabled
    • bookme_company_phone
    • bookme_authorize_net_api_login_id
    • bookme_lang_wc_cart_data_name
    • bookme_customer_first_last_name
    • bookme_form_layout
    • bookme_mollie_enabled
    • bookme_secondary_color
    • bookme_local_enabled
    • bookme_wh_saturday_end
    • ...

Smoke tests 25% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
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 take a closer look at the following
  • 54× PHP files perform the task of outputting text when accessed with GET requests (only 10 are shown):
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/settings/labels-tab.php
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/settings/holidays-tab.php
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/settings/company-tab.php
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/fragments/limitation.php
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/settings/payments-tab.php
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/settings/page.php
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/employees/edit-employee-panel.php
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/notifications/page.php
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/services/service-panel.php
    • > /wp-content/plugins/bookme-free-appointment-booking-system/templates/admin/appearance/page.php
  • 34× PHP files trigger server errors when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'Bookme\\Inc\\Core\\App' not found in wp-content/plugins/bookme-free-appointment-booking-system/app/admin/Calendar.php:11
    • > PHP Fatal error
      Uncaught Error: Class 'Bookme\\Inc\\Core\\App' not found in wp-content/plugins/bookme-free-appointment-booking-system/app/admin/Notifications.php:11
    • > PHP Fatal error
      Uncaught Error: Class 'Bookme\\Inc\\Core\\App' not found in wp-content/plugins/bookme-free-appointment-booking-system/app/admin/Services.php:11
    • > PHP Fatal error
      Uncaught Error: Class 'Bookme\\Inc\\Core\\Table' not found in wp-content/plugins/bookme-free-appointment-booking-system/inc/mains/tables/Category.php:10
    • > PHP Fatal error
      Uncaught Error: Class 'Bookme\\Inc\\Core\\App' not found in wp-content/plugins/bookme-free-appointment-booking-system/app/admin/Appearance.php:10
    • > PHP Fatal error
      Uncaught Error: Class 'Bookme\\Inc\\Core\\Schema' not found in wp-content/plugins/bookme-free-appointment-booking-system/inc/core/Installer.php:7
    • > PHP Fatal error
      Uncaught Error: Class 'Google_Service' not found in wp-content/plugins/bookme-free-appointment-booking-system/inc/external/google/Service/Calendar.php:29
    • > PHP Fatal error
      Uncaught Error: Class 'Bookme\\Inc\\Core\\App' not found in wp-content/plugins/bookme-free-appointment-booking-system/app/admin/Bookings.php:11
    • > PHP Fatal error
      Uncaught Error: Class 'Bookme\\Inc\\Core\\Table' not found in wp-content/plugins/bookme-free-appointment-booking-system/inc/mains/tables/EmployeeScheduleBreak.php:10
    • > PHP Fatal error
      Uncaught Error: Class 'Bookme\\Inc\\Core\\Table' not found in wp-content/plugins/bookme-free-appointment-booking-system/inc/mains/tables/CouponService.php:10

User-side errors 0% from 1 test

🔹 Test weight: 20 | This is a shallow check for browser errors
There are user-side issues you should fix
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=bookme-payments
    • > Console-api (warning) in wp-includes/js/dist/vendor/moment.min.js?ver=2.29.4+0:2827
    Deprecation warning: use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.

Optimizations

Plugin configuration 86% from 29 tests

readme.txt 94% from 16 tests

Often overlooked, readme.txt is one of the most important files in your plugin
Please fix the following attributes:
  • Tags: You are using too many tags: 13 tag instead of maximum 10
You can take inspiration from this readme.txt

bookme-free-appointment-booking-system/init.php 77% from 13 tests

The principal PHP file in "Bookme - Free Online Appointment Booking and Scheduling Plugin" v. 4.2 is loaded by WordPress automatically on each request
Please make the necessary changes and fix the following:
  • Description: If Twitter did it, so should we! Keep the description under 140 characters (currently 170 characters long)
  • Text Domain: The text domain is optional since WordPress version 4.6; if you do specify it, it must be the same as the plugin slug
  • Main file name: The principal plugin file should be the same as the plugin slug ("bookme-free-appointment-booking-system.php" instead of "init.php")

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
There were no executable files found in this plugin37,360 lines of code in 223 files:
LanguageFilesBlank linesComment linesLines of code
PHP1743,1158,43523,153
JavaScript311,1888029,941
CSS17654393,990
SVG100276

PHP code Passed 2 tests

A short review of cyclomatic complexity and code structure
Although this was not an exhaustive test, there were no cyclomatic complexity issues detected
Cyclomatic complexity
Average complexity per logical line of code0.32
Average class complexity12.68
▷ Minimum class complexity1.00
▷ Maximum class complexity135.00
Average method complexity2.17
▷ Minimum method complexity1.00
▷ Maximum method complexity87.00
Code structure
Namespaces13
Interfaces1
Traits0
Classes156
▷ Abstract classes2012.82%
▷ Concrete classes13687.18%
▷ Final classes00.00%
Methods1,528
▷ Static methods16911.06%
▷ Public methods1,39791.43%
▷ Protected methods583.80%
▷ Private methods734.78%
Functions24
▷ Named functions312.50%
▷ Anonymous functions2187.50%
Constants96
▷ Global constants77.29%
▷ Class constants8992.71%
▷ Public constants89100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

PNG files should be compressed to save space and minimize bandwidth usage
29 PNG files occupy 0.28MB with 0.07MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
assets/admin/images/payment/2checkout.png1.83KB2.27KB0.00%
assets/admin/images/payment/stripe.png1.96KB1.70KB▼ 13.45%
assets/admin/images/sort_asc_disabled.png0.09KB0.09KB0.00%
assets/admin/css/jquery-ui-theme/images/ui-icons_454545_256x240.png6.83KB4.17KB▼ 38.86%
assets/front/images/flags.png64.41KB23.38KB▼ 63.70%