10% chronosly-events-calendar

Code Review | Chronosly Events Calendar

WordPress plugin Chronosly Events Calendar scored 10% from 54 tests.

About plugin

  • Plugin page: chronosly-events-...
  • Plugin version: 2.6.2
  • PHP version: 7.4.16
  • WordPress compatibility: 3.1-4.7.4
  • WordPress version: 5.9.2
  • First release: May 11, 2015
  • Latest release: Jun 21, 2017
  • Number of updates: 101
  • Update frequency: every 9.2 days
  • Top authors: heimsveld (88.12%)chronosly (12.87%)

Code review

54 tests

User reviews

52 reviews

Install metrics

1,000+ active / 77,273 total downloads

Benchmarks

Plugin footprint 39% from 16 tests

Installer 0% from 1 test

🔺 Critical test (weight: 50) | It is important to correctly install your plugin, without throwing errors or notices
The following installer errors require your attention
  • This plugin did not install gracefully
    • > Deprecated in wp-content/plugins/chronosly-events-calendar/classes/chronosly_utils.php+56
    Array and string offset access syntax with curly braces is deprecated

Server metrics [RAM: ▼2.39MB] [CPU: ▼355.23ms] Passed 4 tests

An overview of server-side resources used by Chronosly Events Calendar
Normal server usage
PageMemory (MB)CPU Time (ms)
Home /1.98 ▼1.534.59 ▼53.17
Dashboard /wp-admin2.00 ▼1.413.89 ▼36.73
Posts /wp-admin/edit.php2.00 ▼1.645.76 ▼39.30
Add New Post /wp-admin/post-new.php2.00 ▼4.974.09 ▼1,291.70
Media Library /wp-admin/upload.php2.00 ▼1.293.95 ▼24.09
Download Addons /wp-admin/admin.php?page=chronosly_mk_addons2.005.05
Settings /wp-admin/admin.php?page=chronosly2.004.18
Download Templates /wp-admin/admin.php?page=chronosly_mk_templates2.004.43
Edit Templates /wp-admin/admin.php?page=chronosly_edit_templates2.004.35
Templates status /wp-admin/admin.php?page=chronosly_templates_status2.003.90
Support /wp-admin/admin.php?page=chronosly_support2.004.70
Event Tags /wp-admin/edit-tags.php?taxonomy=chronosly_tag&post_type=chronosly2.004.57
Events /wp-admin/edit.php?post_type=chronosly2.014.67
Download Addons /wp-admin/edit.php?post_type=chronosly&page=chronosly_mk_addons2.014.07
Add new event /wp-admin/post-new.php?post_type=chronosly2.004.77

Server storage [IO: ▲4.54MB] [DB: ▲0.02MB] 67% from 3 tests

How much does this plugin use your filesystem and database?
It is recommended to fix the following issues
  • You have illegally modified 47 files (555.56KB) outside of "wp-content/plugins/chronosly-events-calendar/" and "wp-content/uploads/"
    • (new file) wp-content/plugins/chronosly-templates/css/default_img/place-thumb-white.png
    • (new file) wp-content/plugins/chronosly-templates/css/default_img/estrella2.png
    • (new file) wp-content/plugins/chronosly-templates/css/default_img/estrella4.png
    • (new file) wp-content/plugins/chronosly-templates/css/default_img/estrella.png
    • (new file) wp-content/plugins/chronosly-templates/css/default_img/estrela3.png
    • (new file) wp-content/plugins/chronosly-addons/version.json
    • (new file) wp-content/plugins/chronosly-templates/css/default_img/clock-thumb-white.png
    • (new file) wp-content/plugins/chronosly-templates/css/default.css
    • (new file) wp-content/plugins/chronosly-templates/css/default_img/place-thumb.png
    • (new file) wp-content/plugins/chronosly-templates/css/default_img/clock-thumb.png
    • ...
Filesystem: 326 new files
Database: no new tables, 4 new options
New WordPress options
chronosly-settings
chronosly-mk-templates
widget_chronosly_widget
chronosly-mk-addons

Browser metrics 75% from 4 tests

This is an overview of browser requirements for Chronosly Events Calendar
A great user experience is important, so you should focus on the following
  • Nodes: For the best user experience, please reduce the number of DOM nodes under 25,000 (currently 55,999 on /wp-admin/post-new.php?post_type=chronosly)
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,948 ▲19315.90 ▲0.285.89 ▼0.152.73 ▼0.28
Dashboard /wp-admin3,072 ▲2146.17 ▼0.01116.91 ▼13.71219.04 ▲56.76
Posts /wp-admin/edit.php2,817 ▲1263.12 ▼0.1166.92 ▲1.68145.05 ▼3.16
Add New Post /wp-admin/post-new.php1,742 ▲5216.02 ▼5.05381.62 ▼62.16186.95 ▲31.71
Media Library /wp-admin/upload.php1,829 ▲1345.58 ▲0.08128.66 ▼6.56247.98 ▲59.90
Download Addons /wp-admin/admin.php?page=chronosly_mk_addons1,3242.5360.94192.94
Settings /wp-admin/admin.php?page=chronosly5,6954.89127.16184.06
Download Templates /wp-admin/admin.php?page=chronosly_mk_templates1,2492.4783.01121.10
Edit Templates /wp-admin/admin.php?page=chronosly_edit_templates1,7185.6392.54219.91
Templates status /wp-admin/admin.php?page=chronosly_templates_status1,2312.9998.18167.40
Support /wp-admin/admin.php?page=chronosly_support1,4783.1065.32201.04
Event Tags /wp-admin/edit-tags.php?taxonomy=chronosly_tag&post_type=chronosly1,7623.5265.97179.11
Events /wp-admin/edit.php?post_type=chronosly1,5333.1161.03145.21
Download Addons /wp-admin/edit.php?post_type=chronosly&page=chronosly_mk_addons1,3232.6958.50121.31
Add new event /wp-admin/post-new.php?post_type=chronosly55,99912.17439.35296.35

Uninstaller [IO: ▲0.54MB] [DB: ▲0.02MB] 50% 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
  • This plugin cannot be uninstalled
    • > Deprecated in wp-content/plugins/chronosly-events-calendar/classes/chronosly_utils.php+56
    Array and string offset access syntax with curly braces is deprecated
  • This plugin did not uninstall successfully, leaving 3 options in the database
    • chronosly-mk-templates
    • widget_chronosly_widget
    • chronosly-mk-addons

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
  • 38 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > POST request to /wp-admin/admin-ajax.php
    • > Deprecated in wp-content/plugins/chronosly-events-calendar/classes/chronosly_dad_elements.php+969
    Array and string offset access syntax with curly braces is deprecated
  • 19 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > POST request to /wp-admin/admin-ajax.php
    • > Deprecated in wp-content/plugins/chronosly-events-calendar/classes/chronosly_widgets.php+6
    Methods with the same name as their class will not be constructors in a future version of PHP; Chronosly_Widget has a deprecated constructor
  • 14 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_dad_elements.php+4162
    Undefined index: action
  • 11 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/chronosly.php+76
    Undefined index: ch_code
  • 22 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > POST request to /wp-admin/admin-ajax.php
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_templates.php+102
    Undefined variable: k
  • 8 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > POST request to /wp-admin/admin-ajax.php
    • > Warning in wp-includes/class-wp-hook.php+307
    Parameter 2 to Chronosly_Shortcode::title_like_where() expected to be a reference, value given
  • 8 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > POST request to /wp-admin/admin-ajax.php
    • > Warning in wp-includes/class-wp-hook.php+307
    Parameter 2 to Chronosly_Shortcode::meta_like_where() expected to be a reference, value given
  • 8 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > POST request to /wp-admin/admin-ajax.php
    • > Warning in wp-includes/class-wp-hook.php+307
    Parameter 2 to Chronosly_Shortcode::meta_price_where() expected to be a reference, value given
  • 8 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > POST request to /wp-admin/admin-ajax.php
    • > Warning in wp-includes/class-wp-hook.php+307
    Parameter 2 to Chronosly_Shortcode::meta_near_where() expected to be a reference, value given
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/edit.php?post_type=chronosly&page=chronosly_mk_addons
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_mk_addons.php+123
    Undefined variable: addons_urls
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/metaboxes/settings/settings.php+20
    Undefined index: cron_includes
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/metaboxes/settings/settings.php+376
    Undefined index: chronosly-categories-list-url
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/metaboxes/settings/settings.php+429
    Undefined variable: status
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_settings.php+543
    Undefined index: organizers_and_places
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_settings.php+543
    Undefined index: import_and_export
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_settings.php+543
    Undefined index: filter_and_sort
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_settings.php+543
    Undefined index: social_media_share
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_settings.php+543
    Undefined index: frontend_event_submission
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_settings.php+543
    Undefined index: tickets_and_repeats_extended
    • > GET request to /wp-admin/admin.php?page=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_settings.php+543
    Undefined index: map_navigation
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-content/plugins/chronosly-events-calendar/post-types/post_type_chronosly.php+2068
    Non-static method Post_Type_Chronosly_Calendar::get_permalink() should not be called statically
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/post-types/post_type_chronosly.php+2069
    Undefined variable: settings
  • 3 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/metaboxes/chronosly_dad_framework_metabox.php+85
    Trying to access array offset on value of type null
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/edit.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/post-types/post_type_chronosly.php+81
    Trying to get property 'post_type' of non-object
  • 4 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/post-types/post_type_chronosly_tag.php+81
    Undefined index: _inline_edit
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_templates.php+612
    Undefined index: start
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_templates.php+613
    Undefined index: h
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_templates.php+1139
    Undefined index: min-user
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_templates.php+1140
    Undefined index: max-user
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_templates.php+1141
    Undefined index: start-time
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_templates.php+1142
    Undefined index: end-time
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_templates.php+620
    Undefined index: force_template
  • 29 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::readmore_check_field() should not be called statically
  • 24 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::readmore_text_field() should not be called statically
  • 34 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::readmore_action_field() should not be called statically
  • 34 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::external_url_field() should not be called statically
  • 34 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::target_blank_field() should not be called statically
  • 34 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::nofollow_field() should not be called statically
  • 6 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::shorten_text_field() should not be called statically
  • 68 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::custom_text_before_field() should not be called statically
  • 68 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::custom_text_after_field() should not be called statically
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::custom_textarea_field() should not be called statically
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::custom_textbox_field() should not be called statically
  • 4 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::custom_text_field() should not be called statically
  • 19 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::time_format_field() should not be called statically
  • 6 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Warning in wp-content/plugins/chronosly-events-calendar/classes/chronosly_extend.php+525
    count(): Parameter must be an array or an object that implements Countable
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::tickets_title_check_field() should not be called statically
  • 6 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_dad_elements.php+5002
    Undefined index: label
  • 6 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_dad_elements.php+5004
    Undefined index: order
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::tickets_price_check_field() should not be called statically
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::tickets_capacity_check_field() should not be called statically
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::tickets_buy_check_field() should not be called statically
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::tickets_note_check_field() should not be called statically
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::upload_image_field() should not be called statically
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Deprecated in wp-includes/class-wp-hook.php+307
    Non-static method Chronosly_Dad_Elements::upload_gallery_field() should not be called statically
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/metaboxes/chronosly_dad_framework_metabox.php+53
    Undefined variable: b
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_templates.php+1685
    Undefined variable: style2
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/metaboxes/chronosly_dad_framework_metabox.php+85
    Undefined property: stdClass::$ID
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/metaboxes/chronosly_dad_framework_metabox.php+85
    Undefined index: featured
  • 4 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Warning in wp-content/plugins/chronosly-events-calendar/classes/chronosly_dad_elements.php+518
    DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 1
  • 3 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_dad_elements.php+5186
    Undefined index: currency
  • 6 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-content/plugins/chronosly-events-calendar/classes/chronosly_dad_elements.php+986
    Undefined variable: negative
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-includes/taxonomy.php+4540
    Undefined property: stdClass::$taxonomy
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-includes/taxonomy.php+4554
    Undefined property: stdClass::$slug
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Notice in wp-includes/taxonomy.php+4560
    Trying to get property 'query_var' of non-object

SRP 0% from 2 tests

🔹 Tests weight: 20 | A shallow check of the single-responsibility principle; PHP files should perform no action - including output of placeholder text - and trigger no errors when accessed directly
Almost there! Just fix the following items
  • 15× PHP files output non-empty strings when accessed directly via GET requests (only 10 are shown):
    • > /wp-content/plugins/chronosly-events-calendar/custom-templates/dad8/default.php
    • > /wp-content/plugins/chronosly-events-calendar/custom-templates/dad3/default.php
    • > /wp-content/plugins/chronosly-events-calendar/custom-templates/dad9/default.php
    • > /wp-content/plugins/chronosly-events-calendar/metaboxes/dad1/chronosly_dad1_save_metabox.php
    • > /wp-content/plugins/chronosly-events-calendar/custom-templates/dad12/default.php
    • > /wp-content/plugins/chronosly-events-calendar/metaboxes/dad11/chronosly_category_dad11_save_metabox.php
    • > /wp-content/plugins/chronosly-events-calendar/custom-templates/dad1/default.php
    • > /wp-content/plugins/chronosly-events-calendar/custom-templates/dad10/default.php
    • > /wp-content/plugins/chronosly-events-calendar/custom-templates/dad5/default.php
    • > /wp-content/plugins/chronosly-events-calendar/custom-templates/dad6/default.php
  • 31× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Call to undefined function get_option() in wp-content/plugins/chronosly-events-calendar/templates/calendar-chronosly.php:9
    • > PHP Fatal error
      Uncaught Error: Call to undefined function get_option() in wp-content/plugins/chronosly-events-calendar/templates/single-category-chronosly.php:4
    • > PHP Notice
      Undefined variable: checked in wp-content/plugins/chronosly-events-calendar/metaboxes/chronosly_calendar_metabox.php on line 1
    • > PHP Fatal error
      Uncaught Error: Call to undefined function _e() in wp-content/plugins/chronosly-events-calendar/metaboxes/settings/support.php:4
    • > PHP Notice
      Undefined variable: post in wp-content/plugins/chronosly-events-calendar/metaboxes/chronosly_calendar_metabox.php on line 1
    • > PHP Fatal error
      Uncaught Error: Using $this when not in object context in wp-content/plugins/chronosly-events-calendar/metaboxes/chronosly_dad_framework_metabox.php:4
    • > PHP Fatal error
      Uncaught Error: Call to undefined function _e() in wp-content/plugins/chronosly-events-calendar/metaboxes/chronosly_cat_vars_metabox.php:1
    • > PHP Fatal error
      Uncaught Error: Using $this when not in object context in wp-content/plugins/chronosly-events-calendar/metaboxes/dad1/chronosly_dad1_select_metabox.php:4
    • > PHP Fatal error
      Uncaught Error: Call to undefined function _e() in wp-content/plugins/chronosly-events-calendar/metaboxes/settings/welcome.php:34
    • > PHP Fatal error
      Uncaught Error: Call to undefined function _e() in wp-content/plugins/chronosly-events-calendar/metaboxes/chronosly_tickets_metabox.php:3

User-side errors 0% from 1 test

🔹 Test weight: 20 | This is a shallow check for browser errors
Please fix the following browser errors
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/edit.php?post_type=chronosly&page=chronosly_mk_addons
    • > Network (severe)
    http://plugins.heimsveld.com/thumbnail-import-export-addon-230px.png - Failed to load resource: net::ERR_NAME_NOT_RESOLVED
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/edit.php?post_type=chronosly&page=chronosly_mk_addons
    • > Network (severe)
    http://plugins.heimsveld.com/thumbnail-filters-sorting-addon-230px.png - Failed to load resource: net::ERR_NAME_NOT_RESOLVED
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/edit.php?post_type=chronosly&page=chronosly_mk_addons
    • > Network (severe)
    http://plugins.heimsveld.com/thumbnail-social-media-230px.png - Failed to load resource: net::ERR_NAME_NOT_RESOLVED
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/edit.php?post_type=chronosly&page=chronosly_mk_addons
    • > Network (severe)
    http://plugins.heimsveld.com/thumbnail-frontend-event-submission-230px.png - Failed to load resource: net::ERR_NAME_NOT_RESOLVED
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/edit.php?post_type=chronosly&page=chronosly_mk_addons
    • > Network (severe)
    http://plugins.heimsveld.com/thumbnail-recurring-events-enahancement-230px.png - Failed to load resource: net::ERR_NAME_NOT_RESOLVED
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/edit.php?post_type=chronosly&page=chronosly_mk_addons
    • > Network (severe)
    https://www.chronosly.com/wp-content/uploads/2015/09/full-event-map-addon-DEF.png - Failed to load resource: the server responded with a status of 404 ()
  • 4 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=chronosly_support
    • > Rendering (warning) in unknown
    /wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=5.9.2 1 The specified value "!" does not conform to the required format. The format is "#rrggbb" where rr, gg, bb are two-digit hexadecimal numbers.
    • > GET request to /wp-admin/admin.php?page=chronosly_mk_templates
    • > Network (severe)
    http://plugins.heimsveld.com/thumbnail-default-300px.jpg - Failed to load resource: net::ERR_NAME_NOT_RESOLVED
    • > GET request to /wp-admin/admin.php?page=chronosly_mk_templates
    • > Network (severe)
    http://plugins.heimsveld.com/thumbnail-dark-300px.jpg - Failed to load resource: net::ERR_NAME_NOT_RESOLVED
    • > GET request to /wp-admin/admin.php?page=chronosly_mk_templates
    • > Network (severe)
    http://plugins.heimsveld.com/thumbnail-grid-300px.jpg - Failed to load resource: net::ERR_NAME_NOT_RESOLVED
    • > GET request to /wp-admin/admin.php?page=chronosly_mk_templates
    • > Network (severe)
    http://plugins.heimsveld.com/thumbnail-ticketing-300px.jpg - Failed to load resource: net::ERR_NAME_NOT_RESOLVED
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Network (severe)
    wp-content/plugins/chronosly-events-calendar/js/cleditor/jquery.cleditor.css?ver=5.9.2 - Failed to load resource: the server responded with a status of 404 (Not Found)
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Network (severe)
    wp-content/plugins/chronosly-events-calendar/js/cleditor/jquery.cleditor.js?ver=5.9.2 - Failed to load resource: the server responded with a status of 404 (Not Found)
    • > GET request to /wp-admin/admin.php?page=chronosly_edit_templates
    • > Console-api (warning) in unknown
    /wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=5.9.2 1:31592 "jQuery.Deferred exception: $(...).live is not a function" "TypeError: $(...).live is not a function\n at HTMLDocument.\u003Canonymous> (/wp-content/plugins/chronosly-events-calendar/js/admin.js?ver=5.9.2:291:23)\n at e (/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=5.9.2:2:30038)\n at t (/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=5.9.2:2:30340)" undefined
    • > GET request to /wp-admin/admin.php?page=chronosly_edit_templates
    • > Javascript (severe) in unknown
    /wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=5.9.2 1:31702 Uncaught TypeError: $(...).live is not a function
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Rendering (warning) in unknown
    /wp-includes/js/jquery/jquery.min.js?ver=3.6.0 1 The specified value "!" does not conform to the required format. The format is "#rrggbb" where rr, gg, bb are two-digit hexadecimal numbers.
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Console-api (warning) in unknown
    /wp-includes/js/jquery/jquery.min.js?ver=3.6.0 1:31592 "jQuery.Deferred exception: $(...).live is not a function" "TypeError: $(...).live is not a function\n at HTMLDocument.\u003Canonymous> (/wp-content/plugins/chronosly-events-calendar/js/admin.js?ver=5.9.2:291:23)\n at e (/wp-includes/js/jquery/jquery.min.js?ver=3.6.0:2:30038)\n at t (/wp-includes/js/jquery/jquery.min.js?ver=3.6.0:2:30340)" undefined
    • > GET request to /wp-admin/post-new.php?post_type=chronosly
    • > Javascript (severe) in unknown
    /wp-includes/js/jquery/jquery.min.js?ver=3.6.0 1:31702 Uncaught TypeError: $(...).live is not a function

Optimizations

Plugin configuration 86% from 29 tests

readme.txt 94% from 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
Please fix the following attributes:
  • Tags: Please reduce the number of tags, currently 52 tag instead of maximum 10
The official readme.txt might help

chronosly-events-calendar/chronosly.php 77% from 13 tests

The primary PHP file in "Chronosly Events Calendar" version 2.6.2 is used by WordPress to initiate all plugin functionality
You should first fix the following items:
  • Text Domain: The text domain must be the same as the plugin slug, although optional since WordPress version 4.6
  • Description: Please keep the plugin description shorter than 140 characters (currently 322 characters long)
  • Main file name: Even though not officially enforced, the main plugin file should be the same as the plugin slug ("chronosly-events-calendar.php" instead of "chronosly.php")

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | This is an overview of file extensions present in this plugin and a short test that no dangerous files are bundled with this plugin
No dangerous file extensions were detected56,863 lines of code in 216 files:
LanguageFilesBlank linesComment linesLines of code
JavaScript913,3643,47917,722
PHP532,9321,82414,540
CSS201,70736010,767
PO File53,3875,9649,456
HTML32737103,544
Markdown72920612
JSON600134
XML15055
SVG11033

PHP code 50% from 2 tests

A short review of cyclomatic complexity and code structure
These items need your attention
  • Cyclomatic complexity of methods should be reduced to less than 100 (currently 129)
Cyclomatic complexity
Average complexity per logical line of code0.53
Average class complexity149.39
▷ Minimum class complexity1.00
▷ Maximum class complexity752.00
Average method complexity6.83
▷ Minimum method complexity1.00
▷ Maximum method complexity129.00
Code structure
Namespaces0
Interfaces0
Traits0
Classes18
▷ Abstract classes00.00%
▷ Concrete classes18100.00%
▷ Final classes00.00%
Methods458
▷ Static methods26357.42%
▷ Public methods45098.25%
▷ Protected methods00.00%
▷ Private methods81.75%
Functions2
▷ Named functions2100.00%
▷ Anonymous functions00.00%
Constants15
▷ Global constants1173.33%
▷ Class constants426.67%
▷ Public constants4100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

Often times overlooked, PNG files can occupy unnecessary space in your plugin
79 PNG files occupy 0.22MB with 0.06MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
css/img/dad-selected.png0.16KB0.14KB▼ 13.50%
css/img/menu-ico.png1.13KB0.33KB▼ 70.45%
js/css/plugins/colorpicker/images/custom_rgb_g.png1.04KB0.80KB▼ 23.67%
css/smoothness/images/ui-icons_454545_256x240.png6.83KB4.17KB▼ 38.86%
js/css/plugins/colorpicker/images/custom_submit.png0.97KB0.99KB0.00%