56% webba-booking-lite

Code Review | Appointment & Event Booking Calendar Plugin - Webba Booking

WordPress plugin Appointment & Event Booking Calendar Plugin - Webba Booking scored56%from 54 tests.

About plugin

  • Plugin page: webba-booking-lite
  • Plugin version: 5.0.25
  • PHP compatiblity: 7.4+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.6-6.4.1
  • WordPress version: 6.3.1
  • First release: Dec 16, 2015
  • Latest release: Nov 30, 2023
  • Number of updates: 1,051
  • Update frequency: every 2.8 days
  • Top authors: Webba agency (100%)

Code review

54 tests

User reviews

107 reviews

Install metrics

2,000+ active /187,208 total downloads

Benchmarks

Plugin footprint 46% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Verifying that this plugin installs correctly without errors
Install script ran successfully

Server metrics [RAM: ▲11.25MB] [CPU: ▲230.05ms] 25% from 4 tests

Analyzing server-side resources used by Appointment & Event Booking Calendar Plugin - Webba Booking
Please have a look at the following items
  • RAM: You should keep total memory usage under 10MB (currently 14.70MB on /wp-admin/admin.php?page=freemius)
  • Extra RAM: The extra memory usage must be under 5MB (currently 11.25MB on /wp-admin/admin.php?page=freemius)
  • Extra CPU: Extra CPU usage must be kept under 200.00ms (currently 230.05ms on /wp-admin/admin.php?page=freemius)
PageMemory (MB)CPU Time (ms)
Home /14.59 ▲11.13274.00 ▲234.56
Dashboard /wp-admin14.59 ▲11.29287.41 ▲240.41
Posts /wp-admin/edit.php14.65 ▲11.29293.45 ▲248.13
Add New Post /wp-admin/post-new.php17.17 ▲11.29300.06 ▲199.79
Media Library /wp-admin/upload.php14.54 ▲11.31279.81 ▲245.43
Freemius Debug [v.2.6.0] /wp-admin/admin.php?page=freemius14.70255.50

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

Filesystem and database footprint
There were no storage issued detected upon installing this plugin
Filesystem: 1,093 new files
Database: 10 new tables, 237 new options
New tables
wp_wbk_locked_time_slots
wp_wbk_email_templates
wp_wbk_appointments
wp_wbk_cancelled_appointments
wp_wbk_services
wp_wbk_coupons
wp_wbk_days_on_off
wp_wbk_service_categories
wp_wbk_gg_calendars
wp_wbk_pricing_rules
New WordPress options
wbk_form_label
wbk_bank_transfer_message
wbk_email_customer_paymentrcvd_subject
wbk_do_not_tax_deposit
wbk_payment_total_title
wbk_email_customer_bycustomer_appointment_cancel_message
wbk_allow_coupons
wbk_3_2_2_upd
wbk_appointments_allow_payments
wbk_csv_delimiter
...

Browser metrics Passed 4 tests

An overview of browser requirements for Appointment & Event Booking Calendar Plugin - Webba Booking
There were no issues detected in relation to browser resource usage
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,954 ▲19214.89 ▲0.7538.38 ▲36.5331.50 ▼13.13
Dashboard /wp-admin2,217 ▲365.55 ▼0.1695.52 ▼14.1875.48 ▲33.60
Posts /wp-admin/edit.php2,135 ▲351.98 ▲0.0440.89 ▲1.1634.96 ▼0.49
Add New Post /wp-admin/post-new.php1,545 ▲1920.87 ▼2.43680.43 ▼15.44179.50 ▲111.42
Media Library /wp-admin/upload.php1,425 ▲284.16 ▼0.0294.05 ▼11.3082.24 ▲36.20
Freemius Debug [v.2.6.0] /wp-admin/admin.php?page=freemius1,0891.8022.5824.83

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

🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
You still need to fix the following
  • The plugin did not uninstall gracefully
    • > Notice in wp-content/plugins/webba-booking-lite/freemius/includes/class-freemius.php+8546
    Undefined property: stdClass::$plugins
  • This plugin does not fully uninstall, leaving 10 tables in the database
    • wp_wbk_gg_calendars
    • wp_wbk_appointments
    • wp_wbk_days_on_off
    • wp_wbk_services
    • wp_wbk_pricing_rules
    • wp_wbk_cancelled_appointments
    • wp_wbk_email_templates
    • wp_wbk_service_categories
    • wp_wbk_coupons
    • wp_wbk_locked_time_slots
  • This plugin does not fully uninstall, leaving 237 options in the database
    • wbk_step_separator
    • wbk_3_3_18_upd
    • wbk_email_adimn_appointment_cancel_subject
    • wbk_pickadate_load
    • wbk_appointments_delete_not_paid_mode
    • wbk_allow_coupons
    • wbk_3_2_21_upd
    • wbk_woo_button_text
    • wbk_email_customer_manual_book_subject
    • wbk_date_format_backend
    • ...

Smoke tests 50% 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 everything seems fine, this is not an exhaustive test

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 take a closer look at the following
  • 1× GET requests to PHP files return non-empty strings:
    • > /wp-content/plugins/webba-booking-lite/templates/frontend/single_timeslot_detailed.php
  • 7× PHP files trigger server errors when accessed directly:
    • > PHP Parse error
      syntax error, unexpected '|', expecting variable (T_VARIABLE) in wp-content/plugins/webba-booking-lite/vendor/symfony/polyfill-mbstring/bootstrap80.php on line 15
    • > PHP Fatal error
      Uncaught Error: Class 'voku\\helper\\Bootup' not found in wp-content/plugins/webba-booking-lite/vendor/voku/portable-utf8/bootstrap.php:6
    • > PHP Parse error
      syntax error, unexpected '|', expecting '{' in wp-content/plugins/webba-booking-lite/vendor/symfony/polyfill-iconv/bootstrap80.php on line 28
    • > PHP Fatal error
      Uncaught Error: Call to undefined function esc_html() in wp-content/plugins/webba-booking-lite/templates/frontend_v5/local_time_checkbox.php:8
    • > PHP Parse error
      syntax error, unexpected '|', expecting '{' in wp-content/plugins/webba-booking-lite/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php on line 18
    • > PHP Fatal error
      Uncaught Error: Class 'Symfony\\Polyfill\\Intl\ormalizer\ormalizer' not found in wp-content/plugins/webba-booking-lite/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php:3
    • > PHP Parse error
      syntax error, unexpected '|', expecting '{' in wp-content/plugins/webba-booking-lite/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php on line 25

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 96% from 29 tests

readme.txt Passed 16 tests

Perhaps the most important file in your plugin readme.txt gets parsed in order to generate the public listing of your plugin
5 plugin tags: service reservations, booking calendar, online scheduling, event booking, appointment booking

webba-booking-lite/webba-booking-lite.php 92% from 13 tests

Analyzing the main PHP file in "Appointment & Event Booking Calendar Plugin - Webba Booking" version 5.0.25
You should first fix the following items:
  • Description: If Twitter did it, so should we! Keep the description under 140 characters (currently 183 characters long)

Code Analysis 95% 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 plugin276,321 lines of code in 794 files:
LanguageFilesBlank linesComment linesLines of code
PHP58114,40526,984122,920
JavaScript1045,37010,05463,080
PO File1819,68230,41943,947
CSS533,05233638,303
Markdown162,05435,608
JSON11001,381
Sass44612591
HTML2720380
XML10073
SVG40138

PHP code 0% from 2 tests

Cyclomatic complexity and code structure are the fingerprint of this plugin
The following items need your attention
  • Please reduce cyclomatic complexity of classes to less than 1000 (currently 3,096)
  • Cyclomatic complexity of methods has to be reduced to less than 100 (currently 119)
Cyclomatic complexity
Average complexity per logical line of code0.51
Average class complexity76.08
▷ Minimum class complexity1.00
▷ Maximum class complexity3,096.00
Average method complexity4.66
▷ Minimum method complexity1.00
▷ Maximum method complexity119.00
Code structure
Namespaces9
Interfaces1
Traits0
Classes131
▷ Abstract classes21.53%
▷ Concrete classes12998.47%
▷ Final classes96.98%
Methods2,690
▷ Static methods93934.91%
▷ Public methods2,20581.97%
▷ Protected methods321.19%
▷ Private methods45316.84%
Functions394
▷ Named functions34286.80%
▷ Anonymous functions5213.20%
Constants268
▷ Global constants12948.13%
▷ Class constants13951.87%
▷ Public constants13798.56%

Plugin size 50% from 2 tests

Image compression 50% from 2 tests

PNG files should be compressed to save space and minimize bandwidth usage
127 PNG files occupy 1.07MB with 0.28MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
public/images/group-default-icon.png0.43KB0.34KB▼ 21.10%
public/images/clock_white.png4.15KB2.18KB▼ 47.43%
public/images/new-category-icon.png0.57KB0.37KB▼ 34.48%
public/images/stripe-icon.png0.60KB0.42KB▼ 30.26%
plugion/vendor/DataTables/DataTables-1.10.18/images/sort_both.png0.20KB0.29KB0.00%