77% bookingpress-appointment-booking

Code Review | BookingPress - Appointment Booking Calendar Plugin and Online Scheduling Plugin

WordPress plugin BookingPress - Appointment Booking Calendar Plugin and Online Scheduling Plugin scored77%from 54 tests.

About plugin

  • Plugin page: bookingpress-appo...
  • Plugin version: 1.0.77
  • PHP compatiblity: 5.6+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.3.0-6.4.1
  • WordPress version: 6.3.1
  • First release: Nov 26, 2021
  • Latest release: Nov 25, 2023
  • Number of updates: 176
  • Update frequency: every 4.2 days
  • Top authors: reputeinfosystems (100%)

Code review

54 tests

User reviews

86 reviews

Install metrics

10,000+ active /161,621 total downloads

Benchmarks

Plugin footprint 82% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | The install procedure must perform silently
Install script ran successfully

Server metrics [RAM: ▲7.03MB] [CPU: ▲37.38ms] 50% from 4 tests

This is a short check of server-side resources used by BookingPress - Appointment Booking Calendar Plugin and Online Scheduling Plugin
Please take the time to fix the following items
  • RAM: Total memory usage should be kept under 10MB (currently 10.91MB on /wp-admin/admin.php?page=bookingpress_customize)
  • Extra RAM: The extra memory usage must be under 5MB (currently 7.03MB on /wp-admin/admin.php?page=bookingpress_customize)
PageMemory (MB)CPU Time (ms)
Home /10.13 ▲6.6780.17 ▲32.58
Dashboard /wp-admin10.48 ▲7.1391.97 ▲30.39
Posts /wp-admin/edit.php10.52 ▲7.1695.18 ▲51.10
Add New Post /wp-admin/post-new.php13.08 ▲7.20139.40 ▲51.85
Media Library /wp-admin/upload.php10.39 ▲7.1675.40 ▲35.44
Payments /wp-admin/admin.php?page=bookingpress_payments10.4389.75
Calendar /wp-admin/admin.php?page=bookingpress_calendar10.4879.19
Appointments /wp-admin/admin.php?page=bookingpress_appointments10.5984.67
Add-ons /wp-admin/admin.php?page=bookingpress_addons10.4272.90
Notifications /wp-admin/admin.php?page=bookingpress_notifications10.4273.16
Dashboard /wp-admin/admin.php?page=bookingpress10.2063.23
Growth Plugins /wp-admin/admin.php?page=bookingpress_growth_tools10.3470.21
Black Friday Sale /wp-admin/admin.php?page=bookingpress&upgrade_action=upgrade_to_pro10.2062.66
Services /wp-admin/admin.php?page=bookingpress_services10.4484.34
Customize /wp-admin/admin.php?page=bookingpress_customize10.9186.72

Server storage [IO: ▲15.87MB] [DB: ▲0.15MB] Passed 3 tests

How much does this plugin use your filesystem and database?
The plugin installed successfully
Filesystem: 1,285 new files
Database: 18 new tables, 109 new options
New tables
wp_bookingpress_servicesmeta
wp_bookingpress_debug_payment_log
wp_bookingpress_notifications
wp_bookingpress_other_debug_logs
wp_bookingpress_entries_meta
wp_bookingpress_default_daysoff
wp_bookingpress_appointment_bookings
wp_bookingpress_customers
wp_bookingpress_customers_meta
wp_bookingpress_entries
...
New WordPress options
booking_form_shortcode_default_fields_default_image_url_2023-11-26 07:16:31
bpa_mybookings_shortcode_default_dataservice_main_heading_2023-11-26 07:16:31
widget_theysaidso_widget
bpa_mybookings_shortcode_default_datatotal_amount_title_2023-11-26 07:16:31
bpa_mybookings_shortcode_default_datacancel_appointment_title_2023-11-26 07:16:31
booking_form_shortcode_default_fields_night_text_2023-11-26 07:16:31
booking_form_shortcode_default_fields_sub_title_color_2023-11-26 07:16:31
booking_form_shortcode_default_fields_primary_color_2023-11-26 07:16:31
bpa_mybookings_shortcode_default_dataallow_to_cancel_appointment_2023-11-26 07:16:31
widget_recent-posts
...

Browser metrics Passed 4 tests

Checking browser requirements for BookingPress - Appointment Booking Calendar Plugin and Online Scheduling Plugin
This plugin has a minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,800 ▲5314.54 ▲0.151.68 ▼0.0736.03 ▼7.03
Dashboard /wp-admin2,193 ▲135.52 ▼0.1296.00 ▼2.7367.63 ▲21.31
Posts /wp-admin/edit.php2,113 ▲131.95 ▼0.0537.69 ▼0.5630.36 ▼5.42
Add New Post /wp-admin/post-new.php1,666 ▲14122.09 ▼1.26643.41 ▼16.2436.04 ▼27.88
Media Library /wp-admin/upload.php1,413 ▲104.24 ▲0.0294.81 ▼6.0066.28 ▲21.51
Payments /wp-admin/admin.php?page=bookingpress_payments3,7218.20162.5057.92
Calendar /wp-admin/admin.php?page=bookingpress_calendar1,76811.00214.5232.60
Appointments /wp-admin/admin.php?page=bookingpress_appointments4,29310.47177.7955.81
Add-ons /wp-admin/admin.php?page=bookingpress_addons3,2018.38100.0028.49
Notifications /wp-admin/admin.php?page=bookingpress_notifications2,8448.04145.3852.28
Dashboard /wp-admin/admin.php?page=bookingpress280.410.083.34
Growth Plugins /wp-admin/admin.php?page=bookingpress_growth_tools1,9476.9691.5729.54
Black Friday Sale /wp-admin/admin.php?page=bookingpress&upgrade_action=upgrade_to_pro280.410.083.72
Services /wp-admin/admin.php?page=bookingpress_services3,2709.49145.4460.87
Customize /wp-admin/admin.php?page=bookingpress_customize9,95526.12440.0168.67

Uninstaller [IO: ▲0.06MB] [DB: ▲0.07MB] 75% from 4 tests

🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
Please fix the following items
  • Zombie WordPress options were found after uninstall: 100 options
    • bpa_default_notificat_data_query_details_Appointment Rejected_2023-11-26 07:16:30
    • booking_form_shortcode_default_fields_hide_category_service_selection_2023-11-26 07:16:31
    • booking_form_shortcode_default_fields_morning_text_2023-11-26 07:16:31
    • bpa_mybookings_shortcode_default_dataservice_main_heading_2023-11-26 07:16:31
    • bpa_mybookings_shortcode_default_datacancel_appointment_confirmation_message_2023-11-26 07:16:31
    • bpa_default_notificat_data_query_details_second_Share Appointment URL_2023-11-26 07:16:30
    • bpa_mybookings_shortcode_default_datasearch_date_title_2023-11-26 07:16:31
    • bpa_defult_field_installation_details_lastname_2023-11-26 07:16:31
    • bpa_mybookings_shortcode_default_datacancel_button_text_2023-11-26 07:16:31
    • booking_form_shortcode_default_fields_booking_form_tabs_position_2023-11-26 07:16:31
    • ...

Smoke tests 50% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Even though everything seems fine, this is not an exhaustive test

SRP 50% from 2 tests

🔹 Tests weight: 20 | It is important to ensure that your PHP files perform no action when accessed directly, respecting the single-responsibility principle
Please take a closer look at the following
  • 476× PHP files trigger server-side errors or warnings when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'ParagonIE\\ConstantTime\\Base64' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/paragonie/constant_time_encoding/src/Base64DotSlashOrdered.php:34
    • > PHP Fatal error
      Uncaught Error: Class 'Google\\Service\\Resource' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/google/apiclient-services/src/Gmail/Resource/UsersSettingsDelegates.php:31
    • > PHP Fatal error
      Uncaught Error: Class 'Monolog\\Formatter\ormalizerFormatter' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php:24
    • > PHP Fatal error
      Uncaught Error: Interface 'Psr\\Http\\Message\\UploadedFileInterface' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/guzzlehttp/psr7/src/UploadedFile.php:12
    • > PHP Fatal error
      Uncaught Error: Class 'phpseclib3\\Crypt\\EC' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Parameters.php:21
    • > PHP Fatal error
      Uncaught Error: Class 'phpseclib3\\Crypt\\Common\\Formats\\Signature\\Raw' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/phpseclib/phpseclib/phpseclib/Crypt/DSA/Formats/Signature/Raw.php:23
    • > PHP Fatal error
      Uncaught Error: Class 'Monolog\\Handler\\MailHandler' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php:29
    • > PHP Fatal error
      Uncaught Error: Class 'phpseclib3\\Math\\BigInteger\\Engines\\BCMath\\Base' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/Engines/BCMath/Reductions/EvalBarrett.php:24
    • > PHP Fatal error
      Uncaught Error: Class 'phpseclib3\\Crypt\\EC\\BaseCurves\\TwistedEdwards' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/phpseclib/phpseclib/phpseclib/Crypt/EC/Curves/Ed25519.php:20
    • > PHP Fatal error
      Uncaught Error: Interface 'Psr\\Http\\Message\\RequestInterface' not found in wp-content/plugins/bookingpress-appointment-booking/lib/gmail/vendor/guzzlehttp/psr7/src/Request.php:15

User-side errors 0% from 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the browser (console and network errors and warnings)
These are user-side errors you should fix
    • > GET request to /wp-admin/admin.php?page=bookingpress
    • > Network (severe)
    wp-admin/admin.php?page=bookingpress - Failed to load resource: the server responded with a status of 500 (Internal Server Error)
    • > GET request to /wp-admin/admin.php?page=bookingpress&upgrade_action=upgrade_to_pro
    • > Network (severe)
    wp-admin/admin.php?page=bookingpress&upgrade_action=upgrade_to_pro - Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Optimizations

Plugin configuration 96% from 29 tests

readme.txt Passed 16 tests

The readme.txt file is an important file in your plugin as it is parsed by WordPress.org to prepare the public listing of your plugin
5 plugin tags: booking system, appointment, reservation, scheduling, booking calendar

bookingpress-appointment-booking/bookingpress-appointment-booking.php 92% from 13 tests

The main file in "BookingPress - Appointment Booking Calendar Plugin and Online Scheduling Plugin" v. 1.0.77 serves as a complement to information provided in readme.txt and as the entry point to the plugin
Please make the necessary changes and fix the following:
  • Description: Keep the plugin description shorter than 140 characters (currently 142 characters long)

Code Analysis 97% 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
No dangerous file extensions were detected131,679 lines of code in 956 files:
LanguageFilesBlank linesComment linesLines of code
PHP79117,36244,870105,606
PO File76,51022,38613,246
JavaScript1031473977,254
Markdown1495403,255
JSON21002,219
SVG40057
XML10019
CSS130013
YAML1007
Bourne Shell1203

PHP code 50% from 2 tests

An overview of cyclomatic complexity and code structure
Please tend to the following items
  • Cyclomatic complexity of methods should be reduced to less than 100 (currently 176)
Cyclomatic complexity
Average complexity per logical line of code0.36
Average class complexity16.79
▷ Minimum class complexity1.00
▷ Maximum class complexity978.00
Average method complexity3.92
▷ Minimum method complexity1.00
▷ Maximum method complexity176.00
Code structure
Namespaces80
Interfaces50
Traits15
Classes698
▷ Abstract classes21731.09%
▷ Concrete classes48168.91%
▷ Final classes6613.72%
Methods4,187
▷ Static methods71417.05%
▷ Public methods3,28978.55%
▷ Protected methods4009.55%
▷ Private methods49811.89%
Functions192
▷ Named functions4221.88%
▷ Anonymous functions15078.12%
Constants548
▷ Global constants366.57%
▷ Class constants51293.43%
▷ Public constants46691.02%

Plugin size Passed 2 tests

Image compression Passed 2 tests

It is recommended to compress PNG files in your plugin to minimize bandwidth usage
257 compressed PNG files occupy 0.95MB
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
images/country-flags/ms.png0.91KB1.09KB0.00%
images/country-flags/kw.png0.75KB0.79KB0.00%
images/country-flags/eg.png0.60KB0.68KB0.00%
images/country-flags/yt.png0.95KB1.00KB0.00%
images/country-flags/jm.png0.85KB0.93KB0.00%