51% rsvpmaker

Code Review | RSVPMaker

WordPress plugin RSVPMaker scored51%from 54 tests.

About plugin

  • Plugin page: rsvpmaker
  • Plugin version: 10.7.9
  • PHP compatiblity: 5.6+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.0-6.4.1
  • WordPress version: 6.3.1
  • First release: Nov 29, 2010
  • Latest release: Nov 24, 2023
  • Number of updates: 1,284
  • Update frequency: every 3.7 days
  • Top authors: davidfcarr (100%)

Code review

54 tests

User reviews

10 reviews

Install metrics

400+ active /253,157 total downloads

Benchmarks

Plugin footprint 65% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | All plugins must install correctly, without throwing any errors, warnings, or notices
The plugin installed gracefully, with no errors

Server metrics [RAM: ▲5.98MB] [CPU: ▲63.11ms] 75% from 4 tests

A check of server-side resources used by RSVPMaker
Please have a look at the following items
  • Extra RAM: Extra memory usage must be kept under 5MB (currently 5.98MB on /wp-admin/tools.php?page=rsvpmaker_export_screen)
PageMemory (MB)CPU Time (ms)
Home /9.29 ▲5.83104.90 ▲64.44
Dashboard /wp-admin9.34 ▲6.001,365.11 ▲1,300.85
Posts /wp-admin/edit.php9.36 ▲6.00100.70 ▲53.32
Add New Post /wp-admin/post-new.php12.42 ▲6.53167.69 ▲75.76
Media Library /wp-admin/upload.php9.31 ▲6.0891.30 ▲58.90
Tags /wp-admin/edit-tags.php?taxonomy=post_tag&post_type=rsvpmaker9.4386.96
Cleanup RSVPMaker /wp-admin/tools.php?page=rsvpmaker_cleanup9.2987.10
RSVPMaker /wp-admin/options-general.php?page=rsvpmaker_settings9.2988.41
Group Email Log /wp-admin/edit.php?post_type=rsvpemail&page=rsvpmaker_relay_queue_monitor9.2983.80
Group Email /wp-admin/edit.php?post_type=rsvpemail&page=rsvpmaker_relay_manual_test9.2990.86
Event Type /wp-admin/edit-tags.php?taxonomy=rsvpmaker-type&post_type=rsvpmaker9.4393.01
Email Promos /wp-admin/edit.php?page=rsvpmail_latest_posts_notification_setup9.66109.77
RSVP Report /wp-admin/edit-tags.php?taxonomy=post_tag&post_type=rsvpmaker&page=rsvp_report8.9371.63
Import/Export RSVPMaker /wp-admin/tools.php?page=rsvpmaker_export_screen9.2979.06

Server storage [IO: ▲12.23MB] [DB: ▲0.02MB] Passed 3 tests

A short overview of filesystem and database impact
This plugin installed successfully
Filesystem: 847 new files
Database: 4 new tables, 16 new options
New tables
wp_rsvpmailer_blocked
wp_rsvp_volunteer_time
wp_rsvpmaker
wp_rsvpmaker_event
New WordPress options
widget_cpeventswidget
rsvpmaker_missing_help
rsvpmailer_default_block_template
db_upgraded
rsvpmaker_help
widget_recent-posts
can_compress_scripts
widget_theysaidso_widget
widget_rsvpmaker_by_json
rsvpmaker_last_data_check2
...

Browser metrics Passed 4 tests

A check of browser resources used by RSVPMaker
This plugin has a minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,148 ▲39716.09 ▲1.3513.12 ▲11.1842.33 ▼7.63
Dashboard /wp-admin2,394 ▲2146.30 ▲0.69105.93 ▲7.5738.68 ▼6.09
Posts /wp-admin/edit.php2,312 ▲2122.96 ▲1.0256.52 ▲18.1933.66 ▼3.13
Add New Post /wp-admin/post-new.php1,712 ▲18622.48 ▼0.92721.48 ▲48.2139.23 ▼14.76
Media Library /wp-admin/upload.php1,600 ▲2005.82 ▲1.64118.99 ▲21.3244.58 ▲1.59
Tags /wp-admin/edit-tags.php?taxonomy=post_tag&post_type=rsvpmaker1,5253.1653.1434.44
Cleanup RSVPMaker /wp-admin/tools.php?page=rsvpmaker_cleanup1,1823.0549.0629.48
RSVPMaker /wp-admin/options-general.php?page=rsvpmaker_settings1,0647.61207.7429.51
Group Email Log /wp-admin/edit.php?post_type=rsvpemail&page=rsvpmaker_relay_queue_monitor9702.9542.6225.53
Group Email /wp-admin/edit.php?post_type=rsvpemail&page=rsvpmaker_relay_manual_test9762.8947.0327.33
Event Type /wp-admin/edit-tags.php?taxonomy=rsvpmaker-type&post_type=rsvpmaker1,4803.3260.0331.42
Email Promos /wp-admin/edit.php?page=rsvpmail_latest_posts_notification_setup1,1483.0751.8337.60
RSVP Report /wp-admin/edit-tags.php?taxonomy=post_tag&post_type=rsvpmaker&page=rsvp_report280.410.093.84
RSVPMaker Email /wp-admin/rsvpmaker-admin.php260.410.1213.30
Import/Export RSVPMaker /wp-admin/tools.php?page=rsvpmaker_export_screen1,0053.0746.7229.18

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

🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
These items require your attention
  • The uninstall procedure failed, leaving 1 table in the database
    • wp_rsvpmailer_blocked
  • Zombie WordPress options detected upon uninstall: 9 options
    • rsvpmaker_link_template_post
    • can_compress_scripts
    • rsvpmailer_default_block_template
    • widget_cpeventswidget
    • widget_recent-comments
    • widget_theysaidso_widget
    • db_upgraded
    • theysaidso_admin_options
    • widget_recent-posts

Smoke tests 25% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | This is a shallow check for server-side errors
Even though no errors were found, this is by no means an exhaustive test

SRP 0% from 2 tests

🔹 Tests weight: 20 | The single-responsibility principle: PHP files have to remain inert when accessed directly, throwing no errors and performing no actions
Please fix the following items
  • 3× PHP files output non-empty strings when accessed directly via GET requests:
    • > /wp-content/plugins/rsvpmaker/stripe-php/build.php
    • > /wp-content/plugins/rsvpmaker/captcha/captcha_ttf.php
    • > /wp-content/plugins/rsvpmaker/stripe-php/update_certs.php
  • 420× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\ApiResource' not found in wp-content/plugins/rsvpmaker/stripe-php/lib/Payout.php:38
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\Service\\AbstractService' not found in wp-content/plugins/rsvpmaker/stripe-php/lib/Service/Terminal/ReaderService.php:7
    • > PHP Notice
      Undefined variable: line in wp-content/plugins/rsvpmaker/captcha/captcha_ttf.php on line 54
    • > PHP Fatal error
      require(): Failed opening required 'wp-content/plugins/rsvpmaker/paypal-rest/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/../../vendor/autoload.php' (include_path='.:/usr/share/php') in wp-content/plugins/rsvpmaker/paypal-rest/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/CaptureOrder.php on line 5
    • > PHP Fatal error
      Uncaught Error: Class 'BraintreeHttp\\HttpRequest' not found in wp-content/plugins/rsvpmaker/paypal-rest/vendor/paypal/paypal-checkout-sdk/lib/PayPalCheckoutSdk/Payments/AuthorizationsGetRequest.php:14
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\Exception\\ApiErrorException' not found in wp-content/plugins/rsvpmaker/stripe-php/lib/Exception/CardException.php:9
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_filter() in wp-content/plugins/rsvpmaker/rsvpmaker-plugabble.php:4747
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\Error\\Base' not found in wp-content/plugins/rsvpmaker/stripe-php/lib/Error/Idempotency.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\Service\\AbstractService' not found in wp-content/plugins/rsvpmaker/stripe-php/lib/Service/ApplePayDomainService.php:7
    • > PHP Fatal error
      Uncaught Error: Class 'Stripe\\Service\\AbstractService' not found in wp-content/plugins/rsvpmaker/stripe-php/lib/Service/OrderService.php:7

User-side errors 0% from 1 test

🔹 Test weight: 20 | A shallow check that no browser errors were triggered
There are user-side issues you should fix
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/options-general.php?page=rsvpmaker_settings
    • > Network (severe)
    wp-json/rsvpmaker/v1/rsvp_options?tab=general - Failed to load resource: the server responded with a status of 404 (Not Found)
    • > GET request to /wp-admin/edit-tags.php?taxonomy=post_tag&post_type=rsvpmaker&page=rsvp_report
    • > Network (severe)
    wp-admin/edit-tags.php?taxonomy=post_tag&post_type=rsvpmaker&page=rsvp_report - Failed to load resource: the server responded with a status of 500 (Internal Server Error)
    • > GET request to /wp-admin/rsvpmaker-admin.php
    • > Network (severe)
    wp-admin/rsvpmaker-admin.php - Failed to load resource: the server responded with a status of 404 (Not Found)

Optimizations

Plugin configuration 90% from 29 tests

readme.txt 88% from 16 tests

Often overlooked, readme.txt is one of the most important files in your plugin
Please fix the following attributes:
  • Screenshots: These screenshots do not have images: #1 (Example of an event listing with an RSVP Now! button.), #2 (Customizable RSVPMaker registration form.), #3 (Prompt to pay by credit card (PayPal also supported).), #4 (Email confirmation message.), #5 (Event options displayed within the WordPress editor. This is where you turn on registration, customize the form, define confirmation and reminder messages, and set pricing (if any).), #6 (Timezone conversions displayed automatically, which is handy for webinars and online meetings with a global audience.), #7 (Built-in email template with options for which list the message should be distributed to.)
  • Tags: Please delete some tags, you are using 11 tag instead of maximum 10
The official readme.txt is a good inspiration

rsvpmaker/rsvpmaker.php 92% from 13 tests

Analyzing the main PHP file in "RSVPMaker" version 10.7.9
It is important to fix the following:
  • Description: Please keep the plugin description shorter than 140 characters (currently 664 characters long)

Code Analysis 3% from 3 tests

File types 0% from 1 test

🔸 Test weight: 35 | A short review of files and their extensions; it is not recommended to include executable files
It is important to fix the following items
  • Do not distribute dangerous files with your plugin
    • .crt - Security Certificate in Firefox, IE, Chrome, Safari
      • wp-content/plugins/rsvpmaker/stripe-php/data/ca-certificates.crt
110,586 lines of code in 720 files:
LanguageFilesBlank linesComment linesLines of code
PHP51514,99718,07549,075
JSON292034,915
PO File94,0065,0239,948
JavaScript869646029,117
Markdown262,01904,933
CSS1478721,591
Sass8474624
XML2240247
YAML55186
make29026
Bourne Shell14011
HTML1109
INI1002
Ruby1002

PHP code 50% from 2 tests

Analyzing logical lines of code, cyclomatic complexity, and other code metrics
Please tend to the following items
  • Method cyclomatic complexity has to be reduced to less than 100 (currently 254)
Cyclomatic complexity
Average complexity per logical line of code0.37
Average class complexity6.48
▷ Minimum class complexity1.00
▷ Maximum class complexity254.00
Average method complexity2.28
▷ Minimum method complexity1.00
▷ Maximum method complexity254.00
Code structure
Namespaces52
Interfaces36
Traits10
Classes439
▷ Abstract classes143.19%
▷ Concrete classes42596.81%
▷ Final classes358.24%
Methods2,019
▷ Static methods35617.63%
▷ Public methods1,79488.86%
▷ Protected methods381.88%
▷ Private methods1879.26%
Functions851
▷ Named functions72384.96%
▷ Anonymous functions12815.04%
Constants760
▷ Global constants121.58%
▷ Class constants74898.42%
▷ Public constants73798.53%

Plugin size 50% from 2 tests

Image compression 50% from 2 tests

All PNG images should be compressed to minimize bandwidth usage for end users
37 PNG files occupy 2.72MB with 1.04MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
screenshot-6.png315.22KB106.79KB▼ 66.12%
images/ui-icons_cc0000_256x240.png4.44KB4.17KB▼ 6.02%
placeholder.png1.50KB0.93KB▼ 38.36%
images/youtube-button-100px.png2.35KB2.06KB▼ 12.39%
screenshot-5.png324.02KB103.57KB▼ 68.04%