67% wp-openagenda

Code Review | OpenAgenda for WordPress

WordPress plugin OpenAgenda for WordPress scored 67% from 54 tests.

About plugin

  • Plugin page: wp-openagenda
  • Plugin version: 2.5
  • PHP compatiblity: 7.4+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.5-5.9
  • WordPress version: 5.9.2
  • First release: Jun 20, 2018
  • Latest release: Feb 27, 2022
  • Number of updates: 156
  • Update frequency: every 8.6 days
  • Top authors: sebastienserre (60.9%)sebastien@thivinfo.com (39.74%)

Code review

54 tests

User reviews

2 reviews

Install metrics

100+ active / 7,817 total downloads

Benchmarks

Plugin footprint 82% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Checking the installer triggered no errors
The plugin installed successfully, without throwing any errors or notices

Server metrics [RAM: ▲5.83MB] [CPU: ▼290.02ms] 75% from 4 tests

Server-side resources used by OpenAgenda for WordPress
It is recommended to improve the following
  • Extra RAM: The extra memory usage should kept under 5MB (currently 5.83MB on /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events)
PageMemory (MB)CPU Time (ms)
Home /9.37 ▲5.8693.99 ▲35.83
Dashboard /wp-admin9.58 ▲6.1778.78 ▲40.23
Posts /wp-admin/edit.php9.76 ▲6.1277.85 ▲35.79
Add New Post /wp-admin/post-new.php12.14 ▲5.1699.67 ▼1,271.94
Media Library /wp-admin/upload.php9.53 ▲6.2369.24 ▲41.70
Add New /wp-admin/post-new.php?post_type=acf-field-group9.8383.33
Venues /wp-admin/edit-tags.php?taxonomy=openagenda_venue&post_type=openagenda-events9.5870.20
Tools /wp-admin/edit.php?post_type=acf-field-group&page=acf-tools9.5578.09
Info /wp-admin/edit.php?post_type=acf-field-group&page=acf-settings-info9.4468.33
All Events /wp-admin/edit.php?post_type=openagenda-events9.5768.42
Agenda /wp-admin/edit-tags.php?taxonomy=openagenda_agenda&post_type=openagenda-events9.5168.21
Add New /wp-admin/post-new.php?post_type=openagenda-events9.3266.67
OpenAgenda Settings /wp-admin/options-general.php?page=openagenda-settings9.4470.62
Categories /wp-admin/edit-tags.php?taxonomy=openagenda_Category&post_type=openagenda-events9.5167.59
keywords /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events9.5183.75

Server storage [IO: ▲15.83MB] [DB: ▲0.00MB] Passed 3 tests

Analyzing filesystem and database footprints of this plugin
There were no storage issued detected upon installing this plugin
Filesystem: 767 new files
Database: no new tables, 4 new options
New WordPress options
widget_openwp_slider_widget
widget_openwp_basic_widget
widget_openagenda_main_widget
acf_version

Browser metrics Passed 4 tests

An overview of browser requirements for OpenAgenda for WordPress
Minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /4,213 ▲45920.81 ▲5.035.73 ▼0.612.05 ▲0.02
Dashboard /wp-admin3,328 ▲46710.62 ▲4.46193.24 ▲60.53199.58 ▲37.44
Posts /wp-admin/edit.php3,170 ▲4767.74 ▲4.50117.61 ▲55.99177.74 ▲39.24
Add New Post /wp-admin/post-new.php2,660 ▲94923.65 ▲2.49581.48 ▲121.02294.08 ▲136.39
Media Library /wp-admin/upload.php2,612 ▲92013.45 ▲7.87238.71 ▲98.19251.36 ▲63.72
Add New /wp-admin/post-new.php?post_type=acf-field-group3,2418.75139.33181.22
Venues /wp-admin/edit-tags.php?taxonomy=openagenda_venue&post_type=openagenda-events2,2177.71114.58123.98
Tools /wp-admin/edit.php?post_type=acf-field-group&page=acf-tools1,8317.90100.71116.50
Info /wp-admin/edit.php?post_type=acf-field-group&page=acf-settings-info1,9217.3199.44299.28
All Events /wp-admin/edit.php?post_type=openagenda-events1,9127.90107.36110.87
Agenda /wp-admin/edit-tags.php?taxonomy=openagenda_agenda&post_type=openagenda-events2,1987.95115.92118.71
Add New /wp-admin/post-new.php?post_type=openagenda-events5,23614.22268.87232.49
OpenAgenda Settings /wp-admin/options-general.php?page=openagenda-settings1,6477.39101.30112.69
Categories /wp-admin/edit-tags.php?taxonomy=openagenda_Category&post_type=openagenda-events2,1958.06105.43112.10
keywords /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events2,1608.05125.82117.58

Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 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: 4 options
    • acf_version
    • widget_openwp_slider_widget
    • widget_openagenda_main_widget
    • widget_openwp_basic_widget

Smoke tests 0% from 4 tests

Server-side errors 0% from 1 test

🔹 Test weight: 20 | A smoke test targeting server-side errors
Please fix the following server-side errors
    • > GET request to /wp-admin/post-new.php?post_type=openagenda-events
    • > Deprecated in wp-content/plugins/wp-openagenda/class/class-openagendaapi.php+427
    Non-static method OpenAgendaAPI\OpenAgendaApi::get_secret_key__premium_only() should not be called statically
    • > GET request to /wp-admin/post-new.php?post_type=openagenda-events
    • > Notice in wp-content/plugins/wp-openagenda/class/class-openagendaapi.php+450
    Undefined variable: token

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
  • 1× PHP files output text when accessed directly:
    • > /wp-content/plugins/wp-openagenda/3rd-party/vendor/htmlburger/carbon-fields/templates/Exception/incorrect-syntax.php
  • 204× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'Carbon_Fields\\Container\\Theme_Options_Container' not found in wp-content/plugins/wp-openagenda/3rd-party/vendor/htmlburger/carbon-fields/core/Container/Network_Container.php:11
    • > PHP Fatal error
      Uncaught Error: Class 'Carbon_Fields\\Field\\Field' not found in wp-content/plugins/wp-openagenda/3rd-party/vendor/htmlburger/carbon-fields/core/Field/File_Field.php:12
    • > PHP Fatal error
      Uncaught Error: Class 'acf_field' not found in wp-content/plugins/wp-openagenda/3rd-party/acf/includes/fields/class-acf-field-output.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'acf_field' not found in wp-content/plugins/wp-openagenda/3rd-party/acf/includes/fields/class-acf-field-image.php:5
    • > PHP Fatal error
      Uncaught Error: Using $this when not in object context in wp-content/plugins/wp-openagenda/3rd-party/vendor/htmlburger/carbon-fields/templates/Container/widget.php:2
    • > PHP Fatal error
      Uncaught Error: Class 'acf_field' not found in wp-content/plugins/wp-openagenda/3rd-party/acf/includes/fields/class-acf-field-text.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'Carbon_Fields\\Service\\Service' not found in wp-content/plugins/wp-openagenda/3rd-party/vendor/htmlburger/carbon-fields/core/Service/Legacy_Storage_Service_v_1_5.php:15
    • > PHP Fatal error
      Uncaught Error: Class 'Carbon_Fields\\Container\\Condition\\Condition' not found in wp-content/plugins/wp-openagenda/3rd-party/vendor/htmlburger/carbon-fields/core/Container/Condition/Post_Template_Condition.php:10
    • > PHP Fatal error
      Uncaught Error: Using $this when not in object context in wp-content/plugins/wp-openagenda/3rd-party/vendor/htmlburger/carbon-fields/templates/Container/common/options-page.php:2
    • > PHP Notice
      Trying to access array offset on value of type null in wp-content/plugins/wp-openagenda/3rd-party/acf/includes/admin/views/html-location-rule.php on line 4

User-side errors 0% from 1 test

🔹 Test weight: 20 | A shallow check that no browser errors were triggered
Please take a look at the following user-side issues
  • 10 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/css/acf-global.css?ver=5.8.3 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/css/acf-input.css?ver=5.8.3 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/pro/assets/css/acf-pro-input.css?ver=5.8.3 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/inc/select2/4/select2.min.css?ver=4.0 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/inc/datepicker/jquery-ui.min.css?ver=1.11.4 - Failed to load resource: the server responded with a status of 404 (Not Found)
    • > GET request to /wp-admin/post-new.php?post_type=acf-field-group
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/css/acf-field-group.css?ver=5.8.3 - Failed to load resource: the server responded with a status of 404 (Not Found)
    • > GET request to /wp-admin/post-new.php?post_type=acf-field-group
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/pro/assets/css/acf-pro-field-group.css?ver=5.8.3 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/inc/timepicker/jquery-ui-timepicker-addon.min.css?ver=1.6.1 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/js/acf-input.min.js?ver=5.8.3 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/pro/assets/js/acf-pro-input.min.js?ver=5.8.3 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/inc/select2/4/select2.full.min.js?ver=4.0 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 7 occurences, only the last one shown
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/inc/timepicker/jquery-ui-timepicker-addon.min.js?ver=1.6.1 - Failed to load resource: the server responded with a status of 404 (Not Found)
    • > GET request to /wp-admin/post-new.php?post_type=acf-field-group
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/assets/js/acf-field-group.min.js?ver=5.8.3 - Failed to load resource: the server responded with a status of 404 (Not Found)
    • > GET request to /wp-admin/post-new.php?post_type=acf-field-group
    • > Network (severe)
    var/www/wordpress/wp-content/plugins/wp-openagenda//3rd-party/acf/pro/assets/js/acf-pro-field-group.min.js?ver=5.8.3 - Failed to load resource: the server responded with a status of 404 (Not Found)
    • > GET request to /wp-admin/post-new.php?post_type=acf-field-group
    • > Javascript (severe) in unknown
    /wp-admin/post-new.php?post_type=acf-field-group 2138:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/post-new.php?post_type=acf-field-group
    • > Javascript (severe) in unknown
    /wp-admin/post-new.php?post_type=acf-field-group 2142:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_venue&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_venue&post_type=openagenda-events 1765:1 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_venue&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_venue&post_type=openagenda-events 1816:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_venue&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_venue&post_type=openagenda-events 1820:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit.php?post_type=acf-field-group&page=acf-tools
    • > Javascript (severe) in unknown
    /wp-admin/edit.php?post_type=acf-field-group&page=acf-tools 1638:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit.php?post_type=acf-field-group&page=acf-tools
    • > Javascript (severe) in unknown
    /wp-admin/edit.php?post_type=acf-field-group&page=acf-tools 1642:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_agenda&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_agenda&post_type=openagenda-events 1761:1 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_agenda&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_agenda&post_type=openagenda-events 1812:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_agenda&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_agenda&post_type=openagenda-events 1816:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/post-new.php?post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/post-new.php?post_type=openagenda-events 2056:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/post-new.php?post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/post-new.php?post_type=openagenda-events 2060:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_Category&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_Category&post_type=openagenda-events 1761:1 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_Category&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_Category&post_type=openagenda-events 1812:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_Category&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_Category&post_type=openagenda-events 1816:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events 1754:1 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events 1805:0 Uncaught ReferenceError: acf is not defined
    • > GET request to /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events
    • > Javascript (severe) in unknown
    /wp-admin/edit-tags.php?taxonomy=openagenda_keyword&post_type=openagenda-events 1809:0 Uncaught ReferenceError: acf is not defined

Optimizations

Plugin configuration Passed 29 tests

readme.txt Passed 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
4 plugin tags: events, calendar, openagenda, agenda

wp-openagenda/wp-openagenda.php Passed 13 tests

"OpenAgenda for WordPress" version 2.5's main PHP file describes plugin functionality and also serves as the entry point to any WordPress functionality
58 characters long description:
Easily display an OpenAgenda.com in your WordPress website

Code Analysis Passed 3 tests

File types Passed 1 test

🔸 Test weight: 35 | Executable files are not allowed as they can serve as attack vectors
Everything looks great! No dangerous files found in this plugin124,677 lines of code in 661 files:
LanguageFilesBlank linesComment linesLines of code
PO File4922,23136,13047,233
JavaScript19413,19515,37838,374
PHP32516,70427,01732,333
CSS265991,2243,664
Sass5036152,008
JSON600562
Markdown5960251
LESS1115152
SVG419192
Ruby1208

PHP code Passed 2 tests

This plugin's cyclomatic complexity and code structure detailed below
Although this was not an exhaustive test, there were no cyclomatic complexity issues detected
Cyclomatic complexity
Average complexity per logical line of code0.33
Average class complexity11.62
▷ Minimum class complexity1.00
▷ Maximum class complexity174.00
Average method complexity2.55
▷ Minimum method complexity1.00
▷ Maximum method complexity31.00
Code structure
Namespaces31
Interfaces5
Traits0
Classes251
▷ Abstract classes114.38%
▷ Concrete classes24095.62%
▷ Final classes10.42%
Methods1,783
▷ Static methods1267.07%
▷ Public methods1,57388.22%
▷ Protected methods20611.55%
▷ Private methods40.22%
Functions589
▷ Named functions50986.42%
▷ Anonymous functions8013.58%
Constants49
▷ Global constants1938.78%
▷ Class constants3061.22%
▷ Public constants30100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

It is recommended to compress PNG files in your plugin to minimize bandwidth usage
13 PNG files occupy 0.05MB with 0.01MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
assets/img/mi.png1.76KB1.38KB▼ 21.54%
assets/img/hi.png2.13KB1.59KB▼ 25.28%
assets/img/accessibility-60.png21.40KB12.07KB▼ 43.59%
assets/img/vi.png2.17KB1.70KB▼ 21.80%
3rd-party/acf/assets/inc/datepicker/images/ui-icons_444444_256x240.png3.68KB4.17KB0.00%